文章目录

  • 基本概念
    • 杂凑函数的定义
    • 杂凑函数的应用
  • 安全属性
    • 基本属性
      • 安全属性
    • 通用攻击方法
      • 碰撞攻击
        • 生日攻击
  • 常见结构
    • 一般模型
    • 主要构造方法
      • 基于分组密码
        • 单倍长度
        • 多倍长度
      • 定制杂凑函数
        • MD结构
          • 定义
          • MD强化
          • MD结构的安全性
            • MD结构的长度扩展攻击
            • 多碰撞(t-碰撞)攻击
        • 海绵结构
  • 常见的杂凑函数算法
    • SHA-256(MD结构)
      • 消息填充
      • 压缩函数
        • 示意图
        • 消息扩充方案
        • 函数f
    • SHA-3算法 Keccak(海绵结构)

基本概念

杂凑函数的定义

 ①又称Hash函数哈希函数y=H(x); 

 ②将任意长度的消息x压缩为固定长度杂凑值(哈希值、指纹值)y

杂凑函数的应用

 ①检测消息完整性;

 ②构建伪随机函数;

 ③用作伪随机函数发生器;

 ④用于数字签名,提高数字签名的速度;

 ⑤电子签名等认证方案的关键技术;

 ⑥比特币;

 ⑦工作量证明;

 ⑧区块链的起源性技术;

安全属性

基本属性

 ①压缩性

  应用于任意大小的数据块,产生定长的输出。

 ②有效性

  对任意给定的消息x,计算H(x)是容易的

安全属性

 抗原像(单向性):给定H和任一个像y,其对应的输入未知,找到一个原像x满足H(x)=y是计算上不可行的。

  抗第二原像(抗弱碰撞):给定H和任一个消息x,找另一个消息x’(x≠x‘),满足H(x)=H(x’)是计算上不可行的。

  抗碰撞(抗强碰撞):给定H,找到任意两个不同的消息x和x’,满足H(x)=H(x’)是计算上不可行的。

    一般来说**!!!!!满足抗碰撞,就暗含着满足抗第二原像;满足抗第二原像,就暗含着抗原像!!!!!**

  抗长度扩展攻击:给定杂凑值H(M)和消息的长度|M|,找到h’和z满足H(M|z)=h’是计算上不可行的

  此外,还要考虑增强目标抗碰撞特性伪随机函数攻击等。

通用攻击方法

碰撞攻击

寻找x,x’,满足h(x)=h(x’)且x≠x’

 如果能找到杂凑函数的碰撞,就意味着两个不同的文件可以产生相同的“指纹”,从而伪造签名

 主要方法:生日攻击、特殊方法(针对)

生日攻击

找到一对碰撞的理想复杂度为2^(n/2)

 若能够以小于2^(n/2)的复杂度找到一对碰撞,则认为h被破解

常见结构

一般模型

迭代处理,通过处理固定长度的连续分组来杂凑任意长度的输入。

主要构造方法

根据迭代压缩函数f的不同:

 ①基于数学困难问题;

 ②基于分组密码:杂凑值长度等于分组长度

         杂凑值长度大于分组长度:MDC-2,MDC-4等

 ③定制杂凑函数:MD4,MD5;SHA-{0,1,224,256,384,512}等

基于分组密码

优点:

 ①基于较为成熟的分组密码算法;

 ②假如系统中已经有了分组密码的一个有效实现,把它作为杂凑函数的中心元件,几乎不需附加代价

缺点:

实现效率一般不如定制杂凑函数

单倍长度

多倍长度

定制杂凑函数

优点:可选择利于快速实现的基本运算

缺点:难以进行安全性证明;出现时间短,设计理念不够成熟

MD结构

定义

MD强化

为了进一步提高安全性,对消息填充进行的强化

MD结构的安全性

!!!易于构造二次碰撞!!!

MD结构的长度扩展攻击

多碰撞(t-碰撞)攻击

海绵结构

常见的杂凑函数算法

SHA-256(MD结构)

 ①MD结构;

 ②SHA-2系列:

  根据输出杂凑值长度的不同划分为:SHA-224/256/384/512多个版本;

  在不同版本中,消息分块长度/压缩函数步数/常数选择也是不同的

 ③SHA-256

  消息分块为512比特;链接值CV长度为256比特;输出的杂凑值长度为256比特

消息填充

压缩函数

 其中,ROT表示循环移位,SH表示移位,R表示右移,右上角数字表示移动的位数

示意图

消息扩充方案

函数f

SHA-3算法 Keccak(海绵结构)

[密码学] 杂凑函数相关推荐

  1. js 实现2的n次方计算函数_密码杂凑函数的基本性质探讨

    密码学研究的宗旨是保证数据和通信的机密性.完整性和认证性,其中完整性和认证性的实现依赖于一类关键的密码学函数---密码杂凑函数.密码杂凑函数通常用来计算数据的短"指纹"(也称杂凑值 ...

  2. android杂凑算法,SM3密码杂凑算法分析

    SM3密码杂凑算法分析 杂凑函数在密码学中具有重要的地位,被广泛应用在数字签名,消息认证,数据完整性检测等领域.杂凑函数通常被认为需要满足三个基本特性:碰撞稳固性,原根稳固性和第二原根稳固性.2005 ...

  3. 国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现

    包含SM2公钥密码.SM3杂凑算法和SM4分组密码的国密算法完整工具包完成了.此前分别发布过上述三个算法的代码: SM2:国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完 ...

  4. 开放原子训练营(第一季)铜锁探密,SM3杂凑算法加强至pro版

    目录 前言: 一.初遇铜锁 自我总结: 1.环境搭建,一次难忘的经历 2.键盘敲出的每一个命令,都是最美的音符 二.SM3杂凑算法增强改造 三.艺术源于生活 四.对开放原子开源基金会的感受 前言: 说 ...

  5. 原味的SM3密码杂凑算法

    根据国家密码管理局官网发布的规范文档里的算法描述,对SM3密码杂凑算法进行了原汁原味的实现.代码里的函数.变量名称都尽量使用算法描述中的名称,尽量遵循算法描述的原始步骤,不使用算法技巧进行处理. 算法 ...

  6. 【图解SHA1杂凑算法】SHA1杂凑算法的Python实现保姆级教程 | 物联网安全 | 信息安全

    系列索引:[图解安全加密算法]加密算法系列索引 Python保姆级实现教程 | 物联网安全 | 信息安全 起初写实验时找到的代码大多基于c/c++,python可参考的资料很少,所以借着这次实验的机会 ...

  7. SM3国密杂凑值算法的原理和c语言实现

    一.SM3算法介绍 杂凑值算法也可称为摘要算法或者哈希算法.通过对数据资料的填充.分组.扩展压缩等方式计算成特定长度的数值,来作为数据指纹或者数据特征使用.常见的MD5算法长度为128bit(16字节 ...

  8. 国密SM3密码杂凑算法原理及实现(附源码)

    相关文章: 国密SM3哈希算法原理及实现(附源码) SHA1哈希算法原理及实现(附源码) MD5哈希算法原理及实现(附源码) MD4哈希算法原理及实现(附源码) MD2哈希算法原理及实现(附源码) M ...

  9. 国密算法SM3(杂凑算法)

    国家密码管理局关于发布<SM3密码杂凑算法>公告 SM3密码杂凑算法 JavaScript对本算法的一个实现:https://github.com/wcube/sm-crypto

最新文章

  1. 共建网络安全 共享网络文明 2015福建网络安全日开幕在即
  2. Git关于pull,commit,push的总结
  3. mysql获取用户名_mysql-LEFT JOIN 3列获取用户名
  4. java是如何写入文件的
  5. PHP 在作为中间件时print无返回值问题
  6. Zookeeper 如何选举master 主节点?
  7. ImageLoader的简单分析(四)
  8. 威廉第三的MAC系列教程(一) ——使用ACPI Patcher制作DSDT补丁
  9. linux系统expdp按表空间导出,expdp导出是全库吗
  10. 倒排索引Inverted index
  11. Delphi 编译的程序在win10中怎样默认以管理员身份运行
  12. 小米路由器3/3G/4通过串口(ttl)刷机
  13. React 父子组件的生命周期关系(16.4版本及以后)
  14. 原生js-简易点名册实现
  15. 推荐一个开源的 .NET 二维码生成库
  16. Arch 中 fcitx5 提示拼音不可用的解决过程
  17. 电厂计算机房设计规范,发电厂消防设计规范.docx
  18. 用C语言写个人财务管理系统
  19. 情人,就是彼岸那朵花
  20. PTA-成绩录入时的及格与不及格人数统计

热门文章

  1. python flask框架发布问答平台注册页面_Python|Flask框架实现QQ账号登录
  2. IT运维服务管理中知识
  3. 数据中心冷却塔结冰应急演练
  4. 为什么一体化机柜会那么的受欢迎?
  5. 谷歌开始用AI技术帮助数据中心散热节省成本
  6. DayDayUp:大学英语六级考试历年真题答案规律分析、应试回答精讲、及六级改革历史之详细攻略
  7. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理
  8. Py之ipython:Python库之ipython的简介、安装、使用方法详细攻略
  9. HiveSQL中复杂数据类型操作
  10. C++中构造函数和析构函数的调用顺序