设计个性签名优秀3篇

随着移动互联网和社交网络的飞速发展,越来越多人热衷于更换个性签名,个性签名是传播信息和提高视觉审美的一种形式。你知道什么样的个性签名才是特别的吗?的小编精心为您带来了设计个性签名优秀3篇,希望能够给予您一些参考与帮助。

设计个性签名范文 篇1

[关键词]数字签名签名可公开验证

一、引言

随着网络技术的发展,全球经济一体化进程的加快,电子商务在世界范围内日渐得到普及和应用。但与此同时,交易的风险性和不确定性也大大增加,安全问题已经成为电子商务发展的瓶颈。近几年来,由于数字签名技术的广泛运用,电子商务系的统安全性得到了较好的保证。

然而,在现代商务活动中,我们常常会遇到一些需要把某些权力转交给特定的人,人人代为行使这些权利。比如,又一个单位的董事长需要出国考察,在考察期间,为了不耽误公司的正常工作,董事长可以委托一个特定的人员代为行使董事长的权力。为此,基于身份的密码体制就成为解决问题的关键。基于身份的密码学是由Shamir于1984年提出的。其主要观点是,系统中不需要证书,可以使用用户的标识如姓名、IP地址、电子邮件地址等作为公钥。用户的私钥通过一个被称作私钥生成器PKG(Privatekeygenerator)的可信任第三方进行计算得到。基于身份的密码系统的主要好处是可以减少证书存储和管理开销。

1996年Mambo、Usuda和Okamoto中给出了解决上述事例的方法,首先提出了签名的概念,并提出了一个简单的签名方案。签名是指原始签名者可以将其签名权力授权给签名者,然后签名者就可以代表原始签名者进行签名,当验证者验证一个签名时,需要同时验证签名和原始签名者的授权协议。然而,签名者原始签名者行使权时,其签名可以被任何第三方进行验证。在某些情况下,并不希望任何人都能验证签名,而只有指定的验证人才能验证签名。这在实际中是需要的,如电子商务中的电子投标,电子投票等。

文献介绍了其他的几种签名方案,但是这些方案在安全性方面都不同的有缺陷。1996年,Jakobsson等介绍了一个新的原语——指定验证者签名,指定验证者签名是指一个原始签名者可以使指定验证者相信他的申明是正确的,实现了只有指定验证者才能验证原始签名者的签名的特性,原因是指定验证者可以生成与原始签名者不可区分的签名,该签名虽然外人不能区分,是由原始签名者还是指定验证者所生成的,但却可以验证,并可以确定是他们二者之一所生成。文献中Jakobsson等人也首次提出了一种强指定验证者签名方案的概念,强指定验证者签名是指只有指定验证者可以验证原始签名者的签名的有效性,但是他对签名的验证不能使第三方相信此签名是由谁生成的,因为强指定验证者能模拟原始签名者生成一个相同的副本,而且只有强指定验证者可以验证签名。后来Saeednia,Vergnaud和Laguil-laumie给出其形式化的定义,并进一步的加以延伸。如何将强指定验证的特性引入到签名体制中,值得深入的研究。

2004年,Li和Chen提出了一个基于身份的签密方案,但是文献证明文献[7]中的方案不具有强不可伪造和前向安全的性质。在本文中,通过结合签名的思想,提出了一个验证签名的方案。该方案实现了签名只能被指定验证人才能验证的特性,还具有签名长度短和计算开销小的优点。

二、双线性配对和GDH群

下面描述一些常用的与双线性映射有关的数学问题。

定义1(双线性配对)设G1是阶为q的循环加法群,G2是阶为q的循环乘法群,q是一个大素数,双线性配对是一个映射e:G1×G1G2,满足:

(1)双线性:对任意的P,Q∈G1,对任意a,b∈Zq,有e(aP,bQ)=e(P,Q)ab。

(2)非退化性:存在P,Q∈G1,使得e(P,Q)≠1。

(3)可计算性:对所有P,Q∈G1,则e(P,Q)是实际可计算的。

定义2(GDH群)如果对于一个群G,求解其上的CDH问题是困难的,而其上的DDH问题是多项式时间可解的,则称群G为GDH群。具体描述如下:

DLP(DiscreteLogarithmProblem):已知两个群元素P、Q,找一整数n使得Q=nP立。

DDHP(DecisionDiffie-HellmanProblem):对于a,b,c∈RZq*,P∈G1,已知P、aP、bP、cP,判断c=abmodq是否成立。

CDHP(ComputationalDiffie-HellmanProblem):对于a,b∈RZq*,P∈G1,已知P、aP、bP,计算abP。

GDHP(GapDiffie-HellmanProblem):如果在群G1上,DDHP容易但CDHP困难,则G1被称为GDH群。

三、一种基于身份认证的数字签名方案

本文构造了一个新的基于身份认证的不可否认数字签名方案。该方案是为适应电子商务领域中签名长度短、系统开销小、安全程度高等特点而设计的,方案过程如下:

1.系统初始化

给定安全参数k,PKG选择阶为素数q的群G1、G2,群G1的生成元P,双线性映射e:G1×G1G2。定义密码学上安全的hash函数:H:{0,1}*Zq*,H1:{0,1}*G1,H2:G2{0,1}n,H3:{0,1}n×G2Zq*。然后,PKG选择主密钥s∈RZq*,计算Ppub=sP,选择安全的对称加密算法(E,D)(对应的明文、密文、密钥长度均为n)。最后,PKG保密s,并公开系统参数:{G1,G2,n,q,e,P,Ppub,H,H1,H2,H3,E,D}。

四、方案安全性分析

结论1所提方案是一个可公开验证的签名方案。

分析:在该方案中,对于消息m,任何第三方可通过(mw,c,r,S)首先恢复出k1′,然后验证r=H3(c,k1′)是否成立来检验密文的来源和合法性。

结论2所提方案具有不可伪造性。

分析:在签名方案中,在原始签名者对签名者进行授权阶段,原始签名者用签名方案对授权信息进行签名,由签名的不可伪造性可知,任何人不能伪造原始签名者对授权信息的签名。在签名阶段,除PKG和指定验证者之外,任何没有签名密钥的人不可能对消息m伪造一个有效的指定验证者签名。攻击者要想得到签名者的私钥,必须获得SB=sQB,这需要知道s,而从Ppub=sP求解s相当于求解离散对数问题。因此,方案在离散对数困难问题假设下具有不可伪造性。

五、结论

本文在分析现有基于身份认证的基础上,提出一种基于身份认证的数字签名方案。在这种方案中,只有指定接收者才能解密密文和恢复消息明文,并可以认证消息和签名的有效性。该方案实现了签名只能被指定验证人才能验证的特性,还具有签名长度短和计算开销小的优点。这种方案对于电子商务领域的电子支付、电子招投标等商务活动的安全性有一定的借鉴意义。

参考文献

[1]MamboM,UsudaK,OkamotoE.Proxysignature:delegationofthepowertosignmessages[J].IEICETransactionsonFundamentals,1996,E792A(9):1338~1353

[2]李继国曹珍富李建中等:签名的现状与进展[J].通信学报,2003,24(10):114~124

[3]AxelssonS.Intrusiondetectionsystems:asurveyandtaxonomy,No99-15[R].DeptofComputerEngineering,ChalmersUniversityofTechnology,2000~03

[4]AuWai-Ho,ChanKCC.FARM:adataminingsystemfordiscover-ingfuzzyassociationrules[C]//The1999IEEEInternationalFuzzySystemsConference,FUZZ-IEEE’99,Seoul,SouthKorea,22Aug.-25Aug.1999,c1999,33:1217~1222

[5]BaoHai-yong,Caozhen-fu,WangSheng-bao,Identity-basedthresholdproxysignaturesschemewithknown,signers[Z].TAMC,2006

[6]LiXiang-xue,ChenKe-fei.Identitybasedproxy-signcryptionsthemefrompairings[C]//ZhangLiang-jie,LiMing-lu,AmitPS,etal.ProceedingsoftheIEEEInternationalConferenceonSer-vicesComputing(SCC2004).LosAlamitos,California:IEEEComputerSocietyPress,2004:494~497

[7]WangMeng,LiHui,LiuZhi-jing.Efficientidentitybasedproxy-inscriptionschemeswithforwardsecurityandpublicverifiability.[C]//LuXi-change,ZhaoWei.TheThirdInternationalConferenceonNetworkingandMobileComputing(ICcomMC2005).Berlin:Springer-Vela,2005,3619:982~991

设计个性签名范文 篇2

关键词:

基于身份的签名;双线性对;指定验证者的签名;门限签名

中图分类号: TP309.7

文献标识码:A

0引言

签名的概念首先由Mambo等于1996年引入[1],即原始签名人将其签名能力授权给签名人,签名人代表原始签名人进行签名。Zhang和Kim等最早提出了门限签名方案[2,3], (t, n)门限签名就是原始签名人授权n个签名人,使得任意t或更多的签名人可以合作产生对消息的签名。在某些情况下,希望只有签名人指定的验证者才能验证门限签名。这种签名方式在实际中得到了应用,如电子商务中的电子投标等。基于身份的加密和签名方案首先由Shamir于1984年提出[4],该方案的主要思想就是利用用户的身份作为其公钥。简化了基于证书的公钥体制对公钥证书的管理。

1预备知识

1.1双线性对

G1是阶为素数q的加法循环群,P为G1中任一生成元,G2是与G1同阶的乘法循环群。双线性对是指满足以下性质的一个映射:G1×G1G2:

双线性:对于任意的P1,P2,Q∈G1,有

从而对所有的P,Q∈G1,a,b∈Z*q,满足:

非退化性:存在P,Q∈G1,使得(P,Q)≠IG2,其中IG2为群G2的单位元。

可计算性:对于任意P,Q∈G1存在有效的算法计算(P,Q)。

1.2GDH群

1.2.1计算DH问题

定义1给定(P,aP,bP),计算abP,称为计算DH问题(Computational DiffieHellman Problem,CDHP)。其中a,b∈Z*q。

一个概率多项式时间(Probabilistic, PolynomialTime,PPT)算法A在G1群内解决CDHP的成功概率记为:

SuccCDHA,G1

CDH假设:对于任何PPT算法A,SuccCDHA,G1可以忽略。

1.2.2判定DH问题

定义2给定(P,aP,bP,cP),其中a,b,c∈Z*q,判定cP=abP,称为判定DiffieHellman问题(Decisional DiffieHellman Problem,DDHP)。

GDH群(Gap DiffieHellman group):一个素数阶群G1是GDH群,当存在一个有效的PPT算法在G1上解决DDHP,同时不存在PPT算法以不可忽略的概率成功解决CDHP。

2基于身份指定验证人的门限签名体制的定义

定义3一个基于身份门限签名体制是由一组多项式时间算法组成的算法组(Setup,Extract,PD,PV,Pshare,PSgn,Pver),算法定义如下:

Setup:参数生成算法,用于生成系统参数。

Extract:私钥生成算法,用于为参与签名的用户生成密钥对。

PD:授权算法,用于原始签名人为多个签名人生成授权证书。

PV:授权验证算法,用于验证上算法生成的证书是否合法。

Pshare:密钥生成算法,用于为多个签名人生成秘密分享值。

PSgn:指定验证者的门限签名算法,用于产生最终的签名。

Pver:指定验证者的门限签名验证算法,用于验证签名的合法性。

3基于身份指定验证人的门限签名

3.1初始化

3.1.1参数的生成

G1是一个素数阶为q生成元为P的GDH群,其中q>2k,k是安全参数。:G1×G1G2是双线性对映射。主密钥s∈Z*q,Ppub=sP。hash函数:

3.1.2密钥的生成

P0是原始签名人,PS={P1,P2,…,Pn}是n个签名人组成的签名群,PV是指定验证者,PKG根据身份信息ID0,IDi(i=1,2,…,n),IDV来计算公钥Q0=H1(ID0)∈G1,Qi=H1(IDi)∈G1,QV=H1(IDV)∈G1和相应私钥d0=sQ0∈G1,di=sQi∈G1,dIDV=sQV∈G1。

3.2分存密钥的生成

每个Pi∈PS随机选择一个(t-1)阶的多项式

(1)

其中ail∈Z*q,公开Ail=ailP(l=0,1,…,t-1)。

Pi通过安全信道把fi(j)给Pj(j≠i)。Pj接收到fi(j)之后验证其有效性

fi(j)P=∑t-1k=0jkAik

(2)

每个Pi计算它的秘密共享ri=∑nk=1fk(i)并公开Ui=riP。

3.3密钥的生成

原始签名人P0委托他的签名权给签名人Pi(i=1,2,…,n),P0和每个Pi完成以下各步:

P0使用ChaCheon[5]提出的基于身份的签名方案为mω进行签名:

选择随机数rω∈Z*q,计算Uω=rωQ0,hω=H2(mω,Uω)和Vω=(rω+hω)d0。然后P0把发送给Pi∈PS。

其中mω是一个含有门限值、委托签名的有效期、原始签名人,签名人以及验证者身份标志的委托证书。

Pi验证原始签名人对mω签名的有效性:计算

然后判断

(3)

是否成立。如果成立则接受签名,否则拒绝。

Pi计算si=di+Vω作为他的私钥。然后随机选择(t-1)阶多项式:

(4)

其中系数bil∈G1,公开Bil=(P,bil),l=1,2,…,t-1。

Pi∈PS可计算出

(5)

Pi把gi(j)(j≠i)通过安全信道发送给Pj。Pi接收gj(i),并通过下式验证其有效性:

最后Pi计算他的密钥的分享值为skpi=∑nk=1gk(i),公开(P,skpi)。

3.4签名的生成

签名群PS中的任意t个签名人(设为D={P1,P2,…,Pt})代表原始签名人对消息m(m与委托证书mω中所要求签发的消息一致)进行指定验证者Pv的签名,每个签名人Pi∈D(i=1,2,…,t)完成以下步骤:

计算:

签名过程采用修改的Cheon等[6]提出的基于身份的签名方案:

计算:

为签名份额。

指定clerk接收到Vi并通过下式验证其正确性:

如果式(6)成立,σi为Pi对m的有效的签名。当D中所有人对m的签名都有效时,clerk计算对消息m的签名为。

3.5签名的验证

接收到之后,指定的验证者需要进行以下各步:

判断m是否与mω中的要求一致,如果不满足mω中的条件,则停止,否则继续进行下一步。

判断P0与D中的签名人的身份是否与mω中所标识的原始签名人和签名人的身份相符。如果不符合则停止,否则进行下一步。

计算:

成立时,接受签名。

4方案性能分析

4.1正确性证明

签名人通过验证式(3)是否成立来确定对委托证书mω的签名的有效性:

Clerk通过验证式(6)是否成立来确定部分签名Vi的有效性:

指定的验证人通过验证式(7)是否成立来确定生成的签名的有效性:

4.2安全性分析

不可伪造性。本文所提出的方案中,授权证书的签发采用了ChaCheon签名体制,该签名已被证明在随机预言模型下能抵抗基于适应性选择消息和固定ID的存在性伪造攻击(EFfIDCMA)。即本文所提方案中,攻击者无法伪造授权证书。本方案签名过程采用修改的Cheon等[6]提出的基于身份的签名方案,该方案在随机预言模型下已被证明是安全的。本文的修改并不影响原方案的安全性,即本文所提方案攻击者无法伪造签名。不能通过假冒被指定验证者的身份来获得验证签名的权利,正如不能伪造签名的原因一样。所以本方案具有不可伪造性。

• 可区分性。委托证书mω里包含了所有签名人以及原始签名人的身份信息,而且签名等式的验证过程中都需要原始签名人以及参与签名的签名人的公钥。因此本方案能满足可区分性。

• 不可否认性。签名的验证等式里包含了委托证书以及签名人的公钥,因此一旦签名人为原始签名人产生了签名就不能否认这个签名。

• 限制验证性。仅仅是原始签名人指定的验证者PV才能验证签名群产生的签名,因为如果敌手在不知道验证人PV的私钥dIDV的情况下计算Y*就相当于从Ui中计算出ri,这是离散对数难解问题。

4.3安全性证明

4.3.1基于身份指定验证者的门限签名体制的安全性模型

以形式化的语言描述,称基于身份的指定验证者的门限签名体制是适应性选择消息和固定ID的攻击下存在性不可伪造的(EFfIDCMA),如果对任意的概率多项式时间的攻击者A,在下面的试验中获得非零返回值的概率是可以忽略的。

定义4试验

IDT_PS=(Setup,Extract,Sshare,PD,PV,Pshare,PSgn,Pver)是基于身份指定验证者的门限签名体制,攻击者为A,安全参数k,fID_CMA是适应性选择消息和固定ID攻击,定义试验ExpfIDCMAIDT_PS,A(k):

(1) 运行Setup,输入1k,把生成的系统参数para给A。

(2) 令Clist粒Dlist粒Glist粒Slist痢*

(3) A在输入para的情况下,以任意次序做任意次以下操作或询问:

1) 询问Extract(.)随机预言机,输入身份IDi,得到相应私钥di,令Clist=Clist∪{(IDi,di)}; 2) 询问PD(.)随机预言机,若A得到proxyp0PSPD(IDi,mω),令Dlist=Dlist∪{(IDi,mω,proxyp0PS)};

3) Pshare操作,请求生成签名人IDj的密钥的分享值skpj,设原始签名人的身份为IDi,若A得到

4) 询问PSgn(.)随机预言机,设IDk为指定验证者的身份。若A得到

(m,τ)PSgn(m,IDk,skpj,proxyp0PS)

(4) A输出(IDi,mω,proxyp0PS)或(proxyp0PS,m,τ,IDk,skpj)。

(5) 若A的输出结果满足下面条件之一,则攻击成功:

1) 输出为(IDi,mω,proxyp0PS),满足PV(proxyp0PS,IDi)=1,(IDi,.)Clist,且(IDi,mω,proxyp0PS)Dlist,则成功伪造了一个委托签名,ExpfIDCMAIDT_PS,A(k)返回值1。

2) 输出为(proxyp0PS,m,τ,IDk,skpj),设授权者身份IDi,者身份IDj,指定验证者身份IDk。满足Pver(IDi,m,τ,IDk,IDj,proxyp0PS)=1,(proxyp0PS,m,τ,IDk,skpj)Slist,(IDi,.)Clist,(ID0,.)Clist,(IDv,.)Clist,(IDj,proxyp0PS,skpj,IDi)Glist,成功伪造了一个指定验证者的门限签名,ExpfIDCMAIDT_PS,A(k)返回值1。

3) 其他情况ExpfIDCMAIDT_PS,A(k)返回值为0。

定义攻击者A成功的概率为:

如果A在时间t内,对Extract(.)最多进行qE次询问,对PD(.)最多进行qS次询问,对PSgn(.)最多进行qPS次询问,AdvfIDCMAIDT_PS,A(k)的概率至少为ε,则称A(t,qE,qS,qPS,ε)-breaks指定验证者的门限签名体制。我们称指定验证者的门限签名体制是(t,qE,qS,qPS,ε)-secure,如果不存在任何攻击者(t,qE,qS,qPS,ε)-breaks该体制。

4.3.2安全性证明

定理1设IDT_PS=(Setup,Extract,Sshare,PD,PV,Pshare,PSgn,Pver)为由ChaCheon签名体制:ID_Sign={Setup,Extract,Sgn′,Ver′}[5]和修改的Cheon等[6]提出的基于身份的签名方案:ID_BSign={Setup,Extract,Sgn",Ver"}[6]演化而来的基于身份指定验证者门限签名体制,如果ID_Sign 是EFfIDCMA,且ID_Bsign是EFfIDCMA,则IDT_PS是EFfIDCMA。

证明假设存在概率多项式时间的攻击者A,执行ExpfIDCMAIDT_PS,A(k),并以不可忽略的概率ε返回值为1,由A可以构造ID_Sign的fIDCMA攻击者B和ID_Bsign的fIDCMA攻击者C。

(1) 运行Setup,把生成的系统参数para分别作为B和C的输入。

(2) 令Clist粒Dlist粒Glist粒Slist痢*

(3) 将para作为A的输入,运行A执行ExpfIDCMAIDT_PS,A(k),B和C模拟A的各种询问如下:

1) Extract(.)询问,对询问IDi,B,C分别以IDi访问自己的Extract(.)随机预言机,并把结果作为对A的应答,令Clist=Clist∪{(IDi,di)}。

2) PD(.)询问,对输入的IDi和mω,B以IDi和mω访问Sgn′(.)随机预言机,设得到应答为δ,B以proxyp0PS=(mω,δ )作为对A的应答令

Dlist=Dlist∪{(IDi,mω,proxyp0PS)}

3) Pshare请求生成IDi的密钥的分享值skpi操作,对输入的IDi和proxyp0PS,设proxyp0PS=(mω,δ),原始签名人的身份为IDi,若Ver′(proxyp0PS,IDi)≠1,B应答为;否则,C以mω和proxyp0PS询问自己的Extract(.)并采用秘密分享算法产生n个签名者的密钥的分享值skpj,把应答skpj作为对A的应答,令

Glist=Glist∪{(IDj,proxyp0PS,skpj,IDi)}

4) PSgn(.)询问,对输入的proxyp0PS,m,IDk,skpj(j=1,2,…,t)。设proxyp0PS=(mω,δ),B以mω访问Sgn′(.)随机预言机,C以m访问Sgn"(.),设得到的应答为τ,C以(m,τ)作为对A的应答,令

Slist=Slist∪{(proxyp0PS,m,τ,Qk,skpj)}

(4) 设S′list和EBlist分别表示攻击者B对Sgn′(.)和B的Extract(.)的所有访问及相应应答所构成的序列,S"list和EClist分别表示攻击者C对Sgn"(.)和C的Extract(.)的所有访问及相应应答所构成的序列。若A输出(IDi,mω,proxyp0PS),满足PV(proxyp0PS,IDi)=1,(IDi,.)Clist,且(IDi,mω,proxyp0PS)Dlist,设proxyp0PS=(mω,δ),则B可输出(IDi,mω,δ)满足Ver′((mω,δ),IDi)=1且(IDi,mω,.)S′list,(IDi,.)EBlist;若A输出(proxyp0PS,m,τ,IDk,skpj),设proxyp0PS=(mω,δ),设原始签名人和签名者的身份分别为IDi和IDj,指定验证者身份IDk,满足Pver(IDi,m,τ,IDk,IDj,proxyp0PS)=1,(proxyp0PS,m,τ,IDk,skpj)Slist,(IDi,.)Clist,(IDj,.)Clist,(IDk,.)Clist,(IDj,proxyp0PS,skpj,IDi)Glist,则C可输出(proxyp0PS,m,τ,IDk,skpj),满足Ver"(proxyp0PS,m,τ,IDk,skpj)=1且(m,mω,.)S"list,(mω,proxyp0PS)EClist,(IDi,.)EClist,(IDj,.)EClist,(IDk,.)EClist。

综上所述,若A执行ExpfIDCMAIDT_PS,A(k)以不可忽略的概率ε返回值为1,则概率即本方案在适应性选择消息和固定ID攻击下是安全的。

4.4效率分析

基于ChaCheon提出的基于身份的签名方案[5]构造门限签名,比文献[7]中原始签名人的签名方案在验证时少进行一个双线性对的计算,由于n个签名人都要验证原始签名人对mω的签名,所以本文方案在验证时就减少了n个双线性对的计算。Clerk接收到每个签名人的部分签名Vi,对其进行验证时可使用已计算出的公开值(P,skpi),只需进行两个双线性对的计算。指定的验证人PV在对式(7)进行验证时可利用已经被签名人计算过的(P,Vω)的值,同样也是只需自己计算两个双线性对的值即可。

设计个性签名范文 篇3

关键词:签名;安全;反射;httpclient;通用性

中图分类号:TP302.1 文献标识码:A 文章编号:1009-3044(2016)17-0037-04

Abstract:In this paper, the application of remote service interactive data in the face of the main problems is the safety and versatility, further in-depth analysis based on refined a general model to solve this kind of problem, combined with the existing technology, such as the use of cryptographic signature technology to solve the security problem, through the realization of an interpretation engine configuration, reflection technology adapt to different business, solve common problems, and then the model is realized, namely the general data exchange platform, finally show the data exchange platform in many application systems and remote system interaction.

Key words:Signature; security; reflection; httpclient; generality

1背景

随着互联网的发展,互联网应用系统越来越多,这些系统不光在一个企业内部交互,其中的很多应用需要在不同企《》业之间交互,例如电子商务网站依赖电子支付公司在线支付时,就是电子商务系统发送请求给异地的电子支付系统,由其完成支付并反馈支付状态,在这个过程中电子支付系统提供远程Web服务[1]。远程Web服务改变了传统业务模式,产生了巨大的应用价值,但是远程Web服务使用互联网作为通信链路,首先要考虑其安全风险,在Web服务中安全风险是多方面的,包括身份与认证以及访问控制等等,但Web服务中交互的数据安全需要特别关注,另外数据传输和数据校验也是数据交互的主要任务,同时做好这三个方面工作才能保证远程交换的数据安全正确的传输。

文献[2] 提出了一种基于XML安全技术的Web服务安全通信机制,通过安全会话实现了高效的安全通信。文献[3]对Web服务安全的多个方面进行了全面的阐述,例如数据安全、安全策略、攻击与防御、访问控制等等。文献[4]在消息级安全的规范基础上,设计了一消息安全模型。

文献[5-6]对使用Web Service技术做数据传输做了详细介绍,文献[7]对传输的数据格式Json做了介绍,并且对其性能进行深入分析。文献[8]对使用XML技术实现可配置组合式数据校验做了详细的介绍。本文首先分析了远程Web服务中,数据交互中面对的问题,并提出一种解决该问题的模型,然后实现该模型,最后展示了该模型被使用在不同业务场景的效果。

2数据处理模型分析和架构

2.1分析与架构

远程Web服务数据交互是指:请服务求方和服务方提供方通过互联网进行数据交互,请求方发起数据交互请求,服务方收到请求并返回响应给请求方。具体过程见图1。从远程服务分析,该过程包括:数据打包和解包、数据签名和验签、数据传输以及数据验证,在实际应用中每个远程服务接口都是上述服务过程,但是每个接口的数据项不同,数据打包解包内容不同,数据项验证规则不同。为了实现数据交互的通用模型,需要对变化点进行设计,通过特定技术支持变化,例如工作流引擎可以支持不同流程执行,规则引擎可以解释不同规则,本文面对上面的变化点采用配置思路和反射实现技术,让一个模型满足不同应用。给出其架构模型见图2。

2.2通用数据交互模型

通用数据交互模型是指:把数据交互从业务过程中分离出来,成为一个独立的服务单元,实现数据交互的所有功能,通过配置和反射技术提供通用功能。通用数据交互模型设计首先要满足通用性,而业务千变万化,业务接口数据项也丰富多变,这些要求和通用性是一对矛盾。为了在不牺牲通用性的前提下解决这对矛盾,借助软件产品线[9]思想,分析其变化点,即找到哪些在不同的业务和技术环境下可能变化的,哪些在不同的业务和技术环境下是不变的。针对变化点分析其变化特性,采用相应的技术支持变化,例如可以通过配置、反射、设计模式、引擎等技术支持变化。在通用数据交互模型中,数据签名验签以及数据传输是不随业务变化而变化,但会能随着技术变化;数据打包和数据验证会随着业务接口变化而不同。针对这些变化通过引擎技术和反射技术可以屏蔽通用数据交互模型对业务的感知。根据上述分析可以构建出一个通用架构模型见图3。

3数据交互平台设计和实现

根据提出通用数据交互模型,可以实现一个通用功能的平台,该平台可以应用在远程数据交互场景中,该平台设计实现主要包括:报文设计、安全设计、传输设计、数据处理设计。

3.1 报文设计

数据交互模型设计目标是通过一套通用框架处理不同应用和不同接口,每个接口数据内容不尽相同,设计每个接口报文时需要考虑通用性和易用性,把报文组成设计成报文头和报文体,报文头是报文公共特性,报文头有两种即请求报文头和应答报文头。报文头见表1,交易代码标识唯一的接口,渠道代码,标识这个接口和哪个商户进行交易,版本号,用户升级报文时,新老报文兼容性问题,签名信息用于存储签名数据。

3.2签名与验签设计

在远程数据交互中需要确保通信双方的数据完整性[10],即保证传输过程中数据没有被修改,还要确保不可抵赖性[10]即信息是由签名者发送,使用数字签名机制可以保护数据不被修改。

不同的Hash结果以、相同的数据得到相同的Hash结果以及Hash运算时不可逆,Hash签名可以保证数据完整性;DES签名是对称加密技术,该算法要求数据接收方和发送方都持有相同的密钥,这个技术有个缺点是密码管理不方便以及密钥丢失问题。RSA算法是非对称算,加密的一方持有私钥,解密一方是公钥,公钥是公开的,这种方法可以做到数据完整性和不可抵赖性,完全满足数据交互对安全的要求。

本模型中数字签名采用RSA算法,明文、签名密钥、验证密钥组成签名要素,签名密钥是私钥,而验证密钥是公开的。签名步骤:①对报文用签名密钥进行签名运算得到运算结果②把运算结果放入报文头的签名信息字段③接收方收到数据报文,然后对剔除签名信息的报文进行验签。在文献[12]介绍了RSA签名算法,本文中采用SHA1WithRSA算法实现。签名过程实现代码如下:

3.3配置设计

配置的业务分析,为了用一套程序动态实现不同业务数据封包、解包和验证,需要把业务字段信息和接口字段独立开,另外需要动态获取业务字段、接口字段属性和值,还要能动态获得接口字段的验证规则,对字段属性定义及验证规则定义则是配置设计的内容。封包过程是指,当数据交互模型收到业务请求数据,根据请求者系统编号和业务代码编号,从配置库中获取对应的反序列化类,然后用这个类反序列化成对象,再从配置中查找对应的通信接口类,然后实例化通信接口类,再从配置中获取业务对象属性和通信接口对象属性的映射关系,根据映射关系把业务对象数据转入通信接口对象,最后从配置中获取验证规则,对通信接口对象各属性值进行验证。从上面的分析实体包括:业务对象、通信接口对象和验证规则对象,业务对象属性和通信接口对象属性有映射关系,他们关系是多对多关系,实体关系[13]见图4.

3.4反射设计

反射机制[14]是在运行中获得类的属性和方法,通过类的属性方法执行对应对象的方法或者获得对应对象属性的值,其作用可以提高程序的自适应能力,提升软件的灵活性,通过反射可以在运行时根据配置创建对象,也可以根据配置在运行时通过对象属性名获取对象属性值,在数据打包过程中是这样使用反射的,在数据验证中也用到反射机制。

3.5通信设计

1) 数据传输格式

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 语法是 JavaScript 对象表示语法的子集。规则包括:数据在键值对中、数据由逗号分隔、花括号保存对象、方括号保存数组。JSON有两种结构:对象和数组,对象在js中表示为{key:value,key:value,...}的键值对的结构,数组在JSON中表示为[{"aaa","bbb"},{"ccc","ddd"}]。

JSON数据解析多个组件,但是fastjson效率高对中文字符支持好,在POM.xml文件中加入如下内容引入fastjson。

2) 通信协议

HTTP协议(超文本传输协议)以明文方式传输数据,因此不适合传输敏感信息。HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道。HTTPS的安全基础是SSL层,SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。数据交换模型中采用HTTPS保证通信敏感数据不被泄密

通信框架HttpClient 是 Apache Jakarta Common 下的子项目,实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)并且支持支持 HTTPS 协议。使用中需要注意编码符和超时时间,调用过程如图。

3.6类设计

通用数据交互平台通用性设计是类设计首要解决的问题,通过设计分离变化点和不变点,从而再设计出对变化点的支持。从设计模式[15]可以得到很多经验,例如针对接口编程,使用继承和组合等等。结合实际,一次请求包括打包解包数据、数据验证、签名验签、传输、接收返回,这个过程不会变,不论在不同业务和不同接口中都是一样,所以把这个过程封装到一个类的公共方法中,针对数据打包和验证根据不同业务而变化,采用引擎类实现。ExchangeCenter类exchage()方法实现总体交互,DataFactory类定义数据打包解包和验证的接口,Transmission类实现数据传输,TransSign实现签名和验签。

4模型应用

5结束语

数据交互模型应用在多个和外部外部交互的系统中,通过配置即可实现功能,一个平台为多个系统服务,缩短了系统开发周期,增强了系统可维护性,通过数据签名机制保证了数据安全性,为应用保驾护航,最后在实际应用中产生很大经济价值。

参考文献:

[1] 岳昆,王晓玲,周傲英。 Web服务核心支撑技术:研究综述[J]. 软件学报, 2004,15(3):428-442.

[2] 陈荻玲,怀进鹏。 一种Web服务安全通信机制的研究与实现[J]. 计算机研究与发展, 2004,41(4):679-688.

[3] 贺正求,吴礼发,洪征, 等。 Web服务安全问题研究[J]. 计算机科学,2010,37(8):32-39.

[4] 汤卫东,周永权。Web服务消息级安全模型的设计及评价[J]. 计算机工程与设计, 2006,27(10):1873-1875.

[5] 王慧。 移动校园系统数据传输关键技术研究与实现[D]. 青岛: 中国海洋大学, 2014.

[6] 李良。 基于WebServices异构系[D]. 重庆: 重庆大学, 2008.

[7] 高静,段会川。JSON数据传输效率研究[J]. 计算机工程与设计, 2011,32(7):2267-2270.

[8] 林霞,申端明, 时迎, 等。可配置组合式数据校验方法[J]. 计算机系统应用 2015,24(15):161-165.

[9] Colin Atkinson. 基于构件的产品线工程UML方法[M]. 顾剑,钟鸣,束尧,等, 译。 北京: 机械出版社,中信出版社, 2005: 22-52.

[10] Christopher Steel, Ramesh Nagappan, Ray Lai. 安全模式[M]. 陈秋萍,罗邓,袁国忠, 等, 译。北京: 机械工业出版社, 2006: 165-166.

[11] 李克洪,王大玲,董晓梅。实用密码学与计算机数据安全[M].沈阳: 东北大学出版社, 2001: 24-30.

[12] 李丽新,袁烨。 网络安全通讯中的数字签名[J]. 现代情报, 2007(8):53-56.

[13] Stephens R K,Plew R R. 数据库设计[M]. 何玉洁,武欣,邓一凡, 等, 译。北京:机械工业出版社, 2001: 103-112.

一键复制全文保存为WORD