Криптографічне розширення Java (англ. Java Cryptography Extension, скор. JCE) — офіційно випущене стандартне розширення для платформи Java і частина Java Cryptography Architecture (JCA). Являє собою набір пакетів, який забезпечує фреймворк і реалізацію таких криптографічних завдань, як шифрування і дешифрування даних, генерація та перевірка на справжність ключів керування, а також реалізацію та Message Authentication Code (MAC) алгоритмів.
Криптографічне розширення Java засноване на тому ж, що і криптографічний архітектура Java (JCA) і розглядається як частина JCA. Справа в тому, що американські закони [en] (зокрема симетричного шифрування і вироблення загального ключового матеріалу) за межі США і Канади або дозволяють експорт з урізаними ключами. Стандартні класи JCA містять тільки хеш-функції, генератори ключів та інші функції, які не потрапляють під це обмеження, і можуть бути спокійно експортовані в складі платформи Java 2. Однак сильні алгоритми шифрування, які потрапляють під експортні обмеження на криптографію в США, повинні бути отримані з інших джерел, тому їх постачається у вигляді окремого продукту - JCE.
Криптографічне розширення Java розроблено таким чином, щоб інші криптографічні бібліотеки могли бути підключені для надання нових алгоритмів без проблем.
Складові в JDK 1.2
На даний момент в JDK 1.2 криптографічне розширення поставляється в трьох пакетах:
- javax.crypto — інтерфейс і класи для симетричного шифрування
- javax.crypto.interfaces — інтерфейси засобів вироблення ключів для алгоритму Діффі-Гелмана
- javax.crypto.spec — класи для управління ключами і параметрами криптографічних алгоритмів
Функціональність
Як і JCA, JCE не залежить від реалізації конкретних алгоритмів. Завдяки SPI різні реалізації від різних виробників можуть бути одночасно інтегровані в середовищі програмування Java. Починаючи з версії 1.4, Java включає в себе JCE і JCA, проте інші реалізації так само без будь-яких проблем можуть бути підключені як статично, так і динамічно.
Криптографічне розширення Java пропонує наступні функціональні можливості:
Шифр — криптографічні алгоритми (симетричні і асиметричні) для шифрування, блокові і потокові шифри
- Управління ключами — Класи KeyGenerator для генерації ключів, KeyAgreement для безпечного обміну ключами й SecretKeyFactory для поділу закритого та відкритого ключів
- Перевірка на справжність кодів
- Створення безпечних об'єктів і цифрових підписів
Аудиторія JCE
У криптографічного розширення Java є функції безпеки, призначені для різних аудиторій
Користувачі
Вбудовані функції безпеки JCE захищають користувача від зловмисних програм (включаючи віруси), зберігають конфіденційність файлів користувача та інформації про користувача, перевіряють справжність особистості кожного постачальника коду. Користувач так само може піддати додатки перевірці на безпеку, коли йому це необхідно.
Розробники
Розробник може використовувати методи JCE, щоб включити функції безпеки в свої програми, в тому числі криптографічні служби та перевірку безпеки. JCE дозволяє визначити та інтегрувати свої власні права доступу (контроль доступу до певних ресурсів) і реалізації криптографічних служб безпеки. Крім того, класи JCE призначені для управління власними приватними парами ключів та сертифікації відкритих ключів від людей, яким довіряє розробник.
Системні адміністратори, розробники і користувачі
Інструменти JCE керують сховищем ключів (база даних ключів і сертифікатів); генерують цифрові підписи для JAR-файлів, а також перевіряють достовірність таких підписів і цілісність підписаного вмісту; створюють і змінюють приватні файли, які визначають безпеку їх встановлення.
Відомі реалізації JCE
Серед різних реалізацій JCE можна виділити пакет Cryptix JCE, пакет Bouncy Castle і пакет IAIK JCE.
Cryptix JCE
Пакет Cryptix JCE є найвідомішим з безкоштовних розширень. Робота над ним розпочалася у 1995 році. Це була перша доступна криптографічна бібліотека для Java. Тоді криптографія не мала широкої доступності, і даний проект грав важливу роль у захисті інформації при розробці програм на Java платформі. Остання версія Cryptix була випущена 28 квітня 2005 року. У тому ж році підтримка Cryptix була припинена.
Пакет Cryptix JCE включає в себе:
- Шифри Blowfish, CAST5, DES, IDEA, MARS, RC2, RC4, RC6, Rijndael, Serpent, SKIPJACK, Square, TripleDES, Twofish.
- Протоколи обміну ключами Діффі-Гелмана
- Методи шифрування CBC, ECB, OFB
- Хеш-функції — MD2, MD4, MD5, RIPEMD-128, RIPEMD-160, SHA-0 І SHA-1, Tiger
- MAC-коди — HMAC-MD2, HMAC-MD4, HMAC-MD5, HMAC-RIPEMD-128, HMAC-RIPEMD-160, HMAC-SHA-0, HMAC-SHA-1, HMAC-Tiger
- Підписи — RawDSA, RSA
- Асиметричні шифри — ElGamal, RSA
Bouncy Castle
Так само як і Cryptix JCE, пакет Bouncy Castle є безкоштовним. Перший офіційний реліз Bouncy Castle з'явився в травні 2000 року і був довжиною близько 27 000 рядків. Проект постійно зростав, і до 2012 року код Bouncy Castle для Java становив понад 300 000 рядків.
Він включає в себе:
- реалізацію протоколу обміну Діффі-Геллмана, включаючи версію алгоритму з еліптичними кривими.
- обчислення безключових хеш - функції повідомлень — MD2, MD4, MD5, Tiger, RIPEMD, SHA
- обчислення ключових хеш-функції повідомлень — CMAC, HMAC
- асиметричне шифрування PKCS 1
- симетричне шифрування з допомогою DES, TripleDES, AES, Blowfish, IDEA, RC2, RC4, RC5, RC6, Twofish, Skipjack і багатьох інших шифрів
- генератори ключів, ключових пар та інших параметрів криптографічних алгоритмів.
- обчислення MAC з використанням будь-якого блокового шифру, обробного текст блоками методом CBC, CFB, OFB
- алгоритми електронного цифрового підпису RSA, DSA, EC-DSA
І має наступні властивості:
- містить криптографічні API для мов Java і C#
- містить провайдер для JCE і JCA
- містить реалізації JCE 1.2.1, реалізовані розробниками самостійно (тобто пакет не містить кодів JCE 1.2.1 від Sun, експорт на який заборонений в США)
- підтримує специфікації ASN.1 кодування об'єктів
- підтримка сертифікатів X. 509 різних версій
- підтримка стандартів Open PGP, OCSP, TSP та ін.
IAIK JCE
Комерційний пакет, реалізований інститутом прикладної обробки інформації (Institute for Applied Information Processing and Communication, IAIK) технологічного університету Граца.
Приклади
Шифрування масиву
У наведеному прикладі показана реалізація шифрування масиву байтів за допомогою алгоритму AES. Для написання програми використовувалися засоби пакета Bouncy Castle.
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(); }
Примітки
- . www.bouncycastle.org. Архів оригіналу за 18 квітня 2018. Процитовано 17 грудня 2016.
- Jason Weiss. Java cryptography extensions : practical guide for programmers. — Morgan Kaufmann Publishers, 2004.
- . Архів оригіналу за 23 квітня 2018. Процитовано 18 квітня 2018.
- . Архів оригіналу за 18 квітня 2018. Процитовано 18 квітня 2018.
- М.С. Зуев, К.Г. Мирошников. .
Посилання
- Java Cryptography Architecture (JCA) Reference Guide [ 28 березня 2018 у Wayback Machine.]
- Завантажити для Java 6 [ 11 квітня 2018 у Wayback Machine.], Java 7 [ 11 квітня 2018 у Wayback Machine.], і Java 8 [ 11 квітня 2018 у Wayback Machine.].
- IAIK-JCE [ 18 квітня 2018 у Wayback Machine.]
Дивись також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Kriptografichne rozshirennya Java angl Java Cryptography Extension skor JCE oficijno vipushene standartne rozshirennya dlya platformi Java i chastina Java Cryptography Architecture JCA Yavlyaye soboyu nabir paketiv yakij zabezpechuye frejmvork i realizaciyu takih kriptografichnih zavdan yak shifruvannya i deshifruvannya danih generaciya ta perevirka na spravzhnist klyuchiv keruvannya a takozh realizaciyu ta Message Authentication Code MAC algoritmiv Kriptografichne rozshirennya Java zasnovane na tomu zh sho i kriptografichnij arhitektura Java JCA i rozglyadayetsya yak chastina JCA Sprava v tomu sho amerikanski zakoni en zokrema simetrichnogo shifruvannya i viroblennya zagalnogo klyuchovogo materialu za mezhi SShA i Kanadi abo dozvolyayut eksport z urizanimi klyuchami Standartni klasi JCA mistyat tilki hesh funkciyi generatori klyuchiv ta inshi funkciyi yaki ne potraplyayut pid ce obmezhennya i mozhut buti spokijno eksportovani v skladi platformi Java 2 Odnak silni algoritmi shifruvannya yaki potraplyayut pid eksportni obmezhennya na kriptografiyu v SShA povinni buti otrimani z inshih dzherel tomu yih postachayetsya u viglyadi okremogo produktu JCE Kriptografichne rozshirennya Java rozrobleno takim chinom shob inshi kriptografichni biblioteki mogli buti pidklyucheni dlya nadannya novih algoritmiv bez problem Skladovi v JDK 1 2Na danij moment v JDK 1 2 kriptografichne rozshirennya postavlyayetsya v troh paketah javax crypto interfejs i klasi dlya simetrichnogo shifruvannya javax crypto interfaces interfejsi zasobiv viroblennya klyuchiv dlya algoritmu Diffi Gelmana javax crypto spec klasi dlya upravlinnya klyuchami i parametrami kriptografichnih algoritmivFunkcionalnistYak i JCA JCE ne zalezhit vid realizaciyi konkretnih algoritmiv Zavdyaki SPI rizni realizaciyi vid riznih virobnikiv mozhut buti odnochasno integrovani v seredovishi programuvannya Java Pochinayuchi z versiyi 1 4 Java vklyuchaye v sebe JCE i JCA prote inshi realizaciyi tak samo bez bud yakih problem mozhut buti pidklyucheni yak statichno tak i dinamichno Kriptografichne rozshirennya Java proponuye nastupni funkcionalni mozhlivosti Shifr kriptografichni algoritmi simetrichni i asimetrichni dlya shifruvannya blokovi i potokovi shifri Upravlinnya klyuchami Klasi KeyGenerator dlya generaciyi klyuchiv KeyAgreement dlya bezpechnogo obminu klyuchami j SecretKeyFactory dlya podilu zakritogo ta vidkritogo klyuchiv Perevirka na spravzhnist kodiv Stvorennya bezpechnih ob yektiv i cifrovih pidpisivAuditoriya JCEU kriptografichnogo rozshirennya Java ye funkciyi bezpeki priznacheni dlya riznih auditorij Koristuvachi Vbudovani funkciyi bezpeki JCE zahishayut koristuvacha vid zlovmisnih program vklyuchayuchi virusi zberigayut konfidencijnist fajliv koristuvacha ta informaciyi pro koristuvacha pereviryayut spravzhnist osobistosti kozhnogo postachalnika kodu Koristuvach tak samo mozhe piddati dodatki perevirci na bezpeku koli jomu ce neobhidno Rozrobniki Rozrobnik mozhe vikoristovuvati metodi JCE shob vklyuchiti funkciyi bezpeki v svoyi programi v tomu chisli kriptografichni sluzhbi ta perevirku bezpeki JCE dozvolyaye viznachiti ta integruvati svoyi vlasni prava dostupu kontrol dostupu do pevnih resursiv i realizaciyi kriptografichnih sluzhb bezpeki Krim togo klasi JCE priznacheni dlya upravlinnya vlasnimi privatnimi parami klyuchiv ta sertifikaciyi vidkritih klyuchiv vid lyudej yakim doviryaye rozrobnik Sistemni administratori rozrobniki i koristuvachi Instrumenti JCE keruyut shovishem klyuchiv baza danih klyuchiv i sertifikativ generuyut cifrovi pidpisi dlya JAR fajliv a takozh pereviryayut dostovirnist takih pidpisiv i cilisnist pidpisanogo vmistu stvoryuyut i zminyuyut privatni fajli yaki viznachayut bezpeku yih vstanovlennya Vidomi realizaciyi JCESered riznih realizacij JCE mozhna vidiliti paket Cryptix JCE paket Bouncy Castle i paket IAIK JCE Cryptix JCE Paket Cryptix JCE ye najvidomishim z bezkoshtovnih rozshiren Robota nad nim rozpochalasya u 1995 roci Ce bula persha dostupna kriptografichna biblioteka dlya Java Todi kriptografiya ne mala shirokoyi dostupnosti i danij proekt grav vazhlivu rol u zahisti informaciyi pri rozrobci program na Java platformi Ostannya versiya Cryptix bula vipushena 28 kvitnya 2005 roku U tomu zh roci pidtrimka Cryptix bula pripinena Paket Cryptix JCE vklyuchaye v sebe Shifri Blowfish CAST5 DES IDEA MARS RC2 RC4 RC6 Rijndael Serpent SKIPJACK Square TripleDES Twofish Protokoli obminu klyuchami Diffi Gelmana Metodi shifruvannya CBC ECB OFB Hesh funkciyi MD2 MD4 MD5 RIPEMD 128 RIPEMD 160 SHA 0 I SHA 1 Tiger MAC kodi HMAC MD2 HMAC MD4 HMAC MD5 HMAC RIPEMD 128 HMAC RIPEMD 160 HMAC SHA 0 HMAC SHA 1 HMAC Tiger Pidpisi RawDSA RSA Asimetrichni shifri ElGamal RSABouncy Castle Tak samo yak i Cryptix JCE paket Bouncy Castle ye bezkoshtovnim Pershij oficijnij reliz Bouncy Castle z yavivsya v travni 2000 roku i buv dovzhinoyu blizko 27 000 ryadkiv Proekt postijno zrostav i do 2012 roku kod Bouncy Castle dlya Java stanoviv ponad 300 000 ryadkiv Vin vklyuchaye v sebe realizaciyu protokolu obminu Diffi Gellmana vklyuchayuchi versiyu algoritmu z eliptichnimi krivimi obchislennya bezklyuchovih hesh funkciyi povidomlen MD2 MD4 MD5 Tiger RIPEMD SHA obchislennya klyuchovih hesh funkciyi povidomlen CMAC HMAC asimetrichne shifruvannya PKCS 1 simetrichne shifruvannya z dopomogoyu DES TripleDES AES Blowfish IDEA RC2 RC4 RC5 RC6 Twofish Skipjack i bagatoh inshih shifriv generatori klyuchiv klyuchovih par ta inshih parametriv kriptografichnih algoritmiv obchislennya MAC z vikoristannyam bud yakogo blokovogo shifru obrobnogo tekst blokami metodom CBC CFB OFB algoritmi elektronnogo cifrovogo pidpisu RSA DSA EC DSA I maye nastupni vlastivosti mistit kriptografichni API dlya mov Java i C mistit provajder dlya JCE i JCA mistit realizaciyi JCE 1 2 1 realizovani rozrobnikami samostijno tobto paket ne mistit kodiv JCE 1 2 1 vid Sun eksport na yakij zaboronenij v SShA pidtrimuye specifikaciyi ASN 1 koduvannya ob yektiv pidtrimka sertifikativ X 509 riznih versij pidtrimka standartiv Open PGP OCSP TSP ta in IAIK JCE Komercijnij paket realizovanij institutom prikladnoyi obrobki informaciyi Institute for Applied Information Processing and Communication IAIK tehnologichnogo universitetu Graca PrikladiShifruvannya masivu U navedenomu prikladi pokazana realizaciya shifruvannya masivu bajtiv za dopomogoyu algoritmu AES Dlya napisannya programi vikoristovuvalisya zasobi paketa Bouncy Castle 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 Primitki www bouncycastle org Arhiv originalu za 18 kvitnya 2018 Procitovano 17 grudnya 2016 Jason Weiss Java cryptography extensions practical guide for programmers Morgan Kaufmann Publishers 2004 Arhiv originalu za 23 kvitnya 2018 Procitovano 18 kvitnya 2018 Arhiv originalu za 18 kvitnya 2018 Procitovano 18 kvitnya 2018 M S Zuev K G Miroshnikov PosilannyaJava Cryptography Architecture JCA Reference Guide 28 bereznya 2018 u Wayback Machine Zavantazhiti dlya Java 6 11 kvitnya 2018 u Wayback Machine Java 7 11 kvitnya 2018 u Wayback Machine i Java 8 11 kvitnya 2018 u Wayback Machine IAIK JCE 18 kvitnya 2018 u Wayback Machine Divis takozhBouncy Castle Komp yuterna bezpeka