Upload
mgajos
View
36
Download
2
Embed Size (px)
Citation preview
Zastosowanie układów FPGA
w kryptografii
Krzysztof Gajewski, KNSI Krypto, 15.04.2011
0. Plan prezentacji
1. Wprowadzenie
2. Podstawy VHDLa
3. Podstawowe układy cyfrowe w VHDLu
4. Podstawowe elementy używane w
kryptografii
5. Przykład użycia
6. Podsumowanie
1.0 Wprowadzenie
• Współczesne szyfrowanie
– Duże ilości danych
– Działanie w czasie rzeczywistym
– Urządzenia wspomagające, np. w sieci
• Komputer jest zbyt uniwersalny (czyt. zbyt
wolny)
1.1 Wprowadzenie
• Dane operacje można zaszyć w sprzęcie
• Jedna operacja w układzie – to nawet kilka
operacji w CPU
• Operujemy na słowie dłuższym, niż słowo
CPU
1.2 Wprowadzenie – porównanie [1]
• P4
• Dla FPGA nawet
20Gb/s (~2.5 GB/s)
• Opteron
2.0 Podstawy VHDLa
• Historia
• Co robi VHDL?
• Metodologia projektowania
• Układ FPGA
• Składnia języka
2.1 Podstawy VHDLa – historia [za 2]
• Lata 80-te XX wieku.
• Departament obrony do dokumentacji ASIC
• Późniejszy rozwój w oparciu o języki ADA
i PASCAL
• Standard IEEE w 1987 r., modyfikacje w
1993 r., kolejne w 2000 i 2002 r.
• Kolejne zmiany w 2006 i 2008 r.
2.2 Podstawy VHDLa - Co robi VHDL?
• Very High Speed Integrated Circuit Hardware
Description Language
• Opis budowy układu logicznego
• W symulatorze sprawdzana jest poprawność
działania układu (testbench)
• Synteza, opis do postaci bramek
• Możliwe jest wyprodukowanie kodu, którego nie
da się uruchomić
• W środowisku programistycznym – zapisanie
opisu do FPGA
2.3 Podstawy VHDLa – metodologia
projektowania [na podst. 3]
1. Przygotowanie specyfikacji
2. Ew. podział systemu na mniejsze podsystemy i
przygotowanie specyfikacji dla każdej części
3. Narysowanie grafu automatu stanów. Wszystkie stany
systemu, kombinacje sygnałów wejściowych określające
zmiany stanów oraz wyjścia dla każdego stanu. DATAPATH
4. Minimalizecja liczby stanów (ew.)
5. Wyznaczenie zmiennych reprezentujących stany
6. Wyprowadzenie stanów następnych oraz wyjść
7. Optymalizacja stanów następnych i wyjść
8. Rozmieszczenie bramek w układzie scalonym
9. Wykonanie połączeń pomiędzy układami scalonymi
10. Pamiętamy o symulacjach
2.4 Podstawy VHDLa - metodologia
projektowania [na podst. 4]
2.5 Podstawy VHDLa – układ FPGA [5]
• Układ posiada
dodatkową pamięć
na konfigurację
2.6 Podstawy VHDLa – układ FPGA [5]
2.7 Podstawy VHDLa – układ FPGA [5]
2.8 Podstawy VHDLa – składnia języka [4]
2.9 Podstawy VHDLa – składnia języka
• Operacje współbieżne!!!
• Wielkość liter nieistotna
• -- to jest komentarz
• , oddzielenie, elementów, listy
• A <= przypisanie sygnału do A
• Nazwy składają się z liter, liczb i podkreśleń
(zaczynamy od litery)
• Słowa kluczowe małą literą
• Rozmiar portów wyjściowych musi się zgadzać
• Uwaga na kierunek numeracji portów
2.10 Podstawy VHDLa – składnia
języka
• Wejścia / wyjścia
– in - tylko wejście
– out - tylko wyjście, wiele odbiorników
– buffer – tylko wyjście, tylko jedno źródło
– inout – wejście i zarazem wyjście
2.11 Podstawy VHDLa – składnia
języka
• package STANDARD is
type BOOLEAN is (FALSE,TRUE);
type BIT is (`0`,`1`);
type CHARACTER is (-- ascii set);
type INTEGER is range -- implementation_defined
type REAL is range -- implementation_defined
-- BIT_VECTOR, STRING, TIME
end STANDARD;
• signal a : bit_vector (3 downto 0); -- a(2);
• Konkatenacja & , VECTOR <= (others => '0');
• Typy danych: skalarne, złożone, inne
• Własne typy:
type T_STATE is (RESET, START, EXECUTE, FINISH);
signal CURRENT_STATE, NEXT_STATE : T_STATE ;
2.12 Podstawy VHDLa – składnia
języka
• PACKAGE std_logic_1164 IS
--------------------------------------------------
-- logic state system (unresolved)
--------------------------------------------------
TYPE STD_ULOGIC IS (
`U`, -- uninitialized
`X`, -- Forcing Unknown
`0`, -- Forcing 0
`1`, -- Forcing 1
`Z`, -- High Impedance
`W`, -- Weak Unknown
`L`, -- Weak 0
`H`, -- Weak 1
`-`, -- don`t care); ...
• Biblioteka numeric – operacje matematyczne
2.13 Podstawy VHDLa – składnia
języka
• Podstawowy układ komponentu
entity URZADZENIE is
port(
A, B: in bit;
X, Y: out bit);
end URZADZENIE;
-- VHDL'93: end entity URZADZENIE ;
architecture RTL of URZADZENIE is
begin
-- implementacja
end RTL;
-- VHDL'93: end architecture RTL ;
Jedno urządzenie może mieć wiele architektur
2.14 Podstawy VHDLa – składnia
języka
architecture EXAMPLE of STRUCTURE is
subtype DIGIT is integer range 0 to 9; -- deklaracja typów,
constant BASE: integer := 10; -- stałych
signal DIGIT_A, DIGIT_B: DIGIT; -- sygnałów
signal CARRY: DIGIT;
component HALFADDER
port (A, B : in bit;
SUM, CARRY : out bit);
end component;
component ...
end component;
begin
-- implementacja
end EXAMPLE ;
2.15 Podstawy VHDLa – składnia
języka
architecture STRUCT of FULLADDER is
component HALFADDER
port (A, B : in bit;
SUM, CARRY : out bit);
end component;
component ORGATE
...
end component;
signal W_SUM, W_CARRY1, W_CARRY2: bit;
begin
MODULE1: HALFADD port map(
A => A, SUM => W_SUM, B => B, CARRY => W_CARRY1);
MODULE2: HALFADDER port map ( W_SUM, CARRY_IN,
SUM, W_CARRY2 ); ...
end STRUCT;
2.16 Podstawy VHDLa – składnia
języka
• Konfiguracje ...
• ...
architecture RTL of AND_OR_XO
R is
begin
A_O_X: process (A, B)
begin
...
end process A_O_X ;
end RTL;
• LABEL: if expr generate
-- polecenia współbieżne
end generate [LABEL];
• LABEL: for ID in range generate
-- polecenia współbieżne
end generate [LABEL];
2.17 Podstawy VHDLa – składnia
języka [4]
2.18 Podstawy VHDLa – składnia
języka
• Można tworzyć tablice dwuwymiarowe
• Rekordy
type DATE is
record
DAY: integer range 1 to 31;
MONTH: MONTH_NAME;
YEAR: integer range 0 to 4000;
end record;
• Moliwość konersji danych SOME_BITS <= Convert_to_Bit( VECTOR ) ;
• Aliasy alias STARTBIT : bit is DATA(9) ;
• Operacje - not, and, or, nand, nor, xor, xnor, sll, srl, sla, sra, rol,
ror, <, <=, =, /=, >=, >, +, -, *, **, /, mod, abs, rem,
2.19 Podstawy VHDLa – składnia
języka
• if CONDITION then
-- sequential statements
elsif CONDITION then
-- sequential statements
· · ·
else
-- sequential statements
end if;
• case EXPRESSION is
when VALUE_1 =>
-- sequential statements
when VALUE_2 | VALUE_3 =>
-- sequential statements
when VALUE_4 to VALUE_N
=>
-- sequential statements
when others =>
-- sequential statements
end case ;
2.20 Podstawy VHDLa – składnia
języka
• [LOOP_LABEL :]
for IDENTIFIER in DISCRETE_RANGE loop
-- sequential statements
end loop [LOOP_LABEL] ;
[LOOP_LABEL :]
while CONDITION loop
-- sequential statements
end loop [LOOP_LABEL] ;
• wait for [xxx_time, sygnał, warunek]
• Zmienne
• Procedury, funkcje, zapis odczyt do dysku - pominięte
3.0 Podstawowe układy logiczne w
VHDLu [3]
• Multiplekser
X <= A when S = '1' else B;
• Przerzutnik (zatrzask)
Q <= D when Enable = '1' else Q; lub
process(D,Enable)
begin
if Enable = '1' then Q <= D;
end if; end process;
• Przerzutnik (D)
process(CLK, RESET)
begin
if RESET = '1' then Q <= '0';
elsif rising_edge(CLK) then Q <= D;
end if;
end process;
• Liczniki
• Bramki wielowejściowe
• Rejestry
• Rejestry przesuwne
• ...
4.0 Podstawowe elementy używane w
kryptografii
• Bloki S / P
• Wszelkie operacje matematyczne
• Wejścia / wyjścia
• Optymalizacja:
– Rozmiar układu
– Czas wykonania
[6]
5.0 Przykład użycia
• PRESENT [7]
6.0 Podsumowanie
• Opisano podstwy języka VHDL
• Przedstawiono gdzie i po co go używać
• Opisano podstawowe zastosowania w
kryptografii
• Pokazano przykład implementacji układu
7.0 Bibliografia
[1] http://www.cryptopp.com/benchmarks.html
[2] http://en.wikipedia.org/wiki/VHDL
[3] M. Zwolinski, „Projektowanie układów cyfrowych z wykorzystaniem
języka VHDL”, WKŁ, Warszawa 2007
[4] http://www.vhdl-online.de/tutorial/englisch/inhalt.htm
[5] http://www.xilinx.com
[6] http://www.itl.nist.gov/fipspubs/fip46-2.htm
[7] A. Bogdanov, L.R. Knudsen, et al., “PRESENT: An Ultra-
Lightweight Block Cipher”, Cryptographic Hardware and Embedded
Systems - CHES 2007 (2007), pp. 450-466. doi:10.1007/978-3-540-
74735-2_31
[8] Kevin Skahill, „Język VHDL Projektowanie programowalnych
układów logicznych”, WNT, Warszawa 2004