当前位置: 首页 > news >正文

网络协议:(非)对称加密数字证书

目录

如何加密解密

 对称加密(对称密码)

 非对称加密(公钥密码)

 对称加密(Symmetric Cryptography)

 DES(Data Encryption Standard)

3DES(Triple Data Encryption Algorithm)

 AES(Advanced Encryption Standard)

 密钥配送问题

 非对称加密(Asymmtric Cryptographic)

 解决非对称密钥配送问题

 混合密码系统(Hybrid Cryptosystem)

 混合密码-加密

 混合密码--解密

 数字签名

 数字签名--疑惑

数字证书 

 公钥的合法性

 证书

 证书使用

 证书的注册和下载

 查看Windows已经信任的证书


如何加密解密

 对称加密(对称密码)

 非对称加密(公钥密码)

 对称加密(Symmetric Cryptography)

 DES(Data Encryption Standard)

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

3DES(Triple Data Encryption Algorithm)

  • 3DES,将DES重复3次2所得到的一种密码算法,也叫三重DES
    • 三重DES并不是进行三次DES加密(加密==>加密==>加密)
    • 而是加密==>解密==>加密
  • 目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题

 3个密钥是不同的,也称为DES-EDE3

 AES(Advanced Encryption Standard)

  • 取代DES成为新标准的一种对称加密算法,又称Rijndael加密法
  • AES的密钥长度有128、192、256三种
  • 目前AES,已经逐步取代DES,3DES,成为首选的对称加密算法
  • 一般来说,我们也不应该去使用任何自制的秘密算法。AES经过了全世界密码学家所进行的高品质验证工作

 密钥配送问题

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

 解决密钥配送问题

  • 有以下几种解决密钥配送的方法
    • 事先共享密钥(比如私下共享)
    • 密钥分配中心(Key Distribution Center,简称KDC)
    • Diffie-Hellman密钥交换
    • 非对称加密

 非对称加密(Asymmtric Cryptographic)

  • 在非对称加密种,密钥分为加密密钥、解密密钥两种,它们并不是同一个密钥
  • 加密密钥:一般是公开的,因此该密钥称为公钥(public key)。因此,非对称加密也被称为公钥密码(Public-key Cryptography)
  • 解密密钥:由消息接收者自己报关,不能公开,因此也成为私钥(private key)

 公钥、私钥

 解决非对称密钥配送问题

  • 由消息的接收者,生成一堆公钥私钥
  • 将公钥发送给消息的发送者
  • 消息的发送者使用公钥加密信息
  • 非对称加密的加密解密速度比对称加密要慢

 混合密码系统(Hybrid Cryptosystem)

  • 对称加密的缺点:不能很好地解决密钥配送问题(密钥会被窃听)
  • 非对称加密的缺点:加密解密速度慢
  • 混合密码系统:是将对称加密和非对称加密的优势相结合的方法
    • 解决了非对称加密速度慢的问题
    • 并通过非对称加密解决了对称加密的密钥配送的问题
  • 网络上密码通信所使用SSL/TLS都运用了混合密码系统

 混合密码-加密

  • 会话密钥(session key)。为本子通信随机生成的临时密钥,作为对称加密的密钥,用于加密信息,提高速度
  • 加密步骤(发送消息)
    • 首先,消息发送者要拥有消息接收者的公钥
    • 生成会话密钥,作为对称加密的密钥,加密消息
    • 用消息接收者的公钥,加密会话密钥
    • 将钱步生成的加密结果,一并发送给密钥接收者
  • 发送出去的内容包括
    • 用会话密钥加密的消息(加密方法:对称加密)
    • 用公钥加密的会话密钥(加密方法:非对称加密)

 混合密码--解密

  • 解密步骤
    • 信息接收者用自己的私钥解密出会话密钥
    • 再用上一步解密出来的会话密钥,解密信息

 数字签名

  • 在数字签名技术中,有以下两种行为
    • 生成签名:由消息发送者完成,通过“签名密钥”生成
  • 验证签名:由消息的接收者完成,同构“验证密钥”验证
  • 如果能保证这个签名是消息发送者自己签名的呢?答案:用消息发送者的私钥进行签名

过程 

 改进

 数字签名--疑惑

  • 如果有人篡改了信息内容或者签名内容,会是什么结果?答案:签名验证失败,证明内容被篡改了
  • 数字签名不能保证机密性?答案:数字签名的作用不是为了保证机密性,而是为了能够识别内容有没有被篡改
  • 数字签名的作用
    • 确认消息的完整性
    • 识别消息是否被篡改
    • 防止消息发送人否认

数字证书 

 公钥的合法性

如果遭遇了中间人攻击,那么公钥可能是伪造的。如何验证公钥的合法性呢?使用数字证书! 

 证书

  • 说到证书,首先联想到的是驾驶证、毕业证、英语四六级证等待,都是由权威机构认证的
  • 密码学中的证书,全称叫公钥证书(Public-key Certificate, PKC),跟驾驶证类似
    • 里面由姓名、邮箱等个人信息,以及此人的公钥
    • 并由认证机构(Certificate Authority, CA)施加数字签名
  • CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织
    • 由国际性组织、政府设立的组织
    • 有通过提供认证服务来盈利的企业
    • 个人也可以成立认证机构

 

 证书使用

 证书的注册和下载

 查看Windows已经信任的证书

相关文章:

  • 靠天旱情考验农业 国稻种芯-钱前院士:耐旱水稻品种将更多
  • 3D格式转换神器HOOPS Exchange使用教程(二):检索可视化工作流的图形数据
  • 一个好的测试工程师一定要了解的测试方法有哪些?
  • 2022年了,学C++和python到底哪个值得?
  • linux 函数 堆栈
  • 页面参数获取与修改
  • 信息爆炸!78天闭门深造千页SpringCloud,再战京东
  • Python ML实战-工业蒸汽量预测02-数据探索
  • Android识别字符串中的简体和繁体字
  • ie11浏览器兼容性报错app.js script1003 缺少:
  • 资源管理器占用CPU过高的解决方法
  • (附源码)ssm高校实验室 毕业设计 800008
  • [CISCN2019 华东南赛区]Web4
  • 聚苯乙烯微球载金属纳米粒子/中空结构聚苯乙烯纳米微球/间隔臂羧化聚苯乙烯微球的研究
  • 软硬件一体,利尔达芯智行创新智能电摩解决方案
  • [笔记] php常见简单功能及函数
  • Angular 响应式表单 基础例子
  • maya建模与骨骼动画快速实现人工鱼
  • OSS Web直传 (文件图片)
  • VUE es6技巧写法(持续更新中~~~)
  • VuePress 静态网站生成
  • 回顾2016
  • 浏览器缓存机制分析
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 为什么要用IPython/Jupyter?
  • HanLP分词命名实体提取详解
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​2021半年盘点,不想你错过的重磅新书
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #1014 : Trie树
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • .net core Swagger 过滤部分Api
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • :not(:first-child)和:not(:last-child)的用法
  • @property python知乎_Python3基础之:property
  • [AAuto]给百宝箱增加娱乐功能
  • [Android] Android ActivityManager
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [c++] C++多态(虚函数和虚继承)
  • [CF482B]Interesting Array
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [jQuery]10 Things I Learned from the jQuery Source
  • [LeetCode] 196. 删除重复的电子邮箱
  • [LeetCode]Multiply Strings
  • [MicroPython]TPYBoard v102 CAN总线通信
  • [NOIP2007 普及组] 纪念品分组--贪心算法
  • [UGUI]实现从一个道具栏拖拽一个UI道具到另一个道具栏
  • [UIM]论文解读:subword Regularization: Multiple Subword Candidates