|
Шифр действует по следующему алгоритму. Первое: случайно выбираются два простых очень больших числа р и q. Второе: вычисляются два произведения n=pq, m=(p-1)(q-1). Третье: выбирается случайное целое Е, не имеющее общих сомножителей с m. Четвертое: находится D, такое, что DE=1 по модулю m. Пятое: исходный текст разбивается на блоки длиной Х не более n. Шестое: для шифрования сообщения необходимо вычислить С=ХE по модулю n. Седьмое: для дешифрования вычисляется Х=СD по модулю n.
Для шифрования необходимо знать пару чисел: Е, n, для дешифрования D, n. Первая пара - открытый ключ, вторая - закрытый. Зная открытый ключ, можно вычислить значение закрытого ключа. Необходимым промежуточным действием этого преобразования является нахождение сомножителей p и q, для чего нужно разложить n на сомножители, - эта процедура занимает очень много времени. Именно с огромной вычислительной сложностью связана криптостойкость RSA.
Стандарты PKCS (Public Key Cryptography Standards) предложены RSA Laboratories и объединением компаний, включающим Microsoft, Apple, Digital Equipment, Sun Microsystems и Lotus. В семействе PKCS множество различных стандартов (еще больше их готовится для добавления к PKCS в будущем), каждый из которых описывает отдельную область. (Учтите, что PKCS 2 и RKCS 4 объединены в PKCS 1).
Другим шифром, использующим асимметричное шифрование, является DSS.
Стандарт DSS (Digital Signature Standard) одобрен правительством США. Длина используемого ключа варьируется в пределах от 512 до 1024 бит. DSS предназначен для создания цифровой подписи (см. далее раздел о цифровой подписи), но не для закрытия информации. В стандарте DSS найдены некоторые слабые места защиты, вследствие чего он не так широко распространен.
Однако, сравнивая наиболее популярных представителей симметричного и асимметричного шифрования, стоит заметить, что программная реализация RSA гораздо сложнее DES, и поэтому она, как правило, используется при передаче небольшого объема сообщений.
Общая схема шифрованной передачи информации представлена на рис. 1. В системе симметричного шифрования оба ключа (шифрования и дешифрования) совпадают. В системе асимметричного шифрования ключи разные (шифрования - открытый, дешифрования - личный, секретный). На рисунках 2 и 3 изображены схемы распределения ключей для симметричной и асимметричной систем шифрования. Доставка секретных ключей происходит по секретным (закрытым) каналам, доставка открытых ключей - по открытым.
Шифрование в целях аутентификации
Примером шифрования в целях аутентификации (установлении подлинности автора и документа) является шифрование с помощью односторонней функции (one-way) по-другому именуемой хэш-функцией (hash function) или дайджест-функцией (digest function). Хэш-функция, примененная к шифруемым данным, дает в результате значение (дайджест), состоящее из фиксированного небольшого числа байт. Дайджест передается вместе с исходным сообщением. Получатель сообщения, зная, какая хэш-функция была применена для получения дайджеста, заново вычисляет дайджест, используя незашифрованную часть сообщения. Если значение полученного и вычисленного дайджестов совпадают, значит, содержимое сообщения не было подвергнуто никаким изменениям. Значение дайджеста не дает возможности восстановить исходное сообщение, но зато позволяет проверить целостность данных.
Построение хэш-функций является трудной задачей, так как функции такого рода должны удовлетворять нескольким условиям. Во-первых, по дайджесту, вычисленному с помощью данной функции, должно быть не возможно вычислить исходное сообщение. Во-вторых, должна отсутствовать возможность существования двух разных сообщений, для которых с помощью данной функции могли быть вычислены одинаковые дайджесты.
Наиболее популярными хэш-функциями являются MD2, MD4, MD5 и SHA.
MD2, MD4 и MD5 - алгоритмы дайджеста сообщений, разработанные Роном Райвестом. Каждый из них вырабатывает 128-битовый хэш-код. Алгоритм MD2 - самый медленный, MD4 - самый быстрый. Алгоритм MD5 можно считать модификацией MD4, при которой скоростью пожертвовали ради увеличения безопасности. Более подробную информацию вы найдете в документах RFC 1321 (MD2), RFC 1321 (MD4) и RFC 1319 (MD5).
SHA (Secure Hash Algorithm) - это алгоритм вычисления дайджеста сообщений, вырабатывающий 160-битовый хэш-код. Алгоритм SHA одобрен правительством СЩА (как часть проекта Capstone). Он несколько надежнее MD4 и MD5.
Помимо обеспечения целостности сообщений, дайджест может быть использован в качестве цифровой подписи для аутентификации передаваемого документа.
Цифровая подпись
Цифровая подпись (digital signature) - это способ проверки целостности содержимого сообщения и подлинности его отправителя. Она реализуется при помощи асимметричных шифров и хэш-функций Цифровая подпись основана на обратимости асимметричных шифров, а также на взаимосвязанности содержимого сообщений, самой подписи и пары ключей: изменение одного из этих элементов сделает невозможным подтверждение подлинности подписи.
Отправитель вычисляет дайджест сообщения, шифрует его своим ключом и отправляет вместе с письмом. Получатель, приняв сообщение, расшифровывает дайджест открытым ключом отправителя. Кроме того, получатель сам вычисляет дайджест принятого сообщения и сравнивает его с расшифрованным. Если два дайджеста совпадают, то подпись является подлинной. В противном случае либо изменено содержание сообщения, либо подпись подделана.
Шифр RSA также используют для выработки и проверки цифровой подписи. Чтобы подписать сообщение, отправитель шифрует его своим личным ключом и отправляет подпись вместе с сообщением. Получатель расшифровывает подпись открытым ключом отправителя и сравнивает результат с принятым сообщением. Если сообщение подлинное, то полученное расшифрованное и исходное сообщение должны совпадать.
Стандарт DSS (Digital Signature Standard) - это асимметричный шифр, использование которого рекомендовано правительством США. Здесь используются ключи длиной от 512 до 1024 бит. Стандарт DSS применяется только для формирования цифровой подписи, но не для закрытия данных. Он основан на алгоритме DSA (Digital Signature Algorithm), разработанном Национальным институтом стандартов и технологий (National Institute of Standards and Technology, NIST).
Разовые ключи
Так какой же алгоритм шифрования следует использовать - симметричный или асимметричный? На практике оба метода применяются одновременно - отчасти из-за того, что асимметричное шифрование значительно медленнее симметричного. Поэтому используется следующий прием: отправитель вырабатывает случайный секретный ключ и его средствами шифрует сообщение (симметричный алгоритм). Письмо посылается вместе с секретным ключом, который зашифрован открытым ключом получателя (алгоритм с открытым ключом). Такой выработанный случайным образом ключ называется разовым (message key).
Похожая ситуация возникает, когда сообщение необходимо разослать одновременно нескольким получателям. При асимметричной схеме шифрования сообщение придется зашифровывать отдельно для каждого абонента, используя его открытый ключ. Это потребует много времени. Вместо этого можно зашифровывать сообщения случайно выбранным секретным ключом и затем шифровать только секретный ключ открытым ключом каждого получателя.
Сертификаты
Асимметричное шифрование требует сохранения личного ключа в тайне. Кроме того, необходим надежный метод сопоставления открытого ключа и конкретного человека, процесса или объекта. Как же узнать, действительно ли открытый ключ принадлежит конкретному пользователю? (Если, например, этот пользователь опубликует свой открытый ключ под своим именем, то сможет прочитать все сообщения, присланные на его имя). В какой-то степени в этом поможет сертификат (certificate) - объект, надежно связывающий пользователя и его ключ. Сертификат содержит и другую информацию, например срок действия. Его выдает и подписывает центр сертификации служба (CA - Certificate Authority), однако заметим, что это не полностью решает проблему.
Сертификаты хранятся как объекты службы каталогов или на специально выделенных для этого серверах. Существует программное обеспечение сервера сертификатов, созданное как Microsoft, так и Netcape. Время от времени сертификаты необходимо отзывать. Для этого их заносят в список отозванных сертификатов (CRL - Certificate Revocation List), издаваемый СА.
Еще раз о стойкости
Два различных подхода к шифрованию - симметричный и асимметричный - требуют соответственно и разных подходов к процессу их взлома. Так, для симметричных шифров (шифров с секретными ключами) единственный метод взлома - подбор ключа. Для взлома асимметричного кода используется метод разложения на сомножители одной из составных частей открытого ключа. Обе задачи достаточно сложны, но в принципе выполнимы.
Если не принимать во внимание абсолютно стойкий шифр, массового применения которого пользователями компьютерных сетей, очевидно, не произойдет никогда, то ко всем остальным шифрам можно применить следующее высказывание "отца кибернетики" Норберта Винера: "Любой шифр может быть вскрыт, если только в этом есть настоятельная необходимость, и если информация, которую предполагается получить, стоит затраченных средств, усилий и времени…".
В доказательство истинности этого высказывания можно привести задачу, предложенную создателями RSA для всех желающих попробовать свои силы во взломе их шифра. В конце августа 1999 года компания RSA Data Security оповестила о вскрытии 512-битового открытого ключа. Во взломе принимали участие 292 компьютера на протяжении чуть больше пяти месяцев; кроме того, 9 недель ушло на предварительные расчеты. В связи со вскрытием 512-битового ключа RSA Data Security рекомендует пользователям использовать более надежные 768-битовые или даже 1028-битовые ключи.
Остается констатировать факт: любой шифр, применяемый рядовым пользователем, может быть вскрыт. Вопрос в другом: стоит ли зашифрованная информация затрат на вскрытие шифра? Так мы и подошли к основному принципу шифрования: шифруемая информация должна быть более ценной, чем стоимость защиты, и при этом менее ценной, чем стоимость атаки.
Стандарты PKCS
PKCS 1 Шифрование при помощи открытых ключей RSA
PKCS 3 Протокол Диффи-Хеллмана (Diffi Hellman) обмена и согласования ключей
PKCS 5 Шифрование с использованием секретного ключа
PKCS 6 Формат сертификатов, являющихся надмножеством сертификатов Х.509
PKCS 7 Синтаксис сообщений, содержащих шифротекст и цифровую подпись
PKCS 8 Формат личных ключей
PKCS 9 Структуры данных, используемые в других PKCS
PKCS 10 Синтаксис запросов на сертификацию
PKCS 11 Описывает API для устройств, использующих криптографические функции, например для смарт-карт
Основные понятия
Криптология - наука, занимающаяся проблемами шифрования и дешифрования.
Криптография - наука о способах преобразования (шифрования) информации с целью ее защиты от незаконных пользователей.
Криптоанализ - наука (и практика ее применения) о методах и способах вскрытия шифров.
Шифр (от франц. chiffre) - совокупность условных знаков (условная азбука из цифр или букв) для секретной переписки.
Шифр замены - шифр, осуществляющий преобразование замены букв или других "частей" открытого текста на аналогичные "части" шифрованного текста.
Шифр перестановки - шифр, осуществляющий преобразование перестановки букв в открытом тексте.
Блочный шифр - шифр, разбивающий исходный текст на блоки и преобразующий каждый блок входных данный в блок шифротекста
Поточный шифр - шифр, преобразующий открытый текст в шифротекст по одному биту за такт.
Абсолютно стойкий шифр - шифр, не поддающийся расшифровке.
Ключ - сменный элемент шифра, который применяется для шифрования конкретного сообщения.
Стойкость шифра (криптостойкость) - способность шифра противостоять всевозможным атакам на него.
Атака на шифр - попытка вскрытия шифра.
Односторонняя функция - функция шифрования F(X)=Y, не имеющая решения уравнения относительно Х.
Функция с секретом - функция шифрования, FK: Х®Y, зависящая от параметра К и не имеющая обратного решения при неизвестном К.
Цифровая подпись (digital signature) -способ проверки целостности содержимого сообщения и подлинности его отправителя основанный на формировании небольшого количества цифровой информации и ее передаче вместе с подписываемым текстом.
Разовый ключ (message key) - выработанный случайным образом секетный ключ, зашифрованный другим ключом и посылаемый вместе с зашифрованным им сообщением.
Экспортные ограничения на торговлю программными и аппаратными криптографическими продуктами.
В 1995 г. 33 страны, включая Россию, подписали Вассенаарское соглашение (Wassenaar Arrangement), посвященное проблемам международной торговли оружием и продуктами двойных технологий.
В декабре 1998 г. участники соглашения достигли договоренности об ограничении контроля со стороны правительств стран-участниц над торговлей 64-разрядными аппаратными и программными продуктами, криптографическими продуктами, реализующими 56-битовые алгоритмы класса DES и криптозащиту с открытыми ключами длиной 512 разрядов.
|