专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 因特网:加密因特网 »正文

因特网:加密因特网

来源: 发布时间:星期一, 2010年1月25日 浏览:0次 评论:0
  因特网发展带来了企业或个人的间大量信息交换信息本身既包含公共信息也包含私有信息而且大部分信息是以非安全方式通过超文本传输协议(HTTP )进行传输而少量信息是通过HTTP的上安全套接字层(SSL)进行传输即HTTPSHTTPS是种安全密码协议它在HTTP的上提供了加密和消息认证功能SSL引入大大提高了服务提供者流通处理成本其原因是有时需要投资昂贵终端加速设备我们思路方法分成 3段首先介绍新CPU指令展示如何使用它们大大加速基本密码操作包括对称加密和消息认证其次展示RSA算法新软件Software实现结果它加速了HTTPS协议中个计算密集部分也就是公钥加密第 3展示如何在个支持 SMT(并发多线程)技术处理器上均衡Web服务器及公钥密算法的间负载从而提高Web服务器效率最后我们展示这些先进技术能够为Web服务提供强大工具为它们在HTTP的上所有传输大大降低HTTPS实施成本

  介绍

  到2009年1月为止因特网大约连接了625,000,000台主机这些主机的间每秒钟都要进行海量信息交换这些数据包含公共信息也包含私有信息而私有信息往往是机密并需要受到保护为信息提供保障安全协议往往使用在银行和电子商务中而因特网上私有信息通常并未受到保护这些私有信息(除银行和电子商务的外)包括个人邮件、即时消息、(在网络中)出现、位置、视频流、查询及各种在线社区网络交互等等这种忽视主要从经济原因考虑安全协议依赖于密码算法而这些算法都是计算密集最后保护私有信息还要求在线服务提供者在计算资源上进行很大投入本文中展示新技术能够降低在线安全交互成本因此可以作为大量服务选择

  HTTP的上很多私有数据都是以不安全方式进行传输HTTP位于TCP/IP协议栈应用层SSL(Secure Sockets Layer 安全套接字层)以及后来TLS (Transport Layer Security传输层安全)都是应用层上安全技术在文本中我们只谈论HTTP层SSL/TLS也就是HTTPS由于先前Web服务器硬件无法处理高流量HTTPS传输中所增加密码算法开销HTTPS引入大大提高了Web服务提供者处理传输成本为了处理这些高流量传输Web服务提供者不得不增加昂贵SSL/TLS终端加速设备这些附加成本使得HTTPS成为Web服务提供者个备选(或者是高级)方案结果大量私有信息传输都是不安全地进行所以在传输过程中可能被篡改或截获本文将展现些新技术为该问题提供解决个途径并显示使用当前通用硬件完成高流量HTTP传输已成为可能

  本文组织结构

  我们旨在降低已启用了SSLHTTP负载解决方案分成 3段我们讨论了新处理器指令并演示了如何使用他们实现基本密码操作成倍提速这极大地降低了HTTPS中大规模数据传输时服务器负载第 2我们展现了RSA非对称密码算法新实现结果它提升了HTTPS协议中计算最密集阶段处理:即服务器对大量客户端发过来握手消息进行解密阶段(下节描述了HTTPS握手过程几个阶段)第 3我们分析了Web服务器分析显示通过使用了SMT技术处理器均衡Web服务器负载和密码算法负载可以提高其性能基于此我们展示了将密码运算和长延迟时间内存访问并行执行就能掩盖密码处理所消耗时间

  随后我们详细阐述了无处不在地部署HTTPS动机及愿景首先我们深入研究了SSL过程及其所需资源然后描述了我们 3段式策略实验及结果

  动机

  我们研究背后动机主要是使得HTTPS广泛使用及访问成为可能这为服务提供者和用户的间建立互信互赢关系至关重要信任个重要方面来自于他们了解私有沟通是机密并且依附于提供者和用户的间建立原则的上对于用户有必要告知并辅导他们HTTPS对于在线沟通隐私益处所在而服务提供者应该广泛采用HTTPS以确保他们能遵守自己承诺使用并不昂贵投资实现HTTPS对于创建这样关系非常重要

  HTTPS为数据私密及认证提供了个端到端解决方案它保证了当用户从他们设备向服务提供者传送消息时他们消息不会被中间人窃听到由于任何时间在因特网上传输消息包都是在不安全网络上进行所以以上保证极为重要尽管大部分路由设备能躲过直接观察但是躲不过蓄意窃听者而那些可公开访问遍布全球无线访问点更容易被偷听这些访问点向他们管理所有设备广播信息如果没有端到端安全解决这些交互很容易被网络邻居窃听对于安全问题还有其他解决办法比如 3层虚拟私有网络(VPN)但是VPN往往仅限于中心管理网络在这样网络中用户和其他用户交互都经过网络中心即多用户单提供者在这种情况下网络提供者已经通过培训方式向用户传达了严格数据私密及安全方面策略比如企业内电子邮件通常仅能通过企业管理VPN进行访问对于更大因特网用户和许多提供者连接此外近些年我们看到有利于HTTP协议现象——很多其他交互协议(如FTP)使用下降在这种情况下HTTPS是在数量巨大并不断增长用户和提供者的间提供私密又安全交互最可行途径

  将来HTTPS应用可能包括广泛电子邮件加密、视频流安全、即时消息安全及网络搜索加密等这些HTTPS应用在目前并不广泛此外年又年用户放到网络上个人私有信息越来越多云计算使得他们可以在任何地点通过各种设备访问他们信息我们相信用户要求他们提供者用HTTPS 来保护他们所有交互是不可避免出于为那天做准备我们研究和开发了本文中描述技术我们展望有了这些增强在今天由任何设备发出基于 HTTP交互在不久将来都可以基于HTTPS我们把这称为无处不在HTTPS (“http://everywhere”)

  安全套接字层(SSL)会话剖析安全套接字层

  安全套接字层(SSL其后来版本称为传输层安全TLS)包含了个握手阶段和加密数据交换阶段图1展示了SSL握手整个过程在图中阶段 握手过程开始客户端向服务端发送组它可以支持算法列表和个随机数该随机数用作密钥生产过程输入的

加密因特网

  图1安全套接字(SSL)握手(来源:Intel公司 2009)

  第2阶段服务端选择其中个加密算法回送给客户端附带包含该服务器公钥证书证书用于证明服务器身份顺便提服务器域名也可以通过证书进行校验(这样可以消除钓鱼站点)并向用户表明他们正在和正确服务端(或服务)进行交互另外服务端还提供了第 2个随机数该随机数也作为密钥生成过程输入的第3阶段客户端验证服务端证书并提取出服务器公钥然后客户端产生个随机秘密串并使用服务器公钥对它进行加密机密后串被称为预主密钥它被发送给服务器第4阶段服务器通过RSA算法对客户端发过来加密串进行解密这是SSL交互过程中服务器上计算最重过程的随后客户端和服务端各自产生他们会话密钥生成密钥过程中使用预主密钥密钥生成(key derivatioin functionKDF)两次(该过程中使用了第12阶段随机数)在第5和第6阶段SSL握手以交互双方向对方发送认证码而结束认证码由所有原始握手消息计算而成

  在SSL中数据以记录方式传输记录协议将数据流分解成组数据段段单独被保护并传输换言的在IPSec中数据是以个IP包为基础进行保护而在SSL中数据以段为单位进行保护在段被传输的前通过计算消息认证码进行信息保护段认证码附加在段内容后面形成消息负载并用服务器(在第2阶段)选择加密算法进行加密最后在此负载上加上消息头消息头和加密消息体合起来形成记录

  安全web服务器显然是个极耗内存应用对于SSL连接而言其最显著部分就和密码算法相关包括使用对称密钥进行包加密、提供消息认证支持以及通过RSA建立会话(前文已述)下面章节中我们将更为详细地描述本文中要加速两个加密算法:高级加密标准(Advanced Encryption Standard AES)及RSA(Rivest Shamir Adleman)

  高级加密标准和RSA算法高级加密标准

  AES是美国政府对称加密算法标准它定义在FIPS 出版物第#197 (2001) 中并广泛应用在具有高吞吐量高安全需求应用中在HTTPS中它可用于为因特网上传输信息提供机密性AES是个对称加密算法也意味着在加密和解密消息时候使用是相同密钥AES结构如图2所示:

加密因特网

  图2 AES结构(来源:Intel公司2009)

  AES首先将密钥(可能是128位192位或256位)扩展成密钥排序表密钥排序表由128字节轮密钥构成轮密钥用于加密过程中加密过程本身就是组被称为AES轮数学转换演化

  在每个AES轮中输入数据(input)首先和密钥排序表中其中个轮密钥进行异或运算异或运算也可以看成是没有进位加法

  在该轮加密每个16字节AES状态经过S盒非线性转换被替换成另AESS盒包括两个阶段阶段是反转它不是正常整数算法而是基于GF(28)有限域算法第 2个阶段是仿射变换在加密过程中输入x被看成GF(8)上元素个8比特向量它先被反转然后对反转结果应用仿射图在解密过程中输入y先通过反向仿射图然后在GF(8)中反转 前面提到GF(8)反转是在GF(28)中进行它是由不可约多项式定义即p(x) = x8 + x4 + x3 + x + 1 或者 0x11B

  然后被替换字节值经过两个线性转换分别是ShtRow和MixColumnShtRow仅仅做字节置换MixColumn转换操作在AES状态矩阵表示列上进行列由个矩阵乘法得到值进行替换加密过程中所使用转换如方程1所示在该方程中根据GF(28)规则进行矩阵和矢量乘法使用是S盒中相同不可约多项式即是i>p (x) = x8 + x4 + x3 + x + 1

加密因特网

  解密过程中反向ShtRow跟在反向MixColumn的后反向MixColumn转换如方程2所示

加密因特网

  注意到MixColumn转换用112和3和每列中字节相乘而方向MixColumn用则是0x9, 0xE, 0xB, and 0xD根据密钥大小(128192256比特)区别相同过程要进行1012或14轮最后轮AES省略MixColumn转换

  RSA算法

  RSA是种公钥密码算法设计公钥算法背后主要想法是加密技术可以有后门存在后门意思是指密码只需要交互方知道这样可以简化加密流程在公钥算法中消息通过公钥加密个公钥对应个私钥在不知道私钥情况下很难解密消息类似地攻击者也很难发现信息原文

  为了进步解释公钥算法我们以RSA算法做例子来介绍说明在该算法中交互双方选择两个随机大数p和q为了安全最大化 p和q长度应该相同然后交互双方如下计算:



  对于某些lD和E可以互换使用也就是说可以使用D加密而使用E进行解密

  RSA典型实现使用中国剩余理论它可以将个模数取幂运算减低成对长度是它两个数取幂操作以此类推通过使用平方乘技术可以将取幂操作化解成模数平方及模式乘运算序列平方乘运算还可以增强并使用某些视窗法降低模数乘运算次数最后模数平方和乘运算可以通过如 Montgomery或Barrett 这样简约算法简化成大数乘法运算

  加速技术

  我们正在研究成倍提升HTTPS会话速度思路方法来实现加密因特网愿景代微系统结构新增指令可能会将对称加密算法提速3-10倍这些指令不仅提供了更好性能还能保护应用免受边道攻击(side-channel attack)威胁其次我们已开发出改进整数运算软件Software它可以将密钥交换及构造过程提速达40-100倍

  第 3Intel® Core™ i7微体系结构再次将SMT技术引进CPU中对于将计算密集公钥加密软件Software运算周期隐藏在网络应用内存查找延迟时间内SMT是非常理想

  新处理器指令

  下代Intel处理器将引入组新指令它们将支持高性能及安全轮加密和轮解密这些指令是AESENC(AES轮加密)和 AESENCLAST(AES最后轮加密)AESDEC(AES轮解密)以及AESDECLAST(AES最后轮解密)还引入了另外两个用于实现密钥排序表转换指令AESIMC和 AESKEYGENASSIST

  这些新处理器指令设计基于AES结构AES这样系统包括复杂数学操作比如有限域乘法和反转(前文已述)这些操作用软件Software实现需要消耗更多时间及内存但是用组合逻辑实现时则更快且更加节能另外有限域操作操作数能够适合IA体系结构SIMD寄存器本文中我们讨论使用组合逻辑将整个AES轮实现为单个IA处理器指令概念个AES轮指令比等同基于表查找软件Software要快很多并且可以流水化所以有可能在个时钟周期内计算出个独立AES轮结果

  这些AES指令可以看成是密码算术原语它们不仅可用于AES实现还可以用于广泛密码算法例如最近HIST SHA-3哈希竞赛中就有不少提案使用了AES轮作为计算密码哈希值基础元件另外指令合并还可以用于创建更加通用有限域计算原语这些新指令在相同平台上和最好软件Software实现相比在处理相同数学操作情况下要快3-10倍

  和这些AES指令Intel将提供另个新指令用于支持无进位乘法(carry-less multiplication)称为PCLMULQDQ该指令执行两个64位 4个字无进位乘法运算这两个操作数是根据中间字节值选择出来和第 2个乘数

  无进位乘法又称为Galois域(GF)乘法在该操作中对两个数进行相乘是不产生和传递进位在标准整数乘法中个操作数移动次数等于第 2个操作数中值为“1”比特位个数每次移动距离就是“1”在第 2个操作数中位置两个数执行结果由所有移动后个操作数相加而来在无进位乘法中过程依然相同但是相加时不产生进位也不传递进位这样比特加操作就相当于逻辑操作中异或(XOR)

  无进位乘法是很多系统和标准(包括时钟冗余校验CRCGalois/计数模型GCM和 2进制椭圆曲线等)计算个非常重要组件该操作在当今处理器上用软件Software实现时效率极为低下所以加速Carry-less乘法指令对于GCM和所有依赖于它交互协议来说相当重要

  改进密钥构造软件Software

  我们还开发了整数算法软件Software 他至少可加速大数乘以及模数减运算达2倍这些不仅用于RSA公钥加密还可用于Dfe Hellman密码交换以及椭圆曲线密码算法(ECC)使用了我们软件Software在Intel® Core i7处理器上RSA 1024性能可以从大概每秒处理1500个签名(OpenSSLv.0.9.8g)或者2000个签名(OpenSSL v.0.9.8.h)提升到每秒2900个签名类似地我们还可以加速其他流行密码模式如RSA 2048、和基于NIST B-233曲线椭圆曲线加密Dfie-Hellmn

  RSA性能可以通过提升大数乘法速度而提升它是该算法中计算最密集部分我们实现使用了优化背包大数相乘算法RSA算法是计算非常密集算法它要消耗数百万时钟用于执行64位数乘法加法和减法然而RSA所存储状态却很小只包含些关键信息及16至32个能够放入 Intel CPU级缓存Cache(cache)中乘数使用了我们软件SoftwareRSA 1024解密操作在Intel® Core i7处理器上只消耗了99万时钟而相应RSA 2048解密操作消耗了673万时钟这个速度比OpenSSL(v. 0.9.8h)执行相同操作要快40%

  下图中列出代码描述了主要思想它通过对中间数(check)利用寄存器回收技术将乘法和加法操作合并起来在代码1中“a”和“b”保存了相乘两个大数结果存在“r”中这些操作对所有输入不断重复并产生中间数这些中间数相加后得到大数相乘结果



  代码1 RAS实现(来源:Intel公司2009)

  我们还研究了其他大数相乘技术包括类Karatsuba构造但是我们发现这个背包算法实现是最快

  并发多线程技术

  最新Intel® Core i7微体系结构再次引入了超线程(现在被称为并发多线程或SMT)技术SMT是该处理器和此前核心微体系结构最大差别这些核心都是单线程作为研究部分我们演示了SMT可以为类特定工作负载带来根本性性能提升这些工作负载和安全Web事务相关我们提出了种新编程模型 ——使用个计算密集线程只进行RSA公钥加密操作线程进行内存存储密集操作我们发现当使用SMT时RSA线程可以作为 4个典型内存存储密集工作线程理想伙伴并可以带来10%至100%潜在性能提升

  当执行独立内存查找线程和RSA线程相伴执行时系统可获最多益处内存线程吞吐率几乎翻倍达到了没有RSA伴随情况下对该结果种解释是 RSA计算几乎没有消耗时间这都功因于SMT在现实中RSA计算被隐藏在内存线程长延迟时间期间我们还观察到当SMT开启个内存线程和另个内存线程相伴执行时单个内存线程吞吐量大约提高了30%而当和RSA算法相伴执行时吞吐率翻倍这些结果指明RSA算法比第 2个内存线程更适合作为陪伴线程原因是个工作是内存访问密集型而另个是计算密集型个RSA线程和个内存线程相伴执行时SMT开启时RSA性能比SMT 关闭时性能提升21%

  为了进步验证我们观点——SMT特别有助于密码工作负载我们创建测试了个运行SpecWeb* 2005测试台测试台组成是台Intel® Core i7处理器服务器连接到两台客户机在上面共运行了 4个客户端引擎我们测量了SMT开启和关闭时服务器处理Banking(HTTPS)和 Support(HTTP)工作负载能力实验表明SMT对整体系统性能至少提升了10%而Banking工作负载比Support工作负载提高更多该结果和我们前面实验相吻合并且也表明了密码工作负载也能利用SMT优势

  我们密码算法加速技术整体影响如图3所示栏是230K字节SSL交易运行在今天Intel® Core i7处理器上负载加密模式使用了AES-256反模式(counter mode)第 2栏显示了使用新指令实现AES时获得加速效果第 3栏展示了使用我们RSA软件Software及SMT的后加速结果最后栏展示了将SHA1替换成GCM后结构GCM是种提供了和HMAC-SHA1相同功能消息认证模式在图中可以明显看到我们加速技术从根本上减低了密码工作负载并带来了性能及效率显著提高



加密因特网

  图3 密码加速技术影响(来源:Intel公司2009)

  结论

  总的Intel正在研究提供成倍提升密码算法速度新技术我们描述了可以提升AES对称加密速度新处理器指令该提升从根本上减低了 HTTPS处理大块数据传输时服务器负载我们还展现了RSA非对称密码算法新实现它加速了HTTPS协议计算密集型阶段即服务器必须解密来自大量客户端握手消息阶段第 3我们分析了Web服务器并展示了些初期实验结果表明通过在支持SMT技术处理器上均衡Web服务器负载和密码算法负载可以提升服务器效率它显示了密码算法负载可以隐藏在并行处理内存访问长时间延迟期间我们最终目标是使通用处理器能够高速处理及转发加密信息传输从而让因特网逐步转变成为完全安全信息交付基础设施我们还相信这些技术有益于其他使用模型比如硬盘加密和存储等



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: