密码学08——可证明安全
身份基密码体制
背景
-
PKI公钥密码体制的问题
- 发送者必须拥有接收者的证书
- 证书管理和CRL的复杂性
- 安全性悖论
- 证书数据库被暴露给组织/机构
-
身份基公钥密码体制的优势
- 针对未准备用户的密码学
- 公钥是用户身份的某些属性,例如电子邮件地址,电话号码或生物识别数据
- 发件者只需知道接收者的身份属性即可发送加密邮件
- 接收者在收到加密邮件之后才需要与系统交互。
-
1984年由Shamir提出
- Shamir提出了一个身份基签名(Identity-based signature, IBS) 的工作系统,但没有提出身份基加密(Identity-based encryption, IBE) 的系统
-
第一个身份基加密的系统由Boneh和Franklin在2001提出,该系统基
-
于Weil配对
-
密码学当前热门课题
- Adi Shamir: Identity-Based Cryptosystems and Signature Schemes, CRYPTO 1984: 47-53 Citations:7479 Dan Boneh, Matthew K. Franklin, Identity-Based Encryption from the Weil Pairing. CRYPTO 2001: 213-229 Citations:8336
身份基密码体制运行模式
![[身份基密码体制运行模式.png]]
![[身份基密码体制运行模式IBS.png]]
数学基础
- 离散对数问题(Discrete Logarithm Problem)
- 对于乘法群 \(Z^{*}_{p}\),给定 \(r,q,p\),寻找整数 \(k\),使得\(r=q^{k}\mod{p}\)
- 许多密码体制的基础
- 标量乘法(Scalar multiplication)
- \(P,2P,3P=2P+P,4P=3P+P,\dots,kP\)
- 椭圆曲线上的离散对数问题(ECDLP)
- 给定 \(P,Q\),寻找整数 \(k\),使得 \(kP=Q\)
- 双线性映射(Bilinear map)
- 映射\(e:G_{1}\times G_{1}\rightarrow G_{2}\)
- \(\forall P,Q\in G_{1},\forall a,b\in Z,e(aP,bP)=e(P,Q)^{ab}\)。
- Weil配对(Weil Pairing)
- 双线性映射
- \(G_{1}\) 是椭圆曲线 \(F_{p}\) 上的点的群
- \(G_{2}\)是 \(F^{*}_{p^{2}}\) 的一个子群
- 双线性映射
- 高效可计算
- 米勒算法(Miller's algorithm)
- 本文中的椭圆曲线群
- \(p,q\)是素数,\(p=2\mod{3},p=6q-1\),
- \(E\)是由 \(F_{p}\) 上 \(y^{2}=x^{3}+1\) 定义的椭圆曲线
- \(G_{q}\) 是由 \(P\in \frac{E}{F_{p}}\)生成的阶数 \(q=\frac{p+1}{6}\) 的群
- 改进的Weil配对
- \(\hat{e}:G_{q}\times G_{q}\rightarrow \mu_{q}\)。
- \(\mu_{q}\)是 \(F^{*}_{p^{2}}\) 的子群,包含所有的 \(q\) 阶元素
- 非退化:\(\hat{e}(P,P)\in F_{p^{2}}\) 是 \(\mu_{q}\) 的生成元
- Weil Diffie-Hellman Assumption (WDH)
- 给定 \(\left< P,aP,bP,cP \right>\),其中随机选择 \(a,b,c\in Z^{*}_{q},P\in \frac{E}{F_{p}}\),计算 \(W=\hat{e}(P,P)^{abc}\in F_{p^{2}}\)
- 当 \(p\) 是随机 \(k\) 位素数时,不存在一个算法可以在概率多项式时间内解决WDH问题。
- MapToPoint算法
- 将任意字符串 \(ID\in \left\{ 0,1 \right\}^{*}\) 转换为一个 \(q\) 阶的点 \(Q_{ID}\in \frac{E}{F_{p}}\)
- 哈希函数 \(G:\left\{ 0,1 \right\}^{*}\rightarrow F_{p}\)
- 步骤:
- \(y_{0}=G(ID),x_{0}=(y_{0}^{2}-1)^{1/3}\)
- \(Q=(x_{0},y_{0})\in \frac{E}{F_{p}},Q_{ID}=66Q\)
- 无冲突
- 防篡改
Boneh-Franklin身份基加密算法
初始化(Setup):
- 使用已定义的椭圆曲线群
- 选择 \(q\) 阶的 \(P\in \frac{E}{F_{p}}\)
- 选择随机 \(s\in Z^{*_{q}}\) 并设置 \(P_{pub}=sP\)
- 选择哈希函数
- \(H:F_{p^{2}}\rightarrow \left\{ 0,1 \right\}^{n}\)
- \(G:\left\{ 0,1 \right\}^{*}\rightarrow F_{p}\)
- 消息空间 \(M=\left\{ 0,1 \right\}^{n}\), 密文空间为 \(C=\frac{E}{F_{P}}\times \left\{ 0,1 \right\}^{n}\)
- 系统参数是 \(\left< p,n,P,P_{pun},G,H \right>\)。 主密钥是 \(s\)
密钥生成(Extract) :
- 使用MapToPoint将 \(ID\) 映射到点 \(Q_{ID}\)
- 与 \(ID\) 对应的私钥是 \(d_{ID}=sQ_{ID}\)
加密(Encrypt)
- 使用MapToPoint将 \(ID\) 映射到点 \(Q_ID\)
- 选择随机 \(r\in Z_{q}\)
- \(C=\left< rP,M\oplus H(g^{r}_{ID}) \right>\),其中 \(g_{ID}=\hat{e}(Q_{ID},P_{pub})\)
解密(Decrypt)
-
Decrypt \(C=\left< U,V \right>\)
- 如果 \(U\) 不是 \(q\) 阶的点,则拒绝密文。
- 否则,\(M=V\oplus H(\hat{e}(d_{ID},U))\)
-
[?] 为什么 能够被回复?
\[\begin{array}{c}
\hat{e}(d_{ID})=\hat{e}(sQ_{ID},rP)=\hat{e}(Q_{ID},P_{pub}^{r}=g^{r}_{ID})=g^{r}_{ID} \\
V\oplus H(\hat{e}(d_{ID},U))=M\oplus H(g^{r}_{ID})\oplus H(g^{r}_{ID})=M
\end{array}
\]
可证明安全性与Elgamal加密方案简介
密码游戏与规约
密码游戏
![[密码游戏.png]]
\(Pr[CH 输出 1]=negl=>密码游戏是安全的\)
- [!] 几乎所有的计算性的假设和安全性都能用密码游戏来表示
\[\begin{array}{c}
G 1的可证明安全性:基于G2证明G1的安全性\\
\Uparrow\\
G 2安全\Longrightarrow G1安全\\
\Uparrow\\
G 1不安全\Longrightarrow G2不安全\\
\Uparrow\\
存在敌手攻破G1\Longrightarrow存在敌手攻破 G2\\
\end{array}
\]
规约
规约通常指的是一种将问题 A 转化为问题 B 的技术。如果能够证明在一定条件下,问题 A 的求解能够通过解决问题 B 来实现,那么问题 A 就被认为是“至少和问题 B 同样困难”或者说问题 A 可以归约到问题 B。这种方法在密码学中被用来 证明某个密码系统的安全性 或 推导某个算法的抗攻击能力。
![[规约.png]]![[规约2.png]]
Java基础总结自狂神说Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~