chiffrement asymétrique en c++

a marqué ce sujet comme résolu.

Bonjour,

Je voudrais savoir quel est le meilleur algorithme de chiffrement asymétrique actuelle utiliser dans la sécurité des cryptomonnaies et dans les banques etc ? Car il y’en a beaucoup comme le chiffrement RSA et les Cryptographie sur les courbes elliptiques etc.

Et comment les utliser en c++ ? Y’a t-il des fonctions ou des bibliothèques ?

+0 -0

Coucou,

Il n’y a pas de meilleur algorithme. Il y a des algorithmes plus ou moins adapté à certaines situations.

La référence dans ce domaine est OpenSSL. Je n’ai jamais essayé mais ça n’a pas une réputation de simple à utiliser.

Parenthèse, cryptomonnaies ? De quelle sécurité parles-tu ? Pourquoi penses-tu que les banques utilise du chiffrement asymétrique ?

+0 -0

Cryptomonnaies, pour effectuer des transactions (clé privée vers clé public) Pourquoi les Banques ? Pour protéger leur client durant les transactions car je pense que le code secret à 4 chiffres est une clé privée qui est détenue seulement par le client et la clé public est le RIB par exemple qu’on peut donner a tout le monde pour recevoir de l’argent.

Il n’y a pas de meilleur algorithme. Il y a des algorithmes plus ou moins adapté à certaines situations.

Je cherche à comprendre le système des cryptomonnaies telles que le Bitcoin ou Etherum.

Comment je peux utilser OpenSSL en C++ puisque ce n’est pas un algorithme de chiffrement en soit, c’est une boite à outils contenant les algo de chiffrement ? Aurais tu des tuto a me conseiller ?

+0 -0

Si tu veux apprendre comment marche le bitcoin ou ethereum ils ont des boites à outils et pas besoin de cpp ou de code en soit

Y a des papiers assez précis et de nombreuses Boîtes à outils (ethereum en rust ou en cpp)

Généralement c’est quand même de l’elleptic curves. Aussi tu peux regarder du côté du multi party threshold (ecdsa) par exemple (pour butcoind createmultisig)

Le code à 4 chiffres de ta banque n’est pas une clé privée mais une aberration du point de vue de la sécurité. Le RIB est juste un identifiant composé de numéros pour identifier ta banque et ton compte chez la banque (tu peux trouver le définition exacte sur internet, tu as le même principe pour ton numéro de carte bancaire), pas une clé publique.
La configuration du HTTPS chez les banques est une catastrophe et ils sont tout sauf une référence en matière de sécurité (en tout cas quand ça implique les clients).
Si l’anglais n’est pas un problème et la théorie de la crypto t’intéresse tu peux regarder les vidéos des cours de Christopher Paar sur Youtube (par contre ça ne parle absolument d’implémentation ou de librairie à utiliser).

Bonjour,

Je réagis à une phrase:

… car je pense que le code secret à 4 chiffres est une clé privée qui est détenue seulement par le client et la clé public est le RIB par exemple qu’on peut donner a tout le monde pour recevoir de l’argent.

Si tu regardes un peut le net, wikipedia par exemple, tu verras qu’une carte à puce, c’est un cypto-processeur + Mémoire. Le code a 4 chiffres ne permet que de débloquer la carte (c’est pas de la crypto, c’est uniquement un code … soit il est bon et la carte répond, soit il est faut et elle ne répond pas). La seule chose que fait une carte à puce (carte bancaire, carte SIM, carte Vitale, …) c’est de garantir l’authentification. Sur chaque carte, il y a deux clefs:

  • La clef privée, dans une flash/EEPROM qui n’est pas lisible de l’extérieur, mais uniquement par le processeur de la carte
  • La clef publique, inclus dans un certificat, (voir ce qu’est un PKI), ce certificat contient les références bancaires, et il est signé (numériquement) par la banque. Ce certificat est accessible pour tout le monde.

Comment ça marche ?

1) J’introduis la carte bancaire dans le distributeur, il me demande mon code, je le rentre, le distributeur le donne à la carte. Si le code est bon la carte se débloque et continue.

2) Le distributeur lit le certificat et récupère la clef public. Le distributeur tire un nombre aléatoire, et le chiffre avec la clef public. La valeur chiffrée est fournit à la carte à puce.

3) La carte à puce déchiffre la valeur chiffrée avec sa clef privée, et fournie la réponse au distributeur.

4) Le distributeur vérifie que la valeur retournée est égale à la valeur aléatoire initiale: si les deux valeurs sont égales, la carte est authentifiée, c’est à dire que le certificat (et donc les références bancaires) sont valable.

Si je résume:

  • en 1, quand je rentre les 4 chiffres, je prouve que la carte bancaire est à moi
  • En 4, la carte donne de vrai références bancaires

donc je peux recevoir du liquide ! La banque sait sur quel compte il faut le retirer, de façon sûr!

Si tu cherches à en savoir plus sur ce type de mécanisme, tu peux aussi te renseigner sur les "chaînes de confiance" (les PKI: sur la signature numérique, les certificats, le certificat root ou CA, les CRL, …).

Pour la cryptomonnaies, ce doit être encore plus compliqué, mais j’y connaît rien.

Bonne recherche, Bienvenu dans le monde de la cyber.

PS: Je n’ai jamais travailler chez Gemplus, ce que j’ai écrit est sûrement encore trop simple, ce doit être bien plus compliqué, … Mais une chose est sûr, c’est que les 4 chiffres ce n’est pas la clef privée, et ton compte bancaire la clef publique.

Si l’anglais n’est pas un problème et la théorie de la crypto t’intéresse tu peux regarder les vidéos des cours de Christopher Paar sur Youtube (par contre ça ne parle absolument d’implémentation ou de librairie à utiliser).

je n’ai pas un bon niveau d’anglais mais sa va je comprend les sous-titres

Généralement c’est quand même de l’elleptic curves.

Comment peut-on coder un chiffrement basée sur les courbes elliptiques y’a t’il une fonction c++ ?

pouvez vous me conseillez un tuto d’openSSL si possible ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte