20Fermer22
squalylLe 27/05/2008 à 18:15
ben y'aurait pas besoin de faire grand chose, juste lancer un soft et attendre grin

par contre pour celui qui coderait y'aurait:

-développement d'un outil "local"
-mise en place d'une architecture réseau (éventuellement avec BOINC qui fait marcher Seti@home, mais on peut envisager un truc personnalisé)


Une clé RSA est basée sur le produit de deux nombres premiers énormes. Deux nombres de 256 bits pour le cas de la TI, soit deux fois la longueur d'un MD5 pour chaque nombre.

en gros: on se base sur 3 nombres: un impair E (en général, 0x10001, soit 65537) et deux grands nombres premiers P et Q.

On garde P et Q secrets.

on calcule N=PQ

En gros, dans la clé publique, on donne le produit des deux nombres N et l'exposant E.

L'idée c'est qu'il est super dur de retrouver P et Q à partir de N.

si N=15 alors P=3 et Q=5

mais si N est énorme, c'est super difficile (long en tout cas)
Le principe que j'imagine c'est de choisir des grands nombres premiers, et de tester si ils divisent N. Y'a deux soucis:

Choisir des diviseurs
il faut qu'ils soient premiers. Y'a des algos compliqués pour tester si un nombre est premier ou pas, qui sont plus efficaces que tester tous les diviseurs grin

Tester la divisibilité.
pas de secret, pour le moment je vois pas autrement que faire la division sorry

Le truc c'est qu'on peut partager ces calculs entre un grand nombre d'ordis, si chaque ordi s'occupe d'une partie des nombres...

une database contiendrait tous les nombres. Une "équipe de CPUs" s'occuperait de savoir s'ils sont premiers ou pas, et le serveur les virerait de la DB s'ils sont pas premiers.

Une autre "équipe de CPUs" s'occuperait de diviser la clé par les nombres premiers trouvés jusqu'à ce qu'on trouve une division qui tombe juste

vala, le principe est posé grin

annexe:

pour encoder il faut la clé publique (E,N)
on arrange le message en nombre M
on calcule C=M^E mod N
C est le message crypté

pour décoder il faut la clé privée (D,N) avec D qui doit être premier avec (P-1)(Q-1) (je crois)
on calcule M=C^D mod N
M est le message décrypté

pour signer un fichier il faut la clé privée
on prend M=SHA1(fichier)
on calcule S=M^D mod N
on envoie S à coté du fichier.

pour vérifier une signature:
on calcule M'=SHA1(fichier)
on calcule M=S^E mod N
on vérifie que M=M'

donc
-tout le monde peut vérifier et crypter (la clé publique est ... publique)
-seul celui qui a la clé privée peut signer et décrypter.

le seul moyen de retrouver la clé privée à partir de la clé publique est de retrouver P et Q à partir de N