EBU7140 Security and Authentication(二)非对称加密;授权

B2

非对称加密介绍

前面的传统加密算法都是对称加密。就是加密解密用一个密钥。非对称加密就是用不同的密钥,加密复杂度更高。

1703926211799

Diffie-Hellman 密钥交换法

一种密钥交换方法。

1703929636946

common 是公共基础颜色,secret 是各自私有颜色,公共颜色和自己的私有颜色混合后给对方,对方再和自己的私有颜色混合,两者就都得到了一个共同的秘密颜色。中间被别人截到别人也不会知道密钥颜色是什么,他拿到的是橙色和绿色。哪怕他把这两种颜色混合,也得不到一样的棕色。

1703929800546

Diffie-Hellman 具体实现是通过原始根来实现的,我们先补充一点知识。

数论里学过,很简单的东西。比如 13 mod 12 =1.

原始根 primitive root:如果

1703929982484

那么 a 就是 p 的一个原始根。

比如下图,7是71的原始根,8不是,出现了重复。

1703930036606

对于 Diffie-Hellman,黄色颜色(common)包括 a 和 p。a 是 p 的一个原始根。

Alice 的红色秘密颜色为 x,Bob 的蓝色秘密颜色为 y。

ax mod p 是 Alice 发给 Bob 的混合颜色信息,ay mod p 是 Bob 发给 Alice 的。两者拿到后再做一下取模运算。

证明(q)n mod p = qn mod p 的证明如下:DH算法图解+数学证明-CSDN博客

反正根据上式,我们可知,(ax mod p)y mod p = (ay mod p)x mod p = axy mod p,两者得到的都是棕色的最终颜色。

破解方法:中间人攻击,与两边分别达成一项 DH 密钥协议,然后收发消息的时候分别使用双方的密钥协议加密解密,Alice Bob 都没有收到真正的对方的密钥信息。

Trapdoor One-Way Function

单向陷门函数。y=f(x) 很好计算,x=f-1(y) 很难计算,如果知道 z 后计算逆函数就很方便,那么 z 就是陷门。对于 RSA 来说,私钥就是陷门 trapdoor。

RSA 公钥加密算法

先补充一点数论知识。

互素 relative prime:两个数字没有共同因子(除了1),比如7 和 10,不一定需要两者都是素数。gcd (a, b) = 1

Φ(n):小于n的最大的和n互素的数。比如对于素数p, ϕ ( p ) = p − 1 \phi(p)=p-1 ϕ(p)=p1 ; ϕ ( 1 ) = 1 \phi(1)=1 ϕ(1)=1

p q 互素,n=pq, ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1)

n=p2 , ϕ ( n ) = ( p ) ( p − 1 ) \phi(n)=(p)(p-1) ϕ(n)=(p)(p1)

同余:模一个数得到的余数相同,则这两个数同余。比如 1 4 对3同余。1≡4 mod 3

欧拉定理:如果 a n 互素,那么 a ϕ ( n ) ≡ 1 ( m o d n ) a^{\phi(n)}≡1 (mod \quad n) aϕ(n)1(modn)

RSA 算法:首先对于每次处理的明文 m,有 m<n.

然后,公钥对是 {e, n},加密方法是 c=me mod n。

私钥对是 {d, n},解密方法是 m=cd mod n=med mod n.

那么存在 ed 使得 m mod n = med mod n,而且已知 e n,d 不好找。

常用的算法是,我们使用两个大质数 pq 和给定的 e,n=p*q, ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1) d ≡ e − 1 m o d ϕ ( n ) d≡e^{-1} mod\quad \phi(n) de1modϕ(n) e d ≡ 1 m o d ϕ ( n ) ed≡1 mod \quad \phi(n) ed1modϕ(n)

为什么这样设置 n 可以使得 med mod n=m mod n?

med mod n = m1+k(p-1)(q-1) mod n = m(mk(p-1)(q-1) ) mod n = m*1k mod n=m mod n。好像是因为 n 选取的质数非常大,所以 m n 是互质的,满足欧拉定理;如果不满足,那么也可以根据中国剩余定理证明成立,这里我就不浪费时间补充了,快考试了 qaq。

破解方法:暴力破解法(太慢了),根据素数的一些特性的数学破解法,定时攻击(根据输入输出运算时长判断密钥信息),选择密文攻击(根据 rsa 的特性可以解出一些明文密文对,比如 c1*c2 mod n 就是 m1 * m2 的加密结果。

公钥加密的缺陷:需要密钥长度太大,计算太慢,而且如果长度过长需要 ECB 分块加密,这种方法并不可取,缺少一个分块处理的方法。

Hybrid Encryption 混合加密

结合高效的对称加密和复杂的对称加密。传输大数据量的时候使用。

假定双方有非对称加密密钥,用非对称方式传输对称密钥(session)。然后双方使用对称密钥通信。

Certificates 证书

加密:对方公钥加密,对方用自己的私钥解密。

加签名,确保消息是自己发的:用自己的私钥加密,对方用公钥解密。

Alice 用自己的私钥加密后,CA 证书授权机构有办法校验签名是否是 Alice 发出的(CA 不用存储私钥信息,就可以有办法校验签名的作者)。CA 自己的私钥加密也可以被其他人校验签名。

发信息流程:Alice 签名 -> CA 认证是 Alice 的信息 -> CA 签名 -> Alice 认证 CA 的签名 -> CA 或 Alice 发送信息给 Bob。

image-20240101120049982

Authentication 授权

数据完整性:数据没有被未授权的方式修改。也就是说篡改数据,或者有个中间人自己伪造了一份数据这些都能被检测出来,不能纠错但是可以检错。

这里有一个很有意思的误区,保密性和真实性的问题。授权只是确保真实性。

如果用传统加密方法,确保 data integrity 的方法如下:

  1. 保证只有收发双方得到信息。
  2. 用时间戳核实。
  3. 用检错序列号核实。

不过传统加密没法通过签名核实身份,也就是说中间人可以自己伪造信息。

而且加密方法来认证授权并不合适,计算量大,不如信息加一个 授权 tag 进行广播,而且现在很多计算机程序自带校验授权方法不用加密实现。

Longitudinal redundancy check (LRC) 纵向冗余校验

每个块的第i位拿出来异或一下得到校验码。随机数据很合适,但是对可预测的格式化数据不太合适。

image-20240101122358192

Hash functions

输入永远得到固定长度的输出,算法公开,输入容易计算输出,输出很难反过来计算输入。

  • Preimage Resistance:给定h(m)=c,很难根据这个c找到m。可以用于数据库保存用户密码,数据库管理员看到c不知道原密码是啥。

  • Second Preimage Resistance:给定 m 和 h(m),很难找到n≠m且h(m)=h(n)。下载软件后计算哈希值核实软件完整性。

  • Collision Resistance:对于哈希函数h,很难出现n≠m且h(m)=h(n)。比如 bob 给 alice 发消息说借我100,alice 在这条消息的 hash 上签名了;但是如果 bob 找到了另一条消息:借你100000元,也和"借你100元"有一样的 hash 值,那他可以说其实 alice 答应借我 100000。要避免这种事情发生。

这样发送方发送自己的消息和消息的哈希值,接收方就可以校验完整性(保密性没法校验)了。

还可以用于生成伪随机数。

比如 SHA1:简单说就是先扩展到512位的整数倍,然后每次拿512位出来处理一次,不断迭代最后得到一个512位的哈希值。

image-20240101131239404

破解办法就是暴力破解或密码分析。

Preimage Resistance & second Preimage Resistance:平均需要尝试 2m-1 次。

Collision Resistance:2m/2 代表 Collision Resistance 的强度(碰撞可能性)。生成的哈希值当然越长越小可能碰撞。

生日攻击

birthday attack。如果我们想让一群人里面至少有两个同一天生日,应该选多少人?令人非常吃惊的是70个人就能达到90%的概率(会发生生日重复)了。

所以哈希值的问题我们也不需要尝试几乎所有组合。比如对于64位消息,创建232 个消息变体很大概率上就能出现重合的哈希值了。

MAC

也是一种 散列算法,消息和密钥一起算散列值,然后附着在消息上发给对方。对方知道密钥的情况下,计算消息+密钥看 mac 值是否一样,不一样就说明消息变过或者发送人不对。

1704092729526

和单向函数相比,单向函数只能确保数据完整性,mac 还能 authentication(因为密钥只有自己和对方知道,所以 mac 对上了也能说明发送信息的人确实是和自己共享密钥的对方)。

HMAC

MAC 基于多种加密方式,hmac 是专于 hash 的。并且 HMAC 很方便更换散列函数,只需要删除(remove)有的散列函数模块并插入(drop in)新的即可。

数字签名

用于:

  • 确保数据完整性和签名者的授权身份。
  • 不可抵赖性 Non-repudiation,签名者无法抵赖自己发的数据。

实现上感觉类似 MAC,数据信息+secret 参数信息,通过哈希算法得到签名。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【产品设计】信息建设三驾马车:MES系统拆解

本篇文章&#xff0c;将从三个方面对MES系统进行拆解分析&#xff0c;并分析其特殊功能——文档管理。MES系统能实现多个生产信息的互联互通&#xff0c;提高生产效率。 MES系统主要实现生产业务系统管理。 ERP系统主要实现采购、销售、库存&#xff08;进销存&#xff09;、财…

算法基础之滑雪

滑雪 核心思想&#xff1a;记忆化搜索 状态表示&#xff1a; f[i][j] 表示所有从(i,j) 开始滑的路径的最大值 状态计算&#xff1a; 分成四个方向 f[i][j] max(f[i][j] , f[i][j1] 1) 且h[a][b] (下一个点) 必须严格小于 h[i][j] 才能滑过去 #include<iostream>#…

大数据背景下基于联邦学习的小微企业信用风险评估研究

摘要&#xff1a; 小微企业信用风险评估难是制约其融资和发展的一个主要障碍。基于大数据的小微企业信用风险评估依然面临着单机构数据片面、跨机构数据共享难、模型不稳定等诸多挑战。针对相关问题和挑战&#xff0c;本项目拟在多主体所有权数据隐私保护与安全共享的背景下&am…

基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码

基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于斑点鬣狗优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

junit单元测试Mock

在平常工作&#xff0c;经常会用到单元测试&#xff0c;那么单元测试应该怎么写呢&#xff1f; 1&#xff1a;引入包&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

数据结构:基于数组的环形队列(循环队列)实现

1 前言 队列是一种先进先出的线性表&#xff0c;简称为FIFO。它只允许在队尾插入成员&#xff0c;在队头删除成员&#xff0c;就像现实生活中排队上车一样。 队列的实现可以通过链表或数组完成&#xff0c;一般来说都推荐使用链表来实现队列&#xff0c;使用数组实现队列时每次…

AI人工智能技术发现了拉斐尔名画背后的秘密:这幅画并非完全由大师本人完成

最近&#xff0c;一个先进的人工智能神经网络在拉斐尔的名画中发现了一个不寻常的地方&#xff1a;其中的一副面孔并非由拉斐尔本人绘制&#xff0c;而是出自其他艺术家之手。 详细文章网址链接&#xff1a;Deep transfer learning for visual analysis and attribution of pai…

07 HAL库ADC读取电压的值

引言&#xff1a; 本文使用adc读取接在SOC的ADC的通道上外设的模拟数据&#xff0c;本文的的实验对象是一个滑动变阻器&#xff0c; 像其它的ADC外设不如光电管&#xff0c; 火焰传感器&#xff0c; 等等一些里的adc设备的根据都是差不多的。 一、ADC的基本知识 ADC&#xff08…

Apache Doris (五十五): Doris Join类型 - Colocation Join

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Colocation Join原理

苦心分享两款免费AI 绘图软件,效果真的不错

这里写自定义目录标题 图一是 AI 绘画软件一键抠图做的&#xff0c;软件还免费 网址:https://www.yijiankoutu.com/ 一个非常强大的AI绘画网站&#xff0c;能够免费生成各种好看的二次元、3D、国风、漫画、卡通等风格的图片&#xff0c;生成图片跟文字匹配度非常高&#xff0c;…

【Qt之Quick模块】6. QML语法详解_3 QML对象特性

概述 每一个QML对象类型都包含一组已定义的特性。当进行实例时都会包含一组特性&#xff0c;这些特性是在对象类型中定义的。 一个QML文档中的对象类型声明了一个新的类型&#xff0c;即实例出一个类型。 其中包含以下特性。 the id attribute &#xff1a; id特性property a…

Node.js使用jemalloc内存分配器显著减少内存使用

前言 Node.js 默认使用的是 ptmalloc(glibc) 内存分配器&#xff0c;而&#xff1a; 在服务端领域「不会选择默认的 malloc」是一个常识。&#xff08; 来源 &#xff09; ptmalloc 的分配效率较低&#xff08; 来源 &#xff09;&#xff0c;对于 长时间、多核 / 多线程 运行…