Virtio RNG 是一种半虚拟化的随机数字生成器。Virtio RNG 会提供由虚拟机 (VM) 实例的宿主机生成的内核熵池中的随机数字。内核熵池会从系统收集随机信息,并使用该信息生成真正随机数字,以便用于敏感信息(如 SSH 密钥或唯一 ID)。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
限制
- Virtio RNG 不适用于 Windows 映像。
- 默认情况下,Compute Engine 虚拟机使用 Virtio RNG 而不是守护程序来重新填充客机内核熵池。如果您希望使用熵收集守护进程而不是 Virtio RNG,或将两者结合使用,则必须安装一个 Virtio RNG。如需查看熵收集守护程序的示例,请参阅
rng-tools
文档。
检查是否已启用 Virtio RNG
您可以通过运行以下命令来检查是否已在虚拟机上启用了 Virtio RNG:
lsmod | grep rng
启用 Virtio RNG 后,您的输出类似于以下内容:
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
测试 Virio RNG
您可以使用 /dev/random
设备来测试 Virtio RNG。
使用 SSH 连接到虚拟机。例如,您可以使用 gcloud CLI 进行连接:
gcloud compute ssh VM_NAME
将
VM_NAME
替换为虚拟机名称。安装
rng-tools
:CentOS
使用以下命令安装
rng-tools
:sudo yum install rng-tools
Debian
使用以下命令安装
rng-tools
:sudo apt install rng-tools
Fedora CoreOS
使用以下命令安装
rng-tools
:sudo yum install rng-tools
RHEL
使用以下命令安装
rng-tools
:sudo yum install rng-tools
SLES
使用以下命令安装
rng-tools
:sudo zypper install rng-tools
Ubuntu LTS
使用以下命令安装
rng-tools
:sudo apt install rng-tools
某些 Ubuntu 映像会返回
Package 'rng-tools' has no installation candidate
错误。如果收到此错误,请运行以下命令:sudo apt update sudo apt install rng-tools
在虚拟机上,运行
rngtest
命令:cat /dev/random | rngtest -c 1000
如果 Virtio RNG 未启用,则该命令不会返回任何内容。如果 Virtio RNG 已启用,您会收到类似于以下内容的响应:
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
后续步骤
- 详细了解 Virtio RNG
- 详细了解
/dev/random
- 查看操作系统详情,详细了解 Compute Engine 上提供的映像