• Nebyly nalezeny žádné výsledky

Tom´aˇsZach ImplementaceTRNGnaARMCortex-M0 Bakal´aˇrsk´apr´ace

N/A
N/A
Protected

Academic year: 2022

Podíl "Tom´aˇsZach ImplementaceTRNGnaARMCortex-M0 Bakal´aˇrsk´apr´ace"

Copied!
69
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

prof. Ing. Róbert Lórencz, CSc.

vedoucí katedry doc. RNDr. Ing. Marcel Jiřina, Ph.D.

děkan

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Název: Implementace TRNG na ARM Cortex-M0

Student: Tomáš Zach

Vedoucí: Ing. Filip Kodýtek Studijní program: Informatika

Studijní obor: Informační technologie Katedra: Katedra počítačových systémů Platnost zadání: Do konce letního semestru 2018/19

Pokyny pro vypracování

Nastudujte problematiku generátorů skutečně náhodných čísel (TRNG) se zaměřením na TRNG vhodné pro mikrokontroléry. Vyberte cílovou platformu, jejíž součástí je procesor s jádrem ARM Cortex-M0.

Implementujte vhodnou variantu TRNG za použití prostředků zvolené platformy. Proveďte vyhodnocení vámi implementovaného řešení a diskutujte své výsledky.

Seznam odborné literatury

Dodá vedoucí práce.

(2)
(3)

Bakal´ aˇrsk´ a pr´ ace

Implementace TRNG na ARM Cortex-M0

Tom´ s Zach

Katedra poˇc´ıtaˇcov´ych syst´em˚u Vedouc´ı pr´ace: Ing. Filip Kod´ytek

(4)
(5)

Podˇ ekov´ an´ı

Pˇredevˇs´ım dˇekuji sv´emu vedouc´ımu pr´ace Ing. Filipu Kod´ytkovi za moˇznost zab´yvat se zaj´ımav´ym t´ematem a t´eˇz za vstˇr´ıcn´y pˇr´ıstup a ˇcas, kter´y mi vˇenoval pˇri psan´ı t´eto pr´ace. D´ale dˇekuji sv´e rodinˇe za podporu v pr˚ubˇehu

(6)
(7)

Prohl´ sen´ı

Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval(a) samostatnˇe a ˇze jsem uvedl(a) veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ym pokynem o etick´e pˇr´ıpravˇe vysokoˇskolsk´ych z´avˇereˇcn´ych prac´ı.

Beru na vˇedom´ı, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vypl´yvaj´ıc´ı ze z´akona ˇc. 121/2000 Sb., autorsk´eho z´akona, ve znˇen´ı pozdˇejˇs´ıch pˇredpis˚u.

V souladu s ust.§46 odst. 6 tohoto z´akona t´ımto udˇeluji nev´yhradn´ı opr´avnˇen´ı (licenci) k uˇzit´ı t´eto moj´ı pr´ace, a to vˇcetnˇe vˇsech poˇc´ıtaˇcov´ych program˚u, jeˇz jsou jej´ı souˇc´ast´ı ˇci pˇr´ılohou, a veˇsker´e jejich dokumentace (d´ale souhrnnˇe jen

”D´ılo“), a to vˇsem osob´am, kter´e si pˇrej´ı D´ılo uˇz´ıt. Tyto osoby jsou opr´avnˇeny D´ılo uˇz´ıt jak´ymkoli zp˚usobem, kter´y nesniˇzuje hodnotu D´ıla, a za jak´ymkoli

´

uˇcelem (vˇcetnˇe uˇzit´ı k v´ydˇeleˇcn´ym ´uˇcel˚um). Toto opr´avnˇen´ı je ˇcasovˇe, teri- tori´alnˇe i mnoˇzstevnˇe neomezen´e. Kaˇzd´a osoba, kter´a vyuˇzije v´yˇse uvedenou licenci, se vˇsak zavazuje udˇelit ke kaˇzd´emu d´ılu, kter´e vznikne (byt’ jen zˇc´asti) na z´akladˇe D´ıla, ´upravou D´ıla, spojen´ım D´ıla s jin´ym d´ılem, zaˇrazen´ım D´ıla do d´ıla souborn´eho ˇci zpracov´an´ım D´ıla (vˇcetnˇe pˇrekladu), licenci alespoˇn ve v´yˇse uveden´em rozsahu a z´aroveˇn zpˇr´ıstupnit zdrojov´y k´od takov´eho d´ıla ale- spoˇn srovnateln´ym zp˚usobem a ve srovnateln´em rozsahu, jako je zpˇr´ıstupnˇen zdrojov´y k´od D´ıla.

(8)

Cesk´ˇ e vysok´e uˇcen´ı technick´e v Praze Fakulta informaˇcn´ıch technologi´ı

c 2018 Tom´aˇs Zach. Vˇsechna pr´ava vyhrazena.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na ˇCesk´em vysok´em uˇcen´ı technick´em v Praze, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena pr´avn´ımi pˇredpisy a mezin´arodn´ımi ´umluvami o pr´avu autorsk´em a pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym. K jej´ımu uˇzit´ı, s v´yjimkou bez´uplatn´ych z´akonn´ych licenc´ı a nad r´amec opr´avnˇen´ı uveden´ych v Prohl´aˇsen´ı na pˇredchoz´ı stranˇe, je nezbytn´y sou- hlas autora.

Odkaz na tuto pr´aci

Zach, Tom´aˇs. Implementace TRNG na ARM Cortex-M0. Bakal´aˇrsk´a pr´ace.

Praha: ˇCesk´e vysok´e uˇcen´ı technick´e v Praze, Fakulta informaˇcn´ıch techno- logi´ı, 2018.

(9)

Abstrakt

Tato pr´ace se zab´yv´a gener´atory skuteˇcnˇe n´ahodn´ych ˇc´ısel - zkr´acenˇe TRNG (True Random Number Generator). Nejdˇr´ıve je provedena liter´arn´ı reˇserˇse t´ykaj´ıc´ı se problematiky TRNG se zamˇeˇren´ım na mikrokontrol´ery. D´ale je zde pˇredstavena vlastn´ı implementace TRNG na mikrokontrol´eru s procesorem ARM-CORTEX-M0. Na z´avˇer je provedeno vyhodnocen´ı mˇeˇren´ı dan´e imple- mentace pomoc´ı sady statistick´ych test˚u.

Kl´ıˇcov´a slova Gener´ator skuteˇcnˇe n´ahodn´ych ˇc´ısel, TRNG, mikrokontrol´er, ARM-CORTEX-M0, clock jitter, NIST

Abstract

This work deals with true random number generators (TRNG). At first, a literature research concerning TRNG with a focus on microcontrollers is done. Then own implementation of TRNG using microcontroller with ARM- CORTEX-M0 processor is introduced. Finally measurements of the proposed design are evaluated with a set of statistical tests.

Keywords True Random Number Generator, TRNG, microcontroller, ARM- CORTEX-M0, clock jitter, NIST

(10)
(11)

Obsah

Uvod´ 1

1 Gener´atory n´ahodn´ych ˇc´ısel 3

1.1 Gener´atory n´ahodn´ych ˇc´ısel . . . 3

1.2 Klasifikace gener´ator˚u n´ahodn´ych ˇc´ısel . . . 4

1.3 PRNG . . . 4

1.4 TRNG . . . 6

1.5 Praktick´e pouˇzit´ı RNG . . . 9

1.6 Aplikace RNG . . . 9

2 Typy konstrukc´ı TRNG 11 2.1 TERO TRNG . . . 11

2.2 Intel TRNG . . . 12

2.3 Konstrukce Fischer-Drutarovsk´y . . . 13

2.4 TRNG na Atmel AVR . . . 14

3 N´avrh a implementace 17 3.1 Popis implementace . . . 17

3.2 Hardware . . . 18

3.3 Program . . . 19

4 Mˇeˇren´ı 23 4.1 Mˇeˇren´ı 1 . . . 24

4.2 Mˇeˇren´ı 2 . . . 24

4.3 Mˇeˇren´ı 3 . . . 25

4.4 Mˇeˇren´ı 4 . . . 26

4.5 Shrnut´ı . . . 26

5 Statistick´e vyhodnocen´ı 27 5.1 Sada test˚u NIST STS . . . 27

(12)

5.2 Pouˇzit´ı NIST STS . . . 28

5.3 Testovan´a Data . . . 28

5.4 V´ysledky . . . 28

5.5 Shrnut´ı . . . 28

Z´avˇer 31

Literatura 33

A V´ystupy NIST STS 35

B Seznam pouˇzit´ych zkratek 51

C Obsah pˇriloˇzen´eho CD 53

x

(13)

Seznam obr´ azk˚ u

1.1 Klasifikace RNG . . . 4

1.2 Obecn´a struktura PRNG . . . 5

1.3 Fibonacciho LFSR s vnˇejˇs´ı zpˇetnou vazbou . . . 6

1.4 Galo˚uv LFSR s vnitˇrn´ı zpˇetnou vazbou . . . 6

1.5 Obecn´a struktura TRNG . . . 7

2.1 TERO obvod . . . 11

2.2 pr˚ubˇeh sign´al˚u TERO obvodu . . . 12

2.3 stavba TERO TRNG . . . 12

2.4 Blokov´e sch´ema Intel TRNG . . . 13

2.5 Stavba PLL konstrukce TRNG Fischer-Drutarovsk´y . . . 14

2.6 TRNG konstrukce Fischer-Drutarovsk´y . . . 14

2.7 Princip Atmel AVR TRNG . . . 15

3.1 Princip clock jitteru v TRNG . . . 17

3.2 Sch´ema ˇc´ıtaˇce 14 v TRNG . . . 18

3.3 Mikrokontrol´er STM32F030R8T6 . . . 19

3.4 Sch´ema nastaven´ı hodin mikrokontrol´eru . . . 20

4.1 Histogram mˇeˇren´ı 1 . . . 23

4.2 Histogram mˇeˇren´ı 2 . . . 24

4.3 Histogram mˇeˇren´ı 3 . . . 25

4.4 Histogram mˇeˇren´ı 4 . . . 25

(14)
(15)

Seznam tabulek

5.1 V´ysledky test˚u NIST STS jednotliv´ych bit˚u. . . 29 5.2 V´ysledky test˚u NIST STS spojen´ych bit˚u. . . 29

(16)
(17)

Uvod ´

Motivace

Chytr´a elektronick´a zaˇr´ızen´ı jsou jiˇz ned´ılnou souˇc´ast´ı bˇeˇzn´eho ˇzivota. At’

uˇz se jedn´a o mobil, notebook nebo televizi. St´ale v´ıce podobn´ych vyn´alez˚u nab´ız´ı nov´e moˇznosti pouˇzit´ı, proto jsou vybavena operaˇcn´ım syst´emem ˇci po- dobn´ym softwarem a umoˇzˇnuj´ı pˇripojen´ı k internetu. To s sebou nese bezpeˇc- nostn´ı rizika. Proto je potˇreba zaˇr´ızen´ı chr´anit pˇred ´utoˇcn´ıky. T´emˇeˇr kaˇzd´y za- bezpeˇcen´y protokol stoj´ı na z´akladu n´ahodn´ych ˇc´ısel a gener´atoru n´ahodn´ych ˇ

c´ısel.

C´ıle pr´ ace

C´ılem reˇserˇsn´ı ˇc´asti t´eto pr´ace je sezn´amen´ı se s problematikou gener´ator˚u n´ahodn´ych ˇc´ısel a jejich klasifikac´ı s d˚urazem na TRNG vhodn´e pro mikro- kontrol´ery. D´ale pak prozkoum´an´ı existuj´ıc´ıch typ˚u konstrukc´ı TRNG.

Praktick´a ˇc´ast t´eto pr´ace se vˇenuje n´avrhu a konkr´etn´ı implementaci TRNG na mikrokontrol´eru s procesorem ARM Cortex-M0. Proveden´ı mˇeˇren´ı a sta- tistick´emu vyhodnocen´ı dan´e implementace.

(18)
(19)

Kapitola 1

Gener´ atory n´ ahodn´ ych ˇ c´ısel

Tato kapitola se vˇenuje pˇredstaven´ı pojmu gener´atory n´ahodn´ych ˇc´ısel, jejich klasifikaci.

1.1 Gener´ atory n´ ahodn´ ych ˇ c´ısel

Problematika n´ahodn´ych gener´ator˚u RNG (Random Number Generator) je velmi diskutovan´e a st´ale aktu´aln´ı t´ema. N´ahodn´a ˇc´ısla maj´ı ˇsirok´e vyuˇzit´ı ve statistice, simulac´ıch, poˇc´ıtaˇcov´ych hr´ach a dalˇs´ıch oblastech [1].

N´ahodn´a ˇc´ısla jsou ned´ılnou souˇc´ast´ı modern´ı kryptografie. Pouˇz´ıvaj´ı se hlavnˇe k vytv´aˇren´ı kl´ıˇc˚u v ˇsifrovac´ıch algoritmech jako RSA, Diffie-Hellman nebo AES. Nach´azej´ı vyuˇzit´ı pˇri generov´an´ı vyplˇnuj´ıc´ıch bit˚u, kter´e slouˇz´ı k rozˇs´ıˇren´ı kr´atk´ych zpr´av na pevn´y poˇcet bit˚u bez naruˇsen´ı pouˇzit´e ˇsifry.

Z tohoto d˚uvodu jsou RNG souˇc´ast´ı mnoha produkt˚u v oblasti IT bezpeˇcnosti a kladou se na nˇe striktn´ı poˇzadavky.

Gener´ator n´ahodn´ych bit˚u je zaˇr´ızen´ı nebo algoritmus, jehoˇz v´ystupem je posloupnost statisticky nez´avisl´ych a objektivn´ıch bin´arn´ıch ˇc´ıslic. Ten m˚uˇze b´yt pouˇzit ke generov´an´ı n´ahodn´ych ˇc´ısel [2].

Pˇredevˇs´ım mus´ı vytv´aˇret data pouˇziteln´a pro kryptografick´e aplikace. Po- kud generovan´a data nejsou opravdu n´ahodn´a a jistou formou se daj´ı pˇred- pov´ıdat, ´utoˇcn´ık m˚uˇze snadno uhodnout kl´ıˇc ˇsifry z omezen´eho poˇctu moˇz- nost´ı. Nen´ı vylouˇceno, ˇze se ´utoˇcn´ık pokus´ı aktivnˇe napadnout RNG, aby urˇcil, nebo dokonce manipuloval s generovan´ymi daty. Proto by RNG mˇel poskyto- vat schopnost odolat tˇemto druh˚um ´utok˚u. Dalˇs´ım uvaˇzovan´ym poˇzadavkem je rychlost produkce dat pro nˇekter´e ˇcasovˇe n´aroˇcn´e aplikace. ˇSpatnˇe navrˇzen´y RNG m˚uˇze oslabit bezpeˇcnost cel´eho syst´emu.

V roce 2010 doˇslo k prolomen´ı bezpeˇcnosti Sony Playstation 3. Konzole ovˇeˇrovala svoje soubory pomoc´ı podpisu. Jeho vytvoˇren´ı vyˇzadovalo n´ahodn´e ˇ

c´ıslo. Chybou gener´atoru se pro kaˇzd´y podpis pouˇz´ıvala konstantn´ı hodnota.

Utoˇ´ cn´ıci tuto slabinu odhalili a d´ıky tomu mohli podepisovat vlastn´ı soubory.

(20)

1. Gener´atory n´ahodn´ych ˇc´ısel

Obr´azek 1.1: Klasifikace RNG1

Coˇz jim umoˇznilo nahr´at do konzole zmˇenˇen´y operaˇcn´ı syst´em a pouˇstˇet ne- leg´aln´ı software.

1.2 Klasifikace gener´ ator˚ u n´ ahodn´ ych ˇ c´ısel

I kdyˇz existuj´ı r˚uzn´a hlediska klasifikace RNG, podle sch´ematu 1.1 rozdˇelu- jeme RNG do dvou skupin. Prvn´ı skupina zahrnuje pseudon´ahodn´e gener´atory ˇc´ısel PRNG (Pseudo Random Number Generator) naz´yvan´e nˇekter´ymi autory deterministick´e RNG. Na vstup dostanou poˇc´ateˇcn´ı hodnotu tzv. seed a z n´ı algoritmicky generuj´ı pseudon´ahodn´a ˇc´ısla.

Druhou skupinu tvoˇr´ı gener´atory opravdu n´ahodn´ych ˇc´ısel TRNG (True Random Number Generator), kter´e se rozliˇsuj´ı na fyzick´e a nefyzick´e. Zdrojem n´ahodnosti fyzick´ych TRNG jsou jevy elektrick´ych obvod˚u. Napˇr. ˇsum ze Ze- nerovy diody, teplotn´ı ˇsum v polovodiˇc´ıch, volnˇe beˇz´ıc´ı oscil´atory apod. Nebo fyzik´aln´ı jevy jako z´aˇren´ı pˇri radioaktivn´ım rozpadu, ˇci jin´e kvantov´e procesy.

Nefyzick´e TRNG vyuˇz´ıvaj´ı n´ahodn´e ud´alosti jako vyhled´avac´ı ˇcas pevn´eho disku, obsah pamˇeti RAM, interakce uˇzivatele.

1.3 PRNG

Metody produkuj´ıc´ı n´ahodn´a ˇc´ısla pomoc´ı deterministick´eho algoritmu naz´y- v´ame pseudon´ahodn´ymi gener´atory ˇc´ısel [1]. Deterministick´y naz´yv´ame algo- ritmus, kter´y pro stejn´e vstupy m´a stejn´y pr˚ubˇeh. Jin´ymi slovy vstup jeho bˇeh jednoznaˇcnˇe urˇc´ı. Obr´azek 1.2 ilustruje strukturu PRNG. Na zaˇc´atku PRNG pˇrijme na vstupu ˇretˇezec bit˚u naz´yvan´y seed, kter´y urˇc´ı prvn´ı vnitˇrn´ı stav gener´atoru s0 a jeho bˇeh. Funkce Ψ na z´akladˇe vnitˇrn´ıho stavu vypoˇcte n´ahodnou hodnotu rn. Potom se z aktu´aln´ıho vnitˇrn´ıho stavu sn vypoˇcte nov´y

1revzato z [3]

4

(21)

1.3. PRNG

Obr´azek 1.2: Obecn´a struktura PRNG2

vnitˇrn´ı stav sn+1 pomoc´ı funkce φ a cel´y cyklus se opakuje. Aˇckoliv algorit- micky generovan´a ˇc´ısla nem˚uˇzou b´yt opravdu n´ahodn´a a s urˇcitou periodou se opakuj´ı, m´a tato skupina gener´ator˚u i sv´e v´yhody. Mohou b´yt mnohem rych- lejˇs´ı a jejich v´ysledky jsou opakovateln´e. Napˇr´ıklad m˚uˇzeme prov´est stejnou simulaci kdyˇz zn´ame seed.

1.3.1 Kryptograficky bezpeˇcn´e PRNG

Zaj´ımavou podskupinou jsoukryptograficky bezpeˇcn´ePRNG - CSPRNG (Cryp- tographically Secure Pseudo-random Number Generator). Pro nˇe plat´ı, ˇze splˇnuj´ı n´asleduj´ıc´ı vlastnosti:

• Mus´ı proj´ıt statistick´ymi testy n´ahodnosti.

• Next-bit test: Pokud zn´ame prvn´ıchkbit˚u n´ahodn´e sekvence, neexistuje algoritmus, kter´y v polynomi´aln´ım ˇcase pˇredpov´ı (k+1) bit s pravdˇepo- dobnost´ı vˇetˇs´ı neˇz 1/2.

• Odhalen´ı stavu: V pˇr´ıpadˇe ˇze je odhalen vnitˇrn´ı stav, nen´ı moˇzn´e zpˇetnˇe zrekonstruovat generovanou sekvenci do tohoto okamˇziku.

• Odolnost proti zpˇetn´e rekonstrukci: Pokud gener´ator pˇri bˇehu vyuˇz´ıv´a dalˇs´ı zdroj entropie, znalost aktu´aln´ıho vnitˇrn´ıho stavu nestaˇc´ı k pˇredpo- vˇezen´ı vnitˇrn´ıch stav˚u v dalˇs´ıch iterac´ıch.

1.3.2 Z´astupci PRNG

V t´eto podsekci uv´ad´ıme pro ´uplnost nˇekter´e typy PRNG.

2revzato z [3]

(22)

1. Gener´atory n´ahodn´ych ˇc´ısel

1 13 11

14 16

Obr´azek 1.3: Fibonacciho LFSR s vnˇejˇs´ı zpˇetnou vazbou3

1 11

14 13 16

Obr´azek 1.4: Galo˚uv LFSR s vnitˇrn´ı zpˇetnou vazbou4 Line´arn´ı kongruenˇcn´ı gener´ator

Line´arn´ı kongruenˇcn´ı gener´ator LCG je jedn´ım z nejzn´amˇejˇs´ıch a ˇsiroce pouˇz´ı- van´ych PRNG zvlaˇstˇe v simulaˇcn´ıch aplikac´ıch. Definuje se pomoc´ı reku- rentn´ıho pˇredpisu:

Xn+1 = (aXn+c) mod m

Kde X je posloupnost pseudon´ahodn´ych ˇc´ısel a X0 je poˇc´ateˇcn´ıseed. Kva- lita gener´atoru z´avis´ı na volbˇe n´asobku a, inkrementu c a modulu m, coˇz jsou parametry LCG. Pro kryptografii se nehod´ı, pokud zn´ame nˇekolik hodnot Xi, m˚uˇzeme postupnˇe odvodit jeho parametry jak popisuje [4].

Posuvn´y registr s line´arn´ı zpˇetnou vazbou

Tento typ se pouˇz´ıv´a ke generov´an´ı sekvence bin´arn´ıch bit˚u. Vstupn´ı bit je v´ysledek line´arn´ı funkce dvou nebo v´ıce bit˚u. D´ıky snadn´e hardwarov´e im- plementaci se hodnˇe pouˇz´ıv´a. Opˇet nen´ı vhodn´y pro kryptografii, hodnoty m˚uˇzeme pˇredpov´ıdat pomoc´ı Berlekamp-Massey algoritmu [5].

V t´eto pr´aci se PRNG jiˇz v´ıce nezab´yv´ame a zv´ıdav´eho ˇcten´aˇre odkazujeme na pˇr´ısluˇsnou literaturu.

1.4 TRNG

Jak zmiˇnuje [7], TRNG je zaˇr´ızen´ı, kter´e vyuˇz´ıv´a fyzik´aln´ı procesy ke ge- nerov´an´ı n´ahodn´e posloupnosti bit˚u. Obr´azek 1.5 zobrazuje stavbu TRNG.

Z´akladem je zdroj ˇsumu vznikaj´ıc´ı v elektrick´ych obvodech ( napˇr. nestabi- lita napˇet´ı na polovodiˇcov´ych souˇc´astk´ach ), nebo zp˚usoben´y fyzik´aln´ımi jevy (napˇr. radioaktivn´ı rozpad). Zdroj ˇsumu vytv´aˇr´ı v ˇcase nepˇretrˇzit´e analogov´e sign´aly, kter´e jsou v jist´e f´azi opakovanˇe pˇrev´adˇeny do digit´aln´ıch bin´arn´ıch

3revzato z [6]

4revzato z [6]

6

(23)

1.4. TRNG

Obr´azek 1.5: Obecn´a struktura TRNG5

hodnot. Ve sch´ematu se naz´yvaj´ıdas random numbers. Tato ˇc´ısla m˚uˇzou b´yt n´aslednˇe algoritmicky zpracov´ana na vnitˇrn´ı n´ahodn´a ˇc´ısla, aby se sn´ıˇzily je- jich potenci´aln´ı slabiny. Zpracov´an´ı m˚uˇze prob´ıhat bez pamˇeti, ale to z´aleˇz´ı na konkr´etn´ım pˇr´ıpadˇe. Nav´ıc siln´y zdroj ˇsumu nutnˇe nevyˇzaduje n´asledn´e zpra- cov´an´ı. Nakonec pˇri vnˇejˇs´ım poˇzadavku jsou intern´ı n´ahodn´a ˇc´ısla pˇred´ana na v´ystup.

1.4.1 Stavebn´ı bloky TRNG

Aˇckoliv existuje mnoho typ˚u TRNG, nejpopul´arnˇejˇs´ı a nejuˇziteˇcnˇejˇs´ı se bˇeˇznˇe skl´adaj´ı z n´asleduj´ıc´ıch tˇr´ı komponent:

Zdroj entropie

Cetn´ˇ e konstrukce TRNG jak bylo ˇreˇceno v literatuˇre sb´ıraj´ı n´ahodnost z fy- zik´aln´ıch proces˚u jako teplotn´ı nebo v´ystˇrelov´y ˇsum v obvodech, jitter, nestabi- lita sign´alu v obvodech, Brown˚uv pohyb, atmosf´erick´y ˇsum, nebo dokonce radi- oaktivn´ı rozpad. Zdroj entropie je pravdˇepodobnˇe nejd˚uleˇzitˇejˇs´ı z komponent, protoˇze urˇcuje v´yslednou entropii. Na druhou stranu je jasn´e ˇze zdroje jako atmosf´erick´y ˇsum a radioaktivn´ı rozpad jsou poˇziteln´e pro omezen´e aplikace nebo online distribuovan´e sluˇzby [8]. Nav´ıc nˇekter´e zdroje maj´ı sklony, kter´e by mˇely b´yt eliminov´any v kroc´ıch sbˇeru nebo n´asledn´em zpracov´an´ı. Kvanti- fikace celkov´e entropie a jejich statistick´ych vlastnost´ı je dalˇs´ı ´ukol konstrukce.

Jin´ym probl´emem jsou dlouhodob´e efekty, kter´e mohou zp˚usobit selh´an´ı zdroje entropie. Existuj´ı aktivn´ı monitorovac´ı techniky detekuj´ıc´ı tot´aln´ı selh´an´ı.

Nicm´enˇe jemn´e chyby se tˇeˇzko v praxi detekuj´ı.

Technika sbˇeru

Zdroj entropie zaznamen´av´ame pouˇzit´ım techniky sbˇeru, kter´a v ide´aln´ım pˇr´ıpadˇe nenaruˇs´ı fyzik´aln´ı proces a sesb´ır´a nejvyˇsˇs´ı moˇznou entropii. Mnoho konstrukc´ı realizuje tento krok. Vzhledem k tomu, ˇze neexistuje jin´y zp˚usob

5revzato z [3]

(24)

1. Gener´atory n´ahodn´ych ˇc´ısel

anal´yzy v´ystupu TRNG neˇz statistick´ymi testy a jednoduch´ymi testy oprav- dov´e n´ahodnosti (Tot a restart testy), mechanismus sbˇeru by mˇel m´ıt pˇresn´e zd˚uvodnˇen´ı. Jednoduˇse ˇreˇceno, Tot testy kontroluj´ı celkov´e selh´an´ı zdroje en- tropie RNG obvykle zp˚usoben´eho vlivem st´arnut´ı materi´alu nebo extr´em- n´ım kol´ıs´an´ım v provozn´ıch podm´ınk´ach. Restart testy ovˇeˇruj´ı generov´an´ı n´ahodnosti restartov´an´ım RNG za t´emˇeˇr stejn´ych provozn´ıch podm´ınek.

N´asledn´e zpracov´an´ı

Aˇckoliv tato souˇc´ast nen´ı vyˇzadov´ana ve vˇsech pˇr´ıpadech, dobr´a konstrukce pˇrikazuje pouˇz´ıt postprocessing. C´ılem je zv´yˇsit robustnost konstrukce TRNG pouˇzit´ım n´asledn´eho zpracov´an´ı v´ystupn´ıch bit˚u. Postprocessing se vyuˇz´ıv´a ke skryt´ı nebo eliminaci v´ykyv˚u anebo z´avislost´ı ve zdroji entropie nebo mecha- nismu sbˇeru. Druh´y c´ıl, kter´y z´ıskal na d˚uleˇzitosti kv˚uli aktivn´ım ´utok˚um na selh´an´ı syst´emu a ´utok˚um postrann´ımi kan´aly, je poskytnout odolnost proti zmˇen´am prostˇred´ı a proti manipulaci ´utoˇcn´ıky. Postprocessing m˚uˇze realizovat jednoduch´y von Neumann˚uv korektor nebo komplikovanˇejˇs´ı extrakˇcn´ı funkce nebo jednosmˇern´a haˇsovac´ı funkce jako SHA-1. I kdyˇz jednosmˇern´a haˇsovac´ı funkce jako SHA-1 nebo MD5 poskytuje bezpeˇcnost pˇri pouˇzit´ı v n´asledn´em zpracov´an´ı, komplikuj´ı anal´yzu rozdˇelen´ı v´ystupu.

1.4.2 Poˇzadavky TRNG

T´ım p´adem existuje velk´e mnoˇzstv´ı konstrukc´ı TRNG. Jednotliv´e typy se zna- telnˇe liˇs´ı podle zdroj˚u entropie nebo pouˇzit´e techniky sbˇeru. Kaˇzd´a konstrukce m´a sv´e siln´e a slab´e str´anky. Nˇekter´e z tˇechto vlastnost´ı se t´ykaj´ı v´ykonu a jin´e bezpeˇcnosti a robustnosti. Nˇekter´e poˇzadavky na TRNG shrnuje [7].

• Z praktick´eho hlediska je nezbytn´e vyr´abˇet TRNG pomoc´ı bˇeˇzn´eho kˇrem´ıkov´eho procesu. Nav´ıc je vysoce ˇz´adouc´ı implementovat TRNG pouˇzit´ım ˇcistˇe digit´aln´ı techniky. To dovoluje snadnˇejˇs´ı integraci s di- git´aln´ımi mikroprocesory a moˇznost implementovat TRNG na popul´ar- n´ıch konfigurovateln´ych platform´ach ( napˇr. FPGA a CPLD ).

• Kompaktn´ı a efektivn´ı konstrukce s vysokou propustnost´ı dan´e prosto- rem a vyuˇzitou energi´ı. Vyvarovat se pouˇzit´ı zesilovaˇc˚u a jin´ych analo- gov´ych souˇc´astek pokud je to moˇzn´e. Analogov´e souˇc´astky maj´ı tendenci spotˇrebovat v´ıce energie a zt´ıˇzit anal´yzu. Poznamenejme, ˇze protoˇze za- kazujeme analogov´e komponenty, mus´ıme vzorkovat zmˇeny v ˇcase jinak neˇz pomoc´ı ´urovnˇe napˇet´ı. V pˇr´ıpadˇe striktn´ıho dodrˇzen´ı tohoto krit´eria bychom nemˇeli pouˇz´ıvat komplikovan´a sch´emata n´asledn´eho zpracov´an´ı (napˇr. SHA-1), nebo je alespoˇn implementovat v softwaru.

• Je ˇz´adouc´ı m´ıt matematick´e zd˚uvodnˇen´ı mechanismu sbˇeru entropie a vˇsechny pˇredpoklady empiricky ovˇeˇrit. N´avrh by mˇel b´yt dostateˇcnˇe 8

(25)

1.5. Praktick´e pouˇzit´ı RNG jednoduch´y, aby umoˇznil pˇresnou anal´yzu. K ovˇeˇren´ı v´ystupu TRNG se pouˇz´ıvaj´ı testovac´ı sady jako DIEHARD [9] nebo NIST [10].

1.4.3 Techniky n´asledn´eho zpracov´an´ı TRNG

V praxi existuj´ı r˚uzn´e moˇznosti n´asledn´eho zpracov´an´ı. Zde prezentujeme ty nejobvyklejˇs´ı, jak je uvedeno v [7].

• Kryptografick´e haˇsovac´ı funkce:

pravdˇepodobnˇe nejpopul´arnˇejˇs´ı technikou je pouˇz´ıt kryptograficky sil- nou haˇsovac´ı funkci (SHA-1) na v´ystup TRNG. Napˇr´ıklad Intel RNG pouˇz´ıv´a SHA-1. Z hlediska v´ykonu se implementov´an´ı plnohodnotn´e haˇsovac´ı funkce v TRNG jev´ı jako pˇrehnan´e. Avˇsak pokud je vhodnˇe implementovan´a m´a d˚uleˇzit´y pˇr´ınos z hlediska bezpeˇcnosti - pokud selˇze zdroj n´ahodnosti tak TRNG ”pouze” degraduje na PRNG.

• Von Neumann˚uv korektor:

jde o jednu z nejstarˇs´ıch a nejzn´amˇejˇs´ıch technik. Pouˇz´ıv´a se k potlaˇcen´ı lok´aln´ıch v´ykyv˚u n´ahodn´ych hodnot. Pˇrij´ım´a na vstupu dva bity a po- kud jsou stejn´e (oba 0 nebo 1) odstran´ı je z posloupnosti n´ahodn´ych bit˚u, pokud jsou odliˇsn´e, pouˇzije se jeden z bit˚u - napˇr´ıklad prvn´ı. Rych- lost v´ystupu je pak zpomalena pˇribliˇznˇe o jednu ˇctvrtinu. Jeho velkou v´yhodou je snadn´a implementace.

1.5 Praktick´ e pouˇ zit´ı RNG

CSPRNG

• generov´an´ı kl´ıˇc˚u asymetrick´e kryptografie

• generov´an´ı hodnot na jedno pouˇzit´ı tzv.nonce (number used once)

• solen´ı v digit´aln´ıch podpisech

• jednor´azov´e ˇsifry (one-time pad)

1.6 Aplikace RNG

V t´eto kapitole zmiˇnujeme nˇekter´e konkr´etn´ı aplikace RNG.

• CSPRNG na linuxu dostupn´y jako/dev/randoma /dev/urandom

• CSPRNG implementovan´y v OpenSSL pouˇz´ıvan´y ke generov´an´ı kl´ıˇc˚u asymetrick´e kryptografie (napˇr. RSA SSH kl´ıˇce)

(26)

1. Gener´atory n´ahodn´ych ˇc´ısel

• TrusZone RNG - skl´ad´a se ze dvou ˇc´ast´ı - hardwarov´eho TRNG, kter´y generuje seed pro softwarov´y PRNG

• TL200 - hardwarov´y TRNG s USB rozhran´ım, vestavˇen´y posprocessing (napˇr. SHA-512)

10

(27)

Kapitola 2

Typy konstrukc´ı TRNG

V t´eto sekci se zab´yv´ame pˇrehledem nejzn´amˇejˇs´ıch konstrukc´ı TRNG.

2.1 TERO TRNG

Hlavn´ı souˇc´ast´ı tohoto typu TRNG je elektronick´y obvod TERO (Transient Effect Ring Oscilator), kter´y doˇcasnˇe osciluje. Skl´ad´a se ze sud´eho poˇctu inver- tor˚u a p´aru hradel, kter´y restartuje doˇcasn´e oscilace (napˇr. dvˇe hradla NAND nebo XOR). Typick´e sch´ema TERO obvodu zobrazuje 2.1. Skl´ad´a se ze dvou hradel NAND a dvou vˇetv´ı s invertory. TERO obvod m˚uˇzeme ch´apat jako RS klopn´y obvod se dvˇema vstupy stejn´eho napˇet´ı Vctr a dvˇema rozd´ıln´ymi v´ystupy Vout1 a Vout2.

Pˇri n´abˇeˇzn´e hranˇe vstupu Vctr, v´ystupy Vout1 a Vout2 zaˇcnou oscilovat.

Oscilace maj´ı v pr˚umˇeru konstantn´ı frekvenci, ale jejich stˇr´ıda se ˇcasem mˇen´ı.

Stˇr´ıda je pomˇer ˇcas˚u obd´eln´ıkov´eho sign´alu v jednotliv´ych ´urovn´ıch. Stˇr´ıda se mˇen´ı monot´onnˇe a po urˇcit´em poˇctu oscilac´ı dos´ahne pomˇeru 0%, nebo 100%.

V t´eto chv´ıli v´ystupy Vout1 a Vout2 pˇrestanou oscilovat a ust´al´ı se ve dvou navz´ajem opaˇcn´ych logick´ych hodnot´ach. Obr´azek 2.2 ukazuje pr˚ubˇeh sign´al˚u vstupu Vctr a v´ystupu Vout1 namˇeˇren´y osciloskopem. Jak vid´ıme, po n´abˇeˇzn´e hranˇe ˇr´ıd´ıc´ıho sign´alu Vctrzaˇcne v´ystup Vout1 oscilovat.

6revzato z [11]

. . .

V

ctr

V

out2

V

out1

. . .

Obr´azek 2.1: TERO Obvod6

(28)

2. Typy konstrukc´ı TRNG

V

out1

V

ctr

Obr´azek 2.2: pr˚ubˇeh sign´al˚u TERO obvodu7

cnt[0]

Counter of rising edges

clk reset

cnt[7:0]

8 Random

bit output Request of

a random bit

. . . . . .

Obr´azek 2.3: stavba TERO TRNG8

Tˇri pˇribl´ıˇzen´e pohledy ukazuj´ı zmˇenu stˇr´ıdy v ˇcase, kter´a postupnˇe kles´a, aˇz se sign´al Vout1ust´al´ı v hodnotˇe logick´a 0.

Poˇcet oscilac´ı pˇredt´ım, neˇz se v´ystup stabilizuje se vˇzdy liˇs´ı, protoˇze ho ovlivˇnuje elektrick´y ˇsum, kter´y naruˇsuje norm´aln´ı chov´an´ı tranzistor˚u TERO obvodu.

Strukturu tohoto typu TRNG zobrazuje 2.4. Jiˇz zm´ınˇen´y TERO obvod je napojen na ˇc´ıtaˇc, kter´y poˇc´ıt´a n´abˇeˇzn´e hrany doˇcasn´ych oscilac´ı. N´ahodn´a bin´arn´ı posloupnost obvykle vznik´a spojen´ım nejniˇzˇs´ıch bit˚u ˇc´ıtaˇce.

2.2 Intel TRNG

Tento typ je pops´an v [12]. Vzorkuje teplotn´ı ˇsum zes´ılen´ım napˇet´ı namˇeˇre- n´em na nevybuzen´ych rezistorech. Nav´ıc k velk´e n´ahodn´e ˇc´asti jsou tato

7revzato z [11]

8revzato z [11]

12

(29)

2.3. Konstrukce Fischer-Drutarovsk´y

Noise Amplifier Johnson Thermal

Noise Source (Resistor)

Digital Corrector Super Latch

FIFO

Voltage Controlled

Oscillator

High- Speed Oscillator

Control/

Status Reg.

Bus

Obr´azek 2.4: Blokov´e sch´ema Intel TRNG9

mˇeˇren´ı ovlivnˇena pseudon´ahodn´ymi vlastnostmi prostˇred´ı jako elektromagne- tick´e z´aˇren´ı, teplota a kol´ıs´an´ı zdroje nap´ajen´ı. Odeˇcten´ım sign´al˚u namˇeˇren´ych na dvou sousedn´ıch rezistorech Intel RNG znatelnˇe sn´ıˇz´ı p´arov´e souˇc´asti.

D´ale se vyuˇz´ıv´a dvou volnˇe bˇeˇz´ıc´ıch oscil´ator˚u. Jeden je rychl´y a druh´y mnohem pomalejˇs´ı. Teplotn´ı ˇsum se pouˇz´ıv´a k modulov´an´ı frekvence poma- lejˇs´ıho hodinov´eho sign´alu. Ten je pouˇzit k aktivov´an´ı mˇeˇren´ı rychlejˇs´ıch ho- din. Odchylky tˇechto dvou hodin poskytuj´ı zdroj n´ahodn´ych bin´arn´ıch ˇc´ıslic.

2.3 Konstrukce Fischer-Drutarovsk´ y

Tento TRNG je zaloˇzen na analogov´em Phase-Locked Loop (PLL). N´avrh byl implementov´an v Altera Field Programmable Logic Device (FPLD). Kon- strukce je unik´atn´ı v tom, ˇze ˇslo o prvn´ı TRNG, kter´y byl c´ılen na FPGA. Jak zobrazuje 2.5 vzorkuje se jitter hodinov´eho sign´alu generovan´eho PLL pomoc´ı zpoˇzdˇen´ych kask´adov´ych vzorkovaˇc˚u, sestaven´ych dle sch´ematu na obr´azku 2.6.

Kl´ıˇcovou myˇslenkou je pouˇz´ıt v´ıce vzorkovaˇc˚u, aby bylo moˇzn´e vzorko- vat pˇrechodovou z´onu, kter´a je ovlivnˇen´a jitterem, kter´y podle [13] prob´ıh´a v ˇr´adu des´ıtek pikosekund. Vzorky zaznamenan´e v pravideln´ych intervalech jsou zkombinov´any dohromady pomoc´ı funkce XOR. V´ysledkem je vzorek z oblasti kˇrivky sign´alu, kter´a m´a potˇrebnou n´ahodnost. Tento n´avrh je zaj´ı- mav´y, protoˇze osvˇetluje potˇrebu stavˇet TRNG na rekonfigurovateln´ych plat- form´ach.

9revzato z [12]

10revzato z [7]

11revzato z [7]

(30)

2. Typy konstrukc´ı TRNG

phase comparator voltage controlled oscillator

FINm/ (n*k)

FIN 1/n VCO 1/k

1/m Clock Shift

Circuitry 1/v FINm/ (n*v)

Obr´azek 2.5: Stavba PLL pouˇzit´e jako zdroje entropie konstrukce TRNG Fischer-Drutarovsk´y10

fclk

..

. Q

Q

Q

PLL D

D

D T T

T

.

1/k

Obr´azek 2.6: TRNG konstrukce Fischer-Drutarovsk´y11

2.4 TRNG na Atmel AVR

N´asleduj´ıc´ı konstrukce je pops´ana v [14]. I kdyˇz 8 bitov´e mikrokontrol´ery s´erie AVR nemaj´ı pˇr´ımo urˇcen´y hardware ke generov´an´ı n´ahodn´ych ˇc´ısel, uk´azalo se, ˇze je moˇzn´e pouˇz´ıt jako zdroj entropie vestavˇen´y oscil´ator bez dalˇs´ıch souˇc´astek nebo ´uprav. Vyuˇz´ıv´a se faktu, ˇze mikrokontrol´er Atmega 169 na desce AVR Butterfly m˚uˇze pˇristupovat k nˇekolika oscil´ator˚um. Z´akladn´ı kon- figurace pouˇz´ıv´a ˇcipov´y RC oscil´ator jako syst´emov´e hodiny. M˚uˇze vyuˇz´ıvat i jin´y oscil´ator s externˇe pˇripojen´ym krystalem jako gener´atorem pulz˚u pro jednotku ˇcasovaˇc / ˇc´ıtaˇc 2.

Tyto oscil´atory nejsou nikdy ide´alnˇe stabiln´ı. Jejich frekvence ovlivˇnuje mnoho fyzik´aln´ıch vliv˚u jako nap´ajec´ı napˇet´ı, provozn´ı teplota ˇci pˇrirozen´e vlastnosti jitteru. Dopady tˇechto vliv˚u jsou znatelnˇe odliˇsn´e pro kaˇzd´y os- cil´ator. Krystalov´y oscil´ator je mnohem v´ıce stabiln´ı v ˇsirok´e ˇsk´ale provozn´ıch podm´ınek. Zat´ımco RC oscil´ator vykazuje patrn´e odchylky i kdyˇz je kalibro- van´y. I kdyˇz je mikrokontrol´er ve stabiln´ım prostˇred´ı a nap´ajen stabilizovan´ym zdrojem napˇet´ı, RC oscil´ator vykazuje jednoduˇse mˇeˇriteln´y jitter.

Princip fungov´an´ı je na obr´azku 2.7. Zdrojem entropie je jitter RC os- cil´atoru. Krystalov´y oscil´ator byl pouˇzit k periodick´emu ˇcasov´an´ı (1 sekunda), a za tu dobu se namˇeˇril poˇcet pulz˚u RC oscil´atoru. V ide´aln´ım svˇetˇe by byl vˇzdy stejn´y, avˇsak re´alnˇe byly pozorov´any odchylky aˇz 212 pulz˚u mezi 14

(31)

2.4. TRNG na Atmel AVR

Obr´azek 2.7: Princip Atmel AVR TRNG12 n´asledn´ymi mˇeˇren´ımi.

Ke generov´an´ı n´ahodn´ych bit˚u se pouˇz´ıv´a n´asleduj´ıc´ı metoda. ˇC´ıtaˇc / ˇ

casovaˇc 1 poˇc´ıt´a pulzy syst´emov´eho RC oscil´atoru a bˇeˇz´ı na 2 MHz. ˇC´ıtaˇc 2 vyuˇz´ıv´a krystalov´y oscil´ator (32,768 kHz) a odpov´ıdaj´ıc´ı nastaven´ı pˇreddˇeliˇcky generuje pˇreruˇsen´ı kaˇzdou 1 sekundu. V obsluze pˇreruˇsen´ı se pˇreˇcte hodnota ˇ

c´ıtaˇce / ˇcasovaˇce 1 a ˇc´ıtaˇc je vynulov´an. Pak jsou z 16 bitov´e hodnoty extra- hov´any bity 1 aˇz 8 a pˇred´any na v´ystup jako ˇc´ast generovan´e posloupnosti n´ahodn´ych bit˚u.

12revzato z [14]

(32)
(33)

Kapitola 3

avrh a implementace

V t´eto kapitole popisujeme n´avrh a implementaci vlastn´ıho TRNG na mikro- kontrol´eru.

3.1 Popis implementace

Pˇri navrhov´an´ı TRNG vych´az´ıme z [15]. Na rozd´ıl od citovan´eho n´avrhu pouˇz´ıv´ame 32 bitov´y mikrokontrol´er STM32F030R8T6 [16] se stejn´ym proce- sorem tj. ARM-CORTEX-M0. Zdrojem n´ahodnosti je nestabilita hodinov´eho sign´alu tzv. clock jitter. Princip zobrazuje sch´ema 3.1. Gener´ator pouˇz´ıv´a dva nez´avisl´e oscil´atory. Jedn´ım z nich je vysokorychlostn´ı intern´ı oscil´ator HSI (High Speed Internal) kmitaj´ıc´ı na frekvenci 48 MHz a druh´y je po- malejˇs´ı extern´ı krystalov´y oscil´ator LSE (Low Speed External) s frekvenc´ı 32,768 KHz, kter´y nahrazuje vnitˇrn´ı 40 KHz LSI (Low Speed Internal) krys- tal v p˚uvodn´ım n´avrhu. Po pˇredem urˇcen´em poˇctu pulz˚u LSE zmˇeˇr´ıme poˇcet period uplynul´ych na HSI oscil´atoru. V ide´aln´ım pˇr´ıpadˇe bude hodnota vˇzdy konstantn´ı, ale v realitˇe zp˚usob´ı ˇsum odchylky, kter´e se daj´ı pouˇz´ıt pˇri gene- rov´an´ı n´ahodn´ych ˇc´ısel. Tyto hodnoty maj´ı gaussovsk´e rozdˇelen´ı.

13revzato z [15]

Clock jitter Expected period LSI

oscillator HSI oscillator

Gaussian distribution Period time Probability

Obr´azek 3.1: Princip clock jitteru v TRNG13

(34)

3. N´avrh a implementace

Frequency Divider *

/1,2 … 128 Prescaler

/1,2,4,8 PLLCLK

HSI HSI48 HSI14 HSE SYSCLK LSI LSE

MCO pin GPIO pin

HSE/32 RTCCLK TI1_RMP MCO

Edge

detector Capture

register Autoreload

counter

Interrupt or DMA request Timer 14 capture mode

Internal Clock

Obr´azek 3.2: Sch´ema ˇc´ıtaˇce 14 v TRNG. *Naˇsemu modelu chyb´ı dˇeliˇcka frek- vence MCO pinu.14

C´ıtaˇˇ c 14 (Timer 14) v zachyt´avac´ım m´odu pouˇz´ıv´ame k mˇeˇren´ı period HSI. Nastaven´ı je zn´azornˇeno na obr´azku 3.2. Oscil´ator LSE je pˇres prvn´ı multiplexor vyveden na MCO (microcontroller clock output) pin, kter´y se pouˇz´ıv´a jako zdroj pulz˚u vstupuj´ıc´ı do detektoru hran (Edge detector). Ten je nastaven, aby reagoval na kaˇzdou n´abˇeˇznou hranu. D´ale pomoc´ı pˇreddˇeliˇcky (Prescaler) m˚uˇzeme zvolit poˇcet pulz˚u (1, 2, 4, 8) potˇrebn´ych k aktivov´an´ı z´achytn´eho (capture) registru. Pˇri takov´e ud´alosti se aktu´aln´ı hodnota ˇc´ıtaˇce napojen´eho na HSI zaznamen´a v capture registru a pˇr´ıpadnˇe se vyvol´a od- pov´ıdaj´ıc´ı pˇreruˇsen´ı.

3.2 Hardware

Pouˇz´ıv´ame mikrokontrol´er STMF030R8T6 [16] s 32bitov´ym procesorem ARM- Cortex-M0 s nastaviteln´ym kmitoˇctem v rozsahu 8 - 48 MHz viz. obr´azek 3.3.

Uˇzivatel m´a k dispozici:

• zelenou LED diodu s oznaˇcen´ım LD2, kterou m˚uˇze programovˇe ovl´adat

• modr´e tlaˇc´ıtko B1, na jehoˇz stisk m˚uˇze program reagovat

• ˇcern´e tlaˇc´ıtko B2, jenˇz slouˇz´ı k resetu mikrokontrol´eru

Pˇr´ıpravek je nap´ajen mikro USB konektorem, kter´y z´aroveˇn slouˇz´ı k pˇripojen´ı kontrol´eru k poˇc´ıtaˇci. T´ımto zp˚usobem se do mikrokontrol´eru nahr´avaj´ı pro- gramy a prob´ıh´a komunikace s poˇc´ıtaˇcem pˇres s´eriovou linku.

Deska je osazena tˇremi oscil´atory. Dva z nich jsou integr´aln´ı souˇc´ast´ı pro- cesoru (HSI, LSI) a tˇret´ı je extern´ı krystalov´y oscil´ator (LSE). Deska nab´ız´ı moˇznost dodateˇcn´e instalace HSE (High Speed External) oscil´atoru.

Mikrokontrol´er je vybaven flash pamˇet´ı 64KB, kter´a slouˇz´ı k uloˇzen´ı pro- gramu.

14revzato z [15]

18

(35)

3.3. Program

Obr´azek 3.3: Mikrokontrol´er STM32F030R8T6

3.3 Program

Program pro mikrokontrol´er je vyvinut v jazyku C. K v´yvoji pouˇz´ıv´ame ofici´aln´ı v´yvojov´e prostˇred´ı ARM Keil, bˇeˇz´ıc´ı na Windows. Jeho ´ukolem je zdrojov´y k´od v jazyku C pˇreloˇzit do spustiteln´e bin´arn´ı podoby, bˇeˇz´ıc´ı na pro- cesoru ARM a tak´e pomoc´ı s´eriov´e linky program nahr´at do mikrokontrol´eru.

ARM Keil nab´ız´ı obvykl´y standard pro v´yvoj´aˇrskou pr´aci jako je krokov´an´ı programu, breakpointy, ˇci zobrazov´an´ı hodnot promˇenn´ych.

F´aze bˇehu programu v mikrokontrol´eru:

• nastaven´ı hodin (oscil´ator˚u)

• nastaven´ı s´eriov´e linky

• nastaven´ı ˇc´ıtaˇce 14

• nastaven´ı pˇreruˇsen´ı

• ˇcek´an´ı na znak ”s”

• odesl´an´ı hodnoty do poˇc´ıtaˇce

Po nahr´an´ı programu do mikrokontrol´eru pomoc´ı stisknut´ı tlaˇc´ıtka reset dojde k jeho spuˇstˇen´ı. Po spuˇstˇen´ı programu v mikrokontrol´eru dojde k inici- alizaci ˇr´ıd´ıc´ıch registr˚u. Nejd˚uleˇzitˇejˇs´ım krokem t´eto f´aze je spr´avn´e nastaven´ı hodin cel´eho syst´emu.

(36)

3. N´avrh a implementace

Obr´azek 3.4: Sch´ema nastaven´ı hodin mikrokontrol´eru

Zdrojem hodinov´eho sign´alu je vnitˇrn´ı HSI RC oscil´ator. Sign´al je pˇres dˇeliˇcku pˇriveden do PLL (Phase Locked Loop), kde je jeho poloviˇcn´ı frek- vence (4 MHz) vyn´asobena 12. Multiplexor je nastaven tak, ˇze jako zdroj syst´emov´ych hodin (SYSCLK) vybere v´ystup z PLL s frekvenc´ı 48 MHz.

SYSCLK se pouˇz´ıv´a d´ale jako hodinov´y sign´al sbˇernice, hodiny periferi´ı a ˇc´ıta- ˇc˚u, vˇcetnˇe ˇc´ıtaˇce 14.

Dalˇs´ım krokem je nastaven´ı parametr˚u s´eriov´e linky, kter´a slouˇz´ı k pˇrenosu namˇeˇren´ych hodnot z mikrokontrol´eru do poˇc´ıtaˇce. Pouˇz´ıv´ame 115,2 kbit/s.

N´aslednˇe je inicializov´an ˇc´ıtaˇc 14 v z´achytn´em reˇzimu - jak bylo pops´ano v´yˇse - a nastaveno pˇreruˇsen´ı. Pˇreruˇsen´ı je vyvol´ano pˇri ud´alosti zachycen´ı hod- noty ˇc´ıtaˇce v ”capture registru”. V obsluze pˇreruˇsen´ı dojde k pˇreˇcten´ı hodnoty z ”capture registru”, vynulov´an´ı ˇc´ıtaˇce 14 a uloˇzen´ı hodnoty do kruhov´e fronty.

Nyn´ı program na s´eriov´e lince oˇcek´av´a znak ”s”, ˇc´ımˇz dojde ke spuˇstˇen´ı ˇc´ıtaˇce a z´achytn´eho registru. Program vstoup´ı do hlavn´ı smyˇcky - ve chv´ıli kdy kruhov´a fronta obsahuje namˇeˇrenou hodnotu, odeˇsle se pˇres s´eriovou linku do poˇc´ıtaˇce.

V poˇc´ıtaˇci jsou hodnoty naˇc´ıt´any pomocn´ym programem (napsan´ym v ja- zyce C#) a ukl´ad´any do bin´arn´ıho souboru (2 byte unsigned integer).

Prvotn´ı implementace programu pro mikrokontrol´er vyuˇz´ıvala API sofwa- rov´e vrstvy HAL (Hardware Abstraction Layer) [17]. Jej´ı v´yhodou je snadnˇejˇs´ı pr´ace s programov´an´ım mikrokontrol´eru. Nab´ız´ı pomocn´e struktury a funkce.

V naˇsem konkr´etn´ım pˇr´ıpadˇe se uk´azalo, ˇze vrstva nav´ıc zp˚usobuje zpoˇzdˇen´ı po pˇreˇcten´ı generovan´e hodnoty. D˚usledkem je zkreslen´ı generovan´ych hodnot.

Pˇri nastaven´ı pˇreddˇeliˇcky na 1 by se hodnoty mˇely pohybovat okolo teore- tick´e hodnoty 1464 dan´e pomˇerem frekvenc´ı HSI a LSE oscil´ator˚u. S pouˇzit´ım HAL v´ysledky mˇeˇren´ı dosahovaly intervalu okolo hodnoty 1370, tedy hod- 20

(37)

3.3. Program noty mnohem niˇzˇs´ı. Proto jsme pˇrepracovali implementaci bez pouˇzit´ı zm´ınˇen´e vrstvy, nyn´ı pracujeme pˇr´ımo s ˇr´ıd´ıc´ımi registry a t´ım jsme dos´ahli mnohem pˇresnˇejˇs´ıch v´ysledn´ych hodnot okolo 1430.

(38)
(39)

Kapitola 4

ren´ı

Pˇred zah´ajen´ım mˇeˇren´ı propoj´ıme pˇr´ıpravek s poˇc´ıtaˇcem, nahrajeme program do mikrokontrol´eru a stiskneme tlaˇc´ıtko reset. Spust´ıme pomocnou mˇeˇr´ıc´ı apli- kaci v poˇc´ıtaˇci, zad´ame konfiguraci a potvrd´ıme jm´eno v´ystupn´ıho souboru.

T´ım dojde k odesl´an´ı startovn´ıho znaku ”s” z poˇc´ıtaˇce do pˇr´ıpravku, kter´y zaˇcne generovat n´ahodn´e hodnoty. Ty jsou v poˇc´ıtaˇci ukl´ad´any do bin´arn´ıho souboru.

Pro n´asledn´e statistick´e vyhodnocen´ı nech´av´ame vygenerovat 800 mili´on˚u hodnot, coˇz odpov´ıd´a zhruba 40 hodin´am bˇehu programu a objemu 1,4 GB dat. Celkem jsme provedli 4 s´erie mˇeˇren´ı s r˚uzn´ym nastaven´ım pˇreddˇeliˇcky (1, 2, 4, 8 pulz˚u na zachycen´ı hodnoty).

0 2x107 4x107 6x107 8x107 1x108

1405 1410 1415 1420 1425 1430 1435 1440 1445

Četnost

Hodnoty

Histogram rozdělení hodnot - měření 1

Obr´azek 4.1: Histogram mˇeˇren´ı 1

(40)

4. Mˇeˇren´ı

0 1x107 2x107 3x107 4x107 5x107 6x107 7x107

2870 2875 2880 2885 2890 2895 2900 2905 2910 2915 2920 2925

Četnost

Hodnoty

Histogram rozdělení hodnot - měření 2

Obr´azek 4.2: Histogram mˇeˇren´ı 2

4.1 ren´ı 1

Histogram mˇeˇren´ı je na obr´azku 4.1.

• Nastaven´ı pˇreddˇeliˇcky: 1 (zachycen´ı hodnoty na kaˇzd´y pulz od LSE)

• Rozsah hodnot: 1405 - 1446

• Pr˚umˇer: 1424.962

• Rozptyl: 10.98

4.2 ren´ı 2

Histogram mˇeˇren´ı je na obr´azku 4.2.

• Nastaven´ı pˇreddˇeliˇcky: 2 (zachycen´ı hodnoty kaˇzd´e 2 pulzy od LSE)

• Rozsah hodnot: 2871 - 2920

• Pr˚umˇer: 2894.762

• Rozptyl: 19.786

24

(41)

4.3. Mˇeˇren´ı 3

0 1x107 2x107 3x107 4x107 5x107 6x107 7x107 8x107

5810 5820 5830 5840 5850 5860 5870

Četnost

Hodnoty

Histogram rozdělení hodnot - měření 3

Obr´azek 4.3: Histogram mˇeˇren´ı 3

0 1x107 2x107 3x107 4x107 5x107 6x107

11690 11700 11710 11720 11730 11740 11750 11760 11770

Četnost

Hodnoty

Histogram rozdělení hodnot - měření 4

Obr´azek 4.4: Histogram mˇeˇren´ı 4

4.3 ren´ı 3

Histogram mˇeˇren´ı je na obr´azku 4.3.

• Nastaven´ı pˇreddˇeliˇcky: 4 (zachycen´ı hodnoty kaˇzd´e 4 pulzy od LSE)

• Rozsah hodnot: 5814 - 5868

• Pr˚umˇer: 5837.125

• Rozptyl: 18.0768

(42)

4. Mˇeˇren´ı

4.3.1 Anal´yza v´ysledk˚u mˇeˇren´ı 3

Histogram ˇcetnost´ı hodnot mˇeˇren´ı 3 vykazuje niˇzˇs´ı hodnotu rozptylu oproti pˇredpokladu pro dan´e nastaven´ı pˇreddˇeliˇcky. Rozptyl by mˇel line´arnˇe r˚ust v r´amci jednotliv´ych mˇeˇren´ı. Proto jsme provedli dalˇs´ı anal´yzu s c´ılem objasnit tuto anom´alii. Vygenerovali jsme 800 histogram˚u vˇzdy po milionu hodnot a z nich vytvoˇrili video animaci. Histogramy i animaci pˇrikl´ad´ame na CD.

Vygenerovan´e histogramy pˇribliˇznˇe odpov´ıdaj´ı celkov´emu histogramu. Hod- noty rozptylu nevykazuj´ı ˇz´adn´e vˇetˇs´ı odchylky. ˇReˇsen´ım by bylo mˇeˇren´ı s da- n´ym nastaven´ım pˇreddˇeliˇcky zopakovat popˇr. s jin´ym fyzick´ym zaˇr´ızen´ım.

4.4 ren´ı 4

Histogram mˇeˇren´ı je na obr´azku 4.4.

• Nastaven´ı pˇreddˇeliˇcky: 8 (zachycen´ı hodnoty kaˇzd´ych 8 pulz˚u od LSE)

• Rozsah hodnot: 11691 - 11764

• Pr˚umˇer: 11718.327

• Rozptyl: 48.153

4.4.1 Anal´yza v´ysledk˚u mˇeˇren´ı 4

Na histogramu ˇcetnost´ı hodnot mˇeˇren´ı 4 je v prav´e ˇc´asti grafu patrn´a odchylka od ide´aln´ı gaussovsk´e kˇrivky (kolem hodnoty 11730). Proto jsme provedli dalˇs´ı anal´yzu s c´ılem objasnit tuto anom´alii. Vygenerovali jsme 800 histogram˚u vˇzdy po milionu hodnot a z nich vytvoˇrili video animaci. Histogramy i animaci pˇrikl´ad´ame na CD.

Jak je z graf˚u patrn´e, k vych´ylen´ı cel´e kˇrivky smˇerem doprava k vyˇsˇs´ım hodnot´am doˇslo celkem 3x okolo 300., 527. a 670. mˇeˇren´eho milionu hodnot.

Aby doˇslo k pozorovan´emu jevu, muselo by bud’ doj´ıt ke zrychlen´ı vnitˇrn´ıho oscil´atoru (HSI), anebo ke zpomalen´ı vnˇejˇs´ıho krystalov´eho oscil´atoru (LSE).

Vzhledem k tomu, ˇze neˇslo o vych´ylen´ı trval´e, coˇz by mohlo b´yt zp˚usobeno napˇr´ıklad zahˇr´at´ım ˇcipu, ale o tˇri v´ychylky bˇehem 40 hodinov´eho mˇeˇren´ı, doch´az´ıme k z´avˇeru, ˇze muselo j´ıt o nˇejak´y vnˇejˇs´ı vliv. Pravdˇepodobnou pˇr´ıˇcinou se n´am jev´ı nestabilita zdroje nap´ajen´ı nebo zmˇeny okoln´ı teploty.

4.5 Shrnut´ı

Vˇsechna zm´ınˇen´a mˇeˇren´ı maj´ı oˇcek´avan´e gaussovsk´e rozdˇelen´ı charakteristick´e proclock jitter, jak je zm´ınˇeno v kapitole v´yˇse. D´ale si vˇsimnˇeme z´avislosti na- staven´ı pˇreddˇeliˇcky a rozptylu. Pˇri vetˇs´ım poˇctu pulz˚u na zachycenou hodnotu se nestabilita sign´alu hodin akumuluje, coˇz m´a za n´asledek i vyˇsˇs´ı hodnotu rozptylu.

26

(43)

Kapitola 5

Statistick´ e vyhodnocen´ı

Statistick´e vyhodnocen´ı prov´ad´ıme pomoc´ı sady test˚u v aplikaci NIST STS (Statistical Test Suite).

Z namˇeˇren´ych dat prostˇrednictv´ım pomocn´e aplikace vygenerujeme bit- stream - bitov´y proud sest´avaj´ıc´ı napˇr´ıklad pouze z 1. nejniˇzˇs´ıho bitu kaˇzd´e namˇeˇren´e hodnoty. Takto z´ıskan´y bitov´y proud d´ale vyhodnot´ıme pomoc´ı sady test˚u STS.

5.1 Sada test˚ u NIST STS

NIST test suite se skl´ad´a z 15 test˚u, kter´e slouˇz´ı k testov´an´ı n´ahodnosti bin´arn´ıch sekvenc´ı, produkovan´ych hardwarov´ymi nebo softwarov´ymi TRNG nebo PRNG. Testy se zamˇeˇruj´ı na odhalen´ı poruˇsen´ı n´ahodnosti, kter´a se m˚uˇze v testovan´e vstupn´ı sekvenci objevit.

Pˇr´ıklady nˇekter´ych test˚u:

• Frequency (Monobit) Test - tento test se zamˇeˇruje na zjiˇstˇen´ı mnoˇzstv´ı nul a jedniˇcek ve vstupn´ı sekvenci. ´Uˇcelem testu je zjistit zda nul a jedni- ˇ

cek je pˇribliˇznˇe stejn´e mnoˇzstv´ı - t.j. polovina

• Non-overlapping Template Matching Test - tento test se zamˇeˇruje na vyhodnocen´ı poˇctu v´yskyt˚u urˇcit´e posloupnosti bit˚u. ´Uˇcelem tohoto testu je detekovat gener´atory, kter´e produkuj´ı mnoho v´yskyt˚u dan´eho ne-periodick´eho vzoru.

• Linear Complexity Test - tento test se zamˇeˇruje na d´elku registru s line´ar- n´ı zpˇetnou vazbou. ´Uˇcelem testu je rozhodnout zda je sekvence do- stateˇcnˇe komplexn´ı, aby ji bylo moˇzn´e povaˇzovat za n´ahodnou. N´ahodn´e sekvence charakterizuje delˇs´ı LFSR (viz. v´yˇse)

(44)

5. Statistick´e vyhodnocen´ı

5.2 Pouˇ zit´ı NIST STS

STS spust´ıme s parametrem, kter´y ud´av´a d´elku testovan´e sekvence v bitech.

D´ale zad´ame vstupn´ı soubor se zpracov´avan´ymi daty a kterou sadu test˚u chceme spustit. N´aslednˇe zad´ame poˇcet sekvenc´ı ke zpracov´an´ı. D´ale se zad´av´a typ vstupn´ıho souboru - t.j. zda jde o bin´arn´ı ˇci ASCII vstup. Po exekuci test˚u je vygenerov´an v´ystupn´ı soubor (pˇr´ıklad je v pˇr´ıloze). Poˇcet ˇr´adk˚u odpov´ıd´a poˇctu proveden´ych test˚u, d´ale v´ystup obsahuje pro kaˇzd´y test hodnotu p- value, kter´a ud´av´a do jak´e m´ıry se testovan´a sekvence podob´a norm´aln´ımu rozdˇelen´ı ˇci rozdˇelen´ıχ2 a n´azev testu.

5.3 Testovan´ a Data

V r´amci kaˇzd´eho mˇeˇren´ı jsme testovali nejm´enˇe v´yznamn´e bity na pozic´ıch 0-3. D´elka testovan´e sekvence byla 1 mili´on a poˇcet tˇechto sekvenc´ı 800, coˇz odpov´ıd´a 800 mili´on˚um namˇeˇren´ych hodnot. Na z´akladˇe v´ysledk˚u jednotliv´ych bit˚u jsme d´ale provedli vyhodnocen´ı dat z´ıskan´ych spojen´ım bit˚u 0-1 a 0-1-2.

5.4 ysledky

V pˇr´ıloze jsou v´ystupy test˚u mˇeˇren´ı 1 pro bit 0 - vˇsechny testy ´uspˇeˇsnˇe proˇsly, bit1 - jeden test selhal a bit 2 - vetˇsina test˚u selhala. V´ysledky statistick´ych test˚u shrnuj´ı tabulky 5.1 a 5.2. ˇR´adek reprezentuje jedno mˇeˇren´ı charakteri- zovan´e nastaven´ım pˇreddˇeliˇcky. Ve sloupc´ıch jsou testovan´e bity. Na v´ysledky lze nahl´ıˇzet ze dvou pohled˚u. Zaprv´e zkoumat rozd´ıly v r´amci jednotliv´ych bit˚u a zadruh´e analyzovat v´ysledky s r˚uzn´ym nastaven´ım pˇreddˇeliˇcky.

Testy prok´azaly pˇredpokl´adanou tendenci klesaj´ıc´ı kvality n´ahodnosti s ros- touc´ı pozic´ı bitu. V´ysledky s bity 0 nebo 1 vych´azej´ı nejl´epe. Podobnˇe dobˇre vych´az´ı i spojen´ı bit˚u 0-1. V obou tˇechto pˇr´ıpadech bud’ proˇsly vˇsechny testy

´

uspˇeˇsnˇe anebo neproˇsly pouze jednotky test˚u. U bit˚u 2, 3 a rovnˇeˇz u spojen´ı bit˚u 0-2 doˇslo k selh´an´ı vˇetˇsiny test˚u.

M˚uˇzeme konstatovat, ˇze spojen´ım bitu 0 a 1 se v´ysledky statistick´ych test˚u zlepˇsily. Nebot’ s nastaven´ım pˇreddˇeliˇcky na 1, 2 a 8 proˇsly ´uspˇeˇsnˇe vˇsechny testy na rozd´ıl od v´ysledk˚u bitu 0 nebo 1, kde alespoˇn pˇri dvou nastaven´ıch pˇreddˇeliˇcky neproˇsel nˇejak´y test. Tak´e lze ˇr´ıci, ˇze i pro bity 2 nebo 3 lze ve v´ysledc´ıch, s rostouc´ım ˇc´ıslem pˇreddˇeliˇcky, pozorovat zlepˇsuj´ıc´ı se trend - tedy zvyˇsuj´ıc´ı se poˇcet ´uspˇeˇsn´ych test˚u.

5.5 Shrnut´ı

V´ysledky indikuj´ı, ˇze se dan´y n´avrh d´a pouˇz´ıt jako TRNG. Abychom si mohli b´yt jist´ı je tˇreba prov´est podrobnˇejˇs´ı vyhodnocen´ı, pouˇzit´a sada test˚u slouˇz´ı k vyhodnocen´ı PRNG, ale lze ji vyuˇz´ıt pro z´akladn´ı vyhodnocov´an´ı TRNG.

28

(45)

5.5. Shrnut´ı pˇreddˇeliˇcka bit 0 bit 1 bit 2 bit 3

1 ok ok* x x

2 ok ok x x

4 ok* ok** x x

8 ok* ok* x x

* ... neproˇsel jeden ze statistick´ych test˚u

** ... neproˇsly dva ze statistick´ych test˚u x ... vˇetˇsina statistick´ych test˚u selhala

Tabulka 5.1: V´ysledky test˚u NIST STS jednotliv´ych bit˚u.

pˇreddˇeliˇcka bit 0-1 bit 0-2

1 ok x

2 ok x

4 ok* x

8 ok x

* ... neproˇsel jeden ze statistick´ych test˚u x ... vˇetˇsina statistick´ych test˚u selhala

Tabulka 5.2: V´ysledky test˚u NIST STS spojen´ych bit˚u.

Pro re´aln´e nasazen´ı TRNG se jev´ı jako nejvhodnˇejˇs´ı pouˇzit´ı sekvence tvoˇren´e bitem 0 nebo 1 popˇr´ıpadˇe sekvence spojen´ych bit˚u 0 a 1. Jestliˇze chceme dos´ahnout co nejvˇetˇs´ı v´ytˇeˇznosti tak je pˇri dan´ych v´ysledc´ıch vhodn´e pouˇz´ıt nastaven´ı pˇreddˇeliˇcky na 1 a vyb´ırat spojen´e bity 0 a 1.

(46)
(47)

avˇ er

C´ılem reˇserˇsn´ı ˇc´asti t´eto pr´ace bylo sezn´amit se s problematikou gener´ator˚u n´ahodn´ych ˇc´ısel a jejich klasifikac´ı. D´ale prozkoumat existuj´ıc´ıˇreˇsen´ı gener´ato- r˚u skuteˇcnˇe n´ahodn´ych ˇc´ısel s d˚urazem na konstrukce vhodn´e pro mikrokon- trol´ery. V praktick´e ˇc´asti jsme se zab´yvali implementac´ı vlastn´ıho TRNG na mikrokontrol´eru. Provedli jsme mˇeˇren´ı a statistick´e vyhodnocen´ı jeho v´ystup˚u.

V r´amci pr´ace jsme splnili vˇsechny poˇzadavky. Provedli jsme liter´arn´ı reˇserˇsi, podaˇrilo se n´am ´uspˇeˇsnˇe implementovat gener´ator n´ahodn´ych ˇc´ısel na mikrokontrol´eru STM32F030R8T6 s procesorem ARM Cortex-M0. V kapitole 4 jsme provedli 4 mˇeˇren´ı s r˚uzn´ym nastaven´ım pˇreddˇeliˇcky a n´aslednˇe v kapi- tole 5 jsme provedli jejich statistick´e vyhodnocen´ı. Na z´akladˇe v´ysledk˚u NIST STS se jev´ı implementovan´y n´avrh RNG jako vhodn´y pro pouˇzit´ı jako TRNG.

Nejlepˇs´ıch v´ysledk˚u jsme dos´ahli pˇri nastaven´ı pˇreddˇeliˇcky na 1 a v´ybˇeru bit˚u 0 a 1.

V pr´aci by se dalo pokraˇcovat n´asledovnˇe:

• Prov´est opakovan´e mˇeˇren´ı s nastaven´ım pˇreddˇeliˇcky 4 a 8.

• Prov´est rozs´ahlejˇs´ı mˇeˇren´ı za r˚uzn´ych provozn´ıch podm´ınek, napˇr. rozd´ıl- n´e teploty, zdroje nap´ajen´ı.

• Spustit implementaci TRNG na v´ıce fyzick´ych mikrokontrol´erech stej- n´eho typu a porovnat statistick´e v´ysledky jednotliv´ych zaˇr´ızen´ı.

• Prov´est mˇeˇren´ı s pouˇzit´ım LSI oscil´atoru (intern´ı RC oscil´ator) a v´ysledky porovnat.

(48)
(49)

Literatura

[1] Herrero-Collantes, M.; Garcia-Escartin, J. C.: Quantum Random Num- ber Generators, ˇr´ıjen 2016, [cit. 2018-04-25]. Dostupn´e z: https://

arxiv.org/pdf/1604.03304.pdf

[2] Menezes, A. J.; van Oorschot, P. C.; Vanstone, S. A.:Handbook of Applied Cryptography. CRC Press, Boca Raton, 1997, [cit. 2018-04-27].

[3] Schindler, W.: Random Number generators for cryptographic applicati- ons. Cryptographic Engineering, Springer-Verlag, 2009, ISBN 978-0-387- 71816-3.

[4] Boyar, J.: Inferring Sequences Produced by Pseudo-Random Num- ber Generators. Journal of the Association for Computing Machinery, Vol. 36, No. 1, leden 1989, [cit. 2018-04-29]. Dostupn´e z: http://

asterix.cs.gsu.edu/crypto/p129-boyar.pdf

[5] Massey, J. L.:Shift-Register Synthesis and BCH Decoding, leden 1969: s.

122–127.

[6] Hlav´aˇc, J.; Kod´ytek, F.: Random Number Generators. Pˇredn´aˇska z pˇredmˇetu Hardwarov´a bezpeˇcnost. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze, Fakulta informaˇcn´ıch technologi´ı, 2017.

[7] Sunar, B.: True Random Number Generators for Cryptography. Cryp- tographic Engineering, Springer-Verlag, 2009, ISBN 978-0-387-71816-3, 55-73 s.

[8] Random.org:True Random Number Service. Dostupn´e z:www.random.org [9] Marsaglia, G.:The Marsaglia Random Number CDROM, with The Die- hard Battery of Tests of Randomness. [online] Florida State University, 1995, [cit. 2018-05-06]. Dostupn´e z:www.stat.fsu.edu/pub/diehard/

(50)

Literatura

[10] Rukhin A. et al: A Statistical Test Suite for Random and Pseudoran- dom Number Generators for Cryptographic Applications. National Insti- tute of Standards and Technology, NIST Special Publication 800-22rev1a, Duben 2010, [cit. 2018-05-06]. Dostupn´e z: https://nvlpubs.nist.gov/

nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf

[11] Haddad, P.; Fischer, V.; Bernard, F.; aj.: A Physical Approach for Sto- chastic Modeling of TERO-based TRNG, ˇcerven 2015, [cit. 2018-04-30].

Dostupn´e z:https://eprint.iacr.org/2015/593.pdf

[12] Jun, B.; Kocher, P.: The IntelR Random Number Generator. Technical report, Cyptography Research Inc., San Francisco, 1999.

[13] Fischer, V.; Drutarovsk´y, M.: True Random Number Generator Embed- ded in Reconfigurable Hardware. In Proceedings of the 4th International Workshop on Cryptographic Hardware and Embedded Systems (CHES 2002). Redwood Shores (USA), Springer-Verlag, srpen 2002, ISBN 3-540- 00409-2, 415-430 s.

[14] Hlav´aˇc, J.; Had´aˇcek, M.; L´orencz, R.: True Random Number Generation on an Atmel AVR Microcontroller. Proceedings of 2nd International Con- ference on Computer Engineering and Technology – ICCET 2010, vol. 2, 2010, ISBN 978-1-4244-6347-3, 493-495 s.

[15] Laban, M.; Drutarovsk´y, M.: Low Cost ARM Cortex-M0 based TRNG for IOT Applications, 2014, ISSN 1335-8243.

[16] STMicroelectronics: STMF030x8 Datasheet. [cit. 2018-05-06]. Dostupn´e z: http://www.st.com/resource/en/datasheet/stm32f030r8.pdf [17] STMicroelectronics:Description of STM32F0 HAL and low layer drivers.

[online], [cit. 2018-05-09]. Dostupn´e z: www.st.com/resource/en/user_

manual/dm00122015.pdf

34

(51)

Pˇ r´ ıloha A

ystupy NIST STS

Na n´asleduj´ıc´ıch str´ank´ach pˇrikl´ad´ame v´ystupy statistick´ych test˚u NIST pro mˇeˇren´ı 1.

Mˇeˇren´ı 1 - bit 0

Vˇsechny testy ´uspˇeˇsnˇe proˇsly.

--- RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES ---

generator is <Onyx-INT1aa_bit-0>

--- P-VALUE PROPORTION STATISTICAL TEST ---

0.514124 791/800 Frequency 0.749884 790/800 BlockFrequency 0.892399 790/800 CumulativeSums 0.757297 794/800 CumulativeSums 0.446556 797/800 Runs

0.857592 793/800 LongestRun 0.952387 797/800 Rank

0.024981 792/800 FFT

0.275709 792/800 NonOverlappingTemplate 0.257329 791/800 NonOverlappingTemplate 0.504219 796/800 NonOverlappingTemplate 0.694171 795/800 NonOverlappingTemplate 0.477392 792/800 NonOverlappingTemplate 0.644928 792/800 NonOverlappingTemplate 0.582629 795/800 NonOverlappingTemplate 0.322901 794/800 NonOverlappingTemplate 0.562080 795/800 NonOverlappingTemplate

(52)

A. V´ystupy NIST STS

0.717205 792/800 NonOverlappingTemplate 0.524101 789/800 NonOverlappingTemplate 0.453583 784/800 NonOverlappingTemplate 0.914672 795/800 NonOverlappingTemplate 0.482223 791/800 NonOverlappingTemplate 0.670915 793/800 NonOverlappingTemplate 0.951205 792/800 NonOverlappingTemplate 0.969946 797/800 NonOverlappingTemplate 0.293235 788/800 NonOverlappingTemplate 0.375313 791/800 NonOverlappingTemplate 0.230755 791/800 NonOverlappingTemplate 0.340461 794/800 NonOverlappingTemplate 0.865697 794/800 NonOverlappingTemplate 0.582629 789/800 NonOverlappingTemplate 0.739918 792/800 NonOverlappingTemplate 0.941144 793/800 NonOverlappingTemplate 0.881284 789/800 NonOverlappingTemplate 0.921005 789/800 NonOverlappingTemplate 0.499295 794/800 NonOverlappingTemplate 0.273999 791/800 NonOverlappingTemplate 0.330628 791/800 NonOverlappingTemplate 0.714660 797/800 NonOverlappingTemplate 0.960198 791/800 NonOverlappingTemplate 0.587791 788/800 NonOverlappingTemplate 0.150552 789/800 NonOverlappingTemplate 0.704442 791/800 NonOverlappingTemplate 0.242986 793/800 NonOverlappingTemplate 0.083654 787/800 NonOverlappingTemplate 0.524101 794/800 NonOverlappingTemplate 0.539193 790/800 NonOverlappingTemplate 0.354548 792/800 NonOverlappingTemplate 0.379555 793/800 NonOverlappingTemplate 0.618905 788/800 NonOverlappingTemplate 0.709558 792/800 NonOverlappingTemplate 0.678686 792/800 NonOverlappingTemplate 0.899521 793/800 NonOverlappingTemplate 0.759756 790/800 NonOverlappingTemplate 0.247698 794/800 NonOverlappingTemplate 0.204985 790/800 NonOverlappingTemplate 0.362765 794/800 NonOverlappingTemplate 0.057601 793/800 NonOverlappingTemplate 0.119682 790/800 NonOverlappingTemplate 0.489508 793/800 NonOverlappingTemplate 0.151616 794/800 NonOverlappingTemplate 36

(53)

0.221898 790/800 NonOverlappingTemplate 0.531629 797/800 NonOverlappingTemplate 0.448892 784/800 NonOverlappingTemplate 0.403403 798/800 NonOverlappingTemplate 0.719747 791/800 NonOverlappingTemplate 0.320988 792/800 NonOverlappingTemplate 0.747401 791/800 NonOverlappingTemplate 0.961247 789/800 NonOverlappingTemplate 0.031323 789/800 NonOverlappingTemplate 0.696743 792/800 NonOverlappingTemplate 0.676097 794/800 NonOverlappingTemplate 0.811993 793/800 NonOverlappingTemplate 0.344448 790/800 NonOverlappingTemplate 0.309677 794/800 NonOverlappingTemplate 0.373203 792/800 NonOverlappingTemplate 0.825505 792/800 NonOverlappingTemplate 0.781584 793/800 NonOverlappingTemplate 0.300464 784/800 NonOverlappingTemplate 0.250878 794/800 NonOverlappingTemplate 0.696743 790/800 NonOverlappingTemplate 0.696743 786/800 NonOverlappingTemplate 0.304126 792/800 NonOverlappingTemplate 0.016573 793/800 NonOverlappingTemplate 0.701879 792/800 NonOverlappingTemplate 0.762209 785/800 NonOverlappingTemplate 0.881284 792/800 NonOverlappingTemplate 0.749884 793/800 NonOverlappingTemplate 0.556970 791/800 NonOverlappingTemplate 0.631914 796/800 NonOverlappingTemplate 0.798139 793/800 NonOverlappingTemplate 0.701879 792/800 NonOverlappingTemplate 0.932904 792/800 NonOverlappingTemplate 0.869673 793/800 NonOverlappingTemplate 0.214722 794/800 NonOverlappingTemplate 0.699313 793/800 NonOverlappingTemplate 0.973388 799/800 NonOverlappingTemplate 0.090252 792/800 NonOverlappingTemplate 0.988867 790/800 NonOverlappingTemplate 0.769527 790/800 NonOverlappingTemplate 0.964295 790/800 NonOverlappingTemplate 0.244549 793/800 NonOverlappingTemplate 0.877468 791/800 NonOverlappingTemplate 0.304126 794/800 NonOverlappingTemplate 0.401199 796/800 NonOverlappingTemplate

(54)

A. V´ystupy NIST STS

0.932904 791/800 NonOverlappingTemplate 0.516611 794/800 NonOverlappingTemplate 0.840797 791/800 NonOverlappingTemplate 0.482223 794/800 NonOverlappingTemplate 0.233767 794/800 NonOverlappingTemplate 0.135331 792/800 NonOverlappingTemplate 0.531629 793/800 NonOverlappingTemplate 0.987896 796/800 NonOverlappingTemplate 0.951205 794/800 NonOverlappingTemplate 0.734904 792/800 NonOverlappingTemplate 0.143279 796/800 NonOverlappingTemplate 0.629311 794/800 NonOverlappingTemplate 0.626709 789/800 NonOverlappingTemplate 0.394631 791/800 NonOverlappingTemplate 0.895989 794/800 NonOverlappingTemplate 0.300464 792/800 NonOverlappingTemplate 0.529115 795/800 NonOverlappingTemplate 0.639722 789/800 NonOverlappingTemplate 0.244549 791/800 NonOverlappingTemplate 0.428095 796/800 NonOverlappingTemplate 0.356591 791/800 NonOverlappingTemplate 0.724817 785/800 NonOverlappingTemplate 0.521600 794/800 NonOverlappingTemplate 0.315297 793/800 NonOverlappingTemplate 0.694171 794/800 NonOverlappingTemplate 0.088226 794/800 NonOverlappingTemplate 0.340461 791/800 NonOverlappingTemplate 0.021999 795/800 NonOverlappingTemplate 0.946308 787/800 NonOverlappingTemplate 0.164882 795/800 NonOverlappingTemplate 0.534146 788/800 NonOverlappingTemplate 0.642325 787/800 NonOverlappingTemplate 0.127762 794/800 NonOverlappingTemplate 0.514124 790/800 NonOverlappingTemplate 0.836482 788/800 NonOverlappingTemplate 0.153763 788/800 NonOverlappingTemplate 0.514124 793/800 NonOverlappingTemplate 0.311542 792/800 NonOverlappingTemplate 0.410055 794/800 NonOverlappingTemplate 0.598138 793/800 NonOverlappingTemplate 0.897763 793/800 NonOverlappingTemplate 0.786355 797/800 NonOverlappingTemplate 0.802793 791/800 NonOverlappingTemplate 0.467799 788/800 NonOverlappingTemplate 38

(55)

0.840797 793/800 NonOverlappingTemplate 0.430380 793/800 NonOverlappingTemplate 0.159242 793/800 NonOverlappingTemplate 0.595549 789/800 NonOverlappingTemplate 0.727346 791/800 NonOverlappingTemplate 0.871642 789/800 NonOverlappingTemplate 0.639722 786/800 NonOverlappingTemplate 0.061356 794/800 OverlappingTemplate 0.375313 787/800 Universal

0.039137 788/800 ApproximateEntropy 0.093664 502/514 RandomExcursions 0.996265 510/514 RandomExcursions 0.192093 511/514 RandomExcursions 0.192093 510/514 RandomExcursions 0.985481 507/514 RandomExcursions 0.610599 508/514 RandomExcursions 0.238734 504/514 RandomExcursions 0.751633 510/514 RandomExcursions

0.900788 510/514 RandomExcursionsVariant 0.984580 509/514 RandomExcursionsVariant 0.963513 504/514 RandomExcursionsVariant 0.639161 503/514 RandomExcursionsVariant 0.683958 506/514 RandomExcursionsVariant 0.263807 511/514 RandomExcursionsVariant 0.154782 510/514 RandomExcursionsVariant 0.836014 509/514 RandomExcursionsVariant 0.626913 511/514 RandomExcursionsVariant 0.226901 508/514 RandomExcursionsVariant 0.941662 514/514 RandomExcursionsVariant 0.424702 512/514 RandomExcursionsVariant 0.176373 511/514 RandomExcursionsVariant 0.379806 512/514 RandomExcursionsVariant 0.461129 512/514 RandomExcursionsVariant 0.986346 512/514 RandomExcursionsVariant 0.101691 512/514 RandomExcursionsVariant 0.916498 510/514 RandomExcursionsVariant 0.375313 789/800 Serial

0.849289 793/800 Serial

0.742418 798/800 LinearComplexity

- - - -

The minimum pass rate for each statistical test with the exception of the random excursion (variant) test is approximately = 783 for a

Odkazy

Související dokumenty

Napˇ r´ ıklad je moˇ zn´e se zamyslet nad ot´azkou, kter´a ze vstupuj´ ıc´ ıch mˇ e ˇ ren´ ych veliˇ cin se pod´ ıl´ ı na v´ ysledn´e nejistot ˇ e nejv´ ıce.. To

Pouˇ zit´ı n´ ahodn´ eho hesla pˇri ˇsifrov´ an´ı SSL pˇrenosu (zde mus´ı b´ yt heslo skuteˇ cnˇ e n´ ahodn´ e, jinak by mohlo b´ yt uhodnuto!). Reˇsen´ı koliz´ı

C´ılem bakal´aˇrsk´e pr´ace je n´avrh elektroniky rozhran´ı modulu iNemo M1, kter´e umoˇzn´ı pˇrenos zmˇeˇren´ ych dat do poˇc´ıtaˇce pomoc´ı vhodn´e

Napˇ r´ıklad by bylo vhodn´ e rozˇ s´ıˇ rit knihovnu o dalˇ s´ı form´ aty ukl´ ad´ an´ı ˇ r´ıdk´ ych matic, pˇ ridat dalˇ s´ı funkcionalitu pr´ ace s ˇ r´ıdk´

Je tˇ eˇ zk´ e urˇ cit, kter´ a ˇ c´ ast cviˇ cen´ı je nejn´ aroˇ cnˇ ejˇs´ı, protoˇ ze do hry vstupuje i pr´ ace pseudopilot˚ u, kteˇr´ı, vzhledem k enormn´ı

Vzhledem k niˇ zˇ s´ım pˇ renosov´ ym rychlostem, kter´ ych je moˇ zn´ e s pomoc´ı Bluetooth rozhran´ı dos´ ahnout, bylo jiˇ z od poˇ c´ atku zam´ yˇ sleno, ˇ

Pˇ restoˇ ze jsem mˇ el v praxi moˇ znost otestovat pouze druhou komponentu, mus´ım konstatovat, ˇ ze zad´ an´ı bakal´ aˇ rsk´ e pr´ ace se podaˇ rilo splnit a v´ ysledn´

C´ılem pˇ redloˇ zen´ e pr´ ace je n´ avrh a implementace vizualizaˇ cn´ı metody, kter´ a kombinuje obraz z barevn´ e a term´ aln´ı kamery.. Pˇ redpokl´ ad´ a se, ˇ