Введение
Каждый человек имеет право на неприкосновенность своей информации. И незаменимым подспорьем в реализации этого права станут программы шифрования. С их помощью вы сможете использовать обычные каналы связи для передачи данных, не подлежащих разглашению. Прочесть сообщение сможет только тот, кому оно адресовано. Однако не надо думать, что информация защищена на все 100%. Большинство предлагаемых сейчас программ не могут обеспечить надлежащей секретности в силу используемых алгоритмов. Так, например, программы, обеспечивающие шифрование одним ключом (DISKREET, встроенные системы кодирования продуктов Microsoft и подобные), не обеспечивают достаточной защиты. Почему? Во-первых, даже в идеальном случае, когда ваш ключ никому не известен, они легко взламываются. В США есть компания AccessData, которая занимается тем, что продает программу для взламывания встроенных систем защиты, используемых WordPerfect, Lotus 1-2-3, Microsoft Excel, Quattro Pro, Paradox, Microsoft Word. Эта программа занимается не простым подбором паролей, а осуществляет настоящий криптоанализ захваченных файлов. И такая фирма ведь не единственная! А о потенциале наших отечественных хакеров и говорить нечего! Они могут взломать практически все. Было бы только желание.
Однако я немного уклонился от темы. Допустим, что существует идеальная программа, которая, генерируя из исходного ключа другие ключи и используя иные методы, добивается абсолютной безопасности информации. НО: ведь вам еще надо передать вашему адресату и исходный ключ, чтобы он смог раскодировать сообщение! Вам придется передавать ему его лично или использовать какие-то секретные каналы связи. Однако что вы будете делать, если личная встреча невозможна? А если вы располагаете каналами связи с достаточной секретностью, то зачем вам вообще шифровать вашу информацию? А если их у вас нет, то вам придется передавать ключ обычными способами! И что будет с вашим бизнесом, если он будет перехвачен?
Шифрование с открытым ключом
Шагом вперед станет использование технологии с двумя ключами (его еще называют шифрованием с открытым ключом). В этом алгоритме устранены недостатки своих предшественников. Ваша программа шифрования генерирует вам два ключа: секретный и открытый. Вся соль состоит в том, что однажды зашифрованное вашим открытым ключом сообщение может быть прочитано только с помощью вашего секретного ключа, который вы, естественно, будете бережно хранить у себя и никому не давать. А открытый ключ вы можете свободно распространять по обычным каналам связи: передавать в письмах, оставлять на BBS и рассылать другими доступными вам способам. Открытый ключ может зашифровать сообщение, но не может его расшифровать! Кроме того, представим ситуацию, когда получателю вашего сообщения нужно подтверждение того, что его отправили именно вы. У вас есть открытый ключ вашего адресата. Что вы делаете? Вы подписываете сообщение своим секретным ключом (естественно, что это будет не он сам, а генерируемый программой уникальный идентификатор) и шифруете сообщение открытым ключом адресата. Вот и все! Подделка подписанного сообщения невозможна. Наличие подписи однозначно идентифицирует отправителя.
Однако не все прекрасно в этом мире! Алгоритмы шифрования с двумя ключам чрезвычайно медлительны (если вы не располагаете Cray, конечно), поэтому для обеспечения достаточной скорости используется следующий метод: для сеанса шифрования создается временный ключ, которым и шифруется сообщение, а потом его в свою очередь шифруют по технологии с двумя ключами. Таким образом, закодированное сообщение фактически несет в себе и ключ для расшифровки! Но доступен он только одному человеку: получателю вашего сообщения. Использованием этого метода добиваются и еще одного преимущества: обычный зашифрованный (стандартными алгоритмами) текст в той или иной форме доступен частотному анализу (т.е. анализу согласно свойствам языка: на наиболее употребительные буквы и т.п.), однако случайно созданный и зашифрованный ключ анализу уже не подвергнешь! Правда, можно вычленить и проанализировать сам текст. Но препятствием для этого послужит поддержка сжатия данных. Т.е. данные будут сжаты, а потом закодированы (либо наоборот), тогда частотный анализ будет чрезвычайно затруднен. Как правило, размер закодированного сообщения составляет около 50% от исходного.
Генерация временного ключа
Естественно, что для генерации временного ключа необходима последовательность случайных чисел. Однако как добиться получения действительно случайных чисел? Их невозможно получить "технологическим" путем! Все генераторы случайных чисел на самом деле генерируют псевдослучайные числа, т.е. подчиняющиеся каким-то законам. Для "генерации" случайных чисел используют BIOS компьютера, читая его с какого-либо адреса, видеопамять, анализируют конфигурацию и т.п. Однако рано или поздно они начинают повторяться. Много компьютеров имеют одинаковый BIOS и конфигурацию, в некоторые моменты работы содержимое участков видеопамяти тоже одинаково на многих компьютерах. Такие "случайные" числа допустимы для игр, но их нельзя применять в профессиональной криптографии! Казалось бы, что выхода из замкнутого круга нет, т.к. компьютер не может создать случайные числа. Однако (и тут очевидно преимущество человека) люди нашли выход и из этой ситуации. Вам предлагается ввести произвольный символьный набор. В это время компьютер замеряет и фиксирует интервалы между нажатиями клавиш. Естественно, что интервалы эти (в долях секунды, в "тиках" процессора) будут абсолютно разными. Вот это и будут настоящие случайные числа, которые могут использоваться непосредственно либо для получения псевдослучайных вышеописанными "технологическими" методами.
Pretty Good Privacy
Все вышеперечисленные возможности реализован в программе PGP - Pretty Good Privacy. Ее автор - Филипп Циммерманн - имеет многолетний опыт в разработке подобных программ, в проектировании корпоративных систем защиты информации. Программа чрезвычайно удобна, т.к. реализует и дополнительные возможности: получение сообщения сразу в uuencode для пересылки по электронной почте, хранение набора ключей в одном файле и другие мелочи, которые делают жизнь более приятной. В настоящее время PGP является одной из наиболее популярных и наиболее употребительных систем защиты информации для массового пользователя. Вот почему ее выбрали миллионы людей во всем мире!
Андрей КОНОНОВИЧ
Горячие темы