Posted on 17 avril 2020.
Posted in Boulot, CryptoCommentaires fermés sur Protégé : RSA public key : Behind the scene
Posted on 15 avril 2020.
A ceux qui auraient tendance à voir une référence à autre choses (20 % d’armée + 80 % d’air, par exemple) : Passez votre chemin !
En mathématiques, l’indicatrice d’Euler est une fonction de la théorie des nombres.
Elle intervient en mathématiques pures, à la fois en théorie des groupes, en théorie algébrique des nombres et en théorie analytique des nombres.
En mathématiques appliquées, à travers l’arithmétique modulaire, elle joue un rôle important en théorie de l’information et plus particulièrement en cryptologie.
La fonction indicatrice est aussi appelée fonction phi d’Euler ou simplement la fonction phi, car la lettre φ est communément utilisée pour la désigner.
Elle est nommée en l’honneur du mathématicien suisse Leonhard Euler (1707 – 1783) qui fut le premier à l’étudier.
Sommaire |
Plus formellement :
Par exemple :
Dans ce paragraphe, n désigne un entier strictement positif.
Cette propriété est démontrée dans le paragraphe Structure additive de l’article Anneau Z/nZ.
Cette propriété est démontrée dans le paragraphe Groupe des unités de l’article Anneau Z/nZ.
Une telle fonction est dite multiplicative. On peut démontrer cette propriété à partir du théorème des restes chinois pour les groupes, selon lequel le groupe cyclique (Z/(uv)Z,+) est isomorphe au produit (Z/uZ)×(Z/vZ). Un couple (x,y) de ce groupe produit est générateur si et seulement si x est générateur de Z/uZ et y est générateur de Z/vZ. Le nombre d’éléments générateurs du groupe produit est donc égal à φ(u).φ(v). L’isomorphisme montre que cette valeur est égale au nombre d’éléments générateurs du groupe Z/(uv)Z, ce qui démontre la formule recherchée.
La valeur de l’indicatrice d’Euler s’obtient par l’expression de n donnée par le théorème fondamental de l’arithmétique :
En effet, le caractère multiplicatif de l’indicatrice d’Euler et une récurrence montrent que :
L’indicatrice d’Euler est une fonction essentielle de l’arithmétique modulaire, elle est à la base de résultats fondamentaux, à la fois en mathématiques pures et appliquées.
Cette propriété est une conséquence directe du calcul explicite de l’indicatrice.
La cryptologie utilise largement cette fonction. Le code RSA se fonde sur le théorème d’Euler, indiquant que si n est un entier strictement positif et a un entier premier avec n, alors aφ(n) ≡ 1 (mod n).
Une autre branche de la théorie de l’information utilise l’indicatrice : la théorie des codes. C’est les cas des codes correcteurs, et particulièrement des codes cycliques. Ce type de code se construit à l’aide de polynôme cyclotomique et le degré du polynôme cyclotomique Φn d’indice n à coefficients dans les entiers est égal à φ(n). Plus précisément, on dispose des égalités suivantes :
La formule d’inversion de Möbius permet d’inverser cette somme :
Les deux fonctions génératices présentées ici sont des conséquences directes du fait que :
Une série de Dirichlet utilisant est
qui est dérivé depuis :
ou est la fonction zêta de Riemann.
Une série de Lambert utilisant est
qui converge pour |q|<1.
dérivé de :
avec
La croissance de comme une fonction de n est une question intéressante. La première impression que l’on a pour les petits n est que
doit être notablement plus petit que n, ce qui est quelque peu erroné. Asymptotiquement, nous avons
pour n’importe quel et
. En fait, si nous considérons
nous pouvons écrire, à partir de la formule précédente, sous forme de produit de facteurs
où les p sont des nombres premiers divisant n. Par conséquent les valeurs de n correspondantes aux valeurs particulièrement petites du rapport sont les n qui sont le produit d’un segment initial de la suite de tous les nombres premiers. À partir du théorème des nombres premiers il peut être montré qu’une constante ε dans la formule précédente peut par conséquent être remplacée par
![]() |
+0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 |
---|---|---|---|---|---|---|---|---|---|---|
0+ | 1 | 1 | 2 | 2 | 4 | 2 | 6 | 4 | 6 | |
10+ | 4 | 10 | 4 | 12 | 6 | 8 | 8 | 16 | 6 | 18 |
20+ | 8 | 12 | 10 | 22 | 8 | 20 | 12 | 18 | 12 | 28 |
30+ | 8 | 30 | 16 | 20 | 16 | 24 | 12 | 36 | 18 | 24 |
40+ | 16 | 40 | 12 | 42 | 20 | 24 | 22 | 46 | 16 | 42 |
50+ | 20 | 32 | 24 | 52 | 18 | 40 | 24 | 36 | 28 | 58 |
60+ | 16 | 60 | 30 | 36 | 32 | 48 | 20 | 66 | 32 | 44 |
70+ | 24 | 70 | 24 | 72 | 36 | 40 | 36 | 60 | 24 | 78 |
80+ | 32 | 54 | 40 | 82 | 24 | 64 | 42 | 56 | 40 | 88 |
90+ | 24 | 72 | 44 | 60 | 46 | 72 | 32 | 96 | 42 | 60 |
On observe que, excepté pour n = 1 ou 2, est pair, propriété qui est générale. En effet, en notant
avec les
impairs et q éventuellement nul (produit vide), on a :
Certaines inégalités impliquant la fonction sont :
et
Pour un nombre premier n, clairement . Pour un nombre composé n, nous avons
Pour tous les :
Pour un grand n aléatoire, ces bornes ne peuvent pas être encore améliorées, en effet :
Une paire d’inégalités combinant la fonction et la fonction diviseur
sont :
Posted in CryptoCommentaires fermés sur L’arme est d’Euler
Posted on 06 avril 2020.
Read that f… RFC 1421 : Privacy Enhancement for Internet Electronic Mail
https://lapo.it/asn1js
https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-encoded-length-and-value-bytes
http://javadoc.iaik.tugraz.at/iaik_jce/current/iaik/x509/PublicKeyInfo.html
https://medium.com/@bn121rajesh/understanding-rsa-public-key-70d900b1033c
# Generate 1024 bit Private key
$ openssl genrsa -out myprivate.pem 1024# Separate the public part from the Private key file.
$ openssl rsa -in myprivate.pem -pubout > mypublic.pem# Display the contents of private key
$ cat myprivate.pem
—–BEGIN RSA PRIVATE KEY—–
MIICXQIBAAKBgQDRFNU++93aEvz3cV8LSUP9ib3iUxT7SufdVXcgVFK9M3BYzvro
A1uO/parFOJABTkNhTPPP/6mjrU2CPEZJ1zIkpaSNJrrhpp/rNMO9nyLYPGs9Mfd
BiWUPmHW5mY1oD0ye4my0tEsHOlgHC8AhA8OtiHr6IY0agXmH/y5YmSWbwIDAQAB
AoGAAj/IH3pUI6FqqTrF+/gYzCRsL4AXTLC8l8vwkR93GGPyRHJNjqtik8I3WrXJ
zUiBGZ0iNouIsL/+QQuNlGiw/c5i2X3nTntREDS9xs2M0x+MWD/5qI1sn0Qk0HNP
BbDczlvO8wXNFGIHiTiPVEawoeNwhMqJDyGcbsEOZp2pLokCQQDvlMBU6dOeOP9a
jnENFSlrvzNR0nugFeoGmfq6s4Czz2QtUd9baKqBfEBSdJskwFVHgxbFA1Dc7iFu
rJkoQEeFAkEA32j9ibSVryxLvWUZngKNwo2xE+wcYDAYVBMsYC3OBU3FXhVkFD06
ZVnJsY/4bd2VdQI+bI2KV99aHutMJG2WYwJABMn2ZjweTMVa5VZ/kAFiSJMT1Yjd
i7+kY+lkB6Na6T02BWnjixI2hkwThRJrn3pwufM2201Lqn7gEDRHA3T1eQJBAKZG
1RUNo6558HEo8vUIf4vCu33RaJkqkqDYmFmJHeISrQfGMfNiUrkmJ5iRR9w1ZExu
/Bj9C281XDTQ+Z3PNnMCQQCan+pvj0OZH6o0PAMJGBBwRECPpfZ6mUjwA2YD3g61
MHjtIYmKKGmn64Qs8zQ4mNEDboQqyaov3Ij/I6c0ZQlc
—–END RSA PRIVATE KEY—–
Privacy Enhanced Mail (PEM)
Privacy Enhanced Mail (PEM) is a Base64 encoded Distinguished Encoding Rules(DER)
PEM file is human readable as it uses 64 printable characters for encoding.
It is easy to share PEM file.
Display the contents of public key PEM file
# Display the contents of public key PEM file
$ cat mypublic.pem
—–BEGIN PUBLIC KEY—–
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRFNU++93aEvz3cV8LSUP9ib3i
UxT7SufdVXcgVFK9M3BYzvroA1uO/parFOJABTkNhTPPP/6mjrU2CPEZJ1zIkpaS
NJrrhpp/rNMO9nyLYPGs9MfdBiWUPmHW5mY1oD0ye4my0tEsHOlgHC8AhA8OtiHr
6IY0agXmH/y5YmSWbwIDAQAB
—–END PUBLIC KEY—–
Distinguished Encoding Rules (DER) format of public key
DER is encoded in Type-Length-Value (TLV) format.
DER is in binary format for PEM file and follows certain structure for public key.
# Convert PEM file to DER format using openssl rsa
$ openssl rsa -pubin -inform PEM -in mypublic.pem -outform DER -out mypublic.der
# Dump the DER file in hex format.
$ xxd -g 1 -u mypublic.der | cut -c -57
00000000: 30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01
00000010: 05 00 03 81 8D 00 30 81 89 02 81 81 00 D1 14 D5
00000020: 3E FB DD DA 12 FC F7 71 5F 0B 49 43 FD 89 BD E2
00000030: 53 14 FB 4A E7 DD 55 77 20 54 52 BD 33 70 58 CE
00000040: FA E8 03 5B 8E FE 96 AB 14 E2 40 05 39 0D 85 33
00000050: CF 3F FE A6 8E B5 36 08 F1 19 27 5C C8 92 96 92
00000060: 34 9A EB 86 9A 7F AC D3 0E F6 7C 8B 60 F1 AC F4
00000070: C7 DD 06 25 94 3E 61 D6 E6 66 35 A0 3D 32 7B 89
00000080: B2 D2 D1 2C 1C E9 60 1C 2F 00 84 0F 0E B6 21 EB
00000090: E8 86 34 6A 05 E6 1F FC B9 62 64 96 6F 02 03 01
000000a0: 00 01
Structured DER file content
1:30 81 9F // Type: 30 (SEQUENCE) Length: 0x9F
2:| 30 0D // Type: 30 (SEQUENCE) Length: 0x0D
3:| | 06 09 // Type: 06 (OBJECT_IDENTIFIER) Length: 0x09
4:| | – 2A 86 48 // 9 bytes OID value. HEX encoding of
5:| | – 86 F7 0D // 1.2.840.113549.1.1.1
6:| | – 01 01 01
7:| | 05 00 // Type: 05 (NULL) Length: 0x00
8:| 03 81 8D // Type: 03 (BIT STRING) Length: 0x8D
9:| | – 00 // Number of unused bits in last content byte
10:| | 30 81 89 // Type: 30 (SEQUENCE) Length: 0x89
11:| | | 02 81 81 // Type: 02 (INTEGER) Length: 0x81
12:| | | – 00 // Leading ZERO of integer
13:| | | – D1 14 D5 3E FB DD DA 12 FC F7 71 5F 0B 49 43 FD
14:| | | – 89 BD E2 53 14 FB 4A E7 DD 55 77 20 54 52 BD 33
15:| | | – 70 58 CE FA E8 03 5B 8E FE 96 AB 14 E2 40 05 39
16:| | | – 0D 85 33 CF 3F FE A6 8E B5 36 08 F1 19 27 5C C8
17:| | | – 92 96 92 34 9A EB 86 9A 7F AC D3 0E F6 7C 8B 60
18:| | | – F1 AC F4 C7 DD 06 25 94 3E 61 D6 E6 66 35 A0 3D
19:| | | – 32 7B 89 B2 D2 D1 2C 1C E9 60 1C 2F 00 84 0F 0E
20:| | | – B6 21 EB E8 86 34 6A 05 E6 1F FC B9 62 64 96 6F
21:| | | 02 03 // Type: 02 (INTEGER) Length: 0x3
22:| | | – 01 00 01 // Public Exponent. Hex for 65537
DER file contains Object Identifier, Modulus and Public exponent in HEX format.
Lines 4, 5, 6 is the HEX encoding of OID.
Lines 13 to 20 is the modulus (n).
Line 22 is the public exponent.
Modulus and Public exponent from public key using openssl
# Get Modulus and Public exponent from public PEM file
$ openssl rsa -pubin -inform PEM -text -noout < mypublic.pemPublic-Key: (1024 bit)
Modulus:
00:d1:14:d5:3e:fb:dd:da:12:fc:f7:71:5f:0b:49:
43:fd:89:bd:e2:53:14:fb:4a:e7:dd:55:77:20:54:
52:bd:33:70:58:ce:fa:e8:03:5b:8e:fe:96:ab:14:
e2:40:05:39:0d:85:33:cf:3f:fe:a6:8e:b5:36:08:
f1:19:27:5c:c8:92:96:92:34:9a:eb:86:9a:7f:ac:
d3:0e:f6:7c:8b:60:f1:ac:f4:c7:dd:06:25:94:3e:
61:d6:e6:66:35:a0:3d:32:7b:89:b2:d2:d1:2c:1c:
e9:60:1c:2f:00:84:0f:0e:b6:21:eb:e8:86:34:6a:
05:e6:1f:fc:b9:62:64:96:6f
Exponent: 65537 (0x10001)
Exponent and modulus printed by openssl rsa matches with the Public exponent and modulus from DER file content.
OBJECT IDENTIFIER
OID describes the object. It is a series of nodes separated by period.
OID Value: 1.2.840.113549.1.1.1
OID description: Identifier for RSA encryption for use with Public Key Cryptosystem One defined by RSA Inc.
OID Encoding:
The first two nodes of the OID are encoded onto a single byte. The first node is multiplied by the decimal 40 and the result is added to the value of the second node.
Node values less than or equal to 127 are encoded on one byte.
Node values greater than or equal to 128 are encoded on multiple bytes. Bit 7 of all bytes except the rightmost byte is set to one. Bits 0 through 6 of each byte contains the encoded value.
OID Encoding Example:
Representing length in ASN.1 encoding
If number of value bytes is < 128 then length is represented in 1 byte. In this case most significant bit is 0. (Ex:- Line 2, Line 3 in structured DER content above)
If number of value bytes is >= 128 then length is represented in multiple bytes. Most significant bit (bit 7) of first byte is 1 indicating multiple byte length. Bits 0–6 represent number of subsequent bytes for length. (Ex:- Line 1, Line 4 in structured DER content above)
References
DER encoding of ASN.1 types (MSDN)
Public Key Info structure (Java doc)
Posted in Crypto, PKI, ICP, IGC1 Commentaire
Posted on 02 février 2016.
Vous aussi vous avez eu besoin d’aller déchiffrer un flux HTTPs pour un coup de débug ?
Ca n’a jamais été aussi facile.
Même plus besoin d’aller « emprunter » une clef privée sur un serveur ou de se mettre dans la peau de « l’homme du milieu » (souvenirs de galères avec sslstrip or mitmproxy).
1 – Tu définis ta variable d’environnement SSLKEYLOGFILE pointant sur un fichier local que Firefox/Chrome détectera au redémarrage et qui va servir à stocker les pre-master keys
2 – Tu renseignes le chemin vers ce fichier de stockage des pre-master keys dans les préférences SSL de Wireshark
3 – Tu ajoutes ton filtre Wireshark de capture entre ton poste et le serveur cible
ip host 87.98.170.232 and ip host 192.168.1.102
4 – Feu patate !
Ah oui, il faudra quand même que je regarde les cas où cela ne fonctionne pas … et que je détaille dans ce cas les vieilles alternatives.
Posted in Boulot, Clic, Crypto, HackCommentaires fermés sur Débug ton HTTPS avec Wireshark
Posted on 20 juin 2015.
Fin de semaine et WE très chargés entre Hack In Paris, Pas Sage En Seine et Nuit du Hack …
De bien belles rencontres et quelques moment de répit à Numa.
Je vous raconte sous peu !
Posted in Crypto, CyberDefense, FêteCommentaires fermés sur En mode hacker…
Posted on 23 avril 2014.
Ce billet m’est largement inspiré par l’article Wikipedia version anglaise ainsi que par ma traversée attentive de l’évènement qui m’aura permis de revisiter TLS, les sockets Python et TCPDump.
Je sais, comme dirait ma mère à @turblog : « pffff, c’est compliqué !« . Mais, je peux vous éclairer.
J’avais par ailleurs publié dès le 11 avril sur le site d’Alliacom mon analyse à chaud de la situation.
Ce post servira de trame à notre Afterwork Alliacom du jeudi 24 avril 2014 à 18h00.
En l’écrivant, je me remémore curieusement / furieusement une vidéo de Julien Codorniou à CONF@42 – Facebook – Why hackers will rule the world et la nécessité d’être un peu DEV pour comprendre le monde d’aujourd’hui. Nécessité de l’être même davantage si on ne veut pas que le gimmick se transforme en Why hackers will ruin the world !
Chronologie :
« Heartbeat fournit un moyen de tester et de maintenir vivante un lien de connexion sécurisé sans être obligé de renégocier une connexion« .
Le bug :
Les risques :
Démonstration :
Conséquences :
Questions en suspens :
Posted in Boulot, CryptoCommentaires fermés sur Ton coeur saigne en 2014 !
Posted on 30 janvier 2014.
empreinte : B9F96D84B8B5F579113FA2A553F29E
keyID : 3398629C
clé publique :
—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v2.0.21 (MingW32)
mQINBFLqeuoBEADBlkR2zhicXPh/UvL7mmwJFh1RBtKorLi4ZucldDjsCfaqo39b
M4Slj3vQq4/dQpyQCoz/LtUh3L3PI6HoTpYcdAqY+hyO+8Mb/BCGrKdMA8GnVMNu
l6bDdc45UyCFdWPht95grNet5MHn6e8xRBuaLhNi65rw3dsYfa3qu8c/bc3PxlhK
1n5133eKM11+nOTkvkEzrCr+8ne6o4vobcVKLXV/HNzq1pAC/8guuxePe8HaxRAi
vvewTH2cwUh/HfGOaUv+xIuLg2i7l+3h/l6YJye+RgFOlqM5ZpTpSm6+xrUMrj7V
mhCwWuS7AUvFzmqw6g0eXPieDPEcncKrs5eyJxaLWpC5ljlwECkqVw4t1y8Y8wT2
8sZWRSJocQJTgynC9BRwOA0/gvAqgUu4i6rXG6NXznKsLtQP0C3tqwOB5rjHP+52
u+UjKy2pfXK5OV7hNfg11ytTnop6/321tx3AMV3VBGi/RpGzVDnjvVkaMiB6P/Zx
6xRji6e6m+THaW8aYctpAUjjCOW6W3Qp+x50k3DQxZQcj5TJbLa/8ffgd9s+6TkQ
cACtlsUP+QfiQi0oepDZ2n4Ew1+dqHOTD2+ZIH2+7QF428BmTGBYuEhYP8ztNSpr
D3GEtq1tarIFugmYIb7wzkSqMjldWEUTN9k0BjM0xjyvbqeWyH/2lIMUaQARAQAB
tDRMYXVyZW50IE1hcm90IChQR1AgZm9yIExNKSA8bGF1cmVudEBsYXVyZW50bWFy
b3QuZnI+iQI5BBMBAgAjBQJS6nrqAhsvBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
F4AACgkQU/KeUjOYYpy4qQ/+OH5eQHTg1JapxuAxMXWiZZT1czztIYRpnbGpcvV2
GOMnV0dnupa1GkvVXCfr7zUpX0Gvv816PHplxo5C6k5PQH8Bb+c/rRGd6r7LkKWJ
FNYWPwl8a5vO7OUf3K77rnz7VnDVFG+Zt/GSB4UatvtPQ06/XmEFH28eSi7h8dWP
Ib3m35QqtbsCigOLd+1XVZIInrGOidBZj4VQlE20a8wi3Yeoxmtl9kdss02zS+1k
F0e1g0IaVNpqy3XemH8EXXYK2UaD0iEsxkVcRhDzjpDvH71jCDPbWgZM45y2zUCg
m62yjoAWK73iiaiWANWpoSbgJgm3GSVX1Bvb5MQYoQL5lAusf40G2vz7kn7NQJif
yoItYsiYeq7Nb2DSkhEQyrU/uG56XXoxufm/U1jbeJCoH5qQEfC2HPrsdsDdUMKI
lK4TWRXFJPpYNqsoRcDGAIi7qGvhqeJYiofQWAF6tNtJVd+Kg1EEWPvhkrcBXE4i
4ckUdOUE2kYXMHQ90bO6sBl8l0bOCIxtztg+ieYEI2hOM97pWlLipi7rjaVXA26n
6jt45v14By+N2hlnKvtGVNJrKGcIlaKteAJa8f8CVgoFBgZdy8gd85ba5xeogEJ2
JTjXAr+lChM4l6SXUakFZcZ/TZoPbqwdgHYVR7rVrK5r4+UybfqAI6S0f9Qo/Zq3
p9c=
=iVje
—–END PGP PUBLIC KEY BLOCK—–
Télécharger B9F96D84B8B5F579113FA2A553F29E523398629C
Posted in CryptoCommentaires fermés sur PGP et moi (au cas où …)
Posted on 16 décembre 2013.
Le visionnage de la vidéo suivante m’a fait hérisser le poil. Outre le titre pompeux, on y retrouve un joli florilège d’assertions incorrectes.
Heureusement, les détails donnés sur les possibilités de sauvegarder de manière sécurisée une clef privée sous Android sont très pertinents.
http://www.infoq.com/fr/presentations/pki-android#
Décryptage (si je peux dire) à venir …
1 – NON, un certificat ne contient pas deux parties et surtout pas de clef privée : un certificat numérique (que l’on devrait plutôt appeler certificat de clef publique ou certificat X509) est PUBLIC et ne contient que la partie publique du bi-clef plus les informations relatives à l’entité qu’il représente [3’02]
2 – NON, il n’y a pas que RSA pour la crypto à clefs publiques (ECC, vous connaissez ?) [2’50]
3 – NON, une PKI ce n’est pas juste une histoire de clefs et de certificats [2’32]
Avec autant de raccourcis et d’approximations on maintient le non-technicien dans un état d’incompréhensions parfois bien utile …
Posted in CryptoCommentaires fermés sur Comment peut-on débiter autant d’approximations sur certificats et PKI ?
Posted on 12 décembre 2013.
merci à Louloute, au Chevalier Paul et à Alliacom de m’offrir cette opportunité 🙂
Flyer réalisé à l’occasion de ma présentation sur les certificats numériques le 12 décembre 2013 chez Alliacom.
Assez drôle, la perception de cette image par mon entourage personnel (cobayes) et professionnel.
LOLCAT n’évoque absolument rien pour personne… je ne vais pas fanfaronner car Wikipedia me sauva quelque mois plus tôt de pareille ignorance. Et l’on mesure alors l’espace sidéral (sidérant ?) séparant le commun des mortels (y compris génération Y ou autres pseudo digital natives) des purs et durs de l’Internet.
Posted in Crypto, Trop sérieuxCommentaires fermés sur My very first LOLCAT
Posted on 26 novembre 2013.
La crypto est partout… Je ne vais pas vour parler de Pergame ou de l’influence de la LPM sur la vie privée mais j’ai adoré ces deux articles sur le procès Newegg vs TQP auquel témoignait Whit Diffie (le D de ECDHE cher à Twitter et sa formward secrecy de ces derniers jours)
Malgré le concours de Diffie, Newegg rique fort de passer à la caisse …
La perle du procés : la déposition de Diffie :
« We’ve heard a good bit in this courtroom about public key encryption, » said Albright. « Are you familiar with that? »
« Yes, I am, » said Diffie, in what surely qualified as the biggest understatement of the trial.
« And how is it that you’re familiar with public key encryption? »
« I invented it. »
Posted in CryptoCommentaires fermés sur Lectures du jour : Diffie devant la Cour et Cicada 3301