Crypto

 m> @Kibab: *freebsd *linux *security Понадобилось тут послать товарищу файлик. Товарищ не пользуется благами типа GPG, но файлик был сильно секретный, так что желательно было, чтобы никто его прочитать не мог. Совсем никто. В итоге было рождено следующее решение :-) С одного из серверов, куда товарищ имеет доступ, был взят из authorized_keys его публичный SSH-ключ. Идея была в том, чтобы зашифровать файлик публичным ключом, а расшифровать тогда сможет только владелец приватного ключа, что и требуется. Но тут возникает загвоздка: OpenSSL не понимает публичные ключи формата OpenSSH! Решение было найдено в использовании ssh-keygen из комплекта OpenSSL Portable, скачать последнюю версию можно с FTP OpenBSD: ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/. Предупреждаю -- в портах версия старая, не подойдёт! Собираем скачанное. Нам нужен ssh-keygen, у которого в этой версии есть ключик -m. Он позволяет указать формат экспорта ключа :))

Итак. 1. Конвертируем публичный ключик друга, выдернутый из authorized_keys, в формат PCKS#8: /home/kibab/OperaDownloads/openssh/openssh-5.8p1/ssh-keygen -f id_rsa.pub -e -m PKCS8 >id_rsa_openssl.pub

2. Шифруем передаваемый файлик с помощью полученного публичного ключа: openssl rsautl -encrypt -in somecrap.txt -inkey id_rsa_openssl.pub -pubin > somecrap.txt.enc

3. Товарищ на своей тачке выполняет следующее: openssl rsautl -decrypt -in somecrap.txt.enc -inkey id_rsa > somecrap.txt

И получает исходный файл. Приватные ключи OpenSSL и OpenSSH по формату полностью совместимы.

краткий смысл этого всего: при отсутствии каких-либо средств шифрования (кроме стандартного OpenSSL и SSH-ключей) надёжно передать файл, имея минимум информации о получателе 