Так как наша компания (http://ancud.ru/) занимается защитой информации, то хорошее знание криптографии никому не помешает.
Криптография
- Что такое симметричная и асимметричная криптография?
- Что такое хеш-функция? Какие хэш-функции вы знаете? Почему CRC32 не подходит? HMAC? KDF?
- Какие симметричные алгоритмы вы знаете? AES, 3DES, ГОСТ 28147-89, RC5, Blowfish?
- В чем отличие блочных шифров от поточных шифров? Сеть Фейстеля?
- Что такое режимы шифрования? ECB (простая замена), CBC, гаммирование, CFB (гаммирование c обратной связью).
- Какие асимметричные алгоритмы вы знаете? RSA, DSA, ГОСТ 34.10-2012?
- Причем тут односторонние функции? Дискретный логарифм и эллиптические кривые.
- Цифровая подпись (ЭЦП) и асимметричное шифрование.
- Инфраструктура открытых ключей (PKI). Зачем? Что содержит сертификат?
- Алгоритмы аутентификации. Как работают симметричные и асимметричные?
- Выработка сессионных ключей. Почему Диффи-Хелман – это не аутентификация? Что такое Forward Secrecy (прямая секретность)? Защита от MITM атак.
- Как часто надо менять ключи? А пароли? От чего это зависит?
- Чему равна криптостойкость пароля? А если его выбирает пользователь?
- Почему для криптографии важны случайные числа? Приведите пример атаки на ДСЧ.
Идея для сервиса, как это часто бывает, родилась из неудовлетворенной потребности. Мне часто кто-то скидывает конфиденциальную информацию, например FTP доступы, через незащищенный канал. Если людям, с которыми общаешься часто, еще можно объяснить, что такое шифрование, и какой софт нужно для него ставить, то навязывать свою паранойю случайным собеседникам — дело неблагодарное.
Так появился на свет Otr.to — браузерный p2p чат с OTR шифрованием. Что бы начать общаться, достаточно зайти на главную страницу, скопировать сгенерированную ссылу и скинуть ее собеседнику. Чат начнется как только он ее откроет.
Читать дальше →
Попробовал воспользоваться выданным на работе eToken для доступа на линукс-машину по ssh.
Естественно, на машине, куда я втыкал токен, уже установлен Safenet Authentication Client, родной софт от производителя токена, который содержит PKCS11-модуль libeTPkcs11.so. С его помощью можно использовать этот токен в firefox-е и еще много где, причем с ключами и сертификатами, созданными виндовым софтом.
Интерес представляло, насколько хорошо поддержка pkcs11 интегрирована в OpenSSH.
Наибольшую сложность составило почему-то преобразование открытого ключа, извлеченного из сертификата средствами OpenSSL в формат openssh-вого identity.pub. Команда
ssh-keygen -i -m pem -f filename.pem
злобно ругается на нераспознаваемый формат.
Это потому что, openssl полностью перешла на PKCS8 форматы а под pem в опции -m ssh-keygen понимается старый формат.
Правильная команда выглядит как
openssl x509 -in fromtoken.crt -noout -pubkey >filename.pem
ssh-keygen -i -m PKCS8 -f filename.pem
Получить старый формат средствами OpenSSL можно, Для этого в команде rsa есть ключик -RSAPublicKey_out
Можно взять ключик, выдрранный командой x509 (выше) из сертификата и сконвертировать.
Сертификат из токена достается командой:
pkcs11-tool --module libeTPkcs11.so --type cert --id <какой-там-у-вас-id> --read-object
Эта команда выдает сертификат в формате der на stdout, поэтому надо либо переназначить в файл, либо сразу направлять в openssl x509, не забыв ей сказать -inform DER.
Пин-кода чтение сертификата по очевидным причинам не спрашивает.
После того, как ключ получен и положен куда надо в authorized_keys дальше все просто:
Либо
ssh -I libeTPkcs11.so куда.надо
и мы попадаем на нужный хост, одноразово обратившись к токену.
Либо
ssh-add -s libeTPkcs11.so
и золотой ключик у вас в агенте. В обоих случаях, конечно PIN спросят.
Агент нормально переживает внезапное выдергивание токена. Правда, ключ в списке остается.
Что интересно, при попытке его удалить (командой
ssh-agent -e libeTPkcs11.so
спрашивают пассфразу.
При выдернутом токене.
Поиграться что-ли еще с pam-pkcs11?
Там интересно - предоставляются разные способы мэппинга информации из сертификата на карте в юзернеймы, что полезно в моём случае, поскольку юзернеймы на машине куда ходить и информация помещаемая в сертификат, контролиуются разными людьми. Сертификат - сисадмином конторы, а машина - мной.
Кроме того, в состав pkcs11 входит pkcs11_eventmgr, который позволяет, например, лочить экран при выдергивании токена. Интересно, удастся ли сделать так, чтобы ssh-agent при выдергивании токена "забывал" пассфразу от него, но когда после вставления токена она вводится в screensaver, получал бы ее оттуда средствами pam.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1103668.html. Please comment there using OpenID. Now there are comments