文档章节

加密技术入门——从对称加密到CA证书

xtuhcy
 xtuhcy
发布于 2016/03/10 15:34
字数 929
阅读 151
收藏 2

#加密技术入门——从对称加密到CA证书 ##几个基本概念

对称加密

对称加密是最传统的加密方式,简单说就是用一个密钥对原文加密,再用同样密钥对原文解密。对称加密的优点就是加密速度快,但是缺点也很明显,密钥的传递无法保障。常见的对称加密算法有DES、3DES、AES等

非对称加密

为了解决密钥传递的问题,聪明的人类罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman) RSA

发明了非对称加密算法RSA。简单来说就是有一个公钥和一个私钥,私钥自己保留,公钥分发给别人。可以用公钥加密用私钥解密,也可以用私钥加密用公钥解密,但是不能用私钥加密私钥解密,也不能用公钥加密公钥解密。非对称加密很好的解决了对称加密中的密钥传递的问题。

摘要

摘要可以看作是你传递的内容的唯一指纹,独一无二的。摘要的这个特征能很好的验证传递的内容是否被别人篡改了。摘要最著名的算法当属MD5,更安全的可以采用SHA。

##一个典型的应用场景

A(客户端)传递给B(服务器端)一段内容,要求不被篡改,密钥不能公开

输入图片说明

  1. A用对称加密des将原文加密
  2. A用md5对原文生成摘要
  3. A用B给的公钥(PB)将对称密钥加密
  4. B接到上述内容后,先用自己的私钥(SB)解密,获得对称密钥
  5. 用对称密钥解密密文获得原文
  6. 将解密出来的原文进行md5获得摘要2
  7. 用摘要1和摘要2比对,看看是否一致
  8. 如果一致表示内容没有篡改,是一个可信的内容

问题

这存在一个安全隐患,A的身份B无法确认,B不能确定这段密文一定是A给他发的。解决方案就是用数字签名。

##数字签名

数字签名其实就是非对称加密和摘要的结合使用。原理很简单,对称加密支持私钥加密,公钥解密。那么我们用A的私钥加密,如果能用A的公钥解密那就能确定这段内容一定是A发送的。非对称加密效率较低,所以通常会结合摘要来实现。

##数字信封 上述场景结合数字签名其实就是一个数字信封的应用。

输入图片说明

交互过程基本相同,唯一不同的地方就是摘要需要用A的私钥(SA)加密,B收到后用A公钥(PB)来获得摘要1。

问题

问题1:B(服务器端)需要知道所有A(客户端)的公钥

问题2:B(服务器端)和A(客户端)的公钥变得十分重要,公钥是公开的,如果其他人冒充身份提供公钥如何解决?

##CA数字证书 解决公钥可靠性的方法就是CA数字证书。公钥的分配都有一个可信的机构来分配,就是CA。

  1. CA用它的私钥做数字签名就是CA提供的证书:证书=CA的私钥(B的身份+B公钥)
  2. 客户端获取证书 -> CA的公钥(证书)-> 获得B的身份和B的公钥

© 著作权归作者所有

共有 人打赏支持
xtuhcy

xtuhcy

粉丝 105
博文 17
码字总数 20302
作品 1
北京
后端工程师
私信 提问
SSL协议之数据加密过程详解

前言 总括: 本文详细讲述了SSL协议中的数据加密的过程,数字证书、对称加密、非对称加密和SSL握手过程等概念。 原文博客地址:SSL协议之数据加密过程详解 知乎专栏&&简书专题:前端进击者(...

Damonare
2017/12/31
0
0
区块链100讲:SSL协议之数据加密过程详解

本讲详细讲述了SSL协议中的数据加密的过程,数字证书、对称加密、非对称加密和SSL握手过程等概念。 1 SSL 只要你听过HTTPS,不可能没听过SSL协议吧,SSL协议是一种安全协议。对于互联网协议没...

HiBlock
08/31
0
0
6.5最详细的 HTTPS 科普扫盲帖

为什么需要https HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。 举个最常见的例子,用户登陆。用户输入...

sxl01890
2016/05/23
15
0
如果这样来理解HTTPS,一篇就够了!

1、前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢。 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外...

JackJiang2011
08/20
0
0
深入理解加密、解密、数字签名和数字证书

随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤其是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活动,公开密钥基础设施( PKI, Public ...

洋哥6
2016/04/06
303
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 自定义你的空间

通过对你的空间进行界面的自定义能够让你的空间更加出类拔萃。 如果你具有空间管理员权限,你可以修改你空间的颜色配色,添加你自己的空间标识,选择是否在你空间中显示边栏。或者你可以进入...

honeymose
35分钟前
1
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部