AES vs. Osciloscópio

A palavra "hacker" encontrou seu som atual apenas na segunda metade do século 20, graças aos jornalistas. Inicialmente, os hackers foram chamados de especialistas que possuem amplo conhecimento na área de tecnologias de computação e são capazes de usá-las com maestria. É sobre as atividades de um dos grupos de hackers que serão discutidos neste artigo.





Introdução

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. eu;





    2. 256 k ^ {palpite} _l:





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





      2. 3 r_l ^ 1 r_l ^ 2;





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





    3. k_l ^ {palpite}, \ 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}eu- eu- , , r_ {l} — . , k ^ {palpite}. , c_ {l}, r_ {l}:







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



InvSBox — , InvSBox (SBox (i)) = i, k ^ {palpite} _leu- k ^ {palpite}. , . , , . eu- 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 \ em D_1 ~ \ texto {e} ~ r_l ^ 2 \ em D_1) ~ \ texto {ou} ~ (r_l ^ 1 \ em D_2 ~ \ texto {e} ~ r_l ^ 2 \ em D_2) \}, G_2 = \ {\ vec {T_i} ~ | ~ (r_l ^ 1 \ em D_1 ~ \ texto {e} ~ r_l ^ 2 \ em D_2) ~ \ texto {ou} ~ (r_l ^ 1 \ em D_2 ~ \ texto {e} ~ r_l ^ 2 \ em 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_2G_1 G_2, . , , k ^ {palpite} _l, \ vec {\ Delta} k ^ {palpite} _l: \ vec {\ Delta} = \ vec {\ Delta} (k ^ {palpite} _l).





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







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



\ Delta_iEu- \ vec {\ Delta}. : k \ vec {\ Delta} (k) Eu- . , 256 . k k ^ {correto} _l. l \ em \ {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 . , , , , .





Apesar de ser difícil conduzir um ataque na vida real no momento, continua interessante do ponto de vista científico e pode dar um impulso para o desenvolvimento posterior de ideias na direção estudada.







PS No momento, as diferenças na formatação das fórmulas no editor e na visualização do post são um tanto surpreendentes, em um futuro próximo vou tentar descobrir.








All Articles