Java Cryptography Extension.

Besoin

Fournir des fonctionnalités cryptographiques sensibles (non exportables en-dehors des USA).

Conception

La JCE est une extension standard de la Java Cryptography Architecture, offrant des fonctionnalités de :

  • Cryptage
    • à une ou plusieurs passes
    • appliqué à des flux non typés ou à des flux d'objets sérialisés
  • Génération de clés symétriques (clé secrète) en plus des clés asymétriques de la Java Cryptography Architecture. Une telle clé secrète de cryptage peut être transmise selon deux techniques :
    • l'enveloppe électronique (cryptée avec la clé publique du destinataire qui pourra la lire grâce à sa clé privée)
    • l'échange de clés, qui permet à deux parties de s'accorder sur un secret commun sans transmettre d'information secrète.
  • Contrôle d'Intégrité (via MAC)

La JCE intègre DES. Elle ne peut être exportée en-dehors des USA.

Implémentation

La JCE inclut le package javax.crypto :

  • le chiffrage (encryption) est assuré par la classe Cipher
    • les flux cryptés non typés sont réalisés via les classes CipherInputStream, et CipherOutputStream
    • les flux cryptés d'objets sérialisés sont réalisés via la classe SealedObject
  • Génération de clés symétriques (clé secrète via les classes KeyGenerator, SecretKey, SecretKeyFactory) en plus des clés asymétriques de la Java Cryptography Architecture (java.security.KeyPairGenerator). Une telle clé secrète de cryptage peut être transmise selon deux techniques :
    • l'enveloppe électronique (cryptée avec la clé publique du destinataire qui pourra la lire grâce à sa clé privée)
    • l'échange de clés (KeyAgreement), qui permet à deux parties de s'accorder sur un secret commun sans transmettre d'information secrète.
  • Contrôle d'Intégrité (via MAC)
    • la classe MAC

Exemples