在日常的接口交互中,数据的安全性是优先考虑的问题之一。那么一般我们在实际工作中如何去保证数据的安全呢?一般是通过数据加密的方式来处理。加密算法,如果按是否可以把密文还原成明文来划分的话,可以分为可逆加密和不可逆加密。

一、基础概念

1、密钥

密钥是一段二进制的字符串,其度量单位是位(bit)。对于密钥长度为256的话,就是指32个字节长度的密钥。

2、身份验证

在非对称加密模式下,使用私钥进行加密,对方用公钥进行解密,接收方如果能把信息成功解密出来,即可确定信息的来源方是私钥拥有者,达到身份验证的效果。

3、信息的完整性

信息完整性是指接收方收到的信息没有被篡改过。

二、可逆加密

在可逆加密分为对称加密和非对称加密两大类。对称加密是指加密和解密的密钥是同一个密钥,而非对称加密则需要使用两把不同的密钥进行。

1、对称加密

如上图,用户A通过对称加密算法,对要传输的消息的明文(plain text)进行加密(encrypt)得到密文(cihger  text)。用户B得到密文信息后,用同一把密钥对密文进行解密(encrypt)操作,当然也需要用同一种加密算法,最后得到消息的明文。

常见的对称加密算法主要有AES,其密钥长度128,192,256这几种是最常见的。

2、非对称加密

如图,非对称加密和解密是需要使用两个不同的密钥,其中公钥是可以提供给通信方,我们自己保管好私钥。

非对称加密方式,用公钥加密的话得用私钥来解密,反之亦然。在正式场景中,一般是有两套密钥,一套是接入方密钥,一套是平台方密钥。在进行对接的时候,双方会把自己的的公钥通过邮件等正式方式发给对方,并商议确定加密规则(包括使用的加密算法、公私钥的使用规则等,一般都是平台方制定)

常用的非对称加密算法是RSA。

3、混合加密

优点 缺点
对称加密 运算速度快 密钥被窃取后,消息会被破解
非对称加密 采用私钥自行保管、公钥任意分发的模式,黑客只要没有私钥就无法破解整个加密流程 运算速度慢,满足不了时效要求高的业务场景

可见,对称和非对称加密各有优缺点,我们把它们混合使用来进行加密,则可以更好地发挥效果。

1、首先,使用非对称加密的方式把密钥传给对方

对称加密被破解的关键是黑客拿到拿到密钥,所以我们可以通过非对称加密方式把密钥加密,然后对方拿到后解密即可。

2、使用对称加密方式进行后续信息交互。

三、如何确保信息的完整性

实现信息完整性的手段一般是应用摘要算法,也叫散列函数或者哈希函数。它主要是通过任意长度的字符串通过hash函数,变成固定长度的字符串。这个固定长度的字符串也被称为数字指纹或者摘要。

1、摘要算法的四大特点:

1)不可逆

不需密钥,只需使用算法即可加密,但是密文不能被解密。可用于加密用户密码,在存储在数据库中。

2)难题友好性

破解手段,只能是暴力枚举,需要消耗大量的算力。

3)发散性

明文进行非常小的改动,得到的摘要就会发生剧烈的变化(抖动)。

4)抗碰撞性

摘要算法会把不同长度的字符串变成相同长度的摘要,如果这些发生重复,那么就成为发生了碰撞。好的算法要求尽可能避免碰撞。

在常见的摘要算法中,MD5、SHA1不具备很强的抗碰撞性,因此目前主流使用SHA2(包括SHA224、SHA256、SHA384)算法。

2、实际应用流程

虽然摘要具有不可逆性,但是应对黑客拦截请求、替换原文内容并生成新的摘要,这种情况接收方是无法感知的。那么解决这个问题,可以对摘要进行加密传送。

整个流程主要围绕对摘要进行加密成数字签名,然后附在原文后面一起传送给接收方。接收方收到请求后,把签名通过发送方的公钥进行解密得到摘要信息,并与按原文生成的摘要进行比对,如果一致则说明请求没被篡改过。

3、进阶:数字证书及https应用

数字签名,对机密性普通程度的信息来说已经基本够用了,但是对于安全性很高的信息传播来说,还是会有一定问题的。

比如,接收方得到的发送方的公钥有可能是给人恶意替换了的。比如拿到的公钥被黑客替换了成自己的公钥。那么黑客就可以根据上述数字签名的方式发送自己的请求来欺骗接收方的数据。那么这时候就可以用数字证书来解决。

数字证书,就是让权威的CA机构为证书所有者的公钥进行背书。其使用可以理解为在数字签名的基础上加一层CA的签名验证。正规的CA,其公钥都会保存到操作系统里面,方便使用。如果证书由不正规的CA发布,那么在验证的过程中,会得到警告。

3.1、数字证书(Digital Certificate)的申请

机构A向CA提交数字证书申请,要提交自己的公钥给CA。CA创建数字证书信息,并通过摘要算法把证书原文生成摘要,并利用自己的私钥对摘要进行加密得到数字签名。然后把签名放到数字证书里面,最后生成机构A的数字证书。数字证书的生成流程,类似数字签名,生成的证书就可以发送给机构A来使用了。

3.2、数字证书的使用

当机构A得到数字证书后,就可以把数字证书和原文一起放到请求数据里面,然后发送数据。

接收方接收到数据后,会进行以下几步操作:

1)验证CA的数字签名

首先,从数据中取出CA的数字签名,并用CA的公钥对其进行解密,得到摘要信息

然后,把请求原文数据按摘要算法生成摘要信息

最后,对比两个摘要的一致性,如果一致,则说明请求是可信任的,并从证书中拿出机构A的公钥

2)验证机构A的数字签名

首先,利用上一步里面得到的机构A的公钥对其进行解密,得到摘要信息

然后,把请求原文数据按摘要算法生成摘要信息

最后,对比两个摘要的一致性,如果一致,则说明请求是可信任的

3)读取原文信息并使用

3.3、数字证书的一个典型的应用场景-https协议

https协议就是数字证书的一个使用场景。是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

其关键点在于浏览器向https网站发送加密请求并得到证书,然后通过验证后提取网站的公钥,接下来就可以与服务器交换加密信息了。

四、总结

在通讯过程中,保持数据的机密性和完整性是非常重要的。数据机密性可以靠可逆加密算法了完成,考虑到对效率和安全的平衡,一般建议使用对称加密和非对称加密进行混合使用。

在传说过程中,请求数据有可能给黑客进行拦截和篡改,破坏数据的完整性。常见的处理手段是使用数字签名和数字证书。

数据安全:通用的数据加密方法(AES、RSA、数字签名和数字证书)相关推荐

  1. 加密与安全:图解非对称加密算法 RSA 数字签名与数字证书

    RSA 加密过程是公钥加密.私钥解密,而数字签名.数字证书都是私钥签名(可以理解为加密),公钥签名验证(可以理解为解密).公钥和私钥都可以用来加密或解密,只要能保证用 A 加密,就用 B 解密即可,至 ...

  2. 【IoT】加密与安全:图解非对称加密算法 RSA 数字签名与数字证书

    RSA 加密过程是公钥加密.私钥解密,而数字签名.数字证书都是私钥签名(可以理解为加密),公钥签名验证(可以理解为解密).公钥和私钥都可以用来加密或解密,只要能保证用 A 加密,就用 B 解密即可,至 ...

  3. 数字签名和数字证书的原理解读(图文)

    数字签名和数字证书的原理解读(图文) 发布日期:2018-10-11 数字签名和数字证书的区别是什么?数字证书是由权威机构CA证书授权中心发行的,能提供在Internet上进行身份验证的一种权威性电子 ...

  4. 对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与 HTTPS 简介

    文章目录 1.加密算法简介 1.1 对称加密(Symmetric Key Algorithms) 1.2 非对称加密(Asymmetric Key Algorithms) 1.3 非对称加密 RSA ...

  5. 非对称加密(RSA、数字签名、数字证书)

    非对称加密.数字签名.数字证书的参考文章 1. 什么是非对称加密 (1)公钥和私钥成对出现 (2)公钥加密.私钥解密,私钥加密.公钥解密 (3)公钥一般对外公开,私钥保密 (4)主要用于防止通信数据被 ...

  6. 【数据安全】一、通俗理解数字签名,数字证书和https

    通俗理解数字签名,数字证书和https 前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖 ...

  7. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  8. 数字签名,数字证书,证书链原理

    来源:数字签名,数字证书,证书链原理(图文详解)_Ruby丶彬的博客-CSDN博客_证书链验证原理 数字签名,数字证书,加密简述 数字签名:谈及数字签名,就如小时候老师叫把卷子或者作业带回去给家长签字 ...

  9. 数字签名与数字证书技术简介(一)

    数字签名.数字证书等技术,是现代信息安全的核心技术,可谓使用面十分广泛.其基本理论本身并不复杂,本文希望通过深入浅出的介绍,能够让大家有一些基本了解. 对称加密.非对称加密 让我们通过一个例子开始:我 ...

最新文章

  1. 07.GitHub实战系列~7.Git之VS2013团队开发(如果不想了解git命令直接学这篇即可)...
  2. python连接elasticsearch查询数据
  3. SparseArrayE详解
  4. (软件工程复习核心重点)第三章需求分析-第三节:状态转换图
  5. 数据预处理之归一化/标准化/正则化/零均值化
  6. Windows消息拦截技术的应用
  7. java基础面试题之:普通类和抽象类有哪些区别?
  8. 如何运行网页html,如何在网页中运行html代码
  9. 【问题解决】解决创建Android模拟器时提示“No system images installed for this target“的问题
  10. Linux下黑白棋c语言程序,黑白棋c语言程序.doc
  11. 使用WWWGrep检查你的网站元素安全
  12. Storm Player 字幕加载
  13. 比肩Sci-hub的论文下载神器——Library Genesis
  14. ppt模板怎样用到html中,教你如何自己制作PPT模板及使用模板方法图文介绍
  15. C++ 中如何区分std::endl、std::ends、std::flush的差异性
  16. java操作Excel、PDF文件
  17. 小米note开发者选项如何开启
  18. 计算机专业海报加文字,巧用字体做海报之——字图穿插
  19. 基于keil5 的stm32F103C8T6的ST-LINK V2的仿真器使用
  20. 网络运维系列:GoDaddy Shell DDNS配置

热门文章

  1. 方向比努力重要,努力亦不可少
  2. react中使用构建缓存_使用React构建Tesla的电池范围计算器(第1部分)
  3. 《可伸缩服务架构 框架与中间件》综合(1)
  4. 行列式的几何意义、计算公式
  5. 报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 20: illegal multibyte sequence
  6. Vue自定义滚动条盒子
  7. BSP学习Day11 C语言基础 宏定义和宏函数 函数调用 类型转换 数组
  8. 推荐一款微软出品的开发神器,体验不输IDEA!
  9. 发现一款容器逃逸漏洞利用神器!
  10. 7位双极性序列 matlab,移动通信课程设计直接序列扩频系统仿真