密码学基础知识概述
密码学基础知识概述
研一上学期上了信息安全这门专业课,因为本科的读的专业是计算机科学与技术,所以对密码学这方面接触的其实并不多,不过对这方面还是比较感兴趣的,所以在学习完之后根据课本以及自己的理解以博客的方式整理下学习的内容,课本使用的是《Cryptography and Network Security》,作者是Behrouz A. Forouzan<美>。本文主要梳理密码学的知识体系,大概的内容框架,让大家对密码学有个简单的了解,不涉及具体的算法等。
一、导论
随着计算机的发展,信息已经成为了一种资产,和其他人任何一种资产一样具有价值。因此,如何保护信息避免攻击也是当今人们一直在研究的问题。
1.1 安全目标
- 机密性(Confidentiality)
对信息的访问和公开进行授权限制,包括保护个人隐私和私密信息。机密性缺失的定义是信息的非授权泄露。 - 完整性(Integrity)
防止对信息的不恰当修改或破坏,包括确保信息的不可否认性和真实性。完整性缺失的定义是对信息的非授权修改和毁坏。 - 可用性(Availability)
确保对信息的及时和可靠的访问与使用。可用性的缺失是对信息和信息系统访问与使用的中断。
1.2 攻击
- 侦听(Snooping):非授权实体访问或拦截信息。
- 流量分析(Traffic Analysis):通过监控在线流量来获取其他信息。
- 篡改(Modification):在拦截到消息之后攻击者对信息进行修改,把消息改成对自己有利。
- 伪装(Masquerading):假装成别的实体。
- 重放(Replaying):将获得的消息再次发送。
- 否认(Repudiation):分为两种,发送发发送消息之后否认曾发送过消息或者接收方接受消息之后否认接受过消息。
- 拒绝服务攻击(Denial of Service):减慢或者完全中断系统的服务。
1.2.1 攻击类型
根据危害上述三种安全目标可以将攻击分为三类:危害机密性的攻击、危害完整性的攻击、危害可用性的攻击。
1.2.2 被动攻击与主动攻击
攻击类型还可以分为主动攻击与被动攻击,其中危害机密性的攻击为被动攻击,危害完整性以及可用性的攻击为主动攻击。被动攻击仅是获取信息但并不修改信息,因此被动攻击可以防止但是很难检测,而主动攻击对数据进行修改或者伪造数据,与被动攻击相反,主动攻击难以绝对预防但易于检测。
1.3 密码分析攻击
在介绍相关加密知识之前,先简单介绍下密码学中用到的一些术语。
- 明文:原始消息
- 密文:加密后的消息
- 加密:从明文到密文的变换过程
- 解密:从密文到明文的变换过程
- 密钥:相用来完成加解密等过程的秘密信息
密码分析攻击可分为唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击。
- 唯密文攻击:攻击者知道加解密算法并且拦截到了密文,尝试对密文进行还原。比如蛮力攻击、统计攻击、模式攻击等方法。
- 已知明文攻击:攻击者知道加解密算法,并且事先已经掌握了一些明文-密文对,通过这些信息尝试破解拦截到的密文。
- 选择明文攻击:这种方法和已知明文攻击很类似,区别是攻击者掌握的明文-密文对由攻击者选择。比如攻击者得到了发送方用来加密的电脑,他可以输入一些自己想输入的明文来获取相应的密文。
- 选择密文攻击:和选择明文攻击很类似,区别是攻击者通过输入密文来获取相应的明文。如果攻击者得到了接收方用来解密的电脑可以实现。
Kerckhoff原理:我们在设计密码的时候应该假设攻击者知道加解密算法,仅依靠密钥来抵抗攻击,也就是说我们的密钥应该足够难以攻破,没必要隐藏加解密算法。