首页 > 其他分享 >密码学简述

密码学简述

时间:2024-08-29 16:07:17浏览次数:12  
标签:明文 简述 哈希 密文 秘钥 密码学 mod

密码学发展概述

密码学应用非常广泛 大致的讲就是从古典密码学到现代密码学
这两者有一个最大的不同在于:kerckhoff法则
kerckhoff法则:
加密不应该依赖于加密算法的保密性 而是要依赖于秘钥的保密性
即使加密算法开源 攻击者得不到秘钥就无法通过密文解出明文

古典密码学:

加密的效果依赖于加密算法本身的保密性 当加密算法被得到后 秘钥会被轻易解出 从而破解密文
比如我们常见的 栅栏密码 凯撒加密 单表代换密码

这些加密手段容易被破解 比如栅栏密码和凯撒密码 其只是做了移位运算
通过穷举可以得出 也可以通过普遍规律推测 比如英文字母中最常用的为e 那么密文中出现次数最多的英文字母是e的可能性很高 通过此就轻易地推断出了明文

现代密码学:

现代密码学 现代密码学都可以归约为一个难解的数学问题

我们现在常用的公钥密码体质基于三种数学问题:

  1. 大数分解问题
  2. 离散对数问题
  3. 基于椭圆曲线的离散对数问题

刻画敌手能力:

在开放信道中攻击者可能会拥有:
加密算法
密文
密文对应明文
加密盒子 能够根据明文产生密文
强大的计算能力

  1. 已知明文攻击(kpa): 即已知明文以及明文对应的密文 通过这些信息推断出加密算法与秘钥
  2. 选择密文攻击(cca): 即可以使用明文得到密文 并且可以有限的将密文转换为明文 求出算法和秘钥
  3. 选择明文攻击(cpa): 可以使用明文得到密文 知道加密算法 需要推出秘钥
  4. 唯密文攻击(coa): 只能看到密文 通过穷举或者密文统计规律求出明文或者秘钥

大数分解问题

在这一问题下诞生了RSA算法
其计算方式如下:
选择两个大的素数 p q
p*q=n n作为秘钥组成的一部分
φ(n)=(p-1)*(q-1)
从一到φ(n)之间选择一个与φ(n)互质的数e作为私钥
e*d = 1(mod φ(n))求出公钥

最终加密解密采用秘钥(e,n) (d,n)
其安全性依赖于两个大质数的乘积n
显然n是很容易求出的 但通过n求p,q是很难的
p与q当这两者被得到后 秘钥将被轻易解出

由于大数分解其确定性 不能实现cpa安全 即选择明文攻击我可以通过任意明文得到密文

加密计算: M^e mod n=C
解密计算: C^d mod n=M

其中(e,n) (d,n)为秘钥对

离散对数问题

这一数学问题衍生出了dh秘钥交换 以及ElGamal秘钥交换
离散对数:(m ^ X)mod p = k1 已知k求出X是很难的
((m ^ Y)mod p)^X mod p = key=(m^XY)mod p
离散对数问题天生存在随机性 同一个明文加密后得到的密文不一定会一致
作为一个非确定性算法 能够保证cpa安全

dh秘钥交换时 依靠等式((m ^ Y)mod p)^X mod p = key=(m^XY)mod p
k1=(m^X)mod p
k2=(m^Y)mod p
双方会交换k1 k2 信道上只会交换k1 k2 攻击者得不到XY就无法求出秘钥
key=k1^Y mod p=k2^X mod p
最终使用key做秘钥进行信息交换
在这一过程中攻击者就算监听信道 也无法得到有效的信息 秘钥不会因此暴露

随机数生成

随机数在网络中的应用很多 可以通过随机数的生成防止重放攻击
重放攻击字面意思就是重新发送一个服务器已经接受过的数据包从而达到 绕过身份验 重复触发动作的目的

随机数的特性:
分布均匀: 即序列中每个字符出现的概率要相等
独立: 即下一个出现的字符与上一个字符的出现无关
不可预测性: 后续成员无法预测

如今使用的主要是伪随机数生成器:
使用算法确定性的计算产生随即位 取一个固定值 我们称之为种子 通过种子经过算法的计算后得到伪随机位流 而种子一般由
真随机数生成器生成:
真随机数生成器使用非确定性熵源生成随机数

伪随机数算法分为两类:
专用算法 为生成伪随机数专门设计
现有的密码算法 能够随机化输入数据 哈希函数 消息认证码

MAC与哈希函数

哈希函数:
有人称之为摘要算法 非常形象 哈希算法可以将不定长度的内容转换成为一个定长的字符串
哈希算法的特征有:
抗碰撞性:即消息之间不会碰撞 不同的信息源生成的摘要结果不会重复
雪崩效应:信息源的一点点变化都会引起信息发生巨大的改变
不可逆性:不能通过密文经过任何计算得出明文

其虽然抗碰撞但是不能完全不发生碰撞:
因为哈希函数的结果位数是有限的 有限的位数只能存储有限的信息 所以哈希函数一定会存在碰撞 但是在信息长度一定的范围内碰撞是很难发生的

MAC称为消息认证码 其可以被看做与秘钥相关联的单向哈希散列函数:
就像是加盐的哈希 没有盐值就得不到消息的哈希值
双方约定好一个秘钥 用于消息认证的鉴定
HMAC是MAC的一种 其基于哈希算法
通过 sha系列 md5 等哈希算法加盐生成唯一的消息验证码

公钥密码体制:

密码被分为公钥和私钥 私钥只能由自己保管 公钥可以交换传递
私钥和公钥互相能进行加密解密
一般使用对端的公钥 加密数据实现保密性
使用自己的私钥 加密数据实现数据的不可抵赖性
如今 安全性较高的并非rsa这种基于大数分解的算法 而是dh,elgamal这种基于离散对数的加密算法

标签:明文,简述,哈希,密文,秘钥,密码学,mod
From: https://www.cnblogs.com/fr09/p/18386865

相关文章

  • MySQL:简述对索引的认识
    一、为什么要有索引?一般的应用系统,读操作的比例远远大于写操作的比例,而且插入操作和一般的更新操作很少出现性能问题。在生产环境中,我们遇到最多的,也是最容易出现性能问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起查询优化,就不得不提到索引了。......
  • JAVA基础之二-面向对象简述
    java基础之二-面向对象简述一、概述如果有机会多接触几种语言,对于程序员多少是有好处的,至少有助于理解代码的运行真谛。高级语言有很多是面向对象的,因为面向对象的优点是显而易见的。这里比较知名的有rust,java,c++,c#但也有很多语言是面向过程的,鼎鼎有名有C,还有现在大家不......
  • RabbitMQ 相关概念及简述
    总结自:BV15k4y1k7EpRabbitMQ是一款常用的消息队列(MQ)。什么是消息队列MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,......
  • 读软件开发安全之道:概念、设计与实施08密码学(下)
    1. 对称加密1.1. symmetricencryption1.2. 使用各方共享的密钥来隐藏数据1.2.1. 对称加密在本质上依赖共享密钥1.3. 所有加密都是通过对明文进行转换,把明文消息(或者原始消息)变成无法识别的形式(也称为密文)​,从而隐藏原始消息内容的1.4. 可逆的转换称为对称加密,因为......
  • 读软件开发安全之道:概念、设计与实施07密码学(上)
    1. 加密工具1.1. 加密工具之所以没有得到充分使用,就是因为人们往往认为密码学是一个准入门槛极高的专业领域1.2. 如今的加密学大部分都源自纯数学,所以只要能够正确使用,加密学确实行之有效1.2.1. 不代表这些算法本身确实无法破解,而是需要数学领域出现重大突破才能实现破解......
  • 机器学习框架推理流程简述(以一项部署在windows上的MNN框架大模型部署过程为例子)
    一、写在前面公司正好有这个需求,故我这边简单接受进行模型的部署和demo程序的编写,顺便学习了解整个大模型的部署全流程。这篇博客会简单提到大模型部署的全流程,侧重点在推理这里。并且这篇博客也是结合之前的MNN部署流程来编写的,最好连下来一起看。MNN框架在WIN10上的部署MNN框......
  • 密码学之哈希算法
    文章目录1.哈希函数概述1.1哈希函数的定义1.2哈希函数的重要性2.SHA系列算法简介2.1SHA系列的发展历史2.2SHA系列的应用场景3.主要SHA算法详解3.1MD5算法3.2SHA-1算法3.3SHA-2算法家族3.4SHA-3算法4.SHA算法的安全性分析4.1安全性的重要性4.2已知的攻击......
  • 密码学之RSA算法
    文章目录1.RSA算法介绍1.2算法历史与发展1.3算法应用场景2.RSA密钥生成2.1选择素数2.2计算公钥和私钥2.3密钥长度与安全性3算法原理3.1加密原理3.2加密方法3.3加密示例3.4代码实现4.总结1.RSA算法介绍1.2算法历史与发展RSA算法由RonRivest、Adi......
  • 密码学之椭圆曲线(ECC)
    1.椭圆曲线加密ECC概述1.1ECC定义与原理椭圆曲线密码学(ECC)是一种基于椭圆曲线数学的公钥密码体系,它利用了椭圆曲线上的点构成的阿贝尔群和相应的离散对数问题来实现加密和数字签名。ECC的安全性依赖于椭圆曲线离散对数问题(ECDLP)的难解性。在ECC中,首先需要选择一个椭圆......
  • T113s工业套件简述
    T113s工业套件简述提示T113开发交流QQ群:120575746此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/aw/硬件简述​100ASK_T113s3-Industrial-DevKit是百问网设计的一款专门针对于工业控制场景设计的开发套件,核心板主控使用全志T113s3......