Математики, шпионы и хакеры. Кодирование и криптография - Гомес Жуан (бесплатные полные книги TXT) 📗
Алгоритм RSA требует много машинного времени и очень мощных процессоров.
До 1980-х гг. только правительства, армия и крупные предприятия имели достаточно мощные компьютеры для работы с RSA. В результате у них была фактически монополия на эффективное шифрование. Летом 1991 г. Филипп Циммерман, американский физик и борец за сохранение конфиденциальности, предложил бесплатную систему шифрования PGP (Pretty Good Privacy — «достаточно хорошая степень конфиденциальности»), алгоритм которой мог работать на домашних компьютерах.
PGP использует классическое симметричное шифрование, что и обеспечивает ей большую скорость на домашних компьютерах, но она шифрует ключи по асимметричному алгоритму RSA.
Циммерман объяснил причины этой меры в открытом письме, которое заслуживает быть процитированным здесь, по крайней мере, частично из-за пророческого описания того, как мы живем, работаем и общаемся два десятилетия спустя.
«Это личное. Это конфиденциальное. И это только ваше дело и ничье другое.
Вы можете планировать политическую кампанию, обсуждать ваши налоги или иметь тайную любовную связь. Или вы можете заниматься тем, что вам не кажется незаконным, хотя таковым является. Что бы то ни было, вы не хотите, чтобы ваши личные электронные письма или конфиденциальные документы были прочитаны кем-то еще. Нет ничего плохого в том, чтобы охранять вашу частную жизнь. Частная жизнь неприкосновенна, как Конституция…
Мы движемся к будущему, где мир будет опутан волоконно-оптическими сетями высокой емкости, связывающими наши повсеместно распространенные персональные компьютеры. Электронная почта станет нормой для всех, а не новинкой, как сегодня. Правительство будет защищать наши электронные сообщения государственными протоколами шифрования. Наверное, большинство людей примет это. Но, возможно, некоторые захотят иметь свои собственные защитные меры… Если конфиденциальность признать вне закона, только люди вне закона будут ею обладать.
Спецслужбы обладают лучшими криптографическими технологиями. Как и торговцы оружием и наркотиками. Как и военные подрядчики, нефтяные компании и другие корпорации-гиганты. Но обычные люди и общественные организации практически не имеют недорогих защитных криптографических технологий с открытым ключом. До сих пор не имели.
PGP дает людям возможность самим защищать свою конфиденциальность. Сегодня существует растущая социальная потребность в этом. Вот почему я написал PGP».
Из слов Циммермана мы видим, что жизнь в век информации сопряжена с угрозой нашим традиционным представлениям о частной жизни. Следовательно, глубокое понимание кодирования и механизмов шифрования, используемых вокруг нас, не только делает нас мудрее, но также может оказаться чрезвычайно полезным, когда речь идет о защите того, что для нас особенно ценно.
PGP с момента его создания становится все более популярным и представляет собой наиболее важный инструмент шифрования, доступный сегодня частным лицам.
* * *
БЕЗОПАСНОСТЬ ДЛЯ ВСЕХ
Филипп Циммерман, родившийся в 1954 г., американский физик и инженер-программист, стоявший у истоков движения, которое стремится сделать современную криптографию доступной для всех. Кроме разработки системы PGP он в 2006 г. создал Zfone — программу для безопасной голосовой связи через Интернет. Он является президентом альянса OpenPGP, выступающего за открытое программное обеспечение.
Различные системы шифрования с открытым ключом — или сочетающие открытые и закрытые ключи, как, например, PGP — обеспечивают высокий уровень конфиденциальности при передаче информации. Тем не менее, безопасность сложных систем связи, таких как интернет, заключается не только в конфиденциальности.
До появления современных коммуникационных технологий подавляющее большинство сообщений приходило от известных адресатов: от членов семьи, от друзей или от партнеров по бизнесу. Сегодня, однако, на каждого человека обрушивается лавина сообщений из множества источников. Подлинность этих сообщений часто невозможно определить исходя лишь из их содержания, со всеми вытекающими проблемами. Например, как мы можем предотвратить фальсификацию адреса электронной почты отправителя?
Диффи и Хеллман сами предложили гениальный способ использования шифрования с открытым ключом для проверки подлинности сообщения. В криптографических системах такого типа отправитель шифрует сообщение с помощью открытого ключа получателя, который в свою очередь использует свой закрытый ключ для расшифровки сообщения. Диффи и Хеллман заметили, что RSA и другие подобные алгоритмы обладают интересной симметрией. Закрытый ключ также можно использовать для шифрования сообщения, а открытый — для расшифровки. Этот подход не усиливает безопасность — ведь открытый ключ доступен для всех — зато получатель может убедиться, что сообщение пришло от определенного отправителя, владельца закрытого ключа. Чтобы проверить подлинность отправителя сообщения, теоретически достаточно добавить к нормальному шифрованию дополнительные шаги.
1. Отправитель шифрует сообщение с помощью открытого ключа получателя. Этот первый шаг гарантирует конфиденциальность.
2. Отправитель снова шифрует сообщение, на этот раз с помощью своего закрытого ключа. Таким образом удостоверяется подлинность сообщения, оно «подписано».
3. Получатель использует открытый ключ отправителя, чтобы расшифровать шифр шага 2. Таким образом проверяется подлинность сообщения.
4. Получатель теперь использует свой закрытый ключ, чтобы расшифровать шифр шага 1.
Хеш-функции
Одна из проблем теоретического процесса, о котором говорилось выше, заключается в том, что шифрование открытым ключом требует значительной вычислительной мощности и времени, и повторять этот процесс для подписания и проверки каждого сообщения было бы чрезвычайно невыгодно. Именно поэтому на практике подписание сообщения осуществляется с помощью математических ресурсов, называемых хеш-функциями. Для каждого оригинального сообщения эти функции генерируют простую цепочку битов (обычно 160), называемых хешем или хеш-кодом. Алгоритм работает таким образом, что вероятность того, что различные сообщения получат один и тот же хеш-код, почти равна нулю. Кроме того, практически невозможно обратить процесс и получить исходное сообщение, имея только хеш-код. Хеш каждого сообщения отправитель шифрует своим закрытым ключом и отправляет вместе с зашифрованным обычным образом исходным сообщением. Получатель расшифровывает с помощью открытого ключа отправителя ту часть сообщения, которая содержит хеш. Далее, определив таким образом хеш-код отправителя, получатель применяет хеш-функцию к полученному основному сообщению и сравнивает два хеша. Если они совпадают, личность отправителя подтверждается, и, кроме того, получатель теперь уверен, что никто не изменил исходное сообщение.
Небольшие различия в содержании сообщения приводят к совершенно разным хеш-кодам. Таким образом, получатель может быть уверен, что текст не был изменен.
Сертификаты открытых ключей
Однако наиболее важной проблемой систем криптографии с открытым ключом является проверка не подлинности сообщения, а подлинности самих открытых ключей. Как отправитель и получатель могут быть уверены, что открытые ключи их партнеров подлинны? Допустим, шпион обманул отправителя, дав ему свой открытый ключ и заставив его поверить, что это ключ получателя. Тогда, если шпиону удастся перехватить сообщение, он может использовать свой закрытый ключ для расшифровки. И чтобы избежать разоблачения, шпион затем использует открытый ключ получателя для повторного шифрования сообщения и отправляет это сообщение первоначальному адресату.