Je m'intéresse aux algorithmes de PGP, et j'ai appris que la clé
publique d'encryptage RSA est composée de 2 nombres n et d (algoirthme
d'exponentiation RSA).
Hors cette clé est souvent exprimée sous la forme d'une suite de
caractères alpha numériques un peu strange, qui s'appelle armure.
Exemple : iD8DBQE9c4vy8dFENePrqZX4GQCfdn/FDy/JubV4WkV/bkNCx9PGVLM=3D
Savez vous comment les chiffres des nombres n et d sont concaténés et
tranformés pour donner cette représentation en armure ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Tux
x-kane wrote:
Bonjour
Je m'intéresse aux algorithmes de PGP, et j'ai appris que la clé publique d'encryptage RSA est composée de 2 nombres n et d (algoirthme d'exponentiation RSA). Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Exemple : iD8DBQE9c4vy8dFENePrqZX4GQCfdn/FDy/JubV4WkV/bkNCx9PGVLM=
Savez vous comment les chiffres des nombres n et d sont concaténés et tranformés pour donner cette représentation en armure ?
Merci
Bonjour,
Regarde la RFC 2240 (http://www.ietf.org/rfc/rfc2440.txt) qui décrit OpenPGP. Il doit y avoir le format de tous les structures de données utilisées par PGP.
Guillaume
x-kane wrote:
Bonjour
Je m'intéresse aux algorithmes de PGP, et j'ai appris que la clé
publique d'encryptage RSA est composée de 2 nombres n et d (algoirthme
d'exponentiation RSA).
Hors cette clé est souvent exprimée sous la forme d'une suite de
caractères alpha numériques un peu strange, qui s'appelle armure.
Exemple : iD8DBQE9c4vy8dFENePrqZX4GQCfdn/FDy/JubV4WkV/bkNCx9PGVLM=
Savez vous comment les chiffres des nombres n et d sont concaténés et
tranformés pour donner cette représentation en armure ?
Merci
Bonjour,
Regarde la RFC 2240 (http://www.ietf.org/rfc/rfc2440.txt) qui décrit
OpenPGP. Il doit y avoir le format de tous les structures de données
utilisées par PGP.
Je m'intéresse aux algorithmes de PGP, et j'ai appris que la clé publique d'encryptage RSA est composée de 2 nombres n et d (algoirthme d'exponentiation RSA). Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Exemple : iD8DBQE9c4vy8dFENePrqZX4GQCfdn/FDy/JubV4WkV/bkNCx9PGVLM=
Savez vous comment les chiffres des nombres n et d sont concaténés et tranformés pour donner cette représentation en armure ?
Merci
Bonjour,
Regarde la RFC 2240 (http://www.ietf.org/rfc/rfc2440.txt) qui décrit OpenPGP. Il doit y avoir le format de tous les structures de données utilisées par PGP.
Guillaume
pornin
According to x-kane :
Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés, clés publiques...) sont sous la forme de ce qu'on appelle des "messages PGP". Un message PGP est une suite d'octet ; il est la concaténation de plusieurs paquets, chaque paquet commençant par un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de "MPIs" (multi-precision integers) : deux octets qui donnent la longueur _en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi, le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A" donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en "big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des octets de valeurs telles que 0, qui ne sont pas des représentations de caractères imprimables. Du coup, on ne peut pas envoyer un message PGP tel quel dans certains canaux de transmissions, tels que le courrier électronique : le courrier électronique ne fonctionne qu'avec du texte. Les caractères non-imprimables pourraient avoir être modifiés au passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque : encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu s'en faut), et a donc défini son propre encodage, dit "ASCII Armor". C'est une sorte de MIME : c'est un format pour prendre des données binaires et les encoder en quelque chose de complètement imprimable. Le coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui prend les octets par groupes de 3 et les représente par _4_ caractères issus d'une liste de 64 caractères imprimables (lettres minuscules et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une suite d'octets quelconques. Cette suite d'octets peut être un message PGP, lequel peut contenir (avec quelques fioritures autour) les entiers constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 : http://www.faqs.org/rfcs/rfc2440.html
--Thomas Pornin
According to x-kane <x-kane@aol.com>:
Hors cette clé est souvent exprimée sous la forme d'une suite de
caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés,
clés publiques...) sont sous la forme de ce qu'on appelle des
"messages PGP". Un message PGP est une suite d'octet ; il est la
concaténation de plusieurs paquets, chaque paquet commençant par
un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de
"MPIs" (multi-precision integers) : deux octets qui donnent la longueur
_en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi,
le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A"
donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en
"big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en
hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des
octets de valeurs telles que 0, qui ne sont pas des représentations de
caractères imprimables. Du coup, on ne peut pas envoyer un message PGP
tel quel dans certains canaux de transmissions, tels que le courrier
électronique : le courrier électronique ne fonctionne qu'avec du texte.
Les caractères non-imprimables pourraient avoir être modifiés au
passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages
PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque :
encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu
s'en faut), et a donc défini son propre encodage, dit "ASCII Armor".
C'est une sorte de MIME : c'est un format pour prendre des données
binaires et les encoder en quelque chose de complètement imprimable. Le
coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui
prend les octets par groupes de 3 et les représente par _4_ caractères
issus d'une liste de 64 caractères imprimables (lettres minuscules
et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus
quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une
suite d'octets quelconques. Cette suite d'octets peut être un message
PGP, lequel peut contenir (avec quelques fioritures autour) les entiers
constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on
pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite
d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la
pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 :
http://www.faqs.org/rfcs/rfc2440.html
Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés, clés publiques...) sont sous la forme de ce qu'on appelle des "messages PGP". Un message PGP est une suite d'octet ; il est la concaténation de plusieurs paquets, chaque paquet commençant par un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de "MPIs" (multi-precision integers) : deux octets qui donnent la longueur _en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi, le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A" donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en "big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des octets de valeurs telles que 0, qui ne sont pas des représentations de caractères imprimables. Du coup, on ne peut pas envoyer un message PGP tel quel dans certains canaux de transmissions, tels que le courrier électronique : le courrier électronique ne fonctionne qu'avec du texte. Les caractères non-imprimables pourraient avoir être modifiés au passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque : encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu s'en faut), et a donc défini son propre encodage, dit "ASCII Armor". C'est une sorte de MIME : c'est un format pour prendre des données binaires et les encoder en quelque chose de complètement imprimable. Le coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui prend les octets par groupes de 3 et les représente par _4_ caractères issus d'une liste de 64 caractères imprimables (lettres minuscules et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une suite d'octets quelconques. Cette suite d'octets peut être un message PGP, lequel peut contenir (avec quelques fioritures autour) les entiers constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 : http://www.faqs.org/rfcs/rfc2440.html
--Thomas Pornin
x-kane
Merci pour ces réponses C'est énorme vous êtes trop forts Salut
------ Roland
Thomas Pornin a écrit:
According to x-kane :
Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés, clés publiques...) sont sous la forme de ce qu'on appelle des "messages PGP". Un message PGP est une suite d'octet ; il est la concaténation de plusieurs paquets, chaque paquet commençant par un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de "MPIs" (multi-precision integers) : deux octets qui donnent la longueur _en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi, le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A" donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en "big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des octets de valeurs telles que 0, qui ne sont pas des représentations de caractères imprimables. Du coup, on ne peut pas envoyer un message PGP tel quel dans certains canaux de transmissions, tels que le courrier électronique : le courrier électronique ne fonctionne qu'avec du texte. Les caractères non-imprimables pourraient avoir être modifiés au passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque : encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu s'en faut), et a donc défini son propre encodage, dit "ASCII Armor". C'est une sorte de MIME : c'est un format pour prendre des données binaires et les encoder en quelque chose de complètement imprimable. Le coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui prend les octets par groupes de 3 et les représente par _4_ caractères issus d'une liste de 64 caractères imprimables (lettres minuscules et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une suite d'octets quelconques. Cette suite d'octets peut être un message PGP, lequel peut contenir (avec quelques fioritures autour) les entiers constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 : http://www.faqs.org/rfcs/rfc2440.html
--Thomas Pornin
Merci pour ces réponses
C'est énorme vous êtes trop forts
Salut
------
Roland
Thomas Pornin a écrit:
According to x-kane <x-kane@aol.com>:
Hors cette clé est souvent exprimée sous la forme d'une suite de
caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés,
clés publiques...) sont sous la forme de ce qu'on appelle des
"messages PGP". Un message PGP est une suite d'octet ; il est la
concaténation de plusieurs paquets, chaque paquet commençant par
un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de
"MPIs" (multi-precision integers) : deux octets qui donnent la longueur
_en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi,
le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A"
donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en
"big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en
hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des
octets de valeurs telles que 0, qui ne sont pas des représentations de
caractères imprimables. Du coup, on ne peut pas envoyer un message PGP
tel quel dans certains canaux de transmissions, tels que le courrier
électronique : le courrier électronique ne fonctionne qu'avec du texte.
Les caractères non-imprimables pourraient avoir être modifiés au
passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages
PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque :
encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu
s'en faut), et a donc défini son propre encodage, dit "ASCII Armor".
C'est une sorte de MIME : c'est un format pour prendre des données
binaires et les encoder en quelque chose de complètement imprimable. Le
coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui
prend les octets par groupes de 3 et les représente par _4_ caractères
issus d'une liste de 64 caractères imprimables (lettres minuscules
et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus
quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une
suite d'octets quelconques. Cette suite d'octets peut être un message
PGP, lequel peut contenir (avec quelques fioritures autour) les entiers
constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on
pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite
d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la
pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 :
http://www.faqs.org/rfcs/rfc2440.html
Merci pour ces réponses C'est énorme vous êtes trop forts Salut
------ Roland
Thomas Pornin a écrit:
According to x-kane :
Hors cette clé est souvent exprimée sous la forme d'une suite de caractères alpha numériques un peu strange, qui s'appelle armure.
Les données échangées par PGP (fichiers chiffrées et/ou signés, clés publiques...) sont sous la forme de ce qu'on appelle des "messages PGP". Un message PGP est une suite d'octet ; il est la concaténation de plusieurs paquets, chaque paquet commençant par un entête qui donne sa longueur et son type.
Quand une clé RSA est représentée dans un paquet, c'est sous la forme de "MPIs" (multi-precision integers) : deux octets qui donnent la longueur _en bits_ du nombre, puis le nombre lui-même, en "big-endian". Ainsi, le nombre "796" est représenté par quatre octets : 00 0A 03 1C. "00 0A" donne le nombre de bits (ici 10 -- le compte est indiqué lui aussi en "big-endian") et "03 1C" est le nombre lui-même (796 donne bien 31C en hexadecimal).
Le format des messages PGP est purement binaire : il peut contenir des octets de valeurs telles que 0, qui ne sont pas des représentations de caractères imprimables. Du coup, on ne peut pas envoyer un message PGP tel quel dans certains canaux de transmissions, tels que le courrier électronique : le courrier électronique ne fonctionne qu'avec du texte. Les caractères non-imprimables pourraient avoir être modifiés au passage, ce qui démolirait le message PGP.
La solution de contournement "moderne" est d'utiliser pour les messages PGP les mêmes méthodes que pour envoyer des fichiers joints quelconque : encodage MIME.
Cependant, le vieux PGP date d'il y a très longtemps (avant MIME ou peu s'en faut), et a donc défini son propre encodage, dit "ASCII Armor". C'est une sorte de MIME : c'est un format pour prendre des données binaires et les encoder en quelque chose de complètement imprimable. Le coeur de l'ASCII Armor est le même que MIME : l'encodage Base64, qui prend les octets par groupes de 3 et les représente par _4_ caractères issus d'une liste de 64 caractères imprimables (lettres minuscules et majuscules, chiffres, '/' et '+'). En ASCII Armor, il y a en plus quelques lignes d'entête et une somme de contrôle.
En bref, l'ASCII Armor est un encodage sous forme de caractères d'une suite d'octets quelconques. Cette suite d'octets peut être un message PGP, lequel peut contenir (avec quelques fioritures autour) les entiers constitutifs d'une clé RSA, sous la forme de MPIs. Stricto sensu, on pourrait appliquer l'encodage ASCII Armor sur n'importe quelle suite d'octets, mais le monde a préféré s'accorder sur MIME, et, dans la pratique, ASCII Armor n'est utilisé que pour PGP.
Tout cela est décrit dans la RFC 2440 : http://www.faqs.org/rfcs/rfc2440.html