Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Второй механизм, называемый сетью доверия, используется чаще, так как позволяет добавлять новые ключи к доверенным. Оба механизма предусматривают механизм цепного подписывания, например, если ключ А был подписан ключом Б, который подписан ключом С, который подписан вашим ключом, то ключ А считается доверенным. При этом число таких «шагов» наследования обычно ограничено. Такой механизм сети доверия реализован, например, в системе PGP и в системе OpenSSL. Этим обеспечивается безопасность клиента.
Безопасность сервера необходима лишь в случае удаленной беспарольной аутентификации, тогда администратор удалённой системы помещает ваш ключ в список известных ключей системы. Примечание для администраторов: если вы не хотите, чтобы все могли использовать данный ключ, объясните пользователю опасность доступа посторонних лиц к его секретному ключу и убедите его зашифровать секретный ключ паролем, который, кстати, можно удобно хранить в памяти и не вводить лишний раз, но об этом я расскажу в статье об SSH. И ещё: не забывайте убедиться в том, что ключ пришёл от того, кого предполагалось, для этого лучше попросить пользователя принести ключик на дискетке, а потом её дезинтегрировать или оставить в эпицентре ядерного взрыва (жаль этого нельзя проделать с некоторыми «пользователями», хотя почему нельзя? Мария Францевна, подойдите-ка на минутку...)
И наконец, скажу ещё вот что: асимметрическое
шифрование используется для подписи и зашифровывания почтовых сообщений,
удалённой аутентификации и ЭЦП в любых её применениях. Но для передачи большого
количества данных через сеть использовать асимметрическое шифрование очень
печально – всё загнется окончательно и бесповоротно: уж больно много времени
надо для использования подобных алгоритмов. Поэтому при передаче данных по сети
используют симметрическое шифрование (3DES, IDEA, Blowfish). Но ключ
симметрического шифрования очень опасно передавать в открытом виде (ведь он
используется для шифрования и дешифрования), и вначале устанавливается связь
асимметрическим шифрованием, как было описано выше. После установления связи
клиент генерирует ключ симметрического шифрования и шифрует его публичным
ключом сервера, затем отправляет его собственно серверу (также выполняется подписывание
симметрического ключа для удостоверения в его неизменности). Сервер
расшифровывает своим секретным ключом ключ симметрического шифрования и
использует его для общения с клиентом. Красота! Но есть ещё один способ –
алгоритм Дифлемана-Хельмана, позволяющий использовать одни и те же ключи как
для симметрического, так и для асимметрического шифрования. Он заключается в
нехитрых математических законах степенной функции (я не буду на этом заострять
внимание, так как вряд ли это пригодится на практике). Оказывается, имея пару –
публичный ключ A и секретный ключ B, можно вычислить ключ симметрического
шифрования С, который также получается при наличии пары ключей секретный А и
публичный B. Говоря проще, ключ С однозначно могут вычислить обе машины, обменявшиеся
публичными ключами. Этот ключ можно далее использовать для
шифрования/дешифрования данных по стандартному алгоритму симметрического ключа.
Такой способ достаточно безопасный, но он пока ещё не получил достаточного
распространения и поэтому сейчас чаще используется первый способ. Любопытные
тут же поинтересуются: почему, когда я говорил о симметрическом шифровании, я
сказал, что 128-и битный ключ теоретически несокрушим, а говоря об
асимметрическом шифровании, сказал, что ключ длиной 1024 бит считается пока ещё
более-менее безопасным. Тут дело вот в чём: при асимметрическом шифровании
выбираются 2 больших простых числа и на их основе создаются секретный и
публичный ключи. Не вдаваясь в математику (для математической стороны
алгоритмов шифрования можете зайти на лучший алгоритмический ресурс в рунете
Ну вот, с теорией покончено, можно приступить к практике.
OpenSSL – это система защиты и сертификации данных, название SSL переводится как система безопасных сокетов. OpenSSL используется практически всеми сетевыми серверами для защиты передаваемой информации. Существует API SSL, позволяющее создавать безопасные сокеты с шифрованием передаваемых данных. Но в данной статье я бы хотел рассказать о самой системе OpenSSL, вызываемой через командную строку.
Так как OpenSSL поддерживает очень много различных стандартов сертификации, шифрования, хеширования, то использование данной команды достаточно сложно. Внутри OpenSSL существуют отдельные компоненты, отвечающие за то или иное действие. Для получения списка доступных компонентов можно вызвать openssl с параметрами list-standart-commands. Можно также получить список доступных алгоритмов хеширования (list-message-digest-commands) и алгоритмов шифрования (list-cipher-commands). Итак, с помощью команд OpenSSL можно делать следующее:
n Создавать и управлять ключами RSA и DSA – команды rsa, dsa, dsaparam;
n Создавать сертификаты формата x509, запросы на сертификацию, восстановление – команды x509, req, verify, ca, crl, pks12, pks7;
n Зашифровывать данные с помощью симметрического или асимметрического шифрования – команды enc, rsautl;
n Высчитывать хеши различных типов – команда dgst;