身份密码体制

2024-06-24

身份密码体制(共5篇)

身份密码体制 篇1

零知识交互式证明是由Goldwasser、Micali和Rackoff提出的。零知识证明是指示证者P在不向验证者V提供任何有用的信息的情况下, 向验证者V证明某个论断的方法。另外, 零知识证明还具备有“零知识性”。即验证者在相信示证者的同时, 无法获得有关被证明论断的任何知识。

在Goldreich等证明了NP问题都可以建立相应的零知识证明系统之后, 一些学者继而设计了多种零知识身份识别体制。在这些体制中, Feige-Fiat-Shamir体制、Guillou-Quisquater体制和Schnorr体制被大家广为所知。笔者比较了三种零知识证明的优缺点, 并分析了其适用的具体情况。

1 Feige-Fiat-Shamir体制

F-F-S体制是由Feige在Fiat-Shamir体制的基础之上, 设计的一种零知识身份识别体制。

事先选定随机模m=p1×p2, 以及k个随机数v1, v2, …, vk。其中, vi是mod m的平方剩余, 且有逆。取m和这些随机数作为公钥。取满足的最小整数si作为密钥。其验证协议如下:

示证者P选取随机数r (<m) , 计算x=r2 mod m提交给验证者V;

验证者V选择k位随机数b1, b2, …, bk交给示证者P;

示证者P计算;

交给验证者V;

验证者V验证等式。

该协议可重复执行t轮, 以使得示证者P欺骗验证者V的几率降至2-kt。当kt足够大时, 示证者欺骗验证者的概率接近于0。

该体制是根据计算mod m平方根的困难性设计的, 其破译难度等同于分解m的难度。所以验证者很难从示证者得到有关密钥的知识。

2 Guillou-Quisquater体制

GQ体制是由Guillou和Quisquater设计的一种零知识身份识别体制。

事先选定随机模m=p1×p2与公钥e (≥3) 。其中e与φ互素, φ= (p1-1) (p2-1) 。取m和e作为公钥。用户将自己的某一唯一身份信息IA作为识别的参数。将IA通过杂凑函数H取得其杂凑值JA=H (IA) , 其中1<JA<m, JA与φ互素。取作为密钥, 其中取d=e-1modφ座位秘密指数。其验证协议如下:

示证者P选取随机数r (1≤r≤m-1) , 计算x=r2mod m。将IA和x提交给验证者V;

验证者V选择随机数μ (1≤μ≤e) 交给示证者P;

示证者P计算;

交给验证者V。

验证者V计算杂凑值JA=H (IA) , 并验证等式

其中x不为0。

此协议亦可执行t轮, 但一般取t=1。

该体制的安全性基于求mod m的e次方根的困难性, 验证者亦很难从示证者得到有关密钥的知识。

3 Schnorr体制

Schnorr体制是由Schnorr基于离散对数的性质, 设计的一种零知识身份识别体制。

事先选定素数p、q, 其中q为p-1的约数, p要足够大 (≈21024) , q也要较大 (>2160) 。另选β (1≤β≤p-1) 为q阶元。选取单向函数用于证明T对于消息的签字。取p、q和β作为公钥。用户将自己的某一唯一身份信息IA作为识别的参数。用户选定密钥a (1≤a≤q-1) , 计算υ=β-a mod p。并用υ与IA可靠地从T获取证书Cert A= (IA, υ, ST (IA, υ) ) 。其验证协议如下:

示证者P选取随机数r (1≤r≤q-1) , 计算x=βr mod p。将Cert A和x提交给验证者V;

验证者V依据T的公钥解ST (IA, υ) 验证示证者P的身份IA和公钥υ, 并选择随机数e (1≤e≤2t) 交给示证者P;

示证者P计算;

交给验证者V;

验证者V验证等式。

该体制示证者猜对e的概率是2-t, 而示证者猜对e时, 可在第 (1) 步直接发送以欺骗验证者。所以示证者欺骗验证者的概率为2-t。而当t足够大时, 示证者欺骗验证者的概率接近于0。

4 F-F-S体制、GQ体制和Schnorr体制对比

F-F-S体制、GQ体制和Schnorr体制都是经典的零知识身份识别体制。他们之间在以下四点中存在着差异:计算有效性, F-F-S体制的实时运算量略小于GQ体制;脱机运算量, Schnorr体制采用预运算来减少实时运算量。因此, Schnorr体制比其他两种体制需要更多的脱机运算量;通信有效性, GQ体制单轮仅需要三次消息传输, 且一般只需要执行1轮协议即可;而F-F-S体制不能同时减少通信量和存储量;安全性, F-F-S体制基于求mod m的平方根的困难性;GQ体制基于求mod m的e次方根的困难性;Schnorr体制基于求素数模的离散对数的困难性。

5 结语

F-F-S体制实现更为简单, 不需要额外的脱机运算量, 但存储量和通信量相对较高。

GQ体制同样不需要额外的脱机运算量。而且单轮协议通信仅需要3次, 这大大减少了身份证明的通信量。在传输或功耗受到限制的情况下, GQ体制有着很大的优势。

Schnorr体制可以在离线是进行预计算, 这大大减少了实时计算量, 在计算机性能受限的情况下, Schnorr体制是很好的选择。

参考文献

[1]Gold wasser S, Micali S, Rack off C.The Knowledge Complexity of Interactive Proof Systems[J].Comput, 1989, 18 (1) :186-208.

[2]Goldreich O, Micati S, Wigderson A.Proofs that Yield Nothing but Their Validity or All Languages in NP Have Zero-knowledge Proof Systems[J].ACM, 1991, 38 (3) :691-729.

[3]Feige U, Fiat A, Shamir A.Zero Knowledge Proof of Identity[J].Journal of Cryptology, 1988, 1 (2) :77-94.

[4]Schnorr CP.Efficient Signature Generation for Smart Card[J].Journal of Cryptology, 1991, 4 (3) :161-174.

身份密码体制 篇2

一、椭圆曲线密码体制

椭圆曲线加密法ECC(Elliptic Curve Cryptography)是一种公钥加密技术,以椭圆曲线理论为基础,利用有限域上椭圆曲线的点构成的Abel群离散对数难解性,实现加密、解密和数字签名,将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,就可以建立基于椭圆曲线的对应密码体制。椭圆曲线是由下列韦尔斯特拉斯Weierstrass方程所确定的平面曲线:

椭圆曲线加密算法以其密钥长度小、安全性能高、整个数字签名耗时小,使其在智能终端应用中有很大的发展潜力,比如掌上电脑、移动手机等都能有更好的表现。而在网络中,ECC算法也保证了其协同工作的实时性,使用ECC算法加密敏感性级别较高的数据(如密钥),速度上能够满足大数据量要求,而且安全性高,能很好地保障系统的安全。

由于椭圆曲线密码体制的安全性只与椭圆曲线的安全性有关,而椭圆曲线安全性是由ECDLP求解的困难性决定的,因此,为了保证ECDLP是难解的,在选取椭圆曲线的时候除了选择合适的参数(a,b),使得相应的Weierstrass方程满足非超奇异椭圆曲线的要求外,还要选取合适的有限域GF(q),使得q满足#E能被一大素数(≥30位的整数)整除,或q本身就是一个大素数。安全的椭圆曲线也就是能抵抗各种已有攻击算法攻击的椭圆曲线。

1. 选取安全椭圆曲线时应该遵循的一些原则

(1)E选用非超奇异椭圆曲线,而不选取奇异椭圆曲线、超椭圆曲线以及反常椭圆曲线;

(2)#E不能整除qk-1,1≤k≤20;

(3)当q=P为素数时,#E应为素数,随机选取椭圆曲线上的一点作为基点;当q=2m时,#E应包含大的素因子,如#E=2n,4n,其中的n是大素数,且m不取合数。随机选取E上一阶为n的点作为基点;

(4)选择以基点生成循环子域H∈GF(q)上实现ECC,|H|是#E的最大素因子。

2. 描述一个利用椭圆曲线进行加密通信的过程

(1)用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点作为基点G,选择一个私有密钥k,并生成公开密钥K=k G;

(2)用户A将Ep(a,b)和点K,G传给用户B;

(3)用户B接到信息后,将待传输的明文编码到Ep(a,b)上一点M,并产生一个随机整数r(r

(4)用户B将C1、C2传给用户A;

(5)用户A接到信息后,计算C1-k C2,结果就是点M。

因为C1-k C2=M+r K-k(r G)=M+r K-r(k G)=M,再对点M进行解码就可以得到明文。

在这个加密通信中,如果有一个入侵H,他只能看到Ep(a,b)、K、G、C1、C2而通过K、G求k或通过C1、C2求r都是相对困难的。因此H无法得到A、B间传送的明文信息。基于椭圆曲线的密码体制如图1所示。

二、基于椭圆曲线密码体制的网络身份认证系统

由于网络具有信息量大的特点,其主要威胁来自于非授权用户的非法访问,因此它对数据完整性的要求很高,需要最快的速度提供最高的安全性,保证信息的机密性、完整性和有效性。网络身份认证是依靠用户账号、口令或者生物特征等信息来实现的,这些认证方法在某种程度上存在着安全隐患,如账号、口令或指纹特征信息在存储、传输过程中可能被截取、被篡改等。在身份认证系统中,起关键作用的是其中的加密体系。本文设计的身份认证系统中,用户首先要通过认证模块进行注册,注册成功后,获得经过系统认证中心C A签名的公钥和私钥。用户公钥和CA的公钥都是公开信息,用户的私钥只有用户本人知道,由用户自己保存。

1. 系统的总体结构

假设通信的是A与B双方,A与B处在同一个网络中,文本加解密采用对称算法AES,而密钥的传输与签名验签都采用非对称算法ECC。系统由服务器和客户端两部分组成,如图2所示,服务器端包括代理服务器、认证服务器、应用服务器;客户端包括代理客户端、认证客户端。代理客户端和代理服务器共同完成代理功能,认证客户端和认证服务器共同完成身份认证功能。

系统模型主要工作流程如下:

(1)将用户信息存放在系统数据库中;

(2)客户端应用程序通过客户端代理向认证模块请求申请登录认证;

(3)认证模块检查用户身份并完成认证过程,向客户端发放应用服务器的Ticket;

(4)客户端向安全代理服务器请求获取访问策略数据;

(5)安全代理服务器读取访问控制表中对应的策略控制记录,确定用户是否有权限访问相应的应用服务器资源;

(6)确定用户有权访问后,连接到相应的应用服务器;

(7)客户端与应用服务器间建立起了一条加密通道,双方通过此通道来交换数据。

2. 系统功能模块及实现

(1)认证模块。认证模块主要实现身份认证、密钥分发等功能,采用基于公钥密码体制的改进Kerberos认证协议来对用户进行身份认证,是模型的核心部分。

认证模块由认证客户端模块、认证服务器端模块组成。当客户端代理接到来自客户端的任意请求时,先判断是否为客户端代理启动后接收到的第一个请求,如果是,则客户端代理必须先去认证服务器进行身份认证。

(1)认证客户端。认证客户端主要包括六个模块,分别为:A S请求模块、TGS请求模块、GSSAPI接口模块、Kerberos GSSAPI模块、票据列出模块、票据销毁模块。

AS请求模块主要功能是用户获取TGS的票据TGT。当用户进行身份认证时,AS请求模块被调用,从AS服务器中获取TGT。AS请求模块包括获取Ticket模块和报错子模块。通过调用ECC加密模块,对每条信息进行必要的安全处理;TGS请求模块主要用于获得应用服务器的票据。在调用TGS请求之前,客户端必须己经得到TGT,以便用TGT向TG服务器证明自己的身份。GSSAPI接口模块用于实现与客户端代理的接口,客户端代理调用GSSAPI接口模块来进行身份认证;Kerberos GSSAPI模块被GSSAPI接口模块调用,真正实现建立安全上下文,报文保护级别协商以及对每条报文的保护。通过调用Kerberos GSSAPI模块,用户获得与代理服务器进行加密通信的会话密钥。票据列出模块用于列出保留在缓存中的主要实体名和当前所有活动票据的内容。票据销毁模块用于销毁所有的票据,以防止他人窃取票据,当用户断开与服务器的连接时,系统会调用该模块来销毁用户的票据。

(2)认证服务器。认证服务器模块主要包括KDC模块、GSSAPI接口模块Kerberos GSSAPI模块以及其他辅助模块。

KDC模块主要完成用户身份认证和票据分发等功能,包括AS请求处理子模块和TGS请求处理子模块。它与认证客户端的AS请求模块和TGS请求模块一起工作,来完成身份认证和票据分发功能;GSSAPI接口模块用于实现与代理服务器的接口,代理服务器调用GSSAPI接口模块来进行身份认证,而GSSAPI接口模块则调用Kerberos GSSAPI,用于真正实现建立安全上下文,报文保护级别协商以及对每条报文的保护。

(2)代理模块。代理模块在模型中主要实现客户端应用程序通过代理客户端、代理服务器访问应用服务器的功能,通过采用Socks5协议实现。

代理模块分别在客户端和应用服务器端加载一个代理软件。客户端代理接受客户端的所有请求,经处理后转发给服务器端代理。客户端代理首先与代理服务器建立一个TCP连接,通常SOCKS端口为1080,通过安全隧道,代理服务器认证并接受所有来自客户端软件的通信。若身份得以认证,则安全服务器将请求递交应用服务器,处理请求后并将结果返回安全服务器,安全服务器将此结果返回给客户端。

安全代理服务器在确认客户端连接请求有效后接管连接,代为向应用服务器发出连接请求,安全代理服务器应根据应用服务器的应答,决定如何响应客户端请求,代理服务进程应当连接两个连接,客户端与代理服务进程间的连接、代理服务进程与应用服务器端的连接。为确认连接的唯一性与时效性,代理进程应当维护代理连接表或相关数据库。安全代理服务器为所有网络通信提供了一个安全隧道,在建立通道的过程中,存在用户认证的过程。用户经过认证和原始协议请求,通过GSSAPI建立的安全隧道传送。

(3)加密模块。加密模块在系统中主要完成对数据的加解密处理,通过调用椭圆曲线加密算法具体实现。模型中采用ECIES加解密方案,具体实现过程采用bor Zoi算法库。bor Zoi是个免费的C++椭圆曲线加密库,含有完整的源代码,提供了定义在特征值为2的有限域上的算法,提供了加密模块。

三、系统安全性分析

系统提供了应用层的安全解决方案,可作为网络的授权访问控制中心,提供用户到应用服务器的访问控制服务。基于椭圆曲线加密法的网络身份认证,用户可以采用较短的密钥长度来实现较高的安全性,这样既有便于用户的记忆也提高了服务器的计算速度,从而将大大缩短登录时间。在椭圆曲线密码体制中,椭圆曲线Ep(a,b)中p、a、b的任何一个数字改变就产生新椭圆曲线方程,这样既可为用户提供丰富的选择性也可以为服务器节约更广阔的存储空间,同时确保网络信息的保密性、完整性和可用性。

本文通过分析椭圆曲线密码体制,建立了网络身份认证系统模型,该模型采用软硬件协同的方式,基于混合加密体制,使用速度快而安全性高的ECC算法进行加解密、签名与验证签名,对网络的信息建立起良好的保护的屏障,能够很好地抵抗重放攻击、猜测攻击、网络窃听攻击,整个网络身份认证方案简单有效。

参考文献

身份密码体制 篇3

一次性密码(One Time Password,简称OTP):又称动态密码,是只能使用一次的密码。一般的静态密码在安全性上容易被木马盗取,或者只要花上一定的时间,也可也被暴力破解。为了解决一般密码容易被破解的情况,因此开发出一次性密码的解决方案。

2 原理

传统的密码通常只能在用户需求时才进行修改,这类密码大多缓存在计算机硬盘上,因此很容易被破解。

与静态密码不同,一次性密码只会在用户每次登陆时才发生更改。动态密码有2种产生访方式:1)与时间同步;2)与计数器同步。

这2种方式都要求用户携带一个与服务器同步的小型硬件设备,并且使用一些算法来生产密码。而手机无疑是目前大多数人携带的移动设备,大多智能手机都支持Java环境,这就便于用户安装java密码产生器程序。手机上的时间一般与标准时间非常接近,所以我们采用与时间同步的OTP。对于可能出现时间偏差的问题,需要在提示用户同步标准时间,这点用户也很容易接收。OTP是建立在某种加密算法处理之上,以根据时间参数,密钥以及用户必须提供一个以知值(比如个人个人标识符(PIN))产生当前的密码。例如,基于哈希的OTP试用加密哈希算法来计算密码。加密哈希算法是一种单向函数,即:将任意长度的消息映射为固定长度的字符串。因此基于哈希的OTP首先进行输入(同步时间,密钥,PIN),然后通过单向函数运行它们,并且产生固定长度的密码。

下面来讲讲如何利用手机来建立OTP解决方案。在这个方案中,我们使用J2me和密钥哈希消息身份认证来创建与时间同步的OTP。手机作为客户端程序来创建OTP,而密码验证服务器,采用jsp和Mysql技术。

3 手机OTP解决方案

OPT解决方案中,主要有2部分,一个是OTP身份验证web服务器,该服务器由MySQL提供支持并且集成到JSP中。另一部分是手机客户端OTP产生器,用户通过安装手机客户端,就可以运行它来生产新的OTP。

每个用户在获取手机客户端OTP产生器的时候,由web服务器为每个用户安装的客户端程序产生不同的PIN和哈希密钥,这样制约OTP的3大要素在用户使用手机来产生密码时都确定了。

已了解OTP在用户级别的工作原理,但此解决方案是如何在功能级别上工作的呢?这个基于哈希的OTP解决方案有两个输入值:密钥和时间。但是,OTP解决方案还具有与实现程序相关的元数据,包括执行身份验证时用户必须键入的密钥的长度和预期OTP值的长度。

示例程序将生成长度为六个字符的OTP,并且可支持最多八个字符。为安全起见,该实现使用将密钥长度设置为512个字节的一些固定长度缓冲区。但是,假设密钥是密码学角度上的高质量随机数字,则会需要巨大的密钥空间。此类密钥将不会成为生产部署中的脆弱环节。

特定用户(或从技术角度讲,具有特定密钥)每次进行身份验证尝试时,当前时间都会变化。OTP解决方案的安全性依赖于永不重复使用的当前时间;这一点由OTP服务器保证。密钥哈希消息身份验证代码(HMAC)是基于密钥的一种加密哈希。或换句话说,HMAC接受任意消息和密钥,并将消息映射成固定长度的摘要值(如20字节),从而确保只有具有相同密钥的人才能从相同的消息生成相同的摘要值。

HMAC-OTP的首个计算步骤是接受计数值,并将其编码为HMAC计算的输入消息。实际使用时,消息是设为计数器值的8字节缓冲区。

图1为方案整体流程图。

当收到Web浏览器提示时,用户需要启动手机客户端程序,将客户端显示的口令键入OTP值并单击“Submit”(提交)按钮进行身份验证。OTP插件模块从JSP得到通知,并且随后调用Web服务来检验身份验证请求。Web服务在My Sql表中查找用户的密钥和计数器值、检验OTP计算,并响应身份验证为成功还是失败。

4 手机客户端

此解决方案是基于哈希的OTP解决方案有两个输入值:密钥和PIN,此外,OTP解决方案还具有与现实程序相关的元数据,包括执行身份验证时用户必须键入预期OTP值的长度。

用户从web服务器或者wap服务器获取手机客户端,服务器端对每个产生的客户端都包含不同的密钥和PIN。PIN区分不同的用户,保存在MySql中。过程如图2所示:

手机客户端采用标准J2ME开发语言,适用java描述哈希算法,根据获取手机的当前时间(年-月-日-小时-分),用户PIN,用户512位密钥生成6位或者8为字符,即一次性口令。由于时间精确到分钟,所以口令每分钟变化一次。如下图所示,描述客户端工作流程。

5 身份验证Web服务器

身份验证Web服务负责执行实际的OTP身份验证,方法是确定提供的OTP值是否表明用户已拥有密钥。在MYSQL数据库中保存了每个用户的PIN,密钥。当用户提交验证时,需要用户输入PIN,Web服务器根据PIN查找用户的密钥,根据用户PIN,密钥和当前时间,采用客户端相同的哈希算法,计算出口令,验证用户就是验证用户输入的口令和Web服务器产生的口令是否一致。

6 结束语

采用时间同步的方法,需要用户手机的时间与标准时间一致,时间不一致,就会导致身份验证失败。为了便于用户在手机上更新到标准时间,可以在手机客户端上添加《同步标准时间》的功能。

在手机上实现一次性口令方案,将手机的特点融入其中,为用户非常方便的提供安全高效的验证方式。

参考文献

[1]Bruce Schneier.应用密码学[M].吴世忠,译.北京:机械工业出版社,2007.

身份密码体制 篇4

目前常用的锁具普遍为机械锁,其钥匙携带不方便,最大的问题是安全性不高。电子安全密码锁是基于这一要求的保险器件,其设计概念及应用与常见的保安密码锁有所不同。比较机械安全密码锁,具有设计实现简便、密码设定灵活、制造成本低廉等优点。

随着电子技术的高速发展,电子门禁系统应用越来越广泛。酒店用的IC卡控制电子锁,汽车遥感电子锁,以及按键式密码锁等都广泛应用与各种场合,尤其是基于单片机的电子锁成了当今锁业发展的一种趋势,大大提高了安全性[1],有很多学者在这方面做了大量工作[2,3,4]。但纵观目前市场上电子锁,仍然存在一定的不足之处,为此而设计了一种普遍实用、安全可靠,携带操作方便的电子密码锁。

1 系统解决方案

根据目前常用市场广泛使用的电子锁存在的不足,主要从以下几个方面提出相应的解决方案。

a) 密码机制

电子安全密码锁由开启意图码驱动,仅当开启意图码与设定的安全密码完全匹配时才开启密码锁[5]。开锁密码由存于钥匙和锁中的身份码(1~20位的ID码)和开锁者临时输入的密码(1~10位的临时码TC码)组成[6],采用这种双重识别机制有如下优点:1) 根据排列组合计算,试开开锁的几率几乎为零;2) 如收到正确的ID码,3次检测到错误的ID码提示非法使用钥匙自动进行报警并进入休眠状态,等一小时后才会重新接收钥匙信号;3) 如果收到不存在的ID码则不予以ID码的判断;4) 拾到钥匙者即使通过特殊实验得到ID码,但无法得知TC码从而得不到开门密码,无法打开门锁;相反知道TC码不知ID码也不能开锁,两种码缺一不可;5) 全部密码都存储在锁中,锁里边的数据只能写入,不能读出,所以密码安全可靠。

开锁过程根据情况可以选择不同的传输方式。如果对于安全性要求极高的地方,可以选择钥匙实体接触式的方式实现数据传输,防止信号泄露;对于一般场合可以采用红外线进行无线传输密码,而且有一定方向性,不易发生密码泄漏,使用十分方便。

具有反锁功能,出门时,门自动实现锁闭,在门外需要输入具有有效ID码的钥匙输入TC码才能开门,室内能直接开门,若在钥匙或室内的锁背后按下反锁键,在屋内开门也需要通过按键输入正确的密码(任意一个有效ID的正确TC码)方能打开房门。

b) 操作简便性设计

ID码只需要一次设置存储到钥匙和锁中,以后每次开锁只需输入TC码,由钥匙自动传输预先设定的ID码实现身份鉴定,密码传输完成后自动清除钥匙TC码。

钥匙配置方便。一把锁可以由使用该锁的所有人员各自设置各自的ID码和TC码(ID码和TC码一一对应),对同一把锁的使用人数没有任何限制;如果出现钥匙丢失或者被反锁在屋里,无须请开锁专家,更无须撬门,借钥匙或者从新购买一把钥匙进行ID码设置后便使用。

钥匙携带方便。如果所有门柜均采用该类型的锁,则只需一把钥匙来管理不同的锁,但同一把钥匙必须设置相同的ID号, TC码可相同也可不同;

c) 稳定可靠性设计

为了保证系统可靠运行,整个电源部分由市电和内部备用充电电池自动选择供给电源,在使用期间自动进行电源切换。而且内部电池能量快不足,有硬件控制自动接通室内市电充电。如果室内停电不能及时充电,在开锁时会自动提示更换电池。由于通电实现开门动作,缺电实现锁门动作,即使长期外出而且锁没能及时充上电,也不会影响锁的安全性。只要通电就可以输入密码开门。由于处理器几乎全处于待机的休眠状态,所以功耗十分低。

d) 扩展接口设计

锁具设置多功能模块接口,如设计预留通讯接口,视频音频现场实况监控接口等。根据需要可以方便地接入人性化功能模块,使得使用更为方便,适合现代化管理。

3 具体实现方法

a) 硬件结构

整个系统的硬件结构分为锁和钥匙两个部分。

锁的控制系统如图1所示,主要分为以下几个功能模块。

按键模块:在进行钥匙和锁的配对过程,经过锁后面的按键进行ID码和TC码的输入。如果门被反锁,在室内可以通过按键输入TC码进行开门。

电源管理模块:主要用来负责电源的电量检测和充电驱动功能。

控制模块:采用单片微处理器,主要完成以下几个功能:

1) 电源各个数据的接收检查、比较判断和发出相应控制指令等功能;

2) 完成通讯处理功能,获取各种输入数据;

3) 完成所有使用该锁的用户密码的存储、比对功能,语音提示报警条件判断等;

4) 负责扩展模块接口数据的处理。

开、锁、报警以及锁门状态提示等驱动模块:完成开锁门、锁门的驱动,出现意外进行报警驱动、以及开门、锁门、反锁等语音提示的驱动功能。

密码接收和应答信号发送模块:主要完成开关门的密码接收和成功完成相应动作的应答信号的发送等功能。在软件设计时不能让其传输任何有关密码的信号,只应答,不提示。

钥匙部分的控制原理图如图2所示。由以下三个部分组成:

人机接口模块:同样需要完成ID码的设置和显示,同时在开门时须完成密码的显示(可以根据硬件选择是否需要显示),使人机接口更友好。

控制模块:同样是一单片微处理器,主要完成ID码的存储和按键的处理,负责数据的读入和发送,收到应答信号自动清除TC码(开锁后切断电源同样可以清除TC码)。

通信模块:负责密码的传输和应答信号的接收。

b) 软件设计

控制软件同样也分钥匙和锁体两部分控制的程序。对于锁的控制部分软件包括主程序、数据接收中断程序、设置中断程序,接口数据中断处理程序等四个部分。

主程序的电源管理过程:充电时和一个较高的电压比较得一个逻辑低电平,当充电压变高后使得低电平变高从使引脚变化唤醒控制器;如果没有充电时,电源电压和一个低电压比较得一个逻辑高电平,当放电过量,低于比较基准电压,就输出低电平,从而再次导致引脚电平变化唤醒微处理器。另外,当有键按下时同样会唤醒微处理器进行按键处理。

接收数据中断服务程序流程图如图3所示。首先进行类别判断,如果是ID码,即是要求身份验证,身份验证通过传输的其余数据才会有效;在ID码验证通过的情况下,不管操作成功与否都会给与相应的提示。

对于ID码和TC码的判断均采用逐位比较判断的方式进行,获得通过才要求发送下一位的ID码或者密码,只有在全部正确的情况下才能通过。ID码和TC码在传输的时候同时加上标记数进行标记,接受方根据标记数可以分辨出当前所传输的数据是ID码或者TC码的哪一位。

设置时的外部中断服务程序主要包括:设置密码(开启设置功能的密码)的设置,反锁开门的设置,钥匙增加,ID码的修改,TC码的修改等几个功能。

钥匙部分的程序包括主程序,按键中断程序,和传串行中断程序三个部分。其中按键设置流程图如图4所示。

4 应用前景分析

本文采用实现身份和密码双重识别的机制的电子锁是集微电子技术与机通讯技术于一体的控制系统,具有扩展性强,安全性高,使用方便的特点。可广泛的应用于各种房门,汽车,以各种箱柜。同时其通讯功能为接入物业安保系统,远程报警等功能提供方便,适合现代化管理,具有广阔的应用前景。

参考文献

[1]赵一丹,徐晓林,周振峰.电子密码锁的系统原理、设计流程及流程图[J].嘉兴学院学报,2003,15(SI).

[2]李文石.电子锁设计与制作[M].北京:电子工业出版社,1994.

[3]黄胜全,杜春风.新型密码锁的研制[J].东北电力学院学报,2004,24(2).

[4]石文轩,宋薇.基于单片机MCS-51的智能密码锁设计[J].武汉工程职业技术学院学报,2004,6(4).

[5]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术.2005,13,95.

身份密码体制 篇5

1 RSA密码体制原理

1.1 RSA算法

RSA算法如下:

(1) 首先随机选两个大素数p, q, 计算n=p*q;

(2) 计算欧拉函数φ (n) = (p-1) * (q-1) ;

(3) 任选一个整数e, 要求e满足gcd (e, φ (n) ) =1;

(4) 根据公式e*d≡1 modφ (n) ;

(5) 加密:

将明文分成一定长度的明文块m,

加密过程是:c=m^e mod n

(6) 解密:

c=m^d mod n[1]

1.2 RSA密码体制中加密的核心算法

1.2.1 质数检测算法

(1) 计算q=sqr (n) ;

(2) q=q+1;

(3) For i=0 to q

1.2.2 欧几里德算法

欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:

定理:gcd (a, b) =gcd (b, a mod b)

证明:a可以表示成a=kb+r, 则r=a mod b

假设d是a, b的一个公约数, 则有

d|a, d|b, 而r=a-kb, 因此d|r

因此d是 (b, a mod b) 的公约数

假设d是 (b, a mod b) 的公约数, 则

d|b, d|r, 但是a=kb+r因此d也是 (a, b) 的公约数

因此 (a, b) 和 (b, a mod b) 的公约数是一样的, 其最大公约数也必然相等。[3]

1.2.3 幂次求余算法

幂次求余算法是计算M= (C*D) MOD N算法如下:

(1) D->B, W=1;//把D的值赋给B, 给W赋值1

(2) W^C MOD N->W//计算上次余数乘上C后模上N的结果赋给W

(3) if B=1结束输出W//如果B=1, 程序结束

Else B-1->B, goto步骤 (2) ;//不等于1, B=B-1, 转到步骤 (2)

算法流程图如图1。

1.3 拓展RSA密码体制中加密算法

1.3.1 基本运算算法

由于RSA的安全性取决于N的位数, 现在流行的RSA要求N的位数达到1024位, 这使得在RSA中涉及的四则运算都不能实现, 为了能把RSA的安全性提高, 我们必须重新设计基本运算。基本运算包括:四则运算, 求余运算, 比较大小算法, 指定位数大数生成运算等。下面以加法算法进行详细说明, 算法如下:

准备工作:把加数和被加数转换成字符串。

1) 读取被加数a (字符串) 和加数b (字符串) 进位标志JW=0

2) 保证a>b//如果a

3) For i=length[b]to 0 do{//从低位开始

4) IF JW=0 THEN//b的最高位做完后进位处理

5) IF JW=0 THEN//a的最高位运算结束后处理进位, 如99+1=100

6) RETURN str;//返回结果, 字符串

算法流程图如图2。

1.3.2 米勒-拉宾算法

当数值过大时, 3.2.1质数检测算法速度很就慢, 所以我们需要一种更高效的质数检测算法, 米勒-拉宾算法就是这样一个算法。由于米勒-拉宾法的非确定性, 当我们对判定素数的要求仅为需要为“是”的判定时, 用米勒-拉宾法比较容易, 算法如下:

Miller-Rabin (n)

把n-1写成n-1=2^k*m, 其中m是一个奇数

选取随机整数a, 使得1<=a<=n-1

若n通过一次测试, 则n不是素数的概率为25%。[2]算法流程图如图3。

2 RSA密码体制通信系统的设计与实现

2.1 RSA密码体制系统加密模块程序流程图

RSA密码体制中加密密匙生成及对明文加密的过程如图4所示。

2.2 RSA通信系统模块设计与实现

RSA通信系统中, 通信双方都同时具有发送和接收的能力, 即可以作为通信的加密端也可以作为通信的解密端。利用各自的不同公钥和私钥完成加密和解密, 从而完成信息的秘密传送。

2.2.1 RSA通信系统的发送端加密模块流程图

图5为通信发送流程图。

2.2.2 RSA通信系统的解密模块

RSA通信系统的解密模块数据流程图陈述系统怎样实现对信息进行解密的过程。如图6所示。

3 RSA的安全性分析

RSA的安全性依赖于大整数的因式分解问题。实际上, 人们推测RSA的安全性依赖于大整数的因式分解问题, 但谁也没有在数学上证明。可以想象可能会有完全不同的方式去分析RSA。然而, 如果这种方法能让密码解析员推导出d, 则它也可以用作大整数因式分解的新方法。最难以令人置信的是, 有些RSA变体已经被证明与因式分解同样困难。甚至从RSA加密的密文中恢复出某些特定的位也与解密整个消息同样困难。另外, 对RSA的具体实现存在一些针对协议而不是针对基本算法的攻击方法。

3.1 RSA的选择密文攻击

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装 (Blind) , 让拥有私钥的实体签署。然后, 经过计算就可得到它所想要的信息。实际上, 攻击利用的都是同一个弱点, 即存在这样一个事实:乘幂保留了输入的乘法结构:

(XM) ^d=X^d*M^d mod n

前面已经提到, 这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题, 主要措施有两条:一条是采用好的公钥协议, 保证工作过程中实体不对其他实体任意产生的信息解密, 不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名, 签名时首先使用One-Way Hash Function对文档作HASH处理。[4]

3.2 RSA的公共模数攻击

若系统中共有一个模数, 只是不同的人拥有不同的e和d, 系统将是危险的。最普遍的情况是同一信息用不同的公钥加密, 这些公钥共模而且互质, 那末该信息无需私钥就可得到恢复。设P为信息明文, 两个加密密钥为e1和e2, 公共模数是n, 则:

C1=P^e1 mod n

C2=P^e2 mod n

密码分析者知道n、e1、e2、C1和C2, 就能得到P。

因为e1和e2互质, 故用Euclidean算法能找到r和s, 满足:

r*e1+s*e2=1

假设r为负数, 需再用Euclidean算法计算C1^ (-1) , 则

(C1^ (-1) ) ^ (-r) *C2^s=P mod n

另外, 还有其它几种利用公共模数攻击的方法。总之, 如果知道给定模数的一对e和d, 一是有利于攻击者分解模数, 一是有利于攻击者计算出其它成对的e和d, 而无需分解模数。解决办法只有一个, 那就是不要共享模数n。

RSA的小指数攻击。有一种提高RSA速度的建议是使公钥e取较小的值, 这样会使加密变得易于实现, 速度有所提高。但这样作是不安全的, 对付办法就是e和d都取较大的值。[4]

RSA算法是第一个能同时用于加密和数字签名的算法, 也易于理解和操作。RSA是被研究得最广泛的公钥算法, 从提出到现在已近二十年, 经历了各种攻击的考验, 逐渐为人们接受, 普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解, 但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何, 而且密码学界多数人士倾向于因子分解不是NPC问题。

3.3 RSA加密算法的缺点

1) 产生密钥很麻烦, 受到素数产生技术的限制, 因而难以做到一次一密。

2) 安全性, RSA的安全性依赖于大数的因子分解, 但并没有从理论上证明破译RSA的难度与大数分解难度等价, 而且密码学界多数人士倾向于因子分解不是NPC问题。目前, 人们已能分解140多个十进制位的大素数, 这就要求使用更长的密钥, 速度更慢。

3) 速度太慢, 由于RSA的分组长度太大, 为保证安全性, n至少也要600 bitx以上, 使运算代价很高, 尤其是速度较慢, 较对称密码算法慢几个数量级;且随着大数分解技术的发展, 这个长度还在增加, 不利于数据格式的标准化。目前, SET协议中要求CA采用2048比特长的密钥, 其他实体使用1024比特的密钥。为了速度问题, 目前人们广泛使用单, 公钥密码结合使用的方法, 优缺点互补:单钥密码加密速度快, 人们用它来加密较长的文件, 然后用RSA来给文件密钥加密, 极好的解决了单钥密码的密钥分发问题。[1]

参考文献

[1]步山岳.计算机信息安全技术[M].北京:高等教育出版社, 2005.

[2]何大可.现代密码学[M].北京:人民邮电出版社, 2009.

[3]Douglas R.Stinson.密码学原理与实践[M].北京:电子工业出版社, 2003:131-132.

上一篇:客户为本推动创新下一篇:嵌入式Web服务器