当前位置:   article > 正文

密码学入门_ecdhe 前向安全性

ecdhe 前向安全性

原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。

简介

image_2022-04-27_20220427125941
在信息安全领域,一般会遇到"窃听"、“篡改”、“伪装”、"否认"这些威胁,而密码学家们提供了相应的密码学算法来解决这些问题,如下:

  • 窃听:攻击者可以在网络上安置了一个路由器,侦听所有经过的数据包,这样数据就被泄密了,密码学提供了对称密码与公钥密码算法对数据加密,保证机密性。
  • 篡改:攻击者对经过的数据包进行修改,使得接收方获取到错误的信息,密码学提供了单向散列函数生成“数据指纹”,保证数据完整性。
  • 伪装:攻击者伪装成发送方来发送数据,使得接收方获取到虚假的信息,密码学提供消息认证码生成"认证码",保证数据来源的正确性。
  • 否认:发送方本身是攻击者,发送了恶意请求后,谎称自己没有发此请求,密码学提供了数字签名算法,使其不可否认。

对称加密、公钥加密、消息散列、消息认证码、数字签名这些算法,也被称为密码学家的工具箱。

加密分类

现如今的加密算法,主要分为两大类,一类是对称加密,而另一类是非对称加密,而对称加密在实现方式上又可以分为两类,一类是分组加密算法,另一类是流加密算法。

分组加密

分组加密(block cipher),每次加密或解密数据中特定长度的一小块,前一块处理完了再处理下一块,直到所有数据都处理完,这里的“一块”就称为分组,而一个分组的bit数就是分组长度。

常见的分组加密算法有DES与AES,比如DES的分组长度是64bit,而AES的分组长度可以是128bit或192bit或256bit,由于DES或AES的算法过程比较复杂,暂不介绍,但我们有必要了解一下它们经常使用的基础运算XOR。

XOR加密

在位运算中,一般有AND(与)、OR(或)、NOT(非)运算,然而还有一种位运算也非常常用,即XOR(异或),它的运算规则如下:
image_2022-04-27_20220427130133

简单来说,就是两边相同结果是0,两边不同结果是1,所以才称为“异或”嘛!

而如果将XOR运算应用在多bit的数据上,我们会发现XOR有非常好的自反特性,如下:

  1. 数据A与B异或之后,变成了一个新数据
    image_2022-04-27_20220427130205
  2. 而当我们将新数据再与B异或运算后,发现它又变成了A!
    image_2022-04-27_20220427130233
  3. 从而,我们惊奇的发现,如果把B看成是密钥的话,XOR可以用来实现加密、解密算法,而加密、解密过程,都只需要数据与密钥做XOR运算即可。

Linux命令做XOR加密

$ pip install xortool

# 明文文件,内容是hello
$ echo -n hello > plain.txt

$ xxd plain.txt
00000000: 6865 6c6c 6f                             hello

# 用xor算法加密,密码为pass,生成encrypt.bin
$ cat plain.txt | xortool-xor -n -r pwd -f - > encrypt.bin

$ xxd encrypt.bin
00000000: 1812 081c 18                             .....

# 用XOR算法解密,可还原成明文
$ xortool-xor -n -r pwd -f encrypt.bin
hello
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

虽然对称加密算法的核心是XOR,但如果加密算法只使用XOR的话,其加密的强度并不够高,很容易被破译或泄密。

下面会以一个故事展开密码学的各种算法概念及用途,背景如下:
男主:小李 ,女主:小红,男配:大李,小李的哥哥,女配:小美,小红的闺蜜
小李与小红是同班同学,专业计算机,小李对小红倾慕已久!

恋爱日记:小李写情书

为了表达爱慕之情,小李写了一封情书,写了好长时间,决定发给小红,但又不想被网络上的其他人看到!如下:
image_2022-04-29_20220429133939

由于小李最近学习了XOR加密算法,于是使用XOR加密了情书,如下:

cat plain.txt | xortool-xor -n -r pwd -f - > encrypt.bin
  • 1

image_2022-04-28_20220428132509
可以看到,加密后的数据都是乱码了,效果很好!

小李喜出望外,将自己的成果展示给哥哥大李看!大李指出,这样的加密算法强度不够高,密码学家们可以轻易破解,开始给小李展示破译过程!

# 统计原文词频
$ grep -oP . plain.txt |sort|uniq -c|sort -nr|head
     6637312515151312109# 统计密文词频
$ xxd -g3 -c3 -ps encrypt.bin |sort|uniq -c|sort -nr|head
     66 9fcbe8
     37 94cac4
     31 97ede0
     25 96fff5
     15 96efcb
     15 94cfe9
     13 94cfe4
     12 96f4d7
     10 94cbfe
      9 99f4d9

# 按词频构造替换表
$ paste <(xxd -g3 -c3 -ps encrypt.bin |sort|uniq -c|sort -nr|head|awk '{print $2}'|sed -E 's/../\\x&/g') <(grep -oP . plain.txt |sort|uniq -c|sort -nr|head|awk '{print $2}')
\x9f\xcb\xe8    ,
\x94\xca\xc4    你
\x97\xed\xe0    的
\x96
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/533234
推荐阅读
相关标签
  

闽ICP备14008679号