Сплошная безопасная передача файлов: IronSSH

Перевод: Анна Давыдова
Источник: n0where.net

IronSSH - сплошная безопасная передача файлов

IronSSH — сплошная безопасная передача файлов

Альтернатива sftp и scp, которая хранит файлы в зашифрованном виде после их загрузки и позволяет обмениваться файлами с использованием криптографических инструментов.

Скачать IronSSH

Данный проект является ответвлением openssh/openssh-portable проекта от OpenSSH. Хотя большая часть проекта не изменилась, были добавлены некоторые специальные коррективы для создания новых исполняемых файлов, которые обеспечивают сплошную защиту при передаче файлов на удаленные серверы.

Не смотря на то, что sftp и scp используют ssh для сохранения безопасности файлов, когда они передаются через сеть, как только они попадают на удаленный сервер, они больше не находятся в безопасности. ironsftp исполняемый файл предоставляет дополнительную защиту. Когда вы помещаете файл на сервер с помощью ironsftp, файл шифруется перед его загрузкой, и остается зашифрованным на сервере. Когда вы получаете файл с сервера, сначала он скачивается, а потом раскодируется. Так что файл остается в безопасности до тех пор, пока не достигнет того места, где вы захотите использовать его – вашей локальной машины.

Расширение .iron используется для определения безопасного файла. Если вы запустите ironsftp и поместите put foo.c на сервер, файл сначала будет зашифрован и записан в foo.c.iron, затем этот закодированный файл будет записан на удаленный сервер. Когда вы получите get foo.c.iron с сервера, если, конечно, этот файл можно скачать, ironsftp расшифрует файл и запишет foo.c на вашу локальную машину. Для удобства, если вы получаете get foo.c, но этот файл не доступен на данном севере, ironsftp попытается скачать и расшифровать foo.c.iron.

Вся процедура остается такой же, как и sftp, но только в данном случае ваши файлы защищены на удаленном сервере.

IronSSH - сплошная безопасная передача файлов

Управление ключом

Для того чтобы использовать ironsftp, вы должны обладать RSA ключом в ~/.ssh/id_rsa файле на вашей локальной машине. Когда вы запускаете ironsftp в первый раз, он прочитает ваши общедоступные и конфиденциальные RSA ключи (возможно, даже попросит вас ввести идентификационную фразу для конфиденциального ключа), а затем копирует их в новые файлы ключей в ~/.ssh/ironcore/. Ключ RSA используется для подписания зашифрованных файлов. ironsftp также генерирует пару ключей Curve25519 – этот ключ хранится в том же месте и используется для шифрования данных. Эти новые конфиденциальные ключи заблокированы с помощью идентификационной фразы, которая генерируется путем использования вашего приватного ssh RSA для подписания некоторых данных. Таким образом, если ваш ssh ключ заблокирован с помощью идентификационной фразы, то ваши ironcore ключи также заблокированы. Разблокирование ssh ключа требуется для разблокировки ironcore ключей.

Когда вы используете ironsftp для подключения к серверу, информация вашего общедоступного ключа загружается в ~/.ironpubkey. Таким образом, это предоставляет удобный механизм для других пользователей, подключающихся к серверу, чтобы найти ваши общедоступные ключи ironcore. В частности, если другой пользователь подключился к серверу, использую ironsftp, он может использовать информацию о вашем общедоступном ключе, для безопасного обмена файлами с вами, как описано в следующем разделе.

Безопасный обмен

Вы также можете поделиться этими безопасными файлами с другими пользователями. Когда вы подключаетесь к серверу, по умолчанию, каждый файл, который вы загружаете на этот сервер, будет зашифрован таким образом, что только вы сможете прочитать его. Однако, если другие пользователи на этом сервере подключились к нему, используя ironsftp, информация об их общедоступном ключе будет доступна на ~<login>/.ironpubkey. Вы можете использовать новые ironsftp команды для добавления получателей, чтобы любые последующие файлы, которые вы загружаете в этом сеансе, будут зашифрованы для этих пользователей также как и для вас. Например, предположим, что вы вошли как gumby:

 % ironsftp BigServer
 Connected to BigServer.
 ironsftp> showrcpt
 Currently registered recipients:
  gumby
 ironsftp> addrcpt pokey
 Added login pokey to the recipient list
 ironsftp> addrcpt mrhand
 Unable to retrieve public keys for user mrhand.
 ironsftp> showrcpt
 Currently registered recipients:
  gumby
  pokey
 ironsftp> put foo
 Uploading foo to /home/gumby/foo.iron
 ironsftp>

Файл foo.iron на сервере зашифрован таким образом, что вы и pokey могут извлечь и расшифровать его. Предположим, что pokey делает следующее:

 % ironsftp BigServer
 Connected to BigServer.
 ironsftp> get foo
 Fetching /home/pokey/foo.iron to foo.iron
 Data was encrypted to user gumby
 Message was signed by user gumby, key ID 1234567890ABCDEF.

Файл foo.c.iron будет расшифрован автоматически, и соответственно будет создан foo. Если какой-либо пользователь, кроме gumby или pokey, скачает файл, он получит сообщение примерно следующего содержания:

 ironsftp> get foo
 Fetching /private/tmp/sftp.c.iron to sftp.c.iron
 WARNING: The file "foo" is encrypted, but access is not granted to you,
 so the unencrypted contents cannot be retrieved.

У пользователя по-прежнему foo.iron будет находиться в текущей директории, но он будет не читаемым.

Совместимость GnuPG

Ключи, используемые ironsftp, хранятся в том же формате, что использует GnuPG – все общедоступные ключи находятся в ~/.ssh/ironcore/pubring.gpg, и соответствующие секретные ключи находятся в личных файлах, а именно в ~/.ssh/ironcore/private-keys-v1.d. Все файлы, зашифрованные с помощью ironsftp, также могут читаться и gpg. (Поскольку мы используем криптографию эллиптических кривых для шифрования данных, вам понадобится версия 2.1.7 gpg или выше, которая, в свою очередь, требует версию libgcrypt 1.7 или более новую). Если вы используете современную версию gpg, для расшифровки файла, закодированного ironsftp, вы можете использовать что-то вроде этого:

gpg --homedir ~/.ssh/ironcore -d --output foo foo.iron

Установка IronSSH

RedHat, CentOS, Debian и Ubuntu

IronSFTP требует OpenSSL 1.0.2 или более новую. Это означает, что он будет работать только на более новых операционных системах, включая RedHat Enterprise 7; CentOS 7; Fedora 23, 24; Debian Stretchy; и Ubuntu Wily, Xenial, Yakkety. Пакеты для этих операционных систем размещаются на packagecloud.io. Чтобы установить пакеты deb и rpm:

  1. Для Debian и Ubuntu: sudo apt-get install ironssh.
    Для RedHat и CentOS: 
    sudo yum install ironssh.
MacOS

IronSFTP может быть установлен пользователями Homebrew, используя эту команду: brew install ironcorelabs/ironcore/ironssh.

Установка из исходников

Для установки из исходника, убедитесь, что у вас есть версия OpenSSL 1.0.2 или более новая, затем следуйте этим инструкциям, которые изменяются по мере необходимости, чтобы определить местонахождение зависимостей:

  > git clone git@github.com:IronCoreLabs/ironssh.git
  > cd ironssh
  > autoreconf
  > ./configure --with-ssl-dir=/usr/local/opt/openssl
  > make && make install

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *