31
Zastosowanie układów FPGA w kryptografii Krzysztof Gajewski, KNSI Krypto, 15.04.2011

Zastosowanie układów FPGA

  • Upload
    mgajos

  • View
    36

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Zastosowanie układów FPGA

Zastosowanie układów FPGA

w kryptografii

Krzysztof Gajewski, KNSI Krypto, 15.04.2011

Page 2: Zastosowanie układów FPGA

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

Page 3: Zastosowanie układów FPGA

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)

Page 4: Zastosowanie układów FPGA

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

Page 5: Zastosowanie układów FPGA

1.2 Wprowadzenie – porównanie [1]

• P4

• Dla FPGA nawet

20Gb/s (~2.5 GB/s)

• Opteron

Page 6: Zastosowanie układów FPGA

2.0 Podstawy VHDLa

• Historia

• Co robi VHDL?

• Metodologia projektowania

• Układ FPGA

• Składnia języka

Page 7: Zastosowanie układów FPGA

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.

Page 8: Zastosowanie układów FPGA

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

Page 9: Zastosowanie układów 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

Page 10: Zastosowanie układów FPGA

2.4 Podstawy VHDLa - metodologia

projektowania [na podst. 4]

Page 11: Zastosowanie układów FPGA

2.5 Podstawy VHDLa – układ FPGA [5]

• Układ posiada

dodatkową pamięć

na konfigurację

Page 12: Zastosowanie układów FPGA

2.6 Podstawy VHDLa – układ FPGA [5]

Page 13: Zastosowanie układów FPGA

2.7 Podstawy VHDLa – układ FPGA [5]

Page 14: Zastosowanie układów FPGA

2.8 Podstawy VHDLa – składnia języka [4]

Page 15: Zastosowanie układów FPGA

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

Page 16: Zastosowanie układów FPGA

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

Page 17: Zastosowanie układów FPGA

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 ;

Page 18: Zastosowanie układów FPGA

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

Page 19: Zastosowanie układów FPGA

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

Page 20: Zastosowanie układów FPGA

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 ;

Page 21: Zastosowanie układów FPGA

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;

Page 22: Zastosowanie układów FPGA

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];

Page 23: Zastosowanie układów FPGA

2.17 Podstawy VHDLa – składnia

języka [4]

Page 24: Zastosowanie układów FPGA

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,

Page 25: Zastosowanie układów FPGA

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 ;

Page 26: Zastosowanie układów FPGA

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

Page 27: Zastosowanie układów FPGA

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

• ...

Page 28: Zastosowanie układów FPGA

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]

Page 29: Zastosowanie układów FPGA

5.0 Przykład użycia

• PRESENT [7]

Page 30: Zastosowanie układów FPGA

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

Page 31: Zastosowanie układów FPGA

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