Extensie Java Criptografie

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] .

Componente în JDK 1.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

Funcționalitate

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:

Audiența JCE

Extensia criptografică Java are caracteristici de securitate concepute pentru diferite audiențe.

Utilizatori

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.

Dezvoltatori

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.

Administratori de sistem, dezvoltatori și utilizatori

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]

Implementări notabile ale JCE

Diferitele implementări JCE includ pachetul Cryptix JCE, pachetul Bouncy Castle și pachetul IAIK JCE.

Cryptix 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:

Castelul Bouncy

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

IAIK JCE

Un pachet comercial implementat de Institutul pentru Prelucrarea și Comunicarea Informației Aplicate (IAIK) al Universității de Tehnologie din Graz. [patru]

Exemple

Criptare matrice

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 (); }

Note

  1. ↑ 12 bouncycastle.org . _ www.bouncycastle.org. Consultat la 17 decembrie 2016. Arhivat din original la 18 aprilie 2018.
  2. ↑ 12 Jason Weiss . Extensii de criptare Java: ghid practic pentru programatori. — Morgan Kaufmann Publishers, 2004.
  3. Proiectul Cryptix . Consultat la 19 decembrie 2016. Arhivat din original la 23 aprilie 2018.
  4. Tehnologii sigure ale informației și comunicațiilor . Preluat la 11 martie 2016. Arhivat din original la 18 aprilie 2018.
  5. M.S. Zuev, K.G. Miroșnikov. Despre o extensie criptografică Java  (rusă)  // Buletinul TSU. - 2008. - 17 noiembrie.

Link -uri

Vezi și