CAN304 W2
CAN304 W2
Classical and modern cryptography
Classical cryptography 完全依赖于通信双方之间共享的秘密信息(Private-key cryptography, 又叫 secret-key / shared-key / symmetric-key cryptography)。
Secure communication:双方共享一个密钥,用于安全通信。
Secure storage:单个用户可以在一段时间内安全地存储数据。
Private-key encryption
The shift cipher
对字母进行加密,如果密钥 k = 1,那么字母 A 加密后变成字母 B ...。解密的时候逆向进行该操作。
Frequency analysis: Match up the frequency distribution of the letters.
然而 shift cipher 并不安全,因为它的密钥空间 (key space) 较小,仅为 26。
密钥空间应足够大,以防止"暴力破解 (brute-force)" 详尽搜索攻击 (exhaustive-search attacks)。
The Vigenère cipher
现在密钥是一个字符串。
要进行加密,将内容依据密钥指示向后挪动相应的位。解密即反转该过程。
例如:k=‘cafe’ (a 代表 0,b 代表 1 ...)
key space:如果 key 是一个长度为 14 的字符串,那么 key space 的大小为 \(26^{14} \approx 2^{66}\)。
因此 Vigenère cipher 很安全,使用 brute-force search 几乎不可能。
不过如果被人知道了 key 的长度,那么破解起来就很容易:假如 key 长度为 14,那么位置在第 1,15,... 的元素都是用同一种方式加密,这样就可以破解密码。
Symmetric encryption
注:E 是加密算法,D 是解密算法。K 是密钥,M 是明文信息,C 是密文信息。
Stream ciphers vs. Block ciphers
Stream ciphers:对于一个密钥 k (k 一般比明文 m 短),使用算法 G 将 k 变得和 m 长度一致 (k 是种子密钥,G 是随机数发生器,生成的结果为 key stream),然后对明文一个一个 (一 bit 一 bit) 进行加密。解密为其逆过程。
Block ciphers:将 m 分成指定长度的 block,一块一块进行加密。
两者的主要区别是按 bit 加密,和按块加密。
Advantages of block ciphers:
- Good diffusion
- 更容易使一组加密字符相互依赖,因为 block 中有多个 bit,这些 bit 一起被加密,之间会产生联系
- Immunity to insertions
- 加密文本是已知长度,因为我们知道 block 的长度,如果给密文中插入,那么长度就会不一致
- Most common Internet crypto are done with block ciphers
Disadvantages of block ciphers:
- Slower
- 在加密/解密开始之前需要等待数据块
- Worse error propagation
- 错误会影响整个块 (要是出错,整个块都会出错)
Block ciphers (AES)
The Data Encryption Standard:DES,Block ciphers 的一种。
使用 substitutions (替换), permutations (排列,比如改变顺序), table lookups (表查找) 进行加密;加密会进行很多轮,每轮重复上述操作。但 DES 并不安全,因为其 key 不够长 (short key)。
The Advanced Encryption Standard:AES,可以作为 DES 的替代品,使用 combination of permutation and substitution 加密。
AES Internals (下面不考)
一个 128 bit 的 process block 可以选择长度为 128, 192, 和 256 bit 的 key。
我们可以将 16 byte (16 byte = 128 bit) 的明文看成由 byte 组成的二维 array s,这个 array 被称为 internal state。
AES 使用 SPN structure 转换 array 的 byte、列和行,以生成密文。
Substitution–permutation network (SPN)
AddRoundKey
- SPN 每轮会产生一个 round key,round key 的长度为 4,即每个元素 32 bit。将 128 bit 的 round key 和 internal state 中的数据进行逐位异或操作
SubBytes
根据 S-box 将每个 byte (s00, s01 ,... , s33) 替换为其他 byte (假如 s01 的值为 2e,那么它将被替换为 31)
ShiftRows
- 将第 i 行的第 i 个位置的元素移动到最左边 (整行一起移动)
MixColumns
- 将每列的 4 个 byte 作为输入,和一个给定的 matrix 相乘,从而将它们转换为新的 byte
KeyExpansion
从 16 byte 的 initial key 创建 11 个 16 byte 的 round key (k0-k10),其中使用和 SubBytes 中一样的 S-box 和异或操作
注:上面是 Key schedule function,k 是 initial key,w 是 round key (也是 16 byte)。通过上述机制生成 round key。
AES 与 block cipher 一样安全:所有输出 bit 都以某种复杂的伪随机方式依赖于所有输入 bit。但没有证据表明 AES 对所有可能的攻击免疫(例如,新的侧信道攻击,new side-channel attacks,核心思想是通过加密软件或硬件运行时产生的各种泄漏信息获取密文信息)。
Cryptographic modes
Block cipher 和 stream cipher 都是基本的加密方式,但现实中要求的加密可能更复杂 (比如 block cipher 只能加密固定长度的内容,但现实中要求加密任意长度的内容)。因此,应用 cipher 的方法就是 cryptographic mode。相同的加密方式可以用在不同的模式中。
ECB Mode
Electronic Codebook (ECB) Mode:ECB 是 block cipher 的一种最基本的工作模式。在该模式下,待处理信息被分为大小合适的分组,然后分别对每一分组独立进行加密或解密处理。
但 ECB 的所有分组的加密方式一致,这会导致相同的明文被加密后的密文也相同 - 不安全。
CBC mode
Cipher Block Chaining (CBC) mode 可以将一组相关的加密块绑定在一起,并隐藏相同内容的两个块。
CBC 使用先前块的密文来加密当前块:将先前块的密文和当前块的明文进行异或操作,再加密其结果。这样每个块的加密取决于所有先前块的内容。
不过 CBC 有一个缺陷,对于第一个 block 没有之前的块进行加密,这会导致和 ECB 相同的问题。因此我们使用 initialization vectors (IV) 来解决这个问题。
IV 会随机生成一个 string 来代替之前的块对第一个块进行加密。这确保了加密结果始终是唯一的。
解密方会收到 IV 以及一系列密文 (C1, C2, ...)。
PCB: previous ciphertext block
PPB: previous plaintext block
Uses of symmetric cryptography
Symmetric cryptography 可以被用于很多事:
Secrecy (confidentiality):只有知道密钥的人才能解密 - 保证机密性
Authentication
只有我和 A 知道密钥 k,如果我发消息给某人,那人解密了消息,那人必然是 A
但这存在一些问题,比如 non-repudiation problem:只有我和 A 知道密钥,我加密了一个消息,但我否认是我加密的,这样第三方就不知道到底是谁加密的消息 (因为我和 A 都可以加密)。
同样的,如果是三个人共享密钥,那就更不知道到底是谁加密的消息 (这种情况可以通过加密公钥来解决,即非对称加密)。
如果 authentication 的时候不考虑泄密问题,可以不使用加密。
Prevention of alteration (integrity):Changing one bit of an encrypted message completely garbles it. For many forms of cryptography, ciphertext à plaintext (meaningless, unreadable) 更改加密消息会使解密后的明文变得完全混乱
Symmetric cryptography 还存在一个问题:在互联网上,每两个人之间需要共享一个密钥进行通信,那么需要极多的密钥才能让整个互联网正常工作。
CAN304 W2的更多相关文章
- python爬虫之採集——360联想词W2版本号
http://blog.csdn.net/recsysml/article/details/30541197,我的这个博文介绍了对应的简单的方法做一个联想词的爬虫,并且还承诺了下面优化: 下一版本号的 ...
- 有两艘船需要装运的n箱货物,第一艘船的载重量是c1,第二艘船的载重量是c2,wi是货箱i的重量,且w1+w2+……+wn<=c1+c2
(1) 问题描述: 有两艘船和需要装运的n个货箱,第一艘船的载重量是c1,第二艘船的载重量是c2,wi是货箱的质量,且w1+w2+...+wn <= c1+c2. 希望确定是否有一 ...
- Warning[w2]: Symbol ?P…
屏蔽的方法: 一.找到$PROJ_DIR$\..\..\..\Tools\CC2530DB\f8w2530.xcl位置 二.找到f8w2530.xcl 三.打开f8w2530.xcl,注释D?PBAN ...
- CS131&Cousera图像处理学习笔记 - L4&W2滤波和卷积
cs131: http://vision.stanford.edu/teaching/cs131_fall1617/ coursera: https://www.coursera.org/learn/ ...
- hdu 1171 有num1个w1 , num2个w2 ……. (母函数)
输入n,代表学院里面有n种设备,并且在下面输入n行,每一行输入v,m代表设备的价格为v,设备的数量是m.然后要求把这些设备的总价值分摊,尽量平分,使其总价值接近相等,最好是相等 比如样例二(1+X10 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 神经网络、logistic回归等分类算法简单实现
最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...
- OpenCV人脸识别LBPH算法源码分析
1 背景及理论基础 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻 ...
- JavaWeb——Listener
一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
随机推荐
- Huawei Cloud EulerOS上安装sshpass
下载源码 git clone https://github.com/kevinburke/sshpass.git 由于网络问题,这里我用了一个代理下载 git clone https://ghprox ...
- gazebo+rviz 仿真
博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及键盘操控详见之前的博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 ...
- VMware网络虚拟化介绍(之一)
2014年5月,在我加入VMware三个月之后,我涂鸦了一篇<扒一扒SDN的那些事儿>,当时放言如果阅读量过百就写续篇.后来果然阅读量没过百,也就80多的样子,其中好几份还是我自恋地进去查 ...
- Delphi Richedit代码语法加亮显示
procedure CodeColors(Form : TForm;Style : String; RichE : TRichedit;InVisible : Boolean); const // s ...
- 【Java】TCP套接字编程
服务器 server.java package socket; import java.io.*; import java.net.*; public class server { public st ...
- Service Reliability Management: A Comprehensive Overview
Service Reliability Management: A Comprehensive Overview Service reliability management is a critica ...
- CH39x产品介绍
CH39x产品介绍 芯片 CH392 CH395 CH390 接口 异步串口/SPI 异步串口/SPI/8位并口(仅CH395L支持) SPI/16位或8位并口(仅CH390L支持) 网口速率 10M ...
- 🎀windows-剪切板
简介 Windows 剪贴板是一个临时存储区域,它允许用户在不同应用程序之间复制和粘贴文本.图像和其他类型的数据.从 Windows 10 开始,微软引入了一个改进的剪贴板功能,称为剪贴板历史记录,它 ...
- AI Agent离我们有多远?认知革命的开始(上篇)
认知是成本最低的对冲. --张三思维进化论 深夜3点,我与AI Agent的惊人对话 2025年的一个深夜,我习惯性地打开电脑处理一些工作.身为一个从大厂转型的自由职业者,夜晚往往是我效率最高的时段. ...
- JavaScript 没有“包”
前言 除了古老的 C/C++,几乎所有的编程语言都有模块系统,都有官方的包管理器.我们一般不自己实现所有的代码,实际应用开发过程中大量使用开源库和框架.这篇文章演示了如何把自己实现的库变成一个包,一个 ...