密码编码学与网络安全 review
lecture01 经典加密技术
什么是安全,如何认识信息安全? 安全性是绝对的,还是和其它因素相关联的?
信息安全涉及到CIAC信息的保密性(confidentiality)、完整性 (integrity)、可用性(availability)、可控性(controllability)
主要的安全需求:CDANA:
confidentiality/ data integrity/authenticity/ non-repudiation/access control
什么是安全威胁,有哪些攻击行为?
威胁,是对安全的潜在破坏,不一定要实际发生。
截获(被动)/中断/伪造/篡改(主动)
什么是安全服务?安全策略?安全机制?
confidentiality/ data integrity/authenticity/ non-repudiation/access control/
认识网络安全模型、访问控制安全模型
了解、使用、熟悉一些实际使用的安全(密码)应用系统 ......
lecture02 古典加密技术
Cryptology: Cryptography & Cryptanalysis
密码系统五元组(PCKED)明文空间 密文空间 密钥空间 Encryption函数 Decryption函数
对称与非对称密码(即密码体制):单钥体制(对称算法K1=K2或者可以互相推导)双钥体制(公钥算法)
密码分析:唯密文攻击/已知明文攻击/选择明文攻击
密码分析中的统计方法
原因:存在语言的统计特性
- 人类语言是有冗余度的
- 字母使用的频率是不相同的
- 在英语中,e 的使用率是最高的 其次,T,R,A,O,N,I,S
- 其它字母使用的较低
Kerckhoff假设:密码系统的安全性应该基于密钥的安全性,而不是基于算法细节的安全性
无条件安全在唯密文攻击下,密文与明文之间的互信息是0.
计算安全:破译密码的代价超过密文信息的价值,破译密文的时间超出密文信息的有效生命周期。
古典加密技术:代换(substitution)置换(transposition)
古典加密技术范例:
-
基于代换技术的古典密码体制及密码分析
- Caesar密码(移位为3的移位密码)
- 单表代换密码 (密钥是一个长度为K的代换表)
- Playfair密码
- Hill密码
- 多表代换密码与一次一密
-
基于置换技术的古典密码体制及密码分析
- 栅栏技术
- 其他
转轮机
隐写术
lecture 03 常用密码算法
分组密码 流密码 DES AES
分组密码常见工作模式及各自优缺点
工作模式 | 流加密 | 并行加解密 | 解密函数 | 差错扩散 | 应用 |
---|---|---|---|---|---|
电码本模式 | N | Y | Y | N | 单个数据的安全传输(如密钥) |
密文分组链接模式 | N | N | Y | Y | 面向分组的通用传输&认证 |
输出反馈模式 | Y | Y | N | N | 面向数据流的通用传输&认证 |
密文反馈模式 | Y | N | N | Y | 噪声信道上的数据流传输 |
计数器模式 | Y | Y | N | N | 面向分组的通用传输(高速需求) |
伪随机数
- 与真随机数的区别:使用确定的但能经受随机性检测的算法。PRG
- 评价标准:分布均匀性/独立性
- 典型生成方式:线性同余法/分组密码(计数器/输出反馈)产生(如ANSI X9.17)/BBS(基于公钥算法)
ANSI 应用于金融&PGP BBS 仅适用于密钥生成(太慢了)
分组密码相关概念 分类及特点
概念:信息进行分块加密解密,连续明文元素使用相同密钥
分类:DES/AES
特点:将一个明文分组作为整体加密且通常得到的是与明文等长的密文分组/使用最广泛的加密算法之一/可以提供安全性-认证性的安全服务/典型DES AES/5种标准工作模式
Feistel类密码
基于可逆的乘积密码。目标是逼近简单代换密码
设计元素:分组长度/密钥长度/轮数/轮函数/子密钥产生算法/快速软件加解密/简化分析难度
基本思路:将一个明文分组对分,代换左半部分,轮函数F作用于右半部分,再与左半部分进行异或,交换数据左右两半。密钥ki作为轮函数的输入,每轮密钥不一样,进行多轮迭代。
扩散与混淆:扩散使密文和明文的统计关系更复杂,使明文的统计特征尽量消散在密文中;混淆使密文和密钥的统计关系尽量复杂,阻止攻击者发现密钥。
DES算法的主要构成
明文64位 密钥56位
初始置换IP-->16轮轮函数(置换和代替)-->逆初始置换
对DES的主要评价
已被攻破
- 暴力破解可行
- 差分密码分析 2^47 选择明文密文
- 线性密码分析 2^43 已知明文密文
是最成功的商用密码算法,广泛用于金融系统、计算机系统、Kerboros……
分组密码的设计准则
- 大部分对称分组密码基于Feistel密码结构
可逆变换:若n位明文产生n位密文,共有2^n个不同明文组。 要求每一个明文组唯一的对应一个密文组。
是必要条件,因为必须能够从加密后的密文中有效的恢复出明文。总共有2^n!个可逆变换 - 分组加密可以被看作是一个巨大的代换(理想分组密码体制)
对一个64bit的分组,需要映射表长度为264≈1021 ,不实际
取而代之,使用较小的部件 - 使用乘积密码的思想来逼近简单代换函数—by Feistel
分组密码的应用模式
lecture 04
三重DES
构造 EDE
特点
- 优点
- 密钥112bit够长
- 底层算法DES经受住了时间的考验,对密码分析攻击有很强抵抗力
- 仅考虑安全性,3DES会成为未来数十年加密算法的合适选择
- 缺点
- DES的设计主要针对硬件实现,而今在许多领域,需要用软件方法来 实现它,在这种情况下,DES效率相对较低。
- 分组长度64,似乎应该更长
- 因此,理论上,3DES不能成为长期使用的加密算法标准
IDEA算法
特点:
- 明文64 密钥128 明文分成4组,八轮迭代/加密解密算法一致/看穷举抗拆分
- IDEA 的混淆和扩散来自三种运算:逐位异或/模216整数加/模216+1整数乘
- 易于软硬件实现
AES算法
AES基本要求:
- 比三重DES快
- 至少和三重DES一样安全
- 分组长度128比特
- 支持密钥长度为128/192/256比特
NIST评估标准:
第一第二轮:安全性/成本/算法和执行特征
最终评估标准:一般安全性/RAM、ROM受限环境/软件实现/硬件实现/对执行的攻击(计时攻击&能量攻击)/加密解密算法一致/密钥灵活性/多功能性和灵活性/ILP指令级并行能力的潜力
具体结构:
- 不是Feistel结构,加密解密算法不同
- 对于加密和解密,均以轮密钥加作为开始
- 9轮迭代,每轮包括
- 字节代换:S盒子 (代换,之前有密钥,属于混淆,非线性)
- 行移位:简单置换 (属于扩散,线性)
- 列混淆:利用域GF(28)上的算术特性(属于扩散,线性)
- 轮密钥加:当前分组 XOR 轮密钥 (Vernam密码,线性)
- 第10轮只包含 字节代换、行移位、轮密钥加 目的是满足算法的可逆性
- 仅在轮密钥加阶段使用密钥 每个阶段均可逆
- 具有非常明晰的代数结构
群环域定义(不要求吧)
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
IP地址
每个计算机必须有一个 IP 地址才能够连入因特网。
每个 IP 包必须有一个地址才能够发送到另一台计算机。
IP 地址包含 4 个数字: 112.65.223.50
TCP/IP 使用 4 个数字来为计算机编址。每个计算机必须有一个唯一的 4 个数字的地址。
数字在 0 到 255 之间,并由点号隔开,像这样:192.168.1.60
lecture 06
通信保密的位置,各自特点
链路加密:在链路两端加上加密设备,链路上信息传输安全。
逻辑位置在物理层或者链路层
- 每条链路两端都需要加密设备,要求许多加密设备
- 共享链路的每一节点共享唯一密钥
- 每次分组交换都需要解密消息,报文在传输中多次加解密
- 报文在交换机处以明文形式存在,易受攻击
- 用户对报文的安全无法控制
- 可以鉴别主机
- 通讯模式是安全的
端对端加密:在各源主机或终端加密数据,密文通过网络传给目的主机或者终 端。目的主机与源主机共享一个密钥。
逻辑位置在网络层或传输层 表示层或应用层
- 一般是加密数据,而非信息头,以实现包的路由。用户数据安全,传输过程不安全。
- 加密过程由两个端系统完成(+)
- 报文在传输中只进行一次加解密(+)
- 报文在交换机处仍然是安全的?(+)
- 不能隐蔽通信量(-)
- 能够鉴别用户(+)
通信流量分析攻击和预防措施
监控成员间的通信量、消息数目、消息长度等,从数据传输分析中得到通信双方的身份、通信双方通信的频率、报文模式、报文长度、报文数量、特定的通信之间交谈所关联的事件。
预防措施:
链路加密 分组首部加密/通信量填充
端对端加密 填充数据单元/发送空白报文
主密钥 vs. 会话密钥
- 会话密钥:用于数据加密,临时
- 主密钥:由KDC和用户共享,长期
具有可信第三方的安全密钥生成
密钥使用方式控制 校验码/控制向量
chapter 07
Euler函数及其计算
Euler定理,Fermat小定理
chapter 08
- 计算困难性 求解问题的困难与否应该是客观的
- 可计算,计算复杂度,P-NP-NPC问题
- 公钥密码概念:每个用户拥有一个公私钥对,用于加解密&数字签名
- 单向函数(离散对数
- 单向陷门函数
- 背包公钥密码(不要求)
- RSA公钥密码
- 原理:Euler定理&求大整数因子的困难
- 简单的攻击
- 数学攻击:pq过于接近/共模攻击n相同/小e攻击
- 物理攻击
- 基于运行错误的攻击
- 基于系统使用错误的攻击
- 涉及的数论:欧拉函数 Fermat定理 素数测试……
chapter 09
- 基于离散对数的密码
- Diffie-Hellman密钥交换:基于公钥的密钥分配算法
- 需要用到Fermat小定理
- 中间人攻击
- ElGamal公钥加密算法
- 需要用到Fermat小定理
- Diffie-Hellman密钥交换:基于公钥的密钥分配算法
- 椭圆曲线密码
- 用较短的参数长度实现同样的安全 级别
- 公钥系统的安全问题
- 中间人攻击问题
chapter 10
认证主要目的:实体认证/消息完整性认证
消息认证的定义 :验证所受到的消息确实是来自真正的发送方,且未被修改。可以看做两层:1)生成消息认证符的函数 2) 使用认证函数作为原语来验证消息真实性的协议
-
网络中的攻击
- 加密
- 泄密
- 流量传输攻击
- 消息认证
- 伪装
- 消息内容篡改
- 计时攻击:重放、演示
- 数字签名
- 发送方否认
- 接收方否认
- 加密
-
三类认证函数各自的特点及作用
- 报文加密:整个报文的密文为认证码
- 报文认证码MAC:以一个报文的公共函数用于产生一个定长的密钥作为认证符
- 散列函数:对任意长度报文以散列函数作为公共函数产生定长散列值作为认证符
-
Hash函数的定义、特点,及三大性质(重点)
- 散列函数是将任意长度的消息映射成一个较短的定长输出消息的函数.
- 用于任何大小的数据分组产生定长输出
- 单向性 | 弱抗碰撞性(k=2m/2)| 强抗碰撞性(k=2m/2)
MAC与对称加密的区别,MAC的使用方式
- 消息认证是用于验证待传递消息的完整性(integrity)以及消息源的真实性(authentication)的密码学手段。
- 三类认证函数极其特点是:
报文加密:把消息整个加密后形成的密文当做认证符。特点就是1)在提供部分认证服务的同时也提供了消息的保密性;2)需要某种冗余和结构,以识别合法明文;3)不提供签名,即收发双方都可以伪造和否认消息。
哈希函数:把消息的哈希函数值作为认证符。
消息认证码(MAC)。特点是1)收发双方需要一个秘钥来生成认证码以及验证认证码;2)消息认证码的输入可以是长度任意的消息,但是输出(认证码)是定长的。 - 哈希函数的定义:一个把任意长度的输入隐身成一个较短的定长的输出的函数(是一个多对一的函数)。
哈希函数的特点:1)输入长度没有限制;2)输出是定长;3)有碰撞存在(既然它是一个多对一的映射)
(密码学)哈希函数三大特性:
First Preimage Resistance: Given a hash value h, it’s computationally hard to find a x such that H(x) = h.
Second Preimage Resistance: Given a input x, it’s computationally hard to find another input y such that H(x) = H(y).
Collision Resistance: It’s computationally hard to find two input values x and y such that H(x) = H(y). - MAC与对称加密的区别:
MAC的输出是定长的,而对称加密的输出是变长的;
MAC仅给出一个认证符,不提供任何保密性服务,但对称加密同时提供了报名服务;
MAC的认证符生成函数是不可逆的(即不能够从生成的验证符中推导出原文),但是对称加密的加密算法是可逆的(解密算法);
MAC的使用方式:
CBC-MAC: 使用了DES加密算法以及CBC模式,用于对一个消息产生认证符(注意: CBC-MAC的明文必须是固定长度,而且不需要初始向量;但在单纯的CBC模式中是没有对输入有长度限制的,而且需要初始向量)
HMAC:使用秘钥以及哈希函数产生认证符(使用两次哈希函数)
chapter 11
- 数字签名:数字签名是给以电子形式存储的消息进行签名,签名后的消息通过网络传输。
数字签名的特征:
不能伪造:收方能证实发方的签名,但不可以伪造
不可否认:发方一旦对某条消息签名后便不能否认 - DSS签名原理及底层算法:(理解既可)
详见PPT - RSA签名方案:
详见PPT(注意和RSA加密几乎一模一样,只是秘钥使用换了换顺序,并且在使用中的RSA签名是对消息的哈希值进行签名的) - 公钥的分配途径:
略,不重要
chapter 12
- Kerberos使用环境和基本模块
Kerberos系统是用于分布式网络系统中安全的进行客户与服务器之间的认证服务。分为三个模块:用户(Client),服务器(Server)以及Kerberos(包含AS和TGS两部分)。 - Kerberos工作步骤(六步):
- 用户在工作中登陆,发送一个获取服务的请求到AS。
- AS验证用户的权限,为用户生成一个票据(Ticket-granting ticket)以及会话秘钥(session key generated by AS and for Client and TGS)。
- 用户本地输入密码,打开消息拿到票据,并把该票据(Ticket-granting ticket)及验证码(Authenticator)发送给TGS。
- TGS解密票据,验证身份,并为用户生成一个票据(Ticket)以及会话秘钥(Session Key generated by TGS and for Client and Server)。
- 用户发送该票据及验证符给服务器。
- 服务器解密票据,并验证验证符和票据里的用户是否一致,同意访问请求。
- X.509协议的公钥证书使用方式
A和B都到可信任的证书中心CA去,CA各为他们颁发一个证书,此后每当A和B想向对方验证身份时,只需要把自己的证书发给对方就可,对方看到这是我信任的CA颁发的证书,那么就用CA的公钥去验证这个证书的真实性,如果验证通过了,那么A也就相信B的身份了。
chapter 13
- 随着互联网的发展,企业、公司、组织在互联网上进行电子商务的活动量也就增加了,于是他们需要一个安全的网络传输,这就是Web安全的需求。
- SSL协议是在传输层。
SSL由SSL握手协议、SSL修改密文协议、SSL告警协议以及SSL记录协议构成。
SSL握手协议:(精髓:首先利用证书验证对方身份,其次用公钥加密传输预主秘钥,最后利用这个预主秘钥产生的各种秘钥,包括会话秘钥、初始向量以及验证秘钥,来利用对称加密加密数据) - IPSec协议是在网络层。
IPSec是由AH(仅用于提供认证服务)和ESP协议(可提供有限的认证服务以及保密服务)构成。
AH和ESP的传输模式和隧道模式:
见PPT上的四幅图
chapter 14
- PGP的三种服务
- 仅认证服务: (精髓:对消息的哈希值做签名,因为消息可能是变长的,而哈希值是较短的定长串)
- 仅保密服务: (精髓:先用公钥加密加密一个会话秘钥,再用会话秘钥对消息进行对称加密,因为公钥加密较慢。)
- 同时提供认证和保密服务: (精髓:把前两者结合起来,注意是先签名再加密)