Java kryptografi udvidelse

Java Cryptography Extension ( forkortet JCE  ) er en officielt udgivet standardudvidelse til Java-platformen og en del af Java Cryptography Architecture (JCA). Det er et sæt pakker, der giver en ramme og implementering af sådanne kryptografiske opgaver som datakryptering og -dekryptering, generering og autentificering af kontrolnøgler samt implementering af MAC-algoritmer (Message Authentication Code) [1] .

Java Cryptographic Extension er baseret på det samme som Java Cryptographic Architecture (JCA) og betragtes som en del af JCA. Faktum er, at amerikanske love forbyder eksport af visse typer kryptografisk software (især symmetrisk kryptering og udvikling af et fælles nøglemateriale) uden for USA og Canada, eller tillader eksport med trunkerede nøgler. Standard JCA-klasserne indeholder kun hash-funktioner, nøglegeneratorer og andre funktioner, der ikke er underlagt denne begrænsning, og som sikkert kan eksporteres som en del af Java 2-platformen. Stærke krypteringsalgoritmer underlagt amerikanske kryptografiske eksportrestriktioner skal dog hentes fra andre kilder, så de leveres som et separat produkt - JCE.

Java Cryptographic Extension er designet, så andre kryptografiske biblioteker kan tilsluttes for at levere nye algoritmer problemfrit [2] .

Komponenter i JDK 1.2

I øjeblikket, i JDK 1.2, kommer den kryptografiske udvidelse i tre pakker:

javax.crypto - grænseflade og klasser til symmetrisk kryptering

javax.crypto.interfaces - Diffie-Hellman nøgleafledningsgrænseflader

javax.crypto.spec - klasser til styring af nøgler og parametre for kryptografiske algoritmer

Funktionalitet

Ligesom JCA er JCE ikke afhængig af implementeringen af ​​specifikke algoritmer. Med SPI kan forskellige implementeringer fra forskellige leverandører integreres samtidigt i Java-programmeringsmiljøet. Fra version 1.4 inkluderer Java JCE og JCA, men andre implementeringer kan tilsluttes både statisk og dynamisk uden problemer.

Java Cryptographic Extension tilbyder følgende funktionalitet:

JCE Audience

Java Cryptographic Extension har sikkerhedsfunktioner designet til forskellige målgrupper.

Brugere

Indbyggede JCE-sikkerhedsfunktioner beskytter brugeren mod ondsindet software (herunder virus), holder brugerfiler og brugeroplysninger private og autentificerer hver kodeudbyders identitet. Brugeren kan også indsende ansøgninger om sikkerhedstjek efter behov.

Udviklere

En udvikler kan bruge JCE-metoder til at inkludere sikkerhedsfunktioner i deres programmer, herunder kryptografiske tjenester og sikkerhedstjek. JCE giver dig mulighed for at definere og integrere dine egne adgangsrettigheder (adgangskontrol til visse ressourcer) og implementeringer af kryptografiske sikkerhedstjenester. Derudover er JCE-klasserne designet til at administrere deres egne private/private nøglepar og certificere offentlige nøgler fra personer, som udvikleren har tillid til.

Systemadministratorer, udviklere og brugere

JCE-værktøjerne administrerer nøglelageret (database med nøgler og certifikater); generere digitale signaturer til JAR-filer, samt verificere ægtheden af ​​sådanne signaturer og integriteten af ​​det signerede indhold; giver dig mulighed for at oprette og ændre private filer, der bestemmer sikkerheden for deres installation. [2]

Bemærkelsesværdige implementeringer af JCE

De forskellige JCE-implementeringer inkluderer Cryptix JCE-pakken, Bouncy Castle -pakken og IAIK JCE-pakken.

Cryptix JCE

Cryptix JCE-pakken er den mest berømte af de gratis udvidelser. Arbejdet med det begyndte i 1995. Det var det første tilgængelige kryptografiske bibliotek til Java. Dengang var kryptografi ikke udbredt tilgængeligt, og dette projekt spillede en vigtig rolle i at beskytte information ved udvikling af programmer på Java-platformen. Den seneste version af Cryptix blev udgivet den 28. april 2005. Samme år blev støtten til Cryptix droppet.

Cryptix JCE-pakken inkluderer:

Hoppeborg

Ligesom Cryptix JCE er Bouncy Castle -pakken gratis. Den første officielle udgivelse af Bouncy Castle dukkede op i maj 2000 og indeholdt omkring 27.000 linjer kode. Projektet er vokset støt, og i 2012 var Bouncy Castles kode for Java over 300.000 linjer [1] .

Det omfatter

og har følgende egenskaber

IAIK JCE

En kommerciel pakke implementeret af Institute for Applied Information Processing and Communication (IAIK) ved Graz University of Technology. [fire]

Eksempler

Array-kryptering

Det følgende eksempel viser en implementering af byte array-kryptering ved hjælp af AES-algoritmen. Værktøjerne i BouncyCastle-pakken blev brugt til at skrive programmet. [5]

BufferedBlockCipher cipher = new PaddedBufferedBlockCipher ( ny CBCBlockCipher ( ny AESFastEngine () ) ); SecureRandom srr = ny SecureRandom ( ); byte [] AESkey = ny byte [ 16 ] ; srr . nextBytes ( AESkey ); byte [] AESinitV = ny byte [ 16 ] ; srr . nextBytes ( AESinitV ); ParametersWithIV piv = new ParametersWithIV ( nyt KeyParameter ( AESkey ), AESinitV ); chiffer . init ( sandt , piv ); byte [] resultat = ny byte [ cipher . getOutputSize ( toEncrypt . length ) ] ; int len ​​= cipher . processBytes ( toEncrypt , 0 , toEncrypt . length , result , 0 ); prøv { cipher . doFinal ( resultat , len ); } catch ( CryptoException ce ) { result = "Chifferfejl" . getBytes (); ce . printStackTrace (); }

Noter

  1. ↑ 12 bouncycastle.org . _ www.bouncycastle.org. Hentet 17. december 2016. Arkiveret fra originalen 18. april 2018.
  2. ↑ 12 Jason Weiss . Java kryptografi-udvidelser: praktisk vejledning til programmører. — Morgan Kaufmann Publishers, 2004.
  3. Cryptix-projektet . Hentet 19. december 2016. Arkiveret fra originalen 23. april 2018.
  4. Sikre informations- og kommunikationsteknologier . Hentet 11. marts 2016. Arkiveret fra originalen 18. april 2018.
  5. M.S. Zuev, K.G. Miroshnikov. Om en Java kryptografisk udvidelse  (russisk)  // Bulletin of TSU. - 2008. - 17. november.

Links

Se også