Extensia Java Cryptography ( abrev. JCE ) este o extensie standard lansată oficial pentru platforma Java și parte a arhitecturii Java Cryptography (JCA). Este un set de pachete care oferă un cadru și implementare a unor astfel de sarcini criptografice precum criptarea și decriptarea datelor, generarea și autentificarea cheilor de control, precum și implementarea algoritmilor de cod de autentificare a mesajelor (MAC) [1] .
Extensia criptografică Java se bazează pe același lucru ca și arhitectura criptografică Java (JCA) și este considerată parte a JCA. Cert este că legile americane interzic exportul anumitor tipuri de software criptografic (în special, criptarea simetrică și dezvoltarea unui material de cheie comun) în afara Statelor Unite și a Canadei, sau permit exportul cu chei trunchiate. Clasele JCA standard conțin numai funcții hash, generatoare de chei și alte funcții care nu fac obiectul acestei restricții și pot fi exportate în siguranță ca parte a platformei Java 2. Cu toate acestea, algoritmii puternici de criptare supuși restricțiilor de export criptografic din SUA trebuie obținuți de la alte surse, deci sunt furnizate ca produs separat - JCE.
Extensia criptografică Java este concepută astfel încât să poată fi conectate alte biblioteci criptografice pentru a oferi noi algoritmi fără probleme [2] .
În acest moment, în JDK 1.2, extensia criptografică vine în trei pachete:
javax.crypto - interfață și clase pentru criptare simetrică
javax.crypto.interfaces - Interfețe de derivare a cheilor Diffie-Hellman
javax.crypto.spec - clase pentru gestionarea cheilor și parametrilor algoritmilor criptografici
La fel ca JCA, JCE nu depinde de implementarea unor algoritmi specifici. Cu SPI, diferite implementări de la diferiți furnizori pot fi integrate simultan în mediul de programare Java. Începând cu versiunea 1.4, Java include JCE și JCA, cu toate acestea, alte implementări pot fi conectate atât static, cât și dinamic, fără probleme.
Extensia criptografică Java oferă următoarele funcționalități:
Extensia criptografică Java are caracteristici de securitate concepute pentru diferite audiențe.
Caracteristicile de securitate JCE încorporate protejează utilizatorul de software rău intenționat (inclusiv viruși), păstrează fișierele utilizatorului și informațiile despre utilizator private și autentifică identitatea fiecărui furnizor de cod. De asemenea, utilizatorul poate depune cereri pentru verificări de securitate atunci când este necesar.
Un dezvoltator poate folosi metode JCE pentru a include caracteristici de securitate în programele lor, inclusiv servicii criptografice și verificări de securitate. JCE vă permite să definiți și să integrați propriile drepturi de acces (controlul accesului la anumite resurse) și implementări ale serviciilor de securitate criptografică. În plus, clasele JCE sunt concepute pentru a gestiona propriile perechi de chei private/private și pentru a certifica cheile publice de la oameni în care dezvoltatorul are încredere.
Instrumentele JCE gestionează depozitul de chei (baza de date de chei și certificate); să genereze semnături digitale pentru fișierele JAR, precum și să verifice autenticitatea acestor semnături și integritatea conținutului semnat; vă permit să creați și să modificați fișiere private care determină securitatea instalării acestora. [2]
Diferitele implementări JCE includ pachetul Cryptix JCE, pachetul Bouncy Castle și pachetul IAIK JCE.
Pachetul Cryptix JCE este cea mai faimoasă dintre extensiile gratuite. Lucrările la el au început în 1995. A fost prima bibliotecă criptografică disponibilă pentru Java. Atunci criptografia nu a fost disponibilă pe scară largă, iar acest proiect a jucat un rol important în protejarea informațiilor la dezvoltarea programelor pe platforma Java. Cea mai recentă versiune a Cryptix a fost lansată pe 28 aprilie 2005. În același an, suportul pentru Cryptix a fost renunțat.
Pachetul Cryptix JCE include:
La fel ca Cryptix JCE, pachetul Bouncy Castle este gratuit. Prima lansare oficială a Bouncy Castle a apărut în mai 2000 și conținea aproximativ 27.000 de linii de cod. Proiectul a crescut constant, iar până în 2012 codul Bouncy Castle pentru Java era de peste 300.000 de linii [1] .
Include
și are următoarele proprietăți
Un pachet comercial implementat de Institutul pentru Prelucrarea și Comunicarea Informației Aplicate (IAIK) al Universității de Tehnologie din Graz. [patru]
Următorul exemplu arată o implementare a criptării matricei de octeți folosind algoritmul AES. Instrumentele pachetului BouncyCastle au fost folosite pentru a scrie programul. [5]
BufferedBlockCipher cipher = nou PaddedBufferedBlockCipher ( nou CBCBlockCipher ( nou AESFastEngine () ) ); SecureRandom srr = nou SecureRandom (); octet [] AESkey = octet nou [ 16 ] ; srr . nextBytes ( AESkey ); octet [] AESinitV = octet nou [ 16 ] ; srr . nextBytes ( AESinitV ); ParametersWithIV piv = new ParametersWithIV ( new KeyParameter ( AESkey ), AESinitV ); cifru . init ( adevărat , piv ); octet [] rezultat = octet nou [ cifrare . getOutputSize ( toEncrypt . length ) ] ; int len = cipher . processBytes ( toEncrypt , 0 , toEncrypt . lungime , rezultat , 0 ); încercați { cipher . doFinal ( rezultat , len ); } catch ( CryptoException ce ) { rezultat = "Eroare de cifrare" . getBytes (); ce . printStackTrace (); }