Conjunto de instruções AES - AES instruction set
Um conjunto de instruções Advanced Encryption Standard está agora integrado em muitos processadores. O objetivo do conjunto de instruções é melhorar a velocidade e a segurança dos aplicativos que executam a criptografia e a descriptografia usando o Advanced Encryption Standard (AES).
Eles são frequentemente implementados como instruções que implementam uma única rodada de AES, juntamente com uma versão especial para a última rodada, que tem um método ligeiramente diferente.
A superfície de ataque do canal lateral do AES é reduzida quando implementado em um conjunto de instruções, em comparação com quando o AES é implementado apenas no software.
processadores de arquitetura x86
AES-NI (ou as novas instruções do padrão de criptografia avançada Intel ; AES-NI ) foi a primeira implementação importante. AES-NI é uma extensão da arquitetura do conjunto de instruções x86 para microprocessadores da Intel e AMD proposta pela Intel em março de 2008.
Instruções
Instrução | Descrição |
---|---|
AESENC
|
Execute uma rodada de um fluxo de criptografia AES |
AESENCLAST
|
Execute a última rodada de um fluxo de criptografia AES |
AESDEC
|
Execute uma rodada de um fluxo de descriptografia AES |
AESDECLAST
|
Execute a última rodada de um fluxo de descriptografia AES |
AESKEYGENASSIST
|
Auxiliar na geração de chave rodada AES |
AESIMC
|
Auxiliar em colunas de mixagem inversa AES |
Intel
Os seguintes processadores Intel suportam o conjunto de instruções AES-NI:
-
Processadores baseados em Westmere , especificamente:
- Processadores Westmere-EP (também conhecido como modelo de servidor DP da série Gulftown Xeon 5600)
- Processadores
- Processadores Arrandale (exceto Celeron, Pentium, Core i3, Core i5-4XXM)
- Desktop: todos exceto Pentium, Celeron, Core i3
- Móvel: todos os Core i7 e Core i5. Vários fornecedores enviaram configurações de BIOS com a extensão desabilitada; uma atualização do BIOS é necessária para habilitá-los.
- Todos i5, i7, Xeon e i3-2115C apenas
AMD
Vários processadores AMD suportam instruções AES:
- Processadores Jaguar e mais novos
- Processadores Puma e mais novos
- Processadores de "equipamento pesado"
- Processadores bulldozer
- Processadores Piledriver
- Processadores Steamroller
- Processadores de escavadeira e mais novos
- Processadores baseados em Zen (e posterior)
Aceleração de hardware em outras arquiteturas
O suporte AES com instruções de processador sem privilégios também está disponível nos processadores SPARC mais recentes ( T3 , T4 , T5 , M5 e posterior) e nos processadores ARM mais recentes . O processador SPARC T4 , lançado em 2011, possui instruções de nível de usuário que implementam rodadas AES. Essas instruções são adicionais aos comandos de criptografia de nível superior. A arquitetura do processador ARMv8-A , anunciada em 2011, incluindo o ARM Cortex-A53 e A57 (mas não os processadores v7 anteriores como o Cortex A5, 7, 8, 9, 11, 15) também tem instruções de nível de usuário que implementam rodadas AES . Em agosto de 2012, a IBM anunciou que a arquitetura Power7 + então futura teria suporte AES. Os comandos nessas arquiteturas não são diretamente equivalentes aos comandos AES-NI, mas implementam funcionalidades semelhantes.
IBM z9 ou processadores de mainframe posteriores suportam AES como instruções de código de operação único (KM, KMC) AES ECB / CBC por meio do hardware CryptoExpress da IBM. Essas versões AES de instrução única são, portanto, mais fáceis de usar do que as da Intel NI, mas não podem ser estendidas para implementar outros algoritmos baseados em funções round AES (como as funções de hash Whirlpool e Grøstl ).
Compatível com CPUs x86
CPUs VIA x86 , AMD Geode e Marvell Kirkwood (ARM, mv_cesa no Linux) usam manipulação AES acelerada baseada em driver. (Consulte Crypto API (Linux) .)
Os seguintes chips, embora suportem aceleração de hardware AES, não suportam AES-NI:
- AMD Geode LX processadores
- VIA , usando VIA PadLock
Arquitetura ARM
As informações de programação estão disponíveis no ARM Architecture Reference Manual ARMv8, para o perfil de arquitetura ARMv8-A (Seção A2.3 "A extensão criptográfica Armv8") .
- Arquitetura ARMv8-A
- Extensões criptográficas ARM com suporte opcional em núcleos ARM Cortex-A30 / 50/70
- Aceleradores / motores criptográficos de hardware
Arquitetura RISC-V
Embora a arquitetura RISC-V não inclua instruções específicas de AES, vários chips RISC-V incluem coprocessadores AES integrados. Exemplos incluem:
- Dual-core RISC-V 64 bits Sipeed-M1 suporta AES e SHA256.
- ESP32 -C baseado na arquitetura RISC-V (bem como ESP32 baseado em Xtensa), suporte AES, SHA, RSA, RNG, HMAC, assinatura digital e XTS 128 para flash.
- O Bouffalo Labs BL602 / 604 RISC-V de 32 bits suporta várias variantes AES e SHA.
Outras arquiteturas
- Atmel XMEGA (acelerador no chip com execução paralela, não uma instrução)
- SPARC T3 e processadores posteriores têm suporte de hardware para vários algoritmos criptográficos, incluindo AES.
- Cavium Octeon MIPS Todos os processadores Cavium Octeon MIPS têm suporte de hardware para vários algoritmos criptográficos, incluindo AES usando instruções especiais do coprocessador 3.
atuação
No AES-NI Performance Analyzed , Patrick Schmid e Achim Roos encontraram "resultados impressionantes de um punhado de aplicativos já otimizados para aproveitar as vantagens da capacidade AES-NI da Intel". Uma análise de desempenho usando a biblioteca de segurança Crypto ++ mostrou um aumento no rendimento de aproximadamente 28,0 ciclos por byte para 3,5 ciclos por byte com AES / GCM versus um Pentium 4 sem aceleração.
Software de suporte
A maioria dos compiladores modernos pode emitir instruções AES.
Muitos softwares de segurança e criptografia suportam o conjunto de instruções AES, incluindo a seguinte infraestrutura central notável:
- Criptografia de disco completo FileVault 2 da Apple no macOS 10.10+
- NonStop SSH2 , NonStop cF SSL Library e BackBox VTC Software no HPE Tandem NonStop OS série L
- API de criptografia: Next Generation (CNG) (requer Windows 7)
- API de criptografia do Linux
- Java 7 HotSpot
- Network Security Services (NSS) versão 3.13 e superior (usado pelo Firefox e Google Chrome )
- Solaris Cryptographic Framework no Solaris 10 em diante
- FreeBSD OpenCrypto API 's (aesni (4) motorista)
- OpenSSL 1.0.1 e superior
- GnuTLS
- Libsodium
- VeraCrypt
- Linguagem de programação Go
- BitLocker
Um uso marginal do conjunto de instruções AES envolve usá-lo em cifras de bloco com uma S-box de estrutura semelhante , usando isomorfismo afim para converter entre os dois. SM4 e Camellia foram acelerados usando AES-NI.
Veja também
- Extensões de vetor avançadas (AVX)
- Conjunto de instruções CLMUL
- Conjunto de instruções FMA (FMA3, FMA4)
RDRAND