密码学入门

本文从密码学的基本概念出发,详细介绍了加密的分类,包括分组加密和流加密,重点讲解了XOR加密和AES加密在分组加密中的应用。同时,阐述了非对称加密如RSA的工作原理,以及模运算在加密过程中的作用。文章还探讨了密钥协商、前向安全性、单向散列算法、消息认证码和数字签名,以及如何防止中间人攻击。通过恋爱日记的故事,形象地展示了密码学在实际生活中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创:打码日记(微信公众号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

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

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

恋爱日记:小李写情书

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

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

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值