Bouncy Castle (криптография) - Bouncy Castle (cryptography)

Надувной Замок
Разработчики)Легион Надувного Замка Inc.
Стабильный выпуск (ы) [±]
Ява1.67 / 1 ноября 2020 г.; 28 дней назад (2020-11-01)[1]
Java FIPSBC-FJA 1.0.2 / 24 августа 2019 г.; 15 месяцев назад (2019-08-24)[2]
C #1.8.8 / 22 сентября 2020 г.; 2 месяца назад (2020-09-22)[3]
C # FIPSBC-FNA 1.0.1 / 28 декабря 2016 г.; 3 года назад (2016-12-28)[4]
Репозиторийgithub.com/ bcgit/
Написано вC # и Ява
Платформа.NET Framework и Java SE
ТипКриптография API
ЛицензияЛицензия MIT[5]
Интернет сайтнадувной замок.org

Надувной Замок это собрание API используется в криптография. Он включает API-интерфейсы как для Ява и C # языки программирования. API-интерфейсы поддерживаются зарегистрированным Австралийский благотворительная организация: Легион Надувного Замка Inc.

Bouncy Castle имеет австралийское происхождение, поэтому американские ограничения на экспорт криптографии из США не относятся к нему.

История

Bouncy Castle начался, когда два коллеги устали заново изобретать набор криптографических библиотек каждый раз, когда они меняли работу, работая на стороне сервера. Java SE. Один из разработчиков работал в Java ME (J2ME в то время) разработка как хобби и соображение дизайна заключалась в том, чтобы включить в библиотеку наибольший диапазон виртуальных машин Java, в том числе на J2ME. Это соображение дизайна привело к архитектуре, которая существует в Надувном замке.[6]

Проект, основанный в мае 2000 года, изначально был написан только на Java, но позже в 2004 году был добавлен C # API. Исходный Java API состоял примерно из 27 000 строк кода, включая тестовый код, и обеспечивал поддержку J2ME, a JCE /JCA провайдер и базовый X.509 генерация сертификата. Для сравнения, версия 1.53 состоит из 390 640 строк кода, включая тестовый код. Он поддерживает ту же функциональность, что и исходная версия, но с большим количеством алгоритмов, а также PKCS # 10, PKCS # 12, CMS, S / MIME, OpenPGP, DTLS, TLS, OCSP, TSP, CMP, CRMF, DVCS, ДЕЙН, стандартное восточное время и сертификаты атрибутов. C # API составляет около 145 000 строк кода и поддерживает большую часть того, что делает Java API.

Некоторые ключевые свойства проекта:

  • Сильный упор на соответствие стандартам и адаптируемость.
  • К общедоступным средствам поддержки относятся средство отслеживания проблем, список рассылки разработчиков и вики-страницы, доступные на веб-сайте.
  • Коммерческая поддержка предоставляется в рамках ресурсов для соответствующего API, перечисленных на веб-сайте Bouncy Castle.

18 октября 2013 года некоммерческая ассоциация Legion of the Bouncy Castle Inc. была основана в штате Виктория, Австралия, основными разработчиками и другими лицами, чтобы взять на себя ответственность за проект и поддержать текущую разработку API. Ассоциация была признана австралийской благотворительной организацией с целью продвижения в образовании и целью, приносящей пользу обществу. Австралийская комиссия по благотворительным и некоммерческим организациям 7 ноября 2013 г.[7] 29 ноября 2013 г. ассоциация получила разрешение на сбор средств для поддержки своих целей. По делам потребителей Виктория.

Архитектура

Архитектура Bouncy Castle состоит из двух основных компонентов, которые поддерживают базовые криптографические возможности. Они известны как «облегченный» API, а Расширение криптографии Java (JCE) провайдер. Дополнительные компоненты, созданные на основе поставщика JCE, поддерживают дополнительные функции, такие как PGP поддерживать, S / MIME, так далее.

Низкоуровневый, или «легкий», API - это набор API, реализующих все лежащие в основе криптографические алгоритмы. API-интерфейсы были разработаны так, чтобы быть достаточно простыми для использования в случае необходимости, но обеспечивали базовые строительные блоки для поставщика JCE. Намерение состоит в том, чтобы использовать низкоуровневый API в устройствах с ограниченной памятью (JavaME) или когда простой доступ к библиотекам JCE невозможен (например, распространение в апплет ). Поскольку облегченный API - это просто код Java, виртуальная машина Java (JVM) не накладывает никаких ограничений на работу кода, и в ранние времена истории Bouncy Castle это был единственный способ разработать надежную криптографию, которая была не нарушены файлами политики юрисдикции, которые не позволяли поставщикам JCE выполнять «сильное» шифрование.

JCE-совместимый провайдер построен на низкоуровневых API. Таким образом, исходный код поставщика JCE является примером того, как реализовать многие из «общих» криптографических проблем с использованием низкоуровневого API. Многие проекты были созданы с использованием поставщика JCE, включая центр сертификации с открытым исходным кодом. EJBCA.

Сертифицированные выпуски

Выпуски C # и Java сейчас[когда? ] имеют FIPS 140-2 Также сертифицированные стримы уровня 1. Они отличаются от обычных выпусков тем, что, хотя модули разработаны аналогично обычным выпускам, низкоуровневые API-интерфейсы сильно отличаются - в основном для поддержки контроля, требуемого FIPS при использовании алгоритма. В случае уровня JCE Java API поставщик по-прежнему в значительной степени заменяет обычный выпуск. Первые выпуски, сертифицированные FIPS, были доступны в ноябре 2016 года, при этом версии Java был присвоен номер сертификата. 2768 и версии C # назначается номер сертификата 2792.

Губчатый замок

В Android Операционная система, по состоянию на начало 2014 года, включает настроенную версию Bouncy Castle.[8] Из-за конфликтов имен классов это не позволяет приложениям Android включать и использовать официальный выпуск Bouncy Castle как есть. Сторонний проект под названием Губчатый замок распространяет переименованную версию библиотеки для решения этой проблемы.[9]

Полосатый Замок

Первоначально предполагалась версия FIPS 140-2 Губчатый замок тоже можно было сделать. Из-за обработки файлов DEX Android выяснилось, что для целей FIPS провайдер должен быть установлен на устройстве отдельно от приложения. Версия FIPS 140-2 для Android теперь называется Полосатый Замок и упакован под org.stripycastle. Это было необходимо, чтобы избежать конфликтов с версией Bouncy Castle для Android, а также конфликтов для приложений, которые могут использовать Spongy Castle и не требуют сервисов, сертифицированных FIPS 140-2.

Смотрите также

Рекомендации

  1. ^ «Примечания к выпуску - bouncycastle.org». 1 ноября 2020 г.. Получено 1 ноября 2020.
  2. ^ "Ресурсы Java FIPS - bouncycastle.org". 24 августа 2019 г.. Получено 29 августа 2019.
  3. ^ "Легион надувного замка C # Cryptography API". 22 сентября 2020 г.. Получено 1 ноября 2020.
  4. ^ "Ресурсы C # .NET FIPS - bouncycastle.org". 11 ноября 2016 г.. Получено 28 августа 2017.
  5. ^ «Надувной Замок - ЛИЦЕНЗИЯ». bouncycastle.org. Легион Надувного Замка.
  6. ^ "Разработка и устойчивость с открытым исходным кодом: взгляд на проект Bouncy Castle" (PDF). Linux Foundation Collaboration Summit, 2016 г. Архивировано с оригинал (PDF) 29 августа 2017 г.
  7. ^ «Регистр австралийской комиссии по благотворительным и некоммерческим организациям». Получено 6 июля 2019.
  8. ^ Реймер, Гельмут; Польманн, Норберт; Шнайдер, Вольфганг, ред. (2014). ISSE 2014 Безопасность электронных бизнес-процессов (PDF). Висбаден: Springer Fachmedien Wiesbaden. п. 205. Дои:10.1007/978-3-658-06708-3. ISBN  9783658067076. S2CID  32601495.
  9. ^ «Губчатый замок». Получено 29 апреля 2013 - через Github.

внешняя ссылка