1、网络安全设计,密码学单向函数加密,Content,什么是单向函数加密? 单向函数加密技术原理 典型的单向函数加密算法 单向函数加密技术的应用,,1,网络安全设计 密码学单向函数加密,背包问题,Knapsack 假设圆柱形背包高度为b,有高度分别为a1a2an的n种物品 问题一:从这些物品中各选出若干个正好装满背包,背包要多高? 问题二:从这些物品中各选出若干个正好装满背包,如何选择?,,网络安全设计 密码学单向函数加密,2,b,ai,利用背包问题进行加密,算法: 选取正整数a1,a2an作为密钥 设:明文位串为m=m1m2mn 加密:c= a1m1+ a2m2+anmn=aimi 特点: 加密
2、是容易的 解密是困难的(“合法”解密也难以完成),,网络安全设计 密码学单向函数加密,3,什么是单向函数加密?,单向函数One-way Function(Hash函数/散列函数/哈希函数/压缩函数) 现代加密技术的一种重要类型 采用数学函数对信息进行加密处理并且难以复原 校验码(如CRC) 信息压缩算法 Hash函数,,网络安全设计 密码学单向函数加密,4,单向函数加密原理,,网络安全设计 密码学单向函数加密,5,原消息,Hash,消息摘要,来自于原消息 具有原消息的特征,例:利用消息摘要检索数据,,网络安全设计 密码学单向函数加密,6,文件F,H0,H1,H2,H4,H3,H5,H6,Hn-
3、1,检索服务器,f0,文件F,H0,f6,H6,fi,Hi,f2,文件F,H2,f3,H3,f5,H5,fi,Hi,f2,文件F,H2,f3,H3,f4,H4,f5,H5,fi,Hi,f0,文件F,H0,f1,H1,f4,H4,f6,H6,fi,Hi,I need data block 3 (f3) of file F.,fi,Hi,文件数据块,对应Hash值,Who owns H3 of file F?,单向函数加密性质,单向性 从输出很难确定输入消息 一致性 相同输入产生相同输出(稳定) 随机性 随机外观,以防猜测源消息 唯一性 不同输入产生不同输出 均匀性 输入的每个比特变化均匀反映到输
4、出,,网络安全设计 密码学单向函数加密,7,关于“唯一性”的说明,若原消息为m比特,消息摘要为n比特mn(一般mn)2m2n即消息摘要的编码空间小于原消息的编码空间大小消息摘要不一定是唯一的!,,网络安全设计 密码学单向函数加密,8,优秀的算法,可以使重复概率足够小,并不可推测,典型单向函数算法,CRCCyclic Redundancy Check,循环冗余校验码 MD5Message Digest Algorithm 5,消息摘要算法5 SHASecure Hash Algorithm,安全哈希算法 可以对任意长度的数据运算生成一个160位的数值 MACMessage Authenticat
5、ion Code,消息认证代码 一种使用密钥的单向函数,可用以在系统或用户之间传递认证文件或消息,,网络安全设计 密码学单向函数加密,9,典型单向函数算法,,网络安全设计 密码学单向函数加密,10,CRC,CRC,Cyclic Redundancy Check循环冗余校验 线性分组码的一种 编码和解码方法简单,检错和纠错能力强 达到0.0047%以下漏检率 可检测出所有奇数个随机错误 可检测出长度小于等于生成多项式阶数的突发错误 应用广泛 常用于通信领域实现差错检测(FCS) 磁盘/文件系统、数据压缩软件、图像压缩存储等,,网络安全设计 密码学单向函数加密,11,线性多项式,,网络安全设计 密
6、码学单向函数加密,12,1,0,1,0,0,1,0,1,127,+125,+122,+120,x7+x5+x2+1,+026,+024,+023,+021,7 6 5 4 3 2 1 0,最高指数为该线性多项式的阶,CRC算法,定义生成多项式P(x) P(x) 为n阶线性多项式 对原消息M,计算:余数R(x)即为原消息的n bit的CRC码 高位用0补足nbit长度 将该CRC码填入FCS字段进行传输,相当于传输S=M2nR(x),,网络安全设计 密码学单向函数加密,13,CRC校验,接收方对S=M2nR(x)计算:若余数r=0,表示接收无误 否则表示有误码,,网络安全设计 密码学单向函数加密
7、,14,CRC逐位除法示例,,网络安全设计 密码学单向函数加密,15,原消息,P(x),1101000,101,00,异或,011,1,101,010,0,101,001,00,101,001,00,101,001,01,消息输入(发送)方向,模2除法运算,添加n个0 即M2n,用0补足n位,原消息1101000的CRC值,CRC生成多项式,国际标准中的CRC生成多项式CRC-16=x16+x15+x2+1CRC-CCITT=x16+x12+x5+1CRC-32=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,,网络安全设计 密码学单向函数
8、加密,16,典型单向函数算法,,网络安全设计 密码学单向函数加密,17,MD5,MD5,消息摘要算法5(Message Digest Algorithm 5) RSA公司开发 单向函数加密算法 以512-bit分组为单位来处理输入的信息 最终输出128-bit消息摘要,,网络安全设计 密码学单向函数加密,18,MD5算法准备,对信息进行填充,使其比特数(信息长度)对512求余的结果等于448 后面附加一个以64-bit二进制数据表示的填充前信息的有效长度(以字节为单位),,网络安全设计 密码学单向函数加密,19,思考:如果原消息长度恰好是512-bit的整数倍,如何填充?,原消息512-bit
9、分组,填充10000000,448bits,64-bit原消息长度值,MD5算法,4个32-bit链接变量:Va=0x01234567,Vb=0x89abcdef,Vc=0xfedcba98,Vd=0x76543210 初始:a=Va, b=Vb, c=Vc, d=Vd 共四轮,每一轮进行16步操作,总共416=64步 用mj表示消息的第j个子分组(j=015),ti表示第i步所用的常数(i=164),函数:K(A,B,C,D,mj,s,ti) 表示 A=B+(A+k(B,C,D)+mj+ti)s)其中:K为F, G, P, Q,k对应为f, g, p, q,s表示右环移s位f, g, p,
10、q为四个非线性函数,按位运算:f(x,y,z) =(x & y) | (x) & z)g(x,y,z) =(x & z) | (y & (z)p(x,y,z) =x y zq(x,y,z)=y (x | (z) 常数ti的产生方式是:在第i步中(i=164)ti = int( 232 * abs( sin(i) ) i的单位是弧度 四轮运算完成之后,将a、b、c、d分别加上Va、Vb、Vc、Vd,然后用下一分组数据继续运行算法 最后的输出是Va、Vb、Vc、Vd的级联Va,Vb,Vc,Vd,,网络安全设计 密码学单向函数加密,20,MD5算法函数变换表,,网络安全设计 密码学单向函数加密,21
11、,MD5算法图示,,网络安全设计 密码学单向函数加密,22,数字指纹,Digital Finger Print 消息摘要消息的“数字指纹” 可用于检验发送者身份,,网络安全设计 密码学单向函数加密,23,发 送 方,身份信息,哈希,消息摘要,接 收 方,身份信息,哈希,消息摘要,消息摘要,比较,数字指纹安全吗?,针对数字指纹的中间人攻击,,网络安全设计 密码学单向函数加密,24,数字签名,Digital Signature 数字指纹数字签名,,网络安全设计 密码学单向函数加密,25,数字证书,Digital Certificate X.509标准 证书的版本信息 证书授予的主体名称和标识 证书
12、的唯一序列号 证书所使用的签名算法 证书的发行机构名称及其私钥的签名 证书的有效期 证书使用者的名称及其公钥等,,网络安全设计 密码学单向函数加密,26,数字证书的作用,访问者身份验证 服务器/客户端身份验证 代码/信任列表签名 智能卡登录 安全电子邮件 时间戳 VPN/IP安全互连 安全隧道 安全终端 安全用户 加密文件系统,系统软件安全 操作系统驱动程序 系统组件 密钥管理 密钥数据包许可证 许可证服务器确认 私钥存档 密钥恢复 数字版权保护 数字权利申明 文档签名,,网络安全设计 密码学单向函数加密,27,数字化鉴别技术关系,,网络安全设计 密码学单向函数加密,28,数字摘要,数字指纹,
13、建立数字摘要与原消息的关联,数字签名,数字指纹的公钥算法加密,数字证书,结构化和标准化,数字证书类型,个人证书、电子邮件证书 企业(法人/员工)证书 设备证书、服务器证书 虚拟专用网证书 代码和表单签名证书 数字时间戳(Digital Time Stamp,DTS),,网络安全设计 密码学单向函数加密,29,数字证书示例(1),,网络安全设计 密码学单向函数加密,30,数字证书示例(2),,网络安全设计 密码学单向函数加密,31,数字证书常见应用,安全Web访问 安全Email 签名邮件 保密邮件 安全互连VPN Intranet组网 PCIntranet Extranet组网,,网络安全设计
14、 密码学单向函数加密,32,密钥管理技术,Key Management 密钥生成(更新) 密钥分发(传递) 密钥保管(托管) 密钥管理的目标 安全的 易用的 完善的,,网络安全设计 密码学单向函数加密,33,密钥管理常见问题,通信双方如何安全生成和分发对称密钥? 如何了解对方是合法的通信方? 如何可信获取对方的公钥? 验证对方签名、安全传递密钥给对方 基本解决方案 Diffie-Hellman算法 ECC密钥互换算法,,网络安全设计 密码学单向函数加密,34,ECC密钥互换算法,类似Diffie-Hellman密钥互换方法 双方公开选定有限域GF(2k)上的椭圆曲线E、基点PE(GF(2k),
15、n为P的阶,k为二进制位数 Alice随机选取x,0xn Alice发送kA=xP Bob随机选取y,0yn Bob发送kB=yP Alice计算:kAB=yKA=xyPBob计算: kAB=xKB=xyP,,网络安全设计 密码学单向函数加密,35,Kerberos,密钥分发中心Key Distribution Center,KDC 较好的密钥管理机制,易用性强 每个用户只需一个和KDC会话的密钥 甲和乙进行秘密通信 甲和KDC通信,用只有甲和KDC知道的密钥加密,告诉KDC想和乙进行通信 KDC为甲和乙之间的会话生成一个会话密钥,并生成一个标签交给甲,标签用KDC和乙之间的会话密钥进行加密
16、在甲和乙会话开始时,甲把KDC生成的标签交给用户乙,其作用是让甲确信与之会话的是真实的乙(只有乙可解密该标签),而非冒充者 KDC生成标签和随机会话密钥,分别用只有甲(乙)和KDC知道的密钥进行加密,然后把标签和会话密钥传给甲(乙) 甲和乙启动会话,分别用得到的会话密钥加密会话,,网络安全设计 密码学单向函数加密,36,PKI,公钥基础设施Public Key Infrastructure 以公钥加密为基础,生成、管理、存储、分发、撤销数字证书所需要的体系结构 密钥管理平台由一整套硬件、软件、人员、策略、过程组成 遵循一定标准(PKCS),能够为所有网络应用提供加密和数字签名等密码服务及所必需
17、的密钥和证书管理体系,,网络安全设计 密码学单向函数加密,37,PKI组成,证书颁发机构(CA) 数字证书库 密钥备份与恢复系统 证书作废系统 应用程序接口(API),,网络安全设计 密码学单向函数加密,38,CA认证链,,网络安全设计 密码学单向函数加密,39,信任传递与互信,PKI的公钥获取方法,B:安全地获得CA的公钥(在申请数字证书时获得) B:向CA请求A的数字证书(证书包含A的公钥) CA:向B发送A的证书CA的私钥签名 B:接收并验证CA签名 B:从A的证书中获得A的公钥(该公钥已经过CA的公证),,网络安全设计 密码学单向函数加密,40,PKI的Email保密通信方法,发件人获
18、得收件人的公钥(方法见前页) 发件人创建一个对称密钥的私钥 发件人使用该私钥加密明文 发件人使用收件人的公钥将私钥加密 发件人将密文和加密私钥一起发送 收件人使用其私钥解密私钥 收件人使用私钥将解密数据得到明文,,网络安全设计 密码学单向函数加密,41,信任传递逻辑分析,,网络安全设计 密码学单向函数加密,42,A,B, 对方是合法方吗?,CA,需要对方给出身份证明, 信息会泄露吗?,数据加密后传输,双方需要安全的对称密钥,D-H 分配,KDC 分配,PKI 分配,CA 公钥,数字 证书,登录 认证,KDC 认证,PKI 认证,排除第三方介入攻击,申请时获得,对方的数字证书合法吗?,由对方的CA签名认定,对方的CA可信吗?,由根和各级CA签名认定,浏览器中已安装根证书,对方的根CA可信吗?,数字签名邮件示例(1),,网络安全设计 密码学单向函数加密,43,发送,数字签名邮件示例(2),,网络安全设计 密码学单向函数加密,44,接收,思考:发送加密邮件有何要求?,