当前位置:文档之家› 现代密码学第六章:单向函数和散列函数1(必修)

现代密码学第六章:单向函数和散列函数1(必修)

1

HASH函数和MAC(一)

《现代密码学》第六讲

2

上讲内容回顾

流密码(序列密码)的思想起源 流密码的分类

基于移位寄存器的流密码算法

RC4算法

3

本章主要内容

单向函数

Hash函数的定义及发展现状 hash函数的用途 MD5算法 SHA-256算法

SHA-512和SHA-384算法 消息鉴别码简介 CBC-MAC算法

HMAC算法

4

定义.函数若满足下列两个条件,则称之为强单向函数:

1 计算是容易的,即是多项

式时间可计算的;

2 计算函数的逆是困难的,即对每一多项式时间概率算法,每一多项式和充分大的有

:{0,1}*{0,1}*f →()f x ()f x f 1

()f x ?M ()p n 0()n n n >1

P r{(())(())}1/()

n n M f U f

f U p n ?∈<

5

注.

1 可能有少量x 给出的f(x)可用多项式时间概率算法求逆;

2 单向函数的存在性没有理论上的证明.

6

Hash函数定义

消息是任意有限长度,哈希值是固定长度.

Hash 的概念起源于1956年,Dumey 用它来解决symbol table question(符号表问题)。使得数据表的插入、删除、查询操作可以在平均常数时间完成。

7

单向性(抗原像):对干任意给定的消息,计算其哈希值容易. 但是,对于给定的哈希值h ,要找到M 使得H(M)=h 在计算上是不可行的.

弱抗碰撞(抗二次原像):对于给定的消息M 1,要发现另一个消息M 2,满足H( M 1)=H(M 2)在计算上是不可行的.

强抗碰撞:找任意一对不同的消息M 1,M 2,使H(M 1)=H(M 2 )在计算上是不可行的.

随机性.

8

Hash 函数的分类

改动检测码MDC (Manipulation Detection Code)

不带密钥的哈希函数主要用于消息完整性

消息认证码MAC (Message Authentication Code)

带密钥的哈希函数

主要用于消息源认证和消息完整性

消息完整性检测

Hash链用于口令认证

数字签名(速度快;防止消息伪造)

消息完整性和消息源认证(MAC)。。。。。。

9

10

M k

M 1

M 2

H 1H 2

IV …

H k

f

f

f

l

n

n

l

n

n

n

l

message schedule

Step Function

Step Function

Step Function

Step Function

Iterate step function

M 2

H 1

H 2

1978年,Merkle和Damagad设计MD迭代结构1993年,莱学家和Messay改进为MD加强结构

11

散列算法MD 族是在90年代初由mit laboratory for computer science 和RSA data security inc 的Ron ?Rivest 设计的,MD 代表消息摘要(message-digest ). md2、md4和md5都产生一个128位的信息摘要. MD2

1989年开发出md2算法. 在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数. 然后,以一个16位的检验和追加到信息末尾。 MD4

1990年开发出md4算法. MD5

1991年,rivest 开发出技术上更为趋近成熟的md5算法. RIPEMD-128/160/320

RIPEMD 由欧洲财团开发和设计.

12

SHA 系列算法是NIST 根据Rivest 设计的MD4和MD5开发的算法. 国家安全当局发布SHA 作为美国政府标准. SHA 表示安全散列算法. SHA-0

SHA-0正式地称作SHA ,这个版本在发行后不久被指出存在弱点. SHA-1

SHA-1是NIST 于1994年发布的,它与MD4和MD5散列算法非常相似,被认为是MD4和MD5的后继者. SHA-2

SHA-2实际上分为SHA-224、SHA-256、SHA-384和SHA-512算法.

13

HAVAL

1992年Yuliang Zheng 设计了HAVAL 函数,它与许多其他散列函数不同.

Gost

Gost 是一套苏联标准.

14

碰撞攻击复杂度

15

碰撞攻击复杂度

1020304050607080901992199219941996199820002002200420062008

MD4MD5SHA-0SHA-1

Brute force

Brute force: 1 million PCs or US$ 100 000 hardware 不带密钥的哈希函数的发展

16

不带密钥的哈希函数的发展

NESSIE 工程推荐使用的hash 算法有SHA-256/384/512和Whirlpool;

日本密码研究与评估委员会推荐使用的算法有RIPEMD-160、SHA-256/384/512。

ECRYPT 也在hash 算法研究方面举办了一系列活动。

此外,NIST 于2008年启动新的hash 标准的征集活动。

除迭代结构以外的结构适用于任何平台的压缩函数

2008年10月提交文档,收到64个算法,公开56个,51个进入第一轮评估

2009年10月,第二轮评估开始,剩余14个算法

17

在众多Hash 算法中MD5(128位)和SHA(160位)是目前使用最广泛的两个算法。

Ron Rivest 于1990年设计了一个称为MD4的Hash 算法,该算法的设计没有基于任何假设和密码体制,这种直接构造法构造的Hash 算法因其运行速度快、非常实用等特点受到了人们的广泛亲睐. 但后来人们发现MD4存在安全性缺陷,于是,Ron Rivest 在1991年对MD4作了几点改进,改进后的算法就是MD5.

18

对于MD4的几点改进 从三轮改成四轮;

第二轮函数从F(x,y,z)=(xΛy) v(xΛz) v(yΛz)改为(xΛz) v(yΛ┐z),以消弱对称性;

改变第二轮和第三轮访问消息子分组的顺序,使其形式更不相似;

改变每轮移位量以实现更快的雪崩效应;

每步有唯一的加法常数t i ,消除任何输入数据的规律;

每一步与上一步的结果相加,这将引起更快的雪崩效应.

19

1 消息填充

填充一个1和若干个0及64比特的(未填充)消息长度,使得总长度为512比特的整数倍.

2 初始向量h0 = 0x67452301 h1 = 0xEFCDAB89 h2 = 0x98BADCFE h

3 = 0x10325476

3 压缩函数的消息分组长度512比特,压缩函数分为4轮,每轮16步,共64步.

4 输出散列值128比特.

例如,消息“abc ”,其8比特的ASCII 表示:

01100001,01100010,01100011,因此,首先填充一个“1”,再填充448-(24+1)=423个零,然后再填充一个长度l=24的64位的二进制,即可得一长度512位的消息块01100001 01100010 01100011 1 00…0000…011000“a”

“b”

“c”

423

64l=24

20

现代密码学课后答案第二版讲解

现代密码学教程第二版 谷利泽郑世慧杨义先 欢迎私信指正,共同奉献 第一章 1.判断题 2.选择题 3.填空题 1.信息安全的主要目标是指机密性、完整性、可用性、认证性和不可否认性。 2.经典的信息安全三要素--机密性,完整性和可用性,是信息安全的核心原则。 3.根据对信息流造成的影响,可以把攻击分为5类中断、截取、篡改、伪造和重放,进一 步可概括为两类主动攻击和被动攻击。

4.1949年,香农发表《保密系统的通信理论》,为密码系统建立了理论基础,从此密码学 成为了一门学科。 5.密码学的发展大致经历了两个阶段:传统密码学和现代密码学。 6.1976年,W.Diffie和M.Hellman在《密码学的新方向》一文中提出了公开密钥密码的 思想,从而开创了现代密码学的新领域。 7.密码学的发展过程中,两个质的飞跃分别指 1949年香农发表的《保密系统的通信理 论》和 1978年,Rivest,Shamir和Adleman提出RSA公钥密码体制。 8.密码法规是社会信息化密码管理的依据。 第二章 1.判断题 答案×√×√√√√××

2.选择题 答案:DCAAC ADA

3.填空题 1.密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分 析学。 2.8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法 5部分组成的。 3.9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和 非对称。 4.10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列 密码。

第三章5.判断 6.选择题

(完整版)北邮版《现代密码学》习题答案.doc

《现代密码学习题》答案 第一章 1、1949 年,( A )发表题为《保密系统的通信理论》的文章,为密码系统建立了理 论基础,从此密码学成了一门科学。 A、Shannon B 、Diffie C、Hellman D 、Shamir 2、一个密码系统至少由明文、密文、加密算法、解密算法和密钥 5 部分组成,而其安全性是由( D)决定的。 A、加密算法 B、解密算法 C、加解密算法 D、密钥 3、计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译它的所需要 的代价超出了破译者的破译能力(如时间、空间、资金等资源),那么该密码系统的安全性是( B )。 A 无条件安全 B计算安全 C可证明安全 D实际安全 4、根据密码分析者所掌握的分析资料的不通,密码分析一般可分为 4 类:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击,其中破译难度最大的是( D )。 A、唯密文攻击 B 、已知明文攻击 C 、选择明文攻击D、选择密文攻击 5、1976 年,和在密码学的新方向一文中提出了公开密钥密码的思想, 从而开创了现代密码学的新领域。 6、密码学的发展过程中,两个质的飞跃分别指1949年香农发表的保密系统的通

信理论和公钥密码思想。 7、密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法5部分组成的。 对9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为 称和非对称。 10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列密码。 第二章 1、字母频率分析法对( B )算法最有效。 A、置换密码 B 、单表代换密码C、多表代换密码D、序列密码 2、(D)算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。 A 仿射密码 B维吉利亚密码C轮转密码 D希尔密码 3、重合指数法对( C)算法的破解最有效。 A 置换密码 B单表代换密码C多表代换密码 D序列密码 4、维吉利亚密码是古典密码体制比较有代表性的一种密码,其密码体制采用的是 (C )。

现代密码学知识点整理:.

第一章 基本概念 1. 密钥体制组成部分: 明文空间,密文空间,密钥空间,加密算法,解密算法 2、一个好密钥体制至少应满足的两个条件: (1)已知明文和加密密钥计算密文容易;在已知密文和解密密钥计算明文容易; (2)在不知解密密钥的情况下,不可能由密文c 推知明文 3、密码分析者攻击密码体制的主要方法: (1)穷举攻击 (解决方法:增大密钥量) (2)统计分析攻击(解决方法:使明文的统计特性与密文的统计特性不一样) (3)解密变换攻击(解决方法:选用足够复杂的加密算法) 4、四种常见攻击 (1)唯密文攻击:仅知道一些密文 (2)已知明文攻击:知道一些密文和相应的明文 (3)选择明文攻击:密码分析者可以选择一些明文并得到相应的密文 (4)选择密文攻击:密码分析者可以选择一些密文,并得到相应的明文 【注:①以上攻击都建立在已知算法的基础之上;②以上攻击器攻击强度依次增加;③密码体制的安全性取决于选用的密钥的安全性】 第二章 古典密码 (一)单表古典密码 1、定义:明文字母对应的密文字母在密文中保持不变 2、基本加密运算 设q 是一个正整数,}1),gcd(|{};1,...,2,1,0{* =∈=-=q k Z k Z q Z q q q (1)加法密码 ①加密算法: κκ∈∈===k X m Z Z Y X q q ;,;对任意,密文为:q k m m E c k m od )()(+== ②密钥量:q (2)乘法密码 ①加密算法: κκ∈∈===k X m Z Z Y X q q ;,;* 对任意,密文为:q km m E c k m od )(== ②解密算法:q c k c D m k mod )(1 -== ③密钥量:)(q ? (3)仿射密码 ①加密算法: κκ∈=∈∈∈===),(;},,|),{(;21* 2121k k k X m Z k Z k k k Z Y X q q q 对任意;密文

单向散列函数算法Hash算法

单向散列函数算法(Hash算法): 一种将任意长度的消息压缩到某一固定长度(消息摘要)的函数(过程不可逆),常见的单向散列算法有MD5,SHA.RIPE-MD,HAVAL,N-Hash 由于Hash函数的为不可逆算法,所以软件智能使用Hash函数作为一个加密的中间步骤 MD5算法: 即为消息摘要算法(Message Digest Algorithm),对输入的任意长度的消息进行预算,产生一个128位的消息摘要 简易过程: 1、数据填充..即填出消息使得其长度与448(mod 512)同余,也就是说长度比512要小64位(为什么数据长度本身已经满足却仍然需要填充?直接填充一个整数倍) 填充方法是附一个1在后面,然后用0来填充.. 2、添加长度..在上述结果之后附加64位的消息长度,使得最终消息的长度正好是512的倍数.. 3、初始化变量..用到4个变量来计算消息长度(即4轮运算),设4个变量分别为A,B,C,D(全部为32位寄存器)A=1234567H,B=89abcdefH,C=fedcba98H,D=7654321H 4、数据处理..首先进行分组,以512位为一个单位,以单位来处理消息.. 首先定义4个辅助函数,以3个32为双字作为输入,输出一个32为双字 F(X,Y,Z)=(X&Y)|((~X)&Z) G(X,Y,Z)=(X&Z)|(Y&(~Z)) H(X,Y,Z)=X^Y^Z I(X,Y,Z)=Y^(X|(~Z)) 其中,^是异或操作 这4轮变换是对进入主循环的512为消息分组的16个32位字分别进行如下操作: (重点)将A,B,C,D的副本a,b,c,d中的3个经F,G,H,I运算后的结果与第四个相加,再加上32位字和一个32位字的加法常数(所用的加法常数由这样一张表T[i]定义,期中i为1至64之中的值,T[i]等于4294967296乘以abs(sin(i))所得结果的整数部分)(什么是加法常数),并将所得之值循环左移若干位(若干位是随机的??),最后将所得结果加上a,b,c,d之一(这个之一也是随机的?)(一轮运算中这个之一是有规律的递增的..如下运算式),并回送至A,B,C,D,由此完成一次循环。(这个循环式对4个变量值进行计算还是对数据进行变换??) For i=0 to N/16 do For j=0 to 15 do Set X[i] to M[i*16+j] End AA = A BB=B CC=C DD=D //第一轮,令[ABCD K S I]表示下面的操作: //A=B+((A+F(B,C,D)+X[K]+T[I])<<

哈希算法散列

计算机算法领域 基本知识 Hash,一般翻译做“散列”,也有直接音译为”哈希“的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系 基本概念 * 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。 * 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。 * 若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。 常用的构造散列函数的方法 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位ǐ 1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a?key + b,其中a和b为常数(这种散列函数叫做自身函数) 2. 数字分析法 3. 平方取中法 4. 折叠法 5. 随机数法 6. 除留余数法:取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即H(key) = key MOD p, p<=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对p的选择很重要,一般取素数或m,若p选的不好,容易产生同义词。 处理冲突的方法 1. 开放寻址法;Hi=(H(key) + di) MOD m, i=1,2,…, k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列,可有下列三种取法: 1. di=1,2,3,…, m-1,称线性探测再散列; 2. di=1^2, (-1)^2, 2^2,(-2)^2, (3)^2, …, ±(k)^2,(k<=m/2)称二次探测再散列;

单向杂凑函数解读

第 6 章單向雜湊函數 密碼學上的雜湊函數(Cryptographic Hash Function),為一種可以將任意長本文由【中文word文档库】https://www.doczj.com/doc/3e16846389.html,搜集整理。中文word文档库免费提供海量教学资料、行业资料、范文模板、应用文书、考试学习和社会 经济等word文档 度的輸入訊息加以濃縮、轉換,成為一相當短的固定長度輸出訊息的函數,此一輸出訊息一般稱為文件摘要(Message Digest)或雜湊值(Hash Value)。 設計或使用雜湊函數於密碼學系統上的主因是因為利用公開金鑰密碼系統簽章時,因其運算速度較慢,若對整份文件加以簽章則效率不彰。因此加以變通,使用由該文件經過雜湊函數運算所產生之長度較短,但足以區別該文件的文件摘要(Message Digest),或稱文件的數位指紋(Digital Fingerprint),來加以簽章,取代原先對整份文件簽章的方式,以加速數位簽章的應用。 雜湊函數與加密演算法一樣,均是將訊息加以隱藏。但其不同點在於加密演算法的結果可以藉由適當的方式加以還原,而雜湊函數則必須具單向與不可逆(One-Way)的特性。因此使得給定文件時,順向計算該文件的雜湊值相單簡單快速,但經過雜湊函數濃縮、運算後的文件摘要,無法反向還原成先前的訊息。 密碼學中所使用的單向雜湊函數(One-Way Hash Function)必須具備以下兩個特性: 1.當給定一特定的雜湊輸出值後,欲找出任何文件可以輸出此一特定 的雜湊值,為計算上的不可行,此為抗拒事先描繪的特性(Preimage Resistance)。 2.即使給定一份文件及其雜湊值後,找出第二份文件可以輸出此一特

散列函数

散列函数 又称hash函数,Hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等. 一个安全的杂凑函数应该至少满足以下几个条件: ①输入长度是任意的; ②输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击; ③对每一个给定的输入,计算输出即杂凑值是很容易的 ④给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。 Hash函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。 常见散列函数(Hash函数) ·MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个12 8位的数值; ·SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值; ·MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。 ·CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。 讨论几种散列函数。在以下的讨论中,我们假设处理的是值为整型的关键码,否则我们总可以建立一种关键码与正整数之间的一一对应关系,从而把该关键码的检索转化为对与其对应的正整数的检索;同时,进一步假定散列函数的值落在0到M-1之间。散列函数的选取原则是:运算尽可能简单;函数的值域必须在散列表的范围内;尽可能使得结点均匀分布,也就是尽量让不同的关键码具有不同的散列函数值。需要考虑各种因素:关键码长度、散列表大小、关键码分布情况、记录的检索频率等等。下面我们介绍几种常用的散列函数。 1、除余法

什么是哈希函数

什么是哈希函数 哈希(Hash)函数在中文中有很多译名,有些人根据Hash的英文原意译为“散列函数”或“杂凑函数”,有些人干脆把它音译为“哈希函数”,还有些人根据Hash函数的功能译为“压缩函数”、“消息摘要函数”、“指纹函数”、“单向散列函数”等等。 1、Hash算法是把任意长度的输入数据经过算法压缩,输出一个尺寸小了很多的固定长度的数据,即哈希值。哈希值也称为输入数据的数字指纹(Digital Fingerprint)或消息摘要(Message Digest)等。Hash函数具备以下的性质: 2、给定输入数据,很容易计算出它的哈希值; 3、反过来,给定哈希值,倒推出输入数据则很难,计算上不可行。这就是哈希函数的单向性,在技术上称为抗原像攻击性; 4、给定哈希值,想要找出能够产生同样的哈希值的两个不同的输入数据,(这种情况称为碰撞,Collision),这很难,计算上不可行,在技术上称为抗碰撞攻击性; 5、哈希值不表达任何关于输入数据的信息。 哈希函数在实际中有多种应用,在信息安全领域中更受到重视。从哈希函数的特性,我们不难想象,我们可以在某些场合下,让哈希值来“代表”信息本身。例如,检验哈希值是否发生改变,借以判断信息本身是否发生了改变。` 怎样构建数字签名 好了,有了Hash函数,我们可以来构建真正实用的数字签名了。 发信者在发信前使用哈希算法求出待发信息的数字摘要,然后用私钥对这个数字摘要,而不是待发信息本身,进行加密而形成一段信息,这段信息称为数字签名。发信时将这个数字签名信息附在待发信息后面,一起发送过去。收信者收到信息后,一方面用发信者的公钥对数字签名解密,得到一个摘要H;另一方面把收到的信息本身用哈希算法求出另一个摘要H’,再把H和H’相比较,看看两者是否相同。根据哈希函数的特性,我们可以让简短的摘要来“代表”信息本身,如果两个摘要H和H’完全符合,证明信息是完整的;如果不符合,就说明信息被人篡改了。 数字签名也可以用在非通信,即离线的场合,同样具有以上功能和特性。 由于摘要一般只有128位或160位比特,比信息本身要短许多倍,USB Key或IC卡中的微处理器对摘要进行加密就变得很容易,数字签名的过程一般在一秒钟内即可完成。

现代密码学教程课后部分答案考试比用

第一章 1、1949年,(A )发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成了一门科学。 A、Shannon B、Diffie C、Hellman D、Shamir 2、一个密码系统至少由明文、密文、加密算法、解密算法和密钥5部分组成,而其安全性是由(D)决定的。 A、加密算法 B、解密算法 C、加解密算法 D、密钥 3、计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译它的所需要的代价超出了破译者的破译能力(如时间、空间、资金等资源),那么该密码系统的安全性是(B )。 A无条件安全B计算安全C可证明安全D实际安全 4、根据密码分析者所掌握的分析资料的不同,密码分析一般可分为4类:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击,其中破译难度最大的是(D )。 A、唯密文攻击 B、已知明文攻击 C、选择明文攻击 D、选择密文攻击 5、1976年,W.Diffie和M.Hellman在密码学的新方向一文中提出了公开密钥密码的思想,从而开创了现代密码学的新领域。 6、密码学的发展过程中,两个质的飞跃分别指1949年香农发表的保密系统的通信理论和公钥密码思想。 7、密码学是研究信息及信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法5部分组成的。 9、密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和非对称。 10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列密码。 第二章 1、字母频率分析法对(B )算法最有效。 A、置换密码 B、单表代换密码 C、多表代换密码 D、序列密码 2、(D)算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。 A仿射密码B维吉利亚密码C轮转密码D希尔密码 3、重合指数法对(C)算法的破解最有效。 A置换密码B单表代换密码C多表代换密码D序列密码 4、维吉利亚密码是古典密码体制比较有代表性的一种密码,其密码体制采用的是(C )。 A置换密码B单表代换密码C多表代换密码D序列密码 5、在1949年香农发表《保密系统的通信理论》之前,密码学算法主要通过字符间的简单置换和代换实现,一般认为这些密码体制属于传统密码学范畴。 6、传统密码体制主要有两种,分别是指置换密码和代换密码。 7、置换密码又叫换位密码,最常见的置换密码有列置换和周期转置换密码。 8、代换是传统密码体制中最基本的处理技巧,按照一个明文字母是否总是被一个固定的字母代替进行划分,代换密码主要分为两类:单表代换和多表代换密码。 9、一个有6个转轮密码机是一个周期长度为26 的6次方的多表代替密码机械装置。 第四章 1、在( C )年,美国国家标准局把IBM的Tuchman-Meyer方案确定数据加密标准,即DES。 A、1949 B、1972 C、1977 D、2001 2、密码学历史上第一个广泛应用于商用数据保密的密码算法是(B )。 A、AES B、DES C、IDEA D、RC6 3、在DES算法中,如果给定初始密钥K,经子密钥产生的各个子密钥都相同,则称该密钥K为弱密钥,DES算法弱密钥的个数为(B )。 A、2 B、4 C、8 D、16

现代密码学简答题及计算题

第七章 简答题及计算题 ⑴公钥密码体制与对称密码体制相比有哪些优点和不足? 答:对称密码 一般要求: 1、加密解密用相同的密钥 2、收发双方必须共享密钥 安全性要求: 1、密钥必须保密 2、没有密钥,解密不可行 3、知道算法和若干密文不足以确定密钥 公钥密码 一般要求:1、加密解密算法相同,但使用不同的密钥 2、发送方拥有加密或解密密钥,而接收方拥有另一个密钥 安全性要求: 1、两个密钥之一必须保密 2、无解密密钥,解密不可行 3、知道算法和其中一个密钥以及若干密文不能确定另一个密钥 ⑵RSA 算法中n =11413,e =7467,密文是5859,利用分解11413=101×113,求明文。 解: 10111311413n p q =?=?= ()(1)(1)(1001)(1131)11088n p q ?=--=--= 显然,公钥e=7467,满足1<e < () n ?,且满足 gcd(,())1e n ?=,通过公式 1m o d 1108d e ?≡求出1 mod ()3d e n ?-≡=, 由解密算法mod d m c n ≡得3mod 5859mod114131415d m c n ≡== ⑶在RSA 算法中,对素数p 和q 的选取的规定一些限制,例如: ①p 和q 的长度相差不能太大,相差比较大; ②P-1和q-1都应有大的素因子;请说明原因。 答:对于p ,q 参数的选取是为了起到防范的作用,防止密码体制被攻击 ①p ,q 长度不能相差太大是为了避免椭圆曲线因子分解法。 ②因为需要p ,q 为强素数,所以需要大的素因子 ⑸在ElGamal 密码系统中,Alice 发送密文(7,6),请确定明文m 。 ⑺11 Z 上的椭圆曲线E : 23 6y x x =++,且m=3。 ①请确定该椭圆曲线上所有的点; ②生成元G=(2,7),私钥(5,2)2B B n P ==,明文消息编码到(9,1)m P =上,加密是选取随机 数k=3,求加解密过程。 解:①取x=0,1,…,10 并计算 23 6(mod11)y x x =++,现以x=0为例子。 因为x=0, 23006(mod11)6mod11y =++=,没有模11的平方根,所以椭圆上不存在横坐标为0 的点;同理依次可以得到椭圆上的点有(2 , 4) (2,7) (3 , 5) (3,6) (5,9) (5 , 2) (7 , 9) (7 ,2) (8 , 8) (8 , 3) (10 , 9) (10 , 2) ②密钥生成:由题得B 的公钥为{E: 236(mod11)y x x =++,(2,7)G =,(5,2)B P =},私钥为 ⑻与RSA 密码体制和ElGamal 密码体制相比,简述ECC 密码体制的特点。 答:①椭圆曲线密码体制的安全性不同于RSA 的大整数因子分解问题及ElGamal 素域乘法群离散对数问题。自公钥密码产生以来,人们基于各种数学难题提出了大量的密码方案,但能经受住时间的考验又广泛为人

单向散列函数的原理_实现和在密码学中的应用

收稿日期:2001204228 基金项目:国家重点科技项目(攻关)计划资助课题(20002A312 01205) 单向散列函数的原理、实现和在密码学中的应用3 辛运帏,廖大春,卢桂章 (南开大学信息技术科学学院,天津300071) 摘 要:简要介绍了单向散列函数的有关理论及实现情况,并且以密码学中广泛应用的单向散列函数M D5 为例,详细介绍了它的原理和实现过程。最后简要介绍了单向散列函数在当前的应用,并且提出了一种利用单向散列函数实现的新的用户密钥管理方案。 关键词:单向散列函数;密码学;邮摘散列算法;M D5中图法分类号:TP309.3 文献标识码:A 文章编号:100123695(2002)022*******  The Principle and Implement of One 2way Hash Functions and Their Cryptographic Application XI N Y un 2wei ,LI AO Da 2chun ,LU G ui 2zhang (College o f Information Technology &Science ,Nankai Univer sity ,Tianjin 300071,China ) Abstract :The paper introduces the theory and im plement of one 2way hash functions ,and using the M D5Alg orithm which is extensively used in cry ptography as an exam ple ,introduces its principle and im plement in detail.At last ,we research the application of them ,and pre 2sent a new schedule of user key management. K ey w ords :One 2way Hash Function ;Cry ptography ;Message Digest Hash Alg orithm ;M D5 1 单向散列函数简介 密码学中使用的单向散列函数将任意长度的消息压缩到某一固定长度的消息摘要。单向散列函数又称为单向Hash 函数,它不是加密算法,却在密码学中有着广泛的应用,与各种加密算法有着密切的关系。它的模型为:h =H (M )。 其中,M 是待处理的明文,可以为任意长度;H 是单向散列函数,h 是生成的报文摘要,它具有固定的长度,并且和M 的长度无关。其中H 具有以下的单向性质:①给定H 和M ,很容易计算h ;②给定h 和H ,很难计算M ,甚至得不到M 的任何消息;③给定H ,要找两个不同的M 1和M 2,使得H (M 1)=H (M 2)在计算上是不可行的。 根据单向散列函数的安全水平,可以将单向散列函数分成两类:强碰撞自由的单向散列函数和弱碰撞自由的单向散列函数。上面描述的是强碰撞自由的单向散列函数的性质。如果将第③条改为:给定h 和一个已知的消息M ,找另外一个不同的消息M 1,使得h (M )=h (M 1)在计算上是不可行的,就叫做弱碰撞自由的单向散列函数。 显然强碰撞自由的单向散列函数比弱碰撞自由的单向散列函数安全性要高。因为弱碰撞自由的单向散列函数随着重复使用次数的增加安全性逐渐降低,强碰撞自由的单向散列函数则不会因其重复使用而降低安全性。因此在实际中要求使用强碰撞自由的单向散列函数。除此之外,在实际应用中还要求单向散列函数具有如下特点: (1)单向散列函数能够处理任意长度的明文(至少是在实际应用中可能碰到的长度的明文),其生成的消息摘要数据块长度具有固定的大小,而且,对同一个消息反复执行该函数总是得到相同的信息摘要。 (2)单向散列函数生成的信息摘要是不可预见的,消息摘要看起来和原始的数据没有任何的关系。而且,原始数据的任何微小变化都会对生成的信息摘要产生很大的影响。 (3)具有不可逆性,即通过生成的报文摘要得到原始数据的任何信息在计算上是完全不可行的。 单向散列函数在密码学中有着非常广泛的应用,它被广泛地应用于数字签名、消息的完整性鉴别、消息的起源认证等,另外也和各种密码算法一起构成混合密码系统。 2 实现综述 实现一个安全的单向散列函数并不是一件容易的事 ? 52?第2期辛运帏等:单向散列函数的原理、实现和在密码学中的应用

现代密码学基础

《现代密码学(基础?)》编写大纲 88888888888888888888888888888888888888888888888888888888888888888888888888888888

前言 第一章概论(HDK) 1.1信息系统安全与密码技术 1.2密码系统模型和密码体制 (密码系统模型、单钥与双钥密码体制、对密码体制的一般要求)1.3密码分析 1.4信息论与保密系统安全水平 1.4.1信息量和熵 1.4.2完善保密性与随机性 1.4.3唯一解距离、理论保密性与实际保密性 1.5复杂性理论简介 习题 第二章序列密码(T) 2.1 序列密码的一般模型 2.2 线性反馈移位寄存器序列 2.3 序列密码设计准则 2.3.1复杂度及B-M算法 2.3.2相关免疫性 2.4 非线性序列 2.4.1 一般模型 2.4.2 钟控序列、级联序列 2.4.3 FCSR及其使用FCSR的序列密码 2.5 实际算法:RC4、A5 习题 第三章分组密码(T) 3.1分组密码的一般模型及工作模式 3.2DES 3.2.1算法描述 3.2.2三重DES 3.3IDEA 3.3.1设计原理与算法描述 3.3.2安全性分析 3.4AES 3.5分组密码分析方法* 3.5.1差分分析 3.5.2线性分析 3.6NESSIE: MISTY1、Camellia、SHACAL2 习题

第四章公钥密码(M) 4.1 RSA公钥密码体制 4.1.1 RSA算法(包括介绍欧拉函数和欧拉定理) 4.1.2 对RSA的攻击与参数选取 包括因子分解复杂度,对RSA的选择密文攻击,公共模数攻击,低加密指数 攻击,低解密指数攻击,素因子的要求,确定性素性测试算法复杂度。 4.2 基于离散对数的公钥密码体制 4.2.1 EIGamal公钥密码体制 4.2.2 安全性分析(包括介绍离散对数问题、Diffie-Hellman问题及其复杂度) 4.3 椭圆曲线密码密码体制 4.4可证明性安全公钥密码体制简介* 4.4.1 公钥加密中若干安全性概念介绍 4.4.2 基于RSA的可证明性安全公钥密码体制 介绍OAEP方案、安全性结论 4.4.3基于Diffie-Hellman问题可证明性安全公钥密码体制 介绍Cramer-Shoup方案、安全性结论 4.5 其它公钥体制 包括Ranbin体制(较详细)、XTR和NTRU等(一般性点到) 习题 第五章散列函数与消息认证 5.1散列函数的性质 Hash函数 5.2散列函数的安全性 单向Hash函数;弱碰撞免疫(weakly collision-free);强碰撞免疫(strongly collision-free); 生日攻击. 5.3迭代散列函数 结构分析,算法描述,安全性讨论. 5.4散列函数MD5 设计目标,算法描述,安全性讨论. 5.5安全散列算法 算法描述,安全性讨论. 5.6消息认证 认证;认证系统;消息认证码;无条件安全认证码;HMAC算法描述与安全性讨论. 习题 第六章安全协议 6.1数字签名 6.1.1概念 6.1.2RSA数字签名 6.1.3ElGamal数字签名 6.1.4特殊类型的数字签名

HASH函数

密码学 (第十三讲) HASH函数 张焕国 武汉大学计算机学院

目录 密码学的基本概念 1、密码学 2、古典 、古典密码 3、数据加密标准( ) DES) 、数据加密标准(DES 4、高级 ) AES) 数据加密标准(AES 高级数据加密标准( 5、中国商用密码( ) SMS4) 、中国商用密码(SMS4 6、分组密码的应用技术 7、序列密码 8、习题课:复习对称密码 、公开密钥密码(11) 9、公开密钥密码(

目录 公开密钥密码(22) 10 10、 11、数字签名(1) 12、数字签名(2) 13、 、HASH函数 13 14 14、 15、 15 PKI技术 16 16、 、PKI 17、习题课:复习公钥密码 18、总复习

一、HASH 函数函数的概念的概念 1、Hash Hash的作用的作用 ?Hash Hash码也称报文摘要码也称报文摘要。。 ?它具有极强的错误检测能力错误检测能力。。 ?用Hash Hash码作码作MAC ,可用于认证认证。。 ?用Hash Hash码辅助码辅助数字签名数字签名。。 ?Hash Hash函数可用于函数可用于保密保密。。

一、HASH 函数的概念 2、Hash Hash函数的定义函数的定义 ①Hash Hash函数将任意长的数据函数将任意长的数据M 变换为定长的码h , 记为记为::h=HASH(M)h=HASH(M)或或h=H(M)h=H(M)。。 ②实用性:对于给定的数据对于给定的数据M M ,计算,计算h=HASH(M)h=HASH(M)是是 高效的。 ③安全性安全性:: ? 单向性:对给定的对给定的Hash Hash值值h ,找到满足H(x)H(x)==h 的x 在 计算上是不可行的计算上是不可行的。。 否则否则,,设传送数据为设传送数据为C=C=<<M ,H(M||K )>,K 是密钥。攻击者可以截获攻击者可以截获C,C,求出求出Hash 函数的逆函数的逆,,从而得出 M||S =H -1(C),然后从M 和M ||K即可即可得出得出K。

现代密码学(第二版)重点概念整理

第一章 1.被动攻击 获取消息的真实内容 进行业务流分析 2.主动攻击 中断、篡改、伪造 3.安全业务 1、保密业务:保护数据以防被动攻击。 2、认证业务:用于保证通信的真实性。 3、完整性业务:防止对消息流的篡改和业务拒绝。 4、不可否认业务:用于防止通信双方中的某一方对所传输消息的否认。 5、访问控制:访问控制的目的是防止对网络资源的非授权访问,控制的实现方式是认证,即检查欲访问某一资源的用户是否具有访问权。 4.安全通信需考虑 加密算法 用于加密的秘密信息 秘密信息的分布与共享 安全服务所需的协议 5.信息安全可分为系统安全、数据安全、内容安全,密码技术是保障数据安全的关键技术。 6.密码体制从原理上分为单钥体制和双钥体制,单钥体制包括对明文消息按字符逐位加密的流密码和将明文消息分组加密的分组密码。双钥特点是将加密和解密能力分开。 7.密码攻击类型 唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击 8.加密算法是无条件安全的,仅当密钥至少和明文一样长时,才能达到无条件安全 9.多表代换密码的计算问题,课后习题3、4 第二章 1.流密码的概念:利用密钥k产生一个密钥流z=z0z1…,并使用如下规则对明文串x=x0x1x2…加密: y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…。 密钥流由密钥流发生器f产生: zi=f(k,σi), σi:加密器中的记忆元件(存储器)在时刻i的状态, f:由密钥k和σi产生的函数。 2.分组密码与流密码的区别: 有无记忆性 3.密码设计者的最大愿望是设计出一个滚动密钥生成器,使得密钥经其扩展成的密钥流序列具有如下性质:极大的周期、良好的统计特性、抗线性分析、抗统计分析 4.同步流密码的关键是密钥流产生器。 5.如果移位寄存器的反馈函数f(a1,a2,…,an)是a1,a2,…,an的线性函数,则称之为线性反馈移位寄存器LFSR(linear feedback shift register)。

基于混沌映射的单向Hash函数构造_刘军宁

ISSN 1000-0054CN 11-2223/N 清华大学学报(自然科学版)J Tsingh ua Univ (Sci &Tech ),2000年第40卷第7期 2000,V o l.40,N o.715/33 5558   基于混沌映射的单向Hash 函数构造 刘军宁, 谢杰成, 王 普 (清华大学自动化系,宽带网络信息研究中心,北京100084) 收稿日期:1999-04-05 作者简介:刘军宁(1973-),男(汉),湖南,硕士研究生 文 摘:为提高Hash 函数性能,尝试新的H a sh 函数构造方法,提出一种基于混沌映射的H a sh 函数构造思想,给出利用两个不同的混沌模型构造的单向H a sh 函数,并初步分析了其作为单向H a sh 函数的不可逆性,防伪造性,初值敏感性和混沌映射应用于单向Hash 函数构造的优点与潜力。实现了任意长原始文本单向ha sh 为128bit H a sh 值的算法。实验结果表明,这种构造方法实现简单,对初值有高度敏感性,具有很好的单向H a sh 性能。同时,该方法也易于改造为并行实现,并且迭代的步数与原始文本成正比,有成为一种快速实用的单向Hash 算法的潜力。 关键词:电子商务;数字签名;H a sh 函数;混沌映射中图分类号: T P 309;T P 393 文献标识码: A 文章编号:1000-0054(2000)07-0055-04 随着以Internet 为基础的电子商务技术的迅猛发展,以公钥密码术,数字签名等为代表的加密安全技术已成为研究的热点[1~3]。单向Hash 函数是数字签名中的一个关键环节,可以大大缩短签名时间,在消息完整性检测,内存的散布分配,操作系统中帐号口令的安全存储中也有重要应用。传统的单向Hash 方法有M D2,M D5,SHA 等标准[2~ 4] ,多是 采用基于异或等逻辑运算的复杂方法或是用DES 等分组加密方法多次迭代[1]得到Hash 结果,后种方法运算量很大,难以找到快速同时可靠的加密方法,而前种方法中由于异或运算中固有的缺陷,虽然每步运算简单,但计算轮数即使在被处理的文本很短情况下也很大。 针对以上问题,提出了一种基于混沌映射模型的单向Hash 算法,该算法表达简单,很好地达到了单向Hash 函数的各项性能,迭代轮数与原始文本长度成正比,且很容易改造为并行实现的算法。 1 混沌映射用于Hash 函数的可行性 单向函数的定义:如映射f :X →Y 对所有的x ∈X ,f (x )都容易计算,但对任意的y ∈f (X )=Y 找到x ∈X 使f (x )=y 却是计算上困难的。则该函数称为单向函数。 单向H ash 函数是一种特殊的单向函数,它满足以下3个条件[1]并有|Y | |X | :1)不可逆性 已知c =Hash (m )求m 计算困难,即除穷举外没有好办法; 2)防伪造性 已知c =Hash (m ),求n 使Hash (n )=c 计算困难; 3)初值敏感性 c =H ash(m )中c 的每一比特都与m 的每一比特相关,并有高度的敏感性,即每改变m 的一比特,都将对c 产生明显影响。 从数学上看,报文空间可以是无限的,而Hash 结果总是一段定长字节的数字,会有无数的报文具有同样的H ash 函数值,但在Hash 结果达到一定长度,比如结果为固定的128bit 长时,结果空间已有2128 ≈3.4028×1028 个,现有的计算环境下在这样大的空间穷举计算是困难的。 Hash 函数把任意信息集合提炼为一个大数。被处理的文字信息即使只相差一个字符,它们的Hash 结果也会完全不同,这就使要想通过已知的一对x ,y (y =Hash (x ))找到x ′,H ash(x ′)=y ,除穷举外没有什么好的办法。 这些出色的性质使单向Hash 函数广泛应用于各种数据保护场合。用来以较小的计算和存储代价来保护数据的完整性和正确性。同时单向Hash 函数可以将原始的长信息压缩,这在电子商务应用中对于数字签名的快速实时实现有重要意义,可以对压缩后的信息进行签名,大大缩短签名时间。混沌理论在80年代末开始得到密码学界的注意,混沌运动是非线性确定性系统内在随机性的表

常用的哈希函数

常用的哈希函数 通用的哈希函数库有下面这些混合了加法和一位操作的字符串哈希算法。下面的这些算法在用法和功能方面各有不同,但是都可以作为学习哈希算法的实现的例子。(其他版本代码实现见下载) 1.RS 从Robert Sedgwicks的Algorithms in C一书中得到了。我(原文作者)已经添加了一些简单的优化的算法,以加快其散列过程。 [java]view plaincopy 1.public long RSHash(String str) 2. { 3.int b = 378551; 4.int a = 63689; 5.long hash = 0; 6.for(int i = 0; i < str.length(); i++) 7. { 8. hash = hash * a + str.charAt(i); 9. a = a * b; 10. } 11.return hash; 12. } 2.JS Justin Sobel写的一个位操作的哈希函数。 [c-sharp]view plaincopy 1.public long JSHash(String str) 2. { 3.long hash = 1315423911; 4.for(int i = 0; i < str.length(); i++) 5. { 6. hash ^= ((hash << 5) + str.charAt(i) + (hash >> 2)); 7. } 8.return hash; 9. } 3.PJW 该散列算法是基于贝尔实验室的彼得J温伯格的的研究。在Compilers一书中(原则,技术和工具),建议采用这个算法的散列函数的哈希方法。

(完整word版)密码学

第一章 1.现代密码学技术仅用于实现信息通信保密的功能× 2.密码技术是一种古老的技术,所以,密码学发展史早于信息安全发展史× 3.密码学是保障信息安全的核心技术,信息安全是密码学研究与发展的目的√ 4.密码学是对信息安全各方面的研究,能够解决所有信息安全的问题× 5.从密码学的发展史可以看出,整个密码学的发展史符合历史发展的规律和人类对客观事物的认识规律√ 6.信息隐藏技术其实也是一种信息保密技术√ 7.传统密码系统本质上均属于对称密码学范畴× 8.早期密码的研究基本上是秘密的进行的,而密码学的真正蓬勃发展和广泛应用源于计算机网络的普及和发展√ 9.1976年后,美国数据加密标准(DES)的公布使密码学的研究公开,从而开创了现代密码学的新纪元,是密码学发展史上的一次质的飞跃× 10.密码标准化工程是一项长期的艰巨的基础性工作,也是衡量国家商用密码发展水平的重要标志√ 11、1949年,(A、Shannon)发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成了一门科学。 12.在公钥密码思想提出约一年后1978年,美国麻省理工学院的rivest、(shamir)和adleman 提出RSA的公钥密码体制 13.1976年,W.Diffie和M.Hellman在密码学的新方向一文中提出了公开密钥密码的思想,从而开创了现代密码学的新领域 14.信息安全的主要目标是指机密性、安全性、认证性和不可抵赖性,可用性 15.经典的信息安全三要素——机密性、完整性和可用性,是信息安全的核心原则 16.根据对信息流造成的影响,可以把攻击分为五类:中断,截取,篡改,伪造和重放,进一步概括为两类:主动攻击和被动攻击 17.1949年,香农发表题为保密系统的通信原理为密码系统建立了理论基础从此密码学成了一门科学 18.密码学的发展大致经历了两个阶段:以手工为主的古代密码和以机械为工具近代密码 第二章 判断 1,根据商农的理论,在加密明文之前,利用压缩技术压缩明文,这增加攻击者破译的难度。(√) 2,从理论上讲,穷举攻击可以破解任何密码系统,包括“一次一密”密码系统。(×) 3,设计密码系统的目标就是使其达到保密性。(√) 4,任何一个密码体制都可以通过迭代来提高其安全强度。(×) 5,按照现代密码体制的原则,密码分析者如果能够找到秘密密匙,那么,他就能够利用密文恢复出其明文。(√) 6,现代密码系统的安全性不应取决于不易改变的算法,而应取决于可随时改变的密匙。(×)选择 1,一个密码系统至少由明文,密文,加密算法和解密算法,密匙五部分组成,而其安全性是由密匙决定的。

相关主题
相关文档 最新文档