分布式随机信标客户端
drb-client的Python项目详细描述
DRB客户端
分布式随机信标客户端
从多个drand实例收集熵,安全地将响应和输出混合到内核熵池或stdout。适合与League of Entropy服务器一起使用(请参阅“运行”部分)。
drb-client
可以用作高质量随机数的独立源,也可以用作linux内核中熵池的附加源。产生的熵应足以使基于rng可预测性的攻击脱轨。
密码学背景
drb-client
轮询具有给定间隔的drand
服务器的列表,并从每个服务器请求私有熵数据部分。drb-client
和drand
之间的通信受AES256-GCM加密保护,AES256-GCM加密派生于TLS顶部的BN-256曲线上(这是由drand
API格式强制的)。
drb-client
从至少quorum
(-Q
选项)不同的输入构造熵的每个输出。假设至少node_count - quorum + 1
节点产生真正不可预测的安全随机数,因此任何不同响应的quorum
肯定包含至少一个真正随机的输入(由于pigeonhole principle)。
信标服务器的熵部分使用基于状态hkdf的混频器进行混合。每一组足够的随机响应被用来为hkdf混频器产生随机输出和新的盐值。因此,在成功生成第一个输出之后,混频器输出变得不可预测,即使所有信标服务器都受到损害,并开始向客户端提供有偏差的数据。
默认的轮询间隔为60秒,选择此间隔是有原因的。drand
使用其/dev/urandom
为每个响应生成熵。在Linux上,每1分钟从/dev/random
重新初始化urandom
。因此没有理由更频繁地获取随机数据:重新初始化之间的响应是函数依赖的。
安装
需要python 3.5.3+
来自Pypi
pip3 install drb-client
来源
下载或克隆存储库,并在源代码目录中运行以下命令:
pip3 install .
运行
几乎没有可用的熵汇(选项-O
):
devrandom
-(默认)将收集的熵写入/dev/random
设备,池中可用熵的内核计数器不增加。stdout
-将收集到的熵写入标准输出。rndaddentropy
-将收集到的熵写入/dev/random
设备,池中可用熵的内核计数器增加。需要超级用户权限才能操作。
您可以使用熵服务器联盟列表获得最新的group.toml
配置here。
使用默认接收器运行:
drb-client group.toml
加入/dev/random
和增量熵计数器:
sudo drb-client -O rndaddentropy group.toml
有关登录到文件的信息,请参阅“概要”部分。
概要
$ drb-client --help
usage: drb-client [-h] [-v {debug,info,warn,error,fatal}] [-l FILE]
[-Q QUORUM] [-T PERIOD] [-w TIMEOUT]
[-O {stdout,rndaddentropy,devrandom}]
group_config
Distributed Randomness Beacon client
positional arguments:
group_config group config
optional arguments:
-h, --help show this help message and exit
-v {debug,info,warn,error,fatal}, --verbosity {debug,info,warn,error,fatal}
logging verbosity (default: info)
-l FILE, --logfile FILE
log file location (default: None)
poll options:
-Q QUORUM, --quorum QUORUM
minimal answers required on each poll. Default value
is (node_count // 2 + 1). (default: None)
-T PERIOD, --period PERIOD
poll interval for each source (default: 60)
-w TIMEOUT, --timeout TIMEOUT
timeout for each request (default: 4)
output options:
-O {stdout,rndaddentropy,devrandom}, --output {stdout,rndaddentropy,devrandom}
entropy output (default: devrandom)
展开
您可以使用熵服务器联盟列表获得最新的group.toml
配置here。
请参见deploy/drb-client.service以获取systemd单元文件的示例。