休息了两周后又开始新的学习了,这一周讲的是非对称加密,但是说实话,有趣的内容不多,老师也是大部分时间都是念PPT,可以计算的部分也不太多。
对称加密可以简单理解为一种算法,即用这个算法可以加密,同时用这个算法反过来可以解密。注意对称不是物理意义上的镜像。
下周就会讲非对称加密,其中有public key 和 private key。这周的对称加密使用symmetric key or a secret key,虽然也可以用private key但是容易混淆,干脆就用对称key或者密码key。当然其他课程的话可能还是用private key来描述。
首先来说安全属性是什么,或者说security有哪些要求,其中完整就是不能被篡改,不可否认是不能不承认发了什么信息,要可以追溯。symmetric可以提供这五点,不过第五点有待商榷,可以argue一下。
○ Authentication 验证
○ Authorisation 授权
○ Confidentiality 完整
○ Non-repudiation 不可否认
○ Availability 有效
cipher 或者加密的形式有两种 块加密和流加密。
块加密比较常见,一块一块的,比如多少个bit或者bytes,然后加密,然后下一个block。
而流加密用在流媒体之类的,不停地加密,因为不能说音频或者视频中断一下为了加密,然后再中断。
块密码,大部分都是基于Feistel Cipher Structure,可以简单理解为上一课讲到的 substitution,但是是超级大的那种,比如2的六十四次方。
这个加密方式,就是把input block 切成两半,一半不动,一半加密,然后交叉数据,继续一分为二,来回很多轮。这里可以看一下下面这篇论文
这里老师讲了讲DES和AES的知识,DES是美国搞得,但是后面越发的不安全,因此德国弄了AES来替换,一直到现在,理论上说确实无懈可击,但是量子计算机的出现导致不太行了,可能若干天就可以暴力破解AES。量子计算机目前仍然是个秘,每一个单元可以同时呈现0和1的状态,类似双缝干涉实验。虽然现在量子计算机很昂贵,但是未来10年 100年就不好说了。
然后就是Claude Shannon引进的 S-P网络,substitution-permutation。该理论一直影响到现在的块密码。然后能够把信息和key弄的非常混乱和扩散(confusion and diffusion),于是不容易被破解。
所谓混乱和扩散就是把防止统计学可以计算出规律,回忆第一节课讲的,26个英文字母的出现概率。
这里讲了DES算法,也是基于这个理论, data encryption standard
DES 也是块cipher,56 bit key,64 bit blocks,来回交叉16轮,56bit并不多,7个16进制而已。所以非常 容易破解,据说有一个原因就是美国政府容易破解DES,所以禁止出口其他加密算法,强制其他国家使用这个,这个法律规定直到2000年才被更新。最早好像禁止超过40 bits。万恶的美帝。
3DES 就是来三次DES,块cipher,56,112,168 bit key,还是64 bit blocks,来回交叉48轮。
然后又讲了雪崩效应 avalanche effect
加密算法的理想属性就是雪崩效应
什么意思呢,就是改一点点input或者key就导致大约一半的输出发生变化,通过反着猜测推算是不太可能的
DES 就是表现出强烈的雪崩效应
下面讲一下DES的强度
首先说key的长度很长 56个bit 那就是2的56次方 大概7.2乘以10的十六次方个值
强制爆破非常困难,但是这并不保险,因为计算机的能力不断增强,所以这只是个时间问题,97年的电脑需要几个月,而99年的电脑用22个小时就成功破解,更不需要说现在的了。当然这些都是限制在英文原文的前提下,假如是其他语言,则另算。
不同的密码分析
Murphy, Biham & Shamir 在90年代发布的一种解密方法,专门针对Feistel ciphers
假设你知道明文 密文,然后知道的越多,就越容易建立明文密文关系,然后最后用暴力破解
Biham 和Shamir则找出办法用13轮来破解16轮的DES
Matsui等人则发明了线性的解密方法,也是可以针对DES
既然DES可以破解,那么就需要使用替代的加密方式, AES, Advanced Encryption Standard
AES是层层选拔出来的,发明人是Rijndael,key是128 192 256 bits,data是128bits,具体算法很复杂,我也看的很迷惑,这个需要看原论文和大量案例才行,大致原理如图
Key Expansion Rationale
design criteria included
knowing part key insufficient to find many more
invertible transformation
fast on wide range of CPU’s
use round constants to break symmetry
diffuse key bits into round keys
enough non-linearity to hinder analysis
simplicity of description
后面还讲了随机和伪随机
真随机满足下面的特点
nonces in authentication protocols to prevent replay
session keys
public key generation
keystream for a one-time pad
statistically random, uniform distribution, independent
unpredictability of future values from previous values
伪随机是通过算法实现的,可以通过各种随机测试,但是并不是真的随机
randomness
uniformity, scalability, consistency
unpredictability
forward & backward unpredictability
use same tests to check
characteristics of the seed
secure
if known, adversary can determine output
so must be random or pseudorandom number
在块cipher里,经常使用伪随机算法
Natural Random Noise
Stream Cipher
some desirable design considerations are:
long period with no repetitions
statistically random
depends on large enough key
large linear complexity
properly designed, can be as secure as a block cipher with same size key
but usually simpler & faster
RC4,这里记住RC5开始使用非对称加密
这一篇太枯燥太深奥了,而且具体的细节讲的很少,基本都是念PPT。
实验课部分也是基本没啥细节讲的
第一个就是根据常用字母来推测,比如常见的the and这种找规律,然后一步一步的推敲
然后还讲了一个hill cipher的加密解密方法,讲道理,这个连老师都需要拿着课件对照计算,而且这个计算方法也是有点问题,感觉比网上找到的要复杂。
具体细节还是看原始PPT比较好,这一周的课程太复杂