NJUPT《 现代密码学 》

作者: Du1in9 | 来源:发表于2021-02-26 07:44 被阅读0次

    1/3 考试说明

    • 选择题,10道,共10分
    • 填空题,10道,共20分
    • 简答题,5道,共30分
    • 计算题,3道,共30分
    • 论述题,1道,共10分

    2/3 考前复习

    (有些计算错误懒得改了,方法都是对的)

    黑板上的题
    复习资料

    3/3 学习笔记

    一、密码学概论

    • 信息安全和密码学

    1)秘密通信的手段
    ① 信道保护:如信使传递、密写、缩微摄影、专线电话
    ② 密码保护:如电报加密、传真加密、语音加密、图象加密
    2)信息安全的目标
    机密性、认证性、数据完整性、不可否认性、可用性
    3)密码学的重要性
    密码技术是一门古老的技术,信息安全目标要依赖各种安全机制来实现,而许多安全机制则需要依赖于密码技术
    4)加密系统模型


    明文:发送方将要发送的消息
    密文:明文被变换成看似无意义的随机消息
    加密:明文变换成密文的过程称为加密
    解密:密文恢复出原明文的过程称为解密
    加密算法:对明文进行加密时所采用的一组规则
    解密算法:对密文进行解密时所采用的一组规则
    加密和解密的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥
    密码系统是一个五元组(P,C,K,E,D),满足条件:
    ① P是可能明文的有限集;(明文空间)
    ② C是可能密文的有限集;(密文空间)
    ③ K是可能密钥的有限集;(密钥空间)
    ④ 对于 k∈K,有加密算法 ek∈E 和解密算法 dk∈D,使得 ek:P→C 和 dk:C→P
    分别为加密、解密函数。满足 dk(ek(x))=x,这里 x∈P
    5)密码体制的原则和分类
    柯克霍夫原则
    单钥体制(One key system):加密密钥和解密密钥相同。
    双钥体制(Two key system):加密密钥和解密密钥不同。
    密码分析包含:基于算法性质的分析、穷举密钥分析
    6)密码体制的攻击

    二、数学基础

    • 因数和倍数

    12的因子:1,2,3,4,6,12
    12的真因子:2,3,4,6
    ① 对所有a,1 | a,a | 0,a | a
    ② 若a | b且b | c,则a | c
    ③ 若a | b,则对任意的c,有ac | bc
    ④ 若ac | bc且c≠0,则a | b
    ⑤ 若a | b且a | c则对任意的m,n有al(bm +cn).

    • 素数和合数

    一个大于1且只能被1和它本身整除的整数,称为素数;否则称为合数
    12=3×4,其中3是12的素因数,而4是12的合因数

    • 最大公因数

    若gcd(m,n)=1,称m,n是互素的
    若a=bq+r,0<r<b,则(a,b)=(b,r)
    若(a,b)=d,则(ald,b | d)=1
    欧几里得算法:若a=bq+r,0<r<b,则 gcd(a,b)=gcd(b,r)=gcd(b,a mod b)
    例:gcd(372,164)=gcd(164,372mod164)
    =gcd(164,44)=gcd(44,164mod44)
    =gcd(44,32)=gcd(32,44mod32)
    =gcd(32,12)=gcd(12,32mod12)
    =gcd (12,8)gcd(8,12mod8)
    =gcd (8,4)=gcd(4,8mod4)=gcd(4,0)=4

    • 模运算

    117=31·3+24,117mod31=24

    • 乘法逆元

    若 xy mod m = 1,则称y是x模m的乘法逆元
    通常记为:y = x^-1 mod m


    • 一次同余式

    定义: ax ≡ b(mod m)
    若x0满足上式,则x ≡ x0(mod m)称为同余方程组的解
    若(a,m)=1,则恰有一解 x ≡ ba^-1(mod m)


    三、古典密码学

    • 古典密码技术

    1)古典密码的分类:代换密码,置换密码
    ① 代换密码:将明文元素映射成密文的元素
    代换密码分为单字母代换、多字母代换
    单字母代换分为单表代换、多表代换、多名代换
    ② 置换密码:将明文元素的位置进行的置换
    置换密码通过改变明文消息各元素的相对位置,但明文消息元素本身的取值或内容形式不变


    2)Caesar 密码:26个英文字母与整数0~25对应,Caesar 密码密钥数量过少。
    将Caesar 密码一般化,取任意的整数k作为密钥:
    加密变换:c = E(k,p) = (p+k)(mod26)
    解密变换:p = D(k,c) = (c-k)(mod26)
    一般单表替代密码算法特点:
    ① 密钥空间K很大,|K| = 26!
    ② 移位密码是替换密码的一个特例,它仅含26个置换做为密钥空间。
    ③ 密钥n不便记忆,通常会采用密钥短语密码:选用英文短语或单词串作为密钥,去掉其中重复的字母,其它字母依次写于此字母串后,就可构造出一个字母替代表。
    3)仿射密码:一种线性变换。仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为 K = {(k1,k2)|k1,k2∈Z₂₆,gcd(k1,26) = 1};
    对任意 m∈M,c∈C,k = (k1,k2)∈K,定义加密变换和解密变换为:
    c = ek(m) = k1m+k2 (mod26)
    m = dk(c) = k1^-1(c-k2) (mod26)


    4)多表替代密码

    Kerckhoff 原则:算法细节公开,密钥保密
    移位密码、仿射密码、维吉尼亚密码、置换密码等对己知明文攻击都是非常脆弱的。
    大多数古典密码都容易被惟密文攻击攻破,因为算法不能很好隐藏明文消息的统计特征。

    四、分组密码

    • 分组密码概述

    1)分组密码具有速度快、易于标准化、便于软硬件实现等待点。它是信息安全中实现数据加密和认证的核心体制。
    2)分组密码的思想:将明文消息编码后的序列分成长为n的组,各组分别在密钥k控制下变换成等长的输出序列
    3)在相同密钥下,各组的变换是等同的,所以只需研究任一组的变换规则。这种密码实质上是字长为n的数字序列的代换密码。
    针对安全性的一般设计原则:
    ① 明文分组长度和密钥长度望尽可能大。
    ② 混淆原则:是指密钥、明文、密文之间的依赖关系尽可能的复杂。
    ③ 扩散原则:密钥或明文的每一位影响密文的许多位以便隐蔽明文的统计特性。如古典密码中的 hill 密码
    迭代密码:Feistel 结构(S盒代换,P盒置换)、SPN结构(S变换混淆,P变换扩散)

    • DES 与 AES

    1)DES 历史
    1971年,IBM 由 Horst Feistel 领导的项目组研究出 LUCIFER 算法。并应用于商业领域。
    1973年,美国标准局征求标准,IBM提交结果。
    1977年,被选为数据加密标准。
    1994年,美国决定98年12月以后不再使用DES算法
    2)DES 概述
    DES是一种明文分组为64比特,有效密钥56比特,输出密文64比特的,具有16轮迭代的分组对称密码算法。DES由初始置换、16轮迭代、初始逆置换组成。DES的加解密算法相同,只是加解密子密钥的使用顺序相反。



    2)多重加密算法
    三重DES的多重加密算法是DES的一个重要的改进算法。



    3)AES
    AES算法具有128比特的分组长度,并支持128、192、256比特的密钥长度。字节的运算:

    AES 的评估标准
    ① 安全性:算法抗密码分析的强度,稳定的数学基础,算法输出的随机性,与其他候选算法比较的相对安全性。
    ② 代价:许可要求,在各种平台上的计算效率和内存空间的需求。
    ③ 算法和实现特性:灵活性、硬软件适应性、算法的简单性等。
    • 分组密码的工作模式

    美国在 FIPS 中定义了五种工作模式:电码本模式(ECB)、密码分组链接模式(CBC)、输出反馈模式(OFB)、密码反馈模式(CFB)、计数器模式(CTR)


    五、序列密码

    • 5-1 密码学中的随机数

    1、随机数的使用
    通常的序列密码中,密钥序列是伪随机序列,它的产生容易且有较成熟的理论工具,是当前通用的密码系统。
    序列密码的保密性取决于密钥的随机性。如果密钥是真正的随机数,则在理论上就是不可破译的。
    目前一般采用伪随机序列来代替随机序列作为密钥序列,也就是序列存在着一定的循环周期。
    2、伪随机数产生器
    由任何伪随机数生成器返回的数目会受到0~N之间整数数目的限制。可以得出的数字总是处于0和1之间。
    3、基于密码算法的随机数产生器
    ① 软件方法:线形拟合生成器:X(n+1)=(aXn+b)mod c
    ② 硬件方法:ComScire QNG:使用并行端口连接到PC的外部设备,每秒钟生成20000位。
    4、伪随机数的评价标准
    ① 测试套件:George Marsaglia的DIEHARD软件包 ② 无法预测。③ 不能可靠地重复产生。

    • 5-2 流密码的分类

    1、自同步序列密码:该算法的密码复杂性在于输出函数,它收到内部状态后生成密钥序列位。
    2、同步序列密码:具有自同步能力,强化了其抗统计分析的能力。
    缺点:有n位长的差错传播,它们会使系统失去同步而立即被发现。

    • 5-3 常用的序列密码算法

    ① A5序列密码算法
    由三个LFSR组成,集控制与停走于一体的钟控模型。但是A5算法没有完全公开,各种资料的描述也不尽相同,重要是第二、三个LFSR的联接多项式以及钟控的位置。
    ② SEAL序列密码算法
    需要8个32位的寄存器和约8M的内存,它不基于LFSR,而是一个伪随机函数簇(PRF),将明文的位置变成一个随机串。
    ③ RC4序列密码体制
    RC4为RSA设计,是一个可变密钥长度、面向字节操作的序列密码。
    基本思想:对于n位长的字,它总共2^n个可能的内部置换状态矢量S,这些状态是保密的,密钥流K由S中N个元素按照一定方式选出一个元素而生成。每生成一个K值,S就被重新置换一次。

    • 5-4 密钥流的局部随机性检验

    1、真随机序列的特性
    统计的随机性、不可预测性、不可再生性。
    真随机序列特性虽好,但难以在实际密码系统中应用,实际密码系统中使用的密钥流都是伪随机序列。
    2、伪随机序列的统计特性
    平衡特性、游程特性、自相关特性
    3、密钥流的局部随机性检验
    频数检验、序列检验、扑克检验、游程检验、自相关检验
    4、序列密码的设计原则
    最基本的设计原则是“密钥流生成器的不可预测性”,它可分解为下述基本原则:
    长周期、高线性复杂度、统计性能良好、足够的“混乱”、足够的“扩散”、抵抗不同形式的攻击。

    六、Hash函数和消息认证

    • 6-1 Hash函数

    一、Hash函数的概念
    1、Hash函数(杂凑函数)是密码学的一个基本工具,在数字签名、身份认证、消息的完整性检测等方面有着重要的应用。
    2、它是一种公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M)作为认证符。H(M)称为杂凑码。
    3、杂凑码是消息中所有比特的函数,因此提供了一种错误检测能力,即任何一个比特改变都会使杂凑码发生改变。
    特点:H打上了输入数字串的烙印,为数字指纹(Digital Finger Print)
    4、散列函数的性质
    ① 一般杂凑函数H(m)算法公开,不需要密钥。
    ② 具有数据压缩功能,可将任意长度的输入数据转换成固定长度的输出。
    ③ 对任何给定的m,h(m)易于计算。
    二、Hash函数结构
    算法中重复使用某个函数 f。函数 f 的输入有两项,一项是上一轮的输出CVi-1,称为链接变量。另一项是算法在本轮b位的输入分组mi。


    三、Hash函数应用
    在密码学和数据安全技术中,它是实现有效、安全可靠数字签字和认证的重要工具,是安全认证协议中的重要模块。
    • 6-2 Hash算法

    MD5、SHA-1是当前国际通行的两大密码标准。MD5由图灵奖获得者兼 RSA的创始人Rivest设计;SHA-1由美国制定密码算法的标准机构 NIST与 NSA设计。
    一、MD5算法
    输入:任意长度的消息
    输出:128位消息摘要
    处理:以512位输入数据块为单位


    二、SHA算法
    SHA-1,SHA-256 的分组大小是512 bit
    SHA-384,SHA-512 的分组大小是1024 bit
    SHA-1 输出摘要是160 bit
    SHA-256 输出摘要是256 bit
    SHA-384 输出摘要是384 bit
    SHA-512 输出摘要是512 bit
    SHA-1 算法原理 :分段运算:512 bits ,杂凑值长度:160 bits ,初始向量:160 bits
    • 6-3 Hash函数的攻击

    一、生日悖论
    生日悖论:在一个会场参加会议的人中,找一个与某人生日相同的概率超过0.5时,所需参会人员为183人。但要问使参会人员中至少有两个同日生的概率超过0.5的参会人数仅为23人。
    二、对hash函数的生日攻击
    给定一个散列函数 h 的输出长度为 n 位,共有 2n 个可能的散列值输出,找 x、y 满足H(x)=H(y),则尝试多少个报文可以找到一对(假设散列值为n比特)
    显然,最多尝试2n+1个报文,必有一对冲突。
    其实,远在到达2n+1之前,很可能早就找到了。
    如果只要达到一定的概率(如1/2),约需尝试多少个不同报文?答案:2n/2

    • 6-4 消息认证

    一、消息认证码
    消息认证码 (MAC) 或报文认证码,是用于提供数据原发认证和数据完整性的密码校验值。MAC是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。
    二、基于DES的认证码(CMAC)
    存在的安全问题:如果X的 MAC 为 T=MAC(K,X),则 X||X^T 的MAC仍然是T。


    三、基于Hash的认证码(HMAC)
    将某个散列函数嵌入到消息认证码的构造过程中。HMAC作为这种构造方法的代表,已经作为RFC 2104公布,并在 IPSec 和其他网络协议中得到应用。

    七、公钥密码体制

    • 7-1 公钥密码体制概述

    一、公钥密码体制的提出
    1、密钥管理的困难性问题
    传统密钥管理两两分别用一对密钥时,n个用户需要n(n-1)/2个密钥,当用户量增大时密钥空间急剧增大。
    2、系统的开放性问题
    对称密码体制的密钥分发方法要求密钥共享各方互相信任,因此它不能解决陌生人间的密钥传递问题
    3、数字签名问题
    对称加密算法难以实现抗抵赖的安全需求。
    二、公钥加密体制的思想
    1、公钥密码,也称非对称密码(或双钥密码体制)。每一个用户都分别拥有两个密钥:加密密钥(公开)、解密密钥(私有)。由加密密钥得到解密密钥在计算上是不可行的。
    公钥密码可以这样理解:任何人都可以把锁关上,但只有有钥匙的人才能把锁打开。而知道关锁的知识却无助于开锁。
    2、陷门单向函数 f 把非对称密码这个概念变成了可实行的密码系统。
    ① f 定义域中的任意元素 x, f(x) 的计算是容易的。
    ② y=f (x) 中的 y 要计算 x 时,若知道设计 f 时结合进去的某种信息(陷门),则容易计算;若不知道该信息,则难以计算。


    三、公钥密码体制的应用
    1、机密性的实现
    发送方用接收方的公钥加密消息,接收方用自己的私钥来解密。
    2、数字签名
    发送方用自己的私钥来签名消息,接收方通过发送方对应的公钥来鉴别消息,且发送方不能对自己的签名进行否认。
    3、密钥分发和协商
    发送方和接收方基于公钥密码系统容易实现在公开信道上大规模的密钥分发和协商。
    公钥密码体制认证框图
    • 7-2 RSA公钥加密体制

    RSA方案是被最广泛接受并实现的公开密钥密码算法,目前已成为公钥密码的国际标准。该算法的数学基础是欧拉定理,其安全性基于大整数因子分解的困难性。
    一、RSA密钥生成算法
    1、选择两个大素数 p、q,需要保密
    2、计算 n = p×q,φ(n) = (p-1)×(q-1)
    3、选择 e,满足 (φ(n), e) =1,1<e<φ(n)
    4、计算 d,满足 d×e ≡ 1mod φ(n)
    得到:公钥为 {e,n} 、私钥为 {d}
    二、RSA加解密算法
    加密用公钥,明文:M<n,密文:C = M^e (mod n)
    解密用私钥,密文:C,明文:M = C^d (mod n)
    三、RSA公钥密码安全性
    1、为什么要保密 p、q
    知道了 n 的因子分解,就可以算出 φ(n)。也就可以利用辗转相除法,根据 ed ≡ 1 mod φ(n),由e求出d。
    2、形如 p=2p1+1(p1也是素数)的素数,通常称为安全素数。
    3、|q – p| 必须要大。
    4、不同用户不可共享模n(共模攻击)
    5、私钥e一般取3或65537(即2^16+1),这两个数的二进制表示中只有两个1。
    e=3 时,加密只需要一次模乘法和一次模平方;
    e=65537 时,加密只需要16次模平方和一次模乘法。
    这使得加密非常快。 2^16+1优于3之处在于能够抵抗对RSA公钥密码的低指数攻击,因为同样的消息不可能发给65537个接收者。
    6、e 和 d 也有些要求,如e不可太小,否则不安全。
    7、不同用户选用的素数不能相同。
    8、私钥d一旦泄露,就要更换公钥n。
    9、按照攻击者占有资源的不同,分为:选择明文攻击者 CPA、选择密文攻击者 CCA1、适应性选择密文攻击者 CCA2。
    10、RSA算法满足的性质:(m1×m2)^e mod n= (m1e×m2e) mod n
    四、本原根
    1、至少有一个 m 满足 a^m ≡ 1 mod n,且(a,n)=1。称满足方程的最小正整数m为模n下a的阶。
    如果 a 的阶 m=φ(n) ,则称 a 为 n 的本原根。
    2、只有以下形式的整数才有本原元:2、4、pa、2pa(a≥1,p为奇素数)。

    • 7-3 ElGamal公钥加密体制

    一、ElGamal密钥生成算法
    选取大素数 p,g∈Zp* 是一个生成元。p、g 作为系统参数所有用户共享。每个用户都随机挑选整数 x(2≤ x ≤ p-2),并计算 y= g^x(mod p)。(p,g,y) 作为用户的公钥,x 作为用户的密钥。
    二、ElGamal加解密算法
    1、加密
    ① 用户A先把明文 M 编码为一个整数 m(0≤m≤p-1)
    ② 用户A挑选一个秘密随机数 r ( 2≤ r ≤ p-2 ),并计算 c1= g^r (mod p)、c2 = m y^r (mod p)。y 是用户B的公钥,用户A把 (c1,c2) 作为密文传送给用户B。
    2、解密
    用户B接收到密文 (c1,c2) 后,做解密计算 m=c2(c1x)-1 (mod p)
    三、EIGamal公钥密码安全性
    同RSA的处理一样,假设适应性选择密文的攻击者获得了消息 m 的密文 (c1,c2)。攻击者随机选择r'、m',并计算 c1'= c1g^r' (mod p)、c2' = m'c2y^r' (mod p)
    攻击者将构造的新密文 (c1',c2') 送解密机,返回明文 m m' (mod p),从而容易得到密文 c 的明文 m。
    两个基本算法(basic RSA、basic Elgamal)不安全,因为存在这种同态的性质。

    • 7-4 椭圆曲线公钥加密体制

    ECC的安全性基于椭圆曲线离散对数问题的难解性。与基于有限域上的离散对数问题的公钥密码体制相比,椭圆曲线密码体制主要有以下两个方面的优点。
    1、密钥长度小
    到目前为止,ECC没有亚指数攻击,在实现相同的安全级别的条件下,ECC所需要的密钥长度远小于后者。
    2、算法性能好
    由于密钥长度小很多,因此减少了处理开销,具有存储效率、计算效率和通信带宽的节约等方面的优势。

    八、数字签名

    8-1 基本概念

    数字签名是认证的重要工具。
    一、为什么需要数字签名
    报文认证用以保护双方之间的数据交换不被第三方侵犯;但它并不保证双方自身的相互欺骗。
    假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:
    1、B伪造一个不同的消息,但声称是从A收到的。
    2、A可以否认发过该消息,B无法证明A确实发了该消息。
    二、数字签名满足的条件
    1、签名者事后不能否认或抵赖自己的签名。
    2、其他任何人均不能伪造签名,也不能对信息进行篡改、伪造、冒充。
    3、若当事双方对签名真伪发生争执,能在公正的仲裁者面前验证签名来确定真伪。
    三、数字签名方案的描述
    一个数字签名方案由两部分组成:带有陷门的数字签名算法、验证算法。
    设M是消息的有限集合,S是签名的有限集合,K是密钥的有限集合。
    则数字签名算法是一个映射:sig:M×K→S,s=sigk(m)。
    验证算法也是一个映射:


    五元组 {M,S,K,sig,ver} 就称为一个签名算法。
    两类数字签名函数
    1、直接数字签名
    指数字签名的执行过程只有通信双方参与。双方有共享的秘密密钥,或接收方知道发送方的公开密钥。
    缺点:方案的有效性依赖于发送方密钥的安全性。
    2、具有仲裁的数字签名
    指在通信双方的基础上引入了第三方仲裁者参与。 所有发送方X到接收方Y的签名消息首先送到仲裁者A,A将消息及其签名进行一系列测试,以检查其来源和内容,然后将消息、日期、已被仲裁者验证通过的指示一起发给Y。
    要求:参与者必须极大地相信仲裁机制工作正常。
    8-2 RSA 数字签名方案

    一、密钥的生成
    公钥 Pk={e,n},私钥 Sk={d,p,q}。
    二、签名过程(用d,n)
    用户A对消息 M∈Zn 进行签名,计算 S=Sig(H(M))=H(M)^d (mod n)
    将S附在消息M后作为用户对消息M的签名。
    三、验证过程(用e,n)
    给定 (M,S),Ver(M,S) 为真,当且仅当 H(M)=S^e (mod n)成立。

    8-3 Elgamal 数字签名方案

    一、系统初始化过程
    同加密算法,用来设置系统公共参数和用户的密钥。
    公钥为(p,g,y),私钥为(x:1≤x<p-1 ),其中有 y=gxmod p
    二、签名过程
    1、选择随机数 k∈Zp*,且k与p-1互素;
    2、首先计算消息 M 的哈希值 H(M),然后计算:
    r = g^k mod p,s = (H(M)-xr) k^(-1) mod (p-1) 。
    3、将 (r,s) 作为消息 M 的数字签名,与M一起发送给接收方。
    三、验证签名过程
    接收方收到 M 与其签名 (r,s) 后:
    1、首先计算消息 M 的哈希值 H(M)。
    2、验证 (yr)(rs)=g^H(M) mod p。成立为有效,否则为伪造。

    相关文章

      网友评论

        本文标题:NJUPT《 现代密码学 》

        本文链接:https://www.haomeiwen.com/subject/gjrrfltx.html