Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

作者头像
冬天vs不冷
发布于 2025-01-21 00:55:36
发布于 2025-01-21 00:55:36
1830
举报
文章被收录于专栏:springbootspringboot

一、HTTP协议的安全问题

  • HTTP协议默认是采取明文传输的,因此会有很大的安全隐患
    • 常见的提高安全性的方法是:对通信内容进行加密后,再进行传输
  • 常见的加密方式
    • 不可逆-单向散列函数:MD5、SHA等
    • 可逆-对称加密:DES、3DES、AES等,非对称加密:RSA等
    • 其它-混合密码系统、数字签名、证书
  • 加密相关词语
    • encrypt:加密
    • decrypt:解密
    • plaintext:明文
    • ciphertext:密文

模拟加密与不加密情况,设计3 个虚拟人

  • Alice、Bob:互相通信
  • Eve:窃听者

如何防止被窃听?

二、单向散列函数

单向散列函数特点

  • 根据任意长度的消息,计算出固定长度的散列值
  • 计算速度快,能快速计算出散列值
  • 具备单向性
  • 消息不同,散列值不同,具有雪崩效应

常见的几种单向散列函数

  • MD4,MD5:产生128bit的散列值,MD就是Message Digest的缩写
  • SHA-1:产生160bit的散列值
  • SHA-2:SHA-256,SHA-384,SHA-512,散列值长度分别是256bit,384bit,512bit
  • SHA-31:全新标准

单向散列函数 - 防止数据被篡改

  • 一般情况下是这样做的
  • 应用单向散列函数来防止数据被篡改

三、对称加密

  • 对称加密(Symmetric Cryptography):加密、解密时使用的是同一个密钥
  • 常见的对称加密算法
    • DES
    • 3DES
    • AES

1、DES(Data Encryption Standard)

  • DES 是一种将 64bit 明文加密成 64bit 密文的对称加密算法,密钥长度是 56bit
  • 规格上来说,密钥长度是 64bit,但每隔 7bit 会设置一个用于错误检查的 ,因此密钥长度实质上是 56bit
  • 由于DES 每次只能加密 64bit 的数据,遇到比较大的数据,需要对 DES 加密进行迭代(反复)
  • 目前已经可以在短时间内被破解,所以不建议使用

2、3DES(Triple Data Encryption Algorithm)

  • 3DES ,将 DES 重复 3 次所得到的一种密码算法,也叫做 3重DES
    • 三重DES 并不是进行三次 DES 加密(加密 → 加密 → 加密)
    • 而是 加密(Encryption) → 解密(Decryption) → 加密(Encryption) 的过程
  • 目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题
  • 由于3个密钥都是不同的,也称为 DES-EDE3
  • 如果所有密钥都使用同一个,则结果与普通的 DES 是等价的
  • 如果密钥1、密钥3相同,密钥2不同,称为 DES-EDE2

3、AES(Advanced Encryption Standard)

  • AES 取代 DES 成为新标准的一种对称加密算法,又称 Rijndeal加密法
  • AES 的密钥长度有 128、192、256bit 三种
  • 目前 AES 已经逐步取代 DES、3DES ,成为首选的对称加密算法
  • 它经过了全世界密码学家所进行的高品质验证工作

密钥配送问题(可以用非对称加密解决)

  • 在使用对称加密时,一定会遇到密钥配送问题
  • 如果 Alice 将使用对称加密过的消息发给了 Bob
    • 只有将密钥发送给 Bob,Bob 才能完成解密
    • 在发送密钥过程中,可能会被 Eve 窃取密钥,最后 Eve 也能完成解密

四、非对称加密

  • 在非对称加密中,密钥分为加密密钥、解密密钥 2种,它们并不是同一个密钥
  • 加密密钥:一般是公开的,因此该密钥称为公钥(public key)
  • 解密密钥:由消息接收者自己保管的,不能公开,因此也称为私钥(private key)

公钥、私钥

  • 公钥和私钥是一一对应的,不能单独生成
  • 一对公钥和私钥统称为密钥对(key pair)
  • 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密
  • 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

解决密钥配送问题

  • 由消息的接收者,生成一对公钥、私钥
  • 将公钥发给消息的发送者,消息的发送者使用公钥加密消息
  • 为什么要用非对称加密解决密钥配送问题,而不是直接使用非对称加密传输消息呢?
    • 非对称加密的加密解密速度比对称加密要慢,直接用来传输消息效率低

RSA

  • 目前使用最广泛的非对称加密算法是 RSA
  • RSA的名字,由它的3位开发者,即Ron Rivest、Adi Shamir、Leonard Adleman的姓氏首字母组成

五、混合密码系统

  • 对称加密的缺点:不能很好地解决密钥配送问题(密钥会被窃听)
  • 非对称加密的缺点:加密解密速度比较慢
  • 混合密码系统:是将对称加密和非对称加密的优势相结合的方法
    • 解决了非对称加密速度慢的问题
    • 并通过非对称加密解决了对称加密的密钥配送问题

网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统

混合密码的加密

  • 会话密钥 (session key)
    • 为本次通信随机生成的临时密钥
    • 作为对称加密的密钥,用于加密消息,提高速度
  • 加密步骤(发送消息)
    1. 首先,消息发送者要拥有消息接收者的公钥
    2. 生成会话密钥,作为对称加密的密钥,加密消息
    3. 用消息接收者的非对称加密的公钥,加密会话密钥
    4. 将前 步生成的加密结果,一并发给消息接收者

混合密码的解密

  • 解密步骤(收到消息)
    1. 消息接收者用自己的私钥解密出会话密钥
    2. 再用第1步解密出来的会话密钥,解密消息

六、数字签名

想象以下场景:

  • Alice发的内容有可能是被篡改的,或者有人伪装成Alice发消息,或者就是Alice发的,但她可以否认

Bob 如何确定这段消息的真实性?如何识别篡改、伪装、否认?

  • 解决方案:数字签名

签名方法

  • 生成签名:由消息的发送者完成,通过“签名密钥”生成
  • 验证签名:由消息的接收者完成,通过“验证密钥”验证
  • 如何能保证这个签名是消息发送者自己签的?
    • 用消息发送者的私钥进行签名
    • 任何人都可以用消息发送者的公钥进行检验

数字签名的过程

  • 如果消息很大,非对称加密效率低
  • 所以改进为先将消息体使用单向散列函数转换为固定长度,再加密
  • 如果有人篡改了消息内容或签名内容,会是什么结果?
    • 签名验证失败,证明内容被篡改了
  • 数字签名不能保证机密性?
    • 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
  • 数字签名的作用
    • 确认消息的完整性
    • 识别消息是否被篡改
    • 防止消息发送人否认
  • 数字签名,其实就是将非对称加密反过来使用

七、证书(Certificate)

  • 为什么需要证书? - 公钥的合法性
  • 如果遭遇了中间人攻击,那么公钥将可能是伪造的
  • 密码学中的证书,全称叫公钥证书 (Public-key Certificate,PKC),跟驾驶证类似
    • 里面有姓名、邮箱等个人信息,以及此人的公钥
    • 并由 认证机构 (Certificate Authority,CA) 施加数字签名
  • CA 就是能够认定 “公钥确实属于此人” 并能够生成数字签名的个人或者组织
    • 有国际性组织、政府设立的组织
    • 有通过提供认证服务来盈利的企业
    • 个人也可以成立认证机构

证书 - 使用

  • 各大CA的公钥,默认已经内置在浏览器和操作系统中

证书 - 注册和下载

查看 Windows 已经信任的证书

  • Windows键 + R >>> 输入mmc
  • 文件 >>> 添加/删除管理单元
  • 证书 >>> 添加 >>> 我的用户账户 >>> 完成 >>> 确定
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与HTTPS简介
对称加密算法使用的加密和解密的密钥一样,比如用秘钥123加密就需要用123解密。实际中秘钥都是普通数据在互联网传输的,这样秘钥可能会被中间人截取,导致加密被破解。其过程如下:
恋喵大鲤鱼
2019/03/11
12.5K3
对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与HTTPS简介
干货 | 密码学入门学习笔记小结
3、认证:为了防止攻击者伪装成真正的发送者,对应的密码技术有消息认证码和数字签名。
网络安全自修室
2022/12/06
4890
干货 | 密码学入门学习笔记小结
面试题:什么是对称加密和非对称加密?
对称加密: 对称加密又称为共享密钥加密,指使用同一把密钥进行加密和解密。在对称加密过程中,发送者和接收者之间必须共享相同的密钥,这样发送者可以使用该密钥加密消息,而接收者则使用相同的密钥解密接收到的消息。对称加密算法包括 DES、3DES、AES 等,它们广泛应用于保证网络通信的安全性,如 HTTPS 协议就是一种基于对称密钥的加密机制。
GeekLiHua
2025/01/21
1140
PKI - 02 对称与非对称密钥算法
对称密钥算法和非对称密钥算法是两种常见的加密技术,它们在加密和解密数据时采用不同的方法。
小小工匠
2024/05/25
1630
PKI - 02 对称与非对称密钥算法
深入浅出密码学(下)
前言 在之前的文章《深入浅出密码学(上)》与《深入浅出密码学(中)》,笔者为大家介绍了密码学中的加密、单向散列函数与消息认证码的概念与应用。这里带大家简单回顾一下,在网络通信中,消息存在被窃听的风险,因此我们需要对消息进行加密来防止消息被窃听。而如果我们需要保证消息的完整性或一致性,则可以使用单向散列函数。而单向散列函数的局限性是无法对通信双方进行认证,即无法证明某条消息是某个人发出的,因此我们还需要消息认证码来解决消息认证的问题。然而消息认证码仍然不是十全十美的,其无法解决“否认”的问题,即仅仅使用消息认
Bug开发工程师
2018/04/17
7720
深入浅出密码学(下)
密码学 Cryptology 的基本概念术语
对称加密指的是加密和解密使用同一个密钥,所以叫做对称加密。对称加密只有一个密钥,作为私钥。
:Darwin
2023/08/10
2920
如果让你来设计消息加密
利用上班摸鱼的时间编写了一个简易的即时通讯软件,并发布到了网上。过了一段时间,你在软件上突然收到一条私信。
蝉沐风
2023/12/22
5240
如果让你来设计消息加密
一篇文章搞定密码学基础
密码技术是网络安全的基础,也是核心。现在对隐私保护、敏感信息尤其重视,所以不论是系统开发还是App开发,只要有网络通信,很多信息都需要进行加密,以防止被截取篡改,虽然很多人每天都在用密码学的知识,但并不是人人都知道,谨以此篇科普一下~~~ PS:2016.7.10 补充 散列函数与消息摘要 基本概念 明文M:原始数据,待加密的数据 密文C:对明文进行某种伪装或变换后的输出 密钥K:加密或解密中所使用的专门工具 加密E:用某种方法将明文变成密文的过程 解密D:将密文恢复成明文的过程 密码系统 一个密码
YungFan
2018/05/03
1.6K0
一篇文章搞定密码学基础
以嫦娥后羿的故事,同大家聊聊加密解密
网络可以作为信息传递的媒介,但是如果对所有的信息都采用明文的方式进行传输,如果我们的网络遭到监听,或者遭到劫持。如果我们的聊天记录,通话信息被泄露,我们的生活将失去隐私;如果我们的账户密码被人窃取那么我们的财产安全将无法得到保障。所以学习安全基础知识也是必要的。
没有故事的陈师傅
2023/05/01
2350
以嫦娥后羿的故事,同大家聊聊加密解密
2018-10-11 对称加密、非对称加密、Hash算法看完这篇文章加解密就别蒙了散列函数 加密算法
http://hongyitong.github.io/2016/07/18/%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E3%80%81%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E3%80%81Hash%E7%AE%97%E6%B3%95/
Albert陈凯
2018/10/12
1.4K0
图解 | 数字签名和数字证书的前世今生
这是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视频。
帅地
2020/09/22
2.4K0
图解 | 数字签名和数字证书的前世今生
非对称加密与安全证书看这一篇就懂了
前几日做支付对接时,被对方文档中的加密方式搞晕乎了一会。意识到证书加密方面的理解不够深入,事后查阅参考资料补习一波。本文是根据期间的学习,以及长期以来的实践做出的总结。
用户1263954
2018/07/30
1.8K0
非对称加密与安全证书看这一篇就懂了
iOS逆向之ipa签名原理
本篇文章虽然是介绍iOS开发中ipa包的签名原理。但因为签名涉及到密码学中的概念。在了解签名之前,我们需要明确一些概念。密码学中,根据加解密密钥的不同,通常把加密方式分为对称密码(对称加密)和公钥密码(非对称加密)。常见加密算法有:DES、3DES、DESX、AES、RSA、ECC。其中RSA、ECC是非对称加密算法。以下是一些必要的概念。
VV木公子
2021/02/13
10.1K0
iOS逆向之ipa签名原理
iOS开发(1)iOS签名机制
1、常见英文 encrypt:加密 decrypt:解密 plaintext:明文 ciphertext:密文
conanma
2021/11/04
1.6K0
对称加密与非对称加密的区别
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 ☠️每日毒鸡汤:放心,闭上眼,睡一觉,反正明天也不一定比今天好。 1.2 对称加密 1.2.1 对称加密算法的概念 对称加密: 对称加密指的是加密和解密使用相同密钥的加密算法,也称为单密码加密。他的
Java学术趴
2022/08/09
1.4K0
密码学
讲到计算机密码学,就不得不从网络的发展说起,网络初期,主要用于科学研究,只在几个大学之间互联网络,使得设计之初并没有考虑到数据传输安全问题。 随着网络发展,特别是从网络应用于军事,再到后来进入人们的日常生活,网络安全问题日益突出,从而发展出计算机密码学。 到目前为止,不论是系统开发还是应用开发,只要有网络通信,很多信息都需要进行加密,以防止被截取、篡改。所以了解密码学的相关知识,了解在何时使用何种密码技术,已经成为开发人员必不可少的知识。 本篇文章将会科普一下有关密码学的相关知识。
1ess
2021/10/29
7630
你的HTTP接口签名校验做对了吗?
举个例子,A正在某银行网站给B转账,转入卡号和金额输入完成后生成请求报文,然后加密报文传送给银行后台。银行收到请求后,解密得到明文,然后解析得到B的卡号和转账金额等信息,继续走后续转账流程。
普通程序员
2019/10/23
5.6K0
你的HTTP接口签名校验做对了吗?
PKI - 数字签名与数字证书
SSL是一种安全协议,用于在网络传输中提供数据加密、身份验证和完整性保护。它基于传输层协议(如TCP),并为其提供加密和安全功能。
小小工匠
2024/05/25
3680
PKI - 数字签名与数字证书
简单小结密码学入门知识点
  密码,最初的目的是用于对信息加密,计算机领域的密码技术种类繁多。但随着密码学的运用,密码还被用于身份认证、防止否认等功能上。密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
步履不停凡
2019/08/23
2.3K0
简单小结密码学入门知识点
读《图解密码技术》(一):密码
以前,对一些密码技术,虽然懂得怎么用,但对其原理却一直不甚了解,比如,用公钥加密后,为什么用私钥就可以解密?DES和AES加密时为什么需要一个初始化向量?想要了解这些密码技术的基本原理,而最近买书时看到了《图解密码技术》这本书,刚好可以解答到我的这些问题,于是,就买回来看了。
Keegan小钢
2018/08/10
3.3K1
读《图解密码技术》(一):密码
推荐阅读
相关推荐
对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与HTTPS简介
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档