模糊抽取器的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()返回两个值:key和helper。前者是 现在可以用于进一步加密的秘密。后者没有 需要保护(即,这不是秘密),但确实需要存储 如果我们想在某个地方复制相同的密钥。
只要我们有公共助手,我们就可以用任何输入复制密钥 与原稿足够接近:
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年。
卡特·雅格曼