Надувной замок (криптография)

Интерфейс программирования криптографических приложений

Надувной замок
Разработчик(и)Легион надувного замка Inc.
Стабильный релиз(ы) [±]
Ява1.77 / 13 ноября 2023 г. ; 11 месяцев назад [1] ( 2023-11-13 )
Java LTSBC-LJA 2.73.5 / 1 марта 2024 г. ; 7 месяцев назад [2] ( 2024-03-01 )
Java FIPSBC-FJA 1.0.2.4 / 28 сентября 2023 г. ; 12 месяцев назад [3] ( 2023-09-28 )
С#2.3.0 / 5 февраля 2024 г. ; 8 месяцев назад [4] ( 2024-02-05 )
C# FIPSBC-FNA 1.0.2 / 28 февраля 2023 г. ; 19 месяцев назад [5] ( 2023-02-28 )
Репозиторийgithub.com/bcgit/
Написано вC# и Java
Платформа.NET Framework и Java SE
Тип API криптографии
ЛицензияЛицензия Массачусетского технологического института [6]
Веб-сайтbouncycastle.org

Bouncy Castle — это набор API, используемых для внедрения криптографии в компьютерные программы. Он включает API для языков программирования Java и C# . API поддерживаются зарегистрированной австралийской благотворительной организацией : Legion of the Bouncy Castle Inc.

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

История

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

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

Некоторые ключевые особенности проекта:

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

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

Архитектура

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

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

Поставщик, совместимый с JCE, построен на низкоуровневых API. Исходный код поставщика JCE является примером того, как реализовать многие «распространенные» проблемы криптографии с использованием низкоуровневого API. Многие проекты были созданы с использованием поставщика JCE, включая Open Source Certificate Authority EJBCA .

Сертифицированные релизы

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

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

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

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

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

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

Ссылки

  1. ^ "Release Notes - bouncycastle.org". 13 ноября 2023 г. Получено 18 ноября 2023 г.
  2. ^ "Ресурсы Java LTS - bouncycastle.org". 1 марта 2024 г. Получено 31 марта 2024 г.
  3. ^ "Ресурсы Java FIPS - bouncycastle.org". 28 сентября 2023 г. Получено 29 сентября 2022 г.
  4. ^ "The Legion of the Bouncy Castle C# Cryptography APIs". 5 февраля 2024 г. Получено 6 февраля 2024 г.
  5. ^ "Ресурсы C# .NET FIPS - bouncycastle.org". 28 февраля 2023 г. Получено 28 февраля 2023 г.
  6. ^ "Надувной замок - ЛИЦЕНЗИЯ". bouncycastle.org . Легион Надувного замка.
  7. ^ "Разработка ПО с открытым исходным кодом и устойчивое развитие: взгляд на проект Bouncy Castle" (PDF) . Linux Foundation Collaboration Summit, 2016. Архивировано из оригинала (PDF) 29 августа 2017 г.
  8. ^ "Australian Charities and Non-For-Profits Commission Register" . Получено 6 июля 2019 г. .
  9. ^ Реймер, Хельмут; Полманн, Норберт; Шнайдер, Вольфганг, ред. (2014). ISSE 2014. Безопасность электронных бизнес-процессов (PDF) . Висбаден: Springer Fachmedien Wiesbaden. п. 205. дои : 10.1007/978-3-658-06708-3. ISBN 9783658067076. S2CID  32601495.
  10. ^ "Spongy Castle" . Получено 29 апреля 2013 г. – через Github.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Bouncy_Castle_(криптография)&oldid=1242999410"