LINUX.ORG.RU

Формат зашифрованного письма, какой правильный?

 , , ,


1

1

Я тут осваиваю шифрование в обычном емейле.
И провел маленькое исследование. Выяснилось:

1. Если делать письмо в клиенте Sylpheed,
то тело его получается с двумя вложениями:

From: Michael Galyuk <robux@mail.ru>
To: ironsoft@mail.ru
Subject: test
Content-Type: multipart/encrypted; protocol="application/pgp-encrypted";
 boundary="Encrypt=_Sat__2_Nov_2013_12_12_12_+0600_1pZ8Rq_vZcgcyX60"

...

--Encrypt=_Sat__2_Nov_2013_12_12_12_+0600_1pZ8Rq_vZcgcyX60
Content-Type: application/pgp-encrypted

Version: 1

--Encrypt=_Sat__2_Nov_2013_12_12_12_+0600_1pZ8Rq_vZcgcyX60
Content-Type: application/octet-stream

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAzfEAr1AOwMoAQf/V+fZahF0VjHauGOXeVIN3QVNdcRil0RF+7zfiRxcuDHK
C8UMNBEs6mu7hLpPsWM0TbOu16ng1HVyPzD2SiCmDVQSrHMC1Kiu2KSSurIH1TuW
...
Yknc5MJSMZVpPwXJN2f7vwgS7VmqTZYPNn/RO8/No2uvKy55
=wBBn
-----END PGP MESSAGE-----

--Encrypt=_Sat__2_Nov_2013_12_12_12_+0600_1pZ8Rq_vZcgcyX60--

Т.е. создается три вложения:
multipart/encrypted - где указывается чем зашифровано
application/pgp-encrypted - где указывается версия PGP
application/octet-stream - где указывается шифротекст с подписью в формате ASCII.

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

2. Если смотреть письмо через веб-сервис на сайте mail.ru то,
никаких вложений не видно!!!
Т.е. выглядит как будто пришло пустое письмо с заголовком.

3. Если делать шифротекст вручную командой:

gpg --armor --encrypt --sign --local-user robux@mail.ru --recipient ironsoft@mail.ru pgp-letter.txt
и приложить к письму вручную, то веб-сервис уже видит вложения, их можно «скачать как...» и потом вручую же расшифровать:
gpg --decrypt pgp-letter.txt.asc

Вопросы к бородатым мужикам:
1) octet-stream - это чисто изобретение sylpheed?
2) каким должен быть формат правильно зашифрованного письма?
3) справедливо ли что mail.ru «не видит» шифротекст?
4) как делаете вы? поделитесь опытом шифрованной Ъ-переписки.

★★★★

Глянул Список MIME-типов, там написано:

application/octet-stream: двоичный файл без указания формата (RFC 2046)
multipart/signed: (RFC 1847)
multipart/encrypted: (RFC 1847)

Посмотрите плиз, какие mime при шифровании используют ваши почтовые клиенты?

Novator ★★★★ ()

application/octet-stream - двоичный файл без указания формата. Тут всё верно. Но вот отсутствие

Content-Transfer-Encoding: base64;    
Content-Disposition: attachment; filename = "blabal.enc"
Мешает отобразить его как следует.

AlexVR ★★★★★ ()
Ответ на: комментарий от AlexVR

Оказывается вначале я не увидел еще один тег «multipart/encrypted» - подправил первый пост.

А вобще, как выяснилось, существует два формата для шифрования писем:
1. PGP/MIME
2. S/MIME
Sylpheed пока поддерживает только первый.

http://www.ietf.org/rfc/rfc2015.txt - всё так как ты и описал.

В официальной рассылке gnupg упоминалось:

The correct content-type is application/octet-stream with Content-Description: encrypted data. But that's what I already wrote in my first reply.

Похоже, баг Sylpheed'а заключается в отсутствиии тега «Content-Description: encrypted data».
Ну-ка я щас баг-репорт накалякаю...

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 1)
Ответ на: комментарий от Novator

А ещё бывает PGP/inline, это когда прямо в теле письма в plaintext попадается BEGIN PGP MESSAGE и/или BEGIN PGP SIGNED MESSAGE / BEGIN PGP SIGNATURE. Такое тоже встречается и поддерживается в почтовых клиентах.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

PGP/inline

Грустный и ненужный формат. Не поддерживается в Sylpheed, но с ним можно кое-как работать с помощью внешних команд (по крайней мере проверка подписи делается элементарно).

Gotf ★★★ ()
Ответ на: комментарий от Gotf

Грустный и ненужный формат.

И объявленный устаревшим. Хотя и встречается до сих пор во многих рассылках. Поэтому (1) правильнее, Novator.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Верно! Я дополнительно установил Thunderbird+Enigmail и провёл всесторонние исследования :) Оказалось, thunderbird может шифровать письмо как через PGP/MIME теги, так и через засовывание шифровки в plain/text тело письма.

Дак вот, соль проблемы оказалось, как выше упоминали, в наличии тегов:

Content-Type: application/octet-stream; name="encrypted.asc" 
Content-Description: OpenPGP encrypted message
Content-Disposition: inline; filename="encrypted.asc" 
которые отсутствуют у Sylpheed, о чем я и написал баг-репорт:
http://sylpheed.sraoss.jp/redmine/issues/135

Что примечательно, если эти теги полноценно присутствуют, т.е. сделаны в Thunderbird, то вложение уже отображается в веб-сервисе mail.ru и вложение можно «сохранить как..» и распаковать уже из командной строки. Также Thunderbird имеет поддержку S/MIME.

Вывод:
используйте Thunderbird, вместо Sylpheed, если хотите иметь корректное создание PGP/MIME тегов, а также поддержку S/MIME.

P.S. S/MIME я не пробовал, но похоже для работы с криптографией оно использует OpenSSL (вместо GNUPG) и требует генерации сертификатов.

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 2)

Ну и завершая тему, резюмирую.

Существует три формата шифровки e-mail:
1. PGP/MIME
2. PGP/INLINE
3. S/MIME
Первые два требуют GnuPG (OpenPGP), третий - OpenSSL.
Все форматы хорошо поддерживает Thunderbird с модулем Enigmail.
Sylpheed годится только для чтения PGP/MIME.

В убунте/дебиане всё ставится командой:

apt-get -y install thunderbird enigmail gnupg openssl

Приятных шифровок, господа! АНБ сосёт :)

Novator ★★★★ ()
Ответ на: комментарий от Novator

хмм, мне вот enigmail сгенерил ключь.

Может есть пару минут, и можешь объяснить что да как дальше делать?(можно в джаббере).

shuck ★★★ ()

Сам спросил, сам же и ответил, действительно, thunderbird + enigmail отличная связка для обмена криптопочтой. Есть нюансы, иногда без mime он недружит с кодировками, отличными от 7-bit ascii, но это мелочи. Вложения mime - выбор джентельменов. PS: у меня даже родители легко освоились ;)

anonymous ()
Ответ на: комментарий от shuck

Может есть пару минут, и можешь объяснить что да как дальше делать?(можно в джаббере).

Я ключи генеряю, смотрю, правлю, экспортирую свой, импортирую друзей командами:

gpg --gen-key
gpg --list-keys
gpg --edit-key 31EAF4D7
gpg --armor --export robux@mail.ru > robux.gpg.txt
gpg --import friends.gpg.txt

При создании письма выбираешь PGP/MIME. При отправке почтарь должен запросить пароль на ключ, у которого емейл-совпадает с емейлом отправителя, после чего создает ЭЦП. Также почтарь зашифрует письмо на ключе, у к-го емейл совпадает с емейлом получателя.

Т.е. до отправки письма убедись, что оба мыла присутствуют в ключах. Чужой - только импортируешь. Свой - генеряешь или импортируешь.

Джаббером редко пользуюсь, спрашивай здесь.

Novator ★★★★ ()
Ответ на: комментарий от anonymous

Сам спросил, сам же и ответил

У меня такое в 50% случаев.

Вложения mime - выбор джентельменов.

pgp/mime или s/mime? (я еще 2е не пробовал - не охота openssl-сертификаты генрять, имхо в gnupg как-то попроще будет)

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.