Skip to content

Latest commit

 

History

History
54 lines (41 loc) · 2.01 KB

File metadata and controls

54 lines (41 loc) · 2.01 KB

使用 Firecracker 熵设备

什么是熵设备

熵设备是一种virtio-rng设备,为客户机提供“用于客户机的优质随机数”。客户机以缓冲区形式发出请求,该缓冲区将由设备填充随机字节。设备用于填充缓冲区的随机字节来源是一个实现上的决定。

在客户机侧,内核将通过设备接收的随机字节作为额外的熵源。此外,客户机 VirtIO 驱动程序暴露了/dev/hwrng字符设备。用户空间应用程序可以使用此设备向该设备请求随机字节。

Firecracker 实现

Firecracker 提供附加单个 virtio-rng 设备的功能。用户可通过 /entropy API 接口进行配置。请求主体包含一个(可选)参数用于配置速率限制器。

例如,用户可以像这样为熵设备配置 10KB/秒的带宽速率限制器:

curl --unix-socket $socket_location -i \
    -X PUT 'http://localhost/entropy' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -d "{
        \"rate_limiter\": {
            \"bandwidth\": {
                \"size\": 1000,
                \"one_time_burst\": 0,
                \"refill_time\": 100
            }
        }
    }"

若使用配置文件配置微虚拟机,可通过添加如下部分实现相同设置:

"entropy": {
    "rate_limiter": {
        "bandwidth" {
            "size": 1000,
            "one_time_burst": 0,
            "refill_time": 100
        }
    }
}

在主机端,Firecracker 依赖aws-lc-rs获取随机字节。aws-lc-rs使用AWS-LC加密库

先决条件

要使用熵设备,用户必须使用以virtio-rng 前端驱动程序作为模块编译或加载的内核。相关的内核配置选项是CONFIG_HW_RANDOM_VIRTIO(该选项依赖于 CONFIG_HW_RANDOMCONFIG_VIRTIO)。