QEMU/KVM использует инструкции Intel AES для зашифрованных изображений qcow2, если хост ЦП имеет их?

Вы могли выполнить его в chroot, монтируя специальные версии /tmp и такая внутренняя часть. Возможно, systemd помогает, и особенно systemd-nspawn (1), который смотрит точно так же, как то, что Вы хотите.

9
26.11.2014, 10:26
2 ответа

, по крайней мере, с пакетом Fedora 20 QEMU-IMG (1.6.2, 10.FC20) не использует AES-NI для AES Crypto.

Подтверждение

можно проверить так:

  1. имеет ли у ЦП AES-NI?

     $ GreeP AES / ProC / CPUINFO -I -I -I -I -I
     

    Например, мой Intel Core 7 имеет это расширение.

  2. Установите необходимые пакеты отладки:

     # DEBUGINFO Установите QEMU-IMG
     
  3. Run QEMU-IMG в отладчике:

     $ GDB --Args QEMU-IMG Convertvert Convert-Encryption -o qcow2 disk1.img enc1.qcow2
     
  4. Установите точку перерыва в хорошо известной функции шифрования QEMU, которая не оптимизирована для AES-NI:

     (GDB) b aes_encrypt
    Точка останова 1 на 0x794B0: файл util / aes.c, линия 881.
     
  5. Запустите программу:

     (GDB) R
    Начальная программа: / USR / BIN / QEMU-IMG Convert Convert-Encryption -o qcow2 disk1.img enc1.qcow2
     

Результаты

В моем тестировании он там остановится:

Breakpoint 1, AES_encrypt (in=0x7ffff7fabd60 "...", key=0x555555c1b510) at util/aes.c:881
881          const AES_KEY *key) {
(gdb) n
889     assert(in && out && key);
(gdb) n
881          const AES_KEY *key) {
(gdb) n
889     assert(in && out && key);
(gdb) n
896     s0 = GETU32(in     ) ^ rk[0];
(gdb) n
897     s1 = GETU32(in +  4) ^ rk[1];

означает, что, действительно, инструкции Intel AES не используются.

Моя первая мысль заключалась в том, что QEMU-IMG , возможно, просто использует Pibcrypto , так что AES-NI автоматически используется, когда доступно. QEMU-IMG Даже ссылки против Libcrypto (CF LDD $ (которые QEMU-IMG) ) - но не используют его для AES Crypto. Хм.

Я полученным местоположением точки останова через GreaPing исходный код QEMU. На Fedora вы можете получить это так:

$ fedpkg clone -a qemu
$ cd qemu
$ fedpkg source
$ tar xfv qemu-2.2.0-rc1.tar.bz2
$ cd qemu-2.2.0-rc1

Примечание: GDB может быть выведен через команду Q UIT.

8
27.01.2020, 20:07

Хотелось бы поделиться этим потоком о поддержке AES-NI в процессоре Westmere в версии 1.7.10.4 QEMU:

http://lists.gnu.org/archive/html/qemu-devel/2013-03/msg05374.html

Функциональность рассмотрена и принята в поток кода.

Далее имеется еще один поток, связанный с тем, почему в 2.2:

https://www.redhat.com/archives/libvirt-users/2015-February/msg00007.html

Поток, похоже, указывает на то, что существует способ включения этой функции, но с возможными негативными последствиями из-за несовместимости с libvirt и обнаружением CPU. Лично я бы хотел увидеть эту возможность снова.

0
27.01.2020, 20:07

Теги

Похожие вопросы