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
    Clarkdale (exceto Core i3, Pentium e Celeron)
  • Processadores Arrandale (exceto Celeron, Pentium, Core i3, Core i5-4XXM)
  • Processadores Sandy Bridge :
    • 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.
  • Processadores Ivy Bridge
    • Todos i5, i7, Xeon e i3-2115C apenas
  • Processadores Haswell (todos exceto i3-4000m, Pentium e Celeron)
  • Processadores Broadwell (todos exceto Pentium e Celeron)
  • Processadores Silvermont / Airmont (todos exceto Bay Trail-D e Bay Trail-M)
  • Processadores Goldmont (e posteriores)
  • Processadores Skylake (e posteriores)
  • AMD

    Vários processadores AMD suportam instruções AES:

    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:

    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:

    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

    Notas

    Referências

    links externos