2013-02-26 12 views
5

Próbuję zaimplementować AES-256 w trybie CTR za pomocą narzędzia nVidia CUDA. Z powodzeniem zakodowałem kod CPU do rozszerzenia klucza i teraz muszę zaimplementować rzeczywisty algorytm AES-256. Według Wikipedii, niektóre kody, które widziałem, a zwłaszcza this PDF (strona 9), rundy AES można zaimplementować jako serię wyszukiwań tabel. Moje pytanie brzmi: jak wygenerować te tabele? Jestem świadomy, że potrzebuję 4 KB do przechowywania tych tabel, i to nie jest problem. Spędziłem cały dzień próbując znaleźć te stoły bez powodzenia. Plik PDF zamieściłem link do wspomnianych tabel wyszukiwania T0, T1, T2 i T3, ale nie wiem, co to jest. Wymienia także okrągłe klawisze 4, 5, 6 i 7, ale nie rozumiem również, do czego odnoszą się te wskaźniki.Generowanie tabel wyszukiwania AES (AES-256)

Najbliższe, doszedłem do dowiedzieć się, jak wygenerować te tabele wyszukiwania jest z this project. Wewnątrz kodu, nie jest komentarz, który mówi: (? Jest to mnożenie macierzy lub coś innego)

Te0[x] = S [x].[02, 01, 01, 03]; 
Te1[x] = S [x].[03, 02, 01, 01]; 
Te2[x] = S [x].[01, 03, 02, 01]; 
Te3[x] = S [x].[01, 01, 03, 02]; 

Jednak nie jestem do końca pewien, wiem co to znaczy notacji. Jedyne, co rozpoznaję, to macierz stałych części mieszaniny kolumnowej, a także macierz S-box.

[Edytuj] Teraz, gdy ktoś to wskazał - w jaki sposób implementacja odnośnika może być wolniejsza? Czy byłoby rozsądnie wdrożyć AES bez tablic przeglądowych?

+0

Myślę, że jeśli wyglądasz ciężko, to naprawdę tylko te S-boxy mogą być zaimplementowane przy wyszukiwaniu tabeli. – trumpetlicks

+0

Jesteś pewien? Otworzyłem wyżej wspomnianą implementację i całkowicie polegam na tabelach odnośników. Istnieje nawet jeden projekt, który używa ** tylko jednej tabeli wyszukiwania dla wszystkich operacji. Naprawdę tego nie potrzebuję, potrzebuję jednego stołu przeglądowego na operację. Jest to zdecydowanie możliwe, po prostu muszę się dowiedzieć, jak to zrobić. – user2007674

+1

Zdajesz sobie sprawę, że to, o czym mówisz, będzie tabelą 2^(256 + 128 + 128) * 128 bitów. 256 dla klucza, 128 dla danych i kolejne 128 dla CTR. Jest to pełne wejście do wyszukiwania wyników (i to właśnie sprawia, że ​​AES jest tak trudny do odwrócenia). Chociaż nie jestem w miejscu, w którym mogę czytać Twój dokument referencyjny, może on polegać na 100% na wynikach wyszukiwania i wciąż mieć tylko odnośniki do SBOX-ów. SBox oznacza Substitution, który z definicji byłby tablicą przeglądową. – trumpetlicks

Odpowiedz

2

Tabele T są prostym opisem transformacji rundy AES w postaci macierzowej. Aby je zbudować, zapoznaj się z oryginalnym Rijndael NIST proposal, rozdział 5.2.1.

+0

Bardzo pomocny link do źródła odniesienia! – Anders

0

W przypadku gdy ktoś jest nadal zainteresowany, te tablice przeglądowe można znaleźć w standardowej biblioteki języka programowania Go - http://golang.org/src/crypto/aes/const.go#L80

Istnieją również instrukcje dotyczące sposobu generowania tabel w plikach testowych tym samym opakowaniu .