Rozšíření Java Cryptography Extension

Java Cryptography Extension ( zkr. JCE  ) je oficiálně vydané standardní rozšíření pro platformu Java a součást Java Cryptography Architecture (JCA). Jedná se o sadu balíčků, které poskytují rámec a implementaci takových kryptografických úloh, jako je šifrování a dešifrování dat, generování a ověřování řídicích klíčů, stejně jako implementace algoritmů Message Authentication Code (MAC) [1] .

Java Cryptographic Extension je založeno na stejném principu jako Java Cryptographic Architecture (JCA) a je považováno za součást JCA. Faktem je, že americké zákony zakazují export určitých typů kryptografického softwaru (zejména symetrické šifrování a vývoj společného klíčového materiálu) mimo Spojené státy a Kanadu nebo umožňují export se zkrácenými klíči. Standardní třídy JCA obsahují pouze hašovací funkce, generátory klíčů a další funkce, které nepodléhají tomuto omezení a lze je bezpečně exportovat jako součást platformy Java 2. Silné šifrovací algoritmy podléhající omezením exportu kryptografických dat v USA je však nutné získat jiné zdroje, proto jsou dodávány jako samostatný produkt - JCE.

Java Cryptographic Extension je navrženo tak, aby bylo možné připojit další kryptografické knihovny a hladce poskytovat nové algoritmy [2] .

Komponenty v JDK 1.2

V současné době se v JDK 1.2 kryptografické rozšíření dodává ve třech balíčcích:

javax.crypto - rozhraní a třídy pro symetrické šifrování

javax.crypto.interfaces - rozhraní pro odvození klíče Diffie-Hellman

javax.crypto.spec - třídy pro správu klíčů a parametrů kryptografických algoritmů

Funkčnost

Stejně jako JCA, ani JCE nezávisí na implementaci konkrétních algoritmů. Pomocí SPI lze do programovacího prostředí Java současně integrovat různé implementace od různých výrobců. Od verze 1.4 Java obsahuje JCE a JCA, ale další implementace lze bez problémů připojit jak staticky, tak dynamicky.

Java Cryptographic Extension nabízí následující funkce:

JCE Audience

Java Cryptographic Extension má bezpečnostní funkce navržené pro různé cílové skupiny.

Uživatelé

Vestavěné bezpečnostní funkce JCE chrání uživatele před škodlivým softwarem (včetně virů), uchovávají uživatelské soubory a uživatelské informace v soukromí a ověřují identitu každého poskytovatele kódu. Uživatel může také v případě potřeby podat žádosti o bezpečnostní kontroly.

Vývojáři

Vývojář může použít metody JCE k zahrnutí funkcí zabezpečení do svých programů, včetně kryptografických služeb a bezpečnostních kontrol. JCE vám umožňuje definovat a integrovat vaše vlastní přístupová práva (řízení přístupu k určitým zdrojům) a implementace kryptografických bezpečnostních služeb. Kromě toho jsou třídy JCE navrženy tak, aby spravovaly své vlastní páry soukromých/soukromých klíčů a certifikovaly veřejné klíče od lidí, kterým vývojář důvěřuje.

Správci systému, vývojáři a uživatelé

Nástroje JCE spravují úložiště klíčů (databáze klíčů a certifikátů); vytvářet digitální podpisy pro soubory JAR a také ověřovat pravost takových podpisů a integritu podepsaného obsahu; umožňují vytvářet a upravovat soukromé soubory, které určují bezpečnost jejich instalace. [2]

Pozoruhodné implementace JCE

Různé implementace JCE zahrnují balíček Cryptix JCE, balíček Bouncy Castle a balíček IAIK JCE.

Cryptix JCE

Balíček Cryptix JCE je nejznámější z bezplatných rozšíření. Práce na něm začaly v roce 1995. Byla to první dostupná kryptografická knihovna pro Javu. Poté nebyla kryptografie široce dostupná a tento projekt hrál důležitou roli v ochraně informací při vývoji programů na platformě Java. Nejnovější verze Cryptix byla vydána 28. dubna 2005. Ve stejném roce byla ukončena podpora pro Cryptix.

Balíček Cryptix JCE obsahuje:

Skákací hrad

Stejně jako Cryptix JCE je balíček Bouncy Castle zdarma. První oficiální vydání skákacího hradu se objevilo v květnu 2000 a obsahovalo asi 27 000 řádků kódu. Projekt se neustále rozrůstal a do roku 2012 měl kód Bouncy Castle pro Javu přes 300 000 řádků [1] .

To zahrnuje

a má následující vlastnosti

IAIK JCE

Komerční balíček implementovaný Institutem pro aplikované zpracování a komunikaci informací (IAIK) Technické univerzity v Grazu. [čtyři]

Příklady

Šifrování pole

Následující příklad ukazuje implementaci šifrování bajtového pole pomocí algoritmu AES. K napsání programu byly použity nástroje balíčku BouncyCastle. [5]

BufferedBlockCipher cipher = new PaddedBufferedBlockCipher ( new CBCBlockCipher ( new AESFastEngine () ) ); SecureRandom srr = new SecureRandom (); byte [] AESkey = nový byte [ 16 ] ; srr _ nextBytes ( AESkey ); byte [] AESinitV = nový byte [ 16 ] ; srr _ nextBytes ( AESinitV ); ParametersWithIV piv = new ParametersWithIV ( new KeyParameter ( AESkey ), AESinitV ); šifra . init ( true , piv ); byte [] výsledek = nový byte [ šifra . getOutputSize ( toEncrypt . length ) ] ; int len ​​= šifra . processBytes ( toEncrypt , 0 , toEncrypt . length , result , 0 ); zkuste { šifra . doFinal ( vysledek , len ); } catch ( CryptoException ce ) { result = "Chyba šifry" . getBytes (); ce . printStackTrace (); }

Poznámky

  1. ↑ 12 bouncycastle.org . _ www.bouncycastle.org. Získáno 17. prosince 2016. Archivováno z originálu 18. dubna 2018.
  2. ↑ 12 Jason Weiss . Rozšíření kryptografie Java : praktický průvodce pro programátory. — Morgan Kaufmann Publishers, 2004.
  3. Projekt Cryptix . Získáno 19. prosince 2016. Archivováno z originálu dne 23. dubna 2018.
  4. Bezpečné informační a komunikační technologie . Získáno 11. března 2016. Archivováno z originálu 18. dubna 2018.
  5. M.S. Zuev, K.G. Mirošnikov. O jednom kryptografickém rozšíření Java  (ruština)  // Bulletin of TSU. - 2008. - 17. listopadu.

Odkazy

Viz také