Создание сообщений OpenPGP на Java с использованием библиотеки FIPS 140-2

В настоящее время я обновляю приложение, которое генерирует сообщения OpenPGP, чтобы оно соответствовало FIPS 140-2. В настоящее время я генерирую сообщения PGP, использующие шифрование RSA/AES-256, которые являются одобренными алгоритмами с использованием BouncyCastle и его провайдера OpenPGP. Я больше не могу использовать BouncyCastly, поскольку он не соответствует требованиям FIPS 140-2, поэтому я смотрю на библиотеку BSAFE из RSA.

Эта библиотека не имеет высокоуровневой абстракции, позволяющей напрямую генерировать сообщение OpenPGP. Кто-нибудь знает библиотеку, которая может использовать существующий поставщик JCE (например, мою библиотеку BSAFE), способную генерировать сообщения OpenPGP? Я действительно хотел бы избежать необходимости реализовывать спецификацию OpenPGP самостоятельно, так как кажется, что это займет довольно много времени. В качестве альтернативы есть какие-либо предложения по другим способам форматирования моих зашифрованных файлов?

Спасибо заранее за любые данные!


person Michael    schedule 13.05.2011    source источник


Ответы (3)


После долгих исследований кажется, что это невозможно сделать без самостоятельной реализации формата OpenPGP. Однако синтаксис криптографических сообщений кажется подходящей заменой.

person Michael    schedule 05.09.2011
comment
Я думаю, что этот вывод неверен. См. мой ответ. - person erickson; 14.09.2011

Между S/MIME (синтаксисом криптографических сообщений) и OpenPGP есть существенные различия.

http://mozilla-enigmail.org/forum/viewtopic.php?t=67

В основном S/MIME обменивается ключами с точки зрения сертификатов (которые должны использовать центр сертификации, ограничены 1024 битами и истекают через 1 год), в то время как OpenPGP использует ключи PGP (можно обмениваться в одноранговой сети или использовать бесплатный сертификат). сервер ключей или разместите свой собственный сервер ключей).

person Duke    schedule 14.09.2011
comment
Иерархия доверия и сеть доверия gpg4win.org/doc/en/gpg4win-compendium_10 .html - person Duke; 14.09.2011

FIPS 140-2 не применяется к таким протоколам, как SSL, PGP, S/MIME или SSH. Это протоколы безопасности, которые используют криптографические алгоритмы, такие как RSA и AES. (Однако коммерческие поставщики криптовалют вряд ли укажут на это различие).

FIPS 140-2 перечисляет утвержденные алгоритмы. В нем также указаны критерии тестирования «криптографических модулей», реализующих эти алгоритмы. Но там ничего не говорится о применении этих алгоритмов.

Таким образом, вы можете использовать поставщика PGP BouncyCastle. Вместо того, чтобы устанавливать Bouncy Castle в качестве криптопровайдера, установите реализацию, сертифицированную по стандарту FIPS 140-2. PGP Bouncy Castle будет использовать предпочтительного поставщика криптографии для своих базовых криптографических алгоритмов. Таким же образом вы можете использовать их поддержку S/MIME.

person erickson    schedule 14.09.2011
comment
Правильно я понимаю, что теоретически я мог бы использовать провайдера BouncyCastle PGP с другим провайдером FIPS 140-2 и при этом соответствовать требованиям. Однако, когда я попытался сделать это, это не сработало, поскольку провайдер BouncyCastle PGP пытался вызвать определенные классы BouncyCastle, которые находятся в JAR-файле bcprov. Если есть способ заставить это работать, это не сразу было очевидно для меня. - person Michael; 15.09.2011
comment
@Майкл - понятно. У нас это работает, но прошло много времени с тех пор, как мы выяснили все проблемы, поэтому я не помню, что это было за все. Я знаю, что у нас не установлен BC в качестве поставщика, но я не уверен, что библиотека поставщика находится вне пути к классам. - person erickson; 16.09.2011