Я настроил S/MIME на своем iPhone, но, в отличие от других почтовых клиентов, у меня нет возможности выбирать алгоритмы хеширования или шифрования. Я предполагаю, что iOS принимает это решение за меня.
Может ли кто-нибудь сказать мне, какие алгоритмы используются и каковы размеры ключей? Было бы неплохо узнать, что АНБ будет нелегко проникнуть в мои уведомления на Facebook. :D
SHA-1 скорее всего это. Вот что я нашел в поддержку этого утверждения:
В справочном документе по службам синтаксиса криптографических сообщений указано, что используется версия S/MIME 3.1 , которая определена здесь, и где указано, что она поддерживает SHA-1, SHA-256, SHA-384 и SHA-512, но :
Алгоритмы SHA-256, SHA-384 и SHA-512 [FIPS180-2] в настоящее время не рекомендуются для S/MIME и включены сюда для полноты картины.
Более того, в справочном документе по сертификатам, ключам и службам доверия (хотя это версия для Mac) указано, что по умолчанию используется алгоритм SHA-1 .
В другом документе сказано:
Наиболее распространенной хэш-функцией, которую вы будете использовать, является SHA-1 , алгоритм, разработанный и опубликованный правительством США, который создает 160-битное хэш-значение из любых данных длиной до 2**64 бит. Существует также ряд более экзотических алгоритмов, таких как SHA-2, алгоритмы на основе эллиптических кривых и так далее.
Для совместимости с существующими системами и инфраструктурой иногда может потребоваться использование более старых алгоритмов, таких как MD5, но их не рекомендуется использовать в новых проектах из-за известных недостатков.
Итак, хотя мне не удалось найти прямого подтверждения использования алгоритма SHA-1, подсказки указывают на это.
On CMS terminology, this module performs encryption using the **enveloped-data content** type and signing using the signed-data content type. If the message is both signed and encrypted, it uses **nested ContentInfo** types.
Для конкретного сообщения вы можете использовать openssl asn1parse
, чтобы заглянуть внутрь.
Я отправил себе сообщение с помощью iOS Mail, подписанное и зашифрованное для меня, и с помощью командной строки
$ openssl smime -pk7out -in message.eml | openssl asn1parse
и содержимое результатов показало, что сообщение зашифровано с помощью 3DES EDE в режиме CBC:
913:d=5 hl=2 l= 8 prim: OBJECT :des-ede3-cbc
Поиск алгоритма подписи — еще одна проблема. Я думаю , что это SHA-1, но расшифрованное сообщение включает в себя множество подписей сертификатов, и я не уверен, что это за сообщение.
$ openssl smime -decrypt -in smime.eml -recip me.crt -inkey me.key | \
openssl smime -pk7out | openssl asn1parse
…
30:d=5 hl=2 l= 5 prim: OBJECT :sha1
Хотя на самом деле вопрос касается симметричного и хэш-алгоритма, используемого для шифрования данных сообщения, параметры самого сертификата (который содержит открытый ключ, используемый для шифрования симметричного ключа, который, в свою очередь, используется для работы с данными) выбирается во время генерации ключа. Я видел это в действии при создании новой пары личных ключей в StartSSL ; веб-интерфейс запрашивает размер ключа RSA и алгоритм подписи, который я хочу использовать, а также предупреждение о том, что выбор SHA-1 оставит вас с сертификатом, несовместимым с некоторыми системами.
Что бы это ни стоило, мой личный сертификат использует 2048-битный RSA и алгоритм подписи SHA-1, который, как я обнаружил, хорошо работает в нескольких различных системах, включая OS X Mail.app, iOS Mail и Outlook 2007.
Даниэль
bmike
не2умный
котцак
*.p7s
если вы получаете зашифрованное сообщение, где ваш клиент не настроен должным образом для его расшифровки.