密码学中可证明安全

可证明安全理论基础:
一般来讲,可证明安全是指利用数学中的反证法思想,采用一种“归纳”方法。
协议的安全目标:加密方案的安全目标是确保信息的机密性,签名方案的安全目标是确保签名的不可伪造性。
敌手目标:加密方案中,敌手的目标就是能够区分挑战密文所对应的明文;在签名方案中,敌手的攻击目标就是可以获得签名者私钥,也可以说能对任意消息伪造签名或者伪造出一个特定消息的有效签名。
极微本原:密码原语,是指安全方案或者协议的最基本组成构建或者模型,例如某个基础密码算法或者数学难题。
步骤:
(1) 给出密码方案或者协议形式化定义
(2) 给出密码方案或者协议要达到的安全目标
(3) 给出安全模型,也就是攻击者具有的攻击目标或者行为
(4) 通过把攻击者的成功攻击规约到解决一个“极微本原“来达到算法或者协议形式化证明
安全模型:定义方案安全性关键所在,在可证明安全框架下,对一个方案的安全性往往需要从两个方面定义:敌手的攻击目标和攻击行为。攻击行为描述敌手为了达到攻击目标所采取的行动
归约论断:简单来说,就是把一个复杂的方案的安全性问题归结到一个或者几个困难问题。
解释归约:一般地,为了证明方案1的安全性,我们可将方案1归约到方案2,即如果敌手A能够攻击方案1,则敌手B能够攻击方案2,其中方案2是已证明安全的,或是困难问题,或是密码本原。 证明过程是通过思维实验来描述,首先由挑战者建立方案2,方案2中的敌手用B表示,方案1中的敌手用A表示。B为了攻击方案2,它利用A作为子程序来攻击方案1。B为了利用A,它可能需要对A加以训练,因此B又模拟A的挑战者。

对于加密算法来说,图中的方案1取为加密算法,如果其安全目标是语义安全,即敌手A攻击它的不可区分性,敌手B模拟A的挑战者,和A进行IND游戏。
对于签名算法来说,图中的方案1取为签名算法,如果其安全目标是“在适应性选择消息攻击下具有存在不可伪造性”,即敌手A攻击它的不可伪造性,敌手B模拟A的挑战者,和A进行EUF游戏。

数字签名算法安全模型分析

攻击目标:如果敌手A以不可忽略的概率完成以下操作,我们说A攻破了签名方案。
(1) 完全攻破:揭示出签名者私钥
(2) 普遍性伪造:构造出一个可对任意消息进行签名的高成功率伪签名算法
(3) 选择消息伪装:构造出某个特定消息的有效签名
(4) 存在性伪造:攻击者至少能为某个消息产生一个有效签名,但敌手对他获得的消息及其签名没有任何控制作用。
攻击能力:攻击者的攻击能力类型可以分为两大类
(1) 唯密钥攻击:攻击者只知道签名者的公钥,而没有任何其他信息。
(2) 已知签名攻击:攻击者除了知道签名者的公钥外,还可以得到一些消息/签名对,其中已知签名攻击又可以分为以下四种
(i)简单的已知消息攻击:攻击者可以得到一些消息/签名对,但不可以任意选择
(ii)普通的选择消息攻击:攻击者可以选择一些消息请求签名得到消息签名对,但选择是在知道签名者公钥前进行,这类攻击并不针对特定签名者
(iii)定向的选择消息攻击:攻击者可以选择一些消息请求签名得到消息/签名对,但选择是在知道签名者公钥之后进行并完成的,这类攻击指向某个特定签名者。
(iv)适应性选择消息攻击,攻击者可以选择一些消息请求签名以得到消息/签名对,并且他可以根据已得到的消息/签名对选择新的消息请求签名。
为了实现其最强的安全性,总以最强的攻击能力实现最低的攻击目标。因此目前数字签名的安全性定义一般是指适应性选择消息攻击下的签名存在行不可伪造(Existential Unforgeability Against Adaptive Chosen Messages Attacks,EUF-CMA),简称 为EUF-CMA。
随机语言机模型(random oracle,RO):在建立起安全模型后,往往需要构造一个算法B来充当挑战者的角色,算法B的输入是困难问题的一个实例,而B的目标就是通过一个假设存在的敌手进行多项式时间内的交互,最终输出该实例的解。由于B并不知道签名密钥或者解密密钥,所以需要用某些手段来掩饰B不知道密钥这件事,即为敌手提供一个真实的攻击环境,让敌手认为他在和一个真实的挑战者在进行游戏。
从Hash函数抽象出来一种计算模型,称为随机预言模型(RO模型)。在证明过程中,把Hash函数的输出认为是随机的,任何人都只能通过访问Hash语言机来求Hash的值,这样子。通过掌控Hash函数的输出,C就有可能在为敌手提供真实攻击环境下。利用敌手的攻击能力去求得困难问题实例的解。

可证明安全的思想就是给定一个算法A,我们提出一个新算法B,B把A作为子程序。输入给B的是我们希望解决的困难问题,输入给A的是某个密码算法然而,如果A是一个积极攻击敌手,即A可以对输入的公钥进行解密预言询问或签名预言询问。算法B要想使用A作为子程序,就需对A的询问提供回答。它的回答应该看起来是合法的。因为加密应该能够解密,签名应该能够被验证,否则算法A就知道它的预言机在撒谎。算法B就不能再确保算法A是以一个不可忽略的概率成功。我们必须让B在不知道私钥的情况下能够解密或者签名,但既然我们的体制是安全的,这一点意味着是不可能的。为了回避这个问题,我们通常使用随机预言模型。
随机预言是一个理想的Hash函数。对于每一个新的询问,随机预言产生一个随机值作为回答,如果进行两次相同的询问,回答一定相同。在随机预言模型中,我们假设敌手并不使用密码算法中定义的那个Hash函数,也就是说,即使我们将随机预言换成真实的Hash函数时,敌手A也是成功的。
对于A的解密预言询问和签名预言询问,算法BA是通过欺骗随机预言的回答来适合自己的需要的。

签名体制语义安全

签名体制 ∏︀ = (KeyGen, Sign, Ver) 一般由以下三个算法 组成:
1 密钥生成(KeyGen):该算法输入1 k,输出密钥对(pk, sk);
2 签名:输入消息m,秘密钥sk ,输出

数字签名算法2--可证明安全与EIGamal算法相关推荐

  1. 数字签名算法类别及用途

    0x01 数字签名算法的类别 数字签名(digital signature)是一种电子签名,也可以表示为一种数学算法,通常用于验证消息(例如,电子邮件.信用卡交易或数字文档)的真实性和完整性. 在&q ...

  2. .NET Core加解密实战系列之——消息摘要与数字签名算法

    简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...

  3. 几种常见的数字签名算法比较

    原文链接:数字签名算法介绍和区别 summary: 数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性.认证数据来源和抗否认,遵循OSI参考模型.私钥签名和公钥验证.也 ...

  4. 国际 数字签名算法介绍和区别

    数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性.认证数据来源和抗否认,遵循OSI参考模型.私钥签名和公钥验证.也是非对称加密算法和消息摘要算法的结合体,常见的数字签 ...

  5. 商用密码应用与安全性评估要点笔记(SM9数字签名算法)

    1.SM9标识密码算法简介 首先有几个概念需要弄清楚: (1)标识identity,可以唯一确定一个实体身份的信息,且实体无法否认.比如身份证号.手机号.邮箱等. (2)主密钥master key M ...

  6. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...

  7. GMSSL :SM2椭圆曲线公钥密码算法——数字签名算法4

    2021SC@SDUSC 目录 一.ECDSA介绍 二.代码分析 一.ECDSA介绍 ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA.它是Digital Signature ...

  8. 椭圆曲线数字签名算法(ECDSA)

    一. 椭圆曲线加密算法 简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法.相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在 ...

  9. ecdsa JAVA 私钥推导公钥_ECDSA(椭圆曲线数字签名算法)

    ECDSA(Elliptic Curve Digital Signature Algorithm) 一.学习背景--数字签名 在现实工作和生活中,我们使用签名的方式表达对一份文件的认可,其他人可以识别 ...

最新文章

  1. 不断演进的 Chrome 安全标识
  2. Tomcat 的数据库连接池设置与应用
  3. vue 背景透明度_一款媒体小白喜爱的视频编辑软件,vue视频编辑APP,想学就来...
  4. java环境配置—配置Tomcat8环境
  5. python右对齐函数_Python这68个内置函数,建议你吃透!
  6. python强行终止程序,如何终止Python脚本
  7. html4音频插件,js音频插件audio.js
  8. roboware studio教程_RoboWare-Studio
  9. 大数据:对大数据的理解
  10. 计算机产品可以进项抵扣,企业购入的软件产品可以全额抵扣进项税吗?
  11. 神经网络程序设计课学习心得
  12. 商业智能下,金融行业如何利用起来?
  13. 3-Go并发编程与协程Goroutine
  14. 神经网络主要有三个基本要素:权重、偏置和激活函数
  15. manjaro和android数据线传数据
  16. 探究论文检测系统抄袭的算法原理等技术研究
  17. 易语言 python库_精易Python支持库 (1.1#1205版)发布啦!
  18. 谷歌地图营销.Google竞价排名
  19. 我的2020秋招总结,京东+字节跳动+拼多多,本人已成功入职并夕夕!
  20. 熬夜帮学姐用Python完成词云图,没想到我好兄弟竟然...

热门文章

  1. 人生就是一场猝不及防
  2. 【华为云计算产品系列】eBackup云备份原理及实战详解
  3. 修改数据库 [MySQL][数据库]
  4. ADM的兴衰起落。道翰天琼认知智能未来机器人接口API-1
  5. 电脑优化、电脑加速的方法
  6. 网站被攻击的总结反思
  7. 10元买啤酒问题Java递归
  8. 面对大事情时的表现,可看出来一个人的品质和水平
  9. 2019写给对象的话_[想对对象说的一句情话]2019年最想对你说的十句情话
  10. 大数据面试杀招——Spark高频考点,必知必会!