Prezentare generala privind semnaturile digitale

                                   Cuprins
                                Introducere 8
  1.1.      Problematica semnării digitale    8
  1.2.      Problematica descrierii unitare a datelor    9
                    2.    Prezentare generală XML     10
  2.1.      Cerinţele de proiectare     10
  2.2.      Sintaxa unui document XML   11
    2.2.1.  Reguli de sintaxă     11
  2.3.      Structuri  12
    2.3.1.  Structuri fizice 12
    2.3.2.  Structuri logice 13
  2.4.      Validarea documentelor XML  13
  2.5.      XML Schema şi DTD     14
  2.6.      Date şi structuri     15
  2.7.      DOM  16
            3.    Legislaţia privind semnăturile electronice   17
  3.1.      Legislaţia europeană  17
    3.1.1.  Directiva Consiliului Europei     17
  3.2.      Legislaţia românească 22
    3.2.1.  Legea semnăturii electronice      22
    3.2.2.  Normele tehnice şi metodologice (HG1259 din 13 decembrie 2001)
    24
         4.    Prezentare generală a semnăturilor digitale în XML 26
  4.1.      Semnătură digitală    26
    4.1.1.  Elemente de criptare asimetrică   26
    4.1.2.  Cerinţe pentru semnături    26
      4.1.2.1.    Probă      27
      4.1.2.2.    Caracter oficial 27
      4.1.2.3.    Acord      27
      4.1.2.4.    Eficienţă  27
    4.1.3.  Proprietăţi ale semnăturilor digitale  27
      4.1.3.1.    Autentică  27
      4.1.3.2.    Nefalsificabilă  28
      4.1.3.3.    Nereutilizabilă  28
      4.1.3.4.    Nealterabilă     28
      4.1.3.5.    Nerepudiabilă    28
  4.2.      Infrastructura PKI    29
  4.3.      Caracteristici XMLDSIG      30
    4.3.1.  Structură de obiect   30
    4.3.2.  Uşor de citit    31
    4.3.3.  Semnături multiple într-un singur document   31
    4.3.4.  Compatibilitatea 31
                 5.    Sintaxa şi procesare XMLDSIG      32
  5.1.      Generalităţi     32
  5.2.      Recomandarea W3C privind sintaxa şi procesarea semnăturilor
  digitale în XML      33
    5.2.1.  Stabilirea cadrului de lucru      33
    5.2.2.  Conceptul de semnătură simplă (core signature)     33
    5.2.3.  Conceptul de semnătură extinsă (extended signature)     34
    5.2.4.  Reguli de procesare   36
      5.2.4.1.    Generarea semnăturii simple 37
        5.2.4.1.1.     Generarea referinţelor 37
        5.2.4.1.2.     Generarea semnăturii   37
      5.2.4.2.    Validarea semnăturii simple 38
        5.2.4.2.1.     Validarea referinţelor 38
        5.2.4.2.2.     Validarea semnăturii   39
    5.2.5.  Sintaxa semnăturii simple   39
      5.2.5.1.    Elementul Signature   39
      5.2.5.2.    Elementul SignatureValue    40
      5.2.5.3.    Elementul SignedInfo  40
      5.2.5.4.    Elementul CanonicalizationMethod 41
      5.2.5.5.    Elementul SignatureMethod   42
      5.2.5.6.    Elementul Reference   42
      5.2.5.7.    Elementul KeyInfo     44
      5.2.5.8.    Elementul Object 45
    5.2.6.  Sintaxa semnăturii extinse  46
      5.2.6.1.    Elementul Manifest    46
      5.2.6.2.    Elementul SignatureProperties    47
  5.3.      Exemplu    48
 6.    Standardul pentru semnături digitale XML avansate (ETSI TS 101 903 –
               XML Advanced Electronic Signatures XAdES)    49
  6.1.      Introducere şi scop   49
  6.2.      Semnătură electronică şi date de validare    51
  6.3.      Structuri de date ale semnăturii electronice XML avansate
  (XAdES)   51
    6.3.1.  Conţinutul XAdES-BES  51
    6.3.2.  Conţinutul XAdES-EPES 53
    6.3.3.  Conţinutul XAdES-C    55
  6.4.      Date de validare a formularelor extinse      56
    6.4.1.  Conţinutul XAdES-X    56
    6.4.2.  Conţinutul XAdES-X-L  57
  6.5.      Date de validare arhivelor  57
    6.5.1.  Conţinutul XAdES-A    57
               7.    Prezentare generală stucturi şi clase  59
  7.1.      Motivarea alegerii limbajului Java™    59
  7.2.      Pachetele distribuite şi clasele mai importante   60
    7.2.1.  DSIG  60
      7.2.1.1.    ConfigManager    61
      7.2.1.2.    XMLDSIG    62
    7.2.2.  Data  62
      7.2.2.1.    Data 63
      7.2.2.2.    DataList   64
      7.2.2.3.    Cache      64
      7.2.2.4.    URIDereferencer  64
    7.2.3.  XML   65
      7.2.3.1.    SignedDoc  67
      7.2.3.2.    Signature  68
      7.2.3.3.    SignedInfo 69
      7.2.3.4.    Reference  71
      7.2.3.5.    SignedProperties 72
      7.2.3.6.    UnsignedProperties    74
      7.2.3.7.    SignatureValue   76
      7.2.3.8.    RSAKeyInfo 76
    7.2.4.  Utils 78
      7.2.4.1.    XMLContainer     78
      7.2.4.2.    ConvertUtils     79
    7.2.5.  Crypto     80
      7.2.5.1.    Algorithm  80
    7.2.6.  Transform  81
      7.2.6.1.    Transform  81
      7.2.6.2.    Base64     82
      7.2.6.3.    DOMc14n    83
    7.2.7.  Certificate      84
    7.2.8.  Factory    86
    7.2.9.  Exceptions 86
  7.3.      Dataflow general 87
    7.3.1.  Semnare    87
      7.3.1.1.    Determinarea referinţelor   88
      7.3.1.2.    Calculare digest 88
      7.3.1.3.    Grupare referinţe într-un signedInfo   88
      7.3.1.4.    Calculare digest pentru SignedInfo     89
      7.3.1.5.    Semnare digest SignedInfo   89
      7.3.1.6.    Adăugare informaţii despre cheie 89
      7.3.1.7.    Adăugare informaţii suplimentare 89
    7.3.2.  Verificare 90
      7.3.2.1.    Identificarea semnăturii care trebuie verificată  90
      7.3.2.2.    Extragerea elementului SignedInfo      90
      7.3.2.3.    Calculare digest asupra elementului SignedInfo    91
      7.3.2.4.    Calcularea cheii de verificare   91
      7.3.2.5.    Verificarea semnăturii      91
      7.3.2.6.    Compararea celor două digest-uri 91
                             8.    Aplicaţie  92
  8.1.      Scopul aplicaţiei     92
  8.2.      Prezentare aplicaţiei de semnare  93
    8.2.1.  Ecranul de configurare      93
    8.2.2.  Ecranul de introducere a datelor  95
    8.2.3.  Ecranul de alegere a cheii de semnare  98
    8.2.4.  Ecranul de prezentare 99
                               9.    Concluzii
                             10.   Bibliografie