美文网首页
前后端数据传输安全——加密浅析

前后端数据传输安全——加密浅析

作者: A_si | 来源:发表于2021-08-19 23:07 被阅读0次

加密

本文内容:

  • 密码学起源
  • 古典密码学
  • 现代密码学
  • 对称加密
  • 非对称加密
  • 数字签名
  • 哈希

密码学起源:

在战争中需要传递信息,所以有了密码学。

隐写术:

在奴隶的头皮上刻字,用头发遮挡;在身上隐私部位刻字。

下载.jpeg

武侠小说中武功秘籍是空白的,沾水显出字。

古典密码学:

移位式加密:密码棒。

加密算法:缠绕木棒后书写。

密钥:木棒的尺寸规格。
745

替换式加密:

字母表、码表。

加密:使用码表替换字母表中对应字母。

解密:使用字母表中的字母替换码表中对应字母。
11

现代密码学:

随着计算机的发展,数学算法多次计算。不止可以用于文字内容,还可以用于各种二进制数据。按照加解密使用的密钥是否相同,可分为对称加密和非对称加密。

对称加密:

使用密钥和加密算法对数据进行转换,得到的无意义数据即为密文,使用同一密钥和解密算法进行逆向转换,得到原数据。

加密算法.002

加密算法:DES、AES。

DES 密钥位数只有 64 位,已经被弃用。主流 AES 128 位。

举个抽象的栗子:

// 原数据是111
// 加密算法是各项加法
// 解密算法是各项减法
// 密钥是4
111 加密: 1+4,1+4,1+4 = 555
对密文555 解密:5-4,5-4,5-4=111
image-20210728175519327

非对称加密:

使用公钥对数据加密得到密文,使用私钥对数据解密得到原数据。

加密算法:RSA、DSA、椭圆曲线等

下图中的加密密钥就是公钥,发送给客户端,让客户端加密数据,解密密钥就是私钥,自己持有,用来解密客户端加密过的数据。

解密算法.002
// 原数据是111
// 加密算法是各项加法
// 加密密钥是4
// 解密密钥是6,去除十进制进位后的十位。
111 加密: 1+4,1+4,1+4 = 555
对密文555 解密:5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,结果是111
image-20210728175740030

对称加密的优缺点:

算法简单,速度快,适合加密大数据。

缺点:在不安全的网络中,密钥传输过程容易被截获。

举个栗子:

网络通信是不安全的,小明对小红发消息,使用对称加密,小明把密钥发给小红的过程中,被法外狂徒张三拦截到了公钥,小明对小红说我家密码是 123456,加密后的密文是aoeqpe,张三拦截后使用公钥解密,知道了小明家的密码,小明没有等到小红,等到了张三。。。

对称拦截.009

上面可能有疑问,张三也不知道算法,怎么能破解,其实算法最简单最暴力的破解方法就是穷举法,一个一个试,在计算机发达的时代,简单算法容易被破解。

非对称加密的优缺点:

缺点:速度较慢

优点:安全

未命名2

上图中,张三拦截到了小明发给小红的公钥,小明给小红发信息我爱你加密后是asbd,张三拦截到,并没有解密密钥,所以不能破解。

上面的例子是单向通信的,要实现双向通信,小明也需要一对密钥,私钥自己保存,公钥发布给小红。这样小红使用小明的公钥也能安全的给小明发信息了。

未命名2.001

非对称一定安全吗?

image-20210728155534478 上图中,张三拦截到小明的消息并不能解密,但是他用公钥加密了分手吧发给小红,小红收到后伤心欲绝跳楼了。这就是伪造攻击。

数字签名:

为了防止伪造,就需要在数据上附带数字签名,保证数据来源的合法性。

公钥能不能解密私钥加密的数据?

image-20210728160900551 image-20210728163517054

还记得上面非对称加密的例子吗:

// 原数据是111
// 加密算法是各项加法
// 公钥是4
// 私钥是6,去除十进制进位后的十位。
原数据111 公钥加密: 1+4,1+4,1+4 = 555
密文555 私钥解密:5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,结果是111

现在我们使用数字签名的方法重写上面的例子,把加密后的密文当做原数据:

// 原数据是111
// 加密算法是各项加法
// 公钥是4
// 私钥是6,去除十进制进位后的十位。
原数据111 公钥加密: 1+4,1+4,1+4 = 555
密文555 私钥解密:5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,结果是111

// 数字签名

// 原数据是555
// 加密算法是各项加法
// 公钥是4
// 私钥是6,去除十进制进位后的十位。
原数据555 私钥加密: 5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,5+6=11抹去溢出的十位1=1,结果是111
对密文111 公钥解密:1+4,1+4,1+4 = 555

公钥可以解密私钥加密的数据

通常我们使用公钥加密,用私钥解密。而在数字签名中,我们使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。

我们可以直接对消息进行签名(即使用私钥加密,此时加密的目的是为了签名,而不是保密),验证者用公钥正确解密消息,如果和原消息一致,则验证签名成功,证明是对方发来的消息。但通常我们会对消息的散列值签名,因为通常散列值的长度远小于消息原文,使得签名(非对称加密)的效率大大提高。注意,计算消息的散列值不是数字签名的必要步骤。

在实际使用中,我们既想加密消息,又想签名,所以要对加密和签名组合使用,比如TLS就组合了加密和签名。

image-20210728163438958

数字签名的使用:

image-20210728172246257

上图的用法是有漏洞的,如果另一个人拦截了发送方的公钥,就能通过数字签名解密出原数据,数据就被窃听了,并且因为通信中含有2份数据,数据包增大。所以在实际操作中会使用 hash 算法,对原数据摘要进行签名,接收方对解密的数据也进行 hash,把摘要信息和解密的签名数据对比,确定是对方发送的原数据。

image-20210728174024929

现在,通过 hash,数据量很小,并且可以验证数据来源,但是还有一种攻击,就是重放攻击,需要进一步设计才能抵挡。

举个栗子:

小明给银行发送存一千块钱的请求。张三拦截到原数据,张三并不能解开,但是可以一直给银行发。本来小明存一千块,结果银行收到10次,小明存了一万块。这就是重放攻击。为了防止这种攻击,我们要在数据里利用时间戳、唯一序号等计算出一个请求签名。这样就避免重复消息。

相关文章

  • 前后端数据传输安全——加密浅析

    加密 本文内容: 密码学起源 古典密码学 现代密码学 对称加密 非对称加密 数字签名 哈希 密码学起源: 在战争中...

  • iOS 实现 openssl AES 加密方案

    最近公司修改了客户端与服务端数据传输的加密方案,采用AES ECB和GCM两种加密,由于后端采用的是Java语言,...

  • 第四章:SSH安全协议

    第一节:SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保...

  • Web API09-利用JavaAES加密python3解密

    接口测试为了数据传输的安全性防止数据泄露,很多时候我们不仅请求进行加密,连得到的响应内容也是加密的。如何将这些加密...

  • App适配https请求

    iOS进行https请求时,比http请求多了一项ssl加密功能,在数据传输层对数据进行加密传输,保证数据的安全。...

  • 数据传输加密

    为了数据安全经常会使用到加密技术,学习了一下Android中会用到的加密方法和场景 加密方法 在数据传输过程中,数...

  • 前后端数据传输加解密+请求重发

    目的 确保前后端传输数据的安全性,避免明文显示,避免数据被篡改 方案一: aes、rsa配合加密方案: 对称加密生...

  • 面试题整理

    客户端安全性处理方式1.、网络数据传输 加密2、协议的问题 自定义协议3、本地文件存储 加密4、源代码 混淆 图片...

  • 移动端与后端数据传输加密

    学习笔记对称加密:对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高非对...

  • 加密与解密的实现

    加密与解密的实现 前言 最近在考虑数据传输过程中的安全问题,大体了解了几种加密方式的原理,在这里使用Java来实现...

网友评论

      本文标题:前后端数据传输安全——加密浅析

      本文链接:https://www.haomeiwen.com/subject/zehjmltx.html