IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 可证明安全——签名 -> 正文阅读

[网络协议]可证明安全——签名

定义

定义数字签名方案 Π = ( Gen,?Sign,?Vrfy ) \Pi = (\text{Gen, Sign, Vrfy}) Π=(Gen,?Sign,?Vrfy) 如下:

  • Gen:输入安全参数 1 n 1^n 1n,输出长度均为 n n n 的公司钥对 ( p k , s k ) (pk,sk) (pk,sk)
  • Sign:输入私钥 s k sk sk 和明文 m m m,输出签名 σ ← Sign s k ( m ) \sigma \leftarrow \text{Sign}_{sk}(m) σSignsk?(m)
  • Vrfy:输入公钥 p k pk pk,明文 m m m,签名 σ \sigma σ。输出 Vrfy p k ( m , σ ) \text{Vrfy}_{pk}(m,\sigma) Vrfypk?(mσ)

安全性

定义伪造签名实验 Sig-forge A , Π ( n ) \text{Sig-forge}_{\mathcal{A},\Pi}(n) Sig-forgeA,Π?(n)

  • ( p k , s k ) ← Gen ( 1 n ) (pk,sk)\leftarrow \text{Gen}(1^n) (pk,sk)Gen(1n)
  • 敌手 A \mathcal A A 输入 p k , Sign s k ( ? ) pk, \text{Sign}_{sk}(\cdot) pk,Signsk?(?),敌手输出 ( m , σ ) (m,\sigma) (m,σ) Q \mathcal Q Q 表示 A \mathcal A A 查询过的全部明文。
  • A \mathcal A A 成功当且仅当 Vrfy p k ( m , σ ) = 1 \text{Vrfy}_{pk}(m,\sigma) = 1 Vrfypk?(m,σ)=1 m ? Q m \notin \mathcal Q m/?Q

电子签名方案 Π = ( Gen,?Sign,?Vrfy ) \Pi = (\text{Gen, Sign, Vrfy}) Π=(Gen,?Sign,?Vrfy) 不可伪造,当且仅当对任意多项式时间敌手 A \mathcal A A
Pr ? [ Sig-forge A , Π ( n ) = 1 ] ≤ negl ( n ) \Pr[\text{Sig-forge}_{\mathcal A, \Pi}(n)=1] \le \text{negl}(n) Pr[Sig-forgeA,Π?(n)=1]negl(n)

RSA-FDH 原理

GenRSA 是一个多项式算法,输入 1 n 1^n 1n,输出两个 n n n 位质数的乘积 N N N,两个整数 e , d e,d e,d 满足 e d ≡ 1 ( m o d ? ( N ) ) ed \equiv 1 \pmod {\phi(N)} ed1(mod?(N))
定义 RSA-FDH 加密方案如下:

  • Gen: < N , e , d > ← GenRSA ( 1 n ) <N,e,d> \leftarrow \text{GenRSA}(1^n) <N,e,d>GenRSA(1n)。公钥为 < N , e > <N,e> <N,e>,私钥为 < N , d > <N,d> <N,d>。指定 H : { 0 , 1 } ? → Z N ? H:\{0,1\}^* \rightarrow \mathbb Z_N^* H:{0,1}?ZN??
  • Sign:输入私钥 < N , d > <N,d> <N,d> 和明文 m ∈ { 0 , 1 } ? m \in \{0,1\}^* m{0,1}?,计算 σ ← [ H ( m ) d m o d ?? N ] \sigma \leftarrow [H(m)^d \mod N] σ[H(m)dmodN]
  • Vrfy:输入公钥 <N,e>,消息 m m m,签名 σ \sigma σ,当且仅当 σ e = H ( m ) m o d ?? N \sigma ^ e = H(m) \mod N σe=H(m)modN 时,输出 1

证明

当 RSA 假设成立,且 H H H 符合随机预言模型,即将输入随机映射到 Z n ? \mathbb Z_n^* Zn?? 时,可以证明其不可伪造性。
A \mathcal A A 查询 H H H q q q 次,构造实验 Sig-forge A , Π ′ ( n ) \text{Sig-forge}'_{\mathcal{A}, \Pi}(n) Sig-forgeA,Π?(n)

  • 随机选择 j ∈ { 1 , . . . , q } j \in \{1, ..., q\} j{1,...,q}(不输入给 A \mathcal A A
  • ( N , e , d ) ← GenRSA ( 1 n ) (N,e,d) \leftarrow \text{GenRSA}(1^n) (N,e,d)GenRSA(1n),选定随机函数 H : { 0 , 1 } ? → Z N ? H:\{0,1\}^* \rightarrow \mathbb Z_N^* H:{0,1}?ZN??
  • 给敌手 A \mathcal A A 输入 p k = ( N , e ) , H , Sign < N , d > ( ? ) pk = (N,e), H, \text{Sign}_{<N,d>}(\cdot) pk=(N,e),H,Sign<N,d>?(?),明文 m m m,返回 σ ← [ H ( m ) d m o d ?? N ] \sigma \leftarrow [H(m)^d \mod N] σ[H(m)dmodN]。当查询 Sign < N , d > ( m j ) \text{Sign}_{<N,d>}(m_j) Sign<N,d>?(mj?) 时,会返回失败。
  • A \mathcal A A 输出此前没有查询过签名的 ( m , σ ) (m, \sigma) (m,σ)。设 m = m i m = m_i m=mi? 为第 i i i 次查询 H H H 的输入。 Sig-forge A , Π ′ ( n ) = 1 \text{Sig-forge}'_{\mathcal{A}, \Pi}(n) = 1 Sig-forgeA,Π?(n)=1 当且仅当 σ e ≡ H ( m ) ( m o d N ) \sigma^e \equiv H(m) \pmod N σeH(m)(modN) i = j i = j i=j

由于 Sig-forge A , Π ′ ( n ) \text{Sig-forge}'_{\mathcal{A}, \Pi}(n) Sig-forgeA,Π?(n) 成功,必须输出 m j m_j mj? 的加密码,因此禁止查询 m j m_j mj?。显然, Pr ? [ Sig-forge A , Π ′ ( n ) = 1 ] = 1 q Pr ? [ Sig-forge A , Π ( n ) = 1 ] \Pr[\text{Sig-forge}'_{\mathcal{A}, \Pi}(n) = 1] = \frac 1q \Pr[\text{Sig-forge}_{\mathcal{A}, \Pi}(n) = 1] Pr[Sig-forgeA,Π?(n)=1]=q1?Pr[Sig-forgeA,Π?(n)=1],即输出的 m m m 正好是随机确定的那个。

给定 N , e , y N, e, y N,e,y,构造敌手 A ′ \mathcal A' A 解决 RSA 问题:

  • 随机选择 j ∈ { 1 , . . . , q } j \in \{1, ..., q\} j{1,...,q}
  • 运行 A \mathcal A A。记录所有的三元组 < m i , σ i , y i > <m_i,\sigma_i,y_i> <mi?,σi?,yi?> 表明已经查询过 H ( m i ) = y i H(m_i) = y_i H(mi?)=yi? σ i e ≡ y i ( m o d N ) \sigma_i^e \equiv y_i \pmod N σie?yi?(modN)
  • A \mathcal A A i i i 次查询 H H H
    • 如果 i = j i = j i=j,返回 y y y
    • 否则选择随机的 σ i ∈ Z n ? \sigma_i \in \mathbb Z_n^* σi?Zn??,计算 y i ← [ σ i e m o d ?? N ] y_i \leftarrow [\sigma_i^e \mod N] yi?[σie?modN] 并返回。记录 < m i , σ i , y i > <m_i, \sigma_i, y_i> <mi?,σi?,yi?>
  • A \mathcal A A 查询 m m m 的签名时,设 m i = m m_i = m mi?=m
    • 如果 j = i j = i j=i,禁止查询
    • 如果有三元组 ( m i , σ i , y i ) (m_i, \sigma_i, y_i) (mi?,σi?,yi?),返回 σ i \sigma_i σi?
  • 最后 A \mathcal{A} A 输出 ( m , σ ) (m,\sigma) (m,σ)。如果 m = m j m = m_j m=mj? σ e ≡ y ( m o d N ) \sigma^e \equiv y \pmod N σey(modN) A ′ \mathcal A' A 输出 σ \sigma σ

这个例子很好地用到了随机语言模型的可编程性。要输出一个均匀随机的 y y y A ′ \mathcal A' A 生成一个均匀随机的 σ \sigma σ,并返回 σ e m o d ?? N \sigma ^e \mod N σemodN

Pr ? [ RSA-inv A ′ , GenRSA ( n ) = 1 ] = Pr ? [ Sig-forge A , Π ′ ( n ) = 1 ] = 1 q Pr ? [ Sig-forge A , Π ( n ) = 1 ] \begin{aligned} \Pr[\text{RSA-inv}_{\mathcal A',\text{GenRSA}}(n)=1] &= \Pr[\text{Sig-forge}'_{\mathcal{A}, \Pi}(n) = 1] \\ & = \frac 1q \Pr[\text{Sig-forge}_{\mathcal{A}, \Pi}(n) = 1] \end{aligned} Pr[RSA-invA,GenRSA?(n)=1]?=Pr[Sig-forgeA,Π?(n)=1]=q1?Pr[Sig-forgeA,Π?(n)=1]?

由于 Pr ? [ RSA-inv A ′ , GenRSA ( n ) = 1 ] ≤ negl ( n ) \Pr[\text{RSA-inv}_{\mathcal A',\text{GenRSA}}(n)=1] \le \text{negl}(n) Pr[RSA-invA,GenRSA?(n)=1]negl(n),所以 Pr ? [ Sig-forge A , Π ( n ) = 1 ] ≤ q ? negl ( n ) \Pr[\text{Sig-forge}_{\mathcal{A}, \Pi}(n) = 1] \le q\cdot \text{negl}(n) Pr[Sig-forgeA,Π?(n)=1]q?negl(n)

构造安全签名

可变长度

Π ′ = ( Gen,?Sign’,?Vrfy’ ) \Pi' = (\text{Gen, Sign', Vrfy'}) Π=(Gen,?Sign’,?Vrfy’) 是固定长度 n n n 的不可伪造签名,则构造如下 Π = ( Gen,?Sign,?Vrfy ) \Pi = (\text{Gen, Sign, Vrfy}) Π=(Gen,?Sign,?Vrfy) 为任意长度签名:

  • Sign:输入秘钥 s k sk sk,长度为 l l l 的明文 m m m,将 m m m 切成 d d d m 1 , m 2 , . . . , m d m_1,m_2,...,m_d m1?,m2?,...,md?, 每块长度为 n / 4 n/4 n/4.
    随机选择 r ∈ { 0 , 1 } n / 4 r \in \{0, 1\}^{n/4} r{0,1}n/4。对 i = 1 , 2 , . . . , d i = 1, 2, ..., d i=1,2,...,d,计算 t i ← S i g n s k ′ ( r ∣ ∣ l ∣ ∣ i ∣ ∣ m i ) t_i \leftarrow Sign_{sk}'(r||l||i||m_i) ti?Signsk?(rlimi?),输出 < r , t 1 , . . . , t d > <r,t_1, ..., t_d> <r,t1?,...,td?> 作为签名。
  • Vrfy:输入公钥 p k pk pk,长度为 l l l 的明文 m m m,数字签名 < r , t 1 , . . . , t d ′ > <r,t_1, ..., t_{d'}> <r,t1?,...,td?>。将 m m m 切成 d d d m 1 , . . . , m d ′ m_1, ..., m_{d'} m1?,...,md?。当且仅当 d = d ′ d = d' d=d Vrfy p k ′ ( r ∣ ∣ l ∣ ∣ i ∣ ∣ m i , t i ) = 1 \text{Vrfy}_{pk}'(r||l||i||m_i,t_i) = 1 Vrfypk?(rlimi?,ti?)=1 对任意 1 ≤ i ≤ d 1 \le i \le d 1id 成立。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:46:39  更:2022-01-04 13:48:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 9:21:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码