Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/05/2019, à 09:50

Nuliel

[Résolu] chiffrement RSA: transformer un message en nombre décimal

Bonjour,

Je suis actuellement en train d'essayer des trucs avec le chiffrement RSA, et je bute sur un problème tout bête mais sur lequel je bloque. J'ai le message chiffré et la clé publique (.pem). Quand on veut transmettre un message clair M, on le chiffre avant de l'envoyer, mais pour cela il faut transformer le message en un grand nombre, le chiffrer, puis on retransforme après chiffrement en texte si j'ai bien compris. Si j'ai bien compris, le texte clair est transformé lettre par lettre en valeur hexadécimale en utilisant la table ASCII (d'ailleurs que se passe t'il lorsque le message contient un accent?), le tout (un grand nombre hexa) est transformé en décimal, on chiffre, et on va dans l'autre sens (décimal -> hexa -> texte). Est ce bien cela? Y a t'il forcément du padding, et comment savoir ce qu'il faut enlever? Pourquoi les messages chiffrés finissent par ==? C'est pas un signe que c'est en base64? Y a t'il moyen d'utiliser la commande openssl pour récupérer le nombre en décimal? (j'ai du mal avec cette commande) J'imagine que oui mais je suis un peu perdu dans toutes les options d'openssl.
Pour l'instant, je sais que je peux transformer de l'hexa en décimal avec la commande bc, mais je suis pas plus avancé.
J'ai pas mal cherché sur internet, mais ça n'est toujours pas clair pour moi.

Merci d'avance,
Naziel

PS: je savais pas trop où mettre cette demande, je l'ai mis dans "Terminal, scripts et ligne de commande" vu que la solution va sûrement être à base d'openssl

Dernière modification par Nuliel (Le 08/06/2019, à 11:47)

Hors ligne

#2 Le 26/05/2019, à 19:04

kholo

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

salut Naziel,
je vois que tu passes par openssl pour chiffrer...
moi aussi j'ai voulu éviter de passer par le trousseau de clé mais je m'y suis un peu cassé les dents...
j'ai fini par accepter mon sort et passer par la procédure "normale" de gpg que j'ai adapté pour mon usage.

Voilà ma procédure :
à savoir : pour voir la liste des clés déjà créées :

gpg2 --list-keys

donc, pour créer une paire de clés :

gpg2 --full-gen-key

la première question qu'il va te poser :

Sélectionnez le type de clef désiré :
   (1) RSA et RSA (par défaut)
   (2) DSA et Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
Quel est votre choix ?

je prend 1 pour RSA
ensuite la taille de la clé :

Quelle taille de clef désirez-vous ? (2048)

tu peux choisir 2048, 3096, 4048 voire des valeurs intermédiaires (plus je sais pas trop... si c'est nécessaire)
ensuite l'expiration

Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
         0 = la clef n'expire pas
      <n>  = la clef expire dans n jours
      <n>w = la clef expire dans n semaines
      <n>m = la clef expire dans n mois
      <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 

par exemple je lui dit qu'elle n'expire pas 0 et il demande

La clef n'expire pas du tout
Est-ce correct ? (o/N)

je valide avec o
ensuite les questions sont :

Nom réel : 

mettre un nom même avec des espaces

Adresse électronique : 

bon bah là facile

Commentaire : 

et un commentaire
ensuite la dernière question :

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ?

je valide avec O
et c'est parti... il te demande de faire des trucs comme bouger la souris ouvrir des programmes, lancer des fichiers de façon à augmenter l'entropie...

De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.

ensuite tu as un topo sur le travail effectué...

voilà ça c'est fait...
ensuite il faut exporter la clé privée pour pouvoir la diffuser
un petit coup de

gpg2 --list-keys

pour faire le point...
puis

gpg2 --export 'le fameux nom avec des espaces' -o ~/le/chemin/vers/un/fichier.pem

voilà ensuite tu fais parvenir la clé à ton ou tes destinataires...

pour ajouter une clé d'un "ami"

gpg2 --import 'nom du fichier de la clé'

et pour décompresser des fichiers, j'utilise un plugin pour nautilus

sudo apt install seahorse-nautilus

voilà, j'ai pas encore regardé du côté de la signature des clés mais ça doit pas être plus compliqué...

Hors ligne

#3 Le 26/05/2019, à 19:22

Nuliel

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

Merci kholo pour ta réponse. En fait, je suis sur un challenge d'informatique (plus exactement l'envoi d'un même message chiffré avec RSA à trois destinataires différents avec 3 clés publiques différentes, faut pas faire ça parce qu'on peut retrouver le message clair). Je comprends et sais mettre en place toute la partie mathématique (théorème des restes chinois, ...) mais je bloque sur la transformation du texte chiffré en nombre (que je peux exploiter mathématiquement) représentant le texte chiffré.
Mais on peut chiffrer un fichier avec openssl, c'est faisable, mais pas aussi simple que gpg.
Je n'ai pas pensé à gpg pour faire cette transformation, je vais consulter la doc.
Merci

Hors ligne

#4 Le 26/05/2019, à 19:48

diesel

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

Bonsoir Maziel,

En fait, le chiffrement (qu'il soit symétrique ou à clé publique) se fout comme de l'an 40 de la signification du message à chiffrer. Lui, il chiffre une suite d'octets. Que ces octets représentent de l'ASCII, de l'unicode ou du raw, ce n'est pas son problème ; il chiffre.

Idem pour le déchiffrement.

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#5 Le 26/05/2019, à 20:25

Nuliel

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

Je sais bien que le chiffrement ne s'occupe pas de savoir si c'est en ASCII ou en UTF-8, mais je me demandais si le fait que ce soit encodé en ASCII ou en UTF-8 est marquée quelque part. Ça encore, c'est pas le plus gros problème.

Vu https://stackoverflow.com/questions/691 … at-the-end je pense que le texte chiffré est en base64. Et ça explique les deux = en fin de chaîne, et au passage j'ai l'explication sur le padding.

Je ferai des essais dans quelques jours.

Hors ligne

#6 Le 08/06/2019, à 11:46

Nuliel

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

Voilà, j'ai fait des essais, et j'ai réussi à transformer le message en base64 au départ en nombre décimal. Pour cela

cat leMessageChiffré | base64 -d | xxd -ps

qui donne de l'hexa, à retransformer en décimal avec https://www.rapidtables.com/convert/num … cimal.html par exemple.
Je passe en résolu, merci!

Hors ligne

#7 Le 08/06/2019, à 11:57

Nasman

Re : [Résolu] chiffrement RSA: transformer un message en nombre décimal

Le chiffrement se fiche que ce soit du texte codé en ASCII ou UTF8 - ni même que ce soit du texte ou autre chose, il chiffre une suite d'octets en une suite d'octets sans signification intrinsèque (à moins que l'on ait la clé). Par la suite le déchiffrement transforma la suite d'octets chiffrés en une autre suite d'octets qui retrouvera la structure du fichier d'origine (vidéo, ou texte).
La lecture du fichier dépendra du code MIME du début de fichier (et donc du choix du logiciel pour afficher le contenu) ou de l'extension (Windows)

Nota : le texte brut ne contiendra pas de code MIME - on peut le vérifier avec un éditeur hexa
Le algorithmes de chiffrement efficaces travaillent avec les octets codés au plus bas niveau (hexa ou binaire) et ne s'embarrassent pas de passer par un codage en système décimal.

Dernière modification par Nasman (Le 08/06/2019, à 11:59)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne