SM4

SM4 (SMS4)
publiceras 2006 (avsekretessbelagd)
Nyckelstorlek 128 bitar
Block storlek 128 bitar
Antal omgångar 32
Sorts Feistel nätverk

SM4  är en blockchifferalgoritm som används i Kina som en nationell standard för trådlösa lokala nätverk (WLAN Authentication and Privacy Infrastructure (WAPI)).

Ursprungligen kallades algoritmen SMS4 , men i texten till GM / T 0002-2012 standard SM4 Block Cipher Algorithm daterad 21 mars 2012 döptes den officiellt om till SM4 . [ett]

SM4 föreslogs som chiffer som används i IEEE 802.11i- standarden , men ersattes snabbt av ISO . En av anledningarna till detta var motståndet mot WAPI snabbspår som främjades av IEEE .

SM4-algoritmen utvecklades av professor Lu Shu-wang (LU Shu-wang(???)). Algoritmen avklassificerades i januari 2006. Flera egenskaper hos SM4:

Termer och definitioner

Ord och byte

Mängden definieras som en vektor av e -bitar.

detta ord .

det här är en byte .

Definitioner
Rund nyckel Runda nycklar erhålls från Cipher Key med hjälp av Key Expansion-proceduren. De tillämpas på staten vid kryptering och dekryptering
Chiffernyckel en hemlig, kryptografisk nyckel som används av nyckelexpansionsproceduren för att producera en uppsättning runda nycklar; kan representeras som en rektangulär byte-array med fyra rader och Nk- kolumner.
nyckelexpansion procedur som används för att generera runda nycklar från Cipher Key
S box icke-linjär substitutionstabell som används i flera bytesubstitutionstransformationer och i Key Expansion-proceduren för en-till-en-ersättning av ett bytevärde. Den förberäknade S-boxen kan ses nedan.

S box

S-boxen är fixerad med 8 ingångsbitar och 8 utgångsbitar, skrivna som Sbox().

Nycklar och nyckelparametrar

Längden på den krypterade nyckeln är 128-bitar och representeras som , var och en innehåller ett ord.

Den runda nyckeln representeras som . Den skapas av krypteringsnyckeln.

det är ett parametersystem.

fast parameter.

och det här är orden som används för att utöka algoritmen.

Runda funktion F

SM4 använder en icke-linjär substitutionsstruktur, 32 bitar krypteras åt gången. Detta är det så kallade enomgångsbytet . För ett illustrativt exempel, överväg en engångsersättning: Föreställ dig ett 128-bitars ingångsblock som fyra 32-bitars element , med , och har sedan formen:

Blandad substitution T

detta är en substitution som producerar 32 bitar av 32 bitar. Denna substitution är reversibel och innehåller en icke-linjär substitution, τ, och en linjär substitution, L, dvs.

Icke-linjär substitution τ bearbetar fyra S-boxar parallellt.

Låt 32-bitars inmatningsord vara , där var och en är ett 8-bitars tecken. Låt det 32-bitars utgående ordet vara ), har formen = (Sbox( ), Sbox( ), Sbox( ), Sbox( ))

Linjär substitution L

, kommer det 32-bitars icke-linjära ersättningsordet att mata ut det linjära ersättningsordet L. Låt vara det 32-bitars utgångsordet skapat av L. Sedan

S box

Alla Sbox-nummer är i hexadecimal notation.

_ 0 ett 2 3 fyra 5 6 7 åtta 9 a b c d e f
0 d6 90 e9 fe cc e1 3d b7 16 b6 fjorton c2 28 fb 2c 05
ett 2b 67 9a 76 2a vara 04 c3 aa 44 13 26 49 86 06 99
2 9c 42 femtio f4 91 ef 98 7a 33 54 0b 43 ed jfr ac 62
3 e4 b3 1c a9 c9 08 e8 95 80 df 94 fa 75 8f 3f a6
fyra 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
åtta ea bf 8a d2 40 c7 38 b5 a3 f7 f2 ce f9 61 femton a1
9 e0 ae 5d a4 9b 34 1a 55 annons 93 32 trettio f5 8c b1 e3
a 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 Ib af 92 bb dd före Kristus 7f elva d9 5c 41 1f tio 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 arton f0 7d ec 3a dc 4d tjugo 79 ee 5f 3e d7 cb 39 48


Till exempel, om inmatningen Sbox tar värdet "ef", då vi hittar raden "e" och kolumnen "f", får vi Sbox("ef") = "84".

Kryptering och dekryptering

Låt den omvända ersättningen vara: Låt den inmatade texten vara , den utgående chiffertexten vara , och krypteringsnyckeln vara Sedan kommer krypteringen att gå till enligt följande: Krypterings- och dekrypteringsalgoritmerna har samma struktur, förutom att ordningen som runda nycklar används är omvänd . Krypteringsnyckelordning : Dekrypteringsnyckelordning:












Nyckelexpansion

Den runda nyckeln som används för kryptering är härledd från krypteringsnyckeln MK. Låt : utgången är som följer: Först,



Sedan för : Records: (1) använder substitutionen samma som för kryptering, förutom den linjära substitutionen L, den ersätts med : ( 2) Parametrarnas system , ges i hexadecimal notation ( 3) Parameterkonstanten är : inläggen är nedan:






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

Krypteringsexempel

Nedan är ett exempel på kryptering. Vi använder den för att kontrollera om krypteringen är korrekt. Siffror kontrolleras i hexadecimal notation.

Exempel #1: Kryptera en gång

oformatterad text: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
krypteringsnyckel: 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10

och mata ut information i varje omgång:

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

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

Exempel #2: Använd samma krypteringsnyckel som texten för att kryptera 1 000 000 gånger

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

Anteckningar

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

Länkar