AES vs. Oszilloskop

Das Wort "Hacker" fand dank Journalisten erst in der zweiten Hälfte des 20. Jahrhunderts seinen aktuellen Klang. Hacker wurden ursprünglich als Spezialisten bezeichnet, die über umfassende Kenntnisse auf dem Gebiet der Computertechnologien verfügen und diese meisterhaft einsetzen können. Es geht um die Aktivitäten einer der Gruppen solcher Hacker, die in diesem Artikel behandelt werden.





EinfĂĽhrung

2007 Nvidia CUDA — - , , . GPU GPGPU (General Purpose GPU), Nvidia - . , , . , , , . UCAS AES, .





, CUDA AES:





CUDA

CUDA (Compute Unified Device Architecture) — - , Nvidia . CUDA .





, CUDA, :





  1. (kernel) — , GPGPU;





  2. (grid) — , ;





  3. (block) — . --- ;





  4. (, thread) — .





, . CUDA .





, GPGPU.





CUDA

CUDA, GPGPU ( ):





  1. (Scalar Processor, SP) — , ;





  2. (Streaming Multiprocessor, SM) — SP, , 32- (Instruction Unit). SM L1-, SP. SM , ;





  3. GPU — SM, .





GPGPU, , . 32 (warp). , SIMT- (Single Instruction Multiple Threads).





GPGPU , . .





.





AES

Advanced Encryption Standard (AES), Rijndael — . 128 128, 192 256 . 128 , 128 .





AES-128 S 4 4 , (state), 11 :





  1. SubBytes — , SBox. 16 16, . : b \ {x, y \}, x y — , , x- y- SBox. , (Row-Major Ordering) b .





    , , . SBox, SBoxLUT (Look Up Table).





  2. ShiftRows — . , , .





  3. MixColumns — , — . SBox, , .





  4. AddRoundKey — RounKey 4 4, . AES " " — 11 , , . KeyExpansion .





, 11 . . , 11- , :





AddRoundKey(0)

for (i = 1; i <= 10; i += 1) {
    SubBytes()
    ShiftRows()
    MixColumns()
    AddRoundKey(i)
}

SubBytes()
ShiftRows()
AddRoundKey(11)
      
      



, GF (2 ^ 8). , -, \ oplus.





, , , . , .





AES, AES, — , .





32x16 , (Embarrassingly Parallel): , . , , .





. , . .





  1. , ;





  2. ;





  3. , ;





  4. , , 16 :





    1. l;





    2. 256 k ^ {rate} _l:





      1. r_l ^ 1 r_l ^ 2 k ^ {rate} _l;





      2. 3 r_l ^ 1 r_l ^ 2;





      3. \ Delta, k ^ {rate} _l;





    3. k_l ^ {rate}, \ Delta;





  5. , .





, . , , .





— , , 1/2 \ pi . , , GPGPU, , . , . , . .





. , GPGPU, , . , . GPGPU. , .





-

, , - (Simultaneous Cache Collision, SCC). , warp-, , ( SCC) (SCC ) -. .





, - GPGPU Fermi, , 128 . SBoxLUT, SubBytes, 256 , -, . , SCC SBoxLUT D_1 = \ {0 ~ .. ~ 127 \}, D_2 = \ {128 ~ .. ~ 255 \}.





. :







c_l = SBox (r_l) \ oplus k_l, ~ l \ in \ {0, 1, ..., 15 \},





c_ {l} k_ {l}— l- l- , , r_ {l} — . , k ^ {rate}. , c_ {l}, r_ {l}:







r_l = InvSBox (c_l \ oplus k ^ {rate} _l), ~ l \ in \ {0, 1, ..., 15 \},



InvSBox — , InvSBox (SBox (i)) = i, k ^ {rate} _l— l- k ^ {rate}. , . , , . l- r_ {l}, , : r_ {l} ^ 1 r_ {l} ^ 2. SBoxLUT, -, . r_ {l} ^ 1 r_ {l} ^ 2, : : D_1 D_2.





- G_1 G_2 r_l ^ 1 r_l ^ 2: . :





G_1 = \ {\ vec {T_i} ~ | ~ (r_l ^ 1 \ in D_1 ~ \ text {und} ~ r_l ^ 2 \ in D_1) ~ \ text {oder} ~ (r_l ^ 1 \ in D_2 ~ \ text {und} ~ r_l ^ 2 \ in D_2) \}, G_2 = \ {\ vec {T_i} ~ | ~ (r_l ^ 1 \ in D_1 ~ \ text {und} ~ r_l ^ 2 \ in D_2) ~ \ text {oder} ~ (r_l ^ 1 \ in D_2 ~ \ text {und} ~ r_l ^ 2 \ in D_1) \},

\ vec {T_i} , .





, , , , , . ,







\ vec {\ Delta} = \ left |  \ frac {1} {n_1} \ sum _ {\ vec {T_i} \ in G_1} \ vec {T_i} - \ frac {1} {n_2} \ sum _ {\ vec {T_i} \ in G_2} \ vec {T_i } \ right |,



, , G_1 G_2. , n_1 n_2 — G_1 G_2, . , , k ^ {rate} _l, \ vec {\ Delta} k ^ {rate} _l: \ vec {\ Delta} = \ vec {\ Delta} (k ^ {rate} _l).





k ^ {rate} , , r_l ^ 1 r_l ^ 2 , . , k_ {rate} r_l ^ 1 r_l ^ 2 . \ vec {\ Delta} (k ^ {rate} _l) . , l- 256 , \ vec {\ Delta} (k ^ {rate} _l) . :







\ DeclareMathOperator * {\ argmax} {argmax} k_l ^ {korrekt} = \ argmax_k \ left (\ max_ {k \ in \ {0 ~ .. ~ 255 \}} \ left (\ max_ {i} \ Delta_i \ right) ) \ Recht),



\ Delta_i — ich- \ vec {\ Delta}. : k \ vec {\ Delta} (k) ich- . , 256 . k k ^ {richtig} _l. l \ in \ {0 ~ .. ~ 15 \}, . , , AES-128 .





, 1000 , 100 . KEA 600.





, , — .





, . . Nvidia GeForce GT 620 454MiB. , — PolarSSL. Agilent KeySight DSO9104A Rohde&Schwarz RF B.





. AES-128 , , AES-192 AES-256 . , AES-256 2256 2128, .





- GPGPU . , , , , .





Trotz der Tatsache, dass es derzeit schwierig ist, einen Angriff im wirklichen Leben durchzufĂĽhren, bleibt er aus wissenschaftlicher Sicht interessant und kann Impulse fĂĽr die Weiterentwicklung von Ideen in der untersuchten Richtung geben.







PS Im Moment sind die Unterschiede in der Formatierung von Formeln im Editor und beim Anzeigen des Beitrags etwas ĂĽberraschend. In naher Zukunft werde ich versuchen, es herauszufinden.








All Articles