Java Cryptography ExtensionКриптографическое расширение Java (англ. Java Cryptography Extension, сокр. JCE) — официально выпущенное стандартное расширение для платформы Java и часть Java Cryptography Architecture (JCA). Представляет собой набор пакетов, который обеспечивает фреймворк и реализацию таких криптографических задач, как шифрование и расшифрование данных, генерация и проверка на подлинность ключей управления, а также реализацию алгоритмов Message Authentication Code (MAC)[1]. Криптографическое расширение Java основано на том же, что и криптографическая архитектура Java (JCA), и рассматривается как часть JCA. Дело в том, что американские законы запрещают экспорт некоторых видов криптографического программного обеспечения (в частности, симметричное шифрование и выработку общего ключевого материала) за пределы США и Канады или разрешают экспорт с урезанными ключами. Стандартные классы JCA содержат только хеш-функции, генераторы ключей и другие функции, которые не попадают под данное ограничение и могут быть спокойно экспортированы в составе платформы Java 2. Однако стойкие алгоритмы шифрования, попадающие под экспортные ограничения на криптографию в США, должны быть получены из других источников, поэтому их поставляют в виде отдельного продукта - JCE. Криптографическое расширение Java разработано таким образом, чтобы другие криптографические библиотеки могли быть подключены для предоставления новых алгоритмов без проблем[2]. Составляющие в JDK 1.2На данный момент в JDK 1.2 криптографическое расширение поставляется в трех пакетах: javax.crypto — интерфейс и классы для симметричного шифрования javax.crypto.interfaces — интерфейсы средств выработки ключей для алгоритма Диффи-Хелмана javax.crypto.spec — классы для управления ключами и параметрами криптографических алгоритмов ФункциональностьКак и JCA, JCE не зависит от реализации конкретных алгоритмов. Благодаря SPI различные реализации от разных производителей могут быть одновременно интегрированы в среде программирования Java. Начиная с версии 1.4, Java включает в себя JCE и JCA, однако, другие реализации так же без каких-либо проблем могут быть подключены как статически, так и динамически. Криптографическое расширение Java предлагает следующие функциональные возможности:
Аудитория JCEУ криптографического расширения Java есть функции безопасности, предназначенные для различных аудиторий. ПользователиВстроенные функции безопасности JCE защищают пользователя от злонамеренных программ (включая вирусы), сохраняют конфиденциальность пользовательских файлов и информации о пользователе, проверяют подлинность личности каждого поставщика кода. Пользователь также может подвергнуть приложения проверке на безопасность, когда ему это необходимо. РазработчикиРазработчик может использовать методы JCE, чтобы включить функции безопасности в свои программы, в том числе криптографические службы и проверки безопасности. JCE позволяет определить и интегрировать свои собственные права доступа (контроль доступа к определенным ресурсам) и реализации криптографических служб безопасности. Кроме того, классы JCE предназначены для управления собственными приватными/частными парами ключей и сертифицирования открытых ключей от людей, которым доверяет разработчик. Системные администраторы, разработчики и пользователиИнструменты JCE управляют хранилищем ключей (база данных ключей и сертификатов); генерируют цифровые подписи для JAR-файлов, а также проверяют подлинность таких подписей и целостность подписанного содержимого; позволяют создавать и изменять приватные файлы, которые определяют безопасность их установки.[2] Известные реализации JCEСреди различных реализаций JCE можно выделить пакет Cryptix JCE, пакет Bouncy Castle и пакет IAIK JCE. Cryptix JCEПакет Cryptix JCE является самым известным из бесплатных расширений. Работа над ним началась в 1995 году. Это была первая доступная криптографическая библиотека для Java. Тогда криптография не имела широкой доступности, и данный проект играл важную роль в защите информации при разработке программ на Java-платформе. Последняя версия Cryptix была выпущена 28 апреля 2005 года. В том же году поддержка Cryptix была прекращена. Пакет Cryptix JCE включает в себя:
Так же, как и Cryptix JCE, пакет Bouncy Castle является бесплатным. Первый официальный релиз Bouncy Castle появился в мае 2000 года и содержал около 27 000 строк кода. Проект постоянно рос, и к 2012 году код Bouncy Castle для Java составлял более 300 000 строк[1]. Он включает в себя
и обладает следующими свойствами
IAIK JCEКоммерческий пакет, реализованный институтом прикладной обработки информации и связи (Institute for Applied Information Processing and Communication, IAIK) технологического университета Граца.[4] ПримерыШифрование массиваВ следующем примере показана реализация шифрования массива байтов с помощью алгоритма AES. Для написания программы использовались средства пакета BouncyCastle.[5] BufferedBlockCipher cipher =
new PaddedBufferedBlockCipher(
new CBCBlockCipher( new AESFastEngine() )
);
SecureRandom srr = new SecureRandom();
byte[] AESkey = new byte[ 16 ];
srr.nextBytes( AESkey );
byte[] AESinitV = new byte[ 16 ];
srr.nextBytes( AESinitV );
ParametersWithIV piv =
new ParametersWithIV(
new KeyParameter( AESkey ),
AESinitV
);
cipher.init( true, piv );
byte[] result =
new byte[
cipher.getOutputSize( toEncrypt.length )
];
int len =
cipher.processBytes(
toEncrypt,
0,
toEncrypt.length,
result,
0
);
try
{
cipher.doFinal( result, len );
}
catch( CryptoException ce )
{
result = "Cipher error".getBytes();
ce.printStackTrace();
}
Примечания
Ссылки
См. также |
Portal di Ensiklopedia Dunia