休息了两周后又开始新的学习了,这一周讲的是非对称加密,但是说实话,有趣的内容不多,老师也是大部分时间都是念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比较好,这一周的课程太复杂


Chao

一个三天打鱼两天晒网的博主 拖延症严重患者 干啥啥不行,学啥啥不会