Cryptage facile

Contents

Algorithmes de chiffrement expliqués avec des exemples

Le cryptage est encodant des messages avec l’intention de uniquement permettre au destinataire prévu de comprendre la signification du message. C’est une fonction à double sens (vous devez être en mesure de défaire tout ce que vous avez fait au message). Ceci est conçu pour protéger les données en transit.

Algorithme de cryptage simple

Je travaille sur un projet d’ascenseur juste pour le plaisir, c’est en fait du matériel. Mais je pense que c’est plus une question logicielle. Je n’ai pas besoin d’avoir cette fonctionnalité, en fait, elle est complètement redondante, mais j’étais curieux, donc je l’ajoute quand même pour que je puisse apprendre: P J’ai une adresse 8 bits, un bus de données 8 bits et un chiffrement 8 bits code. J’ai un maître et de nombreux appareils d’esclaves. Le maître connaît l’adresse des esclaves et connaît le code de cryptage. Les esclaves connaissent également leur adresse et le code de chiffrement. Je veux un algorithme vraiment simple tel que: le maître envoie “y” où, y = fonction (données, code de chiffrement) L’esclave reçoit “y” et peut extraire les données par des données = fonction2 (y, code de cryptage) J’ai essayé de jouer autour de avec et, xor, ou, etc. et des combinaisons d’entre eux, mais ne pouvaient pas le comprendre. Encore une fois, je cherche des algorithmes simples. Si cela ne vous dérange pas, vous pourriez me faire une plus grande faveur et expliquer une théorie sur la façon dont je peux venir à une telle solution / fonctions. Merci beaucoup!

demandé le 25 avril 2013 à 15h46
441 1 1 badge d’or 5 5 badges en argent 12 12 badges en bronze

Simple et Un cryptage efficace va prendre la forme d’une bibliothèque, pas quelque chose que vous écrivez vous-même. Le cryptage simplement simple pourrait être ROT13.

25 avril 2013 à 15:48
XEA est également relativement simple, RC4, mais c’est un peu difficile à utiliser correctement.
25 avril 2013 à 15h50

Une approche très simple – Envoyez la touche y = x xor, puis x = y xor clé de l’autre côté, mais il n’y aura pas beaucoup de protection là-bas.

Algorithmes de chiffrement expliqués avec des exemples

Megan Kaczanowski

Megan Kaczanowski

Algorithmes de chiffrement expliqués avec des exemples

La cryptographie, à sa base, est la science de l’utilisation des codes et des chiffres pour protéger les messages.

Le cryptage est encodant des messages avec l’intention de uniquement permettre au destinataire prévu de comprendre la signification du message. C’est une fonction à double sens (vous devez être en mesure de défaire tout ce que vous avez fait au message). Ceci est conçu pour protéger les données en transit.

Si vous recherchez un contexte général sur la différence entre les algorithmes symétriques et asymétriques et un aperçu général de ce qu’est le chiffrement, commencez ici. Cet article couvrira principalement deux des algorithmes de chiffrement les plus couramment utilisés.

En tant qu’aperçu général, il y avait un problème majeur avec les algorithmes symétriques lorsqu’ils ont été créés pour la première fois – ils ne fonctionnaient efficacement que si les deux parties connaissaient déjà le secret partagé. S’ils ne l’ont pas fait, échanger en toute sécurité une clé sans un tiers Eves-Dropping était extrêmement difficile.

Et si un tiers a obtenu la clé, il leur a été très facile de briser le cryptage, battant l’objectif d’une communication sécurisée.

Diffie-Hellman a résolu ce problème en permettant aux étrangers d’échanger des informations sur les canaux publics qui peuvent être utilisés pour former une clé partagée. Une clé partagée est difficile à casser, même si toutes les communications sont surveillées.

Comment fonctionne Diffie-Hellman?

Diffie-Hellman est ce qu’on appelle un protocole d’échange de clés. Il s’agit de l’utilisation principale de Diffie-Hellman, bien qu’elle puisse également être utilisée pour le chiffrement (ce n’est généralement pas le cas, car il est plus efficace d’utiliser D-H pour échanger des clés, puis passer à un cryptage symétrique (significativement plus rapide) pour la transmission des données pour la transmission des données ).

La façon dont cela fonctionne est la suivante:

Screen-Shot-2019-10-04-AT-5.45.13-pm

Fondamentalement, il y a deux fêtes, Alice et Bob, qui s’accordent sur une couleur de départ (arbitraire mais doivent être différentes à chaque fois). Ils ont aussi une couleur secrète qu’ils gardent pour eux-mêmes. Ils mélangent ensuite cette couleur avec la couleur partagée, résultant en deux couleurs différentes. Ils transmettent ensuite cette couleur à l’autre partie, qui le mélange avec leur couleur secrète, résultant en la même couleur secrète de fin.

  Fait du travail gratuit cyberghost

Cela repose sur l’idée qu’il est relativement facile de mélanger deux couleurs ensemble, mais il est très difficile de les séparer afin de trouver la couleur secrète. En pratique, cela se fait avec les mathématiques.

  1. Bob et Alice sont d’accord sur deux nombres, un grand premier, p = 29 et la base g = 5
  2. Maintenant, Bob choisit un numéro secret, x (x = 4) et fait les éléments suivants: x = g ^ x% p (dans ce cas,% indique le reste. Par exemple, 3% 2 est 3/2, où le reste est 1). X = 5 ^ 4% 29 = 625% 29 = 16
  3. Alice choisit également un numéro secret, y (y = 8) et fait les éléments suivants: y = g ^ y% p. Y = 5 ^ 8% 29 = 390 625% 29 = 24
  4. Bob envoie X à Alice et Alice envoie Y à Bob.
  5. Alors Bob fait ce qui suit: k = y ^ x% p, k = 24 ^ 4% 29 = 331 776% 29 = 16
  6. Alice fait alors ce qui suit: K = x ^ y% p, k = 16 ^ 8% 29 = 4 294 967 296% 29 = 16

La grande chose (* peut-être magique *) à ce sujet, c’est que Bob et Alice ont le même nombre, K, et peuvent maintenant l’utiliser pour parler secrètement, car personne d’autre ne connaît K.

La sécurité de ce protocole est fondée sur certaines choses:

  1. (Fait) Il est relativement facile de générer des nombres premiers, même de gros nombres premiers (comme P).
  2. (Fait) l’exponentiation modulaire est facile. En d’autres termes, il est relativement facile de calculer x = g ^ x% p.
  3. (Hypothèse basée sur la puissance de calcul actuelle et les mathématiques) Extraction des racines modulaires sans les facteurs premiers est très difficile. Essentiellement, il est très difficile de trouver K sans connaître X et Y, même si vous avez espiré le trafic et que vous pouvez voir P, G, X et Y.

Ainsi, en supposant que cela a été mis en œuvre correctement, il est relativement facile de faire le calcul nécessaire pour créer la clé, mais est extrêmement difficile et prend du temps pour faire le calcul nécessaire pour essayer de briser la clé en le forçant brute.

Même si un attaquant pouvait compromettre cette clé, Diffie-Hellman permet un secret avant parfait.

Ce qui est le secret avant parfait?

C’est l’idée que si vous craquez le cryptage que le serveur utilise pour communiquer maintenant, cela ne signifie pas que toutes les communications que le serveur ont jamais effectuées peuvent être lues.

En d’autres termes, cela ne vous permet que de voir les communications qui sont utilisées maintenant (c’est-à-dire avec cette clé secrète). Étant donné que chaque ensemble de communications a une clé secrète différente, vous devrez les casser tous séparément.

Cela est possible si chaque session a une clé éphémère différente pour chaque session. Parce que Diffie-Hellman utilise toujours de nouvelles valeurs aléatoires pour chaque session (générant donc de nouvelles clés pour chaque session), elle est appelée éphémère Diffie Hellman (EDH ou DHE). De nombreux suites de chiffre utilisent cela pour atteindre un secret avant parfait.

Comme Diffie-Hellman vous permet d’échanger du matériel clé en texte en clair sans vous soucier de compromettre le secret partagé, et les mathématiques sont trop compliquées pour qu’un attaquant soit brutal, l’attaquant ne peut pas dériver la clé de session (et même si elle le pouvait, en utilisant Des clés différentes, éphémères, pour chaque session, cela ne peut que l’apidoir sur cette session – pas dans le passé ou le futur).

Le secret avant est activé avec tout échange de clés Diffie-Hellman, mais seul l’échange de clés éphémères (une clé différente pour chaque session) fournit un secret avant parfait.

Voici un article de Scott Helme en parlant plus en profondeur et en expliquant comment activer cela sur vos serveurs.

Quelles sont les limites de Diffie-Hellman?

La plus grande limitation de D-H est que cela ne vérifie pas l’identité. En d’autres termes, n’importe qui peut prétendre être Alice ou Bob et il n’y a pas de mécanisme intégré pour vérifier que sa déclaration est vraie.

  Μπλοκάρισμα της διεύθυνσης IP Mac

De plus, si la mise en œuvre n’est pas effectuée de manière sécurisée, l’algorithme pourrait être craqué avec suffisamment de ressources dédiées (peu probable, mais possible pour les équipes universitaires ou les acteurs de l’État-nation).

Par exemple, cela pourrait se produire si le générateur de nombres aléatoires ne reçoit pas une entropie adéquate pour soutenir la force souhaitée – en d’autres termes, car les nombres générés par ordinateur ne sont jamais vraiment aléatoires, la mesure dans laquelle vous avez injecté artificiellement l’incertitude est importante à la force de votre implémentation.

De plus, une attaque a été démontrée en 2015 qui a montré que lorsque les mêmes nombres premiers étaient utilisés par de nombreux serveurs que le début de l’échange de clés, la sécurité globale de Diffie-Hellman était plus faible que prévu.

Essentiellement, un attaquant pourrait simplement précomputer l’attaque contre ce premier, ce qui facilite la compromis de sessions pour tout serveur qui a utilisé ce numéro de premier ordre.

Cela s’est produit parce que des millions de serveurs utilisaient les mêmes nombres premiers pour les échanges de clés. Pré-composer ce type d’attaque nécessite toujours des ressources académiques ou de niveau national et il est peu probable d’avoir un impact sur la grande majorité des gens.

Cependant, heureusement pour ceux qui doivent se soucier des attaquants de l’État-nation, il existe un moyen différent de réaliser l’échange de clés DH en utilisant la cryptographie de la courbe elliptique (ECDHE). Ceci est hors de portée de cet article, mais si vous souhaitez en savoir plus sur les mathématiques derrière cet échange, consultez cet article.

Pour un regard plus détaillé sur les faiblesses de DH, consultez ce livre blanc et ce site Web.

RSA

RSA est nommé pour les créateurs – Rivest, Shamir, Adleman – et c’est une manière de générer des clés publiques et privées.

Techniquement, il existe deux algorithmes RSA (un utilisé pour les signatures numériques, et une utilisée pour le cryptage asymétrique.) – Cet article couvre l’algorithme de chiffrement asymétrique.

Cela permet un échange de clés – vous attribuez d’abord chaque partie à la transaction des clés publiques / privées, puis vous générez une clé symétrique, et enfin, vous utilisez les paires de clés publiques / privées pour communiquer en toute sécurité la clé symétrique partagée.

Parce que le cryptage asymétrique est généralement plus lent que le chiffrement symétrique, et ne s’adapte pas également, l’utilisation du cryptage asymétrique pour échanger en toute sécurité les clés symétriques est très courante.

Alors, comment ça marche?

  1. Choisissez 2 très grands nombres premiers (au moins 512 bits, ou 155 chiffres décimaux chacun), x et y (ces nombres doivent être secrètes et choisis au hasard)
  2. Trouver le produit, c’est-à-dire z = x * y
  3. Sélectionnez un entier public étrange, E, entre 3 et n – 1, et n’a aucun facteur commun (autre que 1) avec (X-1) (Y-1) (il est donc relativement primordial pour x – 1 et y – 1 ).
  4. Trouvez le multiple le moins commun de X – 1 et Y – 1, et appelez-le L.
  5. Calculez l’exposant privé, d, de x, y et e. DE = 1% L. D est l’inverse de E% L (vous savez qu’un inverse existe car E est relativement primaire pour Z – 1 et Y – 1). Ce système fonctionne parce que p = (p ^ e) ^ d% z.
  6. Sortie (z, e) comme clé publique et (z, d) comme clé privée.

Maintenant, si Bob souhaite envoyer un message à Alice, il génère le texte chiffré (C) à partir du texte brut (P) en utilisant cette formule:

Afin de décrypter ce message, Alice calcule ce qui suit:

La relation entre D et E garantit que les fonctions de chiffrement et de décryptage sont inverses. Cela signifie que la fonction de décryptage est capable de récupérer avec succès le message d’origine, et qu’il est assez difficile de récupérer le message d’origine sans la clé privée (Z, D) (ou Prime Facteurs X et Y).

Cela signifie également que vous pouvez rendre les z et e publics sans compromettre la sécurité du système, ce qui facilite la communication avec les autres avec lesquels vous n’avez pas déjà de clé secrète partagée.

Vous pouvez également utiliser les opérations à l’envers pour obtenir une signature numérique du message. Tout d’abord, vous utilisez l’opération de décryptage sur le texte en clair. Par exemple, s = signature (p) = p ^ d% z.

  Vitesse cyberghoste

Ensuite, le destinataire peut vérifier la signature numérique en appliquant la fonction de chiffrement et en comparant le résultat avec le message. Par exemple, m = vérification (s) = s ^ e% z.

Souvent, lorsque cela est fait, le texte en clair est un hachage du message, ce qui signifie que vous pouvez signer le message (quelle que soit la longueur) avec une seule exponentiation.

La sécurité du système est basée sur certaines choses:

  1. (Fait) Il est relativement facile de générer des nombres premiers, même de gros nombres premiers (comme X et Y).
  2. (Fait) La multiplication est facile. Il est très facile de trouver z.
  3. (L’hypothèse basée sur les mathématiques actuelles) L’affacturation est difficile. Étant donné Z, il est relativement difficile de récupérer X et Y. Il est faisable, mais cela prend un certain temps, et c’est cher.

Une estimation indique que la récupération des facteurs premiers d’un numéro de 1024 bits prendrait un an sur une machine qui coûterait 10 millions de dollars. Le doublement de la taille augmenterait exponentiellement la quantité de travail nécessaire (plusieurs milliards de fois plus de travail).

Alors que la technologie continue de progresser, ces coûts (et les travaux requis) diminueront, mais à ce stade, ce type de cryptage, correctement mis en œuvre, est une source de compromis improbable.

Screen-Shot-2019-10-05-AT-11.18.45-AM

Généralement, les seuls pirates avec ce type d’argent et de dévouement à une seule cible sont les États-nations. De plus, s’il existe un moyen plus facile de compromettre un système (voir ci-dessous), c’est probablement une meilleure option.

4. (Fait) l’exponentiation modulaire est facile. En d’autres termes, il est relativement facile de calculer C = p ^ e% z.

5. (Fait) Extraction des racines modulaires – inverser le processus ci-dessus – est facile si vous avez les facteurs premiers (si vous avez z, c, e et les facteurs premiers x et y, il est facile de trouver p tel que c = p ^ e % z).

6. (Hypothèse basée sur la puissance de calcul actuelle et les mathématiques) Extraction des racines modulaires sans les facteurs premiers est très difficile (si vous avez z, c, e, mais pas x et y, il est relativement difficile de trouver p tel que c = p ^ e% z, en particulier si A est suffisamment grand).

Vous voulez en savoir plus sur les mathématiques des gens beaucoup plus intelligents? Consultez cet article.

Super, ce qui est mieux?

Cela dépend de votre cas d’utilisation. Il existe quelques différences entre les deux algorithmes – d’abord, le secret avant parfait (PFS), dont nous avons parlé plus tôt dans le contexte de Diffie-Hellman. Bien que techniquement vous pourrait générer des paires clés RSA éphémères et fournir un secret avant parfait avec RSA, le coût de calcul est beaucoup plus élevé que pour Diffie-Hellman – ce qui signifie que Diffie-Hellman est un meilleur choix pour les implémentations SSL / TLS où vous voulez un secret avant parfait.

Bien qu’il existe des différences de performances entre les deux algorithmes (en termes de travail requis par le serveur), les différences de performances ne sont généralement pas suffisamment grandes pour faire une différence lors du choix de l’autre.

Au lieu de cela, en général, la principale considération lorsque vous déterminez ce qui est mieux dépend de celle la plus prise en charge pour votre cas d’utilisation (par exemple, lorsque vous implémentez SSL En tant que norme de l’industrie.

Par exemple, alors que Diffie-Hellman a été approuvé par le gouvernement américain et soutenu par un organisme institutionnel, la norme n’a pas été publiée – tandis que la RSA (standardisée par une organisation privée) a fourni une norme gratuite, ce qui signifie que RSA est devenu très populaire parmi les organisations privées.

Si vous êtes intéressé à en savoir plus, il y a un grand fil ici sur les différences.

Intéressé à apprendre à utiliser les pirates d’utilisation des attaques cryptographiques? Essayez cet ensemble de défis de Cryptopals.

Plus j’apprends sur la cryptographie, plus je pense qu’Alice et Bob devraient probablement parler en personne.

– Paul Reinheimer (@preinheimer) 13 mars 2017