Random numbers are required in multiple applications. One of the most critical applications today is cryptography, which is critically dependent on uncorrelated, unpredictable and high-quality random numbers. Random numbers can be generated in software, but they are deterministic and create vulnerabilities in cybersecurity applications. True random number generators (TRNG) must be used to provide cryptographically secure random numbers. A TRNG harvests entropy from a hardware component, and outputs nondeterministic entropic random data. One practical way of implementing a TRNG is to use field-programmable gate array (FPGA) as a platform.
To be able to use a TRNG in a critical application, the robustness of the TRNG needs to be quantified. Similar verifications have been conducted previously, but every TRNG design needs to be verified independently. Previously used verification methods are reviewed, and similar studies are examined. Four mainstream FPGA development boards were selected for testing, based on the conducted FPGA market research. In addition to creating a design for transferring the data produced by a random process, a set of guidelines were defined for testing. The design created as part of the thesis transfers the randomly produced data to a workstation where carefully selected statistical test suites analyse the data.
The thesis describes the developed system, which can be used to quantify an FPGA-based TRNG. In addition to FPGA digital design and developed software applications, guidelines for testing were introduced. The designed test platform tests the FPGA device independency, entropy source parameter range, environmental stress tolerance, throughput, FPGA logic stress endurance, and most importantly the quality of randomness of a TRNG design.
Satunnaisluvut ovat erittäin tärkeitä tietotekniikassa. Erityisesti tiedon salauksessa ja suojauksessa, eli kryptografian sovellukset ovat riippuvaisia laadukkaista satunnaisluvuista. Satunnaisuutta voidaan tuottaa ohjelmistollisesti, mutta näin luodut satunnaisluvut ovat vain näennäisesti satunnaisia. Täysin ennustamattomia, toisistaan riippumattomia ja manipuloimattomia lukuja voidaan tuottaa siihen erityisesti suunnitellulla elektronisella laitteistolla, jota kutsutaan todelliseksi satunnaislukugeneraattoriksi. Yksi käytännöllisimmistä tavoista toteuttaa kryptografian sovelluksia ja todellinen satunnaislukugeneraattori on ohjelmoitava mikropiiri (FPGA).
Kriittisissä kryptografian sovelluksissa käytettävät satunnaislukugeneraattorit pitää testata varmasti toimiviksi kaikissa käyttöolosuhteissa. Satunnaislukugeneraattorin toiminnan voi varmistaa tilastollisilla testeillä, jotka ajetaan generaattorin tuottamalle satunnaisuudelle. Diplomityö käsittelee FPGA-pohjaisen todellisen satunnaislukugeneraattorin testaamista. Työssä suunnitellaan ja kehitetään testaamiseen tarkoitettu testausjärjestelmä, -suunnitelma ja -ohjeistus. Työn aikana suoritettava kirjallisuuskatsaus vastaaviin tutkimuksiin paljastaa niin parhaat kuin puutteellisetkin käytännöt ja testauksessa käytettävät tilastolliset testit. Toteutettavan testausjärjestelmän laitteistokuvaus on yleiskäyttöinen ja tukee eri FPGA kehitysalustoja. Todellisen satunnaislukugeneraattorin laitteistoriippumattomuus varmistetaan käyttämällä neljän eri valmistajan FPGA kehityskortteja, jotka valitaan työssä suoritettavan teknologia- ja markkina-analyysin pohjalta.
Työn aikana kehitettyä testausjärjestelmää ja -ohjeistusta käytetään tietyn FPGA-pohjaisen todellisen satunnaislukugeneraattorin luotettavuuden määrittelemiseen. Työssä kehitetyllä testausjärjestelmällä voidaan varmentaa satunnaislukugeneraattorin tärkeät ominaisuudet, joihin sisältyvät mm. laitteistoriippumattomuus, todellisen satunnaislukugeneraattorin parametrien arvot, toiminta äärilämpötiloissa ja eri kuormituksilla.