Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Zanimljiv
  • Intel AES-NI što je to u biosu? Korištenje novih Intel® AES uputa za šifriranje u Androidu.

Intel AES-NI što je to u biosu? Korištenje novih Intel® AES uputa za šifriranje u Androidu.

Prevođenje... Prevedi kineski (pojednostavljeni) kineski (tradicionalni) engleski francuski njemački talijanski portugalski ruski španjolski turski

Nažalost, trenutno ne možemo prevesti ove informacije - pokušajte ponovo kasnije.

Uvod

Ovaj članak opisuje podršku za nove upute za Intel® AES enkripciju (Intel® AES-NI) u Androidu: što je to, kako ga koristiti i kako mjeriti performanse. Također opisuje model upotrebe i primjere u kombinaciji s dva scenarija enkripcije koji pokazuju korištenje Intel AES-NI instrukcija. Iskusni programeri mogu preskočiti prva četiri dijela ovog članka i skočiti ravno na zadnji dio kako bi se upoznali sa slučajevima korištenja. Manje iskusni programeri vjerojatno bi trebali pročitati cijeli članak.

Nove upute za AES šifriranje (Intel AES-NI)

Intel AES-NI upute predstavljene su u ožujku 2008. kao proširenje skupa instrukcija arhitekture x86 za Intel i AMD mikroprocesore. Svrha ovog skupa instrukcija je povećati brzinu aplikacija koje izvode AES enkripciju i dešifriranje.

Upute za Intel AES-NI navedene su u tablici 1.

Stol 1. Intel® AES-NI upute

Provjera podrške za Intel AES-NI u Androidu

Možete provjeriti podržava li Intel AES-NI određena platforma koja koristi CPUID; provjeri vrijednost CPUID.01H:ECX.AESNI = 1. Također možete koristiti funkciju provjeriti_za_aes_upute iz biblioteke uzoraka Intel AES-NI.

Korištenje Intel AES-NI u Androidu

Postoji mnogo načina za korištenje Intel AES-NI u Androidu:

  • napisati C/C++ kod i izravno koristiti asemblerski kod
  • koristiti postojeću biblioteku treće strane kao što je OpenSSL*
  • koristite Java* Crypto API iz Android Kitkata

Za kompilaciju izvorne biblioteke/aplikacije za x86 na Android OS-u, morate pripremiti samostalni alatni lanac s naredbom izraditi-samostalni-lanac alata.sh u Android NDK:

$NDK_PATH/build/tools/make-standalone-toolchain.sh --install-dir=$STANDALONE_TOOCHAIN_PATH --toolchain=x86-4.8 --platform=android-14 --ndk-dir=$NDK_PATH export PATH=$PATH: $STANDALONE_TOOCHAIN_PATH

Korištenje biblioteke asemblera

Knjižnica je u mapi intel_aes_lib. Također se može preuzeti na . Koristite GCC verziju 4.4 ili noviju, tj. NDK verzija mora biti novija od NDK v3. (Ovdje koristimo android-ndk-r9 za testiranje.)

makefile/ljuska ne postoji skripta za izgradnju verzija za Android. Za kompajliranje možete promijeniti datoteku mk_lnx86.sh. Glavna promjena je korištenje $STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc umjesto zadanog GCC-a. Također biste trebali koristiti opcije proći –D__ANDROID__.

Izvoz CC=”$STANDALONE_TOOLCHAIN_PATH/bin/i686-linux-android-gcc –D__ANDROID__ --sysroot=$STANDALONE_TOOLCHAIN_PATH/sysroot -I$STANDALONE_TOOLCHAIN_PATH/sysroot/include”

Nakon kompilacije, možete prenijeti binarnu izvršnu datoteku na Android i testirati je. Također možete koristiti izvorni kod izravno u svojim aplikacijama ili koristiti generiranu binarnu biblioteku u NDK-u.

Korištenje OpenSSL-a

Na primjer, mnoge knjižnice koriste Intel AES-NI upute crypto++ polarni SSL IPP OpenSSL i drugi. (Koristimo OpenSSL kao referenca - Intel AES-NI upute podržane u OpenSSL-u od eksperimentalne verzije 1.0).

Od Androida 4.3, AOSP-ov OpenSSL ima podršku za Intel AES-NI, tako da samo trebate kompajlirati kod sa željenom konfiguracijom. Također ga možete preuzeti sa službene web stranice i sami sastaviti, a zatim koristiti datoteku *.a/*.tako izravno u vašem projektu.

1) Preuzimanje - OpenSSL možete preuzeti s http://www.openssl.org/source/. Trenutno koristi Android 4.2 openssl-1.0.1c i u Androidu 4.4 - openssl-1.0.1e.Morate koristiti istu verziju OpenSSL-a kao ciljni sustav.

(2) Kompilacija - pokrenite sljedeću naredbu u konzoli:

Cd $OPENSSL_SRC_PATH izvoz CC=”$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc –mtune=atome –march=atom –sysroot=$STANDALONE_TOOCHAIN_PATH/sysroot” izvoz AR=and$THOCHAINARi6PANU_i686-linux-android-gcc –march=atom –sysroot=$STANDALONE_TOOCHAIN_PATH/sysroot izvoz RANLIB=$STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-ranlib ./Konfiguriraj android-x86 –DOPENSSL_IA32_SSE2 –DAES_ASM –DVPAES_ASM make

Nakon toga datoteka libcrypto.a pojavit će se u mapi najviše razine. Za korištenje datoteke *.tako Unesi " Konfigurirajte zajednički android-x86 ***”.

(3) Koristite OpenSSL putem NDK u Android projektu: kreirajte android projekt, deklarirajte funkciju povezanu s OPENSSL-om kao zavičajni zatim upotrijebite kod u jni/*.c.

Nakon toga morate kopirati datoteke *.a/*.tako i datoteku zaglavlja projekta.

mkdir jni/pre-kompilirano/ mkdir jni/include cp $OPENSSL_PATH/libcrypto.a jni/pre-kompilirano cp –L -rf $OPENSSL_PATH/include/openssl jni/include

Zatim dodajte sljedeći redak u datoteku jni/Android.mk:

... LOCAL_MODULE:= statički LOCAL_SRC_FILES:= unaprijed kompajlirano/libcrypto.a ... LOCAL_C_INCLUDES:= uključuje LOCAL_STATIC_BIBLARRIES:= statički --lcrypto ...

Zatim možete koristiti funkcije koje se nalaze u OpenSSL-u za implementaciju svojih funkcija šifriranje/dešifriranje/SSL. Za korištenje Intel AES-NI upotrijebite funkciju serije EVP_* kao što je prikazano niže. To će automatski omogućiti Intel AES-NI hardverski modul za AES enkripciju i dešifriranje ako ga CPU podržava.

//declare EVP_CIPHER_CTX en, de; //init EVP_CIPHER_CTX_init(&en); EVP_CIPHER_CTX_init(&de); EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL); //dekriptiraj & encrpyt EVP_DecryptUpdate(&de, plaintext, &bytes_written, ciphertext, len); EVP_EncryptUpdate(&en, ciphertext, &cipher_len, plaintext, len); //očistiti EVP_CIPHER_CTX_cleanup(&en); EVP_CIPHER_CTX_čišćenje(&de);

Zatim koristite ndk-build sastaviti.

ndk-build APP_ABI=x86

(4) Korištenje Java Crypto API-ja: in Android Kitkat OpenSSL pružatelj pod nazivom “ AndroidOpenSSL” podržava Intel AES-NI tako da možete koristiti javax.crypto.cipher direktno.

Šifra šifra = Cipher.getInstance(AES_ALGORITHM, "AndroidOpenSSL"); cipher.init(*);

mjerenje učinkovitosti

mjerenje učinkovitosti

Alati za testiranje

(1) Koristite OPENSSL objekte. Naredba openssl kao dio OpenSSL-a može obavljati mnoge zadatke. Može se koristiti za mjerenje performansi sa openssl brzina. Zadano openssl((kada je izgrađen s AES_ASM) automatski će koristiti Intel AES-NI hardversko ubrzanje. Također možete jednostavno onemogućiti hardversko ubrzanje postavljanjem jedne varijable okruženja: OPENSSL_ia32cap vrijednost ~0x200000200000000

openssl brzina -evp aes-256-cbc OPENSSL_ia32cap=~0x200000200000000 openssl brzina -evp aes-256-cbc

(2) Koristite domaći program.

Slika 1. Testni program koji smo izradili.

(3) Intel® Mobile Platform Monitor (Intel® MPM) je alat za praćenje napajanja za detaljne informacije o CPU/GPU/statusu napajanja itd. Za više informacija pogledajte

Slika 2. Intel® MPM program

zaustavite profiliranje, a zatim spremite podatke o rezultatima. Rezultati se prikazuju kao tekstualni sažetak ili kao grafikon.

(4) Koristite testnu aplikaciju iz biblioteke Intel AES-NI, pogledajte Limenka omogućite ili onemogućite AESNI u BIOS-u u nekim testnim projektima poput aes_gladman_podskup, za prikaz rezultata izvedbe.

Rezultati ispitivanja

Pokrenuli smo [navedite program] na Bay Trail tabletu s Androidom 4.4. Naši rezultati testiranja pokazuju 4x do 11x poboljšanje performansi enkripcije i dešifriranja te preko 40% uštede energije pri korištenju Intel AES-NI.

Detaljni podaci testiranja

Hardver: BAYTRAIL_FFRD8 PR1, OS: ANDROID 4.4
NAČIN RADA
(CBC/256)
veličina datoteke Omogućen je Intel® AES-NI Intel® AES-NI onemogućen
Vrijeme (s) bez I/OVrijeme (s) s I/OVrijeme (s) bez I/OVrijeme (s) s I/O
Šifriranje351M2.89 15.4 14.59 25.61
56M0.48 2.35 2.63 4.55
Dešifriranje351M1.76 38.144 19.78 28.51
56M0.29 1.9 3.16 4.62

    Nema I/O iz gornje tablice

    Enkripcija: do 5X poboljšanje performansi, slično OPENSSL-u
    Dešifriranje: Gotovo 11x poboljšanje performansi

    S I/O iz gornje tablice

    Enkripcija: poboljšanje performansi do 1,9x
    Dešifriranje: gotovo 2X poboljšanje performansi

Scenariji za korištenje Intel AES-NI

AES algoritam se široko koristi u različitim scenarijima zaštite podataka, kao što je šifriranje prijenosa podataka preko mreže, šifriranje cijelih diskova ili pojedinačnih datoteka. U svim ovim scenarijima može se koristiti Intel AES-NI, sve dok CPU podržava potrebne upute. Na sl. Slika 6 prikazuje tipičan mrežni prijenos; svi podaci koji se prenose između korisnika i poslužitelja su šifrirani nakon provjere autentičnosti.

Slika 6 Tipičan mrežni prijenos

Drugi tipični slučaj upotrebe je šifriranje cijelih diskova ili šifriranje pojedinačnih datoteka, pri čemu korisnici trebaju spremati podatke u lokalnu pohranu. Na sl. Slika 7 prikazuje cijeli tijek rada od korisnika do skladišta:

Slika 7 Cijeli tijek rada enkripcije

Intel AES-NI hardverske upute pružaju visoke performanse i uštedu energije, što je posebno važno za mobilne uređaje kao što su pametni telefoni i tableti. Upravljanje mobilnim uređajima (MDM) i upravljanje mobilnim sadržajem (MCM) ključni su čimbenici u sigurnosnim rješenjima poduzeća. Ovaj odjeljak opisuje Intel AES-NI u kombinaciji s MDM i MCM.

Dobar primjer MDM-a je kada administratori šalju poruke ili naredbe krajnjim korisnicima, a svi osjetljivi podaci koji se prenose moraju biti šifrirani. Softversko rješenje AES brzo troši energiju baterije uz česte prijenose podataka, ali Intel AES-NI rješenje koristi hardverska rješenja koja štede energiju i poboljšavaju performanse. Na sl. Slika 8 prikazuje tipičan scenarij u kojem administratori šalju naredbe korisnicima koristeći enkripciju temeljenu na Intel AES-NI. Tijek rada uključuje šifriranje naredbi prije slanja i dešifriranje podataka za izvršavanje naredbi na uređajima krajnjih korisnika.

Slika 8 MDM razmjena podataka korištenjem AES kriptografije

MCM primjer: Korisnici pristupaju osjetljivim podacima kao što su dokumenti, slike, video zapisi itd. s korporativnih poslužitelja. Takvi preneseni podaci trebaju pouzdanu zaštitu. Svi podaci moraju biti šifrirani prije slanja krajnjim korisnicima; Korisnički uređaji također moraju pohranjivati ​​podatke u šifriranom formatu. Na sl. Slika 9 prikazuje tipičan MCM tijek rada od početka do kraja kada krajnji korisnik čita i sprema podatke. Intel AES-NI upute podržavaju 256-bitnu enkripciju, što ga čini izvrsnim hardverskim rješenjem za zahtjeve sigurnosti i privatnosti na razini poduzeća.

Slika 9 MCM tijek rada

Da bi omogućili Intel AES-NI hardversko ubrzanje, programeri moraju koristiti NDK programiranje. Na sl. Slika 10 prikazuje tipične odnose između slojeva aplikacije Android, modula za šifriranje Androida i Intel AES-NI C/C++ modula. Java izvorno sučelje (JNI) koristi se za povezivanje C/C++ funkcija s Java funkcijama. Ako ste novi u NDK programiranju, pogledajte NDK reference za više informacija.

Slika 10. Tipični odnosi između razina

Zaključak

Ovaj članak opisuje kako koristiti Intel AES-NI upute za ubrzanje enkripcije na Android uređajima. Pokazuje kako programeri mogu koristiti asemblerski kod, biblioteke trećih strana i Intel NDK za ubrzavanje aplikacija i uštedu energije. Opisana su dva tipična scenarija šifriranja i dešifriranja podataka kako bi se razvojnim programerima pomoglo da koriste Intel AES-NI u svojim aplikacijama.

Za više informacija o Intel® alatima, Android programeri mogu posjetiti sljedeća web-mjesta: Intel® Developer Zone za Android.

O autorima

Zhang Li je inženjer za razvoj aplikacija u Intel® Software and Solutions Group (SSG) u Odjelu za odnose s razvojnim programerima tima za omogućavanje mobilnih uređaja. On je zadužen za podršku Android aplikacija.

Yanqing Wang je inženjer za razvoj aplikacija u Intel® Software and Solutions Group (SSG) u Odjelu za odnose s razvojnim programerima tima za omogućavanje mobilnih uređaja. Njegove odgovornosti uključuju upravljivost i sigurnost korporativnih rješenja. To je crni pojas Intel® Developer Zone (IDZ).

Referentni materijali

Intel, Intelov logotip, Atom, Celeron, Core, Pentium i Xeon zaštitni su znakovi tvrtke Intel Corporation u SAD-u i/ili drugim zemljama.
*Drugi nazivi i zaštitni znakovi mogu biti vlasništvo trećih strana.
© Intel Corporation 2014. Sva prava pridržana.

Detalji Objavljeno: 25.04.2016 13:10

Sastavili smo Windows binarne datoteke Wolf0-ovog optimiziranog HodlMinera s podrškom za AES-NI skup instrukcija ( izvor). Ovo izdanje rudara je brže od standardnog HodlMinera za procesore s podrškom za AES-NI upute. Imajte na umu da će kompilirani binarni fajlovi dostupni na donjoj poveznici raditi samo na 64-bitnom sustavu Windows i samo na sustavima s AMD i Intel procesorima koji su kompatibilni s AES-NI skupom uputa. Ako vaš CPU ne podržava AES-NI, upotrijebite standardna verzija HodlMinera.

Ako niste sigurni podržava li vaš procesor skup instrukcija AES-NI, to možete jednostavno provjeriti pomoću besplatnog uslužnog programa CPU-Z. Podrška za skup instrukcija AES-NI na Intelovim procesorima počinje s prvim modelima Westmere mikroarhitekture, koji su počeli proizvoditi početkom 2010. godine. Dok je AES-NI podrška za AMD procesore došla s prvim modelima AMD Bulldozer Family 15h, koji su pušteni u prodaju krajem 2011. To znači da ako je vaš procesor pušten nakon 2011., onda najvjerojatnije podržava AES-NI. Imajte na umu da svi proračunski procesori ne podržavaju AES-NI upute. Popis svih Intelovih procesora s podrškom za AES-NI možete pronaći na ovaj link.

Arhiva, koja se može preuzeti s donje poveznice, sadrži razne izvršne datoteke koje su kompajlirane za različite CPU arhitekture s AES-NI podrškom. Trebao bi pronaći .exe datoteku koja odgovara vašem CPU-u i jednostavno je preimenujte u hodlminer.exe. Izvršne datoteke bdver1, bdver2 i bdver3 dizajniran za AMD Bulldozer CPU arhitekture ili kasnije AMD CPU arhitekture. Preostale binarne datoteke dizajnirane su za različite Intelove procesore, počevši od Westmere, onda Sandy Bridge, Ivy Bridge, Haswell i završetak Broadwell. Arhitektura Silvermont za slabe procesore Atom, Celeron, Pentium, koji se koriste u SoC-ovima (Systems on a Chip) i također podržavaju AES-NI.

U suvremenom svijetu šifriranje se koristi gotovo posvuda, kako za zaštitu kritičnih informacija u posebnim područjima (obrambeni sektor, bankarstvo itd.), tako i kao dio kućnih uređaja: računala, pametnih telefona, televizora. Štoviše, opseg kriptografije se svake godine širi, a raste i obujam odaslanih (pohranjenih) šifriranih podataka.

Istodobno, enkripcija podataka značajno povećava računsko opterećenje na uređajima koji je implementiraju, pa ne čudi što se sve više kriptografskih operacija prenosi na hardversku razinu (često u obliku posebnih kriptografskih koprocesora ili kartica za proširenje). . Posljednjih su godina kriptografske upute također postale široko implementirane izravno u glavne procesore velikih marki za korisnička računala i mobilne uređaje.

Korištenje šifriranja

S prodorom elektronike i automatizacije u sva područja našeg života, raste potreba za zaštitom prenesenih podataka i ograničavanjem pristupa ključnim komponentama. Gotovo sva moderna računala, tableti i pametni telefoni, usmjerivači, "pametni" kućanski aparati, automobili itd. aktivno koriste enkripciju. Tako se, na primjer, koriste kriptografski algoritmi:

  • kada je spojen na većinu vrsta bežičnih podatkovnih mreža (Wi-Fi, Bluetooth, itd.);
  • u mobilnoj komunikaciji;
  • mobilni operativni sustavi (iOS, Android) šifriraju podatke na uređajima radi zaštite od neovlaštenog pristupa;
  • sigurno pohranjivanje lozinki zahtijeva određene kriptografske značajke (tj. većina uređaja na kojima je omogućena lozinka koristi šifriranje);
  • bankovne kartice, bankomati, terminali za plaćanje uvijek su zaštićeni kriptografski;
  • Kriptovalute se temelje na principima enkripcije.

Sve više organizacija i ljudi shvaća važnost korištenja enkripcije za zaštitu podataka. Tako je zajedničkim naporima brojnih tvrtki, posebice Googlea, udio šifriranog HTTP prometa porastao s 30% početkom 2014. na 70% početkom 2018. godine.

Istodobno, svaka je enkripcija matematički složena transformacija podataka i zahtijeva dodatne računalne resurse iz hardvera. Ovisno o scenariju rada s podacima, implementacija enkripcije može smanjiti ukupnu propusnost (količinu podataka obrađenih po jedinici vremena) za nekoliko puta.

Algoritmi šifriranja

Postoji veliki broj kriptografskih algoritama. Bilo bi tehnički teško podržati ih sve.

Neki se algoritmi, međutim, koriste mnogo češće od drugih. To je zbog činjenice da su mnogi algoritmi prepoznati kao zastarjeli ili nedovoljno sigurni, drugi se pokazuju nepotrebno računalno složenima, a postoje i drugi razlozi.

Među blok simetričnim algoritmima prije svega treba istaknuti [ (Advanced Encryption Standard). Ovaj algoritam odabran je kao američki nacionalni standard nakon natjecanja. AES je glavni algoritam simetrične enkripcije u mnogim protokolima i tehnologijama (TLS, Wi-Fi, Bluetooth (od verzije 4.0), GPG, IPsec, Bitlocker (šifriranje datotečnog sustava Windows), LUKS (šifriranje sustava datoteka Linux), Microsoft Office, mnogi programi za arhiviranje (WinZip, 7-zip) itd.).

Algoritmi kriptografskog raspršivanja također se iznimno široko koriste. Zbog činjenice da je algoritam MD5 prepoznat kao nesiguran, trenutno su najčešći algoritmi SHA serije, prvenstveno SHA-1 i SHA-2, koji su također američki FIPS standardi. Na kraju će ih zamijeniti algoritam SHA-3, koji je 2012. godine postao pobjednik odgovarajućeg natjecanja.

Algoritmi javnog ključa uključuju RSA, DSA i Diffe-Hellman.

U procesorima najčešće x86 arhitekture (proizvođači Intel i AMD) najnovijih generacija implementirane su posebne upute za ubrzanje izračuna pomoću algoritama AES i SHA-1, SHA-2 (256 bit).

Intelove upute

AES

Intel je 2008. godine predložio nove naredbe za arhitekturu x86, koje su dodale podršku za AES simetrični algoritam šifriranja na hardverskoj razini. AES je trenutno jedna od najpopularnijih blok šifri. Stoga bi implementacija hardvera trebala dovesti do bolje izvedbe programa koji koriste ovaj algoritam šifriranja.

Skup novih instrukcija naziva se AES-NI (AES New Instructions) i sastoji se od četiri instrukcije za AES enkripciju

  • AESENC- Izvedite jedan krug AES enkripcije,
  • AESENCLAST- Izvedite posljednji krug AES enkripcije i dešifriranja
  • AESDEC- Izvršite jedan krug AES dešifriranja,
  • AESDEKLAST- Izvedite posljednji krug AES dešifriranja

i još dvije upute za rad s AES ključem:

  • AESIMC- Inverzno miješanje stupaca,
  • AESKEYGENASSIST- Doprinesite generiranju AES okruglog ključa.

Kao i prije, upute se odnose na SIMD, odnosno na tip višestrukih podataka Single Instruction Multiple Data. Podržane su sve tri tipke AES načina rada (s duljinama ključa od 128, 192 i 256 bita s 10, 12 i 14 prolaza zamjene i permutacije).

Korištenje ovih uputa nekoliko puta ubrzava operacije šifriranja.

SHA

  • Westmere:
    • Westmere-EP (Xeon 56xx)
  • Clarkdale (osim Core i3, Pentium i Celeron)
  • Arrandale (osim Celerona, Pentiuma, Core i3, Core i5-4XXM)
  • Sandy Bridge:
    • sva stolna računala osim Pentiuma, Celerona, Core i3
    • Mobilni: samo Core i7 i Core i5
  • Ivy Bridge (samo i5, i7, Xeon i i3-2115C)
  • Haswell (svi osim i3-4000m, Pentium i Celeron)
  • Broadwell (sve osim Pentiuma i Celerona)
  • Silvermont/Airmont (svi osim Bay Trail-D i Bay Trail-M)
  • Goldmont
  • nebesko jezero
  • Jezero Kaby
  • jezero kave
  • Buldožer
  • Piledriver
  • parni valjak
  • Bager
  • Jaguar

SHA instrukcije podržavaju Intelovi procesori od Goldmont arhitekture (2016.), AMD procesori od Zen arhitekture (2017.).

Ostali procesori

Procesori opće namjene drugih arhitektura i proizvođača također često uključuju podršku za posebne kriptografske upute.

Dakle, podrška za AES algoritam implementirana je u procesore:

Arhitektura ARM također ima skup uputa za SHA algoritme:

  • SHA1C - SHA1 hash update akcelerator, odaberite
  • SHA1H - SHA1 fiksna rotacija
  • SHA1M - SHA1 hash update akcelerator, većina
  • SHA1P - SHA1 hash akcelerator ažuriranja, paritet
  • SHA1SU0 - SHA1 ubrzavač ažuriranja rasporeda, prvi dio
  • SHA1SU1 - SHA1 akcelerator ažuriranja rasporeda, drugi dio
  • SHA256H - SHA256 akcelerator hash ažuriranja
  • SHA256H2 - SHA256 hash update akcelerator, gornji dio
  • SHA256SU0 - SHA256 akcelerator ažuriranja rasporeda, prvi dio
  • SHA256SU1 - SHA256 akcelerator ažuriranja rasporeda, drugi dio

32nm Intel Westmere dodaje podršku za AES ubrzanje: je li stvarno potrebna?

Sigurnost je danas važna tema - ali važnom je smatraju uglavnom samo profesionalci. Međutim, ako sigurnost postane marketinški element ili postane značajka izvedbe, onda je tvrtke poput Intela počinju aktivno promovirati. AES ili Advanced Encryption Standard certificiran je od strane američke Nacionalne sigurnosne administracije (NSA) i američke vlade, kao i mnogih drugih tijela. Intelova 32nm generacija dvojezgrenog procesora obećava značajno poboljšanje performansi u AES enkripciji i dešifriranju s novim uputama (samo Core i5 dvojezgreni procesori). Odlučili smo procijeniti prednosti u stvarnom životu te usporedili dvojezgreni Core i5-661 procesor s novim AES uputama s četverojezgrenim Core i7-870 procesorom koji nema podršku za ubrzanje enkripcije.

Kliknite na sliku za povećanje.

Enkripcija se zapravo koristi mnogo više nego što korisnici obično primjećuju. Počinje sa stranicama na Internetu koje sadrže osjetljive informacije, kao što su osobni podaci korisnika, ili web-mjesta koja sadrže osjetljive informacije o transakcijama: sve koriste TLS ili SSL enkripciju. Usluge kao što su VoIP, instant messengeri i e-pošta također se mogu zaštititi na isti način. Virtualne privatne mreže (VPN-ovi, virtualne privatne mreže) je još jedan primjer, vjerojatno vrlo popularan. Šifriranje također utječe na osjetljiva područja kao što su elektronička plaćanja. Međutim, TLS/SSL su kriptografski komunikacijski protokoli, a AES, koji Intel ubrzava s novom generacijom 32nm procesora, je standard za šifriranje opće namjene. Može se koristiti za šifriranje pojedinačnih datoteka, spremnika podataka i arhiva, ili čak šifriranje cijelih particija i diskova - bilo da se radi o USB sticku ili tvrdom disku sustava. AES se može napraviti u softveru, ali postoje i hardverski ubrzani proizvodi, budući da su enkripcija i dešifriranje prilično računalni teret. Rješenja kao što su TrueCrypt ili Microsoft BitLocker, koji je dio sustava Windows Vista ili Windows 7 Ultimate, mogu šifrirati cijele particije u hodu.

Smatrate li da na vašem sustavu postoje osjetljivi podaci ili ne, ovisi o tome što mislite pod tim podacima, kao i o vašoj osobnoj razini udobnosti. Osim toga, sigurnost uvijek podrazumijeva ispravnu strategiju i točnost u pohranjivanju povjerljivih podataka. Nikada ne smijete zanemariti podatke kao što su podaci o putovnici ili broj i datum isteka bankovne kartice. Ili čak i telefonski PIN.

Jedno je sigurno: bolje je biti oprezan i razborit nego obrnuto – pogotovo jer to ne zahtijeva puno truda. Intelov pristup dodavanju AES ubrzanja ne pokriva sve aplikacije i scenarije enkripcije, već samo najpopularniji standard - i sve ćete to dobiti besplatno u svim budućim 32nm mainstream ili višim stolnim procesorima. No, pružaju li nove AES nove upute doista značajno povećanje performansi u tipičnim scenarijima enkripcije ili su to više proizvod marketinškog odjela? Da vidimo.

Što je AES?

AES je skraćenica za "Advanced Encryption Standard" i najpopularniji je standard simetrične enkripcije u IT svijetu. Standard radi sa 128-bitnim blokovima i podržava 128-, 192- ili 256-bitne ključeve (AES-128, AES-192 i AES-256). Mnogi uslužni programi za šifriranje, poput TrueCrypta, podržavali su AES algoritam na samom početku njegovog postojanja. No najveći čimbenik uspjeha AES-a, naravno, jest njegovo usvajanje od strane američke vlade 2002. godine, a 2003. usvojen je kao standard za zaštitu osjetljivih podataka.

Šifriranje podataka pomoću AES-a

AES enkripcija temelji se na permutacijskom supstitucijskom sustavu, odnosno niz matematičkih operacija se izvodi nad podacima kako bi se stvorio značajno modificirani niz podataka (kriptiran). Tekst djeluje kao početna informacija, a ključ je odgovoran za izvođenje matematičkih operacija. Operacije mogu biti jednostavne poput pomicanja bita ili XOR-a ili složenije. Jedan prolaz se može lako dešifrirati, zbog čega se svi moderni algoritmi šifriranja temelje na više prolaza. U slučaju AES-a to je 10, 12 ili 14 prolaza za AES-128, AES-192 ili AES-256. Inače, AES ključevi prolaze kroz isti postupak kao i korisnički podaci, odnosno promjenjivi su okrugli ključ.

Proces radi s 4x4 nizovima pojedinačnih bajtova, koji se također nazivaju kutijama: S-kutije se koriste za zamjene, P-kutije za permutacije. Zamjene i permutacije izvode se u različitim fazama: zamjene rade unutar takozvanih kutija, a permutacije mijenjaju informacije između kutija. S-box radi na složenom principu, to jest, čak i ako se promijeni jedan ulazni bit, to će utjecati na nekoliko izlaznih bitova, odnosno svojstva svakog izlaznog bita ovise o svakom ulaznom bitu.

Korištenje višestrukih prolaza osigurava dobru razinu enkripcije uz ispunjavanje kriterija za difuziju (difuziju) i zamagljivanje (konfuzija). Rasipanje se vrši kaskadnom kombinacijom transformacija S-boxa i P-boxa: promjenom samo jednog bita u ulaznom tekstu, S-kutija će modificirati izlaz nekoliko bitova, a P-box će to pseudo-slučajno širiti učinak na nekoliko S-kutija. Kada kažemo da minimalna promjena inputa daje maksimalnu promjenu u izlazu, govorimo o efektu grudve snijega.

Koliko je AES enkripcija sigurna?

U posljednje vrijeme bilo je mnogo rasprava o takozvanim hakovima koji zaobilaze potrebu za pokretanjem napredne brute-force pretrage kako bi se pronašao ispravan ključ za dešifriranje. O tehnikama kao što su XSL napadi i napadi povezanim ključem raspravlja se prilično opširno - s malo uspjeha. Jedini način rada za razbijanje AES enkripcije je takozvani napad sa strane kanala (side-channel). Za njegovu implementaciju, napad se mora dogoditi samo na host sustavu na kojem se izvodi AES enkripcija, a pritom morate pronaći način za dobivanje informacija o sinkronizaciji predmemorije. U tom slučaju možete pratiti broj računalnih ciklusa dok se proces šifriranja ne završi.

Naravno, sve to nije tako jednostavno, budući da vam je potreban pristup računalu, te sasvim potpuni pristup za analizu enkripcije i pravo na izvršavanje koda. Sada vam je vjerojatno jasno zašto se "rupe" u sigurnosnom sustavu koje omogućavaju napadaču da stekne takva prava, čak i ako zvuče potpuno apsurdno, moraju što prije zatvoriti. No, nemojmo širiti svoje misli po stablu: ako dobijete pristup ciljnom računalu, tada je vađenje AES ključa pitanje vremena, odnosno više nije dugotrajan zadatak za superračunala koji zahtijeva ogromne računalne resurse.

AES unutar Intela

U ovom trenutku, CPU integrirane AES upute počinju imati smisla - bez obzira na potencijalne prednosti performansi. Sa sigurnosne točke gledišta, procesor može obraditi AES instrukcije u inkapsuliranom obliku, to jest, ne trebaju mu nikakve prijevodne tablice potrebne za napad sa strane kanala.



SADRŽAJ

Dečki, svatko je dar. Govorimo o takvoj stvari kao što je Intel AES-NI, to se može naći u BIOS-u, ali što je to? Saznat ćemo. I tako sam pronašao službenu Intelovu web stranicu, gdje piše da je Intel AES-NI određeni skup naredbi za šifriranje koji nadopunjuje algoritam Advanced Encryption Standard (AES) i ubrzava proces enkripcije podataka u Intel Xeon procesorima (to su poslužiteljski ) i Intel Core (običan dom).

Intel AES-NI uključuje sedam novih naredbi i omogućuje vam zaštitu tipskih podataka na višoj razini sigurnosti. U principu, sve je jasno, Intel AES-NI je neka vrsta nove enkripcije, ali zašto to običnoj osobi treba? Pokušat ću saznati...

Da, to jest, AES-NI neke aspekte AES-a izvodi na hardverskoj razini, odnosno u samom procesu. E, sad malo razumijem. To jest, AES-NI poboljšava rad AES-a, ubrzava tip. Trebalo bi brže šifrirati, jedino mi nije bilo jasno što šifrirati? Je li disk šifriran u sustavu Windows ili će se WinRAR arhiva brže kreirati? To je ono što još uvijek ne mogu shvatiti. Ali pronašao sam neka pojašnjenja o ovom pitanju, pogledajte:

To jest, BitLocker enkripcija bi trebala biti brža. Ali što se tiče transakcija na Internetu, to baš i ne razumijem .. Je li moguće da procesor može sudjelovati u šifriranju internetskih veza? Za cijeli proces transakcije obično je šifriran, čak se za to koristi i HTTPS protokol ....

Ukratko, ljudi, čini mi se da sve razumijem. Postoji nešto kao što je AES, zar ne? Što je to? Ovo je simetrični algoritam za šifriranje blokova, ukratko, igra. Ali to nije poanta. Razumijem da se AES koristi u nekim programima, je li logično? Izvoli. Ali opcija Intel AES-NI, ona nekako ubrzava rad AES algoritma, razumiješ? Budući da ova opcija radi na razini hardvera u samom procesu.

Onda takvo pitanje, ispada da treba omogućiti Intel AES-NI da se tamo nešto brže šifrira? Da, pokazalo se da je to upravo to. Također sam pročitao da programi za šifriranje diska mogu koristiti Intel AES-NI, na primjer, jedan od tih programa je PGPdisk.

Ljudi, pronašao sam vrlo zanimljivu sliku, koja pokazuje prednost korištenja AES-NI, pogledajte:

Pa, razlika je primjetna...

Dakle, kakav zaključak se može izvući? Intel AES-NI je nekakva stvar koja je ugrađena u sam procesor, zapravo, to su nekakve upute, a te upute pomažu AES algoritmu da radi brže. Sam algoritam mogu koristiti različiti programi, a uz pomoć Intel AES-NI ovi će programi brže raditi svoj posao =)

Pa, ljudi, ova stavka je Intel AES-NI u BIOS-u:

Dečki, ovdje smo shvatili što je Intel AES-NI, ali ako nešto krene po zlu, nemojte previše grditi. Sretno i neka si sretna!

Vrhunski povezani članci