You are on page 1of 31

Zastosowanie ukadw FPGA

w kryptografii
Krzysztof Gajewski, KNSI Krypto, 15.04.2011
0. Plan prezentacji
1. Wprowadzenie
2. Podstawy VHDLa
3. Podstawowe ukady cyfrowe w VHDLu
4. Podstawowe elementy uywane w
kryptografii
5. Przykad uycia
6. Podsumowanie
1.0 Wprowadzenie
Wspczesne szyfrowanie
Due iloci danych
Dziaanie w czasie rzeczywistym
Urzdzenia wspomagajce, np. w sieci
Komputer jest zbyt uniwersalny (czyt. zbyt
wolny)
1.1 Wprowadzenie
Dane operacje mona zaszy w sprzcie
Jedna operacja w ukadzie to nawet kilka
operacji w CPU
Operujemy na sowie duszym, ni sowo
CPU
1.2 Wprowadzenie porwnanie [1]
P4
Dla FPGA nawet
20Gb/s (~2.5 GB/s)
Opteron
2.0 Podstawy VHDLa
Historia
Co robi VHDL?
Metodologia projektowania
Ukad FPGA
Skadnia jzyka
2.1 Podstawy VHDLa historia [za 2]
Lata 80-te XX wieku.
Departament obrony do dokumentacji ASIC
Pniejszy rozwj w oparciu o jzyki 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 ukadu logicznego
W symulatorze sprawdzana jest poprawno
dziaania ukadu (testbench)
Synteza, opis do postaci bramek
Moliwe jest wyprodukowanie kodu, ktrego 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 kadej czci
3. Narysowanie grafu automatu stanw. Wszystkie stany
systemu, kombinacje sygnaw wejciowych okrelajce
zmiany stanw oraz wyjcia dla kadego stanu. DATAPATH
4. Minimalizecja liczby stanw (ew.)
5. Wyznaczenie zmiennych reprezentujcych stany
6. Wyprowadzenie stanw nastpnych oraz wyj
7. Optymalizacja stanw nastpnych i wyj
8. Rozmieszczenie bramek w ukadzie scalonym
9. Wykonanie pocze pomidzy ukadami scalonymi
10. Pamitamy o symulacjach
2.4 Podstawy VHDLa - metodologia
projektowania [na podst. 4]
2.5 Podstawy VHDLa ukad FPGA [5]
Ukad posiada
dodatkow pami
na konfiguracj
2.6 Podstawy VHDLa ukad FPGA [5]
2.7 Podstawy VHDLa ukad FPGA [5]
2.8 Podstawy VHDLa skadnia jzyka [4]
2.9 Podstawy VHDLa skadnia jzyka
Operacje wspbiene!!!
Wielko liter nieistotna
-- to jest komentarz
, oddzielenie, elementw, listy
A <= przypisanie sygnau do A
Nazwy skadaj si z liter, liczb i podkrele
(zaczynamy od litery)
Sowa kluczowe ma liter
Rozmiar portw wyjciowych musi si zgadza
Uwaga na kierunek numeracji portw
2.10 Podstawy VHDLa skadnia
jzyka
Wejcia / wyjcia
in - tylko wejcie
out - tylko wyjcie, wiele odbiornikw
buffer tylko wyjcie, tylko jedno rdo
inout wejcie i zarazem wyjcie
2.11 Podstawy VHDLa skadnia
jzyka
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, zoone, inne
Wasne typy:
type T_STATE is (RESET, START, EXECUTE, FINISH);
signal CURRENT_STATE, NEXT_STATE : T_STATE ;
2.12 Podstawy VHDLa skadnia
jzyka
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 skadnia
jzyka
Podstawowy ukad 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 urzdzenie moe mie wiele architektur
2.14 Podstawy VHDLa skadnia
jzyka
architecture EXAMPLE of STRUCTURE is
subtype DIGIT is integer range 0 to 9; -- deklaracja typw,
constant BASE: integer := 10; -- staych
signal DIGIT_A, DIGIT_B: DIGIT; -- sygnaw
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 skadnia
jzyka
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 skadnia
jzyka
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 wspbiene
end generate [LABEL];
LABEL: for ID in range generate
-- polecenia wspbiene
end generate [LABEL];
2.17 Podstawy VHDLa skadnia
jzyka [4]
2.18 Podstawy VHDLa skadnia
jzyka
Mona 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 skadnia
jzyka
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 skadnia
jzyka
[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 - pominite
3.0 Podstawowe ukady 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 wielowejciowe
Rejestry
Rejestry przesuwne
...
4.0 Podstawowe elementy uywane w
kryptografii
Bloki S / P
Wszelkie operacje matematyczne
Wejcia / wyjcia
Optymalizacja:
Rozmiar ukadu
Czas wykonania
[6]
5.0 Przykad uycia
PRESENT [7]
6.0 Podsumowanie
Opisano podstwy jzyka VHDL
Przedstawiono gdzie i po co go uywa
Opisano podstawowe zastosowania w
kryptografii
Pokazano przykad implementacji ukadu
7.0 Bibliografia
[1] http://www.cryptopp.com/benchmarks.html
[2] http://en.wikipedia.org/wiki/VHDL
[3] M. Zwolinski, Projektowanie ukadw cyfrowych z wykorzystaniem
jzyka 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, Jzyk VHDL Projektowanie programowalnych
ukadw logicznych, WNT, Warszawa 2004

You might also like