RSA: эпилог

Всё-таки это «игрушечное» и поверхностное описание. Относиться к нему надо соответственно. Его цель — заинтересовать и показать основы, а подробную информацию найти в сети проще простого. Впрочем, всё-таки добавлю пару слов про связь между практикой и вышеописанными алгоритмами.

Шифрование

Теперь о том, как это применяется на практике. Разумеется, никто не шифрует сообщение побайтово — разных значений всего лишь 256, и их легко получить перебором. Также никто не пытается представить всё сообщение в виде большо числа (не забывайте, что шифруемое число не может быть больше n). На практике применяют метод, который называют «цифровым конвертом»: для каждого шифруемого сообщения создаётся случайный сеансовый ключ какого-то из методов симметричной криптографии; этим сеансовым ключом шифруют сообщение, а затем сеансовый ключ шифруют при помощи RSA. Получатель закрытым ключом восстанавливает сеансовый ключ, а сеансовым ключом расшифровывает сообщение.

Симметричная криптография — штука хорошо изученная, надёжная, эффективная, быстрая и так далее. Когда-то, в 70-х годах, применяли DES, сейчас применяют AES, но по сути ничего не изменилось. Главная особенность: в симметричной криптографии ключ для шифрования и расшифровки — один и тот же. Применив случайные сеансовые ключи и RSA, мы запросто получаем асимметричную криптографию.

Электронные подписи

Здесь всё так же, как и с шифрованием: никто не пытается засунуть в RSA всё сообщение. На практике подписывают не само сообщение, а хэш сообщения. Это может быть устаревший MD5, SHA1 или что-то другое, но суть одинакова. Получается быстро, экономно и эффективно.

Страшный зверь «PKI»

Отдельная песня — откуда у пользователя возьмётся соответствующий открытый ключ, причём из надёжных источников. Эта проблема решается при помощи public key infrastructure (по-русски — инфраструктуры открытых ключей). Есть централизованная PKI — X.509, и есть децентрализованная — PGP. Про децентрализованную PGP/GPG у меня есть специальный раздел.

С централизованной X.509 всё хитро. В этой схеме самые главные игроки — удостоверяющие центры (certificate authority), которые распространяют свои открытые ключи (вот у вас в браузере встроены открытые ключи VeriSign'а и многих других компаний). Они же предлагают (как правило, на коммерческой основе) желающим получить сертификат подлинности своего открытого ключа. Потребитель, в свою очередь получает из произвольного источника открытый ключ вместе с сертификатом, подписанным удостоверяющим центром и сообщающим некоторую информацию об этом открытом ключе. При помощи такого сертификата ваш браузер может узнать, например, что сайт банка — это действительно сайт именно этого банка, а не что-то другое.

Уф-ф. Такая вот статья. Если есть вопросы — пишите.

© 1999–2012, Дмитрий КолесниковКарта сайта • Размещено на «Бункере»Valid XHTML & CSS