Java kriptográfiai bővítmény

A Java Cryptography Extension ( rövidítve : JCE  ) a Java platform hivatalosan kiadott szabványos kiterjesztése, és a Java Cryptography Architecture (JCA) része. Ez egy olyan csomagkészlet, amely keretet és megvalósítást biztosít olyan kriptográfiai feladatokhoz, mint az adatok titkosítása és visszafejtése, a vezérlőkulcsok generálása és hitelesítése, valamint a Message Authentication Code (MAC) algoritmusok megvalósítása [1] .

A Java Cryptographic Extension ugyanazon alapul, mint a Java Cryptographic Architecture (JCA), és a JCA részének tekintendő. A tény az, hogy az amerikai törvények tiltják bizonyos típusú kriptográfiai szoftverek (különösen a szimmetrikus titkosítás és egy közös kulcsanyag kifejlesztése) exportját az Egyesült Államokon és Kanadán kívülre, vagy megengedik a csonka kulcsokkal történő exportálást. A szabványos JCA osztályok csak olyan hash függvényeket, kulcsgenerátorokat és egyéb funkciókat tartalmaznak, amelyekre ez a korlátozás nem vonatkozik, és biztonságosan exportálhatók a Java 2 platform részeként. Az USA kriptográfiai exportkorlátozásainak hatálya alá tartozó erős titkosítási algoritmusokat azonban be kell szerezni más forrásokból, ezért külön termékként szállítjuk - JCE.

A Java Cryptographic Extension úgy lett megtervezve, hogy más kriptográfiai könyvtárak is csatlakoztathatók legyenek az új algoritmusok zökkenőmentes biztosításához [2] .

A JDK 1.2 összetevői

Jelenleg a JDK 1.2-ben a kriptográfiai kiterjesztés három csomagban található:

javax.crypto - felület és osztályok a szimmetrikus titkosításhoz

javax.crypto.interfaces – Diffie-Hellman kulcslevezető interfészek

javax.crypto.spec - osztályok a kriptográfiai algoritmusok kulcsainak és paramétereinek kezelésére

Funkcionalitás

A JCA-hoz hasonlóan a JCE sem függ meghatározott algoritmusok megvalósításától. Az SPI segítségével a különböző gyártók különböző implementációi egyidejűleg integrálhatók a Java programozási környezetbe. Az 1.4-es verziótól kezdődően a Java tartalmazza a JCE-t és a JCA-t, azonban más implementációk is gond nélkül csatlakoztathatók mind statikusan, mind dinamikusan.

A Java Cryptographic Extension a következő funkciókat kínálja:

JCE Audience

A Java Cryptographic Extension különféle közönség számára készült biztonsági funkciókkal rendelkezik.

Felhasználók

A beépített JCE biztonsági funkciók megvédik a felhasználót a rosszindulatú szoftverektől (beleértve a vírusokat is), megőrzik a felhasználói fájlok és felhasználói információk titkosságát, és hitelesítik az egyes kódszolgáltatók kilétét. A felhasználó szükség esetén kérelmeket is benyújthat biztonsági ellenőrzésre.

Fejlesztők

A fejlesztők használhatják a JCE-módszereket, hogy biztonsági funkciókat építsenek be programjaikba, beleértve a kriptográfiai szolgáltatásokat és a biztonsági ellenőrzéseket. A JCE lehetővé teszi saját hozzáférési jogainak meghatározását és integrálását (bizonyos erőforrásokhoz való hozzáférés szabályozása) és kriptográfiai biztonsági szolgáltatások megvalósítását. Ezenkívül a JCE osztályokat úgy tervezték, hogy kezeljék saját privát/privát kulcspárjaikat, és hitelesítsék a nyilvános kulcsokat olyan személyektől, akikben a fejlesztő megbízik.

Rendszergazdák, fejlesztők és felhasználók

A JCE eszközök kezelik a kulcstárolót (kulcsok és tanúsítványok adatbázisa); digitális aláírásokat generálni a JAR-fájlokhoz, valamint ellenőrizni az ilyen aláírások hitelességét és az aláírt tartalom integritását; lehetővé teszi olyan privát fájlok létrehozását és módosítását, amelyek meghatározzák a telepítés biztonságát. [2]

A JCE figyelemre méltó megvalósításai

A különböző JCE implementációk közé tartozik a Cryptix JCE csomag, a Bouncy Castle csomag és az IAIK JCE csomag.

Cryptix JCE

A Cryptix JCE csomag a leghíresebb ingyenes kiterjesztés. A munkálatok 1995-ben kezdődtek. Ez volt az első elérhető kriptográfiai könyvtár Java számára. Akkor a kriptográfia nem volt széles körben elérhető, és ez a projekt fontos szerepet játszott az információk védelmében a Java platformon történő programok fejlesztése során. A Cryptix legújabb verziója 2005. április 28-án jelent meg. Ugyanebben az évben a Cryptix támogatása megszűnt.

A Cryptix JCE csomag tartalma:

Ugrálóvár

A Cryptix JCE-hez hasonlóan a Bouncy Castle csomag is ingyenes. A Bouncy Castle első hivatalos kiadása 2000 májusában jelent meg, és körülbelül 27 000 kódsort tartalmazott. A projekt folyamatosan nőtt, és 2012-re a Bouncy Castle Java kódja meghaladta a 300 000 sort [1] .

Magába foglalja

és a következő tulajdonságokkal rendelkezik

IAIK JCE

A Grazi Műszaki Egyetem Alkalmazott Információfeldolgozási és Kommunikációs Intézete (IAIK) által megvalósított kereskedelmi csomag. [négy]

Példák

Tömb titkosítás

A következő példa a bájttömb titkosításának megvalósítását mutatja be az AES algoritmus használatával. A program megírásához a BouncyCastle csomag eszközeit használtuk. [5]

BufferedBlockCipher titkosítás = new PaddedBufferedBlockCipher ( new CBCBlockCipher ( new AESFastEngine () ) ); SecureRandom srr = new SecureRandom (); bájt [] AESkey = új bájt [ 16 ] ; srr . nextBytes ( AESkey ); bájt [] AESinitV = új bájt [ 16 ] ; srr . nextBytes ( AESinitV ); ParametersWithIV piv = new ParametersWithIV ( new KeyParameter ( AESkey ), AESinitV ); titkosítás . init ( igaz , piv ); bájt [] eredmény = új bájt [ titkosítás . getOutputSize ( toEncrypt . length ) ] ; int len ​​= titkosítás . processBytes ( toEncrypt , 0 , toEncrypt . long , result , 0 ); próbálkozzon { cipher . doFinal ( eredmény , len ); } catch ( CryptoException ce ) { result = "Rejtjelhiba" . getBytes (); ce . printStackTrace (); }

Jegyzetek

  1. ↑ 12 bouncycastle.org . _ www.bouncycastle.org. Letöltve: 2016. december 17. Az eredetiből archiválva : 2018. április 18..
  2. ↑ 12 Jason Weiss . Java kriptográfiai bővítmények : gyakorlati útmutató programozóknak. – Morgan Kaufmann Publishers, 2004.
  3. A Cryptix projekt . Letöltve: 2016. december 19. Az eredetiből archiválva : 2018. április 23..
  4. Biztonságos információs és kommunikációs technológiák . Letöltve: 2016. március 11. Az eredetiből archiválva : 2018. április 18..
  5. M.S. Zuev, K.G. Mirosnyikov. Körülbelül egy Java kriptográfiai kiterjesztés  (orosz)  // Bulletin of TSU. - 2008. - november 17.

Linkek

Lásd még