[Bases de la cryptographie] Algorithme de chiffrement RSA

1 Présentation de RSA

  • RSA est un algorithme de chiffrement asymétrique, c'est-à-dire que différentes clés sont utilisées pour le chiffrement et le déchiffrement.
  • La clé de chiffrement est une clé publique et peut être rendue publique ; la clé de déchiffrement est une clé privée et doit rester confidentielle.
  • Basé sur un simple fait de la théorie des nombres : il est facile de multiplier deux grands nombres premiers, mais il est extrêmement difficile de factoriser leur produit, de sorte que le produit peut être divulgué comme une clé de chiffrement, c'est-à-dire une clé publique ; et deux grands nombres premiers numéros Synthétiser la clé privée.

2 Génération de paire de clés

Étape 1 Générer N (partie de la clé publique et de la clé privée)

Choisissez d'abord deux nombres pp premiers entre euxp etqqqp ≠ q , pgcd ( p , q ) = 1 p\neq q, pgcd(p, q)=1p=q ,g c d ( p ,q )=1 ), alors :
N = p ∗ q N = p * qN=pq

étape 2 générer L

Selon la fonction d'Euler, pas supérieur à NNN et avecNNLe nombre relativement premier à N est p − 1 p-1p1 etq − 1 q-1q1 Le plus petit commun multiple de deux nombres :

L = [ p - 1 , q - 1 ] = ( p - 1 ) ( q - 1 ) L = [p-1, q-1] = (p-1)(q-1)L=[ p1 ,q1 ]=( p1 ) ( q1 )

Nombre copremier ppp etqqq ne peuvent pas être trop petits, s'ils sont assez grands, selon la technologie informatique actuelle et d'autres outils, il n'a pas été possible d'obtenirN se décompose enppp etqqQ. _ Autrement dit, tant que la longueur de cléNNN est suffisamment grand (1024 est suffisant), il est fondamentalement impossible de déduire les informations de clé privée des informations de clé publique.

étape 3 générer E (clé de chiffrement)

Les deux conditions suivantes sont remplies :

1 < E < L 1 < E < L1<E<L

pgcd ( E , L ) = 1 pgcd(E, L) = 1g c d ( E ,L )=1

pgcd ( E , L ) = 1 pgcd(E, L) = 1g c d ( E ,L )=1 EEgarantieE etLLLe plus grand facteur commun de L est 1 (prime mutuelle), donc l'étape 4 est garantie pour générer la clé de déchiffrementDDQuand D , il doit y avoirDDD satisfait la condition.

étape 4 générer D (clé de déchiffrement)

Les deux conditions suivantes sont remplies :

1 < D < L 1 < D < L1<D<L

( E ∗ D ) mod L = 1 (E * D) mod L = 1( ED)modL1

3 Processus de chiffrement et de déchiffrement

insérez la description de l'image ici

De plus, la paire de clés est : ( E , D , N ) (E, D, N)( E ,D ,N )

4 Exemple de calcul

Les informations en clair sont en clair = 85, E = 7, p = 11, q = 13. plaintext=85, E=7, p=11, q=13.p l a i n t e x t=8 5 E=7 , p=1 1 q=1 3. Générer
la paire de clés
étape 1 : N = p ∗ q = 11 ∗ 13 = 143 N=p*q=11*13=143N=pq=1 11 3=1 4 3
étape 2 :L = ( p − 1 ) ( q − 1 ) = 10 ∗ 12 = 120 L=(p-1)(q-1)=10*12=120L=( p1 ) ( q1 )=1 01 2=1 2 0
étape 3 :( E ∗ D ) mod L = 1 ⇒ ( 7 ∗ D ) mod 120 = 1 ⇒ D = 103 (E*D)modL=1 \Rightarrow (7*D)mod120=1 \Rightarrow D =103( ED)modL=1( 7D ) mod 1 2 0 _ _=1D=1 0 3

加密
cyphertext = plaintext E mod N = 8 5 7 mod 143 = 123 cyphertext = plaintext^E mod N=85^7mod143=123c y p h e r t e x t=p l a i n t e x tE modN__=8 57 mois143__=1 2 3

解密
plaintext = cyphertext D mod 143 = 12 3 103 mod 143 = 85 plaintext = cyphertext^D mod 143=123^{103}mod143=85p l a i n t e x t=c y p h e r t e x tD mod143__=1 2 31 0 3 mois143__=8 5

おすすめ

転載: blog.csdn.net/qq_16763983/article/details/128101681