Asymmetrische cryptografie, een onevenredige last voor de CPU


Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Author:

Reading time: 5 minutes

Asymmetrische of publieke-sleutelcryptografie kan een zware wissel trekken op de processor, zowel op het vlak van berekeningen als qua geheugenverkeer. Barco Silex legt uit hoe zijn hardwareversneller efficiënt met dit soort beperkingen kan omgaan.

Dagelijks wisselen miljarden computers immense hoeveelheden data uit. Servers verspreiden grote hoeveelheden informatie over het internet. Het versleutelen van gegevens in draadloze communicatie is een prioriteit geworden. Beveiligde communicatie is bijvoorbeeld van fundamenteel belang voor online bankieren en elektronisch winkelen.

De technologie die nodig is om een communicatiekanaal te beveiligen, is welbekend. Nochtans zijn veel kanalen die kritische informatie transporteren nog steeds niet correct beveiligd. Een belangrijke reden hiervoor is dat de cryptografische algoritmes voor de beveiligingsprotocollen zeer rekenintensief zijn, met name bij asymmetrische encryptie. Bij deze vorm van cryptografie is het niet nodig dat beide partijen van tevoren over dezelfde sleutel beschikken. Indien Bob een boodschap naar Alice wil zenden, kan hij haar publieke sleutel gebruiken om de boodschap te versleutelen. Aangezien zij de enige is met toegang tot haar geheime sleutel, kan alleen zij de boodschap decoderen. Dit wordt ook wel publieke-sleutelcryptografie genoemd.

Publieke-sleutelcryptografie wordt veel gebruikt in beveiligingsstandaarden. Er bestaan bijvoorbeeld verscheidene algoritmes om met deze methode een geheime sleutel uit te wisselen waarmee via symmetrische encryptie een beveiligd kanaal kan worden gemaakt op een onbeveiligd en open netwerk zoals internet. Publieke-sleutelcryptografie wordt ook vaak toegepast bij authenticatie door de digitale handtekening onder documenten te verifiëren.

Bij publieke-sleutelcryptografie hoeven Alice en Bob geen geheime sleutel te delen. Alice publiceert simpelweg een publieke sleutel, die iedereen mag weten. Hiermee kan Bob een boodschap versleutelen. Om dit bericht te ontcijferen, is een bijbehorende private sleutel nodig, die Alice dan ook geheimhoudt. Een tweede gebruik van publieke-sleutelcryptografie is authenticatie. Indien Alice een boodschap tekent met haar private sleutel, kan Bob authenticeren dat deze boodschap van Alice moet komen, met behulp van haar publieke sleutel.

terke encryptie

Publieke-sleutelcryptografie is een zeer rekenintensief deel van de beveiligingsprotocollen. Ze omvat onder meer de RSA- en ECC-algoritmes voor respectievelijk modulaire machtsverheffingen op 1024, 2048 en 4096 bit getallen en elliptische-curvecryptografie. Dit soort berekeningen brengt een grote overhead voor de processor met zich mee met een significante impact op de systeemprestaties. Een RSA-operatie van 2048 bit bestaat bijvoorbeeld uit meer dan twintig miljoen 32 bij 32 bit modulaire vermenigvuldigingen (zie kader).

Al deze operaties op grote getallen duren duizenden klokcycli en vereisen een grote bandbreedte naar het geheugen. Processoren en andere algemene hardwareoplossingen kunnen dit soort wiskundige bewerkingen vaak alleen op kleine getallen uitvoeren. De belasting van publieke-sleutelcryptografie kunnen ze daardoor doorgaans niet efficiënt afhandelen.

Zolang het om kleine hoeveelheden data gaat die versleuteld moeten worden, is sterke encryptie en decryptie op een embedded processor altijd mogelijk. Maar als de doorvoer wordt opgeschroefd, wordt de overhead een aanzienlijk probleem voor de standaard embedded processor in een systeemchip. Zeker als er al een embedded besturingssysteem draait of andere applicaties actief zijn op deze processor.

Barco Silex‘ Smart Engine bestaat uit een hardwareverwerkingseenheid en een sequencer die met microcode kan worden aangestuurd. De sequencer kan zo worden ingericht dat hij hoogniveau-instructies aankan.

Een mogelijke oplossing is natuurlijk om een snellere processor te gebruiken.  De consequenties zijn alom bekend: een hogere klokfrequentie betekent een ingewikkelder design en een hoger energieverbruik, met een negatieve impact op de kosten van het systeem. Het bijschakelen van een tweede processor om de cryptografiesoftware te draaien, kent vergelijkbare nadelen.

Het is dus geen verrassing dat de vraag naar hardwareoplossingen groeit om aan de benodigde prestatie-eisen te kunnen voldoen. Hardwareversnellers zijn bovendien van essentieel belang indien de sleutel groter wordt of om de CPU te ontlasten.

Pijplijnen

De aanwezigheid van een hardwareversneller verbetert echter niet automatisch de prestaties van een embedded systeem. In publieke-sleutelcryptografie worden alle operaties op grote getallen opgedeeld in elementaire operaties op kleinere getallen. Dit betekent dat er veel datatransfers nodig zijn tussen de versneller en het geheugen. Indien de hardwareversneller de data niet zelf kan lezen en terugschrijven, moet de embedded processor nog steeds de transfers voor zijn rekening nemen. Het gevolg is een constante werklast, zelfs met behulp van extern DMA. Bovendien is de gedeelde databus continu in gebruik.

Om toch de benodigde prestaties te behalen, kunnen de wiskundige hoogniveaubewerkingen met een lokaal geheugen worden vastgelegd in de hardware. Dit heeft echter weer een ander nadeel. Deze taken kunnen worden gezien als complexe eindige automaten met een aantal vaste toestanden. Als ze in hardware worden gegoten, liggen de toestandstransitiediagrammen vast, wat betekent dat ze niet flexibel zijn.

Met deze bezwaren in het achterhoofd hebben we bij Barco Silex de Smart Engine ontwikkeld. Deze bestaat uit twee delen: een hardwareverwerkingseenheid en een microcoded sequencer. De eerste bestaat uit een geoptimaliseerd datapad opgebouwd met een groot aantal pijplijnen voor optellen, aftrekken en vermenigvuldigen en uit lokale registers met een brede databus (64, 128, 256, 512 bit of zelfs breder). De controle is in handen van de sequencer, die hoogniveau-instructies vertaalt naar de laagniveaubewerkingen waarmee de hardwareverwerkingseenheid werkt.

De BA414E-engine voor publieke-sleutelcryptografie kan complexe algoritmes en geheugentransfers zelf uitvoeren en ontlast daarmee de processor volledig.

Onlangs hebben we voor publieke-sleutelcryptografie een versneller uitgebracht die op deze architectuur is gebaseerd. Deze ontlast de processor volledig en kan een grote verscheidenheid aan bewerkingen in het veld van asymmetrische cryptografie aan, zowel aritmetische bewerkingen op laag niveau (modulair machtsverheffen voor RSA) als complexe operaties op hoog niveau. Complexe algoritmes zijn zo met de microcode te programmeren.

De engine stuurt ook een micro-DMA aan en handelt daarmee alle datatransfers zelfstandig af. Dankzij deze architectuur zijn er geen continue transfers op de hoofdbus of naar een extern geheugen nodig. Naast een lagere systeembelasting geeft dit een lager energieverbruik.

Deze aanpak heeft nog een aantal andere voordelen. De microcode is in de hardware aan te passen, zodat eventuele bugs later nog kunnen worden opgelost en toevoeging van functionaliteit mogelijk is. Ook kan de engine voor hetzelfde geld de pre- en postprocessing voor zijn rekening nemen. Dit maakt de complexe bewerkingen van publieke-sleutelalgoritmes transparant voor de gebruiker. De hoofdprocessor hoeft enkel de data klaar te zetten en te wachten op een interrupt die aangeeft dat het resultaat beschikbaar is.

Doordat de engine zijn eigen transfers verzorgt, hoeft hij niet te wachten op data als de bus door andere toepassingen wordt belast. Gegevens vloeien continu en de engine kan op volle snelheid blijven werken: tot vijfduizend bewerkingen per seconde voor 1024 bit RSA in een standaard 90-nm-technologie.