500 likes | 662 Views
安全åè®®ç†è®ºä¸Žæ–¹æ³•. ç¬¬ä¸€ç« å¼•è®º. 1.1 密ç 体制. Key=K. Key=K -1. 明文 P. 密文 C. 明文 P. å‘é€è€…. 接收者. åŠ å¯†. 解密. 图 1.1 åŠ å¯†ä¸Žè§£å¯†. ä¿å¯†æ€§æœåС䏻è¦ç”¨äºŽé˜²æ¢è¢«åŠ¨æ”»å‡»ï¼Œä¹Ÿæ˜¯å®žçŽ°å…¶ä»–å®‰å…¨æœåŠ¡çš„é‡è¦åŸºç¡€ã€‚ å¯†ç æŠ€æœ¯æ˜¯å®žçŽ°ä¿å¯†æ€§æœåŠ¡çš„ä¸»è¦æ‰‹æ®µï¼Œå› æ¤å¯†ç 技术是信æ¯å®‰å…¨æ ¸å¿ƒæŠ€æœ¯ã€‚ 一个密ç 体制决定了一对数æ®å˜æ¢ï¼Œåˆ†åˆ«ç§°ä¸ºåŠ å¯†å˜æ¢å’Œè§£å¯†å˜æ¢ï¼ˆä¹Ÿç§°åŠ å¯†å’Œè§£å¯†ï¼‰ã€‚å¯†ç 体制的基本è¦ç´ 是密ç 算法和密钥。密ç 算法是一些公å¼ã€æ³•则或程åºï¼›å¯†é’¥æ˜¯å¯†ç 算法ä¸çš„æŽ§åˆ¶å‚数。. 对称密钥密ç 体制.
E N D
安全协议理论与方法 第一章 引论
1.1 密码体制 Key=K Key=K-1 明文P 密文 C 明文P 发送者 接收者 加密 解密 图1.1 加密与解密
保密性服务主要用于防止被动攻击,也是实现其他安全服务的重要基础。保密性服务主要用于防止被动攻击,也是实现其他安全服务的重要基础。 • 密码技术是实现保密性服务的主要手段,因此密码技术是信息安全核心技术。 • 一个密码体制决定了一对数据变换,分别称为加密变换和解密变换(也称加密和解密)。密码体制的基本要素是密码算法和密钥。密码算法是一些公式、法则或程序;密钥是密码算法中的控制参数。
对称密钥密码体制 • 对称密码技术是最普及的数据加密标准和方法。其中DES算法应用 最为广泛。 • DES算法的特点是什么? • 密钥如何安全传递共享? 密钥
公钥密码体制 • 非对称密码体制特点: • 加密能力与解密能力是分开的:数据加密和解密使用不同的密钥,从而构成了不对称体制。加密密钥可以公开,算法也可以公开,只要求解密密钥保密 • 知道加密算法,从加密密钥得到解密密钥在计算上是不可行的 • 两个密钥中任何一个都可以用作加密而另一个用作解密(不是必须的):X = DKR(EKU(X)) = EKU(DKR(X)) • 密钥分发简单 • 需要保存的密钥量大大减少,N个用户只需要N对 • 可满足不相识的人之间保密通信 • 可以实现数字签名 • 基于数学函数(数论)而不是基于替换和置换,
公钥应用---数字签名 1) 签名者事后不能否认自己的签名。 2) 接收者能验证签名,而任何其他人都不能伪造签名。 3) 当双方关于签名的真伪发生争执时,第三方能解决双方之间发生的争执。
基于公开密钥的鉴别(数字签名) • 用户A把自己的公钥发给B( 如需要,可发给所有相关的人) • 鉴别: A→B(或所有的人): B(或所有的人):
二、公钥密码的应用模式 基于公开密钥的鉴别过程
二、公钥密码的应用模式 • 鉴别+保密 • A用其私钥加密,得到数字签名,然后,再用B的公钥加密
几种新型的数字签名方案 1.高效可验证的安全数字签名 2.防止适应性攻击的门限签名 3.面向流信息的数字签名 4.不可否认数字签名
Hash函数 • 密码学上的Hash函数定义: 一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 1. 强碰撞自由的Hash函数 2. 弱碰撞自由的Hash函数 最可靠的Hash函数有: --基于分组密码算法的Hash函数. --系列Hash函数,如MD2、MD4和MD5算法. --美国政府的安全Hash标准(SHA-1).
不安全信道 Hash函数 Hash函数 签名者对h(x)签名 签名者验证y是否为H(x)的签名 不安全信道 使用Hash函数的数字签名方案
密钥管理内容 所有的密码技术都依赖于密钥。所以密钥管理本身是保证安全性的关键点。 • 密钥管理的目的: 维持系统中各实体之间的密钥关系,以抗击各种可能的威胁: – 密钥的泄露 – 秘密密钥或公开密钥的身份真实性丧失 – 未经授权使用 • 密钥管理的原则: –密钥难于窃取 – 密钥有使用范围和时效 – 密钥的分配和更换过程对用户透明,用户不一定要掌管密钥 • 密钥管理方法:因所使用的密码体制(对称密码和公钥密码体制)而异。 • 密钥生命周期:密钥管理是指在一种安全策略指导下密钥的产生、存储、使用,更新,删除等处理,涵盖了密钥的整个生命周期
密钥管理内容 • 密钥生命期: • 一个密钥使用太久会给攻击者增大收集密文的机会,有助于密码分析。
密钥的分配技术 1、对称密码体制的密钥分配(协议) 主要解决在不安全的通信信道中传递对称密钥的方法 • 密钥分配中心方式(KDC,Key Distributed Center) • 这是一种集中式分配体制,如Kerboros协议 • 这种模式需要每个用户与中心共享一个主密钥 设A要与B建立一个逻辑连接,需要用一个一次性会话密钥来 保护数据传输;A和B各自有一个与中心共享的主密钥: ⑴ A向KDC请求一个与B的会话密钥,为此,A向KDC发送A和B的标识及临时交互号(nonce), nonce可以是一个时间戳、计数值或随机数,它每次会话都不同,且对攻击者保密。 ⑵ 作为响应,KDC以用 加密的消息发给A,其中 和 是给A的; 和 是给B的。
密钥的分配技术 ⑶ A向B发送 ,B由此知道通话伙伴A,并知道 这些消息来自KDC ⑷ B发送 的密文给A ⑸ A发送 给B,其中 是 的一个函数,比如加1 • 密钥分配只包含前3步,后3步起了认证作用 • 最后两步保证了B收到的不是一个重放 • 对于大规模网络,可以使用层次式的KDC
密钥的分配技术 • 基于公钥密码体制的对称密钥分配 公钥密码体制未必在通讯中直接使用,但却很合适用于对称密钥分配 • 简单的密钥分配
密钥的分配技术 具有保密和鉴别能力的分配
密钥的分配技术 • Diffie-Hellman密钥交换(离散对数方法 ) 设:用户A和B,共享α和P,α是原本,P是大素数。 A、B各有一私有密钥,xA 和xB , • A、B分别计算YA和YB : • A,B交换计算结果 • 双方计算出共享的会话密钥为: • 不能避免中间人攻击 • 用户的密钥可事先公布,以减少一次交换操作。但从安全考虑,用户的密钥应临时生成。 • 严格讲是一个密钥交换协议,而不是分配协议
密钥的分配技术 • 智能卡方式 智能卡将RSA与Diffie-Hellman协议相结合,通过KDC分配可进行密钥管理,而平时使用密钥时不需要KDC。 • 整个系统有一个通信各方均使用的公开密钥,而对应的秘密密钥保留在发卡方,用户持有的是该密钥的一个变形。 设用户I的身份标识为整数IDi, 在RSA体制下,找出整数g为p或q的本原,计算: 将整数组(r,g,Pk,Si)存储在卡中发给用户(其中Si需要保密)
密钥的分配技术 • 需要通信时,基于Diffie-Hellman协议,由智能卡产生一个会话密钥。 用户I和用户J各自产生一个随机数Ri和Rj,分别计算Xi和Xj并连同自己的ID发送给对方: 双方分别计算出共享的会话或工作密钥( Ki=Kj) • 需要验证双方的身份时,利用RSA体制可以计算验证对方的ID
密钥的分配技术 2、公钥密码体制的密钥分配 公钥密码体制的密钥分配要求与对称密码体制的密钥分配要求有着本质的差别: 当分配一个公钥时,不需要保密性。然而,公钥的完整性或安全性是必需的。 • 公开发布(Public announcement) 用户将自己的公钥发给其它用户。一般将公钥附加在发送的消息上。 PGP用户就是使用这样的方法。 特点: 1. 实现简单 2. 容易假冒,假冒者冒充A并以A的名义发布公钥,则假冒者可 解读所有发向A的加密信息。
密钥的分配技术 • 公用目录表 (Publicly available directory) 建立一个公用的公钥动态目录表。由可信的实体建立、维护和发布。 • 需要可信任的授权机构维护着动态列表{用户名和用户的公钥} • 用户在授权机构注册其公钥(安全通道) • 用户可以更换其公钥 • 授权机构定期发布更新整个目录 • 用户可在网络上直接访问公共目录(安全通道),获取公钥 特点: 1. 有一定的安全性 2. 目录表容易受到攻击,如攻 击者获取管理员的密钥,就 可伪造目录表。
密钥的分配技术 • 公钥授权(Public-key authority) 在公钥目录表的基础上,进行更严密的控制。由一个公钥管理机构为用户建立、维护和发布公钥目录表。 特点: 1. 用户需可靠知道目录管理员的公钥 2. 有一定的安全性 3. 每一用户与其它用户通信,必须借助公钥管理机构, 公钥管理机构可能成为系统的瓶颈。 4. 总共七步,可以不用前四步。但用户应定期的申请 对方的公钥
密钥的分配技术 • 公钥证书(public-key certificates) 用户通过公钥证书相互交换自己的公钥,而不须与公钥管理机构联系,以解决前述的瓶颈问题。 •公钥证书由证书管理机构(CA)为用户建立。 •公钥证书的数据项: • 用户的公钥、用户身份标识和时间戳等。 • 所有数据项经CA的私钥签字后形成证书。 例如用户A的公钥证书 特点: • 泄漏私钥等价于丢失证书 • 证书的时间作为有效期
密钥的分配技术 亲自或通过某种安全认证 提供一个公钥并申请自己 的证书 公钥证书交换
公钥证明书 • 绑定实体姓名和相应的公钥. • 1) X.509证书。 • 2) 简单PKI证书。 • 3) PGP证书。 • 4) 属性证书。
基于X.509证书的PKI 1、完整PKI功能应该包括 • 认证机构(CA) • 注册机构(RA) • 公钥证书/证书库/目录 • 证书注销 • 密钥备份和恢复 • 自动密钥更新 • 密钥历史档案 • 交叉认证 • 支持不可否认 • 时间戳 • 客户端软件:负责申请证书,检索证书等功能,了解CA的策略 • 管理协议:用于管理证书的注册、 生效、发布和注销。协议包括PKIX CMP,消息格式,CMMF和PKCS#10 • 操作协议:方便用户检索验证证书和CRL.大多数情况下,操作协议与现有协议(如FTP,HTTP,LDAP和邮件协议等)共同合作
PKI基础 公钥密钥学(Public Key Cryptography) 解决密钥分发. 数字证书(Digital Certificate) 解决公钥和身份的真实绑定 目录服务(Directory Services) 建立全局/局部统一的证书管理
基于X.509证书的PKI 2、PKI提供的安全服务 • 认证:基于数字签名,签名作用于相应的数据之上 • 被认证的数据——数据源认证服务 • 用户发送的远程请求——身份认证服务 • 远程设备生成的challenge信息——身份认证服务 • 完整性:确认数据没有被修改 PKI采用了两种技术 • 数字签名:对数据的哈希值用私钥加密(签名),既可以提供实体认证,又可以保障被签数据完整性 • MAC(消息认证码):如DES-CBC-MAC或者HMAC-MD5 • 保密性:基于数字信封,即用公钥分发随机密钥,然后用随机密钥对 数据加密 • 不可否认性: • 发送方的不可否认 —— 数字签名 • 接受方的不可否认 —— 收条 + 数字签名
基于X.509证书的PKI • 在提供前面四项服务的同时,还必须考虑 • 性能 • 尽量少用公钥加解密操作,在实用中,往往结合对称密码技术 • 除非需要数据来源认证才使用签名技术,否则就使用MAC实现数据完整性检验 • 在线和离线模型 • 签名的验证可以在离线情况下完成 • 用公钥实现保密性也可以在离线情况下完成 • 离线模式的问题:无法获得最新的证书注销信息 • 证书中所支持算法的通用性 • 在提供实际的服务之前,必须协商一致的算法 • 个体命名 • 如何命名一个安全个体,取决于CA的命名登记管理工作
基于X.509证书的PKI 3、PKI基本组件 • RA(Registration Authority) 把用户的身份和它的密钥绑定起来。RA是CA的辅助机构。 • CA(Certificate Authority) PKI的主要组成部分:发证、验证、撤销和更新等 • 证书库/目录服务 证书保存、供公开访问查询,同时还提供证书撤销列表(CRL)
基于X.509证书的PKI • 注册机构RA • RA是PKI的扩展部分,协助CA完成证书处理任务。 • 1. 接收和验证新注册人的注册信息; • 2. 代表最终用户生成密钥对; • 3. 接收和授权密钥备份和恢复请求; • 4. 接收和授权证书吊销请求; • 认证机构(CA) CA是验证密钥主人的身份与公钥的关系的第三方可信机构。 1. 接受申请者的请求; 2. 验证并标识证书申请者的身份; 3. 用自己的私钥签发证书; 4. 证书材料信息(公钥证书序列 号等)的管理; 5. 检查证书的有效期限; 6. 确保证书的标识唯一性,防止 重名; 7. 发布并维护作废的证书表; 8. 对整个证书签发过程做日志记 录; 9. 向申请者发通知。
基于X.509证书的PKI • 证书的注销机制 由于各种原因,证书需要被注销, 比如,私钥泄漏、密钥更换、用户变化。 • PKI中注销的方法 CA维护一个证书作废列表(CRL) 通常由同一个发证实体签名。当公钥的所有者丢失私钥,或者改 换姓名时,需要将原有证书作废。 • 基于Web的CRL服务 •检查CRL的URL应该内嵌在用户的证书中 •可以提供安全途径(SSL)访问URL •返回注销状态信息 •其他的用法由浏览器决定
基于X.509证书的PKI 客户通过Web申请一个证书
基于X.509证书的PKI CA处理证书请求
基于X.509证书的PKI X.509数字证书 • X.509是X.500标准系列的一部分,在PKI的发展中,X.509起到了重要的作用. • X.509定义并标准化了一个通用的、灵活的证书格式. • X.509的实用性来源于它为X.509 v3和X.509 v2 CRL定义的强有力的扩展机制. • ISO/ITU,ANSI,IETF等定义的证书格式不完全相同
基于X.509证书的PKI • X.509v3证书 基本格式 • 证书版本号: 指明X.509证书的格式版本 • 序列号: 指定由CA分配给证书的唯一的数字型标识符。当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中,这也是序列号唯一的原因。 • 签名算法标识符: 用来指定CA签发证书时所使用的公开密钥算法和签名算法。因和最后字段重复,一般不用。 • 签发机构名: 用来标识签发证书的CA的X.500 DN名字。包括国家、省市、地区、组织机构、单位部门和通用名。 • 有效期: 指定证书的有效期,包括证书开始生效的日期和时间以及失效的日期和时间。每次使用证书时,需要检查证书是否在有效期内。 • 证书用户名: • 指定证书持有者的X.500唯一名字。包括国家、省市、地区、组织机构、单位部门和通用名,还可包含email地址等个人信息等
基于X.509证书的PKI • 证书持有者公开密钥信息: 包含两个重要信息: 证书持有者的公开密钥的值; 公开密钥使用的算法标识符。 • 签发人唯一标识符 • 实体唯一标识符 • 扩展域 X.509 V3证书 • 是在v2的基础上一标准形式或普通形式增加了扩展项,以使证书能够附带额外信息。 • 任何人都可以向一些权威机构,如ISO,来注册一些其他扩展,如果这些扩展项应用广泛,也许以后会成为标准扩展项 • 签名: 证书签发机构对证书上述内容的签名。 对这份文件中所有其他信息先做Hash报文摘要,然后用CA的密钥签名
基于X.509证书的PKI X.509证书示意图
基于X.509证书的PKI 4、密钥备份及恢复系统 为了防止用户丢失解密密钥以后密文数据无法被解密,从而造成数据丢失,PKI应该提供解密密钥的备份和恢复的机制。解密密钥的备份和恢复应该由可信机构来完成,如CA。
基于X.509证书的PKI 5、 CA密钥更新 保证透明性
基于X.509证书的PKI 目前,应用程序要使用PKI时,一般都采用厂家定义、提供的接口(API) 。由于各个厂家的接口都不一样,应用程序对多种PKI产品的支持就很困难。为此,可以分别为应用程序以及提供安全功能的PKI定义一些标准接口:其中产品API供各厂商遵循,而应用API则是由应用开发人员使用的。它们之间需要一些代码来实现相应的转换。应用API应该包含一些接口函数,通过应用API,应用程序开发人员只需要进行简单的调用,而不必关心复杂的加密算法等。 6、PKI应用 •基本的应用 –电子表格 – E-mail – Web浏览器 –服务器 –VPN •其他 – SSL/TLS – SET – WAP – IPSec –…… 要求使用安全服务的应用 应用API 产品API 能够提供安全功能的产品
客户端软件 PKI提供的核心安全服务包含: ▉认证 ▉完整性 ▉机密性
客户端---PKI认证服务的签名数据 • 三类数据的杂凑值 ▉被认证的一些数据 ▉用户希望发送到远程设备的请求 ▉远程设备生成的随机挑战信息
客户端---PKI完整性服务 ▉数字签名技术(同认证服务) 既可提供认证,也可以保证签名数据的完整性。如果签名通过了认证,接收者就认为是收到了原始数据(未经修改)。 ▉消息认证码或MAC:采用对称分组密码(DES-CBC-MAC)或密码杂凑函数(HMAC-SHA)
客户端---PKI机密性服务 ▉采用类似于完整性服务的机制 解释:A生成一个对称密钥,用对称密钥加密数据,将加密后的数据以及A的公(私)钥或用B的公钥加密后的对称密钥发送给B。
客户端---PKI的信任模型 ▉认证机构的严格层次结构:惟一根CA。 ▉分布式信任结构:把信任分布到两个或更多的CA上。 ▉Web模型: 许多CA的公钥被预装在正在被使用的标准浏览器上。 ▉以用户为中心的信任:每个用户都对依赖或拒绝哪个证书负责。 ▉交叉认证:将以前无关的CA连接在一起,从而使得它们各自主体群之间可进行安全通信。
参考文献 教材: 范红,冯登国,安全协议理论与方法,科学出版社。 参考教材: • 范明钰,王光卫,网络安全协议理论与技术 • 张玉请,莫燕,吴建耀,安全协议的建模与分析