**Riistvaraline krüpteering** (inglise *hardware-based encryption*) on riistvaraline seade ja/või moodul, mis on ette nähtud tarkvaralise krüpteeringu lihtsustamiseks või täielikuks asendamiseks.

Üldjuhul tehakse krüpteering protsessori käsustikus. Näiteks täiustatud krüpteerimisstandardit (moodne šiffer) on võimalik rakendada üldlevinud x86 ning ka ARM-arhitektuuris. Vähem levinud riistvaraline krüptograafiamoodul on eraldiseisev protsessor keskprotsessorist, mis on disainitud kiiresti ja turvaliselt tegema krüptograafilisi arvutusi. Näiteks IBM 4758 ja tema edasiarendused IBM 4764 ning IBM 4768.

Riistvaraliselt optimeeritud turvamoodulid võivad olla oma spetsiifilistes arvutustes kiiremad kui üldlevinud protsessorite käsustikud ning neid on teoreetiliselt keerulisem rünnata kui tarkvaraliselt rakendatud krüpteeringut.

Kasutuskohti
------------

### Käsustikes

#### x86

 *Pikemalt artiklis täiustatud krüpteerimisstandard*
CISC arhitektuurina leidub x86 arhitektuuris riistvaralisel tasemel keerukaid algoritme, sealhulgas ka krüptograafilisi. Lisaks täiustatud krüpteerimisstandardi funktsioonidele toetab x86 arhitektuur ka SHA räsifunktsioone, mida kasutatakse näiteks paroolide turvalisel talletamisel.

**AES-NI** (inglise keeles *Advanced Encryption Standard New Instructions*) on x86 käsustik Inteli ja AMD keskseadmetele. Tehnoloogia sai alguse Inteli eestvedamisel 2008. aasta märtsis.

| Masinkäsk | Kirjeldus |
| --- | --- |
| `AESENC` | Tee üks AES krüpteerimisetapp |
| `AESENCLAST` | Tee viimane AES krüpteerimisetapp |
| `AESDEC` | Tee üks AES dekrüpteerimisetapp |
| `AESDECLAST` | Tee viimane AES dekrüpteerimisetapp |
| `AESKEYGENASSIST` | Abista AES vooruvõtme lisamisel |
| `AESIMC` | Abista AES veergude segamisel |
| `PCLMULQDQ` | ülekandeta korrutamine (CLMUL) |

#### ARM

ARM-protsessorid on arhitektuuriliselt RISC-protsessorid seega on nende käsustikku kärbitud. Sellegipoolest võib ARM arhitektuur omada laiendusi, mis toetavad krüptograafilisi arvutusi.

**ARMv8-A käsustikus**

Valikuliselt võivad ARM Cortex-A30/50/70 keskprotsessorid toetada AES käsustikke. Selle keskseadme generatsiooni kuulub näiteks alates mudel B versioon 1.2 Raspberry Pi väikeraalid, aga ka paljud Android operatsioonisüsteemi kasutavad nutitelefonid.

| Masinkäsk | Kirjeldus |
| --- | --- |
| `AESE` | Tee üks AES krüpteerimisetapp |
| `AESD` | Tee üks AES dekrüpteerimisetapp |
| `AESIMC` | AES veergude pöördsegamine |
| `AESMC` | AES veergude segamine |
| `VMULL` | Pikk vektorkorrutis |

### Eraldi turvamoodulina

 *Pikemalt artiklis riistvaraline turvamoodul*
Olenevalt nõudlusest võivad spetsiifiliste infoturbealaste funktsioonidega raalid vajada eraldiseisvat riistvaralist turvamoodulit, et vabastada keskprotsessorit, mis ei ole optimeeritud puhtalt täiustatud krüpteerimisstandardite etappide täitmiseks. 

* IBM 4758 – IBM 4764 eelkäija. Moodulis on protsessor, mälu ja riistvaraline juhuarvugeneraator.
* IBM 4764 ja IBM 4765, erinevad ainult arvutisiini tüübilt. IBM 4764 kasutab PCI-X arvutisiini, IBM 4765 kasutab PCIe arvutisiini..
* IBM 4768 on viimane väljalase IBMi turvamoodulitest. Töötab PCIe andmesiini kaudu ning moodul ise kannab nime PCIeCC3 (inglise keeles IBM PCIe Crypto Card V3')

Eelised
-------

Viies krüptograafiline arvutusvajadus riistvaralisele tasemele vabastab see protsessorit tegema oma tavapärast tööd, kuna osa protsessorist on disainitud tegelemaks krüpteerimisalaste arvutustega. Seega teeb see protsessorid kasutajale kiiremaks. Protsessorid, mis toetavad toru, suudavad sageli krüpteerimisoperatsioone teha samaaegselt teiste käskude täitmisega.
On olemas ka tehnoloogiaid, mis suudavad kaitsta andmeid ka operatsioonisüsteemi enda eest. See tähendab, et isegi juhul kui operatsioonisüsteem on kompromiteeritud, siis andmed võivad olla jätkuvalt kaitstud. Kõnealune tehnoloogia on tuntud nimega Intel SGX (inglise keeles **Software Guard Extensions**)

Puudused
--------

Kui näiteks tarkvaralisel tasemel leitakse krüptograafias turbealane viga, siis üldjuhul on võimalik see paigata läbi tarkvarauuenduse. Kui aga peaks juhtuma, et leitakse viga riistvaralisel tasemel, siis selle parandamine on sageli väga vaevaline, kuna probleem on juba füüsiline mitte loogiline. Sellise vea korral on oht, et ainuke abinõu on kas riistvara väljavahetamine või terve kõnealuse riistvaralise funktsiooni väljalülitamine operatsioonisüsteemi tasemel.

Vaata ka
--------

* täiustatud krüpteerimisstandard

Viited
------

1. ↑  *Intel® 64 and IA-32 Architectures Software Developer’s Manual* (PDF). Intel. Detsember 2017. Lk-d 303–309, 410.
2. 1 2  *ARM® Cortex®-A57 MPCore Processor Cryptography Extension* (PDF). ARM Holdings. 17. detsember 2017. Originaali arhiivikoopia (PDF) seisuga 13.12.2016.
3. ↑  "4764 Cryptographic Coprocessor". IBM. Vaadatud 29.04.2019.`{{cite web}}`: CS1 hooldus: url-status (link)
4. ↑  "Intel Software Network". Intel. Originaali arhiivikoopia seisuga 7.04.2008. Vaadatud 5.04.2008.
5. ↑  Shay Gueron (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF). Intel. Vaadatud 20.09.2012.
6. ↑  "Carry-Less Multiplication". Intel.
7. ↑  "Cryptographic Hardware Accelerators". OpenWRT.org. 17. mai 2016. Originaali arhiivikoopia seisuga 21.01.2018. Vaadatud 25.01.2018.
8. ↑  "ARM Cortex-A57 MPCore Processor Cryptography Extension Technical Reference Manual". ARM Holdings. 2013. Vaadatud 28.04.2019.
9. ↑  "ARM® Compiler armasm User Guide". ARM Holdings. 2010. Vaadatud 28.04.2019.
10. 1 2  "IBM 4765 Cryptographic Coprocessor Security Module" (PDF). National Institute of Standards and Technology. 10. detsember 2012. Originaali arhiivikoopia (PDF) seisuga 25.01.2018. Vaadatud 20.01.2018.
11. ↑  "IBM 4758 Models 2 and 23 PCI Cryptographic Coprocessor" (PDF). IBM. Mai 2004. Vaadatud 24.01.2018.[*alaline kõdulink*]
12. ↑  "4764 Cryptographic Coprocessor". IBM. Originaali arhiivikoopia seisuga 21.01.2018. Vaadatud 20.01.2018.
13. ↑   PCIe Crypto Card V3 (PCIeCC3)|publisher=IBM|date=20. märts 2018|accessdate=29.04.2019}}
14. ↑  P. Schmid and A. Roos (2010). "AES-NI Performance Analyzed". Tom's Hardware. Vaadatud 20.01.2018.
15. ↑  "Intel SGX for Dummies (Intel SGX Design Objectives)". *intel.com*. 26. september 2013. Originaali arhiivikoopia seisuga 29.04.2014.