SharedVault是一个小应用程序,它允许您定义需要多人解锁的秘密。

sharedvault的Python项目详细描述


共享故障

SharedVault是一个小应用程序,它允许您定义需要多人解锁的秘密。在

它是如何工作的?在

SharedVault的核心是使用Shamir的秘密共享算法(有些代码直接从wikipedia页面复制)。这允许我们定义一个密钥(M,N)和N个部分,其中密钥可以从M个部分恢复。 在此基础上,我们添加了一个层,每个用户都有一个公钥/私钥来加密他们持有的共享。 这允许以下功能:

  • 用户更改选择并更改其密码。在
  • 用户只需记住一个密码(而不是每个共享一个)。在
  • 我们可以授予用户访问权限,而不必通过不可信网络通信共享。在

安全考虑

私钥

私钥存储在主数据库中,并用用户的密码加密。弱/泄露的密码会破坏私钥,因此它可以解密的所有共享。在

秘密加密

秘密本身是用Fernet算法加密的。密钥由Shamir的秘密共享算法生成的秘密数通过Scrypt得到。 请注意,我不知道我在做什么,因此很可能存在与scrypt配置相关的缺陷,可能会危及机密的安全性。在

取消访问

每次更新一个秘密,我们都会为新的加密生成一组全新的密钥。这允许我们拒绝将来访问从机密中删除密钥的用户。在

删除

SharedVault使用您提供的数据库,因此我们无法防止删除,因为数据库本身可能会被删除。在

过去的密码/密钥

出于同样的原因,我们不能强制数据库的以前版本被永久删除。这意味着,如果旧密码或密钥泄漏,并且以前的数据库可用,则该密钥将被压缩。在

如何使用它?在

我将添加更多使用此工具的方法,但现在有一个cli可用于运行:

$ pipenv run python -m cli --db=$DB_CONN_STR --help

根据所使用的数据库类型,可能需要其他依赖项。您可以在https://docs.sqlalchemy.org/en/13/core/engines.html上阅读有关连接字符串格式、可用后端和其他依赖项的详细信息。在

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

推荐PyPI第三方库


热门话题
插入表达式以完成JAVA语句块时出现语法错误   在linkedlist中的特定节点后插入java   java如何将参数传递给安卓 junit测试(参数化测试)   java在运行时将数据添加到片段中的RecyclerView,在该片段中,数据是在单独的片段中创建的   java apache CsrfPreventionFilter和404错误   java Ask是安卓 6.0的多重权限   java将字符串解析为Time并插入mysqldatabase   java扩展MyBatis映射器接口可能导致异常   java SparkSql不支持日期格式   在java中剪切字符串的一部分   将Java lambda的结果分配给字段   在Java中解析OCL?   java解析json到安卓中活动中的对象   用于时区转换的JavaAPI   在Oracle上建立与ESRI geodatabase直接连接的java在未处于调试模式时挂起   拆分文件时出错。使用Java8的xml文件   java eclipse jsp无颜色、代码完成和错误检测   java spring kafka侦听器在错误的位置查找ContainerProperty   java Springboot应用程序@EnableConfigServer无法在Eclipse中解析   当尝试使用ConstraintLayout将java视图添加到同一行时,java视图会被截断