DESCRIEREA APLICATIEI
Organizarea aplicatiei
Semnatura digitala Java-XML
Extensible Markup Language (XML) - Limbaj extensibil de marcare - este momentan o parte integrala a tehnologiei web de aplicatii pentru afaceri. Aceste aplicatii necesita o structura sigura pentru a indeplinii conditiile de securitate, confidentialitate, punctul de autentificare, integritatea mesajului. Semnatura XML, criptarea XML, XML Key Management Specification (XKMS), SAML Securitz Assertion Markup Language si XML Access Control Markup Language (XAXML) sunt standardele XML care definesc vocabularul XML si proceseaza regulile pentru a indeplini cerintele securitatii.
Vom prezenta urmatoarele:
introducerea in semnatura digitala XML si in Java XML semnatura digitala APIs (Advanced Programing Interface)
informatii despre cum putem sa acceleram Java XML digital signature, performanta utilizand criptografia acceleratoarelor hardware cu concentrare asupra UltraSPARC T1 procesor criptografic pentru accelerare.
Public Key Crzprography ( keie publica de criptare)
Propunerea unei semnaturi digitale se refera la o entitate legata de identitate ei la o bucatica de informatie. Semnaturile digitale utilizeaza PKC, un algoritm care utilizeaza 2 chei matematice diferite: una pentru crearea semnaturii digitale si cealalta pentru verificarea semnaturii digitale.
Nu la fel ca cheile simetrice conventionale de criptare, care utilizeaza aceiasi cheie secreta pentru criptare si decriptare, PKC utilizeaza o pereche de chei, o cheie privata si una publica, pentru criptare si decriptare. (Figura. 1).
Figura 1.
Cheia publica este disponibila pentru toata lumea, dar cheia privata este protejata si niciodata vizibila. Fiecare pereche de chei dispune de o relatie matematica care leaga cele 2 chei una de cealalta si nu au nici o legatura cu alte chei.
O transformare criptografica efectuata cu o cheie poate fi rezolvata numai cu cealalta cheie. Calculabil nu este posibil sa deducem cheia privata din cheia publica si nici sa deducem cheia publica din cheia privata. Aceasta definire a PKC presupune urmatoarele:
confidentialitate. Un mesaj criptat cu o cheie publica poate fi decriptat cu cheia privata corespunzatoare
endpoint authentication. Destinatarul poate determina identitatea expeditorului
integritatea mesajului. Destinatarul poate usor sa identifice daca a intervenit ceva in timpul transmiterii mesajului
nonrepudiation. Expeditorul nu poate nega transmiterea mesajului sau a actiunilor comise
Protocolul de semnare digitala
PKC activeaza mesajele electronice cu un mecanism analogic pentru semnarea pe hartie, cunoscut ca digital signature (semnatura digitala). O semnatura digitala verifica autenticitatea documentului electronic si prevede securitate maxima cand se realizeaza semnarea documentului.
Cum se creaza o semnatura digitala (Figura. 2), expeditorul genereaza pentru inceput o mica si unic stampila pe document, chemata hash sau digest. Chiar si cea mai mica modificare a documentului original cauzeaza valoarea hash sa se modifice. Prin compararea hash-ului carea a fost receptionat cu acel hash care a fost calculat de documentul receptionat, destinatarul poate sa verifice daca documentul a fost afectat.
Figura. 2
Figura. 3
Figura.4
Figura. 5
Semnatura Detached (desprinsa, detasata)
O semnatura detasata(desprinsa) este semnatura aplicata asupra continutului exterior al elementului Signature si poate fi identificata de catre URI sau o transformata. Resursa de semnare XML poate fi prezentata in acelasi document ca un element Signature, sau poate fi exterior la un document XML.(Figura. 6)
Figura. 6
Generarea unei semnaturi digitale XML
In ordine pentru a genera o semnatura XML, asimilarea elementelor tinta ale canonicalizari identificate de referinta sunt compuse dupa cum urmeaza in figura urmatoare.(Figura. 7)
Figura. 7
Cream un fisier text cu numele de GenSig.java, in interiorul fisierului generam a key pair (pereche de chei) cu:
KeyPairGenerator The KeyPairGenerator class is used to generate pairs of public and private keys.
In continuare cream un obiect de semnare si il initializam cu cheia privata, dupa care updatam si senam data, datele care trebuie semnate au fost citite, generam semnarea pentru ele, salvare fisier, salvare cheie publica in fisier, daca avem o eroare aceasta este incrementata si o testam in interfata, returnam eroarea interfetei.
Validarea unei semnaturi XML
Validarea semnaturi XML se face in 2 pasi. Primul pas este de a verifica digerarea fiecarei referinte. Al doilea pas este cel de verificarea a operatiei de criptarea a semnaturi asupra elementului SignedInfo.
Asa cum este aratat in figura de mai jos, data identificata de elementul de referinta este canonicalizata si apoi digerata. In pasul 2 valoarea de digerare este comparata cu valoarea de digerare prezenta langa elementul de referinta (Reference). Acest lucru asigura ca elementele tinta nu sunt mesterite (falsificate)(Figura. 8).
Figura. 8
In pasi 3 si 4, valoarea de digest a canonicalizari SignedInfo este calculata. Biti rezultati sunt verificati impreuna cu semnatura peste elementul SignedInfo, exemplu in pasul 5, utilizand cheia primara a expeditorului. Daca ambele semnaturi asupra elementului SignedInfo si fiecare Reference de valoare de digest este corecta, atunci semnatura XML este valida.
Pachetul folosit package java.security.spec (Provides classes and interfaces for key specifications and algorithm parameter specifications.), crearea unui fisier VerSig.java. In interiorul programului importam o cheie publica encoded, cu FileInputStream incarcam Suepk-ul generat de GenSig.
X509EncodedKeySpec This class represents the ASN.1 encoding of a public key, encoded
according to the ASN.1 type SubjectPublicKeyInfo
Incarcam sig generat de GenSig, cream un obiect de semnare si il initializam cu cheia publica, abdatam si verificam data, incarcam fisierul XML, citim fisierul, incarcam mesajul de verificare, incarcare mesajul exceptiilor si returnam mesajul catre interfata.
Interfata pentru generarea si verificarea semnaturi digitale XML
Am creat o interfata simpla in care am folosit trei butoane si doua campuri de text. Am instantiat un obiect din clasa GenSig si unul din clasa VerSig. In interiorul programului am apelat constructorul cu initializateComponent(), in continuare facem vizibila fereastra this.setVisible(true), initializam componentele (butoanele si campurile de text). Avem trei functii, de ascultarea a butonului de generarea a semnaturi ,de ascultare a butonului de validare a semnaturi , de ascultarea a butonului de incarcarea a fisierului XML. Incarcam fisierul XML cale=jTextField1.getText(); jTextField1.setEditable(false). Urmeaza functia de test care testeaza daca verificarea semnaturi s-a facut corect.
Interfata test semnatura digitala (Figura.9)
Figura. 9
Introducerea in semnarea digitala Java-XML APIs
Sun Microszstems a produs un standard de tehnologii APIs Java pentru semnare si verificare XML si documente binare. Java Community Process (JCP) programul defineste aceste APIs (program de aplicati interfete) cu am fi JSR 105. Sun inglobeaza aceste APIs cu Java Web Services Developer Pack (JWSDP), proiectul GlassFish si platforma Java SE v6.
Implementarea de referinta a semnaturi digitale XML de la compania Sun este un cadru tampon construit pe Java Cryptographic Arhitecture (JCA), cum este prezentat in figura de mai jos. Produce suport pentru implementatii de algoritmi de semnare digitala si transformate specificate de W3C XML sintaxa de semnare si procesare specificate.(Figura.10)
Figura. 10
Java XML Digital Signature APIs defineste urmatoarele pachete:
javax.xml.crypto
javax.xml.crypto.dsig
javax.xml.crypto.dsig.keyinfo
javax.xml.crypto.dsig.spec
javax.xml.crypto.dom
javax.xml.crypto.dsig.dom
Javax.xml.crypto pachetul contine clase comune care sunt folosite pentru a executa operatii de criptare XML, cum ar fi generarea si verificarea semnaturii XML.
Cele mai importante interfete din acest pachet sunt: KeySelector, URIDereferencer si Data.
Interfata KeySelector lasa utilizatorii sa localizeze si optonal sa valideze chei folosindu-se de informatia continuta intr-un obiect KeyInfo.
Interfata URIDereferencer ne lasa sa cream si sa specificam propriul nostru URIDereferencer de implementare. Avem optiunea sa prevedem propria noastra implementare de KeySelector si URIDereferencer.
Interfata Data reprezinta forme variate de date alese pentru semnare, clasele ei: NodeSetData si OctetStreamData.
NodeSetData - reprezentarea abstracta a DataType
OctetStreamData - reprezinta data binara aleasa pentru semnare
Javax.xml.crypto.dsig pachetul contine interfete care contin elemente miez definite in W3C XML specificatii de semnatura digitala. Cele mai importante interfete din acest pachet sunt: XMLSignature, SignedInfo, CanonicalizationMethod, SignatureMethod, Reference si DigestMethod.
Clasa XMLSignatureFactory este procurata din javax.xml.crypto.dsig si poate fi utilizata pentru a crea si a aseza obiectele semnaturii.
Clasa XMLSignature reprezinta elementul Signature definit de standardul W3C.
Metodele de sign si validate din aceasta clasa pot fi folosite pentru a proteja si a valida data respectiva.
Clasa SignedInfo reprezinta elementul SignedInfo definit de standardul W3C.
SignedInfo contine CanonicalizationMethod, SignatureMethod si Reference.
CanonicalizationMethod este algoritmul aplicat lui SignedInfo si SignatureMethod reprezinta algoritmul folosit pentru a semna si valida operatiile.
Clasa SignedInfo poate sa aiba una sau mai multe referinte. Fiecare referinta identifica tinta care trebuie protejata si de asemenea ofera o lista cu algoritmi aplicati asupra tintei inainte de calcularea amestecului (digest).
Javax.xml.crypto.dsig.keyinfo contine interfete care reprezinta structura KeyInfo definita in W3XML digital signature. Utilizatori pot folosi KeyInfoFactory class provenita din javax.xml.crypto.dsig.keyinfo pentru a crea obiecte ale clasei KeyInfo.
Javax.xml.cypto.dsig.spec contine interfete si clase care reprezinta parametrii de inaintare pentru amestec (digest), semnatura, transformata, sau algoritmi de canonicalizare folositi in procesul de semnatura XML.
Javax.xml.crypto.dom si Javax.xml.crypto.dsig.dom contin clase specifice DOM (Document Object Model) pentru javax.xml.cypto si javax.xml.dsig pachete respective.
Numai dezvoltatorii si utilizatorii care creaza sau folosesc DOM-based XMLSignatureFactory sau KeyInfoFactory trebuie sa folosesca aceste pachete.
3.6. Accelerarea performantelor semnaturi digitale Java-XML
APIs de semnatura digitala Java-XML operatiile de sign si validate sunt expensive : pot sa ia mai mult de 30% din timpul de executie al CPU. PKCS#11, standardul de interfata token (jeton) defineste programarea interfetelor pentru criptarea jetoanelor, cum ar fi criptarea criptografica cum ar fi acceleratorii de criptarea hardware si smart cardurile.
PKCS#11 inbunatateste performanta si scaleaza prin acces transparent de accelerare criptografica hardwarw fara a modifica codul de aplicatie existent.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |