网安笔记05 SHA

news2024/11/17 13:55:27

SHA

Hash函数

定义

  1. 任意长度的数据M变换为定长码h
    h = H A S H ( M ) h = H ( M ) h = HASH(M)\quad h = H(M) h=HASH(M)h=H(M)

  2. 实用性: 给定M,计算h时高效的

  3. 安全性:

  • 单向性 给出h,反向计算原文x时不可行的,否则截取H(M||Key),hash逆运算可以得到Key泄漏密钥
  • 抗碰撞性,给定x,找到KaTeX parse error: Undefined control sequence: \noteq at position 2: y\̲n̲o̲t̲e̲q̲ ̲x,使得 H ( y ) = H ( x ) H(y)=H(x) H(y)=H(x)是不可行的。 否则可以冒充
  • 抗强碰撞性 找到任何满足 H ( x ) = H ( y ) H(x)=H(y) H(x)=H(y)的偶对 ( x , y ) (x,y) (x,y)在计算上是不可行的

hash函数一般结构

  1. 将输入分为L-1个大小为b位的分组
  2. 若第L-1个分组不足b位,填充到b位
  3. 附加第L个分组,表示总长度
    输入中包含长度,所以攻击者必须找出具 所以攻击者必须找出具 有相同Hash值且长度相等的两条报文 OR 长度不等,加入报文长度后hash相同的报文)

在这里插入图片描述
b位分组通过L次连接迭代通过压缩函数f,f输出n位

作用

  1. 错误检测
  2. 作为MAC,用于认证
  3. 数字签名
  4. 保密

SHA-1 HASH函数

SHA-0, 1, 2三种
SHA-2包括三个hash函数, SHA-256, SHA-384, SHA-512

SHA-1基础: MD5

SHA-1输入长度,小于 2 6 4 2^64 264位的报文,输出 160 160 160位报文摘要
对输入按 512位分组

在这里插入图片描述

运算算法

  1. 输入填充,让填充后的报文长度满足
    l e n g t h = 448   m o d   512 length = 448 \ mod \ 512 length=448 mod 512
  • 在末尾加一个1和若干个0
  • 本身已满足的话,为了避免二义性,添加512位(填充数介于1-512)
  1. 初始化缓冲区
  • 缓冲区:5个32位寄存器,保存160位的中间 or 最终结果
  • 五个寄存器初始化如下:

A: 67452301

B: EFCDAB89

C: 98BADCFE

D: 10325476

E: C3D2E1F0
(大端模式存储)

  1. 主处理
  • 每次处理512位分组,循环次数 – L
    在这里插入图片描述
  • f压缩函数位核心
    • 四层运算(每层20步迭代)组成, 四层运算结构相同
    • 输入当前要处理的是512位的分组BLK和160位缓冲区ABCDE的内容
    • 每层要对ABCDE内容更新(逻辑函数f是不一样的)
    • 第四层输出第一层输出相加得到最后结果
  1. 输出
  • 所有的L个512位的分组处理完后,第L个分组的输出即是160位的报文摘要
  1. 归纳
    C V 0 = I V CV_0 = IV CV0=IV
    KaTeX parse error: Undefined control sequence: \leL at position 29: …_i\quad 0\le i \̲l̲e̲L̲ ̲- 1
    具体如下

C V i + 1 ( 0 ) = C V i ( 0 ) + A i C V i + 1 ( 1 ) = C V i ( 1 ) + B i C V i + 1 ( 2 ) = C V i ( 2 ) + C i C V i + 1 ( 3 ) = C V i ( 3 ) + D i C V i + 1 ( 4 ) = C V i ( 4 ) + E i CV_{i+1}(0) = CV_i(0)+A_i \\ CV_{i+1}(1) = CV_i(1)+B_i \\ CV_{i+1}(2) = CV_i(2)+C_i \\ CV_{i+1}(3) = CV_i(3)+D_i \\ CV_{i+1}(4) = CV_i(4)+E_i CVi+1(0)=CVi(0)+AiCVi+1(1)=CVi(1)+BiCVi+1(2)=CVi(2)+CiCVi+1(3)=CVi(3)+DiCVi+1(4)=CVi(4)+Ei
上述的+是 mod 2^{32}加法

  1. 压缩函数

在这里插入图片描述

缺点

  • 输出B=输入A
  • 输出D=输入C
  • 输出E=输入D
  • A、C、D没有运算

形式
A ← ( E + f t ( B , C , D ) + ( A < < 5 ) + W t + K t ) B ← A C ← B < < 30 D ← C E ← A \leftarrow (E + f_t(B,C,D) + (A<<5) + W_t + K_t) \\ B\leftarrow A\\ C\leftarrow B<<30\\ D\leftarrow C\\E\leftarrow A(E+ft(B,C,D)+(A<<5)+Wt+Kt)BACB<<30DCE

  • 单轮对A,B,C,D,E进行20次迭代, 四轮共80次迭代 0 ≤ t ≤ 79 0\le t \le 79 0t79
  • < < s <<s <<s表示32位变量左移s位
  • + + +为 mod 32的加法
  • 逻辑函数 f t f_t ft四个轮次略有区别
    • f 1 = f t ( B , C , D ) = ( B ∧ C ) ∨ ( ¬ B ∧ D ) f_1=f_t(B,C,D) = (B\land C)\lor(\lnot B\land D) f1=ft(B,C,D)=(BC)(¬BD)
    • f 2 = f t ( B , C , D ) = B ⊕ C ⊕ D f_2 = f_t(B,C,D) = B\oplus C\oplus D f2=ft(B,C,D)=BCD
    • f 3 = f t ( B , C , D ) = ( B ∧ C ) ∨ ( B ∧ D ) ∨ ( C ∧ D ) f_3=f_t(B,C,D) = (B\land C)\lor(B\land D) \lor(C\land D) f3=ft(B,C,D)=(BC)(BD)(CD)
    • f 4 = f t ( B , C , D ) = B ⊕ C ⊕ D f_4 = f_t(B,C,D) = B\oplus C\oplus D f4=ft(B,C,D)=BCD
      • 缺点: f 2   f 4 f_2\ f_4 f2 f4均为线性函数
  • K t K_t Kt 加法常量,共有四个不同加法产量
    • 第一层 5A827999
    • 第二层 6ED9EBA1
    • 第三次 8F1BBCDC
    • 第四层 CA62C1D6
      • 缺点: 压缩字K作用范围太小,只影响A不影响B\C\D\E
  • W t W_t Wt:当前分组BLK导出的32位字
    • 每步使用从512位的报文分组BLK导出的一个32位的字 W t W_t Wt
    • 把BLK划分为16个32位的字( M 0 , M 15 M_0, M_{15} M0,M15),扩展到80个32位字( M 0 , M 79 M_0, M_{79} M0,M79)
    • 0 ≤ t ≤ 15 W t = M t 0\le t\le 15\quad W_t = M_t 0t15Wt=Mt
    • 16 ≤ t ≤ 79 W t = ( W t − 16 ⊕ W t − 13 ⊕ W t − 8 ⊕ W t − 3 ) < < 1 16\le t \le 79\quad W_t = (W_{t-16}\oplus W_{t-13}\oplus W_{t-8}\oplus W_{t-3})<<1 16t79Wt=(Wt16Wt13Wt8Wt3)<<1
      • 缺点: 压缩函数是线性函数; 压缩字 W t W_t Wt的作用范围太小(和K一样)

补充

  • SHA-1可用
  • MD-5不安全

SHA-2 HASH函数

  • 三个Hash函数 SHA-256/384/512
  • AES配套
  • 安全性能更强
  • 与SHA-1比较:结构相同、逻辑函数相同、mod运算相同
(单位:bit)SHA-1SHA-256SHA-384SHA-512
消息摘要长度160256384512
消息长度<2^64<2^64<2^128<2^128
分组长度51251210241024
字长度32326464
步骤数80648080
安全性8012819225

安全性:对输出长度为n比特的hash函数的攻击产生碰撞的工具约为 2 n / 2 2^{n/2} 2n/2

SHA-512

  1. 输入长度 < 2 128 <2^{128} <2128
  2. 数据分组长度 1024
  3. 输出长度 512

运算算法

  1. 填充
  • 使填充后的长度=896 mod 1024
  • 已满足也需要填充(1个1 若干个0)
  1. 附加长度
  • 填充后附加128位的块,表示原消息长度

完成1、2步后,数据长度为1024的整数倍, 数据 / 1024为块数N,对其迭代处理

在这里插入图片描述

  1. 初始化缓冲区
  • 中间结果、最终结果存于512比特的缓冲区中,缓冲区使用8个64比特的寄存器(A,B,C,D,E,F,G,H)
    A = 6 A 09 E 667 F 3 B C C 908 E = 510 E 527 F A D E 682 D 1 B = B B 67 A E 8584 C A A 73 B F = 9 B 05688 C 2 B 3 E 6 C 1 F C = 3 C 6 E F 372 F E 94 F 82 B G = 1 F 83 D 9 A B F B 41 B D 6 B D = A 54 F F 53 A 5 F 1 D 36 F 1 H = 5 B E 0 C D 19137 E 2179 A=6A09E667F3BCC908 \quad E=510E527FADE682D1 \\ B=BB67AE8584CAA73B \quad F=9B05688C2B3E6C1F \\ C=3C6EF372FE94F82B \quad G=1F83D9ABFB41BD6B\\ D=A54FF53A5F1D36F1 \quad H=5BE0CD19137E2179 A6A09E667F3BCC908E=510E527FADE682D1BBB67AE8584CAA73BF=9B05688C2B3E6C1FC3C6EF372FE94F82BG=1F83D9ABFB41BD6BDA54FF53A5F1D36F1H=5BE0CD19137E2179

来源:前八个素数平方根,取小数部分前64个比特

存储方式:高有效字节存低字节位置(大端

  1. 块处理

1024比特快的处理 + 80轮迭代运算

  • 512bits缓冲区的ABCDEFGH为输入,更新缓冲区的值。第一轮时,缓冲区里的值是中间 缓冲区里的值是中间的Hash值 H i − 1 H_{i-1} Hi1
  • 每轮t使用64bit的 W t W_t Wt与常数 K t K_t Kt
  • 迭代后输出 H i H_i Hi
  • 存储方式:高有效字节存于低地址字节位置

在这里插入图片描述

  1. 轮函数

前两个同SHA-1,后两函数不同
C H ( E , F , G ) = ( E ∧ F ) ⊕ ( ¬ E ∧ G ) M a j ( A , B , C ) = ( A ∧ B ) ⊕ ( A ∧ C ) ⊕ ( B ∧ C ) ∑ 0 512 = R O T R 28 ( A ) ⊕ R O T R 34 ( A ) ⊕ R O T R 39 ( A ) ∑ 1 512 = R O T R 14 ( E ) ⊕ R O T R 18 ( E ) ⊕ R O T R 41 ( E ) CH(E,F,G)=(E \land F)⊕(\lnot E \land G)\\ Maj(A,B,C)=(A \land B)⊕(A \land C)⊕(B \land C)\\ ∑_0^{512}=ROTR^{28}(A)⊕ ROTR^{34}(A)⊕ ROTR^{39}(A)\\ ∑_1^{512}=ROTR^{14}(E)⊕ ROTR^{18}(E)⊕ ROTR^{41}(E) CH(E,F,G)=(EF)(¬EG)Maj(A,B,C)=(AB)(AC)(BC)0512=ROTR28(A)ROTR34(A)ROTR39(A)1512=ROTR14(E)ROTR18(E)ROTR41(E)

  • R O T R i ( X ) ROTR^i(X) ROTRi(X)表示X循环右移i位
  • 附加常数 K t K_t Kt
    • 最小的80个素数开立方,取根的小数部分前64bit
    • 小数部分随机,消除数据中的规律性
  • 压缩字 W t W_t Wt
    • 1024bit的块中取出,分为16个64位的 M t M_t Mt
    • W t = M t 0 ≤ t ≤ 15 W_t = M_t\quad 0\le t\le 15 Wt=Mt0t15
    • W t = σ 1 512 ( W t − 2 ) + W t − 7 + σ 0 512 ( W t − 15 ) + W t − 16 W_t = \sigma_1^{512}(W_{t-2})+W_{t-7} + \sigma_0^{512}(W_{t-15}) + W_{t-16} Wt=σ1512(Wt2)+Wt7+σ0512(Wt15)+Wt16
    • σ 0 512 ( x ) = R O T R 1 ( x ) ⊕ R T O R 8 ( x ) ⊕ S H R 7 ( x ) \sigma_0^{512}(x) = ROTR^1(x) \oplus RTOR^8(x) \oplus SHR^7(x) σ0512(x)=ROTR1(x)RTOR8(x)SHR7(x)
    • σ 1 512 ( x ) = R O T R 19 ( x ) ⊕ R T O R 61 ( x ) ⊕ S H R 6 \sigma_1^{512}(x) = ROTR^{19}(x) \oplus RTOR^{61}(x) \oplus SHR^6 σ1512(x)=ROTR19(x)RTOR61(x)SHR6
    • S H R i ( x ) 表示 x 左移 i 位右边填 0 SHR^i(x)表示x左移i位右边填0 SHRi(x)表示x左移i位右边填0

函数变化
T 1 = H + C h ( E , F , G ) + ( Σ 1 5 12 E ) + W t + K t T 2 = ( Σ 0 512 A ) + M a j ( A , B , C ) A = T 1 + T 2 B = A C = B D = C E = D + T 1 F = E G = F H = G T_1 = H + Ch(E,F,G) + (\Sigma_1^512 E) + W_t + K_t\\ T_2 = (\Sigma ^{512}_0 A) + Maj(A,B,C)\\ A = T_1 + T_2\\ B = A\\ C = B\\ D = C\\ E = D+T_1\\ F = E\\ G = F\\ H = G T1=H+Ch(E,F,G)+(Σ1512E)+Wt+KtT2=(Σ0512A)+Maj(A,B,C)A=T1+T2B=AC=BD=CE=D+T1F=EG=FH=G
缺点:直接相等的太多
在这里插入图片描述

总结

  1. SHA-512结构等同SHA-1
  2. 前者输出长度更长,抗穷举攻击能力更强
  3. 逻辑函数与后者差别不大 (SHA-1 20轮使用一个逻辑函数、 SHA-2 每轮4个逻辑函数)
  4. 应用未开始、安全性暂时未检验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vcomp140.dll怎么安装?提示vcomp140.dll丢失怎样修复?

在用电脑玩游戏或者打开软件工作的时候&#xff0c;电脑提示vcomp140.dll丢失无法执行此代码&#xff0c;是什么回事呢&#xff1f;需要怎么修复呢&#xff1f;不用紧张&#xff0c;小编今天就把vcomp140.dll文件修复方法分享给大家。我总结了几个修复经验&#xff1b; vcomp14…

IO-概述

概述 ​ IO是Input&#xff08;输入&#xff09;和Output&#xff08;输出&#xff09;的首字母缩写。 ​ I&#xff08;输入Input&#xff09;&#xff1a;指向Java程序中输入数据&#xff0c;即Java程序从外部获取数据。 ​ O&#xff08;输出Output&#xff09;&#xff1a…

c盘游戏怎么转移到d盘?无需重新安装

概述&#xff1a;游戏占用的容量一般很大&#xff0c;如果都存在C盘中&#xff0c;可能会导致C盘空间不足&#xff0c;这时候我们可以考虑迁移游戏到其他盘。c盘游戏怎么转移到d盘&#xff1f;本指南详细讲解。 一、为什么需要将游戏移动到其他盘 现在很多游戏玩家&#xff0c…

基于结构化跨模态表示一致性的临床辅助结直肠息肉识别

文章目录 Toward Clinically Assisted Colorectal Polyp Recognition via Structured Cross-Modal Representation Consistency摘要本文方法Shared Transformer BlockCross-Modal Global AlignmentSpatial Attention Module 实验结果 Toward Clinically Assisted Colorectal Po…

Liunx下pip3换源(最详细)

在使用python时我们经常会安装各种包&#xff0c;我们一般安装的方式都是pip3 install xx模块&#xff0c;但是pip3默认源https://pypi.org/安装的过程非常慢&#xff0c;可能都是几k几k的&#xff0c;有时安装这安装着&#xff0c;直接error了&#xff0c;还有一种情况是直接飘…

BSR:Block compressed Sparse Row matrix format

BSR块压缩存储是CSR行压缩存储的升级变形&#xff1b;可以降低图数据存储空间。 有以下图的矩阵表示&#xff1a; 一、CSR表示 rowIndex [0 4 8 10 12 16 20] columns [0 1 2 3 | 0 1 2 3 | 2 3 | 2 3 | 2 3 4 5 | 2 3 4 5] values …

倒计时 1 天:Tapdata LDP V3 发布会预告,看实时数据集成平台如何赋能企业 AI 落地

更多 LDPAI 场景细节&#xff0c;敬请期待 5 月 10 日&#xff08;今天&#xff09;的 Tapdata 发布会。 最近几个月&#xff0c;AI 领域可谓经历了近十年以来最为魔幻且不可思议的时刻。 自 ChatGPT 发布以来&#xff0c;无论是底层大模型、训练框架、应用框架还是 GPT 插件等…

如何将m4v转换成mp4格式?这些方法极速无损

如何将m4v转换成mp4格式&#xff1f;众所周知&#xff0c;M4V文件格式是一个由苹果公司开发的视频文件格式&#xff0c;它通常用于iTunes Store中售卖和租赁的电影、电视节目等内容。但是&#xff0c;在某些情况下&#xff0c;我们可能无法在其他设备或软件上播放M4V文件&#…

2023年杭州助理工程师职称申报要求和申报材料是什么呢?

一、杭州助理工程师职称申报条件要求&#xff1a; 1、中专学历毕业后&#xff0c;任技术员满四年或未认定技术员参加工作满六年&#xff0c;必须参加考核&#xff0c;考试合格才能成为助理级职称资格 2、大专学历毕业后&#xff0c;三年工作经验&#xff0c;考核合格&#xf…

【AWS入门】利用CloudWatch监控EC2的CPU负载情况

创建一个 EC2 实例 User data 配置如下 #!/bin/bash sudo -i amazon-linux-extras install epel -y yum install stress -y导航到 Cloudwatch->Metrics->All metrics-EC2->Per-Instance Metrics,选中创建的 EC2的 CPU 利用率&#xff0c;点击铃铛标识创建 alarm 设…

以实战学习pandas使用方式:统计考生成绩统计及分布

以实战学习pandas使用方式&#xff1a;统计考生成绩统计及分布 引子需求逐步实现使用 pandas 读 excel初始化一些数据获取 excel 列名获取总表的统计数据分班级数据各科目比率统计统计名次分布 写入文件小结 引子 老顾日常工作&#xff0c;是用不到 python 的&#xff0c;所以…

vue-admin-template中vue动态路由不显示问题解决

使用的的是vue-admin-template&#xff0c;这是一个极简的 vue admin 管理后台&#xff0c;它只包含了 Element UI & axios & iconfont & permission control & lint&#xff0c;这些搭建后台必要的东西。需要根据自己的需求二次开发。 线上地址:vue-admin-tem…

【操作系统】进程调度

目录 调度的概念 调度目标 所有系统 批处理系统 交互式系统 实时系统 调度算法 非抢占式调度算法 先来先服务 最短作业优先 非抢占式优先级调度 抢占式调度算法 最短剩余时间优先 轮转调度 抢占式优先级调度 多级反馈队列 彩票调度 公平分享调度 调度的概念 进程是资源分配…

Windows Nvm安装

前言 在windows系统下安装的是nvm-windows&#xff0c;nvm只支持安装在在Linux和Mac系统下。之前在Linux上安装过&#xff0c;最近在Windows上安装&#xff0c;特记录一下。 下载 下载地址&#xff1a;传送门 安装 双击exe文件&#xff0c;选定安装路径&#xff0c;下一步…

在外SSH远程连接macOS服务器【cpolar内网穿透】

文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

动态库和静态库的使用

一、什么是库&#xff1f; 库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码&#xff0c;相当于进行了加密&#xff0c;别人可以使用库&#xff0c;但是看不到库中的内容。 常见的库类型 共享库 静态库 动态库…

数据管理证书有哪些?DAMA-CDGA/CDGP含金量高

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

小度即将推出智能手机产品,醉翁之意意在何为?

5月8日&#xff0c;智哪儿从相关渠道获悉&#xff0c;小度即将于5月下旬发布首款智能手机产品。小度科技通过公开渠道确认了上述信息并透露将于下周披露更详细的产品信息。根据市场调查机构Counterpoint Research公布的最新报告&#xff0c;2023年第一季度全球智能手机市场出货…

巩飞:构建自治智能的数据库云管平台,加速国产数据库应用进程

导语 4月8日下午&#xff0c;为期两天的第十二届数据技术嘉年华&#xff08;DTC 2023&#xff09;在北京新云南皇冠假日酒店圆满落下帷幕。大会以“开源融合数字化——引领数据技术发展&#xff0c;释放数据要素价值”为主题&#xff0c;汇聚产学研各界精英到场交流。云和恩墨数…

什么是医学影像PACS系统?PACS系统功能有哪些?作用有哪些?对接哪些设备?业务流程是什么?

一、什么是医学影像PACS系统 PACS&#xff1a;为Picture Archive and CommunicationSystem的缩写&#xff0c;是图象归档和通讯系统。PACS系统应用在医院影像科室的系统&#xff0c;主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声…