2008-11-18 5 views
8

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

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

Я использую MS Outlook в корпоративной среде, и я предполагаю, что когда пользователь нажимает «Опубликовать в GAL ...» в меню «Инструменты» -> «Параметры» -> «Безопасность», это опубликует их PUBLIC KEY в глобальном списке адресов (GAL).

Так что я думаю, что мне нужен способ подключения к серверу Exchange, который GAL включен с моего сервера UNIX. Тогда мне нужно будет получить получателей PUBLIC KEY. Затем я мог зашифровать электронное письмо с помощью PUBLIC KEY. Это зашифровало бы электронное письмо и разрешало бы кому-то с получателями ЧАСТНОГО КЛЮЧА читать электронную почту? Тогда я отправил бы электронное письмо. Но, о чем я не уверен, заключается в том, как зашифровать электронную почту, используя только получателей PUBLIC KEY (без KEYS на стороне UNIX) таким образом, чтобы MS Outlook мог читать электронную почту, когда получатель ее получил?

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

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

Благодаря

ответ

4

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

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

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

Я не знаю о поддержке PGP в Outlook или ничего о Outlook.

2

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

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

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

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

+0

Спасибо за ответы. У меня определенно есть чему поучиться на стороне шифрования. По крайней мере, теперь у меня будет место для начала работы. – 2008-11-20 16:52:05

1

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

5

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

Типичное шифрование ИПК является:

cryptoAlgorithm(plaintext, public key) = ciphertext 

cryptoAlgorithm(ciphertext, private key) = plaintext 

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

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

GAL Сертификат хранения

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

S/MIME & PGP

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

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

Общие Microsoftyness

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

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

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

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

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

Смежные вопросы