基于USB KEY数字签名的实现方案

来源 :计算机世界 | 被引量 : 0次 | 上传用户:z444567059
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  数字签名是非对称密钥加密技术与数字摘要技术的应用。所谓数字签名(Digital Signature),又称公钥数字签名、电子签章,是一种使用了公钥加密领域的技术实现、用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。使用数字签名技术,接收方能够核实发送者对报文的签名,发送者事后不能抵赖其对报文的签名,且其他人无法伪造对报文的签名。数字签名保证了传输信息的完整性、发送者的身份验证和不可抵赖性。
  按照数字签名流程,签名一条消息涉及到两个步骤。第一步,从发送的消息原文得到一个散列值,即报文摘要。然后使用发送者的私钥来签名这个散列值。把得到的签名数据和消息原文一起发送给接收方,便于接收方进行验证。
  数字签名验证流程,为了验证一个签名,需要从发送方得到消息原文和签名数据。首先用相同的算法得到散列值,然后用发送方的公钥对数字签名进行解密,最后比较散列值和签名解密后的数据,如果相同便可以确认此签名是来自发送方的,并且在发送传输过程中未被篡改。
  微软CryptoAPI
  微软CryptoAPI(Microsoft Cryptographic Application Programming Interface)是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。微软CryptoAPI是一组数目众多的安全函数,这些安全函数是Windows操作系统的一部分。CryptoAPI对密码函数进行抽象,隐藏了实现的细节。
  CryptoAPI的上层是应用程序,下层是加密服务提供者(Cryptographic Service Provider,CSP),CSP是真正执行加密功能的独立模块。
  1.CryptoAPI体系结构
  CryptoAPI由简单消息函数、底层消息函数、基本加密函数、证书编解码函数和证书库管理函数共五部分组成,包含有100多个库函数。其中前三种函数接口用于处理信息加解密和数字签名,后两种函数主要针对证书验证身份的操作。CryptoAPI便是通过一系列的库函数来对应用程序提供PKI安全服务的,其总体系统结构如图1所示。
  2.加密服务提供者(CSP)
  加密服务提供者(CSP)是真正执行加密功能的独立模块,它实现了那些可以通过CryptoAPI公共接口访问的密码函数。换言之,CSP封装和隐藏了密码算法的具体实现,这样用户就不需要去关心它。典型的CSP有Microsoft Base Cryptographic Provider、Microsoft RSA Base Provider等。
  每个CSP都有一个名字和一个类型。为了便于CryptoAPI找到对应的CSP,每个CSP的名字都是惟一的。微软预定义的CSP类型目前有PROV_RSA_AES 、PROV_RSA_SIG 、PROV_DSS 等10种,分别支持不同的密钥交换算法、签名算法、对称加密算法和Hash算法。
  每个CSP都有一个密钥库(Key Database),里面存储着算法密钥。每个密钥库都包含一个或多个密钥容器(Key Container),每个密钥容器中保存有属于一个特定用户的所有密钥对。每个用户通常有两对公私钥对,一对用来加密会话密钥,一对用来创建数字签名。每个密钥容器都被赋予一个惟一的名字,这个名字是程序要获得此容器句柄时传递给函数CryptAcquireContext的参数。
  用CryptoAPI实现基于USBKEY的数字签名
  按照使用CryptoAPI进行数字签名的一般流程,对数据进行签名,首先要创建一个密钥容器(或指定使用一个现有的CSP密钥容器),以便存储密钥和进行以后的工作。然后从密钥容器当中取得密钥对,导出公钥发给接收者用来验证签名,私钥用于签名。接着便可以创建一个Hash对象,先散列要签名的数据,最后便可以对此Hash数据进行签名了。其签名过程图解如图2所示。
  对数据签名进行验证,首先也需要创建一个密钥容器(或指定一个现有的CSP密钥容器),以便存储密钥和进行以后的工作。然后从发送者那得到的公钥,导出公钥句柄用来验证签名。接着便可以创建一个Hash对象,先散列原始消息的数据,最后由散列值,公钥句柄和签名便可验证此签名了。
  1.USB KEY简介
  USB KEY是一种USB接口的硬件设备,它内置单片机或智能卡芯片,有一定的存储空间,主要用于保存数字证书和用户私钥。通过USB KEY生产厂商开发的驱动程序,还可以完成数据加解密、签名验证等功能。
  但因为各个厂商开发的驱动接口程序没有统一的标准,用户针对某一型号USB KEY接口函数开发的加解密/签名应用程序,在更换不同厂家型号的USB KEY之后一般无法正常使用,还需要重新再次开发,作者在实际工作中就遇到了这种情况。经过调研后发现,各USB KEY生产厂商一般都会提供符合微软CryptoAPI标准的CSP中间件,用于硬件USB KEY的应用开发。换言之,如果使用CryptoAPI标准函数,就可以开发出通用的、兼容各USB KEY生产厂商CSP中间件的加解密/签名应用程序。
  2.实现过程
  第一步要获得硬件USB KEY对应的CSP名称。为了获取与USB KEY对应的CSP密钥容器操作句柄,必须首先知道该CSP的惟一名称。获取的途径有两种:一是在安装硬件USB KEY生产厂商提供的驱动程序时,安装程序会将该USB KEY对应的CSP名称、类型、对应的动态链接库(DLL)等信息写入系统注册表中。第二种方法就是使用函数 CryptEnumProviders,通过枚举的方式获得。第二步就是代码实现,限于篇幅,在此不再赘述。
  微软CryptoAPI是PKI推荐使用的加密API,它隐藏了具体密码算法的实现细节,程序员利用该接口可以开发出安全的应用程序或产品,而无需太多密码学方面的背景知识。但使用CryptoAPI编程时需要了解CryptoAPI的系统结构以及CryptoAPI与CSP的关系。在实现某个函数功能时,还需调用很多其他的相关函数,且每个函数的参数较多,使用起来比较复杂。
  作者在工作中,用CryptoAPI实现了某系统中基于硬件USB KEY的通用数字签名。即用同一段代码,实现了兼容不同种类硬件USB KEY的通用数字签名程序,希望能给大家以帮助。
其他文献
2014年5月6日~7日,GMIC全球移动互联网大会在北京召开。本次大会设立了包括手机游戏、智能软硬件、移动金融、移动营销等在内的多个主题峰会。在这其中,移动金融成为最热门的峰会之一。包括腾讯公司副总裁丁珂、百度移动安全总经理张磊等在内的业界大佬,均聚焦于此,就移动金融及安全等相关话题发表了观点和看法。 “2014,必将成为移动支付的发展元年。”腾讯副总裁丁珂认为,“移动支付目前暴露出的问题,不能
2015年11月2日,Hewlett Packard Enterprise(简称HPE)正式启航。从惠普公司拆分出来的HPE是年收入高达530亿美元的企业级技术领导厂商,拥有业界最全面的产品组合。作为专注企业级IT业务的公司,HPE公司继承了惠普公司在基础架构、服务、软件和金融服务领域丰富的创新底蕴和行业领先的地位,致力于提供前沿的技术解决方案,帮助客户优化传统IT,并帮助企业打造安全的基于云的且
从一开始,迪普就注定是一个不平凡,这与它的出身紧密相关——脱胎于H3C,成立之初是做安全产品与服务。两者之间的故事,扑朔迷离又充满迷惑,以至于网上有近乎长篇小说般的《迪普与华三的战争》这样的帖子流传。  坊间种种传言,伴随着迪普的快速成长,被认为是本土最锐利的安全企业。有圈内人士评价说,不了解迪普,但是它和华为一样是最强劲的对手。外界的不了解,源自迪普的一贯低调。  2013年夏天,迪普推出新一代
7月1日,我国首个LTE安全领域的行业标准《LTE无线网络安全网关技术要求》正式实施,国内LTE安全网关产品将得到进一步规范。  7月1日,我国首个LTE安全领域的行业标准《LTE无线网络安全网关技术要求》正式实施,这是由华为技术有限公司、北京交通大学、中国联通联合起草,中国通信标准化协会(CCSA)TC8工作组立项制定的标准。这一标准的制定与实施将使国内LTE安全网关产品进一步规范。同时,标准的
在日本,有个独特的节日叫“七五三”节,男孩3岁和5岁,女孩3岁和7岁都会举行祝贺仪式。因为日本人认为奇数1、3、5、7是吉祥数字。  今年的OpenStack峰会将举办地选在了日本的首都东京。而自2012年OpenStack项目正式启动至今正好是3年的时间。  3岁的OpenStack峰会今年迎来了更多的参与者,56个国家,5000多人齐聚东京。  OpenStack是什么?  就像提起大数据就会
不妨让时光重回1997年波士顿Macworld的博览会上。  回过头来看看史蒂夫·乔布斯在当时的那场主题演讲上所说的话,你会大吃一惊。你会看到史蒂夫·乔布斯扬言苹果与微软承诺交叉授权对对方有多好。为什么说交叉授权很好?要知道,这个人在10年后放出狠话要对安卓发动“热核战争”(thermonuclear war)。那时的乔布斯说:“破坏性关系对这个行业的人来说都没有好处。我为这两家公司感到特别自豪,
最近一年来,如果你到苏宁、国美等电器卖场中销售电视的区域闲逛,会发现铺天盖地的都是“3D”、“云电视”、“智能电视”等的宣传。  “加一个无线键盘鼠标,智能电视就像一个大屏的平板电脑了。”卖场的工作人员这样向消费者介绍。某品牌电视的销售人员对《计算机世界》记者说,“现在智能电视的销路不错,特别是很多年轻人购买。智能电视的热度已经超过了前段时间热炒的‘互联网电视’。”  国内的“互联网电视”是指可以
“今年是上海浦东软件园成立22周年,22年来,浦东软件园一直把‘整合丰富园区服务、加强园区服务管理、努力提高服务水平;加强产业发展研究、调整对外投资策略、实施企业共同发展’作为发展战略。当年那片不起眼的农田,已成为我国发展软件和信息服务业的重要空间载体之一,也成为上海服务长三角、服务全国、面向世界的一流软件产业高地。”7月29日,在上海浦东软件园“新业态、新产品、新媒体”新闻发布会上,上海浦东软件
阿里云开放数据处理服务(以下简称ODPS)从今年1月份开始公测,近日宣布正式商用。测试结果显示,100PB的数据任务可在6个小时内跑完,这个数据量相当于1亿部高清电影。而且定价0.3元/GB,花几百元即可分析海量数据,目前已服务将近100万的客户。用阿里云总裁王文彬的话说,“从数据中心到最底层的技术平台,再到整个云产品,阿里云已经有形成了一个完整的云架构体系”。  在对外商用之前,ODPS一直是阿
2013年对于管理软件厂商而言,是极具挑战的一年。从宏观环境来讲,整个国内经济稳中求进,稳中向好,中国软件企业“微利化”趋势明显;从用户需求来看,随着云计算、移动计算、大数据和物联网等新技术的发展,IT应用与业务的结合更加紧密,管理理念的全新转变对管理软件厂商提出新的要求。基于此,各大管理软件厂商纷纷推出了基于云计算、大数据、移动互联网的新产品、新服务,如用友发布新三年战略,重点发展UAP平台;金