Encore une fois Ă  propos d'OpenSSL

Dans ma pratique encore petite dans le domaine de la sécurité de l'information, j'ai dû faire face à des problÚmes de cryptographie, ou plutÎt de cryptage, auxquels je ne pouvais pas trouver de réponses claires. Par conséquent, j'ai décidé d'écrire un court article sur les bases du travail avec OpenSSL.

Cet article abordera les problÚmes de génération de clés bien connus, ainsi que le problÚme moins connu de chiffrement des fichiers de grande taille. La certification est hors de question ici.

Commençons. En fait, tout est simple jusqu'à présent.

Créez une clé privée avec la commande.

openssl genrsa -out key.pem -aes-256-cfb -rand /var/log/messages 4096 



Ici:

genrsa - un paramÚtre indiquant la création d'une clé par l'algorithme de chiffrement RSA.
out - oĂč crĂ©er la clĂ©.
4096 est la longueur de clé.
En général, cela suffit pour créer une clé. Mais la clé privée est préférable de crypter.
aes-256-cfb - algorithme et mode de cryptage.
rand / var / log / messages - valeurs aléatoires de n'importe quel dossier, il est préférable de prendre des journaux, car avec / dev / random ou / dev / urandom tout peut s'accrocher, je l'ai eu.
Lors de la création d'une clé, un mot de passe sera demandé. Le mot de passe est la base de toute protection, alors essayez de l'espionner. Et souviens-toi.

Nous avons une clé. Privé Ne jamais montrer ni cacher à personne selon le principe de Koshchei l'immortel.

Sur cette base, nous en rendrons une publique qui pourra ĂȘtre exposĂ©e publiquement, au moins sur le front.

 openssl rsa -in privatkey.pem -pubout -out publickey.pem 



Maintenant, nous avons une paire de clés. Vous pouvez télécharger celui public sur le serveur pour vous y connecter via ssh en utilisant votre clé privée. Ou pour crypter une petite quantité de données, par exemple, un jeton ou une phrase secrÚte, etc.

La tùche de chiffrer un gros fichier a une solution différente.

Pour crypter une grande quantité de données, nous utilisons, par exemple, ce fichier pdf d'une taille de 1,8 Mo.



Une grande quantité de données est cryptée avec un algorithme de cryptage symétrique, tel que AES. Ici, nous utiliserons le cryptage asymétrique pour transmettre une clé symétrique, avec laquelle nous crypterons le texte.

Commençons.

Créez une clé de session symétrique (unique) avec une séquence aléatoire de caractÚres et écrivez-la dans un fichier dans la représentation base64.

 openssl rand -base64 32 > key.bin 

Ensuite, nous chiffrons le fichier avec cette clé:

 openssl enc -aes-256-cfb -salt -in OWASP_Top_10-2017_\(en\).pdf -out OWASP_Top_10-2017_\(en\).pdf.enc -pass file:./key.bin 



aes-256-cfb - algorithme et mode de cryptage. Je ne parlerai pas des modes ici. C’est le meilleur.
sel - sel pour une plus grande force cryptographique.
fichier de passe: ./ key.bin - clé de cryptage.

Ensuite, nous chiffrons la clé symétrique avec notre clé publique «asymétrique».

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in key.bin -out key.bin.enc 



Vous avez un fichier cryptĂ© et une clĂ© symĂ©trique. Vous pouvez l'envoyer Ă  votre ami pour le dĂ©chiffrer. Mais nous nous l'enverrons, car c'est un devoir avec nous-mĂȘmes.

Maintenant, supprimez la clé symétrique d'origine! Pour que personne ne le trouve jamais.

 shred -u key.bin 

Dans l'image ci-dessous, il n'est plus lĂ .



Maintenant, nous décryptons la clé symétrique avec notre clé asymétrique privée.

 openssl rsautl -decrypt -inkey privatkey.pem -in key.bin.enc -out key.bin 

Et nous, les chanceux, avons encore une clé symétrique pour décrypter notre texte, qui est toujours crypté.

L'image est à nouveau ci-dessous, il y a encore une clé.



Maintenant, nous allons déchiffrer le fichier chiffré avec le chiffrement symétrique par notre nouveau chiffré, mais ensuite déchiffré en utilisant le chiffrement asymétrique, clé symétrique.

 openssl enc -d -aes-256-cfb -in OWASP_Top_10-2017_\(en\).pdf.enc -out OWASP_Top_10-2017_\(en\)decrypt.pdf -pass file:./key.bin 

Preuve ci-dessous.



Maintenant: pourquoi est-ce si compliqué? Pourquoi ne pouvez-vous pas tout prendre et tout faire avec un cryptage asymétrique?

Nous essayons, allons directement au rĂąteau;)
Nous avons!

Fichier et clés.



Nous chiffrons.

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in OWASP_Top_10-2017_\(en\).pdf -out OWASP_Top_10-2017_\(en\).pdf.enc 

POW - POW - POOOOOOOOOOOOH. L'erreur. Trop de donnĂ©es pour la taille de la clĂ©. Pour le chiffrement asymĂ©trique, la taille de la clĂ© doit ĂȘtre supĂ©rieure ou Ă©gale au texte en clair.
OpenSSL, comme dans un accord avec le diable, vous a donné ce que vous demandiez, mais pas ce que vous vouliez. Certes, le fichier chiffré était vide.



Mais vous pouvez crypter un fichier plus petit que la clé. Essayons.

Créez un petit fichier.

Par exemple, j'ai fait ceci:

 echo "hellow world my name is admin is a secret text nobody know it hahahahaahah" > text.txt 



Nous allons le crypter avec notre clé publique, que tout le monde connaßt dans le monde!

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in text.txt -out text.txt.enc 

Comme vous pouvez le voir dans l'image du bas, le fichier est crypté. Rien n'est clair! Qui comprend qui tu es?



Maintenant, nous décryptons, aprÚs avoir supprimé le fichier source pour la pureté de l'expérience.

 openssl rsautl -decrypt -inkey privatkey.pem -in text.txt.enc -out text.txt 



Nous avons un fichier décrypté. Tout est super.

Pour transférer tout ce bien chiffré, il est préférable de coder ce dernier en base64. Par conséquent, avant de décrypter, vous devez d'abord décoder.
Encodé.

 openssl enc -base64 -in text.txt.enc -out text.txt.bs64 



Décodé.

 openssl enc -base64 -d -in text.txt.bs64 -out text.txt.enc 



Et encore une fois, nous avons une croyance que personne ne comprend! Si vous comprenez, ce document n'est pas pour vous!

Voici comment fonctionne le chiffrement lors de la création de clés et du chiffrement de données en utilisant l'utilitaire OpenSSL comme exemple.

Plus tard, je vais décrire les modes de chiffrement des chiffrements symétriques par blocs.

Source: https://habr.com/ru/post/fr417069/


All Articles