aes-ni ativado, mas sem suporte ao kernel?

1

Ferramentas como cpuid e cat /proc/cpuinfo podem confirmar que as instruções aes estão disponíveis, certo? Mas então eu verifico /proc/crypto e não vejo o AES. Estou executando o CentOS 6. Estou correto em meu entendimento que sem o módulo do kernel para aes carregado, não posso tirar proveito das instruções AES-NI?

Uma ferramenta como modprobe carregaria o módulo do kernel apropriado? (infelizmente eu não tenho direitos de administrador)

Estou executando um programa de teste que usa AES-NI e o desempenho é uma ordem de grandeza abaixo do esperado.

Eu também estou curioso, com o AES-NI desativado, quais instruções a CPU está executando? "Emulação de software"?

EDIT: Eu vejo o seguinte quando eu corro modinfo

$ /sbin/modinfo aesni_intel
filename:       /lib/modules/2.6.32-431.17.1.el6.x86_64/kernel/arch/x86/crypto/aesni-intel.ko
alias:          aes
license:        GPL
description:    Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized
srcversion:     E6C037FA50922CF84440A82
depends:        glue_helper,aes-x86_64,lrw,cryptd,aes_generic,ablk_helper
vermagic:       2.6.32-431.17.1.el6.x86_64 SMP mod_unload modversions 

EDIT2: O módulo acima também está correto para processadores AMD?

    
por bernie 20.07.2016 / 19:45

1 resposta

0

O arquivo /proc/crypto lista os algoritmos disponíveis quando o próprio kernel executa operações criptográficas, por exemplo, para protocolos de rede como IPsec e para criptografia de disco. Este arquivo não transmite informações sobre o que os programas de usuário podem fazer.

O módulo aesni_intel contém código que implementa o AES usando o acelerador Intel AES-NI. É necessário usar o AES-NI quando o código do kernel precisar executar o AES.

Até onde eu sei, usar o acelerador AES-NI não requer nenhum código do kernel. Um programa só precisa emitir as instruções da AESxxx da CPU. Se o processador não tiver AES-NI, o programa acionará uma exceção de processador de instrução inválida, que é traduzida como um sinal SIGILL. Seria possível para o kernel lidar com a exceção, emulando o comportamento da instrução perdida, mas, para mim, o Linux não faz isso para as instruções AES-NI.

A instrução AES-NI é compatível com processadores Intel e AMD.

    
por 21.07.2016 / 01:12

Tags