C端,由任何一台可接入网络的PC构成,并安装PC端的用户身份认证软件;Server端,任何一台网络服务器安装用于身份认证的Server端软件。 ??? USB安全钥系统结构体系及功能流程如图1所示,列出了九个步骤,描述了USB安全钥从插入PC到完成一次身份识别的完整流程。
1)没有任何重要的个人信息在网上传递,保证了安全性;(2)Server由网络商自己维护,安全钥由用户携有,双方的认证没有依靠第三方,快捷、安全、信誉度高。当然,USB安全钥还有其他很多优点,例如可以在PC上热插拔,可以在任何一台支持USB的PC上工作(现在几乎所有的PC都应该支持USB)等。 2 USB安全钥的技术细节 ??? USB安全钥技术,从设计上可以分为三个模块:Server端的网络通讯和加密算法设计、PC端的USB驱动程序和网络通讯设计、安全钥端的USB固件和加密算法设计。涉及到的计算机技术包括Socket网络编程技术、USB驱动程序设计技术和加密算法技术。可以说整个设计内容庞杂,技术难度高。因此,设计时就需细化,一步步完成单个功能,再进行联调,将单个模块融合成完整的USB安全钥。 ??? 后期的功能扩展和优化设计也是针对三个模块,应用三大技术完成。主要是:服务器(Server)端DES加密算法的研究,设计加密算法的动态链接库DLL,提供给客户最简单的API
C和安全钥端驱动程序的研究,实现PC端友好的程序界面,动态在线修改存储在安全钥内的用户产品信息。本文将详细介绍扩展和优化的设计方法,从而揭示USB安全钥的技术细节。 2.1 如何设计Server端加密算法及其DLL ??? 密码算法(Algorithm)就是指加密函数(Encryption)和解密函数(Decryption)。有加密函数,那么必然有一套与它对应的解密函数。现代密码学用密钥技术解决了保密性不够的问题。密钥用K表示。K的取值范围叫做密钥空间。可以用如下式子来表示加密和解密函数之间的关系: ??? DK(EK(M))=M ??? 其中,E为加密函数,D为解密函数,M为被加密的原文。有一个重要的结论:所有算法的安全性都基于密钥的安全性,而不是算法细节的安全性。这就是说,算法可以公开,只要密钥是保密的,则这个算法就是安全的。简单地说,密钥就是与密文叠加在一起的一组数。 ??? 标准加密算法DES作为ANSI的数据加密算法和ISO的DEA-1,成为世界范围内的标准已经20多年。就目前密码学的发展情况来说,DES的安全性还是能够满足用户需求的。由于完整的DES算法相当复杂,这里仅简单介绍算法的结构。 ??? DES是分组加密算法,以64位为一组对明文进行分组,然后进行加密和解密。加密和解密的算法相同,只是密钥的编排不同。密钥长度为56位,通常是64位,但是每字节第8位都用来作为奇偶校验位,因此实际上只有56位。DES共有16轮,即对同一组明文结合密钥进行16轮相同的加密过程,最终达到加密要求。 ??? 具体到每一轮的加密过程是这样的:每一轮中,密钥位移位,然后从密钥中选出48位。数据的32位右半部分数据扩展成48位,与密钥结合。然后再将这48位数据变换为32位,并与数据的32位左半部分相与后作为新的32位右半部分。而32位左半部分基本不变。最后,左右各32位数组合在一起便构成了一轮加密后的64位密文。重复同样运算16次,便完成了加密/解密功能[4]。
ESDecrypt ()//解密函数,完成对已加密的8位随机数的解密功能? { ??? WORD TempInput[64],TempOutput[64],TempKey[64]; ??? stringtobit (IniDeData, TempInput); ??? stringtobit (DESKey, TempKey); ??? decry (TempInput, TempKey, TempOutput); ??? bittostring (TempOutput, DESDeData);} ?void CKeyDllApp:
ESEncrypt()?? //加密函数,可完成 对8位随机数的加密功能,然后可与原随机数比较,看是否相等 { ??? WORD TempInput[64], TempOutput[64],TempKey[64]; ??? stringtobit (IniEnData, TempInput); ??? stringtobit (DESKey, TempKey); ??? encry (TempInput, TempKey, TempOutput); ??? bittostring (TempOutput, DESEnData);} ?int* CKeyDllApp:
ecryptData(BYTE InputDeNum[8])//导出的获取解密数据的函数。此函数需要赋值——已加密了的8位随机数,并进行解密,最终函数值为解密后的 


| 欢迎光临 DIY编程器网 (http://www.diybcq.com/) | Powered by Discuz! X3.2 |