欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    OpenSSLEngine安全平台下的Engine对象分析.pdf

    • 资源ID:69619517       资源大小:130.56KB        全文页数:4页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    OpenSSLEngine安全平台下的Engine对象分析.pdf

    收稿日期:2003-03-04作者简介:谭良(1973-),男,讲师OpenSSL Engine 安全平台下的 Engine 对象分析谭 良(四川师范大学 电子工程学院,四川 成都 610066)摘要:OpenSSL Engine 安全平台的主要目的是替换 OpenSSL 的底层加密机制.介绍了 OpenSSL Engine 安全平台的原理,分析 OpenSSL Engine 安全平台下 Engine 对象的关键技术,剖析了OpenSSL Engine 安全平台的不足并提出了相应的解决方案,对 Engine 对象的开发有指导意义.关键词:网络安全;OpenSSL Engine 安全平台;Engine 对象;CSP中图分类号:TP333文献标识码:A文章编号:1001-8395(2004)04-0427-040引言随着网络通信技术的飞速发展,信息安全是网络应用不可回避的问题.SSL(Secure Socket Layer,安全套接层)技术是目前国际流行的基于 WWW 的网络安全方案 1,它以多种密码技术为基础,实现了用户身份鉴别、数据加密、数字签名等安全功能.目前,许多的信息产品安全,较多基于 SSLeay,但SSLeay 安全实现存在缺陷 2并受到美国信息安全出口限制,基于 SSLeay 的信息产品,其安全性能难以保证.许多软硬件开发商,为了保证自己产品的安全,开发了基于复杂且种类繁多的安全算法的安全模块,由于没有统一的技术标准,安全模块的体系结构和接口各不相同,因而用户使用困难,得不到良好的安全服务.因此,许多 CSP(CryptographyService Provider)希望将OpenSSL 和自己的安全实现(如:加密卡、加密机)捆绑,使用户通过 OpenSSL 的接口获 得自 己的 安 全服 务,此 时 用户 要么 把OpenSSL 接口全部替换掉;要么保留 OpenSSL 接口不变,只替换 OpenSSL 的底层加密机制.如果把OpenSSL 接口全部替换,需要做大量的代码改动,代价太大,而只替换 OpenSSL 的底层加密机制则需要改动的代码较少.OpenSSL 提供的 Engine 安全平台机制使得替换起来非常方便,需要做的是 CSP 提供商为自己的安全实现开发一个 Engine 对象.本文将基于 OpenSSL0.9.6 版本介绍 OpenSSLEngine 安全平台的原理,分析 OpenSSL Engine 安全平台下 Engine 对象的关键技术,剖析 OpenSSL En-gine 安全平台的不足并提出了相应的解决方案.1OpenSSL Engine 安全平台的原理OpenSSL 是志愿者共同努力开发出来的一个健全的、商业级的、全开放的和开放源代码的工具包,实现安全套接层协议(SSL v2/v3)和传输层安全协议(TLS v1)以及形成一个功效完整的通用目的的加密库 SSLeay,OpenSSL Engine 的加密库结构简图如图 1所示.从图 1可以看出,应用程序可通过 3 种方式 调 用 SSLeay.一 是 直 接 调 用,二 是 通 过OpenSSL 加密库接口调用,第三还可以通过 Engine平台和 OpenSSL 对象调用.除了 SSLeay 外,用户可通过 Engine 安全平台访问 CSP,其间通过 Engine 对象(图 1 中用圆圈表示)连接,一般说来,一个 CSP应该有与之相应的 Engine 对象.2004年 7 月第 27 卷第 4期四川师范大学学报(自然科学版)Journal of SichuanNormal University(Natural Science)July,2004Vol.27,No.4Engine 安全平台使 OpenSSL 为应用程序和用户提供安全功能的方式多样化.通过 Engine 安全平台,应用程序和用户所需的安全功能可以通过 3 种方式获得,其中第一种是由 CSP 提供,另一种是由SSLeay 提供,第三种是由 CSP 和 SSL 共同提供.这样做的好处在于,用户可以通过 OpenSSL 的通用接口使用不同的 CSP 提供的安全模块,而不需要详细了解各个 CSP 的安全模块具体接口,当然 CSP 必须提供相应的 Engine 对象.2Engine 对象的关键技术Engine 对象在实现的过程中,要考虑的因素较多,如 Engine 对象的数据结构、日志文件实现方式、CSP 加载方式、以及密钥管理等,下面讨论 OpenssLEnginer 实现的关键技术.2.1 Engine 对象的数据结构 Engine 对象的数据结构非常重要,所有的 Engine 操作都是围绕这个结构来进行的,因此掌握 Engine 对象的数据结构是开发Engine 对象的关键.Engine 对象的数据结构如下:struct engine-st const char id;const char name;RSA-METHOD rsa-meth;DSA-METHOD dsa-meth;DH-METHOD dh-meth;RAND-METHOD rand-meth;BN-MOD-EXP bn-mod-exp;BN-MOD-EXP-CRT bn-mod-exp-crt;int(init)(void);int(finish)(void);int(ctrl)(int cmd,long i,void p,void(f)();EVP-PKEY (load-privkey)(const char key-id,const char passphrase);EVP-PKEY (load-pubkey)(const char key-id,const char passphrase);int flags;int struct-ref;int funct-ref;struct engine-st prev;struct engine-st next;ENGINE;在该数据结构中,id 和 name 指向 Engine 对象的编号和名称;rsa-meth、dsa-meth、dh-meth 和rand-meth 均是结构体指针,指向 Engine 对象提供的 RSA、DSA、DH、RAND算法;而Engine 的初始化和结束处理函数由指针 init 和 finish 提供;bn-mod-exp、bn-mod-exp-crt 为大素数模数处理相关的函数指针;用户还可以通过 load-privkey 和 load-pub-key 指针导出 Engine 对象使用的公钥和私钥;flags是标志位;值得注意的是 struct-ref 和 funct-ref,struct-ref 是 Engine 的结构引用记数,当新生成一个Engine 对象框架时 struct-ref 加一,当释放一个 En-gine 对象框架时,struct-ref 减一;funct-ref 是 Engine对象的功能引用记数,当初始化 Engine 对象结构并执行功 能操作时,funct-ref 加一,使用结 束时,funct-ref 减一,只有 Engine 对象的 struct-ref 和funct-ref 均为 0 时,才能调用 finish 释放 Engine 对象;ctrl 是指向控制台函数的指针;最后,从该数据结构还可以看出,Engine 结构是一个链表,prev 指向前驱,next 指向后继.2.2 CSP 安全模块的加载方式 用户要调用 CSP和OpenSSL 提供的底层加密接口,完成安全功能,这些底层加密接口在使用前必须加载,以便 Engine对象调用.加载方式有两种,一种是静态方式,另一种是动态方式,在开发 Engine 过程中,选择动态加载还是静态加载,不同的 CSP 有不同的考虑,静态加载方式比较简单,但缺少灵活性,底层接口容易暴露;而动态加载方式比较灵活,便于替换,但较复杂,如果选择动态加载,CSP 还必须开发用于动态加载库的通用单元.2.3 Engine 对象的密钥存储方式 在应用间共享密钥和证书是 Engine 对象必须考虑的重要因素,Engine对象必须存储管理用于实现安全功能的密钥,密钥对象的存储管理是 Engine 最核心的工作之一.密钥是由 CSP 底层接口生成(见图 2),底层接口怎样生成密钥或密钥对 Engine 对象不必关心,但生成的密钥和密钥对怎样存储管理是 Engine 对象必须考虑的问题,底层生成的公/私钥和相应的证书通常应保存在一个由 Engine 对象指定的密钥存储中,通过 Engine 对象结构提供的函数指针 load-privkey 和 load-pubkey,密钥存储可使其他的应用共享相同的密钥信息,当然 Engine 对象在指定密钥存储时,还必须考虑 CSP 密码设备的特性.对于密钥存储,通常有两种方式:428四川师范大学学报(自然科学版)27卷(1)软件密钥存储 3.即公/私钥和相应的证书保存在一个“软件”中,该软件可以是一般的文件,也可以是一个小型的数据库管理系统,可用图2 表示.软件密钥存储仅仅可以通过接口访问,接口是应用私有的,密钥的共享使用通常是不可能,并且软件密钥存储不能保证密钥的安全性.(2)智能卡密钥存储 3.即公/私钥和相应的证书保存在一个智能卡中,智能卡提供强保护密钥存储形式,该形式结合了双因素鉴别.因此,对于 En-gine 对象,智能卡形成了用户密钥保护方案的一个基本要素.3Engine 机制的缺陷及解决方案Engine 机制,主要是指 OpenSSL Engine 安全平台和 Engine 对象,在 0.9.6 版的 OpenSSL 中,Engine机制给用户带来了诸多方便,CSP 通过OpenSSL En-gine 安全平台屏蔽底层接口的复杂性.但它并不完善,主要表现在以下两个方面:首先,OpenSSL Engine 安全平台不支持常规加密,就其原因,一方面是因为不少人认为 OpenSSL提供的常规加密接口有足够的安全性;另一方面是因为常规加密算法有几十种之多,使得 OpenSSLEngine 安全平台和 Engine 对象的结构过于臃肿.但事实上,由于常规加密算法都是建立在基本的替换和置换工具的基础之上,其安全性主要依赖其密钥长度,而OpenSSL 提供的常规加密如 DES、IDEAL 的密钥长度不大于 128 位,还不能完全对抗穷举和差分密码分析的攻击 4,而一些 CSP 的常规加密算法的密钥长度大于 128 位,且由硬件实现,速度快,能提供更好的安全性,因此有必要在 Engine 结构中支持常规加密.为了使 OpenSSL Engine 安全平台和Engine 对象的结构较为简洁,可在 Engine 结构中增加一指针:SYMMETRY sym;而类型SYMMETRY可使用如下定义:typedef struct symmetryDES-MTHOD des meth;IDEAL-METHOD ideal-meth;CAST-METHOD cast meth SYMMETRY将各个对称加密算法单元进行修改,其格式和RSA、DSA、DH 等非对称加密单元类似,以下以 DES单元为例,首先将该单元中的相关接口重组为结构DES-METHOD,然后在 OpenSSL Engine 安全平台中增加管理 DES 的相关接口如:ENGINE-get-DES()等并在DES 接口实现中加入 OpenSSL Engine 安全平台机制,最后在开发 Engine 对象时加入 CSP 的DES.该方法虽然复杂,但可通过 OpenSSL Engine 安全平台用 CSP 的 DES 替换 OpenSSL 的 DES.其它单元以此类推.其次,Engine 对象采用静态加载方式.即系统在初始化 Engine 安全平台时,就生成了所有所需的Engine 对象并加载入系统.静态加载主要有两个不足,其一是在系统中同时加载所有 Engine 对象,需要占用较多内存空间;第二是每开一个 Engine 对象,必须修改 Engine 安全平台的内部函数 engine-internal-check(void),违背了模块独立性原则.如果Engine 对象采用动态加载,即系统在初始化 Engine安全平台时,并不生成和加载任何 Engine 对象,而是当需要使用某 Engine 对象时,才生成该对象并加载入系统.这样既节省内存空间,也不需要修改平台内部函数 engine-internal-check(void),用户只需为每类 Engine 对象增加一个相应的加载函数,当系统需要这种类型的 Engine 对象时,就调用该加载函数,该加载函数的功能就是生成一个该类 Engine 对象并加载到系统中.且 CSP 只需在 OpenSSL Engine安全平台中增加相应的 Engine 对象加载函数即可.429第 4期谭良:OpenSSL Engine 安全平台下的 Engine 对象分析4结论本文 描 述了 OpenSSL-engine 的原 理,分析OpenSSL-engine 的关键技术,剖析了OpenSSL-engine机制的不足并提出了相应的解决方案,对 Engine 对象的开发有指导意义.需要说明的是,笔者开发了一个Engine 对象 westone-engine 已通过测试 5 7,即将投入商业运营,而对于在该 Engine 对象 westone-en-gine 中实现用卫士通的常规加密算法替换 OpenSSL的常规加密算法,这一步正在进行中.参考文献 1 Viega J,Chandra P,Messier M.Network Security with OpenSSLM.Washington:Publishing House of Electronics Industry,2002.2 Brumkey D,Boneh D.Remote timing attacks are practical J.Access Control Concept andMechanisms,2002,12(5):651 687.3 Nash A,D1lane W,Joseph C,et al.PKI Implementing and Managing E-Security M.MC:Graw Hill,2001.4 William Stallings.Cryptography and Network Security Principles and Practice M.Washington:Publishing House of Electronics Industy,2001.5 谭良,蒲红梅,周明天.Samba 服务器其享资源安全系统层次模型研究 J.计算机应用,2004,25(8):115 118.6 谭良,罗讯,周明天.动态安全标记的格模型理论 J.电子科技大学学报,2004,25(7):312 315.7 Tan L,She K,Zhou M T.A new performance analysismodel for web service system A.WaveletAnalysis and ItsApplications andAc-tive Media Technology C.Singapore:World Scientific Publishing Co.Pte,Ltd,2004.804 811.Analysis of Engine Object Based on OpenSSL Engine Security PlatformTAN Liang(College of Electronic Engineering,Sichuan Normal University,Chengdu 610066,Sichuan)Abstract:Replacing the SSLeay with other encryption systems is the purpose of OpenSSL engine security platform.This paper introducesthe principle of OpenSSL engine security platform,and analyses critical technology of the engine object basedon OpenSSL engine security plat-form.This paper also points out the limitation of openSSL engine security platform and puts forward a corresponding solution project.It hassome instructive meaning in the development of engine object.Key words:Networks security;OpenSSL engine security platform;Engine-object;CSP(编辑 李德华)430四川师范大学学报(自然科学版)27卷

    注意事项

    本文(OpenSSLEngine安全平台下的Engine对象分析.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开