Вопрос про цифровую подпись
Итак, маленькая предыстория. Нужно мне (по универу) сваять приложеньице, которому юзер будет скармливать файл, приложение будет генерить для него цифровую подпись, ну и некоторые рюшечки дополнительные ..
Нашёл я разную литературу по теме цифровых подписей, и тп
Вобщем, суть такая, насколько я понял:
Автор приложения генерит цифр подпись: Считает хэш файла, криптует его закрытым ключём (полученым, скажем, по RSA) и получает непосредственно саму подпись.
Далее, сторонний юзер получает от автора файла непосредственно файл, открытый ключ (пару закрытого), и саму подпись. Далее, считает хэш полученного файла, потом декриптует подпись файла (присланную вместе с файлом) своим открытым ключём, и сравнивает то что получилось с подсчитанным хэшем полученного файла. Если совпало - то файл не был изменён.
Вроде примерно так.
Теперь внимание вопрос - нахера это всё, если автор может выслать просто свой файл и его хэш (md2, md5, sha1, ...), а получатель просто считает тот-же хэш файла и сверяет его с присланным. ???
Отмечу, что криптовать сам файл не нужно. Нужно только подписать его.
Спасибо заранее.
зы один из источников про цифровую подпись
Представь что автор Петров шлет получателю Сидорову файл и его хэш.
При передаче файла некто Иванов перехватывает файл, заменяет его на свой. И заменяет хэш на хэш замененного файла.
Сидоров получает подмененный файл и его хэш, считает хэш сам, видит что он совпадает с тем, который ему прислал (иванов), и хэппи. Он не заметил подмены. FAIL.
Если же автор зашифровал закрытым ключем хэш сообщения, получатель, используя имеющийся у него открытый ключ автора, расшифровывает хэш, потом вычисляет хэш файла сам, и сравнивает с расшифрованным.
А открытый ключ он откуда берёт? =) Если Петров шлёт Сидорову этот открытый ключ, то Иванов может перехватить всё это дело. Сгенерить свои ключи, поменять файл, зашифровать СВОИМ приватным ключём, и передать дальше свой открытый с новой подпиьсю (подменённой).
Уже ближе к телу . Спасибо :)