OpenSSL Overview and Implementation

1/1
100%

OpenSSL

OpenSSL

OpenSSL est une bo te outils cryptographiques impl mentant les protocoles SSL et TLS qui

Offre

  • Une biblioth que de programmation en C permettant de r aliser des applications client/serveur s curis es sappuyant sur SSL/TLS.
  • Une commande en ligne (OpenSSL) permettant :

+ la cr ation de cl s RSA, DSA (signature)

+ la cr ation de certificats X509

+ le calcul dempreintes (MD5, SHA, RIPEMD160, ...)

+ le chiffrement et d chiffrement (RSA, DES, IDEA, RC2, RC4, Blowfish, ...)

+ la r alisation de tests de clients et serveurs SSL/TLS

+ la signature et le chiffrement de courriers (S/MIME)

Pour conna tre toutes les fonctionnalit s de openSSL : man openssl.

Installation sous Ubunto

Apt-get install openssl

R pertoire de travail

/etc/ssl

Chiffrement asym trique avec OpenSSL (RSA)

G n ration des cl s

On peut g n rer une paire de cl s RSA avec la commande :

$openssl genrsa out <fichier> <taille en bit>

Par exemple :

$openssl genrsa out macle.pem 1024

Le fichier obtenu est un fichier au format PEM (Privacy Enhanced Mail, format en base 64), dont voici un exemple :

-----BEGIN RSA PRIVATE KEY-----

MIICXgIBAAKBgQDA6nzyERl8yUQBur0/GyF5fc/fllnHiZZytY/peu/6HPMJvji0

3dOqDK27mb9GtSqr7S9G4ClX/VKKekMJtcN6n2YNBp0OydyOYaZadrI/SaqDjrqB

HtZ4//H6BKs24kC2kJHABG+CZpM1U6pIHwX6rBjuxi4VZuOPvz1nrJfhWQIDAQAB

AoGAQYNgSxRjg20WG0A/ZF7iT0/aeCOm+YxP+0SNSszlEhsirfxbZZCvgOAtX7gm

Publicité

rOx5QUma9IbLg4YTsdMzUOjZKQRU7Al5AHGl2Xt5Qit/dCNkq5MMEra3rfKq5tpQ

+20NUA8xya1wAEUkwgIv6+aehyNsPk/Jpdi+tLWRWrsc+MECQQDlY1uER+gdYqAY

i3PRBVHnvlmdrPJAfoACyeyyOGaZnUe7UlLOQJ8jU46+sLYvKd9sIAo4QoWuJQLi

ibla8SlXAkEA10vv6s89X0qBImzTc8grXw+C7ab7PHPkoB1EqH08494szX8vwEk7

W9opiekHR4br7dn0PlK+QZ4wPZ8QoxeszwJBAKcGudSQJ0t+TOSSZjqEjScZS1es

Xpjng36EWX1L5ClmhJy5TOIx2651YTMoqP+elbi9e7OLfJtZB8i8T+MQRvECQQCO

PgKFzWQL6CqHNwVBUres94+WOiN1HlCnpI6vDwdCuZA6ONSwovGPzwRwtD/19uM7

YyumXX6L1dqja8tPJZ4rAkEAgjplY0rEkgFaszTIy7giULTaJwpGMhomepkvYnM4

iL8JB2iy8PgYM4a54ykB1DFV00SajnG1VrpOGXI/RguYRw==

-----END RSA PRIVATE KEY-----

Visualisation des cl s RSA

La commande RSA permet de visualiser le contenu dun fichier au format PEM contenant une paire de clefs RSA :

$openssl o

  • Loption text demande laffichage d cod de la paire de la paire de clefs.
  • Loption noout supprime la sortie normalement produite par la commande rsa.

Il nest pas prudent de laisser une paire de clef en clair, surtout lacc s physique et distant la machine par une autre personne, risque de causer beaucoup de d g ts. Pour cela, openssl offre la possibilit de chiffrer la paire des cl s avec la commande :

$openssl rsa in macle.pem des3 out macle.pem

Une passephrase est demand e deux fois pour g n rer une cl sym trique prot geant lacc s la cl .

Extraction de la partie publique

La partie publique dune paire de cl devra tre communiqu e nimporte qui. Le fichier

macle.pem contient la partie priv e, et ne peut donc pas tre communiqu e tel quelle.

Lextraction de la partie publique est donn e par la commande :

$openssl rsa in macle.pem pubout out macle\_publique.pem

Chiffrement et d chiffrement de donn es avec RSA

On peut chiffrer /d chiffrer les donn es avec les cl s RSA :

$openssl rsautl -encrypt in fichier.txt -inkey tacle\_publique.pem pubin out fichier\_chiffre.txt

$openssl rsautl -decrypt in fichie\_chiffre.txt -inkey macle.pem out fichier\_clair.txt

Attention : le fichier des donn es chiffrer ne doit pas avoir une taille excessive (ne doit pas

d passer 116 octets pour une cl de 1024 bits).

Publicité

La signature num rique

Principe

Pierre cr e un document, et il calcule une emprunte (via les algorithmes MD5 ou SHA) partir de ce document. Il utilise ensuite sa cl priv e pour chiffrer cette donn e. Il associe le r sultat au document.

Chacun peut recalculer la somme de contr le du document et v rifier avec la cl publique de Pierre que le document est authentique et que Pierre est lauteur.

Exemple

Signer un document cest crypter avec sa cl priv e lempreinte dun fichier.

$openssl dgst -md5 fichier.txt > fichier.emp

$openssl rsautl -sign in fichier.emp -inkey cle.pem out fichier.sig

La v rification dune signature consiste d chiffrer la signature avec la cl publique. Ensuite on recalcule lempreinte pour v rifier que le document na pas t modifi .

$openssl rsautl -verify in fichier.sig -inkey pub.pem pubin

$openssl md5 fichier.txt

On peut signer et v rifier un document directement

$openssl dgst -md5 sign cle.pem out fichier.sig fichier.txt

$openssl dgst -md5 verify pub.pem -signature fichier.sig fichier.txt

Les certificats X509

La notion de certificat

Un certificat est un document qui comprend essentiellement une cl publique et des renseignements sur le propri taire de cette cl , le tout sign avec les cl s priv s dorganismes reconnus, des autorit s ou CA (Certification Authorities). Un certificat permet de dialoguer de mani re s re (chiffr e) avec la personne ou la soci t quil d crit. Si lon poss de dautres certificats d crivant les signataires, on a lassurance de lidentit du propri taire de la cl .

Les certificats X509

LISO a tabli un protocole, baptis X509, permettant lauthentification sur un r seau. Ce protocole utilise des certificats au format normalis .

Les certificats X509 ont t utilis s au d but pour la s curisation du courrier lectronique : PEM (Privacy Enhanced Mail), lanc tre de S/MIME, maintenant ils sont utilis s aussi bien dans la s curisation du web (via SSL) que dans bien dautres domaines.

Format dun certificat X509

Les diff rents champs

  • Version la version du protocole
  • Serial Number un num ro de s rie unique pour un CA
  • Algorithme Identifier lalgorithme utilis pour la signature

+ Algorithm

+ Parameters

  • Issuer la CA qui a mis le certificat
  • Period of validity la p riode de validit

+ Not before date d but

+ Not after date fin

Publicité

  • Subject la personne identifi e par le certificat
  • Subjects public key la cl publique

+ Algorithm

+ parameters

+ public key

  • signature la signature

Les formats des fichiers

Un certificat est stock dans un fichier. Les formats les plus souvent utilis s sont les suivants :

DER : le format DER, de lOSI, est le format binaire qui traduit lASN.1.

PEM : cest un format ascii, cod Base 64. Le texte est encadr dune ligne BEGIN CERTIFICATE et END CERTIFICATE

PKCS 7 : le standard RSA

PKCS12 : ce standard RSA est principalement utilis pour les certificats des utilisateurs. Un fichier PKCS12 contient non seulement le certificat dun utilisateur mais aussi sa cl priv e normalement prot g e par un mot de passe.

Description dun sujet ou dun CA

Ce sont les possesseurs de la cl publique.

  • C (Country) : pays
  • S(State) ou P (Province): tat ou province
  • L (Locality) : ville
  • (Organization) : soci t
  • OU (Organization Unit) : le service
  • CN (Common Name) : le nom du sujet ou ladresse DNS du serveur
  • E (Email) : adresse e-mail

Gestion des certificats avec openssl

Cr er une requ te de certificat

$openssl genrsa -out cle.pem 1024

$openssl req -new key cle.pem -out req.cer

$openssl req -in req.cer -text

Visualiser un certificat

$more certif.pem

$openssl x509 -in certif.pem -text -noout

Cr ation dun certificat racine

$openssl x509 -req -in req.cer -signkey cle.pem -out cer.cer

Jouer le r le dun CA : signer un certificat

  • Copier le fichier de configuration

$ cp /usr/local/openssl.conf

  • Cr er larborescence daccueil

Publicité

$ mkdir demoCA

$ mkdir demoCA/newcerts

$ echo 01 > demoCA/serial

$ touch demoCA/index.html

$ mkdir demoCA/private

$ mv cle.pem demoCA/private/cakey.pem

$ mv cer.cer demoCA/cacert.pem

  • Signer une requ te de certificat

$ openssl ca -config openssl.cnf -in person.req -out person.cer

Cr er un certificat pour une personne

$ openssl genrsa -out pers.key 1024

$ openssl req -new -key pers.key -out pers.req

$ openssl x509 -req -days 365 -CAcreateserial -CA cer.cer -CAkey cle.pem \

> -in pers.req -out req.cer

$ openssl pkcs12 -export -in pers.cer -inkey pers.key -out pers.pfx

$ openssl pkcs12 -in pers.pfx -out pers.pem

$ more pers.pem

Signature de fichiers

Suite la complexit des algorithmes de cryptographie asym trique, on signe toujours de petits documents. Pour signer un grand document, on calcule dabord une empreinte de ce document. La commande dgst (digest) permet de le faire.

$openssl dgst <hachage> -out resultat\_hachage fichier.txt

Signer un document revient signer son empreinte. Pour cela, on utilise loption sign de la

commande rsautl :

$openssl rsautl sign in resultat\_hachage inkey <cl > -out signature

Et pour v rifier la signature:

$openssl rsautl verify in signature -out resultat\_hachage1 pubin inkey macle\_publique

OpenSSL Overview and Implementation

Cryptography and Network Security · notes

Voir tous les documents en sécurité informatique

OpenSSL

OpenSSL

OpenSSL est une bo te outils cryptographiques impl mentant les protocoles SSL et TLS qui

Offre

  • Une biblioth que de programmation en C permettant de r aliser des applications client/serveur s curis es sappuyant sur SSL/TLS.
  • Une commande en ligne (OpenSSL) permettant :

+ la cr ation de cl s RSA, DSA (signature)

+ la cr ation de certificats X509

+ le calcul dempreintes (MD5, SHA, RIPEMD160, ...)

+ le chiffrement et d chiffrement (RSA, DES, IDEA, RC2, RC4, Blowfish, ...)

+ la r alisation de tests de clients et serveurs SSL/TLS

+ la signature et le chiffrement de courriers (S/MIME)

Pour conna tre toutes les fonctionnalit s de openSSL : man openssl.

Installation sous Ubunto

Apt-get install openssl

R pertoire de travail

/etc/ssl

Chiffrement asym trique avec OpenSSL (RSA)

G n ration des cl s

On peut g n rer une paire de cl s RSA avec la commande :

$openssl genrsa out <fichier> <taille en bit>

Par exemple :

$openssl genrsa out macle.pem 1024

Le fichier obtenu est un fichier au format PEM (Privacy Enhanced Mail, format en base 64), dont voici un exemple :

-----BEGIN RSA PRIVATE KEY-----

MIICXgIBAAKBgQDA6nzyERl8yUQBur0/GyF5fc/fllnHiZZytY/peu/6HPMJvji0

3dOqDK27mb9GtSqr7S9G4ClX/VKKekMJtcN6n2YNBp0OydyOYaZadrI/SaqDjrqB

HtZ4//H6BKs24kC2kJHABG+CZpM1U6pIHwX6rBjuxi4VZuOPvz1nrJfhWQIDAQAB

AoGAQYNgSxRjg20WG0A/ZF7iT0/aeCOm+YxP+0SNSszlEhsirfxbZZCvgOAtX7gm

Publicité

rOx5QUma9IbLg4YTsdMzUOjZKQRU7Al5AHGl2Xt5Qit/dCNkq5MMEra3rfKq5tpQ

+20NUA8xya1wAEUkwgIv6+aehyNsPk/Jpdi+tLWRWrsc+MECQQDlY1uER+gdYqAY

i3PRBVHnvlmdrPJAfoACyeyyOGaZnUe7UlLOQJ8jU46+sLYvKd9sIAo4QoWuJQLi

ibla8SlXAkEA10vv6s89X0qBImzTc8grXw+C7ab7PHPkoB1EqH08494szX8vwEk7

W9opiekHR4br7dn0PlK+QZ4wPZ8QoxeszwJBAKcGudSQJ0t+TOSSZjqEjScZS1es

Xpjng36EWX1L5ClmhJy5TOIx2651YTMoqP+elbi9e7OLfJtZB8i8T+MQRvECQQCO

PgKFzWQL6CqHNwVBUres94+WOiN1HlCnpI6vDwdCuZA6ONSwovGPzwRwtD/19uM7

YyumXX6L1dqja8tPJZ4rAkEAgjplY0rEkgFaszTIy7giULTaJwpGMhomepkvYnM4

iL8JB2iy8PgYM4a54ykB1DFV00SajnG1VrpOGXI/RguYRw==

-----END RSA PRIVATE KEY-----

Visualisation des cl s RSA

La commande RSA permet de visualiser le contenu dun fichier au format PEM contenant une paire de clefs RSA :

$openssl o

  • Loption text demande laffichage d cod de la paire de la paire de clefs.
  • Loption noout supprime la sortie normalement produite par la commande rsa.

Il nest pas prudent de laisser une paire de clef en clair, surtout lacc s physique et distant la machine par une autre personne, risque de causer beaucoup de d g ts. Pour cela, openssl offre la possibilit de chiffrer la paire des cl s avec la commande :

$openssl rsa in macle.pem des3 out macle.pem

Une passephrase est demand e deux fois pour g n rer une cl sym trique prot geant lacc s la cl .

Extraction de la partie publique

La partie publique dune paire de cl devra tre communiqu e nimporte qui. Le fichier

macle.pem contient la partie priv e, et ne peut donc pas tre communiqu e tel quelle.

Lextraction de la partie publique est donn e par la commande :

$openssl rsa in macle.pem pubout out macle\_publique.pem

Chiffrement et d chiffrement de donn es avec RSA

On peut chiffrer /d chiffrer les donn es avec les cl s RSA :

$openssl rsautl -encrypt in fichier.txt -inkey tacle\_publique.pem pubin out fichier\_chiffre.txt

$openssl rsautl -decrypt in fichie\_chiffre.txt -inkey macle.pem out fichier\_clair.txt

Attention : le fichier des donn es chiffrer ne doit pas avoir une taille excessive (ne doit pas

d passer 116 octets pour une cl de 1024 bits).

Publicité

La signature num rique

Principe

Pierre cr e un document, et il calcule une emprunte (via les algorithmes MD5 ou SHA) partir de ce document. Il utilise ensuite sa cl priv e pour chiffrer cette donn e. Il associe le r sultat au document.

Chacun peut recalculer la somme de contr le du document et v rifier avec la cl publique de Pierre que le document est authentique et que Pierre est lauteur.

Exemple

Signer un document cest crypter avec sa cl priv e lempreinte dun fichier.

$openssl dgst -md5 fichier.txt > fichier.emp

$openssl rsautl -sign in fichier.emp -inkey cle.pem out fichier.sig

La v rification dune signature consiste d chiffrer la signature avec la cl publique. Ensuite on recalcule lempreinte pour v rifier que le document na pas t modifi .

$openssl rsautl -verify in fichier.sig -inkey pub.pem pubin

$openssl md5 fichier.txt

On peut signer et v rifier un document directement

$openssl dgst -md5 sign cle.pem out fichier.sig fichier.txt

$openssl dgst -md5 verify pub.pem -signature fichier.sig fichier.txt

Les certificats X509

La notion de certificat

Un certificat est un document qui comprend essentiellement une cl publique et des renseignements sur le propri taire de cette cl , le tout sign avec les cl s priv s dorganismes reconnus, des autorit s ou CA (Certification Authorities). Un certificat permet de dialoguer de mani re s re (chiffr e) avec la personne ou la soci t quil d crit. Si lon poss de dautres certificats d crivant les signataires, on a lassurance de lidentit du propri taire de la cl .

Les certificats X509

LISO a tabli un protocole, baptis X509, permettant lauthentification sur un r seau. Ce protocole utilise des certificats au format normalis .

Les certificats X509 ont t utilis s au d but pour la s curisation du courrier lectronique : PEM (Privacy Enhanced Mail), lanc tre de S/MIME, maintenant ils sont utilis s aussi bien dans la s curisation du web (via SSL) que dans bien dautres domaines.

Format dun certificat X509

Les diff rents champs

  • Version la version du protocole
  • Serial Number un num ro de s rie unique pour un CA
  • Algorithme Identifier lalgorithme utilis pour la signature

+ Algorithm

+ Parameters

  • Issuer la CA qui a mis le certificat
  • Period of validity la p riode de validit

+ Not before date d but

+ Not after date fin

Publicité

  • Subject la personne identifi e par le certificat
  • Subjects public key la cl publique

+ Algorithm

+ parameters

+ public key

  • signature la signature

Les formats des fichiers

Un certificat est stock dans un fichier. Les formats les plus souvent utilis s sont les suivants :

DER : le format DER, de lOSI, est le format binaire qui traduit lASN.1.

PEM : cest un format ascii, cod Base 64. Le texte est encadr dune ligne BEGIN CERTIFICATE et END CERTIFICATE

PKCS 7 : le standard RSA

PKCS12 : ce standard RSA est principalement utilis pour les certificats des utilisateurs. Un fichier PKCS12 contient non seulement le certificat dun utilisateur mais aussi sa cl priv e normalement prot g e par un mot de passe.

Description dun sujet ou dun CA

Ce sont les possesseurs de la cl publique.

  • C (Country) : pays
  • S(State) ou P (Province): tat ou province
  • L (Locality) : ville
  • (Organization) : soci t
  • OU (Organization Unit) : le service
  • CN (Common Name) : le nom du sujet ou ladresse DNS du serveur
  • E (Email) : adresse e-mail

Gestion des certificats avec openssl

Cr er une requ te de certificat

$openssl genrsa -out cle.pem 1024

$openssl req -new key cle.pem -out req.cer

$openssl req -in req.cer -text

Visualiser un certificat

$more certif.pem

$openssl x509 -in certif.pem -text -noout

Cr ation dun certificat racine

$openssl x509 -req -in req.cer -signkey cle.pem -out cer.cer

Jouer le r le dun CA : signer un certificat

  • Copier le fichier de configuration

$ cp /usr/local/openssl.conf

  • Cr er larborescence daccueil

Publicité

$ mkdir demoCA

$ mkdir demoCA/newcerts

$ echo 01 > demoCA/serial

$ touch demoCA/index.html

$ mkdir demoCA/private

$ mv cle.pem demoCA/private/cakey.pem

$ mv cer.cer demoCA/cacert.pem

  • Signer une requ te de certificat

$ openssl ca -config openssl.cnf -in person.req -out person.cer

Cr er un certificat pour une personne

$ openssl genrsa -out pers.key 1024

$ openssl req -new -key pers.key -out pers.req

$ openssl x509 -req -days 365 -CAcreateserial -CA cer.cer -CAkey cle.pem \

> -in pers.req -out req.cer

$ openssl pkcs12 -export -in pers.cer -inkey pers.key -out pers.pfx

$ openssl pkcs12 -in pers.pfx -out pers.pem

$ more pers.pem

Signature de fichiers

Suite la complexit des algorithmes de cryptographie asym trique, on signe toujours de petits documents. Pour signer un grand document, on calcule dabord une empreinte de ce document. La commande dgst (digest) permet de le faire.

$openssl dgst <hachage> -out resultat\_hachage fichier.txt

Signer un document revient signer son empreinte. Pour cela, on utilise loption sign de la

commande rsautl :

$openssl rsautl sign in resultat\_hachage inkey <cl > -out signature

Et pour v rifier la signature:

$openssl rsautl verify in signature -out resultat\_hachage1 pubin inkey macle\_publique