Как отправлять зашифрованные письма программно (из автоматизированного процесса) - PullRequest
9 голосов
/ 19 ноября 2008

У меня есть процесс, который выполняется на сервере UNIX (Solaris), который работает ночью и должен иметь возможность отправлять зашифрованные электронные письма.

Мне нужна только часть "шифрования", а не часть цифровой подписи / самоотречения PKI.

Я использую MS Outlook в корпоративной среде и предполагаю, что когда пользователь нажимает «Опубликовать в GAL ...» в меню «Инструменты» -> «Параметры» -> «Безопасность», он публикует свой ОБЩЕСТВЕННЫЙ КЛЮЧ в глобальном списке адресов (GAL). ).

Так что я думаю, что мне нужен способ подключения к серверу Exchange, на котором включен GAL, с моего сервера UNIX. Тогда мне нужно будет получить получателя КЛЮЧ ОТ ОБЩЕСТВЕННОСТИ. Тогда я мог бы зашифровать электронную почту, используя получатель PUBLIC KEY. Это зашифровывает электронную почту и позволяет только кому-то с получателем ЧАСТНЫЙ КЛЮЧ читать письмо, верно? Тогда я бы отправил письмо. Но в чем я не уверен, так это в том, как зашифровать электронную почту, используя только ПУБЛИЧНЫЙ КЛЮЧ получателей (без ключей на стороне UNIX) таким образом, чтобы MS Outlook мог читать электронную почту, когда получатель ее получает?

Будет ли это работать? Кто-нибудь сталкивался с подобной проблемой и нашел решение? Java-код предпочтителен, но любой язык должен начинаться с.

Требуются ли дополнительные сведения, чтобы получить разумный ответ?

Спасибо

Ответы [ 4 ]

6 голосов
/ 31 декабря 2008

Ты логика права.

Типичное шифрование PKI:

cryptoAlgorithm(plaintext, public key) = ciphertext

cryptoAlgorithm(ciphertext, private key) = plaintext

Для некоторых алгоритмов алгоритм cryptoAlgorithm представляет собой одну и ту же процедуру отправки и получения.

Итак ... для каждого получателя вам нужен цифровой сертификат, который будет содержать его открытый ключ.

Хранение сертификата GAL

Я думаю, можно настроить GAL, чтобы пользователи могли публиковать сертификаты. У меня сложилось общее впечатление, что способ настройки и использования GAL зависит от компании.

S / MIME & PGP

Я согласен с постом, что S / MIME - это то, что вы хотите для Outlook.

Также обратите внимание - если ваши пользователи используют Outlook Web, а не клиент Outlook, они не смогут получать зашифрованные электронные письма. По крайней мере, с 2000 года, но я подозреваю, что и 2003 год тоже. Это огромная проблема с юзабилити, и у меня нет хорошего обходного пути.

Общая микробезопасность

У Microsoft есть свой особый способ действий (без шуток ...). Они есть ничем не отличается в мире PKI. Пользовательские сертификаты должны быть четко помечены с возможностью шифрования. Я знаю, что он должен иметь поле KeyUsage KeyEncipherment. И может быть еще одно расширение, требуемое Microsoft. Наличие неправильно отформатированного пользовательского сертификата может означать, что получатель не сможет прочитать почту, когда она прибудет, потому что Outlook не согласится с тем фактом, что почта была зашифрована. Потратьте некоторое время на серьезное интеграционное тестирование и планируйте поработать с множеством групп пользователей. Всякий раз, когда моей команде приходилось интегрироваться с продуктом Microsoft, были неприятные сюрпризы, особенно в отношении того, как настроен сертификат.

Библиотеки и инструменты

Я рекомендую BouncyCastle - я не использовал его, но люди, которым я доверяю, клянутся им. Мне лично понравился инструментарий Phaos, когда мне приходилось писать этот материал, но я устарел. Я знаю, что это стоит серьезных денег и может быть слишком дорого для вашего доллара.

OpenSSL - еще один замечательный инструмент, который полезен не только для SSL. Он отлично подходит для генерации тестовых сертификатов, но я не могу вспомнить, поддерживает ли он также шифрование электронной почты S / MIME.

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

4 голосов
/ 19 ноября 2008

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

Вам понадобится ключ для вашего сервера, только если вы хотите подписать сообщение.

Если вы хотите реализовать Java, я не думаю, что JavaMail поддерживает шифрование "из коробки", но вы можете взглянуть на JavaMail-Crypto (не использовал его сам). Якобы где-то есть интерфейс JNI с GnuPG ... И вы всегда можете запустить PGP или GnuPG с любого языка ...

Я не знаю ни о поддержке PGP в Outlook, ни о чем-либо еще о Outlook.

2 голосов
/ 20 ноября 2008

Вы должны отправить зашифрованную почту в Outlook в формате s / mime. Outlook не поддерживает PGP.

Начните с попытки отправить текстовое сообщение с Java и посмотреть, сможете ли вы получить его в Outlook. Беспокойство по поводу шифрования позже. Используйте библиотеку JavaMail для создания и отправки электронных писем.

Я не знаю, как извлечь ключи из GAL. Вероятно, проще всего начать с экспорта ключа вручную и посмотреть, можно ли с ним работать.

Для создания зашифрованных писем в формате s / mime я рекомендую Bouncy Castle . Bouncy Castle - провайдер криптовалют, который также поддерживает s / mime. (Ищите пакет CMS / Smime). В загруженных источниках должно быть несколько примеров. В прошлом я использовал его для отправки писем широкому кругу почтовых клиентов, включая Outlook, и он работает довольно хорошо. Но приготовьтесь к криптовалюте - это может быть крутой курс обучения!

1 голос
/ 24 ноября 2008

Предостережение, которое не было отмечено ранее, заключается в том, что глобальный список адресов не обязательно на сервере Exchange, и чаще встречается на сервере домена, когда он не работает в автономном режиме. Сертификат будет найден в атрибуте LDAP userCertificate или userSMIMECertificate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...