Zastosowanie układów FPGA

Preview:

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

Recommended