NOPE LinkedIn

Catégories:
SSL

Symmetrical vs asymmetrical crypto

Symmetrical vs asymmetrical crypto


Disclaimer: Ce contenu est simplement à caractère éducatif. Ne lancez pas votre propre cryptographie. Use TLS and GPG.

“Anyone can invent an encryption algorithm they themselves can’t break; it’s much harder to invent one that no one else can break”. Bruce Schneier

Ce ne sont pas de nouveaux sujets, mais si vous lisez ceci, vous pourriez peut-être l’utiliser pour un rapide rappel (ou comme introduction si vous n’êtes pas familier avec les concepts). Nous examinons les différences entre les cryptographies symétrique et asymétrique.

The operations

Les opérations elles-mêmes peuvent être :

  • Signer
  • Encrypter

Signer

Création de contenu supplémentaire - appelé signature - basé sur un message cela prouve que son auteur avait accès à une clé spécifique.

Une certaine signature pour un certain contenu ne peut être produite qu’avec une certaine clé, et cela doit être vérifiable.

La signature doit être fournie avec le message, les deux parties sont nécessaires pour vérifier la provenance.

Signer un message n’empêche personne d’autre de le lire, cela empêche seulement quelqu’un n’ayant pas accès à la clé de falsifier ou de falsifier le message.

La taille d’une signature ne doit pas varier avec la taille du message.

Il n’est pas possible d’obtenir le message à partir d’une signature.

Encrypter

Modifier un message afin qu’il devienne illisible pour quiconque n’ayant pas accès à une clé spécifique.

L’envoi d’un message crypté peut empêcher les personnes n’ayant pas accès a la clef de décryptage de le lire, mais cela n’empêche pas la falsification ou la falsification des messages.

Symmetrical

Symmetrical means there’s a shared key. It means the same key used to encrypt is used to decrypt, and it means that the same key used to produce a signature is also the key necessary to verify the signature.

Symmetrical encryption

Le chiffrement symétrique existe depuis longtemps. Cela peut être aussi simple que de décaler les lettres/chiffres d’un nombre déterminé par la touche.

Exemple en node

var crypto = require('crypto');

var message = 'original message';
var key = 'secret';

var cipherAlgorithm = 'aes-256-cbc';
var clearTextEncoding = 'utf8';
var cipherTextEncoding = 'base64';

var cipher = crypto.createCipher(cipherAlgorithm, key);
var ciphered;
ciphered += cipher.update(message, clearTextEncoding, cipherTextEncoding);
ciphered += cipher.final(cipherTextEncoding);

console.log('Ciphered:', ciphered);

var decipher = crypto.createDecipher(cipherAlgorithm, key);
var deciphered;
deciphered += decipher.update(ciphered, cipherTextEncoding, clearTextEncoding);
deciphered += decipher.final(clearTextEncoding);

console.log('Deciphered:', deciphered);

Symmetrical signing

Au lieu de “signature”, le terme MAC (Message Authentication Code) est plus fréquemment utilisé. MAC est fréquemment utilisé pour décrire à la fois la signature ainsi que l’algorithme qui l’a produit.

La plupart des algorithmes MAC sont basés sur des fonctions de hachage, et les plus courants la façon dont ils fonctionnent consiste à produire un hachage du contenu mélangé à la clé.

Si la fonction de hachage est bonne, il ne sera pas possible de falsifier ou de falsifier un message et produire le MAC correct sans la clé.

Un algorithme MAC peut être aussi simple que d’utiliser un bon fonction de hachage, et l’appliquer au contenu mélangé avec la clé.

Un algorithme MAC très populaire est le HMAC.

Exemple en node

var crypto = require('crypto');

var message = 'original message';
var key = 'secret';

var hashAlgorithm = 'sha256';
var macEncoding = 'base64';

var hmac = crypto.createHmac(hashAlgorithm, key);
hmac.update(message);
var mac = hmac.digest(macEncoding);

console.log('Mac:', mac);

Asymmetrique

Asymétrique signifie que chaque partie a deux clés, une publique et une privée. Une clé publique peut être dérivée de la clé privée, mais l’opération inverse n’est pas possible.

Les opérations asymétriques sont beaucoup plus lentes que les opérations symétriques. Alors pourquoi et quand les utiliser ?

Les opérations symétriques nécessitent une clé commune pour les deux parties Les deux clés doivent être utilisées dans une transaction :

  • Alice signe un document avec sa clé privée et n’importe qui peut vérifier qu’elle a fait en utilisant sa clé publique.
  • Pour envoyer un message secret à Alice, on le chiffre avec la clé publique d’Alice, seule sa clé privée est capable de le déchiffrer.

Notice the different key uses:

  • Public key
    • Encrypting
    • Verifying signatures
  • Private key
    • Decrypting
    • Signing

Encryption Asymmetrique

Le chiffrement asymétrique est très récent, le premier algorithme pratique, RSA, a été publié en 1977.

Il est basé sur la difficulté pratique de factoriser le produit de deux grandes nombres premiers and exponentiation modulaire.

Utiliser GPG

$ cat message
HELLO THERE
$ gpg --encrypt --armor --recipient soarez@keybase.io < message > encrypted
$ cat encrypted
-----BEGIN PGP MESSAGE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org

hQEMA7AQgA7KfpdAAQf8CWm1F0P+nd3xChVGMfWUKlIL2nBQsEHSv4wrMJatQmqE
8PWkX+X1T7wBlR2aILItCPH7M+N0m+1ePDK/2wkyxtQKnIXVSGk+v0LJDxf6PoZD
3mhMj9ntCGL+orWKlonvRgMepxEmFbNd1JLaX30LAkmjr+fYPcpseIAKjDVgB+JX
qXxrQvOxwzWdbewq0/LO/tTJL9FUn9g30ja8GCf5QDL+rc6ksFPWlzbDItVRSHqT
SyaL5HGiRyONH9KW3Exv+0vVZ+R2oLqzU4/WMYjuFJ7Eqv7wz0p7vxceT57VOPIF
NrzEXQ/Ci7BhyWkuWJo6wBdBwIta9PyyPJY73taEBtJHAb9mJcR0aFPgex4HfrRM
GSuTBOJVGyEFFcUwUjP3yY2Ck7WbTsLQkfZh4t+zP3Lw31oXLqpP5BaSMJ2tYnZG
fS2sEK1lldQ=
=/xtk
-----END PGP MESSAGE-----
$ gpg --decrypt
You need a passphrase to unlock the secret key for
user: "Igor Soarez <soarez@keybase.io>"
2048-bit RSA key, ID CA7E9740, created 2014-03-26 (main key ID 1C1987ED)

gpg: encrypted with 2048-bit RSA key, ID CA7E9740, created 2014-03-26
      "Igor Soarez <soarez@keybase.io>"
      HELLO THERE

Notez que nous devions spécifier le destinataire, cela identifie quel clé publique à utiliser dans le processus de chiffrement.

Si vous voulez essayer GPG, jetez un coup d’œil au GPG setup guide.

Signature Asymmetrique

L’auteur calcule un hachage du message et le déchiffre avec sa propre Clé privée. C’est bien, déchiffre. Ensuite, quelqu’un d’autre peut le crypter pour en obtenir le hachage et vérifiez que le hachage est correct. L’astuce est que les opérations de chiffrement et de déchiffrement sont utilisés d’une manière différente de celle pour laquelle ils ont été conçus. Seul le propriétaire de la clé privée aurait pu produire quelque chose qui, une fois chiffrée avec la clé publique correspondante se transforme en un résultat spécifique.

Alors que la cryptographie symétrique est suffisante pour une utilisation au sein d’un groupe fermé, par ex. un ensemble de micro-services réalisés par la même équipe, la crypto asymétrique est nécessaire pour traiter avec de nombreuses parties qui ne se font pas confiance mutuellement et pour maintenir une relation basée sur une clef commune avec chaque partie devient problématique.

Using GPG

$ gpg --sign  --clearsign < message
$ cat message
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

HELLO THERE
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org

iQEcBAEBCgAGBQJVbYNxAAoJEOkvWAkcGYftoacH/2uj531SNKbMwlqyFk2PfsQm
Tsee7x5NKYPNXj8IvcQCQWHsJHXZS5kV9tNMgwontFAUegfbi0JZsEH3JA25RRLG
qqcNYHsvDFTobuTaD+qEnwq4/QT0fHtssHoyHjKJrqQgt4UsIITFAhwALh82OyfJ
oTty94v7fjC+CTqtLAenD7oQMvAklL4epBLpozrSwBA2u7LPnfzMG8x6Oeyl5KjQ
x4K7bVgkfffcNbCgztUUNTUGiH73zBKWFwI+dzLmIrEQjncWsSTf/JxG3R1A7SDS
pv/gw4yCauv1pymeQB5gCecIrUyfHOX/CTrBTjyoPL642XwmoULWWBlwNJhTR9o=
=oCct
-----END PGP SIGNATURE-----
$ gpg --verify signed
 gpg --verify signed
gpg: Signature made Tue Jun  2 11:20:33 2015 BST using RSA key ID 1C1987ED
gpg: Good signature from "Igor Soarez <soarez@keybase.io>"

Si vous voulez essayer GPG, jetez un coup d’œil au GPG setup guide.

Note finale

J’espère que cette très courte introduction vous a été utile. Si vous voulez en savoir plus, Je recommande de regarder une introduction beaucoup plus complète à la cryptographie — Journey into Cryptography par KhanAcademy.