
cpuidなどのツールでcat /proc/cpuinfo
aesコマンドが利用可能かどうかを確認できますか?ところで確認してみると、/proc/crypto
AESが表示されませんでした。私はCentOS 6を使用しています。 aesカーネルモジュールをロードしないと、AES-NI命令を利用できません。私はこれを正しく理解していますか?
modprobe
適切なカーネルモジュールをロードするツールはありますか? (残念ながら管理者権限がありません)
AES-NIを使用してテストプログラムを実行していますが、パフォーマンスは予想よりはるかに低いです。
AES-NIが無効になった後、CPUはどの命令を実行するのか疑問に思います。 「ソフトウェアシミュレーション」?
編集: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:上記のモジュールはAMDプロセッサにも適用可能ですか?
答え1
このファイルには、/proc/crypto
カーネル自体がIPsecやディスク暗号化などのネットワークプロトコルなどの暗号化操作を実行するときに使用できるアルゴリズムがリストされています。この文書は、ユーザー空間プログラムが何をすることができるかについての情報を伝えません。
このaesni_intel
モジュールには、Intel AES-NIアクセラレータを使用してAESを実装するコードが含まれています。カーネルコードでAESを実行する必要がある場合は、AES-NIを使用する必要があります。
私が知っている限り、AES-NIアクセラレータを使用するためにカーネルコードは必要ありません。プログラムはAESxxx
CPU命令を発行するだけです。プロセッサに AES-NI がない場合、プログラムは誤った命令プロセッサ例外をトリガし、これは SIGILL 信号に変換されます。カーネルは不足している命令の動作をシミュレートして例外を処理できますが、私が知っている限り、LinuxはAES-NI命令に対してこれを行いません。
AES-NI命令はIntelおよびAMDプロセッサで互換性があります。