Java Cryptography Extension Didier DONSEZ Universit Joseph Fourier IMA IMAG/LSR/ADELE Didier.Donsezimag.fr // D i d i e r D o n s e z , , J C E Motivation IFournit une API standard pour lusage de fonctions cryptographique Chiffrage, signature, IPlusieurs Cryptography Service Providers CSP cohabitent priorit du choix SPI Interface pour implanter un provider SUN fournit un Provider de rfrence Conu pour tre export en dehors des USA // D i d i e r D o n s e z , , J C E Principes I Indpendance I Introprabilit I Extensibilit Nouveaux algorithmes AES par exemple I Architecture Providers amp Key Management I Concepts Slection dimplmentations chez les Providers fabriques pour lobtention des instances XXX.getInstancealgo // le premier qui offre limplantation dans la liste des providers XXX.getInstancealgo,provider // D i d i e r D o n s e z , , J C E Architecture du JCE JCE Cipher, SecureRandom KeyAgreement, KeyGenerator,KeyFactory MessageDigest, MAC, Signature App App App CSP quotSunJCEquot CSP quotABAquot CSP quotCryptixquot API SPI DES RSA DES RSA IDEA Rindjael Cipher.getInstancequotDESquot K Cipher.getInstancequotDESquot,quotABAquot K Cipher.getInstancequotCesarquot K Priorit RSA // D i d i e r D o n s e z , , J C E Architecture du JCE JCE Cipher, SecureRandom KeyAgreement, KeyGenerator,KeyFactory MessageDigest, MAC, Signature App App App CSP quotSunJCEquot CSP quotABAquot CSP quotCryptixquot API SPI DES RSA DES RSA IDEA Rindjael CSP quotMonJCEquot Cesar Cipher.getInstancequotDESquot K Cipher.getInstancequotDESquot,quotABAquot K Cipher.getInstancequotCesarquot K RSA // D i d i e r D o n s e z , , J C E Installation I Chargez et dcompressez le JCE de Sun et dautres providers ABA, I Ajoutez les JAR comme des extensions du JDK ou au CLASSPATH I Positionnez les permissions pour le JCE /oo o ltjrehomegtlibsecurityjava.policy ne oouno grant codeBasequotfile/work/sunjceprovider.jarquot permission java.io.FilePermission quot/jdk../jre/lib/ext/jce.jarquot, quotreadquot permission java.lang.RuntimePermission quotgetProtectionDomainquot permission java.security.SecurityPermission quotputProviderProperty.SunJCEquot // D i d i e r D o n s e z , , J C E Installation I Enregistrez les providers selon leurs priorits I Statiquement Fichier JAJAHOME/ire/lib/securitv/iava.securitv security.provider.com.sun.crypto.provider.SunJCE security.provider.au.net.aba.crypto.provider.ABAProvider security.provider.cryptix.jce.provider.CryptixCrypto security.provider. I A lexcution ava.seoury.eoury.aooProvoerneu oom.sun.oryoo.orovoer.unJE ava.seoury.eoury.aooProvoerneu au.ne.aoa.oryoo.orovoer.//Provoer . // D i d i e r D o n s e z , , J C E Les classes et interfaces de lAPI I Les packages java.security java.security.cert javax.crypto javax.crypto.interfaces javax.crypto.spec I Les classes et interfaces Provider Security Cipher SecureRandom Key KeyPair KeyPairGenerator MessageDigest MAC Signature KeyStore Certificate java.security.cert.Certificate CipherSpi // D i d i e r D o n s e z , , J C E SecureRandom Gnrateur de nombres alatoires I Motivation strong pseudorandom number generator PRNG pour la gnration de cls, dans les challenges, I Obtenir/construire une instance dun gnrateur statc ecureRandom getnstancetrng agorthm statc ecureRandom getnstancetrng agorthm, trng provder algorithm SHAPRNG, I Gnrer la graine seed byte generateeednt numytes nombre doctets de a grane I Initialiser et rinitialiser la graine du gnrateur byte generateeednt numytes nombre doctets de a grane statc byte geteednt numytes vod seteedbyte seed avec seed.sze octets de seed vod seteedong seed avec es octets du ong I Gnrer un nombre pseudoalatoire nt nextnt numts gnr numts bts de pods fabe aatore et numts bts de pods fort e vod nextytesbyte bytes // D i d i e r D o n s e z , , J C E Remarque sur la gnration des nombres alatoires PRNG I Motivation la gnration de cls Ala de session I Risque attaque brute de la recherche du nombre gnr partir dhypothse sur la graine I Importance de la graine Horloge de la machine nest pas suffisante Doit tre complte par Memory Statistics, Process Statistics, Mouse Movement, Keystroke Timing, I Voir httpwww.rsasecurty.comsoutonsdeveoperswhtepapersArtcePRN.pdf ftpftp.rsasecurty.compubpdfsbu.pdf // D i d i e r D o n s e z , , J C E Gnration des cls I Publique/prive java.security.KeyPairGenerator Cre une ou des cls partir dun objet existant java.security.KeyFactory Convertit et verifie une ou des cls partir dun objet existant Exemple XEncodedKeySpec bobPubKeySpec new XEncodedKeySpecbobEncodedPubKey KeyFactory keyFactoryKeyFactory.getInstancequotDSAquot PublicKey bobPubKeykeyFactory.generatePublicbobPubKeySpec Signaturesig Signature.getInstancequotDSAquot sig.initVerifybobPubKey sig.updatedata sig.verifysignature I Secrte javax.crypto.SecretKeyFactory Convertit et verifie une ou des cls partir dun objet existant I Commun javax.crypto.KeyGenerator // D i d i e r D o n s e z , , J C E Gnrateur de cls prives/publiques I Interface java.security.Key PrivateKey, PublicKey DSAPrivateKey, DSAPublicKey,RSAPrivateCrtKey, RSAPrivateKey, RSAPublicKey Mthodes String getAlgorithm, byte getEncoded, StringgetFormat I Obtenir/counstruire une instance dun gnrateur KeyParenerator statc KeyParenerator getnstancetrng agorthm statc KeyParenerator getnstancetrng agorthm, trng provder algorithm, I Initialiser le gnrateur vod ntazeAgorthmParameterpec params vod ntazeAgorthmParameterpec params, ecureRandom random vod ntazent keysze vod ntazent keysze, ecureRandom random ntazes the key par generator for a certan keysze wth the gven source of randomness and a defaut parameter set. I Gnrer une paire de cls KeyPar KeyPar genKeyPar I Rcuprer les cls de KeyPar PrvateKey getPrvate PubcKey getPubc // D i d i e r D o n s e z , , J C E Gnration des cls prives/publiques // Rendom number ecureRandom random ecureRandom.getnstancequothAPRNquot, quotUNquot // igitel igneture Algorithm KeyParenerator keyen KeyParenerator.getnstancequotAquot, quotUNquot nt btsze keyen.ntazebtsze, random // Key peir KeyPar par keyen.generateKeyPar PrvateKey prv par.getPrvate PubcKey pub par.getPubc // D i d i e r D o n s e z , , J C E Convertion des cls prives/publiques KeyFactory fact KeyFactory.getnstancequotRAquot, quotAAquot fabrquer a c prve AscEncodedKeypec prvKeypec new AscEncodedKeypecargs PrvKey keyPrv fact.generatePrvateprvKeypec chffrer avec a c prve pher enc pher.getnstancequotRAEPKPaddngquot, quotAAquot enc.ntpher.ENRYPTHE, keyPrv, rand fabrquer a c pubque AscEncodedKeypec pubKeypec new AscEncodedKeypecargs PubcKey keyPub fact.generatePubcpubKeypec dchffrer avec a c pubque pher dec pher.getnstancequotRAEPKPaddngquot, quotAAquot dec.ntpher.ERYPTHE, keyPub // D i d i e r D o n s e z , , J C E Cipher / I Fonction De chiffrage/dchiffrage cl symtrique SKC ou asymtrique DSK I Obtenir une instance statc pher getnstancetrng agorthm statc pher getnstancetrng agorthm, trng provder algorithmspcifie lalgorithme / le mode / le padding compltion Ex quotDES/CBC/PKCSPaddingquot, quotDES/CFB/NoPaddingquot, quotDES/OFB/PKCSPaddingquot, quotRSA/ECB/PKCSPaddingquot I Initialiser avec lopration ENCRYPTMODE DECRYPTMODE et la cl vod ntnt opmode, Key key vod ntnt opmode, Key key, AgorthmParameters params vod ntnt opmode, Key key, AgorthmParameterpec params vod ntnt opmode, Key key, AgorthmParameterpec params, ecureRandom random vod ntnt opmode, Key key, AgorthmParameters params, ecureRandom random vod ntnt opmode, Key key, ecureRandom random // D i d i e r D o n s e z , , J C E Cipher / I Chiffrer/dchiffer lentre byte updatebyte nput byte updatebyte nput, nt nputffset, nt nputLen nt updatebyte nput, nt nputffset, nt nputLen, byte output nt updatebyte nput, nt nputffset, nt nputLen, byte output, nt outputffset I Finaliser car il reste des donnes qui nont pas t chiffres dans linstance byte doFna byte doFnabyte nput nt doFnabyte output, nt outputffset byte doFnabyte nput, nt nputffset, nt nputLen nt doFnabyte nput, nt nputffset, nt nputLen, byte output nt doFnabyte nput, nt nputffset, nt nputLen, byte output, nt outputffset I Extra trng getAgorthm Provder getProvder AgorthmParameters getParameters nt getockze Returns the bock sze n bytes. nt getutputzent nputLen Returns the ength n bytes that an output buffer woud need to be n order to hod the resut of the next update or doFna operaton, gven the nput ength nputLen n bytes. // D i d i e r D o n s e z , , J C E javax.crypto.CipherInputStream javax.crypto.CipherOutputStream IMotivation Appliquer une fonction de chiffrage/dchiffrage sur un InputStreamou un OutputStream tendent java.io.FilterInputStreamet java.io.FilterOutputStream IConstructeur CipherInputStreamjava.io.InputStream is, Cipher ciph CipherOutputStreamjava.io.OutputStream is, Cipher ciph ciph doit tre compltement initialis // D i d i e r D o n s e z , , J C E Exemples ouoo voo enoryolnouream s. Duouream os.rno aoo. eorerey seorey nrous Exoeoon oner oooner.oelnsanoeaoo o.noner.EhPYPTVDE. seorey onerlnouream os neu onerlnoureams. o n une os.reao gt os.ure Cipher ENCRYPTMODE SecretKey Data Encrypted Data Cipher DECRYPTMODE Data ouoo voo oeoryolnouream s. Duouream os.rno aoo. eorerey seorey nrous Exoeoon oner oooner.oelnsanoeaoo o.noner.EPYPTVDE. seorey onerlnouream os neu onerlnouream s. o n une os.reao gt os.ure // D i d i e r D o n s e z , , J C E Password Based Encryption PBE I Chiffrage/Dchiffrer partir dun mot de passe Les mots de passe ne sont pas des cls sures I Ide Appliquer une fonction de hachage scuris MD,SHA, sur le mot de passe pour fabriquer une cl secrte I Standard PBEWithMDAndDES PKCS PBEWithSHAAndBitRC PKCS Cipher ENCRYPTMODE SecretKey Data Encrypted Data Cipher DECRYPTMODE Data MessageDigest Password // D i d i e r D o n s e z , , J C E PBE Cration du chiffreur/Dchiffreur trng modeargv trng passwordargv byte sat bytexc, bytex, bytex, bytexc, bytexe, bytexc, bytexee, bytex nt count PEParameterpec parampec new PEParameterpec sat, count PEKeypec keypec new PEKeypecpassword.toharArray ecretKeyFactory kf ecretKeyFactory.getnstancequotPEwthHAndEquot ecretKey passwordKey kf.generateecret keypec pher c pher.getnstancequotPEwthHAndEquot f mode.equasquotencryptquot c.ntpher.ENRYPTHE, passwordKey, parampec ... ese f mode.equasquotdecryptquot c.ntpher.ERYPTHE, passwordKey, parampec ... ese ... // D i d i e r D o n s e z , , J C E MessageDigest Hachage Scuris I Fonction produire un rsum avec une fonction de hachage scuris I Obtenir une instance static MessageDigest getInstanceStringalgorithm static MessageDigest getInstanceStringalgorithm, Stringprovider algorithmSHA, SHA, MD, I Alimenter le calcul void updatebyte input void updatebyte input void updatebyte input, int offset, int len voidreset // remise zro du calcul I Produire le rsum public byte digest public byte digestbyte input I Voir aussi java.security.DigestInputStream, java.security.DigestOutputStream // D i d i e r D o n s e z , , J C E Hachage scuris des donnes dun fichier btan a message dgest object. Hessagegest md Hessagegest.getnstancequotHquot acuate the dgest for the gven fe. Fenputtream fs new Fenputtreamargs ufferednputtream bufn new ufferednputtreamfs byte buffer new byte nt ength whe ength bufn.readbuffer md.updatebuffer, , ength bufn.cose byte raw md.dgest // D i d i e r D o n s e z , , J C E MAC Message Authentication Code I Fonction produire un rsum avec une fonction de hachage scuris avec une cl I Obtenir une instance statc HA getnstancetrng agorthm statc HA getnstancetrng agorthm, trng provder algorithmDESMac, I Initialiser avec une cl vod ntKey key vod ntKey key, AgorthmParameterpec params I Alimenter vod updatebyte nput vod updatebyte nput vod updatebyte nput, nt offset, nt en vod reset remse e zro du cacu et de a c on dot rntaser avec une c I Gnrer le MAC byte doFna vod doFnabyte output, nt outffset byte doFnabyte nput // D i d i e r D o n s e z , , J C E Signature I Fonction Produire vrifier une signature partir dune cl prive publique I Obtenir une instance statc gnature getnstancetrng agorthm statc gnature getnstancetrng agorthm, trng provder algorithm SHAwithDSA, MDwithRSA, MDwithRSA, SHAwithRSA, . I Initialiser avec une cl prive pour la signature vod ntgnPrvateKey prvateKey I Initialiser avec une cl publique pour la vrification vod ntverfyPubcKey pubcKey I Alimenter pour la signature et la vrification vod updatebyte nput vod updatebyte nput vod updatebyte nput, nt offset, nt en vod reset remse e zro du cacu I Gnrer la signature si initSignpriv byte sgn I Vrifier la signature si initVerifypub booean verfybyte sgnatureToverfy // D i d i e r D o n s e z , , J C E Signature Signer des donnes et the prvate key PrvateKey prv par.getPrvate et ready to sgn gnature dsa gnature.getnstancequothAwthAquot, quotUNquot gve t your prvate key dsa.ntgnprv gve the ag the data ufferednputtream bufn new ufferednputtreamnew Fenputtreamargs byte buffer new byte nt en whe bufn.avaabe en bufn.readbuffer dsa.updatebuffer, , en bufn.cose generate the sgnature byte reag dsa.sgn // D i d i e r D o n s e z , , J C E Signature Vrifier des donnes et the sgnature to verfy byte toeverfyg . et the pubc key PubcKey pub par.getPubc et ready to sgn gnature dsa gnature.getnstancequothAwthAquot, quotUNquot gve t your pubc key dsa.ntverfypub gve the ag the data ufferednputtream bufn new ufferednputtream new Fenputtreamargs byte buffer new byte nt en whe bufn.avaabe en bufn.readbuffer dsa.updatebuffer, , en bufn.cose verfy the sgnature fdsa.verfytoeverfygtrue ystem.out.prntnquotgnature s correctquot ese ystem.out.prntnquotgnature s NT correctquot // D i d i e r D o n s e z , , J C E Certificat I Motivation Associer une identit subject avec sa cl publique et certifier le tout par une autorit de certification CA Support de stockage et du diffusion de la cl publique I Notions PKI Public Key Infrastructure Joir cours PKI Identity Unix UID, X. Distinguished Name. Entity person, organization, program, computer, business, bank, Issuer celui qui a mis le certificat ie le CA CRL Certificate Revocation List I Classes java.security.cert.CertificateFactory java.security.cert.Certificat, java.security.cert.XCertificat java.security.cert.CRL, java.security.cert.XCRL // D i d i e r D o n s e z , , J C E CertificatFactory IRcuprer une instance static CertificateFactory getInstanceString type static CertificateFactory getInstanceString type, Stringprovider typeX IGnrer le ou les Certificates prsents dans le inStream Certificate generateCertificateInputStream inStream CollectiongenerateCertificatesInputStream inStream IGnrer le ou les CRL prsents dans le inStream CRL generateCRLInputStream inStream Collection generateCRLsInputStream inStream // D i d i e r D o n s e z , , J C E Certificate et XCertificate I Consulter un Certificat PublicKey getPublicKey // rcupre la cl public pour vrifier une signature byte getEncoded // retourne lencodage ASN. DER I Consulter un Certificat X Principal getSubjectDN void checkValidity void checkValidityDate date // pour la priode donne. DategetNotAfter // date de fin la priode de validit DategetNotBefore // date de fin la priode de validit Principal getIssuerDN // DN de lmtteur CA BigInteger getSerialNumber String getSigAlgName // algorithme de signature byte getSigAlgParams // paramtre de lalgorithme byte getSignature I Vrifier un Certificate Lve une exception CertificateException, SignatureException, void verifyPublicKey key throws CertificateException, SignatureException, void verifyPublicKey key, StringsigProvider throws CertificateException, // D i d i e r D o n s e z , , J C E CRL et XCRLEntry I Motivation Liste de rvocation des certificats Cl corrompue, employ licenci, I Tester la rvocation dun Certificate dans une CRL boolean isRevokedCertificate cert I Parcourir les entres dune CRL XCRLEntry getRevokedCertificateBigInteger serialNumber . Set getRevokedCertificates I Dtail dune XCRLEntry byte getEncoded // retourne lencodage ASN. DER. DategetRevocationDate BigInteger getSerialNumber boolean hasExtensions // D i d i e r D o n s e z , , J C E Stockage des paires de cls I Motivation Stockage scuris de cls publiques, prives et certificats dans un fichier keystore Laccs au fichier est protg par une cl storepass I Consultation/Modification classe java.security.KeyStore Outil keytool du JDK I Concepts Reprsente la structure de stockage des entres cls et certificats Key Entry secret key, private key rfrence vers le certificat. Trusted Certificate Entry Certificat appartenant une entity dans laquelle le keystore fait confiance Chaque entre est dsigne par un alias // D i d i e r D o n s e z , , J C E KeyStore I Protection Le keystore est protg par un mot de passe Chaque entre peut tre protge par un deuxime niveau de mot de passe I Obtenir une instance statc Keytore getnstancetrng type statc Keytore getnstancetrng type, trng provder typejks, PKCS prsent dans JSSE statc trng getefautType Retourne la proprit Javakeystore.type configure dans le fichier java.security trng getType Retourne le type du keystore I Charger/Stocker le KeyStore vod oadnputtream stream, char password charge es entres protges par un mot de passe vod storeutputtream stream, char password sauvegarde es entres en protgeant avec e mot de passe // D i d i e r D o n s e z , , J C E KeyStore I Parcourir le KeyStore nt sze nombre dentres Enumeraton aases booean contansAastrng aas ertfcate getertfcatetrng aas ertfcate getertfcatehantrng aas trng getertfcateAasertfcate cert ate getreatonatetrng aas Key getKeytrng aas, char password booean sertfcateEntrytrng aas booean sKeyEntrytrng aas I Modifier une entre vod deeteEntrytrng aas vod setertfcateEntrytrng aas, ertfcate cert vod setKeyEntrytrng aas, byte key, ertfcate chan vod setKeyEntrytrng aas, Key key, char password, ertfcate chan entre est protge par un autre mot de passe. // D i d i e r D o n s e z , , J C E KeyStore et formats I Formats de KeyStore Contient des paires de cls Requiert une passphase pour protger laccs aux paires de cls PBE JKS format propritaire de SUN fournis et utilis par dfaut par les outils Java Provider JCE PKCS .pfx, .p format dchange import,export pour les Navigateurs et les Mailers IE, NS, Fournis et utilis par JSSE Provider JCE de JSSE I Formats de Certificat DER X .cer PKCS .pb contient une chane de certificats // D i d i e r D o n s e z , , J C E Exemple avec KeyStore Keytore ks Keytore.getnstancequotJKquot ks.oadFenputtreamargv, quotHotePasseKeytorequot.toharArray printeliesks ertfcateFactory cf ertfcateFactory.getnstancequotX.quot nputtream s new Fenputtreamargv ertfcate cert cf.generateertfcates ks.setertfcateEntryquotmyfrstquot, cert printeliesks KeyParenerator kpg KeyParenerator.getnstancequotRAquot kpg.ntaze, new ecureRandom KeyPar par kpg.generateKeyPar PrvateKey pkey par.getPrvate ertfcate certs cert ks.setKeyEntryquotmysecondquot, pkey, quotHotePasseKeyEntryquot.toharArray, certs printeliesks ks.storeFeutputtreamargv, quotHotePasseKeytorequot.toharArray ertfcate cert ks.getertfcatequotmyfrstquot prvate statc vod prntaasKeytore store ystem.out.prntnquotsze quot store.sze ystem.out.prntnquotaases quot for Enumeraton enum store.aases enum.hasHoreEements ystem.out.prntenum.nextEement.totrng quot quot // D i d i e r D o n s e z , , J C E KeyTool I Commande pour la gestion de fichiers keystore keytool command options I Options keystore keystorefile storepass storepass keypass keypass alias alias I Commandes Cration dun fichier keystore et de ses entres genkey cre une entre avec une paire de cl dans un certificat autosign import importe soit un certificat considr de confiance trusted certificate ou un certificat sign par un CA il remplace le certificat autosign identitydb importe des informations dune base didentit JDK . Visualisation list Liste les entres du keystore printcert Affiche le contenu du certificat Exportation dune entre export Exporte la cl publique dans un certificat. certreq Gnre une demande CSR Certificate Signing Request pour envoi et signature une autorit de certification CA Gestion delete supprime une entre. keypasswd assigne un mot de passe une entre. storepasswd assigne un mot de passe un keystore. // D i d i e r D o n s e z , , J C E KeyTool Exemple / le KS des CA gtkeytoo st keystore JAvAhHEjrebsecurtycacerts storepass changet Keystore type jks Keystore provder UN Your keystore contans entres versgncassca, Hon Jun ET , trustedertEntry, ertfcate fngerprnt H EFFF versgnserverca, Hon Jun ET , trustedertEntry, ertfcate fngerprnt H FEEFA thawteserverca, Fr Feb ET , trustedertEntry, ertfcate fngerprnt H AE thawtepersonabascca, Fr Feb ET , trustedertEntry, ertfcate fngerprnt H EAAEE versgncassca, Hon Jun ET , trustedertEntry, ertfcate fngerprnt H EEAFAFF thawtepersonafreemaca, Fr Feb ET , trustedertEntry, ertfcate fngerprnt H EEFEFAA thawtepersonapremumca, Fr Feb ET , trustedertEntry, ertfcate fngerprnt H AEAFEAE thawtepremumserverca, Fr Feb ET , trustedertEntry, ertfcate fngerprnt H FAFA Liste les certificats des CA // D i d i e r D o n s e z , , J C E KeyTool Exemple / gtkeytoo st keytoo error Keystore fe does not exst homedonsez.keystore gtkeytoo genkey dname quotcnder onsez, ouHA, oUJF, renobe, cFRquot aas dder keypass totototo keystore monks.jks storepass tutututu vadty gtkeytoo st aas dder keystore monks.jks storepass tutututu dder, Tue Nov ET , keyEntry, ertfcate fngerprnt H EAAFFFA gtkeytoo genkey aas syvan keypass tatatata keystore monks.jks storepass tutututu gtkeytoo st keystore monks.jks storepass tutututu Keystore type jks Keystore provder UN Your keystore contans entres syvan, Tue Nov ET , keyEntry, ertfcate fngerprnt H AAAAF dder, Tue Nov ET , keyEntry, ertfcate fngerprnt H EAAFFFA Lste e K par dfaut re une entre avec une pare de c Lste aas dans e K re une autre entre avec une pare de c Lste es entres du K // D i d i e r D o n s e z , , J C E KeyTool Exemple / gtkeytoo export aas dder fe dder.cer keystore monks.jks storepass tutututu ertfcate stored n fe ltdder.cergt gtkeytoo prntcert fe dder.cer wner Nder onsez, UHA, UJF, Lrenobe, FR ssuer Nder onsez, UHA, UJF, Lrenobe, FR era number cfd vad from Tue Nov ET unt Fr Nov ET ertfcate fngerprnts H EAAFFFA hA EEEAAF gtkeytoo certreq aas dder fe dder.csr keystore monks.jks storepass tutututu keypass totototo gtkeytoo st keystore donsez.p storetype PK Export un entre sous a forme dun certfcat ER X Affche ce certfcat nere une demande de certfcaton Affche e contenu du K export de N un des provders dot supporter PK // D i d i e r D o n s e z , , J C E KeyTool Exemple / gtkeytoo mport aas nada fe nada.pb keystore monks.jks storepass tutututu wner NNada ennan, UTv, Uvh, Lvaencennes, Nord, FR ssuer NNada ennan, UTv, Uvh, Lvaencennes, Nord, FR era number c vad from Tue Nov ET unt un Hay ET ertfcate fngerprnts H AAAF hA AEEFAEFF Trust ths certfcate no yes ertfcate was added to keystore gtkeytoo st keystore monks.jks storepass tutututu Keystore type jks Keystore provder UN Your keystore contans entres nada, Tue Nov ET , trustedertEntry, ertfcate fngerprnt H AAAF syvan, Tue Nov ET , keyEntry, ertfcate fngerprnt H AAAAF dder, Tue Nov ET , keyEntry, ertfcate fngerprnt H EAAFFFA gtkeytoo deete aas syvan keystore monks.jks storepass tutututu mporte une entre e partr dun certfcat PK consdr de confance Lste es entres du K upprme une entre no, e certfcat nest pas ajout au K // D i d i e r D o n s e z , , J C E KeyTool Exemple / gtkeytoo prntcert fe donsez.cer wner EmaAddressdder.donsezmag.fr, Nder onsez, Ugta ass Netscape, UPersona Not vadated, Uquotwww.versgn.comrepostoryRPA ncorp. by Ref.,LA.LTcquot, Uvergn Trust Network, quotvergn, nc.quot ssuer Nvergn ass A ndvdua ubscrberPersona Not vadated, Uquotwww.versgn.comrepostoryRPA ncorp. y Ref.,LA.LTcquot, Uvergn Trust Network, quotvergn, nc.quot era number effbfbdfeabd vad from Tue Nov ET unt un Jan ET ertfcate fngerprnts H FFFF hA AAAAFAEFAE Affchage dun certfcat X ER sgn par un A et export de Netscape Export de Netscape ommuncator avec utsgtpton nternetgtontenugtertfcatsgtPersonne Export de E avec ommuncatorgtutsgtnformatons sur a scurtgtvos ertfcats lectionnez un certificet et exportez le // D i d i e r D o n s e z , , J C E Signature de code I Commande jarsigner Ajoute entres larchive pour chaque signataire alias Aliasname.SF Signature File Contient les noms des fichiers, le nom de lalgo de signature SHA, et les valeurs des rsum Aliasname.DSA Contient la signature du fichier Aliasname.SF Ajoute le Manifest Contient les rsums des entres I Fonctions Signature dune archive Java jarsigner options jarfile alias Verification dune archive Java jarsigner verify options jarfile I Voir SJ/v/lDVE/docs/tooldocs/win/jarsigner.html // D i d i e r D o n s e z , , J C E Outils Keytool et JarSigner JAVAHOME/docs/tooldocs/tools.htmlsecurity // D i d i e r D o n s e z , , J C E JarSigner Exemple gtjar cf archve.jar .cass .java gtjarsgner keystore dd.jks sgnedjar sarchve.jar archve.jar dder gtjarsgner verfy verbose sarchve.jar Tue Nov ET HETANFER.F Tue Nov ET HETANFER.A Tue Nov ET HETANF sm Tue Feb ET trongent.cass sm Tue Feb ET trongerver.cass sm Tue Feb ET trongent.java sm Tue Feb ET trongerver.java s sgnature was verfed m entry s sted n manfest k at east one certfcate was found n keystore at east one certfcate was found n dentty scope jar verfed. // D i d i e r D o n s e z , , J C E Echange scuris de cl KAP Key Agreement Protocol IMotivation change une cl secrte entre deux parties Application cl de session symtrique IProtocoles DiffieHellman PKCS, IJCE classe javax.crypto.KeyAgreement staticKeyAgreementgetInstanceStringalgorithm void initjava.security.Keykey KeydoPhaseKeykey, boolean lastPhase DH est fournit par JCE de Baltimore Under onstructon En onstructon // D i d i e r D o n s e z , , J C E Echange scuris de cl DiffieHellman . InitiaIisation . choisir un couple appropri de nombres premiers p et a, tels que ltaltp . a et p sont publies publiquement . ProtocoIe . Message sends a x p, for any lt x lt p sends a y p, for any lt y lt p . Actions B receives a x and calculates Ka x y B receives a y and calculates Ka y x // D i d i e r D o n s e z , , J C E Providers ILa liste http//java.sun.com/products/jce/jceproviders.html IQuelques providers Baltimore KeyTools http//www.baltimore.com RSA Security http//www.rsasecurity.com eSecexABA http//www.openjce.org/jce.html http//www.wumpus.com.au/crypto/aba.html http//www.bouncycastle.org/ Cryptix http//www.cryptix.org/products/jce/ Phaos Technology http//www.phaos.com/ EntrustR Technologies http//www.entrust.com/toolkit/java/index.htm DSTC http//security.dstc.edu.au/projects/java/release.html IAIK http//jcewww.iaik.at/ // D i d i e r D o n s e z , , J C E ABA JCE Provider I JDK ., ., ., . I Cipher RSA, DES, DESede, IDEA, Twofish, Blowfish, and RC. I Password Based Encryption PBE MD with DES, SHA with RC bits I Message digests SHA, SHA, and MD. I MAC DES, DESede, IDEA, HMACwithSHA, and HMACwithMD. I Keystore. I Key and Key pair generation I Signing MDwithRSA. // D i d i e r D o n s e z , , J C E Cryptix JCE Provider I URL http//www.cryptix.org I JDKs ., . and . I Ciphers Blowfish, CAST, DES, IDEA, MARS, RC, RC, RC, Rijndael, Serpent, SKIPJACK, Square, TripleDES, Twofish I Password Based Encryption PBE none I KeyAgreements DiffieHellman I Modes CBC, CFB, , , ..., blocksize, ECB, OFBblocksize, openpgpCFB I Hashes MD, MD, MD, RIPEMD, RIPEMD, SHA, SHA, SHA//, Tiger I MACs HMACMD, HMACMD, HMACMD, HMACRIPEMD, HMACRIPEMD, HMACSHA , HMACSHA, HMACTiger I Signatures RawDSA, RSASSAPKCS, RSASSAPSS I Assymetric ciphers RSA/PKCS, ElGamal/PKCS I SecureRandom SPIs /dev/urandomon systems that support it FreeBSD, Linux, OpenBSD and possibly other UNIXen // D i d i e r D o n s e z , , J C E Implmentation dun Provider JCE IImplmenter Une classe final Provider et des classes SPI CipherSpi, MessageDigestSpi, IVoir JAVAHOMEdocsguidesecurityHowToImplAProvider.html IExercice Le faire pour lalgorithme de CESAR // D i d i e r D o n s e z , , J C E Implmentation dun Provider JCE IExercice Un Provider pour lalgorithme de CESAR La classe Provider installer package monjce.jce.provder pubc fna cass HonJEProvder extends java.securty.Provder prvate statc fna trng NAHE quotHonJEquot, NF quotHonJE JE weak rypto Provderquot prvate statc fna doube vERN . pubc HonJEProvder superNAHE, vERN, NF EAR putquotpher.EARquot,quotmonjce.jce.provder.cpher.EARquot putquotAg.Aas.ypher.AEARquot,quotEARquot putquotKeyenerator.EARquot,quotmonjce.jce.provder.key.EARKeyeneratorquot putquotecretKeyFactory.Equot,quotmonjce.jce.provder.keyfactory.EARKeyFactoryquot Extra JCE // D i d i e r D o n s e z , , J C E PKCS PublicKey Cryptography Standards I ensemble de standards pour la mise en place des IGC, coordonn par RSA I dfinissent les formats des lments de cryptographie PKCS RSA Cryptography Standard Inclut PKCS et PKCS PKCS DiffieHellman Key Agreement Standard PKCS PasswordBased Cryptography Standard PKCS ExtendedCertificate Syntax PKCS Cryptographic Message Syntax PKCS PrivateKey Information Syntax PKCS Selected Attribute Types Standard PKCS Certification Request Syntax Standard PKCS Cryptographic Token Interface Standard PKCS Personal Information Exchange Syntax Standard PKCS Elliptic Curve Cryptography Standard PKCS Cryptographic Token Information Format Standard I Voir http//www.rsa.com/rsalabs/pkcs/ // D i d i e r D o n s e z , , J C E Cerificats X, PKI et CA IPKI Private Key Infrastructure http//www.verisign.com/resources/wp/index.html http//www.thawte.com/ https//www.entrust.com/developer/java/faqs.htm ICA Public Verign, Thawte, Entrust, Priv Motivation une socit est sa propre autorit de certification pour ses employs et ses applications dans les changes intranet. iPlanet Certificate Management Server developer.iplanet.com , OpenCA www.openca.org, IDXPKI idxpki.idealx.org // D i d i e r D o n s e z , , J C E JSSE et JAAS IJava Secure Socket Extension JSSE Extension aux sockets pour scuriser les protocoles bass sur TCP/IP HTTP, Telnet, NNTP, FTP, RMI SSL Secure Sockets Layer et TLS Transport Layer Security SecureSocket, SecureServerSocket, HttpsURLConnection, Utilise le JCE et ajoute un provider Intgr au JSE. Remarque Avant il fallait bricoler avec les SocketFactory IJava Authentication and Authorization Service JAAS Les PAM peuvent tre utiliss des moyens cryptographiques // D i d i e r D o n s e z , , J C E XML et Scurit IEvolution vers le gestion des cls en XML et vers les documents XML signs et chiffrs Spcifications XKMS XML Key Management Specification http//www.xmltrustcenter.org/xkms XML Digital Signature http//www.w.org/TR/xmldsigcore/ XML Digital Encryption http//www.w.org/TR/xmlenccore/ API Java JSR XML Trust Service APIs JSR XML Digital Signature APIs javax.security.xml.dsig JSR XML Digital Encryption APIs // D i d i e r D o n s e z , , J C E Cryptographie, JavaCard, Carte Crypto I Cartes puce pourvue de fonctions cryptographiques logicielles ou matrielles Cartes PKI GemSafe, CryptoSafe, I JavaCard Packages javacard.security. javacardx.crypto. pour les applets utilisant de la cryptographie IOCF CardService // D i d i e r D o n s e z , , J C E JCE et JME IMotivation Faible mmoire, KVM, Processeur cryptographique IPistes les API JavaCard Packages javacard.crypto. javacardx.crypto. Under onstructon En onstructon // D i d i e r D o n s e z , , J C E Bibliographie I Livre Jonathan B. Knudsen , Java Cryptography, Oreilly, st Edition, May , Scott Oaks, Java Security, Oreilly, nd Edition, May , Jamie Jaworski amp Paul J. Perrone, Java Security , Ed CampusPress, //, pages, ISBN , en Franais http//www.campuspress.net I Guide JAVAHOMEdocsguidesecurityCryptoSpec.html JAVAHOMEdocsguidesecurityHowToImplAProvider.html I Tutorial http//java.sun.com/docs/books/tutorial/security./index.html I Prsentation JavaOne http//servlet.java.sun.com/javaone/javaone/pdfs/e.pdf http//java.sun.com/products/jsse/JavaOneJSSE.pdf http//jsp.java.sun.com/javaone/javaone/pdfs/TS.pdf I Articles http//www.onjava.com/onjava/security/ Motivation I Fournit une API standard pour lusage de fonctions cryptographique Chiffrage, signature, I Plusieurs Cryptography Service Providers CSP cohabitent priorit du choix SPI Interface pour implanter un provider SUN fournit un Provider de rfrence Conu pour tre export en dehors des USA LGLHU RQVH amp Principes I Indpendance I Introprabilit I Extensibilit Nouveaux algorithmes AES par exemple I Architecture Providers amp Key Management I Concepts LGLHU RQVH amp Slection dimplmentations chez les Providers fabriques pour lobtention des instances XXX.getInstancealgo // le premier qui offre l implantation dans la liste des providers XXX.getInstancealgo,provider Architecture du JCE SS Cipher.getInstancequotDESquot Cipher.getInstancequotDESquot,quotABAquot Cipher.getInstancequotCesarquot SS ... SS , amp ampLSKHU HFXUHDQGRP .HJUHHPHQW .HHQHUDWRU.HDFWRU HVVDJHLJHVW amp LJQDWXUH amp XQamp , LGLHU RQVH amp amp , amp ampUSWL LQGMDHO Priorit Architecture du JCE SS Cipher.getInstancequotDESquot Cipher.getInstancequotDESquot,quotABAquot Cipher.getInstancequotCesarquot SS ... SS , amp ampLSKHU HFXUHDQGRP .HJUHHPHQW .HHQHUDWRU.HDFWRU HVVDJHLJHVW amp LJQDWXUH amp XQamp , LGLHU RQVH amp amp , amp ampUSWL LQGMDHO amp RQamp ampHVDU I Ajoutez les JAR comme des extensions du JDK ou au CLASSPATH I Positionnez les permissions pour le JCE GG WR ltjre homegtlibsecurityjava.RuntimePermission quotgetProtectionDomainquot.policy WKH IROORZLQJ grant codeBase quotfile/work/sunjceprovider.jarquot. . LGLHU RQVH amp . Installation I Chargez et dcompressez le JCE de Sun et dautres providers ABA.lang.io. quotreadquot.FilePermission quot/jdk..jarquot permission java. permission java.SecurityPermission quotputProviderProperty./jre/lib/ext/jce.SunJCEquot. permission java.security. Installation I Enregistrez les providers selon leurs priorits I Statiquement Fichier BMUHOLEVHFXULWMDYDVHFXULW. jce.net.provider.crypto.ABAProvider security.provider.cryptix.sun.provider.crypto. I A lexcution LGLHU RQVH amp MDYDVHFXULWHFXULWDGGURYLGHUQHZ FRPVXQFUSWRSURYLGHUXQamp.provider.aba.CryptixCrypto security.provider.provider.au.SunJCE security.provider. security.com. . MDYDVHFXULWHFXULWDGGURYLGHUQHZ DXQHWDEDFUSWRSURYLGHUURYLGHU. . . Les classes et interfaces de lAPI I Les packages java.Certificate CipherSpi .security.security.crypto javax.cert.cert javax.security java.interfaces javax.crypto.crypto.spec I Les classes et interfaces LGLHU RQVH amp Provider Security Cipher SecureRandom Key KeyPair KeyPairGenerator MessageDigest MAC Signature KeyStore Certificate java. SecureRandom Gnrateur de nombres alatoires strong pseudorandom number generator PRNG pour la gnration de cls. dans les challenges.QVWDQFHWULQJ DOJRULWKP. I Motivation I Obtenir/construire une instance dun gnrateur VWDWLF HFXUHDQGRP JHW. VWDWLF HFXUHDQGRP JHW.QVWDQFHWULQJ DOJRULWKP WULQJ SURYLGHU. algorithm SHAPRNG. EWHgt JHQHUDWHHHGLQW QXPWHV. QRPEUH GRFWHWV GH OD JUDLQH EWHgt JHQHUDWHHHGLQW QXPWHV. QRPEUH GRFWHWV GH OD JUDLQH VWDWLF EWHgt JHWHHGLQW QXPWHV. YRLG VHWHHGEWHgt VHHG. DYHF VHHGVLH RFWHWV GH VHHG YRLG VHWHHGORQJ VHHG. DYHF OHV RFWHWV GX ORQJ I Gnrer la graine seed I Initialiser et rinitialiser la graine du gnrateur LGLHU RQVH amp I Gnrer un nombre pseudoalatoire LQW QHWLQW QXPLWV. YRLG QHWWHVEWHgt EWHV. JpQpUp QXPLWV ELWV GH SRLGV IDLEOH DOpDWRLUH HW QXPLWV ELWV GH SRLGV IRUW j . Remarque sur la gnration des nombres alatoires PRNG la gnration de cls Ala de session attaque brute de la recherche du nombre gnr partir d hypothse sur la graine Horloge de la machine n est pas suffisante Doit tre complte par Memory Statistics. Keystroke Timing. I Motivation I Risque I Importance de la graine LGLHU RQVH amp I Voir KWWSZZZUVDVHFXULWFRPVROXWLRQVGHYHORSHUVZKLWHSDSHUVUWLFOHSG I IWSIWSUVDVHFXULWFRPSXESGIVEXOOSGI . Process Statistics. Mouse Movement. sig.generatePublicbobPubKeySpec. sig. PublicKey bobPubKey keyFactory.updatedata.KeyFactory Convertit et verifie une ou des cls partir d un objet existant Exemple XEncodedKeySpec bobPubKeySpec new XEncodedKeySpecbobEncodedPubKey.getInstancequotDSAquot. Gnration des cls I Publique/prive java. LGLHU RQVH amp I Secrte javax.crypto.KeyGenerator .KeyPairGenerator Cre une ou des cls partir d un objet existant java.crypto.initVerifybobPubKey.security.SecretKeyFactory Convertit et verifie une ou des cls partir d un objet existant I Commun javax. KeyFactory keyFactory KeyFactory.security. Signature sig Signature. sig.verifysignature.getInstancequotDSAquot. RSAPrivateCrtKey.HDLUHQHUDWRU VWDWLF .HDLUHQHUDWRU JHW.security. DSAPublicKey. byte getEncoded.Key PrivateKey. RSAPrivateKey. Gnrateur de cls prives/publiques I Interface java. String getFormat I Obtenir/counstruire une instance dun gnrateur . PublicKey DSAPrivateKey. RSAPublicKey Mthodes String getAlgorithm.QVWDQFHWULQJ DOJRULWKP. HDLUHQHUDWRU JHW. VWDWLF .QVWDQFHWULQJ DOJRULWKP WULQJ SURYLGHU. algorithm. I Initialiser le gnrateur YRLG LQLWLDOLHOJRULWKPDUDPHWHUSHF SDUDPV. YRLG LQLWLDOLHOJRULWKPDUDPHWHUSHF SDUDPV HFXUHDQGRP UDQGRP. YRLG LQLWLDOLHLQW NHVLH. YRLG LQLWLDOLHLQW NHVLH HFXUHDQGRP UDQGRP. .QLWLDOLHV WKH NH SDLU JHQHUDWRU IRU D FHUWDLQ NHVLH ZLWK WKH JLYHQ VRXUFH RI UDQGRPQHVV DQG D GHIDXOW SDUDPHWHU VHW. LGLHU RQVH amp I Gnrer une paire de cls .HDLU I Rcuprer les cls de .H JHWULYDWH.HDLU ULYDWH. H JHWXEOLF. XEOLF. .HDLU JHQ.HDLU. . Gnration des cls prives/publiques DQGRP QXPEHU HFXUHDQGRP UDQGRP HFXUHDQGRPJHW.QVWDQFH . LJLWDO LJQDWXUH OJRULWKP .QVWDQFH .HDLUHQHUDWRU NHHQ .HDLUHQHUDWRUJHW. LQW ELWVLH NHHQLQLWLDOLHELWVLH UDQGRP. .H SDLU .HDLU.HDLU SDLU NHHQJHQHUDWH. ULYDWH.H SULY SDLUJHWULYDWH. XEOLF.H SXE SDLUJHWXEOLF. LGLHU RQVH amp . HDFWRUJHW.HDFWRU IDFW .QVWDQFH . Convertion des cls prives/publiques . HSHF QHZ VFLLQFRGHG.HSHFDUJVgt. IDEULTXHU OD FOp SULYpH VFLLQFRGHG.HSHF SULY. H NHULY IDFWJHQHUDWHULYDWHSULY. ULY.HSHF. FKLIIUHU DYHF OD FOp SULYpH ampLSKHU HQF ampLSKHUJHW.QVWDQFH amp.ampDGGLQJ . HQFLQLWampLSKHUampltB NHULY UDQG. IDEULTXHU OD FOp SXEOLTXH VFLLQFRGHG.HSHFDUJVgt.HSHF QHZ VFLLQFRGHG.HSHF SXE. H NHXE IDFWJHQHUDWHXEOLFSXE.HSHF. XEOLF. QVWDQFH amp. GpFKLIIUHU DYHF OD FOp SXEOLTXH ampLSKHU GHF ampLSKHUJHW.ampDGGLQJ . GHFLQLWampLSKHUampltB NHXE. LGLHU RQVH amp . Cipher / I Fonction De chiffrage/dchiffrage cl symtrique SKC ou asymtrique DSK VWDWLF ampLSKHU JHW.QVWDQFHWULQJ DOJRULWKP. VWDWLF ampLSKHU JHW.QVWDQFHWULQJ DOJRULWKP WULQJ SURYLGHU. H NH. quotDES/CFB/NoPaddingquot. quotRSA/ECB/PKCSPaddingquot YRLG LQLWLQW RSPRGH . algorithmspcifie l algorithme / le mode / le padding compltion Ex quotDES/CBC/PKCSPaddingquot. quotDES/OFB/PKCSPaddingquot. H NH OJRULWKPDUDPHWHUV SDUDPV. YRLG LQLWLQW RSPRGH . YRLG LQLWLQW RSPRGH .H NH OJRULWKPDUDPHWHUSHF SDUDPV. H NH OJRULWKPDUDPHWHUSHF SDUDPV HFXUHDQGRP UDQGRP. YRLG LQLWLQW RSPRGH . YRLG LQLWLQW RSPRGH .H NH OJRULWKPDUDPHWHUV SDUDPV HFXUHDQGRP UDQGRP. H NH HFXUHDQGRP UDQGRP. YRLG LQLWLQW RSPRGH . I Obtenir une instance I Initialiser avec lopration ENCRYPTMODE DECRYPTMODE et la cl LGLHU RQVH amp . Cipher / I Chiffrer/dchiffer lentre LGLHU RQVH amp I Finaliser EWHgt XSGDWHEWHgt LQSXW. EWHgt XSGDWHEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ. LQW XSGDWHEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ EWHgt RXWSXW. LQW XSGDWHEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ EWHgt RXWSXW LQW RXWSXWIIVHW. car il reste des donnes qui n ont pas t chiffres dans l instance EWHgt GRLQDO. EWHgt GRLQDOEWHgt LQSXW. LQW GRLQDOEWHgt RXWSXW LQW RXWSXWIIVHW. EWHgt GRLQDOEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ. LQW GRLQDOEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ EWHgt RXWSXW. LQW GRLQDOEWHgt LQSXW LQW LQSXWIIVHW LQW LQSXW/HQ EWHgt RXWSXW LQW RXWSXWIIVHW. WULQJ JHWOJRULWKP. URYLGHU JHWURYLGHU. OJRULWKPDUDPHWHUV JHWDUDPHWHUV. .QW JHWORFNLH. HWXUQV WKH EORFN VLH LQ EWHV. LQW JHWXWSXWLHLQW LQSXW/HQ. I Extra HWXUQV WKH OHQJWK LQ EWHV WKDW DQ RXWSXW EXIIHU ZRXOG QHHG WR EH LQ RUGHU WR KROG WKH UHVXOW RI WKH QHW XSGDWH RU GRLQDO RSHUDWLRQ JLYHQ WKH LQSXW OHQJWK LQSXW/HQ LQ EWHV. . CipherInputStream javax. Cipher ciph ciph doit tre compltement initialis LGLHU RQVH amp .io.io.InputStream is. Cipher ciph CipherOutputStreamjava.crypto.CipherOutputStream Appliquer une fonction de chiffrage/dchiffrage sur un InputStreamou un OutputStream tendent java.crypto.FilterOutputStream I Motivation I Constructeur CipherInputStreamjava. javax.io.OutputStream is.FilterInputStream et java.io. H VHF.QSXWWUHDP LV SXEOLF YRLG GHFUSW. Exemples SecretKey Data ENCRYPTMODE Cipher Encrypted Data DECRYPTMODE Cipher Data SXEOLF YRLG HQFUSW.H.QSXWWUHDP LV XWSXWWUHDP RVWULQJ DOJR HFUHW. XWSXWWUHDP RVWULQJ DOJR HFUHW.H VHF.H. WKURZV FHSWLRQ WKURZV FHSWLRQ ampLSKHU F FLSKHUJHW.QVWDQFHDOJR. QVWDQFHDOJR. ampLSKHU F FLSKHUJHW. H. FLQLWampLSKHUampltB VHF. H. FLQLWampLSKHUampltB VHF. QSXWWUHDP FLV ampLSKHU. ampLSKHU.QSXWWUHDPLV F .QSXWWUHDP FLV QHZ ampLSKHU. QSXWWUHDP LV F . QHZ ampLSKHU. LQW L ZKLOH L FLVUHDG. . . LQW L ZKLOH L FLVUHDG. . . RVZULWHL. RVZULWHL. LGLHU RQVH amp . Password Based Encryption PBE I Chiffrage/Dchiffrer partir dun mot de passe Les mots de passe ne sont pas des cls sures I Ide Appliquer une fonction de hachage scuris MD.SHA. sur le mot de passe pour fabriquer une cl secrte I Standard Password PBEWithMDAndDES PKCS MessageDigest PBEWithSHAAndBitRC PKCS SecretKey LGLHU RQVH amp Data ENCRYPTMODE Cipher Encrypted Data DECRYPTMODE Cipher Data . PBE Cration du chiffreur/Dchiffreur WULQJ PRGH DUJYgt WULQJ SDVVZRUG DUJYgt EWHgt VDOW EWH. F EWH. EWH. EWH. F EWH. H EWH. F EWH. HH EWH. LQW FRXQW DUDPHWHUSHF SDUDPSHF QHZ DUDPHWHUSHF VDOW FRXQW . HSHF NHSHF QHZ . .HSHFSDVVZRUGWRampKDUUUD. . HDFWRU NI HFUHW.HDFWRUJHW. HFUHW.QVWDQFH LWKQG . H SDVVZRUG.H NIJHQHUDWHHFUHW NHSHF . HFUHW. QVWDQFH LWKQG . ampLSKHU F ampLSKHUJHW. LI PRGHHTXDOV HQFUSW . . FLQLWampLSKHUampltB SDVVZRUG.H SDUDPSHF. HOVH LI PRGHHTXDOV GHFUSW . . H SDUDPSHF. FLQLWampLSKHUampltB SDVVZRUG. HOVH LGLHU RQVH amp . int len void reset // remise zro du calcul I Produire le rsum public byte digest public byte digestbyte input I Voir aussi java. int offset. SHA.security. I Alimenter le calcul LGLHU RQVH amp void updatebyte input void updatebyte input void updatebyte input. MessageDigest Hachage Scuris I Fonction produire un rsum avec une fonction de hachage scuris I Obtenir une instance static MessageDigest getInstanceString algorithm static MessageDigest getInstanceString algorithm.security.DigestInputStream. String provider algorithmSHA.DigestOutputStream . MD. java. QVWDQFH . Hachage scuris des donnes dun fichier EWDLQ D PHVVDJH GLJHVW REMHFW HVVDJHLJHVW PG HVVDJHLJHVWJHW. ampDOFXODWH WKH GLJHVW IRU WKH JLYHQ ILOH LOH.QSXWWUHDP ILV QHZ LOH.QSXWWUHDPDUJVgt. QSXWWUHDP EXILQ QHZ XIIHUHG. XIIHUHG.QSXWWUHDPILV. EWHgt EXIIHU QHZ EWHgt LQW OHQJWK ZKLOH OHQJWK EXILQUHDGEXIIHU. . PGXSGDWHEXIIHU OHQJWK. EXILQFORVH. EWHgt UDZ PGGLJHVW. . LGLHU RQVH amp . MAC HVVDJH XWKHQWLFDWLRQ ampRGH produire un rsum avec une fonction de hachage scuris avec une cl VWDWLF amp JHW.QVWDQFHWULQJ DOJRULWKP. QVWDQFHWULQJ DOJRULWKP WULQJ SURYLGHU. VWDWLF amp JHW. algorithmDESMac.H NH. I Fonction I Obtenir une instance I Initialiser avec une cl I Alimenter YRLG LQLW. H NH OJRULWKPDUDPHWHUSHF SDUDPV. YRLG LQLW. YRLG XSGDWHEWH LQSXW. YRLG XSGDWHEWHgt LQSXW. YRLG XSGDWHEWHgt LQSXW LQW RIIVHW LQW OHQ. YRLG UHVHW. UHPLVH j pUR GX FDOFXO HW GH OD FOp RQ GRLW UpLQLWLDOLVHU DYHF XQH FOp. EWHgt GRLQDO. YRLG GRLQDOEWHgt RXWSXW LQW RXWIIVHW. EWHgt GRLQDOEWHgt LQSXW. LGLHU RQVH amp I Gnrer le MAC . QVWDQFHWULQJ DOJRULWKP. Signature I Fonction Produire vrifier une signature partir d une cl prive publique VWDWLF LJQDWXUH JHW. QVWDQFHWULQJ DOJRULWKP WULQJ SURYLGHU. VWDWLF LJQDWXUH JHW. . MDwithRSA. I Initialiser avec une cl prive pour la signature I Initialiser avec une cl publique pour la vrification I Alimenter pour la signature et la vrification YRLG XSGDWHEWH LQSXW. MDwithRSA. SHAwithRSA. I Obtenir une instance algorithm SHAwithDSA. YRLG XSGDWHEWHgt LQSXW. YRLG XSGDWHEWHgt LQSXW LQW RIIVHW LQW OHQ. YRLG UHVHW. UHPLVH j pUR GX FDOFXO EWHgt VLJQ. H.H SXEOLF. YRLG LQLWHULIXEOLF. H SULYDWH.H. YRLG LQLWLJQULYDWH. LGLHU RQVH amp I Gnrer la signature VL LQLWLJQSULY. . I Vrifier la signature VL LQLWHULISXE. . ERROHDQ YHULIEWHgt VLJQDWXUHRHULI. . Signature Signer des donnes HW WKH SULYDWH NH ULYDWH.H SULY SDLUJHWULYDWH. HW UHDG WR VLJQ LJQDWXUH GVD LJQDWXUHJHW.QVWDQFH ZLWK . JLYH LW RXU SULYDWH NH GVDLQLWLJQSULY. JLYH WKH DOJ WKH GDWD XIIHUHG.QSXWWUHDPQHZ LOH.QSXWWUHDP EXILQ QHZ XIIHUHG.QSXWWUHDPDUJVgt. . EWHgt EXIIHU QHZ EWHgt LQW OHQ ZKLOH EXILQDYDLODEOH. . OHQ EXILQUHDGEXIIHU. GVDXSGDWHEXIIHU OHQ. EXILQFORVH. JHQHUDWH WKH VLJQDWXUH EWHgt UHDOLJ GVDVLJQ. LGLHU RQVH amp . Vrifier des donnes HW WKH VLJQDWXUH WR YHULI EWH WRHHULILJ HW WKH SXEOLF NH XEOLF. Signature .H SXE SDLUJHWXEOLF. QVWDQFH ZLWK . HW UHDG WR VLJQ LJQDWXUH GVD LJQDWXUHJHW. JLYH LW RXU SXEOLF NH GVDLQLWHULISXE. QSXWWUHDP QHZ LOH. JLYH WKH DOJ WKH GDWD XIIHUHG.QSXWWUHDP EXILQ QHZ XIIHUHG.QSXWWUHDPDUJVgt. . EWHgt EXIIHU QHZ EWHgt LQW OHQ ZKLOH EXILQDYDLODEOH. . OHQ EXILQUHDGEXIIHU. GVDXSGDWHEXIIHU OHQ. EXILQFORVH. YHULI WKH VLJQDWXUH LIGVDYHULIWRHHULILJ. WUXH. VWHPRXWSULQWOQ LJQDWXUH LV FRUUHFW . HOVH VWHPRXWSULQWOQ LJQDWXUH LV FRUUHFW . LGLHU RQVH amp . Certificat I Motivation Associer une identit subject avec sa cl publique et certifier le tout par une autorit de certification CA Support de stockage et du diffusion de la cl publique I Notions PKI Public Key Infrastructure Identity Unix UID. java. business. program.security. computer.security.XCRL .Certificat.CRL.security. X.cert.cert. LGLHU RQVH amp I Classes java. Issuer celui qui a mis le certificat ie le CA CRL Certificate Revocation List RLU FRXUV . bank.CertificateFactory java.security. organization. Distinguished Name.XCertificat java.security.cert. java. Entity person.cert..cert. CertificatFactory I Rcuprer une instance static CertificateFactory getInstanceString type static CertificateFactory getInstanceString type. String provider typeX I Gnrer le ou les Certificates prsents dans le inStream Certificate generateCertificateInputStream inStream Collection generateCertificatesInputStream inStream LGLHU RQVH amp I Gnrer le ou les CRL prsents dans le inStream CRL generateCRLInputStream inStream Collection generateCRLsInputStream inStream . void verifyPublicKey key throws CertificateException. String sigProvider throws CertificateException. SignatureException. DER Principal getSubjectDN void checkValidity void checkValidityDate date // pour la priode donne. I Consulter un Certificat X LGLHU RQVH amp I Vrifier un Certificate . SignatureException. Certificate et XCertificate I Consulter un Certificat PublicKey getPublicKey // rcupre la cl public pour vrifier une signature byte getEncoded // retourne lencodage ASN. void verifyPublicKey key. Date getNotAfter // date de fin la priode de validit Date getNotBefore // date de fin la priode de validit Principal getIssuerDN // DN de lmtteur CA BigInteger getSerialNumber String getSigAlgName // algorithme de signature byte getSigAlgParams // paramtre de lalgorithme byte getSignature Lve une exception CertificateException. Set getRevokedCertificates I Dtail dune XCRLEntry LGLHU RQVH amp byte getEncoded // retourne lencodage ASN. CRL et XCRLEntry I Motivation Liste de rvocation des certificats Cl corrompue. DER. I Tester la rvocation dun Certificate dans une CRL boolean isRevokedCertificate cert I Parcourir les entres dune CRL XCRLEntry getRevokedCertificateBigInteger serialNumber . Date getRevocationDate BigInteger getSerialNumber boolean hasExtensions . employ licenci. Trusted Certificate Entry Certificat appartenant une entity dans laquelle le keystore fait confiance Chaque entre est dsigne par un alias .security. private key rfrence vers le certificat. prives et certificats dans un fichier keystore L accs au fichier est protg par une cl storepass I Consultation/Modification classe java.KeyStore Outil keytool du JDK I Concepts Reprsente la structure de stockage des entres cls et certificats Key Entry LGLHU RQVH amp secret key. Stockage des paires de cls I Motivation Stockage scuris de cls publiques. QVWDQFHWULQJ WSH.HWRUH JHW. KeyStore I Protection Le keystore est protg par un mot de passe Chaque entre peut tre protge par un deuxime niveau de mot de passe I Obtenir une instance VWDWLF . VWDWLF .HWRUH JHW.QVWDQFHWULQJ WSH WULQJ SURYLGHU. VWDWLF WULQJ JHWHIDXOWSH. WULQJ JHWSH. PKCS prsent dans JSSE Retourne la proprit Java keystore.QSXWWUHDP VWUHDP FKDUgt SDVVZRUG.type configure dans le fichier java.security LGLHU RQVH amp I Charger/Stocker le KeyStore YRLG ORDG. Retourne le type du keystore typejks. YRLG VWRUHXWSXWWUHDP VWUHDP FKDUgt SDVVZRUG. FKDUJH OHV HQWUpHV SURWpJpHV SDU XQ PRW GH SDVVH VDXYHJDUGH OHV HQWUpHV HQ SURWpJHDQW DYHF OH PRW GH SDVVH . KeyStore I Parcourir le KeyStore LGLHU RQVH amp I Modifier une entre LQW VLH. QRPEUH GHQWUpHV QXPHUDWLRQ DOLDVHV. ERROHDQ FRQWDLQVOLDVWULQJ DOLDV. ampHUWLILFDWH JHWampHUWLILFDWHWULQJ DOLDV. ampHUWLILFDWHgt JHWampHUWLILFDWHampKDLQWULQJ DOLDV. WULQJ JHWampHUWLILFDWHOLDVampHUWLILFDWH FHUW. DWH JHWampUHDWLRQDWHWULQJ DOLDV. H JHW.HWULQJ DOLDV FKDUgt SDVVZRUG. . ERROHDQ LVampHUWLILFDWHQWUWULQJ DOLDV. HQWUWULQJ DOLDV. ERROHDQ LV. YRLG GHOHWHQWUWULQJ DOLDV. YRLG VHWampHUWLILFDWHQWUWULQJ DOLDV ampHUWLILFDWH FHUW. YRLG VHW.HQWUWULQJ DOLDV EWHgt NH ampHUWLILFDWHgt FKDLQ. YRLG VHW.H NH FKDUgt SDVVZRUG ampHUWLILFDWHgt FKDLQ.HQWUWULQJ DOLDV . OHQWUpH HVW SURWpJpH SDU XQ DXWUH PRW GH SDVVH . NS.cer PKCS .pb contient une chane de certificats .export pour les Navigateurs et les Mailers IE. . KeyStore et formats I Formats de KeyStore Contient des paires de cls Requiert une passphase pour protger l accs aux paires de cls PBE JKS format propritaire de SUN fournis et utilis par dfaut par les outils Java Provider JCE PKCS . Fournis et utilis par JSSE Provider JCE de JSSE LGLHU RQVH amp I Formats de Certificat DER X .pfx.p format d change import. QVWDQFH . .HWRUHJHW. Exemple avec KeyStore .HWRUH NV . NVORDGLOH.QSXWWUHDPDUJYgt. HWRUH WRampKDUUUD. RWHDVVH. . SULQWDOLDVNV. ampHUWLILFDWHDFWRU FI ampHUWLILFDWHDFWRUJHW.QVWDQFH . . QSXWWUHDP LV QHZ LOH.QSXWWUHDPDUJYgt. . ampHUWLILFDWH FHUW FIJHQHUDWHampHUWLILFDWHLV. NVVHWampHUWLILFDWHQWU PILUVW FHUW. SULQWDOLDVNV. HDLUHQHUDWRUJHW.HDLUHQHUDWRU NSJ . .QVWDQFH . HWRUH VWRUH. SULYDWH VWDWLF YRLG SULQWDOLDV. NSJLQLWLDOLH QHZ HFXUHDQGRP. . VWHPRXWSULQWOQ VLH VWRUHVLH. . .HDLU.HDLU SDLU NSJJHQHUDWH. VWHPRXWSULQWOQ DOLDVHV . ULYDWH.H SNH SDLUJHWULYDWH. HQWU WRampKDUUUD. LGLHU RQVH amp ampHUWLILFDWHgt FHUWV FHUW NVVHW.HQWU PVHFRQG SNH RWHDVVH. FHUWV. SULQWDOLDVNV. IRU QXPHUDWLRQ HQXP VWRUHDOLDVHV. HQXPKDVRUHOHPHQWV. . VWHPRXWSULQWHQXPQHWOHPHQW. WRWULQJ. . NVVWRUHLOHXWSXWWUHDPDUJYgt. RWHDVVH.HWRUH WRampKDUUUD. . ampHUWLILFDWH FHUW NVJHWampHUWLILFDWH PILUVW . . Gnre une demande CSR Certificate Signing Request pour envoi et signature une autorit de certification CA supprime une entre. assigne un mot de passe une entre. assigne un mot de passe un keystore. LGHQWLWGE LGLHU RQVH amp Visualisation OLVW SULQWFHUW HSRUW FHUWUHT Exportation d une entre Gestion GHOHWH NHSDVVZG VWRUHSDVVZG . Liste les entres du keystore Affiche le contenu du certificat Exporte la cl publique dans un certificat. KeyTool I Commande pour la gestion de fichiers keystore keytool command options NHVWRUH NHVWRUHILOH VWRUHSDVV VWRUHSDVV NHSDVV NHSDVV DOLDV DOLDV I Options I Commandes Cration d un fichier keystore et de ses entres JHQNH LPSRUW cre une entre avec une paire de cl dans un certificat autosign importe soit un certificat considr de confiance trusted certificate ou un certificat sign par un CA il remplace le certificat autosign importe des informations d une base d identit JDK . KeyTool Exemple / le KS des CA NHWRRO OLVW NHVWRUH BMUHOLEVHFXULWFDFHUWV VWRUHSDVV FKDQJHLW .HVWRUH WSH MNV .HVWRUH SURYLGHU ltRXU NHVWRUH FRQWDLQV HQWULHV YHULVLJQFODVVFD RQ XQ amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampampamp YHULVLJQVHUYHUFD RQ XQ amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . amp WKDZWHVHUYHUFD UL HE amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampampampampamp WKDZWHSHUVRQDOEDVLFFD UL HE amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampamp YHULVLJQFODVVFD RQ XQ amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampamp WKDZWHSHUVRQDOIUHHPDLOFD UL HE amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampampampampampampamp WKDZWHSHUVRQDOSUHPLXPFD UL HE amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . amp WKDZWHSUHPLXPVHUYHUFD UL HE amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW . ampampamp Liste les certificats des CA LGLHU RQVH amp . KeyTool Exemple / NHWRRO OLVW NHWRRO HUURU .HVWRUH ILOH GRHV QRW HLVW KRPHGRQVHNHVWRUH /LVWH OH . R O UHQREOH F ampUpH XQH HQWUpH DYHF DOLDV GLGLHU NHSDVV WRWRWRWR NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX YDOLGLW XQH SDLUH GH FOp NHWRRO OLVW DOLDV GLGLHU NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX GLGLHU XH RY amp NHQWU ampHUWLILFDWH ILQJHUSULQW . SDU GpIDXW NHWRRO JHQNH GQDPH FQ LGLHU RQVH RX . HVWRUH WSH MNV .HVWRUH SURYLGHU ltRXU NHVWRUH FRQWDLQV HQWULHV VOYDLQ XH RY amp NHQWU ampHUWLILFDWH ILQJHUSULQW . ampUpH XQH DXWUH HQWUpH NHWRRO JHQNH DOLDV VOYDLQ NHSDVV WDWDWDWD NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWXDYHF XQH SDLUH GH FOp NHWRRO OLVW NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX . /LVWH ODOLDV GDQV OH . ampamp GLGLHU XH RY amp NHQWU ampHUWLILFDWH ILQJHUSULQW . /LVWH OHV HQWUpHV GX . LGLHU RQVH amp . / UHQREOH amp HULDO QXPEHU FIG DOLG IURP XH RY amp XQWLO UL RY amp ampHUWLILFDWH ILQJHUSULQWV ampamp LGLHU RQVH amp SRUW XQ HQWUpH VRXV OD IRUPH GXQ FHUWLILFDW .. / UHQREOH amp .VVXHU amp LGLHU RQVH . KeyTool Exemple / NHWRRO HSRUW DOLDV GLGLHU ILOH GLGLHUFHU NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX ampHUWLILFDWH VWRUHG LQ ILOH GLGLHUFHU NHWRRO SULQWFHUW ILOH GLGLHUFHU ZQHU amp LGLHU RQVH . amp pQqUH XQH GHPDQGH GH FHUWLILFDWLRQ IILFKH OH FRQWHQX GX .amp. IILFKH FH FHUWLILFDW NHWRRO FHUWUHT DOLDV GLGLHU ILOH GLGLHUFVU NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX NHSDVV WRWRWRWR NHWRRO OLVW NHVWRUH GRQVHS VWRUHWSH . HSRUWp GH XQ GHV SURYLGHUV GRLW VXSSRUWHU . . HVWRUH SURYLGHU ltRXU NHVWRUH FRQWDLQV HQWULHV QDGLD XH RY amp WUXVWHGampHUWQWU ampHUWLILFDWH ILQJHUSULQW .VVXHU amp DGLD HQQDQL . amp / DOHQFLHQQHV RUG amp . amp / DOHQFLHQQHV RUG amp HULDO QXPEHU F DOLG IURP XH RY amp XQWLO XQ D amp ampHUWLILFDWH ILQJHUSULQWV ampamp amp UXVW WKLV FHUWLILFDWHquot gtQR HV ampHUWLILFDWH ZDV DGGHG WR NHVWRUH NHWRRO OLVW NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX .HVWRUH WSH MNV . KeyTool Exemple / NHWRRO LPSRUW DOLDV QDGLD ILOH QDGLDSE NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX ZQHU amp DGLD HQQDQL . ampamp VOYDLQ XH RY amp NHQWU ampHUWLILFDWH ILQJHUSULQW . ampamp GLGLHU XH RY amp NHQWU ampHUWLILFDWH ILQJHUSULQW . amp .PSRUWH XQH HQWUpH j SDUWLU GXQ FHUWLILFDW . NHWRRO GHOHWH DOLDV VOYDLQ NHVWRUH PRQNVMNV VWRUHSDVV WXWXWXWX . LGLHU RQVH amp XSSULPH XQH HQWUpH . /LVWH OHV HQWUpHV GX . FRQVLGpUp GH FRQILDQFH L gtQR OH FHUWLILFDW QHVW SDV DMRXWp DX . /F.QIRUPDWLRQV VXU OD VpFXULWpRV ampHUWLILFDWV pOHFWLRQQH XQ FHUWLILFDW HW HSRUWH OH LGLHU RQVH amp NHWRRO SULQWFHUW ILOH GRQVHFHU IILFKDJH GXQ FHUWLILFDW ZQHU PDLOGGUHVV GLGLHUGRQVHLPDJIU amp LGLHU RQVH . DYHF ampRPPXQLFDWRUXWLOV. KeyTool Exemple / SRUW GH HWVFDSH ampRPPXQLFDWRU DYHF XWLOVSWLRQ . ampODVV HWVFDSH HW HSRUWp GH HWVFDSH HUVRQD RW DOLGDWHG ZZZYHULVLJQFRPUHSRVLWRU .QFRUS E HI/. VLJQp SDU XQ amp LJLWDO .QWHUQHWampRQWHQXampHUWLILFDWVHUVRQQHO SRUW GH . QGLYLGXDO XEVFULEHUHUVRQD RW DOLGDWHG ZZZYHULVLJQFRPUHSRVLWRU .QFRUS HI/.QF ./F.VVXHU amp HULLJQ ampODVV amp . HULLJQ UXVW HWZRUN HULLJQ . HULLJQ UXVW HWZRUN HULLJQ .QF HULDO QXPEHU HIIEIEGIHDEG DOLG IURP XH RY amp XQWLO XQ DQ amp ampHUWLILFDWH ILQJHUSULQWV ampampamp ampamp . et les valeurs des rsum Aliasname.SF Ajoute le Manifest Contient les rsums des entres I Fonctions Signature d une archive Java jarsigner options jarfile alias LGLHU RQVH amp Verification d une archive Java jarsigner verify options jarfile I Voir Bdocs/tooldocs/win/jarsigner. le nom de l algo de signature SHA.DSA Contient la signature du fichier Aliasname.SF Signature File Contient les noms des fichiers.html . Signature de code I Commande jarsigner Ajoute entres l archive pour chaque signataire alias Aliasname. Outils Keytool et JarSigner BGRFVWRROGRFVWRROVKWPO VHFXULW LGLHU RQVH amp . XH RY amp ..... XH RY amp . JarSigner Exemple MDU FI DUFKLYHMDU FODVV MDYD MDUVLJQHU NHVWRUH GGMNV VLJQHGMDU VDUFKLYHMDU DUFKLYHMDU GLGLHU MDUVLJQHU YHULI YHUERVH VDUFKLYHMDU XH RY amp . XH HE amp WURQJampOLHQWFODVV XH HE amp WURQJHUYHUFODVV XH HE amp WURQJampOLHQWMDYD XH HE amp WURQJHUYHUMDYD VLJQDWXUH ZDV YHULILHG HQWU LV OLVWHG LQ PDQLIHVW DW OHDVW RQH FHUWLILFDWH ZDV IRXQG LQ NHVWRUH DW OHDVW RQH FHUWLILFDWH ZDV IRXQG LQ LGHQWLW VFRSH LGLHU RQVH amp VP VP VP VP V P N L MDU YHULILHG . crypto.security.Key key Key doPhaseKey key.KeyAgreement LGLHU RQVH amp static KeyAgreementgetInstanceString algorithm void initjava. Echange scuris de cl KAP Key Agreement Protocol change une cl secrte entre deux parties Application cl de session symtrique I Motivation I Protocoles DiffieHellman PKCS. boolean lastPhase DH est fournit par JCE de Baltimore QGHU ampRQVWUXFWLRQ Q ampRQVWUXFWLRQ . I JCE classe javax. for any lt x lt S sends Dy S.QLWLDOLVDWLRQ URWRFROH Message choisir un couple appropri de nombres premiers S HW D. for any lt y lt S receives Dx and calculates KDxy receives Dy and calculates KDyx . Echange scuris de cl DiffieHellman . . . tels que ltDltS a et p sont publies publiquement LGLHU RQVH amp FWLRQV sends Dx S. . html http//www.entrust.htm DSTC http//security. Providers I La liste http//java.wumpus.au/projects/java/release.com/ EntrustR Technologies http//www.phaos.sun.edu.at/ .cryptix.org/ LGLHU RQVH amp Cryptix http//www.html IAIK http//jcewww.baltimore.au/crypto/aba.dstc.org/jce.openjce.bouncycastle.com eSec exABA http//www.com.com/toolkit/java/index.iaik.org/products/jce/ Phaos Technology http//www.rsasecurity.com RSA Security http//www.html http//www.html I Quelques providers Baltimore KeyTools http//www.com/products/jce/jceproviders. . Blowfish. I Key and Key pair generation I Signing MDwithRSA. . . DES. and HMACwithMD.. . IDEA. I MAC DES. and RC. I Password Based Encryption PBE MD with DES. DESede. LGLHU RQVH amp I Keystore. SHA with RC bits I Message digests SHA. IDEA. DESede. ABA JCE Provider I JDK . SHA. HMACwithSHA. I Cipher RSA. Twofish. and MD.. . . HMACSHA. HMACMD. Serpent. ElGamal/PKCS /dev/urandom on systems that support it FreeBSD. Cryptix JCE Provider I URL http//www. MD.org I JDKs . MD. OpenBSD and possibly other UNIXen I Signatures I Assymetric ciphers I SecureRandom SPIs . . ECB. Linux. LMQGDHO..cryptix. RIPEMD. RC. RSASSAPSS RSA/PKCS. Twofish none DiffieHellman CBC. openpgpCFB MD. OFBblocksize. Tiger I Password Based Encryption PBE I KeyAgreements I Modes I Hashes I MACs LGLHU RQVH amp HMACMD. CAST. HMACRIPEMD. I Ciphers Blowfish. and . HMACMD. RC. DES. . . SHA//. SHA. Square. SKIPJACK. CFB. HMACRIPEMD.. RSASSAPKCS. HMACSHA. blocksize. RIPEMD. SHA. TripleDES. MARS. HMACTiger RawDSA. RC. .. IDEA. I Voir JAVAHOMEdocsguidesecurityHowToImplAProvider. MessageDigestSpi.html LGLHU RQVH amp I Exercice Le faire pour l algorithme de CESAR . Implmentation dun Provider JCE I Implmenter Une classe final Provider et des classes SPI CipherSpi. Implmentation dun Provider JCE I Exercice Un Provider pour l algorithme de CESAR La classe Provider installer SDFNDJH PRQMFHMFHSURYLGHU SXEOLF ILQDO FODVV RQampURYLGHU HWHQGV MDYDVHFXULWURYLGHU SULYDWH VWDWLF ILQDO WULQJ RQamp . SXEOLF RQampURYLGHU. RQamp amp HDN ampUSWR URYLGHU SULYDWH VWDWLF ILQDO GRXEOH . . . VXSHU . amp SXW ampLSKHUamp PRQMFHMFHSURYLGHUFLSKHUamp . SXW OJOLDVampSKHUamp amp . SXW .HHQHUDWRU .HHQHUDWRUamp PRQMFHMFHSURYLGHUNHamp. HDFWRU PRQMFHMFHSURYLGHUNHIDFWRUamp. SXW HFUHW.HDFWRU . LGLHU RQVH amp . Extra JCE . com/rsalabs/pkcs/ . PKCS XEOLF. coordonn par RSA I dfinissent les formats des lments de cryptographie PKCS RSA Cryptography Standard Inclut PKCS et PKCS LGLHU RQVH amp PKCS DiffieHellman Key Agreement Standard PKCS PasswordBased Cryptography Standard PKCS ExtendedCertificate Syntax PKCS Cryptographic Message Syntax PKCS PrivateKey Information Syntax PKCS Selected Attribute Types Standard PKCS Certification Request Syntax Standard PKCS Cryptographic Token Interface Standard PKCS Personal Information Exchange Syntax Standard PKCS Elliptic Curve Cryptography Standard PKCS Cryptographic Token Information Format Standard I Voir http//www.rsa.H ampUSWRJUDSK WDQGDUGV I ensemble de standards pour la mise en place des IGC. com/developer/java/faqs. Cerificats X. OpenCA www.com/ https//www.thawte. Priv LGLHU RQVH amp Motivation une socit est sa propre autorit de certification pour ses employs et ses applications dans les changes intranet.idealx. Entrust.verisign. iPlanet Certificate Management Server developer.entrust.org.openca.com .org .com/resources/wp/index.htm I CA Public Verign. IDXPKI idxpki.html http//www. Thawte.iplanet. PKI et CA I PKI Private Key Infrastructure http//www. HttpsURLConnection. Remarque Avant il fallait bricoler avec les SocketFactory LGLHU RQVH amp I Java Authentication and Authorization Service JAAS Les PAM peuvent tre utiliss des moyens cryptographiques . FTP. RMI SSL Secure Sockets Layer et TLS Transport Layer Security SecureSocket. Telnet. Utilise le JCE et ajoute un provider Intgr au JSE. SecureServerSocket. JSSE et JAAS I Java Secure Socket Extension JSSE Extension aux sockets pour scuriser les protocoles bass sur TCP/IP HTTP. NNTP. dsig JSR XML Digital Encryption APIs .w.org/TR/xmlenccore/ API Java LGLHU RQVH amp JSR XML Trust Service APIs JSR XML Digital Signature APIs javax. XML et Scurit I Evolution vers le gestion des cls en XML et vers les documents XML signs et chiffrs Spcifications XKMS XML Key Management Specification http//www.org/TR/xmldsigcore/ XML Digital Encryption http//www.xml.xmltrustcenter.org/xkms XML Digital Signature http//www.security.w. CryptoSafe. I JavaCard Packages javacard. Carte Crypto I Cartes puce pourvue de fonctions cryptographiques logicielles ou matrielles Cartes PKI GemSafe. Cryptographie.security.crypto. JavaCard. javacardx. pour les applets utilisant de la cryptographie LGLHU RQVH amp I OCF CardService . LGLHU RQVH amp . KVM. JCE et JME I Motivation QGHU ampRQVWUXFWLRQ Q ampRQVWUXFWLRQ Faible mmoire.crypto. Processeur cryptographique I Pistes les API JavaCard Packages javacard.crypto. javacardx. /index. en Franais http//www. nd Edition. Oreilly.pdf http//java. Bibliographie I Livre Jonathan B.campuspress.java. Perrone.pdf http//jsp.html http//servlet. ISBN .sun.net JAVAHOMEdocsguidesecurityCryptoSpec. Jamie Jaworski amp Paul J. May . Java Security .pdf I Guide LGLHU RQVH amp I Tutorial I Prsentation JavaOne I Articles http//www.sun. Ed CampusPress.html http//java. May .com/products/jsse/JavaOneJSSE.com/onjava/security/ .com/javaone/javaone/pdfs/e. pages. Java Security.com/docs/books/tutorial/security. Java Cryptography. Knudsen .com/javaone/javaone/pdfs/TS.html JAVAHOMEdocsguidesecurityHowToImplAProvider. //.java.onjava.sun. Oreilly. Scott Oaks. st Edition.sun.