Bouncy Castle (криптография) - Bouncy Castle (cryptography)
Разработчики) | Легион Надувного Замка Inc. | ||||||||
---|---|---|---|---|---|---|---|---|---|
Стабильный выпуск (ы) [±] | |||||||||
| |||||||||
Репозиторий | github | ||||||||
Написано в | C # и Ява | ||||||||
Платформа | .NET Framework и Java SE | ||||||||
Тип | Криптография API | ||||||||
Лицензия | Лицензия MIT[5] | ||||||||
Интернет сайт | надувной замок |
Надувной Замок это собрание 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 г. ассоциация получила разрешение на сбор средств для поддержки своих целей. По делам потребителей Виктория.
Архитектура
Эта секция не цитировать любой источники.Август 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Архитектура 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.
Смотрите также
Рекомендации
- ^ «Примечания к выпуску - bouncycastle.org». 1 ноября 2020 г.. Получено 1 ноября 2020.
- ^ "Ресурсы Java FIPS - bouncycastle.org". 24 августа 2019 г.. Получено 29 августа 2019.
- ^ "Легион надувного замка C # Cryptography API". 22 сентября 2020 г.. Получено 1 ноября 2020.
- ^ "Ресурсы C # .NET FIPS - bouncycastle.org". 11 ноября 2016 г.. Получено 28 августа 2017.
- ^ «Надувной Замок - ЛИЦЕНЗИЯ». bouncycastle.org. Легион Надувного Замка.
- ^ "Разработка и устойчивость с открытым исходным кодом: взгляд на проект Bouncy Castle" (PDF). Linux Foundation Collaboration Summit, 2016 г. Архивировано с оригинал (PDF) 29 августа 2017 г.
- ^ «Регистр австралийской комиссии по благотворительным и некоммерческим организациям». Получено 6 июля 2019.
- ^ Реймер, Гельмут; Польманн, Норберт; Шнайдер, Вольфганг, ред. (2014). ISSE 2014 Безопасность электронных бизнес-процессов (PDF). Висбаден: Springer Fachmedien Wiesbaden. п. 205. Дои:10.1007/978-3-658-06708-3. ISBN 9783658067076. S2CID 32601495.
- ^ «Губчатый замок». Получено 29 апреля 2013 - через Github.