分布式随机信标客户端

drb-client的Python项目详细描述


DRB客户端

分布式随机信标客户端

从多个drand实例收集熵,安全地将响应和输出混合到内核熵池或stdout。适合与League of Entropy服务器一起使用(请参阅“运行”部分)。

drb-client可以用作高质量随机数的独立源,也可以用作linux内核中熵池的附加源。产生的熵应足以使基于rng可预测性的攻击脱轨。

密码学背景

drb-client轮询具有给定间隔的drand服务器的列表,并从每个服务器请求私有熵数据部分。drb-clientdrand之间的通信受AES256-GCM加密保护,AES256-GCM加密派生于TLS顶部的BN-256曲线上(这是由drandAPI格式强制的)。

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单元文件的示例。

学分

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径