Come configurare smartphone e PC. Portale informativo
  • casa
  • Interessante
  • Intel AES-NI cosa c'è nel BIOS? Utilizzo delle nuove istruzioni di crittografia Intel® AES in Android.

Intel AES-NI cosa c'è nel BIOS? Utilizzo delle nuove istruzioni di crittografia Intel® AES in Android.

Traduciamo... Traduci cinese (semplificato) cinese (tradizionale) inglese francese tedesco italiano portoghese russo spagnolo turco

Purtroppo al momento non siamo in grado di tradurre queste informazioni: riprova più tardi.

introduzione

Questo articolo descrive il supporto per le nuove istruzioni di crittografia standard Intel® AES (Intel® AES-NI) in Android: cos'è, come utilizzarlo e come misurare le prestazioni. Vengono inoltre descritti un modello di utilizzo ed esempi, insieme a due scenari di crittografia che dimostrano l'utilizzo delle istruzioni. Intel AES-NI. Gli sviluppatori esperti possono saltare le prime quattro parti di questo articolo e passare direttamente all'ultima parte per familiarizzare con i casi d'uso. Gli sviluppatori meno esperti potrebbero voler leggere l'intero articolo.

Nuove istruzioni di crittografia AES (Intel AES-NI)

Le istruzioni Intel AES-NI sono state proposte nel marzo 2008 come estensione del set di istruzioni dell'architettura x86 per microprocessori Intel e AMD. Lo scopo di questa serie di istruzioni è aumentare la velocità delle applicazioni che eseguono la crittografia e la decrittografia AES dei dati.

Le istruzioni Intel AES-NI sono elencate nella Tabella 1.

Tabella 1. Istruzioni Intel® AES-NI

Verifica del supporto Intel AES-NI in Android

Puoi verificare se Intel AES-NI è supportato su una particolare piattaforma utilizzando ID CPU; controlla il valore CPUID.01H:ECX.AESNI = 1. Puoi anche usare la funzione controlla_for_aes_istruzioni dall'esempio della libreria Intel AES-NI.

Utilizzo di Intel AES-NI in Android

Puoi utilizzare Intel AES-NI in Android diversi modi:

  • scrivere codice C/C++ e utilizzare direttamente il codice assembly
  • utilizzare una libreria di terze parti esistente, come OpenSSL*
  • utilizzare l'API Java* Crypto da AndroidKitKat

Per compilare una libreria/applicazione nativa per x86 su sistema operativo Android, è necessario preparare una toolchain autonoma utilizzando il comando make-standalone-toolchain.sh nell'NDK Android:

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

Utilizzo della libreria di build

La libreria è nella cartella intel_aes_lib. Può anche essere scaricato da . Utilizzare GCC versione 4.4 o successiva, ovvero la versione NDK deve essere più recente di NDK v3. (Qui usiamo android-ndk-r9 per i test.)

makefile/shell Non esiste uno script per creare versioni per Android. Per compilare è possibile modificare il file mk_lnx86.sh. Il cambiamento principale è usare $STANDALONE_TOOCHAIN_PATH/bin/i686-linux-android-gcc invece di GCC per impostazione predefinita. Dovresti anche usare i parametri passa –D__ANDROID__.

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

Una volta compilato, puoi trasferire il programma eseguibile binario su Android e testarlo. Puoi anche usare fonte direttamente nelle tue applicazioni o utilizza la libreria binaria generata nell'NDK.

Utilizzando OpenSSL

Le istruzioni Intel AES-NI sono utilizzate da molte librerie, come ad esempio crypto++ polare SSL IPP OpenSSL e altri. (Noi usiamo OpenSSL come riferimento: istruzioni Intel AES-NI supportate in OpenSSL dalla versione sperimentale 1.0).

A partire da Android 4.3, OpenSSL è presente in AOSP Supporto Intel AES-NI, quindi devi solo compilare il codice con la configurazione richiesta. Puoi anche scaricarlo dal sito ufficiale e compilarlo tu stesso e quindi utilizzare il file *.a/*.so direttamente nel tuo progetto

1) Download: puoi scaricare OpenSSL da http://www.openssl.org/source/. Attualmente in Android 4.2 openssl-1.0.1c e in Android 4.4 - openssl-1.0.1e.È necessario utilizzare la stessa versione di OpenSSL del sistema di destinazione.

(2) Compilazione: esegui il seguente comando nella console:

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

Dopodiché il file libcrypto.a apparirà nella cartella di livello superiore. Per utilizzare il file *.COSÌ accedere " Configura Android-x86 condiviso ***”.

(3)Utilizza OpenSSL tramite NDK in un progetto Android: crea Progetto Android, dichiarare la funzione correlata a OPENSSL come nativo, quindi utilizzare il codice in jni/*.c.

Successivamente è necessario copiare i file *.a/*.so e un file di intestazione per il progetto.

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

Poi aggiungi riga successiva archiviare jni/Android.mk:

... LOCAL_MODULE:= statico LOCAL_SRC_FILES:= precompilato/libcrypto.a ... LOCAL_C_INCLUDES:= include LOCAL_STATIC_LIBRARIES:= statico –lcrypto ...

È quindi possibile utilizzare le funzioni fornite in OpenSSL per implementare le proprie funzionalità crittografare/decrittografare/SSL. Per utilizzare Intel AES-NI, utilizzare la funzione serie EVP_* come mostrato di seguito. Ciò consentirà automaticamente al modulo hardware Intel AES-NI di eseguire la crittografia e la decrittografia AES se la CPU la supporta.

//dichiarare EVP_CIPHER_CTX it, de; //init EVP_CIPHER_CTX_init(&en); EVP_CIPHER_CTX_init(&de); EVP_DecryptInit_ex(&de, NULL, NULL, NULL, NULL); //decrypt & encrpyt EVP_DecryptUpdate(&de, testo semplice, &bytes_script, testo cifrato, len); EVP_EncryptUpdate(&en, testo cifrato, &cipher_len, testo in chiaro, len); //pulisci EVP_CIPHER_CTX_cleanup(&en); EVP_CIPHER_CTX_cleanup(&de);

Quindi utilizzare ndk-build per la compilazione.

Ndk-build APP_ABI=x86

(4) Utilizzando l'API Criptovaluta Java: dentro AndroidKitKat Provider OpenSSL denominato " AndroidOpenSSL" supporta Intel AES-NI, quindi puoi usarlo javax.crypto.Cipher direttamente.

Cifratore = Cipher.getInstance(AES_ALGORITHM, “AndroidOpenSSL”); cifra.init(*);

Valutazione della prestazione

valutazione della prestazione

Strumenti di test

(1) Utilizzare gli strumenti OPENSSL. Squadra openssl come parte di OpenSSL può eseguire molte attività. Può essere utilizzato per misurare le prestazioni utilizzando velocità openssl. Predefinito openssl((se creato con il parametro AES_ASM) utilizzerà automaticamente l'accelerazione hardware Intel AES-NI. Puoi anche disabilitare facilmente l'accelerazione hardware impostandone uno variabile d'ambiente: Valore OPENSSL_ia32cap ~0x200000200000000

Velocità openssl –evp aes-256-cbc OPENSSL_ia32cap=~0x200000200000000 Velocità openssl –evp aes-256-cbc

(2) Utilizzare un programma fatto in casa.

Immagine 1. Il programma di test che abbiamo creato.

(3) Intel® Mobile Platform Monitor (Intel® MPM) è uno strumento di monitoraggio del consumo energetico da ottenere informazioni dettagliate Stato CPU/GPU/alimentazione, ecc. Per ulteriori informazioni, visitare:

Figura 2. Programma Intel®MPM

interrompere la profilazione, quindi salvare i dati dei risultati. I risultati vengono visualizzati come riepilogo testuale o come grafico.

(4) Utilizzare l'applicazione di test dalla libreria Intel AES-NI, vedere . Potere abilitare o disabilitare AESNI nel BIOS in alcuni progetti di test come aes_gladman_subset,per dimostrare i risultati delle prestazioni.

Risultati del test

Abbiamo eseguito [inserisci programma] su un tablet basato su Bay Trail in esecuzione Controllo Android 4.4. I risultati dei nostri test mostrano prestazioni di crittografia e decrittografia da 4 a 11 volte migliori, nonché un risparmio energetico di oltre il 40% quando si utilizza Intel AES-NI.

Dati di test dettagliati

Hardware: BAYTRAIL_FFRD8 PR1, sistema operativo: ANDROID 4.4
MODALITÀ
(CBC/256)
dimensione del file Intel® AES-NI abilitato Intel® AES-NI disabilitato
Tempo (s) senza I/OTempo (s) con I/OTempo (s) senza I/OTempo (s) con I/O
Crittografia351M2.89 15.4 14.59 25.61
56M0.48 2.35 2.63 4.55
Trascrizione351M1.76 38.144 19.78 28.51
56M0.29 1.9 3.16 4.62

    Nessun I/O dalla tabella sopra

    Crittografia: miglioramento delle prestazioni di quasi 5 volte, simile a OPENSSL
    Trascrizione: aumento della produttività di quasi 11 volte

    Con I/O dalla tabella sopra

    Crittografia: miglioramento delle prestazioni di quasi 1,9 volte
    Trascrizione: aumento della produttività di quasi 2 volte

Casi d'uso Intel AES-NI

L'algoritmo AES è ampiamente utilizzato in vari scenari di sicurezza dei dati, come la crittografia della trasmissione di dati su una rete, la crittografia di interi dischi o file separati. In tutti questi scenari, è possibile utilizzare Intel AES-NI, se supportato istruzioni necessarie processore centrale. Nella fig. La Figura 6 mostra una tipica trasmissione di dati in una rete; Tutti i dati trasferiti tra utenti e server vengono crittografati dopo l'autenticazione.

Figura 6. Trasferimento dati di rete tipico

Un altro caso d'uso tipico è la crittografia di intere unità o la crittografia di singoli file quando gli utenti devono salvare i dati memoria locale. Nella fig. La Figura 7 mostra l'intero flusso di lavoro dall'utente al repository:

Figura 7. Intero flusso di lavoro di crittografia

Le istruzioni hardware Intel AES-NI forniscono sia prestazioni elevate che risparmio energetico, il che è particolarmente importante per i dispositivi mobili come smartphone e tablet. Controllo dispositivi mobili(MDM) e gestione dei contenuti mobili (MCM) - estremamente fattori importanti per soluzioni di sicurezza aziendale. Questa sezione descrive Intel AES-NI in combinazione con MDM e MCM.

Un buon esempio di MDM è quando gli amministratori inviano messaggi o comandi agli utenti finali, ma tutti i dati sensibili inviati devono essere crittografati. Soluzione software AES consuma rapidamente la carica della batteria quando i dati vengono trasferiti frequentemente, ma la soluzione AES-NI di Intel utilizza soluzioni hardware che consentono di risparmiare energia e migliorare le prestazioni. Nella fig. La Figura 8 mostra uno scenario tipico in cui gli amministratori inviano comandi agli utenti utilizzando la crittografia Basato su Intel AES-NI. Il flusso di lavoro prevede la crittografia dei comandi prima di inviarli e la decrittografia dei dati per eseguire i comandi sui dispositivi degli utenti finali.

Figura 8. Scambio di dati MDM utilizzando la crittografia AES

Esempio MCM: gli utenti accedono a dati sensibili come documenti, immagini, video, ecc., con server aziendali. Tali dati trasmessi necessitano protezione affidabile. Tutti i dati devono essere crittografati prima di essere inviati agli utenti finali; Anche sui dispositivi degli utenti i dati devono essere archiviati in formato crittografato. Nella fig. La Figura 9 mostra un tipico flusso di lavoro MCM dall'inizio alla fine durante la lettura e l'archiviazione dei dati. utente finale. Le istruzioni Intel AES-NI supportano la crittografia a 256 bit, rendendolo un'eccellente soluzione di sicurezza hardware livello aziendale e di rispettare i requisiti di riservatezza.

Figura 9. Flusso di lavoro MCM

Attivare accelerazione hardware Gli sviluppatori Intel AES-NI devono utilizzare la programmazione NDK. Nella fig. La Figura 10 mostra le relazioni tipiche tra i livelli Applicazioni Android, modulo Crittografia Android e modulo Intel AES-NI C/C++. Java Native Interface (JNI) viene utilizzata per associare le funzioni C/C++ Funzioni Java. Se la programmazione NDK è nuova per te, consulta i riferimenti NDK per ulteriori informazioni.

Figura 10. Relazioni tipiche tra livelli

Conclusione

Questo articolo descrive come utilizzare le istruzioni Intel AES-NI per velocizzare la crittografia Dispositivi Android. Mostra come gli sviluppatori possono utilizzare codice assembly, librerie di terze parti e Intel NDK per velocizzare le applicazioni e risparmiare energia. Vengono descritti due scenari tipici di crittografia e decrittografia dei dati per aiutare gli sviluppatori a utilizzare Intel AES-NI nelle loro applicazioni.

Per ulteriori informazioni sugli strumenti Intel®, gli sviluppatori Android possono visitare i seguenti siti: Intel® Developer Zone per Android.

Riguardo agli Autori

Zhang Li è un ingegnere di sviluppo di applicazioni nella divisione Relazioni con gli sviluppatori di Intel® Software and Solutions Group (SSG) come parte del Mobile Enabling Team. È coinvolto nel supporto delle applicazioni Android.

Yanqing Wang è un ingegnere di sviluppo di applicazioni nella divisione Relazioni con gli sviluppatori di Intel® Software and Solutions Group (SSG) come parte del Mobile Enabling Team. Le sue responsabilità includono la gestibilità e la sicurezza delle soluzioni aziendali. Ha lo status di cintura nera Intel® Developer Zone (IDZ).

Materiali di riferimento

Intel, il logo Intel, Atom, Celeron, Core, Pentium e Xeon sono marchi di Intel Corporation negli Stati Uniti e in altri paesi.
*Altri nomi e marchi potrebbero essere di proprietà di terzi.
© Intel Corporation, 2014. Tutti i diritti riservati.

Dettagli Pubblicato: 25/04/2016 13:10

Abbiamo compilato i binari Windows dell'HodlMiner ottimizzato di Wolf0 con il supporto per il set di istruzioni AES-NI ( fonte). Questa versione del minatore è più veloce dello standard HodlMiner per i processori che supportano le istruzioni AES-NI. Tieni presente che i file binari compilati disponibili al link sottostante funzioneranno solo su Windows a 64 bit e solo su sistemi con processori AMD e Intel compatibili con il set di istruzioni AES-NI. Se la tua CPU non supporta AES-NI, utilizza versione standard di HodlMiner.

Se non sei sicuro che il tuo processore supporti il ​​set di istruzioni AES-NI, puoi verificarlo facilmente utilizzando utilità gratuita CPU-Z. Il supporto per il set di istruzioni AES-NI sui processori Intel inizia con i primi modelli della microarchitettura Westmere, la cui produzione è iniziata all'inizio del 2010. Mentre il supporto AES-NI per i processori AMD veniva fornito con i primi modelli Bulldozer AMD Family 15h, messo in vendita alla fine del 2011. Ciò significa che se il tuo processore è stato rilasciato dopo il 2011, molto probabilmente supporta AES-NI. Tieni presente che non tutti processori di bilancio supporta le istruzioni AES-NI. È possibile trovare un elenco di tutti i processori Intel con supporto AES-NI all'indirizzo questo link.

L'archivio, scaricabile dal link sottostante, contiene vari file eseguibili compilati per varie architetture CPU con supporto AES-NI. Dovresti trovare .exe file adatto al tuo processore e rinominalo semplicemente in hodlminer.exe. File eseguibili bdver1, bdver2 e bdver3 progettato per l'architettura AMD CPU Bulldozer o superiore versioni successive Architetture CPU AMD. I restanti file binari sono destinati a varie CPU Intel, a partire da Westmere, Poi Sandy Bridge, Ivy Bridge, Haswell e fine Broadwell. Architettura Silvermont per processori deboli Atom, Celeron, Pentium, che vengono utilizzati nei SoC (Systems on a Chip) e supportano anche AES-NI.

IN mondo moderno la crittografia viene utilizzata quasi ovunque, soprattutto per proteggere Informazioni importanti in aree speciali (settore della difesa, settore bancario ecc.) e nella composizione elettrodomestici: computer, smartphone, TV. Inoltre, la portata della crittografia si espande ogni anno e il volume dei dati crittografati trasmessi (archiviati) cresce.

Allo stesso tempo, la crittografia dei dati aumenta significativamente il carico computazionale sui dispositivi che la implementano, quindi non sorprende che le operazioni crittografiche vengano sempre più trasferite a livello hardware (spesso sotto forma di speciali coprocessori crittografici o schede di espansione). . IN l'anno scorso anche le istruzioni di crittografia iniziarono ad essere ampiamente implementate direttamente in unità centrali di elaborazione marchi più grandi per PC domestici e dispositivi mobili.

Utilizzando la crittografia

Poiché l’elettronica e l’automazione penetrano in tutti gli ambiti della nostra vita, aumenta la necessità di proteggere i dati trasmessi e limitare l’accesso ai componenti chiave. Quasi tutti i moderni computer, tablet e smartphone, router “intelligenti” Elettrodomestici, automobili, ecc. utilizzano attivamente la crittografia. Ad esempio, vengono utilizzati algoritmi crittografici:

  • quando ci si connette alla maggior parte delle reti dati wireless (Wi-Fi, Bluetooth, ecc.);
  • nelle comunicazioni mobili;
  • i sistemi operativi mobili (iOS, Android) crittografano i dati sui dispositivi per proteggerli da accessi non autorizzati;
  • l'archiviazione sicura delle password richiede determinati funzioni crittografiche(ovvero, la maggior parte dei dispositivi con la possibilità di impostare una password utilizza la crittografia);
  • carte bancarie, bancomat, terminali di pagamento sono sempre protetti crittograficamente;
  • Le criptovalute si basano sui principi della crittografia.

Tutto più organizzazioni e le persone sono consapevoli dell'importanza dell'utilizzo della crittografia per proteggere i dati. Così, grazie agli sforzi congiunti di molte aziende, in particolare di Google, la quota del traffico HTTP crittografato è aumentata dal 30% all’inizio del 2014 al 70% all’inizio del 2018.

Allo stesso tempo, qualsiasi crittografia è una trasformazione dei dati matematicamente complessa e richiede risorse di elaborazione aggiuntive dall’hardware. A seconda dello scenario di utilizzo dei dati, l'implementazione della crittografia può ridurre complessivamente portata(volume di dati elaborati per unità di tempo) più volte.

Algoritmi di crittografia

Esiste un gran numero di algoritmi crittografici. Sarebbe tecnicamente difficile supportarli tutti.

Alcuni algoritmi, tuttavia, vengono utilizzati molto più spesso di altri. Ciò è dovuto al fatto che molti algoritmi sono considerati obsoleti o non sufficientemente sicuri, altri risultano inutilmente complessi dal punto di vista computazionale e ci sono anche altri motivi.

Tra gli algoritmi simmetrici a blocchi va evidenziato innanzitutto [ (Advanced Encryption Standard). Questo algoritmoè stato selezionato come standard nazionale statunitense attraverso un concorso. AES è il principale algoritmo di crittografia simmetrica in molti protocolli e tecnologie (TLS, Wi-Fi, Bluetooth (dalla versione 4.0), GPG, IPsec, Bitlocker (crittografia file Sistemi Windows), LUKS (crittografia del file system Linux), Microsoft Office, molti programmi di archiviazione (WinZip, 7-zip), ecc.).

Anche gli algoritmi di hashing crittografici sono estremamente diffusi. Poiché l'algoritmo MD5 è stato riconosciuto come non sicuro, oggi gli algoritmi più comuni sono la serie SHA, principalmente SHA-1 e SHA-2, che sono anche gli standard FIPS statunitensi. Alla fine verranno sostituiti dall’algoritmo SHA-3, vincitore del relativo concorso nel 2012.

Tra gli algoritmi con chiave pubblica degni di nota sono RSA, DSA e Diffe-Hellman.

Nei processori con architettura x86 più comune (prodotti da Intel e AMD) ultime generazioni Implementate istruzioni speciali per accelerare i calcoli utilizzando algoritmi AES e SHA-1, SHA-2 (256 bit).

Istruzioni Intel

AES

Nel 2008, Intel ha proposto nuovi comandi per l'architettura x86, che hanno aggiunto il supporto hardware per l'algoritmo di crittografia AES simmetrico. SU questo momento AES è uno degli algoritmi di crittografia a blocchi più popolari. Pertanto, l'implementazione dell'hardware dovrebbe portare a un aumento delle prestazioni dei programmi che utilizzano questo algoritmo di crittografia.

Il set di nuove istruzioni si chiama AES-NI (AES New Instruction) ed è composto da quattro istruzioni per la crittografia AES

  • AESENC- Esegui un ciclo di crittografia AES,
  • AESENCLAST- Eseguire il ciclo finale di crittografia e decrittografia AES
  • AESDEC- Esegui un ciclo di decrittazione AES,
  • AESDECLAST- Eseguire il ciclo finale di decrittazione AES

e altre due istruzioni per lavorare con una chiave AES:

  • AESIMC- Colonne Mix Inverso,
  • ASSISTENTE AESKEYGEN- Contribuire alla generazione della chiave rotonda AES.

Come prima, le istruzioni sono SIMD, ovvero il tipo di dati multipli a istruzione singola. Sono supportate tutte e tre le chiavi in ​​modalità AES (con lunghezze chiave di 128, 192 e 256 bit con 10, 12 e 14 passaggi di sostituzione e permutazione).

L'utilizzo di queste istruzioni velocizza più volte le operazioni di crittografia.

SHA

  • Westmere:
    • Westmere-EP (Xeon 56xx)
  • Clarkdale (eccetto Core i3, Pentium e Celeron)
  • Arrandale (eccetto Celeron, Pentium, Core i3, Core i5-4XXM)
  • Ponte Sabbioso:
    • tutti i desktop tranne Pentium, Celeron, Core i3
    • mobile: solo Core i7 e Core i5
  • Ivy Bridge (solo i5, i7, Xeon e i3-2115C)
  • Haswell (tutti tranne i3-4000m, Pentium e Celeron)
  • Broadwell (tutti tranne Pentium e Celeron)
  • Silvermont/Airmont (tutti tranne Bay Trail-D e Bay Trail-M)
  • Goldmont
  • Lago Sky
  • Lago Kaby
  • Il lago del caffè
  • Bulldozer
  • Battipalo
  • Rullo compressore
  • Escavatore
  • Giaguaro

Le istruzioni SHA sono supportate dai processori Intel a partire dall'architettura Goldmont (2016), dai processori AMD a partire dall'architettura Zen (2017).

Altri processori

Processori scopo generale anche altre architetture e fornitori spesso includono il supporto per speciali istruzioni crittografiche.

Pertanto, il supporto per l'algoritmo AES è implementato nei processori:

L'architettura ARM dispone anche di una serie di istruzioni per gli algoritmi SHA:

  • SHA1C - Acceleratore di aggiornamento hash SHA1, scegli
  • SHA1H - SHA1 rotazione fissa
  • SHA1M - Acceleratore di aggiornamento hash SHA1, maggioranza
  • SHA1P - Acceleratore di aggiornamento hash SHA1, parità
  • SHA1SU0 - Acceleratore aggiornamento pianificazione SHA1, prima parte
  • SHA1SU1 - Acceleratore aggiornamento pianificazione SHA1, seconda parte
  • SHA256H: acceleratore di aggiornamento hash SHA256
  • SHA256H2 - Acceleratore di aggiornamento hash SHA256, parte superiore
  • SHA256SU0 - Acceleratore aggiornamento pianificazione SHA256, prima parte
  • SHA256SU1 - Acceleratore di aggiornamento della pianificazione SHA256, seconda parte

Intel Westmere a 32 nm aggiunge il supporto per l'accelerazione AES: è davvero necessario?

Oggi la sicurezza è un argomento importante, ma viene considerato importante soprattutto solo dai professionisti. Tuttavia, se la sicurezza diventa un elemento di marketing o si trasforma in una caratteristica prestazionale, aziende come Intel iniziano a promuoverla attivamente. AES o Advanced Encryption Standard è certificato dalla National Security Administration (NSA) degli Stati Uniti e dal governo degli Stati Uniti, nonché da molte altre autorità. La generazione di processori Intel dual-socket da 32 nm promette miglioramenti significativi nelle prestazioni di crittografia e decrittografia AES grazie a nuove istruzioni (solo processori dual-core Core i5). Abbiamo deciso di valutare i benefici in vita reale e ha confrontato un processore dual-core Core i5-661 con le nuove istruzioni AES con un processore quad-core Core i7-870, che non dispone del supporto per l'accelerazione della crittografia.

Clicca sull'immagine per ingrandirla.

In realtà la crittografia viene utilizzata molto più intensamente di quanto gli utenti solitamente notino. Tutto inizia con siti su Internet che contengono informazioni riservate, come dati personali degli utenti, o da siti che le contengono informazioni confidenziali sulle transazioni: utilizzano tutti la crittografia TLS o SSL. Servizi come VoIP, messaggistica istantanea e E-mail possono anche difendersi allo stesso modo. Reti private virtuali (VPN, Virtual Rete privata) è un altro esempio probabilmente molto popolare. La crittografia interessa anche ambiti sensibili come i pagamenti elettronici. Tuttavia, TLS/SSL sono protocolli di comunicazione crittografici e AES, che Intel sta accelerando a partire dalla nuova generazione di processori a 32 nm, è uno standard di crittografia di uso generale. Può essere utilizzato per crittografare singoli file, contenitori di dati e archivi o persino intere partizioni e dischi, siano essi una chiave USB o di sistema. HDD. AES può essere eseguito tramite software, ma esistono anche prodotti con accelerazione hardware, poiché la crittografia e la decrittografia rappresentano un onere computazionale notevole. Soluzioni come TrueCrypt o Microsoft BitLocker, di cui fa parte Windows Vista o Windows 7 Ultimate, sono in grado di crittografare al volo intere partizioni.

Il fatto che tu pensi o meno che ci siano dati sensibili nel tuo sistema dipende da cosa intendi con tali dati, nonché dal tuo livello di comfort personale. Inoltre, la sicurezza implica sempre la giusta strategia e accuratezza nella memorizzazione dei dati riservati. Non dovresti mai lasciare incustodite informazioni come i dettagli del tuo passaporto o il numero e la data di scadenza carta bancaria. O anche il PIN del tuo telefono.

Una cosa è certa: è meglio essere attenti e prudenti che viceversa, soprattutto perché ciò non richiede molto sforzo. L'approccio di Intel all'aggiunta dell'accelerazione AES non copre tutte le applicazioni e gli scenari di crittografia, ma solo lo standard più popolare e otterrai tutto gratuitamente su tutti i futuri processori desktop a 32 nm per la fascia mainstream o superiore. Ma le nuove istruzioni AES forniscono davvero miglioramenti significativi delle prestazioni negli scenari di crittografia tipici o si tratta più di uno sforzo di marketing? Diamo un'occhiata.

Cos'è l'AES?

AES sta per "Advanced Encryption Standard" ed è lo standard più popolare crittografia simmetrica nel mondo informatico. Lo standard funziona con blocchi da 128 bit e supporta chiavi da 128, 192 o 256 bit (AES-128, AES-192 e AES-256). Molte utility di crittografia, incluso TrueCrypt, supportavano l'algoritmo AES fin dall'inizio della sua esistenza. Ma il fattore più importante nel successo di AES, ovviamente, è la sua adozione da parte del governo degli Stati Uniti nel 2002, e come standard per la protezione dei dati classificati nel 2003.

Crittografa i dati utilizzando AES

La crittografia AES si basa su un sistema di sostituzione con permutazione, ovvero una serie di operazioni matematiche per creare un array di dati significativamente modificato (crittografato). L'informazione iniziale è testo e la chiave è responsabile dell'esecuzione di operazioni matematiche. Le operazioni possono essere semplici come lo spostamento di bit o XOR, o più complesse. Un passaggio può essere facilmente decifrato, quindi tutto algoritmi moderni la crittografia si basa su diversi passaggi. Nel caso di AES, si tratta di 10, 12 o 14 passaggi per AES-128, AES-192 o AES-256. A proposito, le chiavi AES seguono la stessa procedura dei dati utente, cioè sono una chiave circolare che cambia.

Il processo funziona con array 4x4 di singoli byte, chiamati anche box: i box S vengono utilizzati per le sostituzioni, i box P vengono utilizzati per le permutazioni. Le sostituzioni e le permutazioni vengono eseguite in fasi diverse: le sostituzioni funzionano all'interno delle cosiddette scatole e le permutazioni modificano le informazioni tra le scatole. S-box funziona secondo un principio complesso, ovvero, anche se cambia un singolo bit di input, ciò influenzerà diversi bit di output, ovvero le proprietà di ciascun bit di output dipendono da ciascun bit di input.

L'utilizzo di passaggi multipli fornisce un buon livello di crittografia, ma deve soddisfare i criteri di diffusione e confusione. Lo scattering viene eseguito attraverso una combinazione a cascata di trasformazioni S-box e P-box: quando si cambia solo un bit nel testo di input, la S-box modificherà l'output di diversi bit e la P-box lo propagherà in modo pseudo-casuale effetto su più S-box. Quando diciamo che una variazione minima nell’input produce una variazione massima nell’output, parliamo di un effetto valanga.

Quanto è sicura la crittografia AES?

Ultimamente si è discusso molto dei cosiddetti hack che aggirano la necessità di eseguire una ricerca avanzata con forza bruta per trovare la chiave di decrittazione corretta. Tecnologie come gli attacchi XSL e gli attacchi con chiavi correlate vengono discusse piuttosto intensamente, ma con scarso successo. L’unico modo efficace per violare la crittografia AES è attraverso un cosiddetto attacco a canale laterale. Per realizzarlo, l'attacco deve avvenire solo sul sistema host su cui si trova il Crittografia AES e allo stesso tempo devi trovare un modo per ottenere informazioni sulla sincronizzazione della cache. In questo caso, puoi tenere traccia del numero di cicli del computer fino al completamento del processo di crittografia.

Naturalmente, tutto questo non è così semplice, dal momento che è necessario accedere a un computer, e basta accesso completo per analizzare la crittografia e i diritti di esecuzione del codice. Ora probabilmente capirai perché i “buchi” nel sistema di sicurezza che consentono a un utente malintenzionato di ottenere tali diritti, anche se sembrano del tutto assurdi, devono essere chiusi il più rapidamente possibile. Ma non perdiamoci nei pensieri: se riesci ad accedere al computer di destinazione, recuperare la chiave AES è una questione di tempo, cioè non è più un compito dispendioso in termini di tempo per i supercomputer, che richiedono enormi risorse di calcolo.

AES all'interno di Intel

A questo punto, le istruzioni AES integrate nella CPU iniziano ad avere senso, indipendentemente dai potenziali vantaggi in termini di prestazioni. Dal punto di vista della sicurezza, il processore può elaborare le istruzioni AES in forma incapsulata, il che significa che non richiede nessuna delle tabelle di ricerca necessarie per un attacco del canale laterale.



CONTENUTO

Ragazzi, un regalo per tutti. Stiamo parlando di qualcosa come Intel AES-NI, questo può essere trovato nel BIOS, ma che cos'è? Lo scopriremo. E così ho trovato il sito Web ufficiale di Intel, dove è scritto che Intel AES-NI è un determinato insieme di comandi di crittografia che integra l'algoritmo Advanced Encryption Standard (AES) e accelera il processo di crittografia dei dati nel processo. Intel Xeon(questi sono server) e Intel Core (quelli domestici normali).

Intel AES-NI include sette nuovi comandi e consente di proteggere ulteriormente i tipi di dati alto livello sicurezza. In linea di principio, tutto è chiaro, Intel AES-NI è una sorta di nuova crittografia, ma perché è necessaria? ad una persona comune? Cercherò di scoprirlo...

Sì, cioè AES-NI esegue alcuni aspetti di AES a livello hardware, cioè proprio nel processo stesso. Bene, ora capisco un po'. Cioè, AES-NI migliora le prestazioni di AES e accelera il tipo. Dovrebbe essere crittografato più velocemente, l'unica cosa che non capisco è cosa viene crittografato? Il disco in Windows è crittografato o Archivio WinRAR sarà più veloce da creare? Questo è ciò che ancora non riesco a capire. Ma ho trovato qualche chiarimento su questo problema, dai un'occhiata:

Questo è Crittografia BitLocker Dovrebbe essere un po' più veloce. Ma per quanto riguarda le transazioni su Internet, non capisco bene: significa che il processore può partecipare alla crittografia delle connessioni Internet? Poiché l'intero processo di transazione è solitamente crittografato, a questo scopo viene utilizzato anche il protocollo HTTPS...

Insomma ragazzi, credo di aver capito tutto. Esiste qualcosa come AES, giusto? Cos'è questo? Questo algoritmo simmetrico blocca la crittografia, in breve, gioco. Ma non è questo il punto. Capisco che in alcuni programmi viene utilizzato AES, è logico? Ecco qui. Ma l'opzione Intel AES-NI non fa altro che velocizzare l'algoritmo AES, sai? Perché questa opzione funziona a livello hardware direttamente nel processo.

Quindi la domanda è: vale la pena attivare Intel AES-NI in modo che qualcosa venga crittografato più velocemente? Sì, a quanto pare è esattamente così. Ho anche letto che i programmi per la crittografia del disco possono utilizzare Intel AES-NI, ad esempio uno di questi programmi è PGPdisk.

Ragazzi, ho trovato un'immagine molto interessante che mostra il vantaggio di utilizzare AES-NI, guardate:

Beh, in effetti la differenza si nota...

Quindi, quale conclusione possiamo trarre? Intel AES-NI è una sorta di cosa integrata nel processore stesso, in realtà si tratta di una sorta di istruzioni e queste istruzioni aiutano l'algoritmo AES a funzionare più velocemente. L'algoritmo stesso può essere utilizzato da diversi programmi e, con l'aiuto di Intel AES-NI, questi programmi svolgeranno il loro lavoro più velocemente =)

Bene, ragazzi, questo è l'elemento Intel AES-NI nel BIOS:

Ragazzi, ora abbiamo capito cos'è Intel AES-NI, ma se qualcosa non va, non rimproveratelo troppo. Buona fortuna a te e che tu possa essere felice!

I migliori articoli sull'argomento