密码协议学习笔记(8.2):门限密码学
门限密码学的背景和概念:
门限密码学的思想基于秘密分享,即使用秘密分享方法将基本的公钥密码体系分布于若干参与者之间.
门限密码学包括门限加密和门限签名.
门限加密:
直接将密钥作为秘密,以秘密分享体系分享给参与者不失为一种方案,但这样会带来几个问题:
- 分发者知道密钥,不可信的分发者可能会盗用密钥
- 参与重构的成员因为得到了密钥,因此也可能在未经允许的情况下盗用密钥
为避免此类问题,给出如下的门限加密的定义:
-
分布式密钥生成:
由
运行的生成公钥 的协议协议运行结束后,每个参与者获得
-
私钥
的碎片 , -
对应该碎片的碎片验证公钥
, -
与私钥
相对应的公钥
-
-
加密算法:
输入:公钥
,明文输出:密文
-
门限解密:
由任意
个参与者,不妨设为 运行的协议输入:
- 密文
, 个私钥碎片 ,- 碎片验证公钥
输出:明文
- 密文
对于成员数为
门限ElGamal密码体系:
系统参数:
大素数
参与者数量为
分布式密钥生成:
该步骤的目标是由
参与者
- 随机生成多项式
并记 - 将
发送给其他参与者. - 收到其他参与者发来的
后,计算并发布 作为公共公钥. - 以秘密分发者的身份执行Feldman的VSS方案(回顾密码协议学习笔记(8.1):秘密分享 - Isakovsky - 博客园 (cnblogs.com)),在
之间分享秘密 ,记 得到的关于 的碎片是 - 将自己收到的碎片相加,就得到自己关于私钥
的私钥碎片 - 计算自己的碎片验证公钥
加密:
收到公共公钥
- 随机选取
- 计算
- 计算
- 将
作为密文发送
门限解密:
收到消息
参与者
- 使用自己的私钥碎片
计算 并发送给其他人 - 生成一个知识证据
以证明自己使用了正确的 计算出了 ,即 使得 同时成立,生成的方式可参考密码协议学习笔记(8.15):知识证据 - Isakovsky - 博客园 (cnblogs.com) - 收到其他人发来的
后,使用 验证 的有效性 - 计算如下式子以恢复明文
其中 为Lagrange插值系数.
正确性证明:
可以看出,即使在门限解密环节,私钥
门限签名:
定义:成员数为
-
密钥生成协议:
各参与者
协作运行的协议.协议结束时,参与者
获得私钥 的碎片 ,公钥 公开发布 -
签名生成协议:
至少
个参与者,不妨记为 协作运行的协议公开输入为待签名信息
和公钥公开输出为签名
-
签名验证算法:
与通常的签名验证算法完全一致
门限RSA签名协议:
系统参数:
参与者数量为
碎片分发:
分发者做如下工作以生成并分发密钥碎片:
- 选取大质数
,计算 , - 选取
,计算 - 使用Shamir秘密分享方案生成
的碎片 并分发给成员 - 随机生成盐
,计算碎片验证公钥 , ,然后将 公开. - 将
作为公钥公开. - 由于正常运行协议时,参与者不应知道
的值,因此需预先计算出模 下的Lagrange插值系数 供参与者使用 另,由于 ,所以 ,故 的模 逆元必然存在.
分布式签名:
对于待签名信息
- 计算
- 生成知识证据
以证明 ,和 一同发送给其他参与者. - 通过知识证据验证其他人发来的
的有效性 - 计算
作为签名.
实际上,
签名验证:
和一般的RSA签名算法验证方式一样,验证者计算
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-10-09 2019ccpc秦皇岛/Gym102361 I - Invoker dp
2019-10-09 2019ccpc秦皇岛/Gym102361 D - Decimal 签到
2019-10-09 2019ccpc秦皇岛/Gym102361 F Forest Program 仙人掌上dfs