【区块链与密码学】第6-9讲:数字签名算法的可证明安全性

2023-11-10

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

6.9数字签名算法的可证明安全性

可证明安全性的定义

可证明安全性是指这样一种「归约」方法:

首先确定密码体制的安全目标,例如,加密体制的安全目标是信息的机密性,签名体制的安全目标是签名的不可伪造性。

然后根据敌手的能力构建一个形式化的安全模型;最后指出如果敌手能成功攻破密码体制,则存在一种算法在多项式时间内解决一个公认困难的数学问题或公认安全的密码体质。

总之,可证明安全性就是利用反证法的思想把密码算法/协议规约到一个数学难题或密码体质,通过后者的困难性或安全性来证明前者的安全。

对于数字签名体制,存在以下3种伪造类型:

完全攻破:敌手能够产生与私钥持有者相同的签名,这相当于恢复出了私钥

选择性伪造:敌手能够伪造一个他选择的消息的签名

存在性伪造:敌手能够伪造一个消息的签名,这个消息可能仅仅是一个随机比特串

对于数字签名体制,存在以下2种伪造类型:

被动攻击:在被动攻击中,敌手被告知一个公钥,要求产生一个选择性伪造或存在性伪造。这是一种比较弱的攻击模型。

主动攻击:积极攻击中最强的攻击是适应性选择消息攻击(Adaptive Chosen Messages Attack),即敌手可以访问一个签名预言机,它能够产生合法的签名。敌手的目标是产生一个消息的签名,当然这个消息不能是已经询问过签名预言机的消息。

对于一个安全参数为k的密码体制,如果敌手成功的概率大于1/p(k),我们就说这个敌手以一个不可忽略的概率成功,这里的p是一个以k为变量的多项式。

可证明安全性的目的在于证明:如果一个敌手能够攻破一个密码体制的某个安全概念,那么我们就可以利用该敌手做一些认为不可能的事情。我们假设敌手A是一个主动攻击敌手,即对于Schnorr签名算法,他能进行签名询问。

我们现在希望能够构造一个新算法BA,它能够在输入一个离散对数问题实例和调用多项式次敌手A的情况下,以一个不可忽略的概率求解离散对数问题。

算法BA说明了如果存在敌手A,就存在一个多项式时间离散对数问题求解算法,能够以一个不可忽略的概率解决离散对数问题。

既然我们目前并不相信存在这样的离散对数问题求解算法,我们也可以断定这样的敌手A是不存在的。

可证明安全流程示意图

随机预言模型

可证明安全的思想就是给定一个算法A,我们提出一个新算法BA,BA把A作为子程序。输入给BA的是我们希望解决的困难问题,输入给A的是某个密码算法。

然而,如果A是一个积极攻击敌手,即A可以对输入的公钥进行签名预言询问。算法BA要想使用A作为子程序,就需对A的询问提供回答。算法BA需要应对以下几个问题:

它的回答应该看起来是合法的。因为加密应该能够解密,签名应该能够被验证,否则,算法A就知道它的预言机在撒谎。算法BA就不能再确保算法A是以一个不可忽略的概率成功。

它的回答应该与如果预言机是真正的解密/加密预言机时A期望的回答具有相同的概率分布。

自始至终,预言机的回答应该是一致的。

算法BA需要在不知道私钥的情况下提供这些回答。

我们必须让BA在不知道私钥的情况下能够签名,但既然我们的体制是安全的,这一点意味着是不可能的。为了回避这个问题,我们通常使用随机预言模型。

随机预言是一个理想的哈希函数。对于每一个新的询问,随机预言产生一个随机值作为回答,如果进行两次相同的询问,回答一定相同。

在随机预言模型中,我们假设敌手并不使用密码算法中定义的那个哈希函数,而是使用预言机查询得到哈希运算的结果。

对于A的签名预言询问,算法BA是通过欺骗随机预言的回答来适合自己的需要的。

分叉引理

如果算法BA使用随机预言运行敌手A一次,并成功获得一个消息m的两个签名。当算法BA使用不同的随机预言再运行敌手A一次时,BA能够以一个不可忽略的概率获得这个消息m的另外一个签名。[1]

Schnorr数字签名算法的安全性证明

假设p和q是大素数,且q能被p-1整除,q是大于等于160 bit的整数,p是大于等于512 bit的整数,保证GF(p)中求解离散对数困难;g是GF(p)中元素,且gq≡1 mod p。

密钥生成

Alice选择随机数x为私钥,其中1<x<p

Alice计算公钥y≡gx (mod p)

签名算法 

Alice首先随机数k,并计算K=gk mod p,这里1<k<q

Alice计算e=h(M, K)

Alice计算s=k-x·e(mod q)

Alice输出签名(e, s)

验证算法

Bob计算gk=gs·ye mod p 

Bob验证e=h(M, gk mod p)

如果相等则输出「Accept」,否则输出「Reject」

RSA-PSS数字签名算法的安全性证明

定理:在随机预言模型中,假设离散对数问题是一个困难问题,RSA-PSS数字签名算法在主动攻击下是安全的。

密钥生成 

生成一个模数n,一个公钥e和一个私钥d

假设安全参数为k(n是k比特的数),我们定义两个整数k0和k1并且满足:k0+k1≤k-1

然后我们定义两个哈希函数:

扩展数据:

压缩数据:

签名算法

为了对一个消息m进行签名,签名者执行以下步骤:

生成一个随机数

计算w=H(m||r)

设置y=0||w||(G1(w)⊕r)||G2(w)

计算s=yd mod n

消息m的签名为s

验证算法

为了对一个消息m进行的签名s进行验证,验证者执行以下步骤:

计算y=se mod n

将y分解成: b||w||||,其中b的长度为1比特,w的长度为k1比特,的长度为k0比特,的长度为k-k0-k1-1比特

计算r=⊕G1(w)

当且仅当下列等式成立时,接受该签名:b=0, G2(w)= ,且w=H(m||r)

今天的课程就到这里啦,数字签名算法单元的学习就结束啦,同学们记得复习哦~下节课开始我们将进入盲签名的学习,敬请期待!


-- 完 --

关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。

【区块链与密码学】课堂回顾:

区块链与密码学系列文章合集

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【区块链与密码学】第6-9讲:数字签名算法的可证明安全性 的相关文章

  • 2021上海交大网络安全保研夏令营经验

    个人情况 某985高校信息安全专业 排名前6 六级539 校级一等奖学金多次 竞赛 数模美赛m奖 数模国赛省二等 科研 无成果发表 只有一些实验室 校级项目经历 一 选拔流程 各学科组织专家组对申请者进行全面考查 形式为线下复试包括笔试和面
  • ORACLE-电信行业解决方案研讨会笔记

    ORACLE近况 08财年收入224亿美元10W员工中国2100 员工 中间件 理念COMPLETE OPEN INTEGRATED产品策略 开发工具 JDeveloper为oracle 的将来开发工具 BEA workshop向Jdeve
  • Requests爬虫方法

    目录 一 Requests 简介 1 1 requests是什么 1 2 安装 1 3 response的属性及类型 二 requests使用 2 1 requests 的 get 请求 2 2 requests 的 post 请求 2 3
  • LRU 最近最少使用算法

    LRU 最近最少使用算法 设计LRU Cash 数据结构 设计方法 代码实现 总结 百度百科 LRU是Least Recently Used的缩写 即最近最少使用 是一种常用的页面置换算法 选择最近最久未使用的页面予以淘汰 该算法赋予每个页
  • 项目打War 并部署到Tomcat上去(注重步骤)

    一 打包 点开我们idea 中对应的maven 在对应模块中找到有 root 的那个模块 进行package 打包 打包完成后 去对应的路径下找到刚打的新鲜war包 进入bin 目录后 双击startup bat 运行即可

随机推荐

  • java几种删除_几种删除Linux目录的方法

    在Linux中有很多方法可以删除目录 在图形化界面可以利用文件管理器 或者通过终端删除 本文将介绍在文本界面使用命令删除目录 使用rmdir删除目录 Rmdir命令间成 remove directory 用于删除空目录的命令 例如 删除一个
  • Spring Boot 整合 JSON - Jackson/Gson/FastJson

    学习 Spring Boot 整合 JSON Jackson Gson FastJson 1 Spring MVC 整合 JSON 先来回顾下在 Spring MVC 中如何整合 JSON Spring MVC 可以接收 JSON 参数 也
  • BeanUtils.copyProperties基本用法与小坑

    1 实际应用 BeanUtils copyProperties 赋值目标对象 模板源对象 我们都知道当有两个对象AB 属性名称一样的情况下 如果需要把A的全部属性给B 传统写法是 B setXX A getXX 如果只有几个特别的参数需要赋
  • 机器学习小窍门:Python 帮你进行特征选择

    转 https www leiphone com news 201807 3gGDmue2OXYZE0vQ html 特征选择 也就是从数据集中找出并选择最有用特征的过程 是机器学习工作流中一个非常重要的步骤 不必要的特征降低了训练速度 降
  • 第七篇 硬件内存资源的获取,解析

    硬件资源的获取 解析 1 生成WDF的KMDFhelloWorld程序 2 改写INF文件中硬件ID 3 编译安装 以上三点不重复介绍 下面直接关注更新 增加的代码 在DeviceADD例程中添加 首先是增加即插即用管理 应该对应于WDM的
  • 内外网切换BAT脚本

    1 切换内网脚本 BAT脚本设置IP 子网掩码 网关 DNS echo off cls color 0A Echo Echo 正在修改IP地址和DNS服务器地址 请耐心等待 Echo cmd c netsh interface ip set
  • AntDesign 自定义图片上传前端压缩画质

    为什么压缩图片 应为现在公司没有使用云数据库 从而为了减少服务器的消耗需要将用户上传的图片压缩 前端压缩图片的技术选择 查阅资料发现当下两种压缩的方法 第一种使用工具库实现 npm install image conversion save
  • EXT4.2.0 + common-fileipload1.3 + 大文件上传(可达到20G)

    待续
  • npm 设置淘宝镜像

    查看当前镜像源 npm config get registry 在国外 受网速的影响的影响比较大 https registry npmjs org 1 配置 npm 为淘宝镜像 npm config set registry https r
  • 寒假小复习1

    1 java标识符 1 由数字 字母 构成 其中数字不能放在开头 2 java的关键字不能用为标识符 3 没有长度限制 注意区分大小写 package demo public class Demo public static final d
  • Vue数组对象,数组中多个对象将colorName值相同的合并

    这里使用到了Object values xx reduce prev cur index 方法 首先这个数据源是长这样的 需要的效果是长这样 代码 skuSizeData 是数据源 skuSizePropData 是在此之前我将所有的尺码进
  • QT事件循环与线程

    初次读到这篇文章 译者感觉如沐春风 深刻体会到原文作者是花了很大功夫来写这篇文章的 文章深入浅出 相信仔细读完原文或下面译文的读者一定会有收获 由于原文很长 原文作者的行文思路是从事件循环逐渐延伸到线程使用的讨论 译者因时间受限 暂发表有关
  • RSA简介

    什么是RSA RSA算法是应用最广泛的公钥密码算法 1977年 RSA算法由MIT的罗纳德 李维斯特 Ron Rivest 阿迪 萨莫尔 Adi Shamir 和伦纳德 阿德曼 Leonard Adleman 共同设计 于1978年正式发布
  • ==和equals

    对比的是栈中的值 基本数据类型是变量值 引用类型是堆中内存对象的值 equals object中默认也是采用 进行比较 通常会重写 String已经重写了equals方法 如下实际上是比较两个字符串中每一个字符的内容 public bool
  • 【C语言进阶】从一组数字中,找出只出现过一次的两个数字

    题目描述 有一组数字 只有两个数字出现过一次 其余数字都出现过两次 请找出只出现过一次的数字 举例 数组 1 2 3 4 6 1 2 3 4 8 输出 6 8 思路 这种题目是一种特定类型 形式1 一组数字 只有一个数字出现过一次 其余数字
  • webstrom 断点调试,小白详细步骤篇

    网上找了很久都是七零八落的 要么就是不够通俗易懂故作此文章记录和分享 设置debug调试 编辑器右上角点编辑配置 点击 号选js调试 url填你项目运行的url和端口 以及用于调试的浏览器 添加断点和运行测试调试 这里打上断点 点击右上角d
  • 应用服务器巡检,服务器巡检-常规检查项

    服务器巡检 常规检查项 由会员分享 可在线阅读 更多相关 服务器巡检 常规检查项 3页珍藏版 请在人人文库网上搜索 1 服务器巡检项目经理需要定期对硬件 软件及数据库环境进行检查常规检查项如下 1 服务器部分 l 服务器前面板有无故障灯闪烁
  • 帆软可以不可以生成文件到服务器_番禺街坊注意!微信发送高清大文件不压缩,网友:QQ可以卸载了?...

    刚上新了表情包的微信 又双叒叕出新功能了 这次的功能有点实用 昨天 腾讯微信团队宣布 微信已支持向朋友发送高清视频和图片 且不会被压缩 微信用户点击对话框右下角的 号 右滑点击文件 在上方选择手机相册 就能选择用户想要发送的视频和图片了 目
  • 为什么mybatisplus这么好用,反而用的不多?

    对会用的人来说 mybatis plus的wrapper非常好用 不再需要去关注dao层了 但是这需要一定的学习成本 而且不太符合经典的三层架构思维 对一些老前辈来说完全是违反常识的 很别扭 对他们来说 dao层还是拿在自己手里更踏实 给第
  • 【区块链与密码学】第6-9讲:数字签名算法的可证明安全性

    本课堂内容全部选编自PlatON首席密码学家 武汉大学国家网络安全学院教授 博士生导师何德彪教授的 区块链与密码学 授课讲义 教材及互联网 版权归属其原作者所有 如有侵权请立即与我们联系 我们将及时处理 6 9数字签名算法的可证明安全性 可