Научная статья на тему 'О криптографической библиотеке bouncy Castle'

О криптографической библиотеке bouncy Castle Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
736
189
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «О криптографической библиотеке bouncy Castle»

О КРИПТОГРАФИЧЕСКОЙ БИБЛИОТЕКЕ BOUNCY CASTLE

М.С. Зуев, К.Г. Мирошников

Тамбовский государственный университет имени Г.Р. Державина, Тамбов, Россия

В данной статье приводится обзор возможностей одного из пакетов криптографических алгоритмов,

предназначенных для java-разработчиков. Наиболее известным таким пакетом является Sun JCE, предоставляющий удобный API для выполнения различных криптографических преобразований. Однако, в связи с законами, регулирующими экспорт технологий из США, пакет Sun JCE нельзя загружать и использовать людям, не проживающим на территории США или Канады. Поэтому этот пакет не входит в стандартную поставку Java.

В связи с этим сторонними разработчиками были разработаны аналогичные криптографические пакеты, среди которых часть коммерческих (такие как IAIK JCE, Digt Trusted Java и др.), а другая часть - бесплатные. Одним из самых известных бесплатных решений являлся пакет Cryptix JCE, но его поддержка прекращена с 2005 г. Другим решением является пакет Bouncy Castle, совместимый с новейшими поставками JDK и обладающий следующими основными характеристиками:

- содержит криптографические API для языков Java и C#;

- содержит провайдер для JCE и JCA;

- содержит реализации JCE 1.2.1,

реализованные разработчиками

самостоятельно

(т. е. пакет не содержит кодов JCE 1.2.1 от Sun, следовательно, на него лицензии Sun не распространяются);

- поддерживает спецификации ASN.1 кодирования объектов;

- поддержка сертификатов X.509 различных версий;

- поддержка стандартов Open PGP, OCSP, TSP и др.

Лицензионное соглашение для данного пакета разрешает практически любые действия, включающие передачу, продажу, модификацию, публикацию, и др., следовательно, разработчик ПО может свободно использовать все его возможности. Реализации большого количества алгоритмов и протоколов, включая криптоалгоритмы, описанные в документах ГОСТ, делают этот пакет интересным как для разработчиков криптографического ПО, так и для преподавателей по дисциплинам

«Криптографическая защита информации» и «Программирование на Java» на специальности «Организация и технология защиты информации».

Библиотека Bouncycastle включает в себя пакеты:

- org.bouncycastle.jce - пакет утилит, использующихся с JCE;

- org.bouncycastle.openssl - пакет, включающий классы для работы с PEM OpenSSL-файлами;

- org.bouncycastle.asn1 - пакет, использующийся для работы с протоколом ASN.1;

- org.bouncycastle.crypto - пакет, содержащий основные криптографические алгоритмы;

- org.bouncycastle.x509 - пакет, используемый для поддержки X.509-сертификатов.

Пакет org.bouncycastle.crypto - основной пакет, содержащий реализации различных криптографических алгоритмов. Он содержит следующие подпакеты:

- org.bouncycastle.crypto.agreement -пакет, содержащий реализацию протокола Диффи-Хеллмана. Включает версию алгоритма с эллиптическими кривыми;

- org.bouncycastle.crypto.digests - пакет, содержащий основные классы для вычисления бесключевых хэш-функций сообщений. Включает алгоритмы ГОСТ 34.11-94, MD2, MD4, MD5, Tiger, RIPEMD, SHA разных длин свертки и др.;

- org.bouncycastle.crypto.engines - пакет, включающий классы, выполняющие симметричное шифрование. Классы этого пакета позволяют выполнить шифрование массива байтов по алгоритмам ГОСТ 2814789, DES, TripleDES, AES, Blowfish, IDEA, RC2, RC4, RC5, RC6, Twofish, Skipjack и мн. др.;

- org.bouncycastle.crypto.modes - пакет, содержащий классы, представляющие способы обработки текста симметричным шифром (например, CBC, CFB, OFB и др.);

- org.bouncycastle.crypto.paddings - пакет, предоставляющий различные способы дополнения блоков для симметричных блочных шифров;

- org.bouncycastle.crypto.params - пакет, классы которого используются для хранения параметров шифров и генераторов;

- org.bouncycastle.crypto.signers - пакет, предоставляющий алгоритмы ЭЦП сообщений. Включает алгоритмы ГОСТ 34.10-91, ГОСТ 34.10-2001, RSA, DSA, EC-DSA и др.;

- org.bouncycastle.crypto.tls - пакет, обеспечивающий API для TLS;

- org.bouncycastle.crypto.generators -пакет, включающий генераторы ключей, ключевых пар и других параметров криптографических алгоритмов;

- org.bouncycastle.crypto.macs - пакет, включающий алгоритмы вычисления ключевых хэш-функций сообщений. Содержит алгоритмы ГОСТ 28147-89 в режиме выработки имитовставки, СМАС, НМАС, а также алгоритм вычисления МАС с исполь-зованием любого блочного шифра, обрабатывающего текст блоками методом СВС или CFB;

- org.bouncycastle.crypto.encodings -пакет, включающий алгоритмы кодирования информации, предназначенной для обработки асимметричными алгоритмами (например, алгоритм PKCS 1).

i Надоели баннеры? Вы всегда можете отключить рекламу.