О КРИПТОГРАФИЧЕСКОЙ БИБЛИОТЕКЕ 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).