SM4

SM4 (SMS4)
offentliggjort 2006 (afklassificeret)
Nøglestørrelse 128 bit
Blokstørrelse 128 bit
Antal runder 32
Type Feistel netværk

SM4  er en blokchifferalgoritme, der bruges i Kina som en national standard for trådløse lokalnetværk (WLAN Authentication and Privacy Infrastructure (WAPI)).

Oprindeligt blev algoritmen kaldt SMS4 , men i teksten til GM / T 0002-2012 standard SM4 Block Cipher Algorithm dateret 21. marts 2012 blev den officielt omdøbt til SM4 . [en]

SM4 blev foreslået som den chiffer, der blev brugt i IEEE 802.11i -standarden , men blev hurtigt afløst af ISO . En af grundene til dette var modstanden mod WAPI fast-track fremmet af IEEE .

SM4-algoritmen blev udviklet af professor Lu Shu-wang (LU Shu-wang(???)). Algoritmen blev afklassificeret i januar 2006. Flere karakteristika ved SM4:

Begreber og definitioner

Ord og byte

Sættet er defineret som en vektor af e bits.

dette ord .

dette er en byte .

Definitioner
Rund nøgle Runde nøgler fås fra Cipher Key ved hjælp af Key Expansion-proceduren. De anvendes til staten ved kryptering og dekryptering
Chiffernøgle en hemmelig, kryptografisk nøgle, der bruges af nøgleudvidelsesproceduren til at producere et sæt runde nøgler; kan repræsenteres som et rektangulært byte-array med fire rækker og Nk - kolonner.
nøgleudvidelse procedure, der bruges til at generere runde nøgler fra Cipher Key
S kasse ikke-lineær substitutionstabel, der bruges i flere byte-substitutionstransformationer og i Key Expansion-proceduren for en-til-en substitution af en byteværdi. Den forudberegnede S-boks kan ses nedenfor.

S box

S-boksen er fast med 8 input bits og 8 output bits, skrevet som Sbox().

Taster og nøgleparametre

Længden af ​​den krypterede nøgle er 128-bit og er repræsenteret som , der hver indeholder et ord.

Den runde nøgle er repræsenteret som . Den er oprettet af krypteringsnøglen.

det er et parametersystem.

fast parameter.

og det er de ord, der bruges til at udvide algoritmen.

Rund funktion F

SM4 bruger en ikke-lineær substitutionsstruktur, 32 bit krypteres ad gangen. Dette er den såkaldte en- runde udskiftning . For et illustrativt eksempel, overvej en en-runde substitution: Forestil dig en 128-bit inputblok som fire 32-bit elementer , med , så har formen:

Blandet udskiftning T

dette er en substitution, der producerer 32 bit ud af 32 bit. Denne substitution er reversibel, og indeholder en ikke-lineær substitution, τ, og en lineær substitution, L, dvs.

Ikke-lineær substitution τ behandler fire S-bokse parallelt.

Lad 32-bit inputordet være , hvor hvert er et 8-bit tegn. Lad 32-bit outputordet være ), har formen = (Sbox( ), Sbox( ), Sbox( ), Sbox( ))

Lineær substitution L

, vil det 32-bit ikke-lineære substitutionsord udsende det lineære substitutionsord L. Lad være det 32-bit outputord skabt af L. Så

S box

Alle Sbox-numre er i hexadecimal notation.

_ 0 en 2 3 fire 5 6 7 otte 9 -en b c d e f
0 d6 90 e9 fe cc e1 3d b7 16 b6 fjorten c2 28 fb 2c 05
en 2b 67 9a 76 2a være 04 c3 aa 44 13 26 49 86 06 99
2 9c 42 halvtreds f4 91 ef 98 7a 33 54 0b 43 udg jfr ac 62
3 e4 b3 1c a9 c9 08 e8 95 80 df 94 fa 75 8f 3f a6
fire 47 07 a7 fc f3 73 17 ba 83 59 3c 19 e6 85 4f a8
5 68 6b 81 b2 71 64 da 8b f8 eb 0f 4b 70 56 9d 35
6 1e 24 0e 5e 63 58 d1 a2 25 22 7c 3b 01 21 78 87
7 d4 00 46 57 9f d3 27 52 4c 36 02 e7 a0 c4 c8 9e
otte ea bf 8a d2 40 c7 38 b5 a3 f7 f2 ce f9 61 femten a1
9 e0 ae 5d a4 9b 34 1a 55 annonce 93 32 tredive f5 8c b1 e3
-en 1d f6 e2 2e 82 66 ca 60 c0 29 23 ab 0d 53 4e 6f
b d5 db 37 45 de fd 8e 2f 03 ff 6a 72 6d 6c 5b 51
c 8d 1b af 92 bb dd f.Kr 7f elleve d9 5c 41 1f ti 5a d8
d 0a c1 31 88 a5 cd 7b bd 2d 74 d0 12 b8 e5 b4 b0
e 89 69 97 4a 0c 96 77 7e 65 b9 f1 09 c5 6e c6 84
f atten f0 7d ec 3a dc 4d tyve 79 ee 5f 3e d7 cb 39 48


For eksempel, hvis input Sbox tager værdien "ef", så finder vi rækken "e" og kolonnen "f", får vi Sbox("ef") = "84".

Kryptering og dekryptering

Lad den omvendte substitution være: Lad inputteksten være , outputchifferteksten være , og krypteringsnøglen være Så vil kryptering forløbe som følger: Krypterings- og dekrypteringsalgoritmerne har samme struktur, bortset fra at rækkefølgen, hvori rundnøgler bruges, er omvendt. . Krypteringsnøglerækkefølge : Dekrypteringsnøglerækkefølge:












Nøgleudvidelse

Den runde nøgle , der bruges til kryptering, er afledt af krypteringsnøglen MK. Lad : outputtet er som følger: Først,



Derefter for : Records: (1) anvender substitutionen det samme som for kryptering, bortset fra den lineære substitution L, den erstattes af : ( 2) Systemet af parametre , er givet i hexadecimal notation ( 3) Parameterkonstanten er: posterne er nedenfor:






00070e15 1c232a31 383f464d 545b6269
70777e85 8c939aa1 a8afb6bd c4cbd2d9
e0e7eef5 fc030a11 181f262d 343b4249
50575e65 6c737a81 888f969d a4abb2b9
c0c7ced5 dce3eaf1 f8ff060d 141b2229
30373e45 4c535a61 686f767d 848b9299
a0a7aeb5 bcc3cad1 d8dfe6ed f4fb0209
10171e25 2c333a41 484f565d 646b7279

Krypteringseksempel

Nedenfor er et eksempel på kryptering. Vi bruger det til at kontrollere, om krypteringen er korrekt. Tal kontrolleres i hexadecimal notation.

Eksempel #1: Krypter én gang

simpel tekst: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
krypteringsnøgle: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10

og output information i hver runde:

rk[0] = f12186f9 X[ 4] = 27fad345
rk[ 1] = 41662b61 X[5] = a18b4cb2
rk[ 2] = 5a6ab19a X[6] = 11c1e22a
rk[ 3] = 7ba92077 X[ 7] = cc13e2ee
rk[ 4] = 367360f4 X[8] = f87c5bd5
rk[ 5] = 776a0c61 X[9] = 33220757
rk[ 6] = b6bb89b3 X[ 10] = 77f4c297
rk[ 7] = 24763151 X[ 11] = 7a96f2eb
rk[8] = a520307c X[ 12] = 27dac07f
rk[ 9] = b7584dbd X[ 13] = 42dd0f19
rk[10] = c30753ed X[14] = b8a5da02
rk[11] = 7ee55b57 X[15] = 907127fa
rk[12] = 6988608c X[16] = 8b952b83
rk[13] = 30d895b7 X[17] = d42b7c59
rk[14] = 44ba14af X[18] = 2ffc5831
rk[15] = 104495a1 X[19] = f69e6888
rk[16] = d120b428 X[20] = af2432c4
rk[17] = 73b55fa3 X[21] = ed1ec85e
rk[18] = cc874966 X[22] = 55a3ba22
rk[19] = 92244439 X[23] = 124b18aa
rk[20] = e89e641f X[24] = 6ae7725f
rk[21] = 98ca015a X[25] = f4cba1f9
rk[22] = c7159060 X[26] = 1dcdfa10
rk[23] = 99e1fd2e X[27] = 2ff60603
rk[24] = b79bd80c X[28] = eff24fdc
rk[25] = 1d2115b0 X[29] = 6fe46b75
rk[26] = 0e228aeb X[30] = 893450ad
rk[27] = f1780c81 X[31] = 7b938f4c
rk[28] = 428d3654 X[32] = 536e4246
rk[29] = 62293496 X[33] = 86b3e94f
rk[30] = 01cf72e5 X[34] = d206965e
rk[31] = 9124a012 X[35] = 681edf34

Krypteringstekst: 68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46

Eksempel #2: Brug af den samme krypteringsnøgle som teksten til at kryptere 1.000.000 gange

Tekst: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Krypteringsnøgle: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
Chiffertekst: 59 52 98 c7 c6 fd 27 1f ​​04 02 f8 04 c3 3d 3f 66

Noter

  1. http://www.codeofchina.com/standard/GMT0002-2012.html Arkiveret 4. marts 2016 på Wayback Machine GM/T 0002-2012 SM4 Block Cipher Algorithm (engelsk)

Links