Recent Changes - Search:

Accueil

OpenSSL

SyncML

Apache Portable Runtime

Libxml2

Net-snmp

CUrl

Boost

Perl

ZLib

Samba

VPN

Serveurs de messagerie

edit

OpenSSL/Openssl-asn1

OpenSSL.Openssl-asn1 History

Hide minor edits - Show changes to output

July 28, 2008, at 10:02 PM by Arnaud Grandville -
Changed line 1 from:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat :)
to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat, format :)
May 09, 2008, at 06:32 AM by Arnaud Grandville -
Changed lines 1-3 from:
(:keywords openssl, asn1, asn.1, asn1parse, compilation:)
(:description Introduction à la compréhension du format des certificats:)
to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat :)
(:description Introduction à la compréhension du format binaire des certificats:)
Changed line 11 from:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce langage de définition dans le protocole de management des équipements réseau [[http://fr.wikipedia.org/wiki/Snmp|SNMP]].\\
to:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce même langage de définition dans le protocole de management des équipements réseaux [[http://fr.wikipedia.org/wiki/Snmp|SNMP]].\\
Changed line 14 from:
Voici le début de cette description
to:
Voici le début de cette description pour les certificats
Changed line 52 from:
Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash dont l'émetteur fait parti des autorités de confiance). Au passage, remarquons qu'il n'y aucune différence technique entre un certificat, une CA, une CRL, etc ... tous ces fichiers sont des structures binaires associées à une signature. \\
to:
Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash produit par une autorité de confiance). Au passage, remarquons qu'il n'y aucune différence technique entre un certificat, une CA, une CRL, etc ... tous ces fichiers sont des structures binaires associées à une signature. \\
December 04, 2007, at 08:35 AM by Arnaud Grandville -
Changed lines 12-13 from:
to:
\\
\\
Changed lines 15-17 from:
to:
\\

Added line 42:
\\
December 04, 2007, at 08:30 AM by Arnaud Grandville -
Changed line 1 from:
(:keywords openssl, asn1, asn1parse, compilation:)
to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation:)
Changed lines 9-12 from:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecommunication Union (ITU)]].\\

Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\
to:
Un certificat X509v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecommunication Union (ITU)]].\\

Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce langage de définition dans le protocole de management des équipements réseau [[http://fr.wikipedia.org/wiki/Snmp|SNMP]].\\
Changed lines 116-118 from:
la syntaxe ASN1 : http://www.oss.com/asn1/booksintro.html\\
Deux librairies opensource ASN1 : http://lionet.info/asn1c/basics.html , http://josefsson.org/libtasn1/\\
to:
La syntaxe ASN1 : http://www.oss.com/asn1/booksintro.html\\
Deux librairies opensource ASN.1 : http://lionet.info/asn1c/basics.html , http://josefsson.org/libtasn1/\\
November 23, 2007, at 07:20 PM by Arnaud Grandville -
Changed lines 9-10 from:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecomunication Union (ITU)]].\\
to:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecommunication Union (ITU)]].\\
November 23, 2007, at 07:19 PM by Arnaud Grandville -
Changed lines 9-10 from:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]].
to:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecomunication Union (ITU)]].\\
November 19, 2007, at 09:57 AM by Arnaud Grandville -
Changed line 55 from:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der
to:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der\\
Changed lines 95-96 from:
nous apprenons que dans le fichier google.der à l'offset 10 se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux.\\
Avec un éditeur hexa fixons le 12ème octet du fichier à 1 et voici le résultat
to:
Nous apprenons que dans le fichier google.der à l'offset 10 se trouve trois octets (hl+l), le troisième octet est un entier dont la valeur est deux.\\
Avec un éditeur hexa fixons ce 12ème octet du fichier à 1 et voici le résultat
Changed line 98 from:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der
to:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der\\
November 18, 2007, at 11:24 AM by Arnaud Grandville -
Changed lines 41-45 from:
On en comprend qu'un Certificat est composé de trois éléments :
- Une structure (tbsCertificate)
- Un algorithme de hashage (AlgorithmIdentifier)
- Une signature (signatureValue)
to:
On en comprend qu'un Certificat est composé de trois éléments :\\
- Une structure (tbsCertificate)\\
- Un algorithme de hashage (AlgorithmIdentifier)\\
- Une signature (signatureValue)\\
\\

Changed line 96 from:
Avec un éditeur hexa modifions le 12ème octet du fichier à 1 et voici le résultat
to:
Avec un éditeur hexa fixons le 12ème octet du fichier à 1 et voici le résultat
November 18, 2007, at 11:21 AM by Arnaud Grandville -
Changed line 7 from:
!!!{+La structure binaire  d'uin certificat+}
to:
!!!{+La structure binaire  d'un certificat+}
November 18, 2007, at 11:21 AM by Arnaud Grandville -
Changed line 7 from:
!!!{+Le Certificat est une structure binaire+}
to:
!!!{+La structure binaire  d'uin certificat+}
Changed lines 10-11 from:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leur description, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\
to:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\
Changed lines 49-51 from:
!!!{+Modification des valeurs d'un certificat+}
Modification manuelle de la version du certificat, Trois valeurs sont autorisées : 0,1,2 chacune correspond respectivement à la version v1,v2 et v3 des certicats au format x509. Le certificat de https://www.google.com contient ces informations :
to:
!!!{+Modification de la version du certificat+}
La version peut prendre trois valeurs : 0,1,2 chacune correspond respectivement à la version v1,v2 et v3 des certicats x509.\\
Le
certificat de https://www.google.com contient ces informations :
Changed lines 94-95 from:
à l'offset 10 du fichier se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux.
Avec un éditeur hexa modifions la valeur du douzième octet
à 1 et voici le résultat
to:
nous apprenons que dans le fichier google.der à l'offset 10 se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux.\\
Avec un éditeur hexa modifions le 12ème octet du fichier
à 1 et voici le résultat
Changed lines 110-112 from:
to:
\\
\\

November 18, 2007, at 11:10 AM by Arnaud Grandville -
Added line 117:
Changed line 119 from:
c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1.Certificate
to:
c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1.Certificate\\
November 18, 2007, at 11:08 AM by Arnaud Grandville -
Changed line 37 from:
to:
   CertificateSerialNumber  ::=  INTEGER
Changed lines 93-101 from:




binaire distinguished encoding rules (DER)




to:
à l'offset 10 du fichier se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux.
Avec un éditeur hexa modifions la valeur du douzième octet à 1 et voici le résultat
>>teal background-color:#f0f0f0 padding=5px font-family=monospace<<
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der
Certificate:
    Data:
        Version: 2 (0x1)
        Serial Number:
            68:76:64:38:3d:49:6e:2e:f5:e3:19:98:42:e0:7c:ee
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=ZA, O=Thawte Consulting (Pty) Ltd., CN=Thawte SGC CA
.../...
>><<

Le certificat est bien modifié, le code de hashage pourrait être recalculé mais ne pouvant être signé l'ouverture du certificat donne ceci :
http://www.grandville.net/img/google.der.gif"fake google certificat "

!!!{+Liens et outils+}
la syntaxe ASN1 : http://www.oss.com/asn1/booksintro.html\\
Deux librairies opensource ASN1 : http://lionet.info/asn1c/basics.html , http://josefsson.org/libtasn1/\\

\\
\\
Un exemple obtenu par libtasn1
>>teal background-color:#f0f0f0 padding=5px font-family=monospace<<
c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1.Certificate
Parse: done.

Decoding: SUCCESS

DECODING RESULT:
name:NULL  type:SEQUENCE
  name:tbsCertificate  type:SEQUENCE
    name:version  type:INTEGER  value:0x02
      name:NULL  type:DEFAULT  value:v1
    name:serialNumber  type:INTEGER  value:0x687664383d496e2ef5e3199842e07cee
    name:signature  type:SEQUENCE
      name:algorithm  type:OBJ_ID  value:1.2.840.113549.1.1.5
      name:parameters  type:ANY  value:0500
    name:issuer  type:CHOICE
      name:rdnSequence  type:SEQ_OF
        name:NULL  type:SET_OF
          name:NULL  type:SEQUENCE
            name:type  type:OBJ_ID
            name:value  type:ANY
        name:?1  type:SET_OF
          name:NULL  type:SEQUENCE
            name:type  type:OBJ_ID
            name:value  type:ANY
          name:?1  type:SEQUENCE
            name:type  type:OBJ_ID  value:2.5.4.6
            name:value  type:ANY  value:13025a41
        name:?2  type:SET_OF
          name:NULL  type:SEQUENCE
            name:type  type:OBJ_ID
            name:value  type:ANY
          name:?1  type:SEQUENCE
            name:type  type:OBJ_ID  value:2.5.4.10
            name:value  type:ANY  value:131c54686177746520436f6e73756c74696e67202850747929204c74642e
        name:?3  type:SET_OF
          name:NULL  type:SEQUENCE
            name:type  type:OBJ_ID
            name:value  type:ANY
          name:?1  type:SEQUENCE
            name:type  type:OBJ_ID  value:2.5.4.3
.../...
>><<




November 18, 2007, at 10:43 AM by Arnaud Grandville -
Changed line 1 from:
(:keywords openssl, asn1, compilation:)
to:
(:keywords openssl, asn1, asn1parse, compilation:)
Added lines 24-38:
       issuer              Name,
        validity            Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                            -- If present, version shall be v2 or v3
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                            -- If present, version shall be v2 or v3
        extensions      [3]  EXPLICIT Extensions OPTIONAL
                            -- If present, version shall be v3
        }

  Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }

.../...
Changed lines 41-42 from:

n
to:
On en comprend qu'un Certificat est composé de trois éléments :
- Une structure (tbsCertificate)
- Un algorithme de hashage (AlgorithmIdentifier)
- Une signature (signatureValue)

Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash dont l'émetteur fait parti des autorités de confiance). Au passage, remarquons qu'il n'y aucune différence technique entre un certificat, une CA, une CRL, etc ... tous ces fichiers sont des structures binaires associées à une signature. \\


!!!{+Modification des valeurs d'un certificat+}
Modification manuelle de la version du certificat, Trois valeurs sont autorisées : 0,1,2 chacune correspond respectivement à la version v1,v2 et v3 des certicats au format x509. Le certificat de https://www.google.com contient ces informations :

>>teal background-color:#f0f0f0 padding=5px font-family=monospace<<
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout  -inform DER -in google.der
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            68:76:64:38:3d:49:6e:2e:f5:e3:19:98:42:e0:7c:ee
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=ZA, O=Thawte Consulting (Pty) Ltd., CN=Thawte SGC CA
        Validity
            Not Before: May  3 15:34:58 2007 GMT
            Not After : May 14 23:18:11 2008 GMT
.../...
>><<

Le certificat est en v3 ( valeur 2 )

OpenSSL permet l'analyse binaire du certificat via l'option asn1parse

>>teal background-color:#f0f0f0 padding=5px font-family=monospace<<
C:\openssl-0.9.8g\out32dll>openssl asn1parse -i -inform DER -in google.der
    0:d=0  hl=4 l= 801 cons: SEQUENCE
    4:d=1  hl=4 l= 650 cons:  SEQUENCE
    8:d=2  hl=2 l=  3 cons:  cont [ 0 ]
  10:d=3  hl=2 l=  1 prim:    INTEGER          :02
  13:d=2  hl=2 l=  16 prim:  INTEGER          :687664383D496E2EF5E3199842E07CEE
  31:d=2  hl=2 l=  13 cons:  SEQUENCE
  33:d=3  hl=2 l=  9 prim:    OBJECT            :sha1WithRSAEncryption
  44:d=3  hl=2 l=  0 prim:    NULL
  46:d=2  hl=2 l=  76 cons:  SEQUENCE
  48:d=3  hl=2 l=  11 cons:    SET
  50:d=4  hl=2 l=  9 cons:    SEQUENCE
  52:d=5  hl=2 l=  3 prim:      OBJECT            :countryName
  57:d=5  hl=2 l=  2 prim:      PRINTABLESTRING  :ZA
  61:d=3  hl=2 l=  37 cons:    SET
  63:d=4  hl=2 l=  35 cons:    SEQUENCE
  65:d=5  hl=2 l=  3 prim:      OBJECT            :organizationName
  70:d=5  hl=2 l=  28 prim:      PRINTABLESTRING  :Thawte Consulting (Pty) Ltd.
.../...
>><<




November 18, 2007, at 10:06 AM by Arnaud Grandville -
Added lines 1-32:
(:keywords openssl, asn1, compilation:)
(:description Introduction à la compréhension du format des certificats:)

\\
\\

!!!{+Le Certificat est une structure binaire+}
\\
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]]. 
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leur description, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\

Voici le début de cette description

>>teal background-color:#f0f0f0 padding=5px font-family=monospace<<
Certificate  ::=  SEQUENCE  {
        tbsCertificate      TBSCertificate,
        signatureAlgorithm  AlgorithmIdentifier,
        signatureValue      BIT STRING  }

  TBSCertificate  ::=  SEQUENCE  {
        version        [0]  EXPLICIT Version DEFAULT v1,
        serialNumber        CertificateSerialNumber,
        signature            AlgorithmIdentifier,
>><<


n
binaire distinguished encoding rules (DER)



Edit - History - Print - Recent Changes - Search
Page last modified on July 28, 2008, at 10:02 PM