Intel AES-NI co je to v BIOSu? Použití nových pokynů pro šifrování Intel® AES v systému Android

V moderním světě se šifrování používá téměř všude, a to jak k ochraně zvláště důležitých informací ve speciálních oblastech (obranný sektor, bankovnictví atd.), tak jako součást zařízení v domácnosti: počítače, chytré telefony, televizory. Rozsah kryptografie se navíc každým rokem rozšiřuje a roste objem přenášených (uložených) šifrovaných dat.

Šifrování dat zároveň výrazně zvyšuje výpočetní zátěž zařízení, která jej implementují, a tak není divu, že se kryptografické operace stále častěji přesouvají na hardwarovou úroveň (často v podobě speciálních kryptografických koprocesorů nebo rozšiřujících karet) . V posledních letech se šifrovací instrukce také široce implementovaly přímo do centrálních procesorových jednotek hlavních značek pro spotřebitelské PC a mobilní zařízení.

Pomocí šifrování

S tím, jak elektronika a automatizace pronikají do všech oblastí našeho života, roste potřeba chránit přenášená data a omezovat přístup ke klíčovým komponentám. Téměř všechny moderní počítače, tablety a smartphony, routery, chytré domácí spotřebiče, auta atd. aktivně využívají šifrování. Používají se například kryptografické algoritmy:

  • při připojení k většině typů bezdrátových datových sítí (Wi-Fi, Bluetooth atd.);
  • v mobilních komunikacích;
  • mobilní OS (iOS, Android) šifruje data na zařízeních pro ochranu před neoprávněným přístupem;
  • Bezpečné ukládání hesel vyžaduje určité kryptografické funkce (tj. většina zařízení s možností hesla používá šifrování);
  • bankovní karty, bankomaty, platební terminály jsou vždy kryptograficky chráněny;
  • Kryptoměny jsou založeny na principech šifrování.

Stále více organizací a lidí si uvědomuje důležitost používání šifrování k ochraně dat. Společným úsilím mnoha společností, zejména Google, se tak zvýšil podíl šifrovaného HTTP provozu z 30 % na začátku roku 2014 na 70 % na začátku roku 2018.

Jakékoli šifrování je zároveň matematicky složitou transformací dat a vyžaduje další výpočetní zdroje z hardwaru. V závislosti na scénáři zpracování dat může zavedení šifrování několikrát snížit celkovou propustnost (množství dat zpracovaných za jednotku času).

Šifrovací algoritmy

Existuje velké množství kryptografických algoritmů. Bylo by technicky obtížné je všechny podporovat.

Některé algoritmy se však používají výrazně častěji než jiné. To je způsobeno tím, že mnoho algoritmů je považováno za zastaralé nebo nedostatečně zabezpečené, jiné se ukazují jako zbytečně složité výpočetně a existují i ​​další důvody.

Mezi blokově symetrickými algoritmy je třeba zvýraznit především [ (Advanced Encryption Standard). Tento algoritmus byl vybrán jako národní standard USA na základě výsledků soutěže. AES je hlavní symetrický šifrovací algoritmus v mnoha protokolech a technologiích (TLS, Wi-Fi, Bluetooth (od verze 4.0), GPG, IPsec, Bitlocker (šifrování systému souborů Windows), LUKS (šifrování systému souborů Linux), Microsoft Office, mnoho programy -archivátory (WinZip, 7-zip) atd.).

Velmi široce používané jsou také kryptografické hashovací algoritmy. Vzhledem k tomu, že algoritmus MD5 byl rozpoznán jako nebezpečný, jsou dnes nejběžnější algoritmy řady SHA, především SHA-1 a SHA-2, což jsou také americké standardy FIPS. Nakonec je nahradí algoritmus SHA-3, který se v roce 2012 stal vítězem příslušné soutěže.

Algoritmy veřejného klíče zahrnují RSA, DSA a Diffe-Hellman.

Nejnovější generace procesorů nejběžnější architektury x86 (vyráběné společnostmi Intel a AMD) implementují speciální instrukce pro urychlení výpočtů pomocí algoritmů AES a SHA-1, SHA-2 (256 bit).

Instrukce Intel

AES

V roce 2008 Intel navrhl nové příkazy pro architekturu x86, které přidaly hardwarovou podporu pro symetrický šifrovací algoritmus AES. V současné době je AES jedním z nejpopulárnějších blokových šifrovacích algoritmů. Hardwarová implementace by proto měla vést ke zvýšení výkonu programů, které používají tento šifrovací algoritmus.

Sada nových instrukcí se nazývá AES-NI (AES New Instructions) a skládá se ze čtyř instrukcí pro šifrování AES

  • AESENC- Proveďte jedno kolo šifrování AES,
  • AESENCLAST- Proveďte poslední kolo šifrování a dešifrování AES
  • AESDEC- Proveďte jedno kolo dešifrování AES,
  • AESDECLAST- Proveďte poslední kolo dešifrování AES

a další dva pokyny pro práci s klíčem AES:

  • AESIMC- Inverzní mix sloupce,
  • AESKEYGENASSIST- Přispějte ke generování kulatého klíče AES.

Stejně jako dříve jsou instrukce typu SIMD, tedy typu Single Instruction Multiple Data. Podporovány jsou všechny tři klíče režimu AES (s klíčem o délce 128, 192 a 256 bitů s 10, 12 a 14 průchody substituce a permutace).

Použití těchto pokynů několikrát zrychlí operace šifrování.

SHA

  • Westmere:
    • Westmere-EP (Xeon 56xx)
  • Clarkdale (kromě Core i3, Pentium a Celeron)
  • Arrandale (kromě Celeron, Pentium, Core i3, Core i5-4XXM)
  • Sandy Bridge:
    • všechny stolní počítače kromě Pentium, Celeron, Core i3
    • mobilní: pouze Core i7 a Core i5
  • Ivy Bridge (pouze i5, i7, Xeon a i3-2115C)
  • Haswell (vše kromě i3-4000m, Pentium a Celeron)
  • Broadwell (všechny kromě Pentium a Celeron)
  • Silvermont/Airmont (všechny kromě Bay Trail-D a Bay Trail-M)
  • Goldmont
  • Skylake
  • Jezero Kaby
  • Kávové jezero
  • Buldozer
  • Pileddriver
  • Parní válec
  • Rypadlo
  • Jaguár

Instrukce SHA podporují procesory Intel počínaje architekturou Goldmont (2016), procesory AMD - počínaje architekturou Zen (2017).

Ostatní procesory

Univerzální procesory jiných architektur a výrobců také často obsahují podporu speciálních kryptografických instrukcí.

Podpora pro algoritmus AES je tedy implementována v procesorech:

Architektura ARM má také sadu instrukcí pro algoritmy SHA:

  • SHA1C – akcelerátor aktualizace hash SHA1, vyberte si
  • SHA1H - SHA1 pevné otočení
  • SHA1M - akcelerátor aktualizace hash SHA1, většina
  • SHA1P - akcelerátor aktualizace hash SHA1, parita
  • SHA1SU0 - Akcelerátor aktualizace plánu SHA1, první část
  • SHA1SU1 - Akcelerátor aktualizace plánu SHA1, druhá část
  • SHA256H – akcelerátor aktualizace hash SHA256
  • SHA256H2 - SHA256 akcelerátor aktualizace hash, horní část
  • SHA256SU0 - Akcelerátor aktualizace plánu SHA256, první část
  • SHA256SU1 - Akcelerátor aktualizace plánu SHA256, druhá část

32nm Intel Westmere přidává podporu akcelerace AES: Je to opravdu nutné?

Bezpečnost je dnes důležitým tématem – ale za důležité ji považují hlavně odborníci. Pokud se však zabezpečení stane marketingovým prvkem nebo se změní na výkonnostní charakteristiku, pak je společnosti jako Intel začnou aktivně propagovat. AES nebo Advanced Encryption Standard je certifikován americkým Národním bezpečnostním úřadem (NSA) a vládou USA, stejně jako mnoha dalšími úřady. 32nm dvoupaticová generace procesorů Intel slibuje výrazné zlepšení výkonu šifrování a dešifrování AES díky novým instrukcím (pouze dvoujádrové procesory Core i5). Rozhodli jsme se zhodnotit přínosy v reálu a porovnali dvoujádrový procesor Core i5-661 s novými instrukcemi AES se čtyřjádrovým procesorem Core i7-870, který nepodporuje akceleraci šifrování.

Pro zvětšení klikněte na obrázek.

Šifrování se ve skutečnosti používá mnohem intenzivněji, než si uživatelé obvykle všimnou. Vše začíná weby na internetu, které obsahují citlivé informace, jako jsou osobní údaje uživatelů, nebo weby, které obsahují citlivé informace o transakcích, přičemž všechny používají šifrování TLS nebo SSL. Stejným způsobem lze chránit také služby jako VoIP, instant messenger a e-mail. Virtuální privátní sítě (VPN) jsou dalším příkladem, který je pravděpodobně velmi populární. Šifrování ovlivňuje i citlivé oblasti, jako jsou elektronické platby. TLS/SSL jsou však šifrovací komunikační protokoly a AES, který Intel zrychluje počínaje novou 32nm generací procesorů, je univerzální šifrovací standard. Lze jej použít k šifrování jednotlivých souborů, datových kontejnerů a archivů nebo dokonce k šifrování celých oddílů a disků – ať už jde o USB klíčenku nebo systémový pevný disk. AES lze provádět softwarově, ale existují i ​​hardwarově akcelerované produkty, protože šifrování a dešifrování je poměrně velká výpočetní zátěž. Řešení jako TrueCrypt nebo Microsoft BitLocker, který je součástí Windows Vista nebo Windows 7 Ultimate, dokážou za provozu šifrovat celé oddíly.

Zda si myslíte, že jsou ve vašem systému citlivá data, závisí na tom, co těmito daty myslíte, a také na vaší osobní úrovni pohodlí. Kromě toho zabezpečení vždy zahrnuje správnou strategii a přesnost při ukládání důvěrných dat. Nikdy byste neměli ignorovat údaje, jako jsou údaje o vašem pasu nebo číslo a datum vypršení platnosti vaší bankovní karty. Nebo dokonce PIN vašeho telefonu.

Jedna věc je jistá: je lepší být opatrný a obezřetný než naopak - zejména proto, že to nevyžaduje mnoho úsilí. Přístup společnosti Intel k přidávání akcelerace AES nepokrývá všechny šifrovací aplikace a scénáře, pouze nejoblíbenější standard – a to vše získáte zdarma na všech budoucích 32nm desktopových procesorech pro mainstream nebo vyšší třídy. Ale skutečně poskytují nové AES New Instructions výrazné zvýšení výkonu v typických scénářích šifrování, nebo jde spíše o marketingové úsilí? Podívejme se.

Co je AES?

AES je zkratka pro „Advanced Encryption Standard“ a je nejoblíbenějším standardem symetrického šifrování ve světě IT. Standard pracuje se 128bitovými bloky a podporuje 128bitové, 192bitové nebo 256bitové klíče (AES-128, AES-192 a AES-256). Mnoho šifrovacích nástrojů, včetně TrueCrypt, podporovalo algoritmus AES na samém počátku jeho existence. Ale největším faktorem úspěchu AES je samozřejmě jeho přijetí americkou vládou v roce 2002, přičemž jako standard pro ochranu utajovaných dat byl přijat v roce 2003.

Šifrujte data pomocí AES

Šifrování AES je založeno na permutačním substitučním systému, což znamená, že se s daty provádí řada matematických operací, aby se vytvořila významně upravená (šifrovaná) sada dat. Počáteční informací je text a klíč je zodpovědný za provádění matematických operací. Operace mohou být tak jednoduché, jako je bitový posun nebo XOR, nebo složitější. Jeden průchod lze snadno dešifrovat, a proto jsou všechny moderní šifrovací algoritmy postaveny na více průchodech. V případě AES se jedná o 10, 12 nebo 14 průchodů pro AES-128, AES-192 nebo AES-256. Mimochodem, klíče AES procházejí stejným postupem jako uživatelská data, to znamená, že představují měnící se kulatý klíč.

Proces pracuje s poli 4x4 jednotlivých bajtů, nazývaných také boxy: S-boxy se používají pro substituce, P-boxy se používají pro permutace. Substituce a permutace se provádějí v různých fázích: substituce fungují v rámci takzvaných boxů a permutace mění informace mezi boxy. S-box funguje na složitém principu, to znamená, že i když se změní jeden vstupní bit, ovlivní to několik výstupních bitů, to znamená, že vlastnosti každého výstupního bitu závisí na každém vstupním bitu.

Použití více průchodů poskytuje dobrou úroveň šifrování, ale musí splňovat kritéria šíření a záměny. Rozptyl se provádí pomocí kaskádové kombinace transformací S-boxu a P-boxu: při změně pouze jednoho bitu ve vstupním textu S-box upraví výstup několika bitů a P-box to pseudonáhodně šíří. efekt napříč více S-boxy. Když říkáme, že minimální změna vstupu vyvolá maximální změnu výstupu, mluvíme o efektu sněhové koule.

Jak bezpečné je šifrování AES?

V poslední době se hodně diskutuje o takzvaných hackech, které obcházejí nutnost spustit pokročilé vyhledávání hrubou silou k nalezení správného dešifrovacího klíče. Technologie jako XSL útoky a související útoky jsou probírány poměrně intenzivně – ale s malým úspěchem. Jediný fungující způsob, jak prolomit šifrování AES, je takzvaný útok postranním kanálem. Chcete-li toho dosáhnout, musí k útoku dojít pouze na hostitelském systému, na kterém je spuštěno šifrování AES, a musíte najít způsob, jak získat informace o synchronizaci mezipaměti. V tomto případě můžete sledovat počet cyklů počítače, dokud není proces šifrování dokončen.

To vše samozřejmě není tak snadné, protože potřebujete přístup k počítači a dostatečný přístup k analýze šifrování a právo spustit kód. Teď už asi chápete, proč je potřeba co nejrychleji uzavřít „díry“ v bezpečnostním systému, které umožňují útočníkovi získat taková práva, i když to zní naprosto absurdně. Ale neztrácejme se v myšlenkách: pokud získáte přístup k cílovému počítači, pak je získání klíče AES otázkou času, to znamená, že to již není časově náročný úkol pro superpočítače, vyžadující obrovské výpočetní zdroje.

AES uvnitř Intelu

V tuto chvíli začínají dávat instrukce AES integrované do CPU smysl – bez ohledu na potenciální výhody výkonu. Z hlediska zabezpečení může procesor zpracovávat instrukce AES v zapouzdřené podobě, což znamená, že nevyžaduje žádnou z vyhledávacích tabulek potřebných pro útok na postranní kanál.



OBSAH

Kluci, dárek pro každého. Bavíme se o něčem jako Intel AES-NI, to lze najít v BIOSu, ale co to je? To zjistíme. A tak jsem našel oficiální stránky Intelu, kde se píše, že Intel AES-NI je určitá sada šifrovacích příkazů, která doplňuje algoritmus Advanced Encryption Standard (AES) a urychluje proces šifrování dat v Intel Xeon (jedná se o server ) a procesory Intel Core (běžné domácí).

Intel AES-NI obsahuje sedm nových příkazů a umožňuje chránit typ dat na vyšší úrovni zabezpečení. V zásadě je vše jasné, Intel AES-NI je jakési nové šifrování, ale proč to běžný člověk potřebuje? zkusím to zjistit...

Ano, to znamená, že AES-NI provádí některé aspekty AES na hardwarové úrovni, tedy přímo v samotném procesu. No, teď už tomu trochu rozumím. To znamená, že AES-NI zlepšuje provoz AES a zrychluje typ. Mělo by se to šifrovat rychleji, jediné, čemu nerozumím, je, co je zašifrováno? Je disk ve Windows šifrovaný, nebo se rychleji vytvoří archiv WinRAR? To je to, co zatím nedokážu pochopit. Ale našel jsem nějaké vysvětlení tohoto problému, podívejte se:

To znamená, že šifrování BitLocker by mělo být rychlejší. Ale pokud jde o transakce na internetu, tomu úplně nerozumím Znamená to, že se procesor může podílet na šifrování připojení k internetu? Protože je celý transakční proces většinou šifrovaný, používá se k tomu i protokol HTTPS...

Zkrátka kluci, myslím, že rozumím všemu. Existuje něco jako AES, že? co to je? Toto je symetrický blokový šifrovací algoritmus, zkrátka nesmysl. Ale o to nejde. Chápu, že se v některých programech používá AES, je to logické? Tady to máš. Ale možnost Intel AES-NI jen urychluje algoritmus AES, víte? Protože tato možnost funguje na úrovni hardwaru přímo v procesu.

Pak je otázka, jestli má cenu zapínat Intel AES-NI, aby se něco šifrovalo rychleji? Ano, ukazuje se, že je to přesně tak. Také jsem se dočetl, že programy pro šifrování disku mohou používat Intel AES-NI, například jedním z takových programů je PGPdisk.

Kluci, našel jsem velmi zajímavý obrázek, který ukazuje výhodu použití AES-NI, podívejte se:

No, rozdíl je vlastně znatelný...

Jaký závěr tedy můžeme vyvodit? Intel AES-NI je druh věci, která je zabudována do samotného procesoru, ve skutečnosti se jedná o nějaké instrukce a tyto instrukce pomáhají algoritmu AES pracovat rychleji. Samotný algoritmus mohou používat různé programy a s pomocí Intel AES-NI tyto programy udělají svou práci rychleji =)

No, lidi, toto je položka Intel AES-NI v BIOSu:

Kluci, teď jsme přišli na to, co je Intel AES-NI, ale pokud je něco v nepořádku, tak to moc nenadávejte. Ať se vám daří a ať jste šťastní!

Překládáme... Přeložit Čínština (zjednodušená) Čínština (tradiční) Angličtina Francouzština Němčina Italština Portugalština Ruština Španělština Turečtina

Bohužel tyto informace momentálně nejsme schopni přeložit – zkuste to prosím znovu později.

Zavedení

Tento článek popisuje podporu nových pokynů pro standardní šifrování Intel® AES (Intel® AES-NI) v systému Android: co to je, jak je používat a jak měřit výkon. Popisuje také model použití a příklady v kombinaci se dvěma scénáři šifrování, které demonstrují použití instrukcí Intel AES-NI. Zkušení vývojáři mohou přeskočit první čtyři části tohoto článku a přejít rovnou k poslední části, aby se seznámili s případy použití. Méně zkušení vývojáři si možná budou chtít přečíst celý článek.

Nové pokyny pro šifrování AES (Intel AES-NI)

Instrukce Intel AES-NI byly navrženy v březnu 2008 jako rozšíření instrukční sady architektury x86 pro mikroprocesory Intel a AMD. Účelem této sady instrukcí je zvýšit rychlost aplikací, které provádějí šifrování AES a dešifrování dat.

Pokyny Intel AES-NI jsou uvedeny v tabulce 1.

Tabulka 1. Pokyny Intel® AES-NI

Kontrola podpory Intel AES-NI v systému Android

Zda je Intel AES-NI podporován na konkrétní platformě, můžete zkontrolovat pomocí CPUID; zkontrolujte hodnotu CPUID.01H:ECX.AESNI = 1. Funkci můžete také použít check_for_aes_instructions z ukázky knihovny Intel AES-NI.

Použití Intel AES-NI v systému Android

Intel AES-NI můžete v systému Android používat různými způsoby:

  • psát kód C/C++ a přímo používat assembler
  • používat existující knihovnu třetí strany, jako je OpenSSL*
  • použijte Java* Crypto API od Android Kitkat

Chcete-li zkompilovat nativní knihovnu/aplikaci pro x86 na OS Android, musíte připravit samostatný toolchain pomocí příkazu make-standalone-toolchain.sh v 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

Pomocí Build Library

Knihovna je ve složce intel_aes_lib. Lze jej také stáhnout z . Použijte verzi GCC 4.4 nebo novější, což znamená, že verze NDK musí být novější než NDK v3. (Tady používáme android-ndk-r9 na testování.)

makefile/shell Neexistuje žádný skript pro vytváření verzí pro Android. Chcete-li kompilovat, můžete změnit soubor mk_lnx86.sh. Hlavní změnou je použití $STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc místo GCC ve výchozím nastavení. Měli byste také použít parametry pass –D__ANDROID__.

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

Po zkompilování můžete binární spustitelný program přenést na Android a otestovat jej. Můžete také použít zdrojový kód přímo ve svých aplikacích nebo použít vygenerovanou binární knihovnu v NDK.

Pomocí OpenSSL

Instrukce Intel AES-NI používá mnoho knihoven, jako např crypto++ polar SSL IPP OpenSSL a další. (Používáme OpenSSL jako reference - instrukce Intel AES-NI podporované v OpenSSL od experimentální verze 1.0).

Počínaje Androidem 4.3 má OpenSSL v AOSP podporu pro Intel AES-NI, takže stačí zkompilovat kód s požadovanou konfigurací. Můžete si jej také stáhnout z oficiálních stránek a sami si jej zkompilovat a poté soubor použít *.a/*.so přímo ve vašem projektu.

1) Stáhnout – OpenSSL si můžete stáhnout z http://www.openssl.org/source/. Aktuálně v Androidu 4.2 openssl-1.0.1c a v systému Android 4.4 - openssl-1.0.1e.Musíte použít stejnou verzi OpenSSL jako cílový systém.

(2) Kompilace – spusťte v konzole následující příkaz:

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

Po tomto soubor libcrypto.a se zobrazí ve složce nejvyšší úrovně. Chcete-li použít soubor *.tak zadejte " Konfigurace sdíleného systému Android-x86 ***”.

(3) Použijte OpenSSL přes NDK v projektu Android: vytvořte Projekt Android, deklarujte funkci související s OPENSSL jako rodák, poté použijte kód v jni/*.c.

Poté musíte soubory zkopírovat *.a/*.so a hlavičkový soubor projektu.

Mkdir jni/předkompilovaný/ mkdir jni/include cp $OPENSSL_PATH/libcrypto.a jni/předkompilovaný cp –L -rf $OPENSSL_PATH/include/openssl jni/include

Poté do souboru přidejte následující řádek jni/Android.mk:

... LOCAL_MODULE:= statický LOCAL_SRC_FILES:= předkompilovaný/libcrypto.a ... LOCAL_C_INCLUDES:= include LOCAL_STATIC_LIBRARIES:= statický –lcrypto ...

Poté můžete použít funkce poskytované v OpenSSL k implementaci vašich funkcí šifrovat/dešifrovat/SSL. Chcete-li použít Intel AES-NI, použijte funkci série EVP_* jak je uvedeno níže. To automaticky umožní hardwarovému modulu Intel AES-NI provádět šifrování a dešifrování AES, pokud to CPU podporuje.

//deklarovat EVP_CIPHER_CTX en, de;

//init EVP_CIPHER_CTX_init(&en); EVP_CIPHER_CTX_init(&de); EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL);

//dešifrovat & encrpyt EVP_DecryptUpdate(&de, prostý text, &bytes_written, šifrovaný text, len);

EVP_EncryptUpdate(&en, ciphertext, &cipher_len, plain text, len); //vyčištění EVP_CIPHER_CTX_cleanup(&en); EVP_CIPHER_CTX_cleanup(&de); Poté použijte ndk-build pro kompilaci. Ndk-build APP_ABI=x86

(4) Použití Java Crypto API: in

Android Kitkat

Poskytovatel OpenSSL s názvem „

AndroidOpenSSL

” podporuje Intel AES-NI, takže můžete používat javax.crypto.Cipher přímo. Šifra = Cipher.getInstance(AES_ALGORITHM, “AndroidOpenSSL”); cipher.init(*); Měření výkonu javax.crypto.Cipher Měření výkonu Testovací nástroje

(1) Použijte nástroje OPENSSL. Tým

openssl

jako součást OpenSSL může provádět mnoho úkolů. Lze jej použít k měření výkonu pomocí rychlost openssl

. Výchozí

((při sestavování s možností AES_ASM) automaticky použije hardwarovou akceleraci Intel AES-NI. Hardwarovou akceleraci můžete také snadno zakázat nastavením jedné proměnné prostředí: Program Intel® MPM

zastavte profilování a poté uložte výsledná data. Výsledky se zobrazí jako textové shrnutí nebo jako graf.

(4) Použijte testovací aplikaci z knihovny Intel AES-NI, viz . Může povolit nebo zakázat AESNI v BIOSu v některých testovacích projektech jako aes_gladman_subset k prokázání výsledků výkonu.

Výsledky testů

Spustili jsme [vložte program] na tabletu Bay Trail se systémem Android 4.4. Naše výsledky testování ukazují 4 až 11krát lepší výkon šifrování a dešifrování a také více než 40% úsporu energie při použití Intel AES-NI.

Podrobné testovací údaje

Hardware: BAYTRAIL_FFRD8 PR1, OS: ANDROID 4.4
MODE
(CBC/256)
Velikost souboru Povoleno Intel® AES-NI Intel® AES-NI zakázán
Čas (s) bez I/OČas (s) s I/OČas (s) bez I/OČas (s) s I/O
Šifrování351 milionů2.89 15.4 14.59 25.61
56 milionů0.48 2.35 2.63 4.55
Dekódování351 milionů1.76 38.144 19.78 28.51
56 milionů0.29 1.9 3.16 4.62

    Žádné I/O z výše uvedené tabulky

    Šifrování: Téměř 5x zlepšení výkonu, podobně jako OPENSSL
    Přepis: téměř 11x zvýšení produktivity

    S I/O z výše uvedené tabulky

    Šifrování: téměř 1,9x zlepšení výkonu
    Přepis: téměř 2x zvýšení produktivity

Případy použití Intel AES-NI

Algoritmus AES je široce používán v různých scénářích zabezpečení dat, jako je šifrování přenosu dat po síti, šifrování celých disků nebo jednotlivých souborů. Ve všech těchto scénářích lze použít Intel AES-NI, pokud CPU podporuje požadované instrukce. Na Obr. Obrázek 6 ukazuje typický přenos dat v síti; Všechna data přenášená mezi uživateli a servery jsou po ověření šifrována.

Obrázek 6. Typický síťový přenos dat

Dalším typickým případem použití je šifrování celých disků nebo šifrování jednotlivých souborů, když uživatelé potřebují uložit data na místní úložiště. Na Obr. Obrázek 7 ukazuje celý pracovní postup od uživatele k úložišti:

Obrázek 7. Celý pracovní postup šifrování

Hardwarové instrukce Intel AES-NI poskytují jak vysoký výkon, tak úsporu energie, což je důležité zejména pro mobilní zařízení, jako jsou smartphony a tablety. Správa mobilních zařízení (MDM) a správa mobilního obsahu (MCM) jsou kritickými faktory pro podniková bezpečnostní řešení. Tato část popisuje Intel AES-NI v kombinaci s MDM a MCM.

Dobrým příkladem MDM je situace, kdy administrátoři posílají zprávy nebo příkazy koncovým uživatelům, ale všechna odesílaná citlivá data musí být šifrována. Softwarové řešení AES rychle vybíjí energii baterie při častém přenosu dat, ale řešení Intel AES-NI využívá hardwarová řešení, která šetří energii a zlepšují výkon. Na Obr. Obrázek 8 ukazuje typický scénář, ve kterém správci odesílají příkazy uživatelům pomocí šifrování založeného na Intel AES-NI. Pracovní postup zahrnuje šifrování příkazů před jejich odesláním a dešifrování dat pro provádění příkazů na zařízeních koncových uživatelů.

Obrázek 8 Výměna dat MDM pomocí kryptografie AES

Příklad MCM: Uživatelé přistupují k citlivým datům, jako jsou dokumenty, obrázky, videa atd., z podnikových serverů. Takto přenášená data potřebují spolehlivou ochranu. Všechna data musí být před odesláním koncovým uživatelům zašifrována; Na zařízeních uživatelů musí být data také uložena v zašifrovaném formátu. Na Obr. Obrázek 9 ukazuje typický pracovní postup MCM od začátku do konce při čtení a ukládání dat koncovým uživatelem. Instrukce Intel AES-NI podporují 256bitové šifrování, což z něj činí vynikající hardwarové řešení pro podnikové zabezpečení a požadavky na soukromí.

Obrázek 9. Pracovní postup MCM

K povolení hardwarové akcelerace Intel AES-NI musí vývojáři používat programování NDK. Na Obr. Obrázek 10 ukazuje typický vztah mezi vrstvami aplikací pro Android, šifrovacím modulem Android a modulem Intel AES-NI C/C++. Java Native Interface (JNI) se používá k propojení funkcí C/C++ s funkcemi Java. Pokud je pro vás programování v NDK novinkou, další informace naleznete v referencích NDK.

Obrázek 10. Typické vztahy mezi úrovněmi

Závěr

Tento článek popisuje, jak používat pokyny Intel AES-NI k urychlení šifrování na zařízeních Android. Ukazuje, jak mohou vývojáři používat kód sestavení, knihovny třetích stran a Intel NDK ke zrychlení aplikací a úspoře energie. Jsou popsány dva typické scénáře šifrování a dešifrování dat, které vývojářům pomáhají používat Intel AES-NI ve svých aplikacích.

Další informace o nástrojích Intel® mohou vývojáři systému Android navštívit následující stránky: Intel® Developer Zone pro Android.

O autorech

Zhang Li je inženýrem vývoje aplikací v Intel® Software and Solutions Group (SSG) Developer Relations Division jako součást týmu Mobile Enabling Team. Podílí se na podpoře aplikací pro Android.

Yanqing Wang je inženýrem vývoje aplikací v Intel® Software and Solutions Group (SSG) Developer Relations Division jako součást Mobile Enabling Team. Mezi jeho odpovědnosti patří správa a bezpečnost podnikových řešení. Má status černého pásu Intel® Developer Zone (IDZ).

Referenční materiály

Intel, logo Intel, Atom, Celeron, Core, Pentium a Xeon jsou ochranné známky společnosti Intel Corporation ve Spojených státech a dalších zemích.
*Další názvy a ochranné známky mohou být majetkem třetích stran.
© Intel Corporation, 2014. Všechna práva vyhrazena.

32nm Intel Westmere přidává podporu akcelerace AES: Je to opravdu nutné?

Bezpečnost je dnes důležitým tématem – ale za důležité ji považují hlavně odborníci. Pokud se však zabezpečení stane marketingovým prvkem nebo se změní na výkonnostní charakteristiku, pak je společnosti jako Intel začnou aktivně propagovat. AES nebo Advanced Encryption Standard je certifikován americkým Národním bezpečnostním úřadem (NSA) a vládou USA, stejně jako mnoha dalšími úřady. 32nm dvoupaticová generace procesorů Intel slibuje výrazné zlepšení výkonu šifrování a dešifrování AES díky novým instrukcím (pouze dvoujádrové procesory Core i5). Rozhodli jsme se zhodnotit přínosy v reálu a porovnali dvoujádrový procesor Core i5-661 s novými instrukcemi AES se čtyřjádrovým procesorem Core i7-870, který nepodporuje akceleraci šifrování.


Šifrování se ve skutečnosti používá mnohem intenzivněji, než si uživatelé obvykle všimnou. Vše začíná weby na internetu, které obsahují citlivé informace, jako jsou osobní údaje uživatelů, nebo weby, které obsahují citlivé informace o transakcích, přičemž všechny používají šifrování TLS nebo SSL. Stejným způsobem lze chránit také služby jako VoIP, instant messenger a e-mail. Virtuální privátní sítě (VPN) jsou dalším příkladem, který je pravděpodobně velmi populární. Šifrování ovlivňuje i citlivé oblasti, jako jsou elektronické platby. TLS/SSL jsou však šifrovací komunikační protokoly a AES, který Intel zrychluje počínaje novou 32nm generací procesorů, je univerzální šifrovací standard. Lze jej použít k šifrování jednotlivých souborů, datových kontejnerů a archivů nebo dokonce k šifrování celých oddílů a disků – ať už jde o USB klíčenku nebo systémový pevný disk. AES lze provádět softwarově, ale existují i ​​hardwarově akcelerované produkty, protože šifrování a dešifrování je poměrně velká výpočetní zátěž. Řešení jako TrueCrypt nebo Microsoft BitLocker, který je součástí Windows Vista nebo Windows 7 Ultimate, dokážou za provozu šifrovat celé oddíly.

Zda si myslíte, že jsou ve vašem systému citlivá data, závisí na tom, co těmito daty myslíte, a také na vaší osobní úrovni pohodlí. Kromě toho zabezpečení vždy zahrnuje správnou strategii a přesnost při ukládání důvěrných dat. Nikdy byste neměli ignorovat údaje, jako jsou údaje o vašem pasu nebo číslo a datum vypršení platnosti vaší bankovní karty. Nebo dokonce PIN vašeho telefonu.

Jedna věc je jistá: je lepší být opatrný a obezřetný než naopak - zejména proto, že to nevyžaduje mnoho úsilí. Přístup společnosti Intel k přidávání akcelerace AES nepokrývá všechny šifrovací aplikace a scénáře, pouze nejoblíbenější standard – a to vše získáte zdarma na všech budoucích 32nm desktopových procesorech pro mainstream nebo vyšší třídy. Ale skutečně poskytují nové AES New Instructions výrazné zvýšení výkonu v typických scénářích šifrování, nebo jde spíše o marketingové úsilí? Podívejme se.

Co je AES?

AES je zkratka pro „Advanced Encryption Standard“ a je nejoblíbenějším standardem symetrického šifrování ve světě IT. Standard pracuje se 128bitovými bloky a podporuje 128bitové, 192bitové nebo 256bitové klíče (AES-128, AES-192 a AES-256). Mnoho šifrovacích nástrojů, včetně TrueCrypt, podporovalo algoritmus AES na samém počátku jeho existence. Ale největším faktorem úspěchu AES je samozřejmě jeho přijetí americkou vládou v roce 2002, přičemž jako standard pro ochranu utajovaných dat byl přijat v roce 2003.

Šifrujte data pomocí AES

Šifrování AES je založeno na permutačním substitučním systému, což znamená, že se s daty provádí řada matematických operací, aby se vytvořila významně upravená (šifrovaná) sada dat. Počáteční informací je text a klíč je zodpovědný za provádění matematických operací. Operace mohou být tak jednoduché, jako je bitový posun nebo XOR, nebo složitější. Jeden průchod lze snadno dešifrovat, a proto jsou všechny moderní šifrovací algoritmy postaveny na více průchodech. V případě AES se jedná o 10, 12 nebo 14 průchodů pro AES-128, AES-192 nebo AES-256. Mimochodem, klíče AES procházejí stejným postupem jako uživatelská data, to znamená, že představují měnící se kulatý klíč.

Proces pracuje s poli 4x4 jednotlivých bajtů, nazývaných také boxy: S-boxy se používají pro substituce, P-boxy se používají pro permutace. Substituce a permutace se provádějí v různých fázích: substituce fungují v rámci takzvaných boxů a permutace mění informace mezi boxy. S-box funguje na složitém principu, to znamená, že i když se změní jeden vstupní bit, ovlivní to několik výstupních bitů, to znamená, že vlastnosti každého výstupního bitu závisí na každém vstupním bitu.

Použití více průchodů poskytuje dobrou úroveň šifrování, ale musí splňovat kritéria šíření a záměny. Rozptyl se provádí pomocí kaskádové kombinace transformací S-boxu a P-boxu: při změně pouze jednoho bitu ve vstupním textu S-box upraví výstup několika bitů a P-box to pseudonáhodně šíří. efekt napříč více S-boxy. Když říkáme, že minimální změna vstupu vyvolá maximální změnu výstupu, mluvíme o efektu sněhové koule.

Jak bezpečné je šifrování AES?

V poslední době se hodně diskutuje o takzvaných hackech, které obcházejí nutnost spustit pokročilé vyhledávání hrubou silou k nalezení správného dešifrovacího klíče. Technologie jako XSL útoky a související útoky jsou probírány poměrně intenzivně – ale s malým úspěchem. Jediný fungující způsob, jak prolomit šifrování AES, je takzvaný útok postranním kanálem. Chcete-li toho dosáhnout, musí k útoku dojít pouze na hostitelském systému, na kterém je spuštěno šifrování AES, a musíte najít způsob, jak získat informace o synchronizaci mezipaměti. V tomto případě můžete sledovat počet cyklů počítače, dokud není proces šifrování dokončen.

To vše samozřejmě není tak snadné, protože potřebujete přístup k počítači a dostatečný přístup k analýze šifrování a právo spustit kód. Teď už asi chápete, proč je potřeba co nejrychleji uzavřít „díry“ v bezpečnostním systému, které umožňují útočníkovi získat taková práva, i když to zní naprosto absurdně. Ale neztrácejme se v myšlenkách: pokud získáte přístup k cílovému počítači, pak je získání klíče AES otázkou času, to znamená, že to již není časově náročný úkol pro superpočítače, vyžadující obrovské výpočetní zdroje.

AES uvnitř Intelu

V tuto chvíli začínají dávat instrukce AES integrované do CPU smysl – bez ohledu na potenciální výhody výkonu. Z hlediska zabezpečení může procesor zpracovávat instrukce AES v zapouzdřené podobě, což znamená, že nevyžaduje žádnou z vyhledávacích tabulek potřebných pro útok na postranní kanál.

Core i5 Clarkdale s podporou AES


Pro zvětšení klikněte na obrázek.
  • " Intel Core i5-661: testy nového procesoru na designu Clarkdale ";
  • " Intel Mobile Core i7, i5 a i3 (Arrandale): nové procesory pro notebooky ";
  • " Intel Core i3 a i5: testy účinnosti nových dvoujádrových procesorů ".

Procesory ve skutečnosti znamenají generační změnu, protože jde nejen o přechod na další procesní technologii (32 nm oproti 45 nm), ale také vidíme první generaci CPU s podporou více instrukcí, které urychlují šifrování. Intel tento doplněk označuje jako AES New Instructions. Skládají se ze čtyř instrukcí pro AES šifrování (AESENC, AESENCLAST) a dešifrování (AESDEC, AESDECLAST) plus dalších dvou instrukcí pro práci s klíčem AES (AESIMC, AESKEYGENASSIST). Stejně jako dříve jsou instrukce typu SIMD, tedy typu Single Instruction Multiple Data. Podporovány jsou všechny tři klíče AES (128, 192 a 256 bitů s 10, 12 a 14 průchody substituce a permutace).

Protože všechny instrukce AES mají pevnou latenci, která je nezávislá na datech, to znamená, že časování je pevné a není vyžadován žádný přístup do paměti. Programovací model je navíc stejný jako ostatní instrukce SSE z původního standardu SSE4. Všechny operační systémy, které podporují SSE, tak budou moci používat AES New Instructions.

Při výběru procesoru s akcelerací AES buďte opatrní, protože málokterý model dnes podporuje nové pokyny. 32nm procesory Core i3 na Clarkdale návod nepodporují, ale dvoujádrová řada Core i5-600 ano. U mobilních procesorů je situace trochu složitější: pokud mobilní procesory Core i3 také nepodporují akceleraci AES, pak procesory řady Core i5-500 již ano. Existuje však jeden model Core i5-400, který takovou podporu postrádá. Vše by bylo mnohem jednodušší, kdyby Intel přidal podporu pro nové instrukce do všech modelů.

Testovací konfigurace

Konfigurace hardwaru
Základní deska (Socket LGA1156) MSI H55M-ED55 (Rev. 1.0), čipset: H55, BIOS: 1.11 (1. 4. 2010)
CPU Intel Intel Core i5-661 (32 nm, 3,33 GHz, 2x 256 KB L2 cache a 4 MB L3 cache, TDP 87 W)
Paměť DDR3 (dva kanály) 2x 2 GB DDR3-1600 (Corsair CMD4GX3M2A1600C8)
pevný disk Solidata K5 SLC Flash SSD, SATA/300, 64 MB cache
Grafická karta Zotac Geforce GTX 260², GPU: GeForce GTX 260 (576 MHz), paměť: 896 MB DDR3 (1998 MHz), stream procesory: 216, frekvence shaderu: 1242 MHz
pohonná jednotka Napájení a chlazení počítače, tlumič hluku 750EPS12V 750W
Systémový software a ovladače
operační systém Windows 7 Ultimate X64, aktualizováno 11. ledna 2010
Ovladač čipové sady Intel Nástroj pro instalaci čipové sady Ver. 9.1.1.1025
Ovladač grafické karty Nvidia Verze 8.16

Testy a nastavení

Testy a nastavení
7-zip Verze 9.1 beta
1. Syntaxe "a -r -ptest -t7z -m0=LZMA2 -mx1 -mmt=8"
2. Syntaxe "a -r -ptest -t7z -m0=LZMA2 -mx9 -mmt=8"
3. Integrovaný benchmark
Benchmark: THG-Workload
BitLocker Integrovaný Windows 7
Šifrovat RAM-Drive (330 MB)
Benchmark: THG-Workload
Winzip 14 Verze 14.0 Pro (8652)
Příkazový řádek WinZIP verze 3
1. Syntaxe "-stest -ycAES256 -a -el -p -r"
2. Syntaxe "-stest -ycAES256 -a -e0 -p -r"
Benchmark: THG-Workload
Syntetické testy
Everest Verze: 5.3
Zlib a AES Benchmark
PCMark Vantage Verze: 1.00
Communications Suite
SiSoftware Sandra 2009 Verze: 2010.1.16.10
Aritmetika procesoru, kryptografie, šířka pásma paměti

Hlavní konkurent naší recenze: čtyřjádrový procesor Intel Core i7-870 pro LGA 1156. Kliknutím na obrázek jej zvětšíte.
Nové a efektivní: základní deska MSI H55M-ED55. Pro zvětšení klikněte na obrázek.

Výsledky testů

SiSoftware Sandra 2009 SP3


Testy ALU a MFLOPS nepřinesly žádné překvapení: čtyřjádrový procesor je i přes nižší takt téměř dvakrát rychlejší – jak jsme očekávali.

Výsledek testu šifrování je ale úplně jiný: ukazuje, že procesor Core i5 Clarkdale s akcelerací AES je až 3x rychlejší než čtyřjádrový Core i7-870.

Proto výsledky testu šifrování vypadají tak dobře: čisté šifrování AES-256 běží na hardwarově akcelerovaném dvoujádrovém procesoru více než šestkrát rychleji.

Test šifrování SHA-256 dokazuje, že tato funkce pouze zrychluje algoritmus AES.

Test komunikace PCMark Vantage

Test PCMark Vantage nám říká přesně to samé: celkový výsledek sady Communications je o 50 % rychlejší na novém 32nm dvoujádrovém procesoru Clarkdale ve srovnání se 45nm čtyřjádrovým Lynnfieldem.

A tady je důvod.

Znovu: Intel pouze zrychlil algoritmus AES. Komprese dat to neprospívá, rychlost závisí na počtu jader a taktovací frekvenci.

Dešifrování algoritmu AES je také poměrně rychlé.





Zde je další test, ve kterém si dvoujádrový Clarkdale Core i5 vede dobře díky podpoře AES.

Bitlocker, Everest a WinZIP 14

Použili jsme funkci šifrování jednotky BitLocker zabudovanou do operačního systému Windows 7 Ultimate, který je také založen na AES. Abychom se vyhnuli úzkým místům úložiště, rozhodli jsme se použít 330 MB RAM disk, který může ukázat výkonnostní rozdíl mezi dvoujádrovým Core i5-661 s akcelerací AES oproti čtyřjádrovému Core i7-870, který nepodporuje akceleraci šifrování. . Ve skutečnosti se rozdíl blížil 50 %, šifrování trvalo na výkonném čtyřjádrovém Core i7 7 sekund a nový 32nm dvoujádrový Core i5-661 dokončil stejný úkol za pouhé 4 sekundy.


Test šifrování AES v balíčku Everest Ultimate Edition ukazuje fantastický nárůst výkonu, stále však zůstává spíše teoretickým výsledkem.

Navzdory podpoře AES běžel WinZIP 14 na čtyřjádrovém procesoru rychleji díky vyššímu výkonu. Dvoujádrový procesor s hardwarovou akcelerací AES si však stále vedl dobře, ztratil jen proto, že jsme zadali maximální úroveň komprese. Tento režim jsme zvolili, protože jej zvolí většina uživatelů, pokud neexistuje důvod ke snížení úrovně komprese (například pro rychlejší kompresi velkého množství dat).

Tento test jsme zopakovali s AES šifrováním ve WinZIP, ale úroveň komprese byla nulová – tedy WinZIP jednoduše přepsal soubory do archivu. A zde vidíme, že dvoujádrový procesor s AES akcelerací ve skutečnosti předčí čtyřjádrový model, který takovou funkci nemá.

7-zip

Použili jsme test komprese souborů z příkazového řádku a opět vidíme, že čtyřjádrový procesor je rychlejší. Důvod opět spočívá ve vysoké úrovni komprese. Zopakovali jsme test s nulovou úrovní komprese souboru.

V tomto případě vidíme malé využití Core i5-661 a vestavěné funkce AES. Doba potřebná k přidání souborů do archivu je pětina času při vysokých úrovních komprese, ale čtyřjádrový procesor je stále napřed.

Jak můžete vidět v následujících grafech, více vláken vede k vyššímu výkonu 7-zip.



Závěr

Naše analýza přinesla některé zajímavé výsledky, ale také ukázala, že ne všechny aplikace mohou okamžitě těžit ze šesti nových instrukcí Intel AES New Instructions, které byly navrženy tak, aby urychlily šifrování a dešifrování algoritmů AES-128, AES-192 a AES-256. Rychle jsme se podívali na to, jak standard symetrického šifrování funguje a proč je důležitý i pro běžné uživatele. Výsledky testu ukázaly velmi vážný výkon dvoujádrového Core i5-661 Clarkdale, který jsme porovnali se čtyřjádrovým Core i7-870. Testy PCMark Vantage a SiSoftware Sandra ukázaly působivé zvýšení výkonu díky hardwarové akceleraci AES. Výsledky Everest Ultimate jsou velmi podobné.

Všechny zmíněné testovací balíčky jsou však syntetické, což znamená, že obvykle vykazují větší rozdíl, než lze vidět v reálu. Z tohoto důvodu jsme také testovali 7-zip 9.1 Beta, BitLocker pod Windows 7 Ultimate a WinZIP v nejnovější verzi 14, abychom zjistili, jaké výhody získáme v aplikacích v reálném světě. Musíme říci, že jsme nebyli zklamáni: WinZIP 14 a Bitlocker poskytly výsledky, které prakticky opakovaly zisky získané v syntetických testovacích balíčcích.

Test beta archivátoru 7-zip 9.1, který by měl podporovat nové instrukce pro akceleraci AES, ale neukázal žádnou znatelnou výhodu – nebo byl příliš malý a ustoupil tak vysokému výpočetnímu výkonu čtyřjádrového Core i7. -870 taktovaný na 2,93 GHz, což je docela blízko nominálnímu taktu 3,33 GHz pro Core i5-661.

Nakonec můžeme potvrdit, že se přístup Intelu skutečně vyplatil, i když nelze říci, že by byl veškerý software využívající AES zrychlen. Výhody silnějšího zabezpečení však zůstávají, protože hardwarově akcelerované šifrování a dešifrování AES zabraňuje možnosti útoku na postranní kanál, kdy je klíč AES extrahován slíděním na stránkách s přístupem do paměti (mezipaměti). Náš závěr tedy bude jednoduchý: čekáme, až se nové instrukce stanou standardem pro všechny procesory.




Nahoru