YM>>> Cтоило бы брать любой стойкий крипто хеш алгоритм, YM>>> а не использовать crc AV>> А нет их, стойких-то... MW> Fear, uncertainty, disbelief.
Incompetence, ignorance, arrogance.
AV>> для MD5 уже существует готовый алгоритм генерации коллизий, для AV>> SHA-1 методика тоже в целом уже известна, SHA-2 и ГОСТ 34.11 AV>> пока вроде держатся, но и здесь это вопрос времени. MW> Как насчёт https://en.wikipedia.org/wiki/SHA-3 ?
Keccak (принятый в качестве стандарта) выглядит стремновато. Skein в целом производит более благоприятное впечатление (и вполне закономерно оказался в финале конкурса), но выделенные на разработку Keccak деньги к тому времени давным-давно распилили.
AV>> Гы-гы... доступные исходники - только половина дела (в принципе, AV>> набора из полностью открытых Blowfish и ElGamal достаточно для AV>> реализации всех трех основных криптографических преобразований): AV>> ими еще надо уметь пользоваться. AV>> Пример. Допустим, я хочу убедиться, что ты - это действительно ты. AV>> У меня есть твой открытый ключ, подлинность которого сомнений не AV>> вызывает. Далее: AV>> 1. Я генерирую большое случайное число и отправляю его тебе. AV>> 2. Ты подписываешь его своим секретным ключом и отправляешь мне AV>> результат. AV>> 3. Я проверяю этот результат с использованием твоего открытого AV>> ключа. AV>> А теперь подумай, чего не хватает в этом алгоритме :-) MW> Уверенности в отсутствии человека посредине. Для достижения таковой MW> уместно использовать две пары открытых ключей, то есть большое MW> случайное число также должно быть подписано секретным ключом MW> Виссарионова ещё до того, как попадёт к Мякотину -- а Мякотин должен MW> знать открытый ключ Виссарионова.
Хорошо, вносим в протокол соответствующее изменение:
-1. Я генерирую большое случайное число и отправляю его тебе. +1. Я генерирую большое случайное число, подписываю его и отправляю тебе.
Для пущей наглядности - вот оно, в двоичном виде и с моей подписью: