Keybase: Обмен ключами gpg

20 December 2014 #internet#security

GnuPG – свободная программа для шифрования информации и создания электронных цифровых подписей. Используется асимметричное шифрование, при котором генерируется пара ключей: публичный, для шифрования, и приватный, для чтения.

Сложность заключается в том, что для того, чтобы начать переписку, нужно обменяться ключами. Со знакомыми людьми особых проблем это не вызывает, а вот с незнакомыми, начинаются проблемы. Обычно для этого используются сервера, на которых публикуются публичные ключи, но произвести поиск можно только по заранее известному адресу электронной почты. И возникают сложности с отзывом ранее опубликованных ключей.

Именно эту проблему позволяет решить сервис keybase.io. На данный момент сервис находиться в тестировании, и регистрация проводиться по приглашениям. У меня есть 8 инвайтов, для получения обращайтесь в Twitter или Facebook.

После регистрации на сервере, создается страница пользователя, в которой указываются “контактные данные”, по которым в дальнейшем будет проводиться поиск. Сначала необходимо подтвердить адрес своей электронной почты, и затем создать или импортировать существующие ключи. Для этого можно использовать curl, или, что более функционально, использовать официальный клиент для командной строки. На компьютере к тому времени уже должны быть установлены GnuPG и NodeJS. Для установки в OSX используем пакетный менеджер Homebrew:

brew install nodejs
brew install gpg

Затем генерируем ключи, если это не было проделано ранее:

gpg --gen-key

И теперь устанавливаем сам клиент для работы с сервисом:

npm install -g keybase-installer
keybase-installer

После чего можно опубликовать свой ключ на сервер, с использованием команды:

keybase push

Этого вполне достаточно для того, чтобы ваш ключ можно быть найти в данном сервисе. Но чтобы найти вас было еще проще, нужно добавить так же ссылки на другие социальные сети (твиттер, гитхаб) или сылку на свой персональный сайт. Каждая ссылка при добавлении верифицируется.

Полная документация по использованию клиента командной строки размещена на странице keybase.io/docs/command_line.

К примеру, чтобы найти пользователя, и зашифровать для него сообщение, используются команды:

keybase search juev                      # search user juev
keybase encrypt juev -m 'secret'         # encrypt
keybase encrypt juev -s -m 'secret'      # also sign with -s
keybase encrypt juev foo.txt             # foo.txt -> foo.txt.asc
keybase encrypt juev foo.txt -o bar.asc  # foo.txt -> bar.asc
echo 'secret' | keybase encrypt juev     # stream

Можно воспользоваться так же веб-интерфейсом. Соответственно, страница Encrypt для того, чтобы зашифровать сообщение для определенного пользователя. Достаточно будет знать только его имя в социальных сетях или адрес электронной почты. И при этом не нужно иметь на компьютере установленных программ для шифрования. А страницу Decrypt можно использовать для расшифровки полученного сообщения, но только в том случае, если приватный ключ хранится на сервере.

Обратили внимание на то, как упрощается коммуникация? Достаточно даже без регистрации зайти на страницу Encrypt, ввести имя пользователя и сообщения, и получить зашифрованное сообщение, после чего воспользоваться любым доступным средством связи, для того, чтобы передать сообщение.

А если хранить свой приватный ключ на сервере Keybase, то и расшифровывать сообщения можно будет без установки программного обеспечения. Естественно, что это сказывается на уровне безопасности.

Напоминаю, что за инвайтом можно обратиться ко мне в почту, в Twitter или Facebook.

А найти меня можно на этом сервере по адресу keybase.io/juev.