Habilitar Virtio RNG


Virtio RNG es un generador de números aleatorios paravirtualizado. Virtio RNG proporciona números aleatorios de un conjunto de entropía generado por la máquina host de tu instancia de máquina virtual. El conjunto de entropía recoge bits aleatorios de información del sistema y los usa para generar números verdaderamente aleatorios, que puedes usar para información sensible, como claves SSH o IDs únicos.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

Limitaciones

  • Virtio RNG no está disponible para imágenes de Windows.
  • De forma predeterminada, las VMs de Compute Engine usan Virtio RNG en lugar de un daemon para rellenar el grupo de entropía de los invitados. Si prefieres usar un daemon de recolección de entropía en lugar de Virtio RNG o junto con él, debes instalar uno. Para ver un ejemplo de un daemon de recolección de entropía, consulta la documentación de rng-tools.

Comprobar si Virtio RNG está habilitado

Para comprobar si Virtio RNG está habilitado en tu máquina virtual, ejecuta el siguiente comando:

lsmod | grep rng

Cuando Virtio RNG está habilitado, el resultado es similar al siguiente:

virtio_rng             16384  0
rng_core               16384  2 virtio_rng
virtio_ring            28672  4 virtio_rng,virtio_scsi,virtio_pci,virtio_net
virtio                 16384  4 virtio_rng,virtio_scsi,virtio_pci,virtio_net

Probar Virtio RNG

Puedes probar Virtio RNG con el dispositivo /dev/random.

  1. Conéctate a la VM mediante SSH. Por ejemplo, puedes usar la CLI de gcloud para conectarte:

    gcloud compute ssh VM_NAME
    

    Sustituye VM_NAME por el nombre de tu VM.

  2. Instalar rng-tools:

    CentOS

    Usa el siguiente comando para instalar rng-tools:

    sudo yum install rng-tools

    Debian

    Usa el siguiente comando para instalar rng-tools:

    sudo apt install rng-tools

    Fedora CoreOS

    Usa el siguiente comando para instalar rng-tools:

    sudo yum install rng-tools

    RHEL - 6, 7

    Usa el siguiente comando para instalar rng-tools:

    sudo yum install rng-tools

    SLES

    Usa el siguiente comando para instalar rng-tools:

    sudo zypper install rng-tools

    Ubuntu LTS

    Usa el siguiente comando para instalar rng-tools:

    sudo apt install rng-tools

    Algunas imágenes de Ubuntu devuelven un error Package 'rng-tools' has no installation candidate. Si aparece este error, ejecuta los siguientes comandos:

    sudo apt update
    sudo apt install rng-tools
    
  3. En la máquina virtual, ejecuta el comando rngtest:

    cat /dev/random | rngtest -c 1000
    

Si Virtio RNG no está habilitado, el comando no devuelve nada. Si está habilitada, recibirá una respuesta similar a la siguiente:

rngtest 2-unofficial-mt.14..
rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 1000
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 0
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=4.801; avg=7.318; max=7.839)Mibits/s
rngtest: FIPS tests speed: (min=39.005; avg=69.557; max=72.523)Mibits/s
rngtest: Program run time: 2880954 microseconds

Siguientes pasos