模糊抽取器的python实现

fuzzy-extractor的Python项目详细描述


模糊提取器

模糊提取器的python实现。

简介

模糊抽取器是一种密码学原语,用于可靠地导出密钥 来自噪音源。这使得它们适合生物识别等领域 同一对象的两个度量值可以稍微产生 不同的价值观。此实现使用汉明距离作为其误差 metric,这意味着两个二进制字符串将生成具有 如果它们的汉明距离在某个给定阈值内,则为高概率。

密钥的存储和检索是使用称为 数字储物柜。有关详细信息,请参阅 本文件。

注意,这是一个基于最近研究的概率原语。使用 这个库在真正的安全应用程序中的风险由您自己承担,最好在 对你选择的阈值进行一些经验评估。

安装

此库可以从pip安装:

$ pip install fuzzy-extractor

发展

这个存储库附带了一个makefile来帮助开发 环境配置:

$ make help

用法

开始

本节将介绍使用模糊提取器的基本知识。首先,我们需要 创建提取器:

from fuzzy_extractor import FuzzyExtractor

extractor = FuzzyExtractor(16, 8)

我们刚刚创建的提取器将接受16字节(128位)的输入值和 保证8位内的输入将产生相同的密钥 概率大于0.9999(详见参考文献)。

我们现在可以为某些输入生成密钥:

key, helper = extractor.generate('AABBCCDDEEFFGGHH')

请注意,generate()返回两个值:keyhelper。前者是 现在可以用于进一步加密的秘密。后者没有 需要保护(即,这不是秘密),但确实需要存储 如果我们想在某个地方复制相同的密钥。

只要我们有公共助手,我们就可以用任何输入复制密钥 与原稿足够接近:

r_key = extractor.reproduce('AABBCCDDEEFFGGHH', helper)  # r_key should equal key
r_key = extractor.reproduce('AABBCCDDEEFFGGHI', helper)  # r_key will probably still equal key!
r_key = extractor.reproduce('AAAAAAAAAAAAAAAA', helper)  # r_key is no longer likely to equal key

文件

有关文档,请参见doc目录。

参考文献

  • 卡内蒂、兰等。“用于低熵分布的可重用模糊抽取器。”加密技术理论与应用国际年会。斯普林格,柏林,海德堡,2016年。

卡特·雅格曼

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

推荐PyPI第三方库


热门话题
java JavaBridge errno=10054被Remotehost关闭   javafx如何在每次调用方法中的变量时更新它?(爪哇)   java mod_群集在发现后未平衡负载   Java软件编辑器/语法高亮   java为什么不能强制转换数组的结果。asList()到ArrayList?   java HIBERNATE:无法使用HIBERNATE从MySQL中提取数据   java在Google地图片段上添加布局   java在AbstractTableModel中执行setValueAt之前,我如何做一些事情?   java在整个Tomcat运行时保存变量   java如何在Thymeleaf模板中获取环境变量的值?   java Selenium Chrome驱动程序针对属性的标签   java正则表达式捕获未知数量的重复组