网络银行基本知识(安全空间).ppt_第1页
网络银行基本知识(安全空间).ppt_第2页
网络银行基本知识(安全空间).ppt_第3页
网络银行基本知识(安全空间).ppt_第4页
网络银行基本知识(安全空间).ppt_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络银行安全一 风险分析 网络银行的安全并非仅仅由一两个安全要素构成的 而是由一系列紧密相关的安全要素组合而成的 这些要素是什么 为什么需要它们 也就是说 在我们探讨网络银行如何实现安全 怎么实现安全要素 之前 我们必须清楚的了解网络银行到底需要哪些方面的安全保障以及为什么需要他们 涉及哪些安全要素以及这些安全要素的作用 确定研究思路 研究网络银行的安全实现 必须先知道网络银行究竟需要哪些方面的安全要素 这些安全要素可以实现什么功能 或者说需要他们的原因 然后才是去分析具体如何实现这些安全要素 因此 风险分析将作为网络银行安全研究的切入点 是后续网络银行安全技术分析的基础 一是网络风险 网络银行是以互联网为载体的业务平台 而互联网的一个重要特性就是开放性 网络银行系统不仅需要具备处理正常业务请求的能力 还必须具备防范恶性数据攻击或服务攻击的能力 二是数据风险 这主要包括 数据在传输之前通信双方需要确认双方身份的真实性 数据传输过程中数据不被篡改 不被窃听 三是道德风险 道德风险主要是指由网络银行交易双方中的任何一方因抵赖引发的风险 如某方在交易结束后拒绝承认交易请求的情况 四是系统风险 这主要是指网络银行业务系统本身由于在设计开发过程中存在某种程度的漏洞而造成的风险 网络银行系统本质上是为取代柜员手工操作而开发的自助操作系统 而这种由手工到自助的过程需要运用程序对操作逻辑进行大量的抽象 而对操作逻辑的抽象往往不仅限于对正常操作逻辑的抽象 还包括对异常操作逻辑的抽象 但是 由于引发异常的原因可能是多种多样的 不可能在程序设计的初始阶段就预见到所有可能的异常 因此 网络银行系统的开发过程是一个逐步完善的过程 这就导致在不同阶段可能存在不同的系统异常从而引发系统风险 五是用户风险 由于网络银行系统在银行一侧的运算与操作是由程序逻辑来完成的 因此 用户风险主要体现在使用网银服务的用户由于对自己私有信息管理不当造成私密信息丢失或被盗 从而引发伪交易风险 对于上述风险 最后两个方面存在一定的不可控性 因此不作为本章的重点 而对于其他风险 我们一般通过如下过程进行安全风险控制 例如 通过防火墙等网络安全机制来控制恶性数据攻击和服务攻击 通过身份认证机制来实现数据通信双方的真实性 通过加密机制来防止数据传输被窃听 通过数字摘要机制来防止数据在传输过程中被篡改 通过数字签名机制来实现抗否认性 从而避免交易抵赖 对于网络银行的安全风险防范 还有两个必不可少的因素 它们是数字证书与CA 数字证书的作用 首先是身份认证 在电子商务领域目前大多采用证书认证方式 因此 数字证书是实现身份认证的必要因素 其次 由于数字签名只能证明签名方确实是使用某一私钥进行签名的 而必须通过数字证书来将私钥和用户身份进行绑定 防范用户否认使用过该私钥 从而保证用户无法抵赖 因此 数字证书也是实现抗否认性的必要要素之一 CA的作用 数字证书的签发方是CA 即认证中心 CA是产生 审核 管理证书的机构 是整个网路银行安全实现中必不可少的一个安全要素 在真实的网络应用中 尤其是基于Internet的网络应用中 上述安全要素不是孤立存在的 而是采用结合使用的方式来从多个方面保证电子商务交易的有效性 例如 交易双方会先进行身份认证与密钥交换 然后再进行加密 签名等操作 由于认证 加密 签名等可以对应多种组合机制 而每种机制中涉及的技术又有不同的算法 因此 如何在交易双方统一机制与算法就成了一个需要规范的问题 而由此就产生了相应的网络安全协议 如SSL与SET 安全协议是交易双方协商和实现安全控制机制的规范 是我们在现实中综合应用上述安全机制的具体方式 至此 我们分析了网络银行的各种安全风险 并概括的介绍了解决这些安全风险的安全要素 如加密 认证 摘要 签名等 还介绍了实现相关技术所依赖的辅助实体 如CA 以及辅助工具和辅助协议 如证书和SSL 需要明确指出的是 上述各种安全要素之间本身存在着一定的关系 理清这些关系有利于我们把握某些具体的技术方法在整个安全体系中的地位和作用 而理解了一个安全要素的地位和作用无疑将有助于我们把握学习的目的与意义 首先最底层是防火墙技术 它用来防范网络攻击方面的安全风险 其次是身份认证与密钥交换 任何安全通信必须以身份认证为起始点 在身份认证的基础上双方交换密钥信息 并按照交换的密钥来进行加密和解密操作 与加 解密平行的是数字摘要技术 它用来保证数据传输过程中不被篡改 即保证数据的完整性 这两个要素共同实现了与数据风险相关的控制能力 再上层是数字签名机制 数字证书与CA 他们主要作用是实现数字签名来进行抗否认性控制 防范道德风险 最后是SSL协议与SET协议 它们是离用户最近的应用访问点 应用程序通过提供用户接口来使用户可以通过应用程序来调用它们 从而使用由它们实现的安全机制并实现通信双方的安全控制能力 二 防火墙技术 1 认识防火墙 防火墙是采用综合的网络技术设置在被保护网络和外部网络之间的一道屏障 用以分隔被保护网络与外部网络系统 防止发生不可预测的 潜在破坏性的侵入 防火墙是不同网络或网络安全域之间信息的唯一出入口 仿佛是两个网络之间的一道关卡 2 防火墙的功能 根据企业的安全策略 例如可以设置一个策略来规定哪些内部服务允许外部访问 哪些外部人员被许可访问所允许的内部服务 哪些外部服务可允许内部人员访问 控制 通过分析 限制 出 入网络的信息流 防止非法信息流入及非授权信息流出 并抵御 通过分析 过滤 恶性攻击 防火墙还可以提供一些附加功能 例如为网络管理提供安全参考 为整个网络的安全运行提供完善的状态监控机制 例如它可以为网络管理人员提供如下信息 1 谁在使用网络 访问者的源IP 2 他们在网上做什么 所访问的服务类型 3 他们什么时间使用过网络 访问时间 4 他们在哪个网络节点得到了服务 所访问的目的地址 5 哪些流入或流出地数据请求没有发送成功 过滤以后的日志记录 3 防火墙的分类 A 包过滤型包过滤型产品是防火墙的初级产品 其技术依据是网络中的分组传输技术 网络上的数据都是以 包 为单位进行传输的 数据被分割成为一定大小的数据包 每一个数据包中都会包含一些特定信息 如数据的源 目标地址 TCP UDP源 目标端口等 防火墙通过读取数据包中的地址信息来判断这些 包 是否来自可信任的站点 一旦发现来自危险站点的数据包 防火墙便会将这些数据拒之门外 系统管理员也可以根据实际情况灵活制订判断规则从而动态调整对数据包的过滤方式 包过滤技术的优点是简单实用 实现成本低 在应用环境比较简单的情况下 能够以较小的代价在一定程度上保证系统安全 但包过滤技术的缺陷也是明显的 包过滤技术是一种完全基于网络层的安全技术 只能根据数据包的来源 目标和端口等网络信息进行判断 不对数据字段本身的内容进行分析和判断 它只对头部信息 就是关系信息的信息进行判断 从而无法识别基于应用的恶意侵入 因为应用数据内容是在数据字段中的 而不是在头部字段中的 如恶意的Java小程序以及电子邮件中附带的病毒 有经验的黑客很容易伪造IP地址 骗过包过滤型防火墙 B 代理型代理型防火墙也被称为代理服务器 它的安全性要高于包过滤型产品 并已经开始向应用层发展 代理服务器位于客户机与服务器之间 完全阻挡了二者间的数据交流 从客户机来看 代理服务器相当于一台真正的服务器 而从服务器来看 代理服务器又是一台真正的客户机 当客户机需要使用服务器上的数据时 首先将数据请求发给代理服务器 这个过程的实现需要事先配置客户机上的应用程序 以便应用程序知道代理服务器的存在 并将请求数据流发送给代理服务器而不是最终接收并处理服务请求的目标服务器 代理服务器在接收到由客户机传递来的数据包后 会继续向上解封装 并最终得到应用层数据流 代理服务器侦测 扫描及分析这一数据流 如果该数据流符合事先定义的数据特征 如满足某病毒数据特征或者某应用协议数据特征 那么代理服务器会过滤掉这一数据流 病毒过滤 或进行协议过滤 如过滤掉FTP协议中的PUT命令而只允许GET命令 否则它会分析并查询相关处理这一数据流的目标服务器信息 从而向目标服务器进行数据封装和数据发送 当请求经过处理被返回到代理服务器时 再由代理服务器将数据传输给客户机 由于外部服务器与内部客户机之间没有直接的数据通道 外部的恶意侵害也就很难伤害到企业内部网络系统 代理型防火墙的优点是安全性较高 由于不同的安全风险可能有不同的数据特征体现 而有些数据特征必须是通过较长的数据内容才能分析到的 而代理服务器可以针对应用层数据流进行侦测和扫描 这些侦侧和扫描可以为安全分析提供较多的数据内容 从而提供了更多的特征分析的入口 而不仅仅局限于端口 地址等网络层信息来进行分析 这对基于应用层的数据入侵和病毒传播提供了有效的控制机制 代理型防火墙的缺点主要有两个 一是对系统的整体性能有较大的影响 主要体现在数据分析和服务映射上 所谓服务映射是代理服务器建立的一个映射表 当处理结果返回后 它可以知道返回到某一端口的数据需要发送给哪个内网的主机及该主机的哪个端口 缺点二 代理服务器是以应用为单位实现的 客户端每需要增加一个被代理的服务类型 就需要在代理服务器上多配置一项代理服务 以便响应代理请求 而这样作大大增加了系统管理的复杂性 不仅仅与此 为了实现代理服务器的功能 在每个客户机上都需要针对不同应用设置相应的代理服务器信息 C 监测型监测型防火墙是新一代的产品 它能够对各层的数据进行主动的 实时的监测 在对这些数据加以分析的基础上 监测型防火墙能够有效地判断出各层中的非法侵入 监测型防火墙一般带有分布式探测器 这些探测器安置在各种应用服务器和其他网络的节点之中 不仅能够检测来自网络外部的攻击 同时对来自内部的恶意破坏也有极强的防范作用 据权威机构统计 在针对网络系统的攻击中 有相当比例的攻击来自网络内部 因此 监测型防火墙不仅超越了传统防火墙的定义 而且在安全性上也超越了前两代产品 但是 由于监测型防火墙技术的实现成本较高 也不易管理 所以目前在实用中的防火墙产品仍然以第二代代理型产品为主 基于对系统成本与安全技术成本的综合考虑 用户可以选择性地使用某些监测型技术 三 密钥交换 身份认证与加密理解密钥交换必须先了解密码学的一些基本知识 如对称加密与非对称加密的原理 因为密钥交换在这两种密码体制下存在不同的处理方式 例如 密钥交换可能被用于产生预共享密钥 也可能被用于产生会话密钥 而单钥机制下通信双方需要交换预共享密钥 这时最常用的密钥交换方式是DH密钥交换 而公钥机制下通信双方不需要交换预共享密钥 同时 无论单钥还是公钥机制都会交换会话密钥 保证一次一密 而单钥下交换会话密钥采用的密钥交换方式一般为预共享密钥交换方式 即通过已经预先共享的密钥加密会话密钥 而公钥机制下交换会话密钥多采用RSA密钥交换方式 即采用对方公钥加密会话密钥 从上面的举例分析中 我们可以看到 密钥交换是与密码学紧密相关的 因此介绍密钥交换之前 我们先介绍关于加密的一些基本知识 同时 由于身份认证是通过加密机制来实现的 无论单钥还是公钥系统 所以加密技术也是身份认证的基础 因此 我们可以通过分析加密过程与加密机制来了解与其相关的密钥交换和身份认证过程 1 什么是加密 加密技术就是在数据的发送方对数据以一定的算法进行运算 从而把原有的数据明文转化为不可识别的密文的技术 加密技术分为两类 即对称加密和非对称加密 1 对称加密在对称加密技术中 对信息的加密和解密都使用相同的密钥 也就是说一把钥匙开一把锁 这种加密方法可简化加密处理过程 对称加密算法的信息交换过程如下所示 A和B协商加密算法 A和B协商密钥 A用加密算法和选取的密钥加密明文信息 得到密文 A发送密文信息给B B用同样的算法和密钥解密密文 得到原始明文 对称加密模型采用特定的加密算法 其中最常用的是 DES 3DES 和IDEA DES 简单数据加密标准 64位分组 实际有效密钥长度为56位 IDEA 国际数据加密算法 64位分组 128位密钥长度三重DES 在DES基础上 收发双方用三把密钥进行连续加 解密 这种方法大大提升了密码的安全性 但是也要花更多的时间来完成加密处理和对每个密层进行解密 由于双发都必须拥有3个密钥 不能丢失其中任何一个 这样也造成了密钥管理上的困难 因此在现实中很少应用3DES 对称加密模型的不足 讨论思考 a 抗否认性缺陷 伪身份认证问题基于对称加密方式的数据通信本身并不能实现抗否认性 这是由于双方共享一个密钥 任何一方都有可能伪装成另一方 但却没有一种方式来鉴别伪装 也就是说当一方否认进行交易请求的时候 没有一种机制来确定到底是它抵赖 还是交易的另一方在伪造交易 事实上 在特定条件下通过对称密钥机制也可以实现签名 b 密钥管理的难度 如果每对用户使用不同的密钥 那么N个用户的网络就需要N N 1 2个密钥 c 密钥交换的难度 没有一个绝对安全的途径来分配密钥关于对称加密中的密钥交换 对称加密的通信双方需要对预共享密钥进行密钥交换 第二步 由于通信双方在无共享密钥的前提下无法实现安全的网络传输 因此 需要一种在公开环境下安全交换密钥的方式 Diffie Hellman算法是第一个公开密码算法 其安全性基于有限域上计算离散对数的困难性 首先A和B协商一个大素数n和g 这两个素数不必是秘密的 A选取一个大随机数x并且发送给B X gxmodn B也选取一个大随机数y 并发送给A Y gymodn A计算K Yxmodn gymodn xmodnB计算K Xymodn gxmodn ymodn 对于模运算 存在公式 ramodq bmodq rab modq因此K K gxymodn 所以双方可以获得一个共享的密钥 当窃听者获得Y和X时 由于很难得到相应的x y 所以并不能获得K 从而保证了双方密钥的安全交换 关于对称加密条件下的身份认证 对于对称加密而言 由于通信双方共享一个密钥 因此 如果一方可以正确解密得到的密文 那么就说明发送方确实是采用了共享密钥进行加密 而共享密钥只有合法的发送方有 所以证明当前发送方身份是合法的 2 非对称加密 公开密钥加密产生背景 在对称密钥体制中 加密运算与解密运算使用同样的密钥 通常 使用的加密算法比较简便高效 密钥简短 破译也有一定困难 但是 在公开的计算机网络上安全的传送和保管密钥是一个严峻的问题 首先 它要求提供一条安全的渠道使通信双方在首次通信时协商一个共同的密钥 2 非对称加密 公开密钥加密产生背景 直接面对面协商是不现实的 所以双方可能会通过非安全的手段来进行协商 一旦被第三方用非法手段获取密钥 其后果可想而知 再者 密钥的数目将快速增长以至于难于管理 所以很难适应开放环境下的巨量处理 为了解决信息公开传送和密钥管理问题 非对称加密模型应运而生 2 非对称加密 公开密钥加密定义 非对称密钥模型也称为公钥模型 它使用两个不同的密钥 一个用来加密信息 另一个用来解密信息 用户把其中一个密钥公开 该密钥称为公开密钥 简称公钥 另一个密钥保密 该密钥也称私钥 公钥与私钥是数学相关的 根据应用的需要 发送方可以使用发送方的私钥 接受方的公钥 或者两者都使用 以完成某种类型的功能 2 非对称加密 公开密钥加密应用 身份认证与加密 通常 可以将非对称密钥系统的应用分为三类 加密 解密 发送方用接收方的公钥加密报文 认证 发送方用自己的私钥加密报文 加密与认证 发送方私钥加密然后接收方公钥加密幻灯演示 非对称加密与认证 关于预共享密钥交换从上面的应用分析中 我们可以看出 非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信 它不同于对称加密模型 通信双方需要预先建立一个预共享密钥 因此非对称加密模型不需要通过某种密钥交换方式 如DH 来进行预共享密钥交 算法 RSA算法是非对称加密领域内最著名的算法 RSA公开密钥系统是由R Rivest A Shamir L Adleman三个人于1977年提出的 RSA的取名就是由三个人的名字而来 RSA的安全性依赖于作为公钥的大数N的位数长度 为保证足够的安全性 一般认为 个人应用需要用512位或768位的N 公司应用需要用1024位的N 极其重要的场合应用2048位的N RSA算法产生密钥对的过程如下 选择两个大素数 p和q 计算 n p q然后随机选择加密密钥e 要求e和 p 1 q 1 互质 最后 利用Euclid算法计算解密密钥d 满足e d 1 mod p 1 q 1 其中n和d也要互质 数e和n是公钥 d是私钥 两个素数p和q不再需要 应该丢弃 对于如何运用公钥加密以及运用私钥解密 即加密和解密的具体运算方式 以及对加解密等数学运算的验证过程在这里我们就不作过多的介绍了 详细内容感兴趣的同学可以参考 公钥基础设施PKI与认证机构CA 主编 关振胜 P43页 CFCA金融系统技术培训丛书 密码学与网络安全技术基础 主编 汤惟 P50页 普通高等教育规划教材 四 数字摘要与报文鉴别码MAC前面简单介绍了一下加密与认证的过程 我们说加密与认证能够实现身份鉴别和私密控制 但是如果密文在数据传输过程中发生错误 如被第三方篡改 这种情况下 接受方是无法得知错误发生的 传输层与数据链路层用于检错的参数也会被第三方更改 假设第三方无法破译密文 他可以对截获的密文直接进行篡改 然后在传输层产生新数据段并生成头部校验字段 然后在数据链路层基于新的内容产生冗余校验码 再生成比特流发送给接收方 这样接受方由于不能通过传输层与数据链路层的检错机制来发现错误 所以不会知道这是被篡改的密文 而会像接收正常密文一样对其进行解密处理 根据错误程度不同 错误处理可能导致双方正常通信失败 也有可能导致一定的经济损失 为了解决上述问题 人们采用数字摘要来作为防范措施 什么是数字摘要呢 数字摘要一般由散列函数产生 散列函数是单向Hash函数的一个变种 单向Hash函数是现代密码学中心 Hash函数保证从预映射的值很容易产生H值 但要产生一个预映射的值使其H值等于特使值却很困难 好的H函数是无冲突的 难于产生两个预映射值 使它们的H值相同 单向Hash函数一般在运算时需要添加参数来对报文内容进行分散 但散列函数不需要添加参数 只要有相同的算法即可 它以一个不定长的报文作为输入 产生一个定长的数字摘要作为输出 数字摘要是报文中所有比特的函数值 任意比特的变化都会使数字摘要改变 数字摘要算法 1 MD5 MessageDigestv5 MD5数字摘要算法于1991年发表 它采用散列函数将需加密的明文按512比特进行分组 分组摘要成长度为128比特的密文 数字摘要有固定的长度 不同的明文摘要成密文 其结果总是不同的 而同样的明文摘要必定一致 随着密码分析技术的发展 MD5可能受到强行攻击 因此需要具有更长的散列值和更强的抗密码分析攻击的散列函数来代替MD5算法 由此产生了SHA 1 2 安全散列算法 SHA 1 SecureHashAlgorithm 由ANSI和美国国家安全局共同设计 SHA 1将输入报文以512比特为分组进行处理 输出160比特的数字摘要 报文的总体处理过程和MD5的结构相同 但SHA 1和MD5的最大区别在于其比MD5摘要长32比特 这使得SHA 1对强行攻击的强度更大 但由于SHA 1的循环步骤比MD5多且要处理的缓存大 所以SHA 1运行的速度比MD5慢 采用报文 摘要的方式可以防止中间截取报文的第三方随意篡改报文 但是 如果截取方可以解密报文 那么他便可以得到明文与摘要的一个组合 进而很容易分析明文部分和摘要部分 并对明文加以篡改 然后对篡改后的明文重新进行摘要运算 最后再将这些信息进行组合并通过加密发送给接收方 接收方根本不会知道第三方对数据进行了篡改 对于上述问题 人们发现 如果能有一种方法使第三方无法产生正确的摘要 那么即使第三方破译了密文 改变了明文 由于他进行摘要运算的结果始终不会与接收方进行摘要运算的结果相同的话 那么他的篡改也会被接受方识别为无效数据 从而防止篡改成功 为此 人们设计了报文鉴别码 MAC 什么是报文鉴别码 MAC MAC是报文和密钥的函数 它假设通信双方A和B共享一个密钥K 即MAC密钥 注意MAC密钥与加密密钥并不相同 关于他如何产生如何共享我们在下一个主题中会进行补充说明 当A要发送报文到B时 先计算MAC 然后将报文加上MAC后发给B B用相同的密钥对报文进行相同的计算可以得到一个MAC 并与收到的MAC比较 从而判断对方身份的合法性 由于MAC在发送方和接收方的运算完全相同 它采用不可逆函数 从而保证比加密函数更难破解 当报文被第三方截获的后 虽然他可以破译加密的密文 得到明文与MAC 但若想更改明文 则必须对新产生的明文重新计算MAC 然后替换掉原MAC 由于MAC的计算过程不同于摘要过程 仅仅以报文作为输入参数 还需要双方共享的MAC密钥作为输入参数来计算MAC值 而截取方由于很难通过单向HASH函数 不可逆函数 来得到MAC密钥 因此他无法生成新的MAC值 从而无法对截获的报文进行有效伪造 通过在报文传输过程中加入报文鉴别码而不是简单加入摘要可以实现通信双方在加密密钥被破解的条件下 其通信数据也不会被第三方伪造 但是 由于加密密钥的破解 第三方可以对通信进行窃听 五 关于密钥交换的补充前面我们说了 密钥交换适用于两个场合 一是用于分配预共享密钥 这主要用在对称密钥系统下 二是用于交换会话密钥 在对称和非对称密钥系统下都需要使用 对于预共享密钥的密钥交换方式 我们在前面已经介绍了相关的DH密钥交换方式 下面我们主要介绍一下对会话密钥进行密钥交换 什么是会话密钥呢 无论是单钥体系还是公钥体系对信息的直接加密都存在一个安全缺陷 那就是存在分析漏洞 原因在于每次加密采用的均是同一个密钥 共享密钥 对方公钥 如果存在中间人攻击 只要不断采用明文测试 密文截取的方式就可以破解密码系统 获得密钥 所以采用一次一密的方式 在每次会话时生成不同的会话密钥 是避免上述攻击的一个有效方法 但是 这需要在每次会话初始化的时在通信双方进行实时的密钥分配工作 即会话密钥交换 而如何产生和交换会话密钥正是密钥交换需要解决的问题之一 密钥交换方式 对于对程加密模型 最常用的会话密钥交换方式是采用预共享密钥来进行密钥交换 而对于非对称加密模型则主要采用RSA方式来进行会话密钥交换 两者的过程都很简单 对于前者 通县双方由于已经预先分配了一个预共享密钥 那么双方中的任何一方可以随机产生一个密钥 会话密钥 然后用预共享密钥对会话密钥加密 然后发送给另一方 对于后者 首先通过任一方来随机产生一个会话密钥 产生方用接受方的公钥加密这个会话密钥 然后发送给对方 会话密钥的处理通过密钥交换 通信双方可以对某一次通信会话产生专用的会话密钥 而产生的这个会话密钥在实际应用过程中会通过伪随机函数进行随机处理 消除这个会话密钥与预共享密钥 对应通过单钥机制生成会话密钥的场合 或者与私钥 对应通过公钥机制生成会话密钥的场合 之间可能存在的相关性 运算后得到的新的会话密钥叫主密钥 生成主密钥后 主密钥会再通过一个特殊的函数运算得到一个密钥组 密钥组中会包括本次会话的加密密钥 MAC密钥等内容 而这些加密密钥和MAC密钥才是真正在通信过程进行加密运算和MAC运算时使用的密钥 六 数字签名 1 什么是数字签名数字签名是信息发送者用其私钥对传输报文的特征数据 数字摘要 进行 运算 如RSA签名采用加密操作而DSA签名采用其他性质的函数操作 操作 并将结果与报文一起经过正常的加密过程发送到接收方 在接受方 接收者会通过正常的身份认证和解密过程得到报文及 运算 结果 接受方通过计算得到报文摘要 并结合发送方的公钥来验证发送方的签名的过程 2 数字签名的作用 A 保证信息是由签名者自己签名发送的 签名者不能否认或难以否认 B 保证信息自签发后到收到为止未曾作过任何修改 签发的文件是真实的 完整的 3 数字签名的方式常用的签名方式是RSA数字签名和DSA数字签名 我们先来介绍一下RSA数字签名的过程 然后再来看DSA数字签名 RSA数字签名过程 1 发送方首先用散列函数从原文得到数字摘要 然后采用公开密钥体系用发送方的私钥对数字摘要进行加密 形成了数字签名 然后将其附在要发送原文的后面 2 发送方选择一个秘密密钥对组合体加密 并经过网络传送密文到接收方 3 发送方用接收方的公开密钥对秘密密钥加密 RSA密钥分配 并通过网络把加密后的秘密密钥传送给接收方 4 接收方使用自己私钥对秘密密钥进行解密 并得到秘密密钥的明文 5 接收方用秘密密钥对文件进行解密 得到报文和数字签名 6 接受方用得到的明文和散列函数重新计算数字摘要 并用发送方公开密钥对数字签名解密 得到发送方计算的数字摘要 比较两个数字摘要 若相同 说明文件在传输过程中没有被破坏 DSA签名过程DigitalSignatureAlgorithm DSA 签名和RSA签名在处理过程上基本一致 只是在签名方法上有所不同 RSA只是用发送方的私钥对摘要进行加密就形成了签名 而验证签名也只是通过公钥对其解密 然后与接受方自己计算的摘要进行比较来验证 但是DSA签名并不是通过加密的方式来形成签名 DSA签名的具体算法如下所示 算法中应用了下述参数 其中x x q 为发送方的私钥 而 p q g y 为公钥 其中 p L比特长的素数 L为64倍数且512 L 1024 q p 1的160bits的素因子 g g h p 1 q modp y y g xmodp H x 为单向HASH函数 采用的算法为SHA 签名及验证协议如下 1 发送方产生随机数k k q 2 发送方计算r g kmodp modqs k 1 H m xr modq签名结果是 m r s 3 接收方验证时计算w s 1 modqu1 H m w modqu2 r w modqv g u1 y u2 modp modq若v r 则认为签名有效 对于签名和验证的数学论证我们在这里就不作过多的引述了 有兴趣的同许可以参考相应的密码学书籍 4 数字签名的功能分析前面我们说了 数字签名可以实现 1 保证信息是由签名者自己签名发送的 签名者不能否认或难以否认 2 保证信息自签发后到收到为止未曾被篡改 签发的文件是真实的 完整的 下面我们结合RSA签名来分析上述功能 对于第一点 由于RSA签名是用私钥对摘要加密 而私钥只有合法的拥有者才有 任何第三方不会知道这个私钥 因此 如果接受方可以通过公钥解密 则说明对方持有的私钥是正确的 即为法定的拥有者 无法抵赖 对于第二点 由于被私钥加密的内容是用于证明完整性的摘要 因此任何第三方在篡改报文后 尽管可以生成新的摘要信息 但是由于它无法获知原发送方的私钥 所以就无法用其私钥对新的摘要进行加密 即无法伪造签名 只有用原发送方私钥对新摘要加密的结果才会在接收方被还原 用公钥 为摘要信息并得到验证 因此任何人对报文的篡改由于无法伪造签名最终都会被接收方识别 这就实现了报文的完整性 七 数字证书 1 数字证书产生的原因 对数字签名和公开密钥技术来说 都会面临一个公开密钥分发的问题 即如何把一个用户的公钥以一种安全可靠的方式发送给需要的另一方 这就要求管理这些公钥的系统必须是值得信赖的 在系统中 如果A想要给B发送一些加密数据 A需要知道B的公开密钥 如果B想要检验A发送来的文档的数字签名 B需要知道A的公开密钥 所以必须有一项技术解决公钥与合法拥有者身份绑定的问题 假设有一个人自称某一个公钥是自己的 必须有一定措施和技术来对其进行验证 数字证书是解决这一问题的有效方法 2 数字证书的定义数字证书简单地说就是网络通信中 标志通信各方身分信息的一系列数据 其作用类似于现实生活中的身份证 它是用电子的手段证实用户的身份和对网络资源访问的权限 证书通常是一个签名文档 标记特定对象的公开密钥 数字证书由认证中心CA签发 认证中心类似于现实生活中公证人的角色 它具有权威性 是一个普遍可信的第三方 当通信双方都信任同一个CA时 两者就可以得到对方的公开密钥 从而实现加密验证及签名验证等相关安全操作 3 数字证书的作用 数字证书本身是一种身份标识 由于数字签名需要通过数字证书中绑定的公钥来签名验证 因此数字证书是实现抗否认性和检验数据完整性的安全要素 同时 由于在公钥密码体制下 身份验证是通过公钥来验证的 因此身份认证的过程也依赖于证书机制 证书也是实现身份认证的安全要素 所以 数字证书的作用可以概括为 配合实现身份认证 配合实现抗否认性 配合实现完整性校验 4 数字证书的类型A 个人证书 为个人用户提供凭证 以帮助其个人在网上进行安全交易操作 通常它是安装在客户端的浏览器里 B 企业证书 它通常为网上的某个WEB服务器提供凭证 企业可以应用具有数字证书的站点来进行安全电子交易 服务器会向客户端WEB浏览器提供证书认证并提供基于公钥密码系统的加密及数据完整性 后面我们会以实验的方式让大家具体了解如何为网络银行的Web服务器申请证书 发放证书 安装证书等 并演示客户端如何与服务器建立安全的信息通道 C 软件证书 它通常为Internet中被下载的软件提供凭证 该证书用于与微软公司Authenticode技术结合的软件 以使用户在下载软件时获得所需信息 八 CA认证中心 1 什么是CACA又称为证书授证 CertificateAuthority 中心 作为电子商务交易中受信任和具有权威性的第三方 承担公钥体系中公钥的合法性检验的责任 CA为每个使用公开密钥的客户发放数字证书 数字证书的作用是证明客户合法拥有证书中列出的公开密钥 CA的数字签名使得第三者不能伪造和篡改证书 它负责产生 分配并管理所有参与网上信息交换各方所需的数字证书 因此是安全电子信息交换的核心 2 CA的作用证书的颁发 认证中心接收 验证用户的数字证书申请 将申请的内容进行备案 证书的更新 CA定期更新所有用户的证书 或根据用户请求来更新用户证书 证书的查询 1 证书申请的查询 根据用户的查询请求返回当前用户证书申请的处理过程 2 用户证书的查询 由目录服务器完成 根据用户请求返回适当的证书 证书的作废 认证中心通过维护证书作废列表来完成证书作废操作 证书的归档 作废的证书不能简单的丢弃 因为有时可能需要验证以前的某个交易过程中产生的数字签名 这时就需要查询作废的证书 所以CA应具备管理作废证书和作废私钥的功能 3 CA的机构设置CA主要包括两大只能部门 一是审核授权部门 RA RA是数字证书的申请注册 证书签发和管理机构 直接面向用户 负责用户身份申请审核 并向CA申请为用户转发证书 另一个是证书操作部门 CP 它负责承担证书签发 审批 废止 查询 证书 黑名单发布 密钥恢复与管理 证书认定和政策制定 为已授权的申请人制作 发放和管理证书 并承担因操作运营错误所产生的一切后果 4 实验演示 A 建立CA服务器 B 为企业用户生成证书申请 C 在CA上处理申请并发放证书 D 企业安装证书 E Web服务器激活证书认证及加密通道幻灯演示 CA的建立及证书操作 九 SSL协议复习什么是套接字 在前面介绍网络的部分我们给大家介绍了什么是socket 简单的说socket就是网络驱动层提供给应用程序的编程接口 应用程序将一段信息写入Socket中 然后网络驱动程序将读取Socket中的信息并将这段信息通过网卡发送到下一跳的网络设备 最终经过路由交换过程这个段信息会被发送到目的主机的网卡 然后再由目的端的网络驱动程序将数据读取到一个已经注册的socket中 该socket绑定的端口号和IP地址与接收到的数据包中的目的IP和端口号一致 目的端的应用程序会监听它宣告的socket 从而读取数据并进行应用处理 关于应用程序 socket 网络驱动 网络设备之间的关系和节点间数据交换的过程可以用下图来表示 图中 HostA上的程序A将一段信息写入Socket中 Socket的内容被HostA的网络管理软件访问 并将这段信息通过HostA的网络接口卡发送到HostB HostB的网络接口卡接收到这段信息后 传送给HostB的网络管理软件 网络管理软件将这段信息保存在HostB的Socket中 然后程序B才能在Socket中阅读 套接字的建立与使用 应用程序如何建立套接字 如何从套接字中读取及向套接字传递数据呢 应用程序对套接字的调用和控制是通过编程语言提供的套接字对象实现的 当客户程序需要与服务器程序通讯的时候 客户程序会创建一个socket对象 Socket类有几个构造函数 两个常用的构造函数是Socket InetAddressaddr intport Socket Stringhost intport 在创建了Socket对象后 就可以通过调用Socket的getInputStream 方法获得一个输入流用来接收从服务程序传送来的信息 也可调用Socket的getOutputStream 方法获得输出流来发送消息 在读写活动完成之后 客户程序调用close 方法关闭流和套接字 下面是一个在服务器程序中创建Socket对象的例子 其中服务程序主机地址为198 163 227 6 端口号13 服务程序创建完Socket对象后还通过getInputStream 方法创建了一个输入流对象 最后关闭该输入流及Socket Sockets newSocket 198 163 227 6 13 InputStreamis s getInputStream Readfromthestream is close s close 什么是安全套接字套接字是应用程序和通信硬件的一个接口 应用程序和网络驱动层之间的数据交换都需要通过套接字来实现 早期的Internet没有就数据安全传输做特殊设计 导致它具有非安全 无加密 无认证 特性 于是人们开始考虑通过套接字来弥补Internet在安全上的不足 因为套接字是应用之间建立通信的必经之路 因此可以将它作为控制应用安全的起点和终点 普通的套接字并没有定义任何的安全机制 所以人们为网络驱动层开发了能够提供安全机制并实现安全控制的安全套接字 相应的 各种编程语言也就提供了与之相对应的安全套接字对象 这些安全套接字对象提供的方法可以实现数据在进行通信传输前的加密 认证工作 从而赋予了TCP IP网络未有的安全特性 什么是SSL协议安全套接字对象的方法 如加密 验证 签名等方法 的实现需要在程序运行时动态协商加密算法 密钥交换方法 校验方法安全选项 为了在通信双方实现上述内容的安全的协商 通信双方需要采用一个特定的协议来规范这一协商过程 而这个协议就是SSL SSL向基于TCP IP的客户 服务器应用程序提供客户端和服务器端的关于加密 认证 完整性等方面的安全参数的协商服务 应用程序通过SSL协议来协商出一些安全参数以供程序中的安全套接字对象使用 从而实现安全的应用会话 SSL协议的基本构成SSL的体系结构包括两个子层 高层是SSL握手协议层 底层SSL记录协议层 SSL记录协议层由SSL记录协议构成 它的作用是为高层协议提供基本的安全服务 SSL握手协议层由SSL握手协议 SSL密钥更新协议 SSL报警协议组成 它们用来管理和控制SSL的安全会话 其中最主要的是SSL握手协议 下面我们简单介绍一下SSL握手协议与SSL记录协议的功能 握手协议与记录协议SSL握手协议用于在通信两端协商安全会话方式 想理解SSL提供的安全会话方式 首先需要理解SSL能够实现哪些安全机制 因为安全会话方式实际上就是这些安全机制的组合 那么SSL可以实现哪些方面的安全控制呢 或者说它提供对上述哪些安全要素的支持能力呢 SSL协议的设计目的是在通信两端建立加密的 有完整性保障的 有身份认证能力的安全会话 因此它可以支持加密 完整性检验 身份认证等安全要素 由于各安全要素涉及的算法或方式有很多 同时对于加密来说 还会涉及对用于建立会话密钥的密钥交换方式的选择 因此 在SSL会话通信的初始点 通信双方必须就一些安全选项达成一致 因此 握手协议所作的第一件事就是协商算法和及密钥交换方式 并协商是否进行身份认证 如果采用身份认证的话 通信的双方或者任一方还会传递证书 在这一步中 通信双方的行为可以近似的理解为以下过程 A说 我想和你安全通话 我这里支持的对称加密算法有DES RC5 密钥交换算法有RSA EC DH 摘要算法有MD5和SHA 我要求证书认证 B说 我们用DES RSA SHA这对组合好了 这里是我的证书 里面有我的名字和公钥 你可以用来验证我身份 接下来第二步 握手协议会让通信双方按照协商的密钥交换方式建立一个预主密钥 例如在上面的协商中 双方选择的密钥交换方式为RSA 那么第二步中 通信双方的行为可以近似的理解为以下过程 A检查B的证书无误后 产生一个预主密钥 然后用B的公钥加密 RSA密钥交换 封装成clientkeyexchange消息 发送给B B接收到消息 并用自己的私钥解密 得到用于会话的预主密钥 接下来握手协议就要求通信双方对预主密钥进行随机化处理 通过伪随机函数 从而使通信双方都计算出一个主密钥 当握手协议结束时 握手协议中生成的主密钥 选择的密码算法等信息均被传给SSL的记录协议 由记录协议生成加密算法所需要的加密密钥以及MAC算法所需要的MAC密钥 而这些密码参数则是由主密钥 客户随机数和服务器随机数等通过伪随机函数PRF产生的 即 K bk PRF master secret expansion label seq num server random client random 式中K bk是指Key block 即密钥组 它包括加密算法的加密密钥 MAC密钥和初始矢量 最后 通信双方会按照协商的加密算法和得到的加密密钥 按照协商的MAC算法和MAC密钥对报文进行处理 从而实现数据传输的私密性和完整性 SSL协议的应用实例 以下是一个通过应用SSL协议进行交易过程 用户甲希望在网上购买IBM公司的WebSphere应用服务器软件 他来到了IBM网上直销的店铺 首先将通过网页链接来到该网站中启用了SSL服务的安全网页 对于这个页面 URL的协议部分是 HTTPS 而不是 HTTP 浏览器与服务器接下来将进行握手协议 握手的第一阶段是客户机与服务器进行安全协商及身份认证 在这个阶段甲得到IBM公司的证书 该证书是经第三方权威机构签名的 证书中的内容主要是IBM的公钥 由于客户的浏览器能知道CA的公钥 从而看到第三方的数字签名 相应地就验证了IBM为一家合法公司 第二阶段 浏览器中的SSL软件按照双方在上一步中协商的密钥交换方式将随机产生的会话密钥发送给服务器 如果前面双方协商的密钥交换为RSA交换方式 那么用户甲将用从证书中获得的IBM的公钥对这一会话密钥加密 并传给IBM的网站服务器 由于会话密钥只能由IBM公司的私钥解密 这就证实了服务器是属于IBM的 在进行了实际的身份验证之后及密钥交换后 SSL协议软件会将第二步中产生的会话密钥传递进行处理并产生用于加密的密钥和用于校验完整性的密钥 并分别采用这两个密钥配合第一步协商好的加密算法和完整性算法来对数据报文进行操作并发送给另一方 从而实现通信的私密性和完整性 以上过程说明了三个问题 1 确有一家叫IBM的合法公司 并且与客户交互的WEB服务器确实属于IBM公司 2 客户与IBM公司之间的交易通信是有加密保护的3 客户与IBM公司之间的交易通信是有完整性检测保护的但是 上述过程也存在三个方面的漏洞 1 用户无法得知IBM公司接收信用卡支付是否得到授权 2 在接受到信用卡帐号等机密信息并结束交易后 通过什么方式处理这些机密信息 因为SSL除了为传输过程提供保证外 对交易结束后的处理无任何约束 已经发现大量 黑客 通过商家服务器窃取拥护信用卡帐号及密码 对于这个问题 SSL本身解决不了 但我们将发现 这个问题最终在SET协议中得到解决 3 SSL协议没有数字签名功能 即没有抗否认服务 若要增加数字签名功能 需要在协议中打 补丁 这样做 使用于加密的密钥又同时用于数字签名 这在安全上存在漏洞 当然后来的PKI PublicKeyInfrastructure 公钥基础设施 体系完善了这些措施 即双密钥机制 将加密和数字签名密钥二者分开 成为双证书机制 形成了PKI完整的安全服务体系 十 SET协议SET协议的产

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论