Quelques indications sur l’utilisation d’openssl

 

La bibliothèque openssl fournit de nombreux outils pour la cryptographie. Dans ce projet, vous pourrez avoir besoin d’effectuer les tâches suivantes, pour lesquelles voici les commandes correspondantes.


  1. 1. Créer une clé privée
        openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:512 -out toto.pem

  2. 2. Créer une clé publique
        openssl rsa -pubout < toto.pem > toto.pub

  3. 3. Lire les informations d’une clé
        openssl rsa -text < toto.pem
    ou, s’il s’agit d’une clé publique
         openssl rsa -pubin -text < toto.pub

  4. 4. Crypter avec une clé publique
    Le message secret étant dans le fichier msg.txt et la clé publique toto.pub :
        openssl rsautl -pubin -ssl -inkey toto.pub -encrypt -in msg.txt  > msg.out

  5. 5. Décrypter avec une clé privée
    C’est l’opération inverse, pour laquelle il faut avoir la clé privée :
        openssl rsautl -inkey toto.pem -decrypt  -in msg.out

  6. 6. Créer une clé privée à partir de deux nombres premiers

    Si p et q sont les deux nombres premiers, il faut effectuer quelques calculs supplémentaires :
    calculer l’exposant privé à partir de l’exposant public (qui vaut 66537 par défaut) par
        privexp = pubexp^(-1) mod (
p-1)(q-1) ;
    calculer deux exposants accessoires
        e1 = privexp mod (
p-1),

        e2 = privexp mod (q-1) ;
    calculer un coefficient
        coef =
q^(-1) mod p.
    Ensuite, créez un fichier toto.asn1 comme celui-ci :
                 

asn1=SEQUENCE:rsa_key


[rsa_key]

version=INTEGER:0

modulus=INTEGER:3701251

pubExp=INTEGER:65537

privExp=INTEGER:8588030768435578185

p=INTEGER:269828973

q=INTEGER:32844938775505526772287

e1=INTEGER:106537413454481206911757

e2=INTEGER:31847868062062288090373

coeff=INTEGER:876014764790982277617


    en remplaçant les différentes valeurs par celles que vous avez trouvées.
    Transformez ces informations en une clé au format DER :
        openssl asn1parse -genconf toto.asn1 -out toto.der
    Vérifiez le résultat :
        openssl rsa -in toto.der -inform der -text -check
    Convertissez enfin au format PEM :
        openssl rsa -inform der -outform pem -in toto.der -out toto.pem