CN1980124A - 使用一次性变量的密钥数字认证方法 - Google Patents
使用一次性变量的密钥数字认证方法 Download PDFInfo
- Publication number
- CN1980124A CN1980124A CNA2005101018198A CN200510101819A CN1980124A CN 1980124 A CN1980124 A CN 1980124A CN A2005101018198 A CNA2005101018198 A CN A2005101018198A CN 200510101819 A CN200510101819 A CN 200510101819A CN 1980124 A CN1980124 A CN 1980124A
- Authority
- CN
- China
- Prior art keywords
- message
- variable quantity
- key
- once
- authentication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Abstract
本方法是使用消息认证码对消息进行认证时使用一次性变量。一次性变量在使用前需要将其范围及其使用状态保存,消息认证码的计算必须使用一次性变量与消息一起进行运算,在认证消息时,不但要验证消息认证码,还必须验证同时使用的一次性变量及其使用状态,在使用一次性变量后,必须标记和保存其使用状态;对于确定的密钥和认证函数,一次性变量只用来有效认证消息一次。通过使用一次性变量,可以准确、简单、方便、有效地实现认证消息的完整性和新鲜性,而且可以多方面有效地防止安全性攻击;通过一次性变量的同步使用,可以有效实现身份认证;在简化认证过程和认证协议的同时,增强了安全性,使得很多原来复杂的认证应用得以简单实现。
Description
技术领域
本方案属于信息技术安全领域,涉及信息安全认证服务:身份认证、信息完整性和新鲜性认证。
背景技术
对身份认证方法通常有身份凭证、章印或手写签名等认证,这些认证方法通常都是实物认证,使用人工识别,容易被伪造,难以分辨,并且不方便信息的交换,通常不用来作数字信息交换和认证。
当前很多应用中还经常用到用户ID和单纯口令字认证,容易失密而被假冒身份。
对数字信息的认证通常使用消息认证码(MAC,或者称作消息认证校验和),是利用密钥对消息揉合计算生成一个固定长度的短数据块。HMAC表示基于杂凑算法的消息认证码。通信双方都可以使用共享密钥对消息计算生成消息认证码MAC;发送方把消息和消息认证码MAC一起发送给接收方,接收方通过同样计算得到MAC,与收到的MAC进行比较,如果相同就可以确定:
(1)消息完整性,接收方可确定消息没有被修改过。
(2)肯定发送方曾生成过此消息,任何没有密钥的第三方不可能生成正确的MAC。
(3)如果消息中含有序列号,接收方可以相信消息顺序是正确的。
使用数字签名也可以确保消息的完整性。
为了防止消息重放攻击,可以使用时间戳(时戳),或者使用临时值变量,附在消息中一起发送,接收方通过验证时间戳或临时值变量就可以确保消息的新鲜性,同时也可以相信消息来自真正的发送方,即确保身份认证。
使用时间戳时,一般要求各主体的时钟同步,但时间戳并不和某个主体直接关联,任何一个主体产生的时间戳都能被其他主体用来检验消息的新鲜性。时间戳不具有唯一性,它通常有一个有效的范围,只要它位于这个有效范围内,主体都接受它的新鲜性。
临时值则是某个主体产生的伪随机数值,使用临时值和消息一起生成消息认证码进行认证,一个主体只能根据它自己所产生的临时值来检验消息的新鲜性。
与本方案接近或相关的技术:
消息认证码(MAC,消息认证校验和)。
消息认证码是利用密钥把任意长度的消息输入揉合而产生固定长度的短数据块,或者称作消息认证校验和。
参考文献:
1、《密码工程实践指南》
作者:(美)Steve Burnett & Stephen Paine
译:冯登国 周永彬 张振峰 李德全 等译
出版:清华大学出版社
2、《应用密码学:协议、算法与C源程序》
作者:(美)Bruce Schneier
译:吴世忠 祝世雄 张文政 等译
出版:机械工业出版社
3、《安全协议》
作者:卿斯汉 编著,宫力 审
出版:清华大学出版社
4、《网络安全--技术与实践》
作者:刘建伟 王育民 编著,寇卫东 审
出版:清华大学出版社
发明内容
要解决的技术问题
本方案所要解决的技术问题主要是信息的安全服务,包括安全身份认证、信息的完整性及新鲜性认证。
当前在信息安全领域中通常使用的数字信息认证方法主要有校验消息认证码(MAC或HMAC)或数字签名。这两个方法都能真实确定消息的完整性,但对消息的新鲜性认证和发送消息者的身份认证,通常都还需要结合时间戳或临时值进行校验,以防止攻击者进行消息重放攻击。但时间戳需要认证双方时间同步,而且不具备唯一性;当然时间戳的作用不但可以确定消息的新鲜性,而且可以确定消息的特定时间性;而临时值只能由验证方主体产生才能具备随机性作用,验证方主体只能根据自己所产生的临时值来检验消息的新鲜性。时间戳和临时值方法都可以确保消息的新鲜性,但需要在认证过程中增加通信过程,或者需要耗费更多的资源,并且难以确保唯一性,使消息验证不容易实施。
技术方案
本方案是在认证的双方使用密钥(通常使用共享密钥,也可以使用公钥加密方法)通过计算和检验消息认证码对消息进行认证时,同时使用一次性变量。所谓一次性变量,是指变量对于某一确定的密钥和确定的认证函数,只用来有效认证信息一次,此后不再使用来对其他消息进行认证。在确定密钥和认证函数后,一次性变量在使用前需要保存可使用的变量及其使用状态。认证双方同时共享一次性变量,但共享一次性变量与共享密钥不同,共享密钥必须双方同时秘密保存,共享一次性变量时,一次性变量需要与其使用状态一起保存,其状态可以使用缺省形式:只要保存变量就是可用的。所以一次性变量的保存方式可以是一一保存,也可以只保存可用变量的范围,可以是无序的变量,也可以是一定范围内的序数;极端的情况是开始时不进行保存,其范围是所有可能的变量。例如一次性变量范围是大于100的自然数,缺省时范围内的变量都是可用的,那么就保存数字101就可以了。变量本身可以不当作秘密处理,也就是说,变量可以是第三者猜测得到的。认证的双方可以有各自不同使用的一次性变量,这样,对某一个范围内的变量,一方只用进行生成消息认证码,另一方只使用来作校验认证;而另一范围内的变量则刚好相反。认证的双方也可以共同使用相同的一次性变量范围,只要一次性变量没有被重复使用即可。
在进行认证时,认证双方必需使用一次性变量与需要认证的消息一起使用认证函数进行计算消息认证码MAC,消息发送方在使用一次性变量用作消息认证后,需要将该变量状态标记为已使用;接收方接收到消息(包括一次性变量)和消息认证码MAC后,在检验消息认证码MAC是否正确的同时,也必须检验一次性变量及其使用状态,确定该变量是以前还没有用过的可用变量,并且在检验后必须把该变量的使用状态标记为已使用。一次性变量可以作废,可以按序使用,也可以不按序使用,这可以根据具体应用的需要确定。根据BAN逻辑或SVO逻辑的消息新鲜性规则公理,一次性变量是新鲜的,所以与一次性变量一起发送的消息也是新鲜的,故只要同时确认消息认证码MAC和一次性变量及其使用状态的正确性,就可以确保消息的完整性和新鲜性;即使信息交换传送相同的消息,只要使用不同的一次性变量,就可以得到不同的消息认证码MAC,可以确保消息的新鲜性。
如果认证双方能同步使用一次性变量,即发送方和接收方都能确定是最近使用的一次性变量,那么也就可以确保发送方的身份认证。
对于身份认证,通常需要多次信息交换,以确保一次性变量同步使用。需要同步才能确认身份认证,是因为在通讯过程中可能由于通讯线路等原因存在通讯中断,使得发出的询问或请求消息没有回应,但却可能被截取盗用的情况。在一个信息事务中,进行多次信息交换,每次信息交换采用消息询问、应答方式,对每个消息的认证都使用一个不同的一次性变量,这样可以确定变量的同步使用;由于一次性变量是相对于相应的密码和认证函数的使用,也可以使用多个密码共同使用同一个一次性变量,每次信息交换使用不同的密码,这种情况下,一次性变量有多个状态,相对于不同的密码有不同的使用状态。认证函数是相对不变的,不管认证函数可以分为多少个子函数,对于输入和输出,认证函数总体上都可以看作是一个数据加工的黑盒子,总体上是相对稳定不变的。每次认证,在认证函数不变的情况下,只要密码和一次性变量是唯一的组合,不管实际传送的消息是否相同,其消息认证码都会不相同,可以确保消息的完整性和新鲜性。经多次信息交换,一次性变量同步后,也就可以确保通信终点双方的身份认证;由于消息认证不具备信息保密功能,所以在消息传输过程中攻击者可以监听消息的内容,甚至可以阻隔消息的传送,但攻击者不可能修改消息、替换消息、伪造消息或重放消息。如果需要通信过程保密,还必须运用其他加密方法。
假定双方共享密钥K,MAC为消息认证码,M为输入消息,f为运算函数,V1为一次性变量,V为临时值,T为时间戳,那么消息认证码可以表示如下:
一般的消息认证码计算方法:
MAC=f(K,M)
使用临时值的消息认证码计算方法:
MAC=f(K,V,M)
使用时间戳的消息认证码计算方法:
MAC=f(K,T,M)
使用一次性变量的消息认证码计算方法:
MAC=f(K,V1,M)
如果运算函数f是杂凑算法函数h,使用一次性变量的消息认证码计算方法为:
HMAC=h(K,V1,M)
从以上计算方法来看,使用一次性变量与使用时间戳和临时值十分相似,但这些方法在它们的认证过程其实有很大的差别。
使用一次性变量与时间戳的区别:
时间戳必须与时间变量相关,所以认证的双方必须有相应的时钟系统,并进行时钟同步,如果需要认证特定的时间,通常还需要可信的第三方时钟认证。接收方收到带时间戳的消息后,必须使用时间戳与时钟比较,在差别范围内认可,其比较没有唯一性,而且要求认证的实时性较强。一次性变量不使用时钟系统,但要求在使用前(严格来说是更新相对应密码时)保存好变量及其状态,使用时每次认证消息须进行变量唯一性比较,还要确认变量的状态,使用后必须改变和标记变量的状态(为不再可复用)。对身份认证,一次性变量也必须进行同步使用,这可以通过使用多个变量,或者多个密码共享使用变量实现。
使用一次性变量与临时值的区别:
临时值是认证方产生的随机数,使用临时值和消息一起生成消息认证码进行认证,认证方只能根据自己产生的临时值来认证对方消息的新鲜性,所以认证的双方如果要相互认证,就必须各自产生认证对方的随机数。认证方先产生随机数,更有利于被实施主动性攻击,特别是中间人攻击:攻击者只要发送带随机数的消息,就可以得到对方返回的认证数据;而且由于没有进行使用保存,随机数可能被恶意重复使用,存在被重放攻击的可能。一次性变量在认证的双方进行保存,是预知的变量,发起认证的一方必须使用一次性变量和消息同时生成消息认证码,不知道密码的任何第三者不可能生成正确的消息认证码,也就难以发起主动攻击;如进行重放攻击,已使用过的一次性变量又不可能得到有效的认证,所以从发起认证方面可以有效防止主动性攻击和消息重放攻击。
使用一次性变量与通信中使用的消息序号的区别:
当前在很多的通信中都使用消息分组通信,对每一个分组都使用消息认证码对分组消息进行认证,并且认证时与消息的分组序号一起进行认证,在通信的双方也必须保存已经收到的消息分组序号,以确保消息按序传送。但消息分组序号与一次性变量有很大的不同:分组序号是基于整个通信过程,对每一个通信过程可以有一套序号序列,序号在通信过程中只能按序使用,即使在通信过程中密码产生了改变,序号仍只能按通信过程有序地进行使用,不可改变,也不可作废;而对于不同的通信过程,即使密码没有改变,但序号使用仍然可能重新开始,如果密码、消息和认证函数都没有改变,两次通信过程有可能相同,这样就不能确保消息的新鲜性;也就是说,序号不是为了确保消息的新鲜性而产生,而是为了确保通信过程中的消息分组正确顺序而产生,尽管在有些通信中,由于每次通信密码的改变,序号确实也同时起到了新鲜性的作用;消息序号在消息分组通信双方必须使用不同的序号序列,有些通信双方使用不相同密钥,有些使用相同密钥,当密钥相同共用时,不同序列的序号有可能交叉相同,则相对于密钥来说就是复用了;总之,通信中消息序号只能按通信过程的次序来使用,它是基于通信过程的。一次性变量是基于认证使用的密钥和认证函数(认证函数通常固定不变,如有改变,可以看作是子函数),每当密钥改变时,一次性变量就可以重新确定(范围及状态);一次性变量可以按序使用,也可以不按序使用,即使是按序使用,也可以根据需要对某些变量作废,比如发现有对某个变量的攻击,在受到三次攻击后,可以把该变量作废,以确保安全性;在进行消息认证时,不但要验证消息认证码,还必须验证一次性变量及其使用状态;你可以使用不同的一次性变量对同一消息进行多次认证;一次性变量也可以有多个使用状态,当多个密码同时共用同一个一次性变量时,这时该一次性变量就存在多个使用状态;认证的双方可以使用不同的一次性变量序列,也可以使用相同的一次性变量序列,使用相同的变量序列时,也可以不规定一次性变量该由那一方先使用,只要没有重复使用就可以了。
使用一次性变量的密钥认证方法安全性分析。
1、算法攻击:
用来生成消息认证码MAC的算法函数通常是单向散列函数,计算时对消息运算要有足够的混乱和扩散,密码与MAC是单向的多对一关系,即多个密码可以生成相同的MAC,不可能从MAC和消息进行逆运算得到具体密码,即使这样还应当考虑对函数各种类型的攻击。用M表示消息,K表示密钥,Fk表示基于密钥K的单向散列函数,消息认证码MAC的算法函数F应具有下述性质:
(1)给定消息M,很容易计算MAC=Fk(M)。
(2)给定消息M、消息认证码MAC和算法F,不可能通过计算确定K,因为K与MAC是多对一关系,函数是单向的,不存在逆运算。
(3)已知消息M和Fk(M),构造Fk(M’)=Fk(M)在计算上是不可行的,那么函数F是弱碰撞自由的。
(4)对于确定的函数F和确定的密码K,能够找到两个不同的消息,使得Fk(M’)=Fk(M),在计算上是不可行的,则函数F是强碰撞自由的。
(5)函数具有足够的混乱和扩散,使得密钥或消息每一位微小的改变,都会在MAC中形成巨大的变化,得到完全不同的结果。
即使这样,为确保安全性,最好使用标准安全或公认较为安全的函数算法,如SHA、MD5算法等等。
2、穷举法攻击:
理论上,由于密钥长度的有限性,只要收集有足够的认证数据,通过穷举法总可以得到使用的密钥。
已知函数F、消息M1和MAC1,假定MAC的长度为n位,密钥K的长度为k位,函数F算法等到的MAC具有伪随机性,也就是密钥和MAC的分布是均匀的,那么:
MAC1=Fk(M1)
通过穷举法对所有2k个密钥进行测试,就可以得到大约2(k-n)个密钥,使得以上等式成立。用得到的可能密钥,用同样方法对M2、MAC2进行测试可得到2(k-2n)个密钥,同样测试到i次,当k<=i*n时,在第i次就可以得到唯一的密钥!
抵抗穷举法攻击的最好方法就是增大密钥的长度,测试的次数会随密钥长度的增长呈现出指数级增长,使得在现实条件下使用穷举法不可能完成测试。
如果每秒钟测试的次数为10亿个密钥(假定攻击者可能使用大型计算机或者使用分布式计算方法),那么密钥的长度为128位时,需时大约2128/1010秒≈3*1028秒≈1021年,这在现实中是不可能发生的。但考虑到摩尔定律,大约5年计算能力就可能增长10倍,所以应该采取比较保守的方法来确定密钥的长度,比如,如果使用128位密钥在当前是安全的,那么使用1024位的密钥(甚至更长),在可见的将来,现实条件是无法破解的。
定期更新密钥可以使得攻击者难以收集足够历史数据,也可以使攻击者只能使用有限的时间,可以在一定程度上防止攻击。
3、分析法攻击:
由于MAC的算法函数可能存在某些弱点,攻击者有可能不用知道密钥,只分析以往的消息认证历史数据就可能构造新的消息及消息认证码。为增强抵抗分析攻击,可使用密钥同时放在消息的首尾一起计算消息认证码,或者对生成的消息认证码再次结合密钥进行计算消息认证码,也可以根据消息或变量对密钥进行变形后使用。由于一次性变量具有新鲜性,这对抵抗分析法攻击也具有非常大的作用:只有使用未用过的一次性变量才能构造新的消息。
用H表示单向散列函数,K表示密钥,F1、F2为密钥变形函数,K1、K2为变形后的密钥,M表示消息,V1表示一次性变量,各种要素的位置代表运算时的排列顺序,则消息认证码的构造算法可以如下所示:
K1=F1(K,V1), K2=F2(K,V1) 或
K1=F1(K,V1,M), K2=F2(K,V1,M)
消息认证码计算构造方法如下:
MAC=H(K,V1,M,K) 或
MAC=H(K,V1,M,K1) 或
MAC=H(K1,V1,M,K2) 或
MAC=H(K,H(K,V1,M)) 或
MAC=H(K,H(K1,V1,M)) 或
MAC=H(K2,H(K1,V1,M))
以上构造计算消息认证码方法都有助增强安全性。
4、消息重放攻击:
由于消息认证码使用一次性变量与消息一起计算生成,而一次性变量对于相同的密钥和认证函数只用来有效认证消息一次,故攻击者不可能成功实施重放攻击。
有益效果
通过使用一次性变量进行认证,可以准确、简单、方便、有效地实现认证消息的完整性和新鲜性,而且可以在多方面有效地防止安全性攻击;通过一次性变量的同步使用,可以有效实现身份认证;可以简化认证过程和认证协议,增强认证和协议的安全性,使得很多原来复杂的认证应用得以简单实现。
具体实施方式
银行交易安全认证方案
在这方案中,我们定义银行方是服务方,是可信赖的一方。与银行业务往来的企业或个人作为客户方。客户在银行开立相应帐户,银行通过认证客户的身份及信息后提供相应服务,银行的客户之间可以通过银行相互认证身份及行为。
首先定义密钥模式。认证双方使用1024位密钥,密钥由银行方通过采集随机种子随机生成,密钥具有随机性(确切地说是伪随机性),通过认证客户身份后进行共享,秘密保存。
其次定义一次性变量模式。一次性变量采用双方共用的模式,使用大于零的整数,开始时只需保存可用变量范围,即记录保存最小可用整数1,使用时取出可用整数变量,并将原最小可用整数调整为取出的整数加1,以调整可用整数范围,使用时记录当前一次性变量的使用状态。本方案的一次性变量通常按整数顺序使用,从最小可用开始使用,相对同一密钥和认证函数,在用来进行了一次有效认证后就不再重复使用,但多个密钥可共用同一个一次性变量,这时该一次性变量有多个使用状态;一次性变量可以作废,当一个一次性变量受到三次攻击后作废,即如果该变量用来验证了三次,相应的消息认证码都不正确,则该变量作废;一次性变量也可以跳号使用,但跳号间隔不能超过5个整数。此外,还可以增加其他安全措施,比如在受到10次攻击后,该帐户被锁定,只有使用一次生变量认证的消息进行解锁后,该帐户才能进行使用其他交易,并且每分钟只能进行一次解锁操作。
确定生成消息认证码函数及运算模式。首先使用一次性变量将原密钥K通过不同的变形得到K1和K2,变形方法可以是使用不同的变量Va、Vb和一次性变量V1使用MD5函数对原密钥进行混淆,重复计算8次合并结果可得到新的1024位密钥;然后用K、K1密钥组使用MD5函数对一次性变量及交易消息生成128位的消息认证码,为方便使用,再将消息各字节(8位为一字节)除以10取余数,得到16个阿拉伯数字号码,这可以作为发送方的消息认证码,消息认证码的字符集是阿拉伯数字。同样以K、K2组对结果消息作类似的运算,得到的16个阿拉伯数字号码作为结果的应答消息认证码。如果需要多次请求、应答过程,可以类似地通过密钥变形得到多个密钥组进行认证,为方便起见,对于有两次以上信息交换过程的交易,消息认证码取8个阿拉伯数字,可同样保证交易安全。具体算法表示如下:
K为1024位密钥,K1、K2为变形后的1024位密钥,K11到K18和K21到K28为中间结果,Va、Vb为密钥变形变量(128位),V1为一次性变量,H表示MD5函数,F表示转换为阿位伯数字函数,M为交易消息,MR为交易结果消息,MACq为发送请求方认证码,MACa为应答方认证码。
K11=H(K,V1,Va)
K12=H(K,V1,K11)
……
K18=H(K,V1,K17)
K1=K11+K12+K13+K14+K15+K16+K17+K18(“+”表示串接合并)
同样地:
K21=H(K,V1,Vb)
K22=H(K,V1,K21)
……
K28=H(K,V1,K27)
K2=K21+K22+K23+K24+K25+K26+K27+K28(“+”表示串接合并)
MAC1=H(K,V1,M,K1)
MACq=F(MAC1)
MAC2=H(K,V1,MR,K2)
MACa=F(MAC2)
银行及客户认证主体。
银行认证主体是银行交易认证服务器,是一个交易认证系统。其功能主要有三方面:
1、信息存储和共享。它保存客户的信息,包括客户号、客户关联账号、共享密钥以及享的一次性变量;提供随机密钥和一次性变量与客户进行共享,密钥信息经加密后保存。
2、交易认证。接受客户交易请求,经认证后提交给银行各交易系统处理;对各交易系统返回的处理结果形成结果消息,并对结果消息生成认证码,返回结果给客户。
3、保存交易信息以供查询。银行交易认证服务器保存各项交易信息以提供客户随时查询服务。
银行交易认证服务器可通过银行内部安全网络连接到各银行终端,提供各种银行终端服务,也可以通过自定义协议连接到WEB服务器以提供各种网上银行服务,可以连接到电话银行接入服务器,提供各种电话银行服务,还可以连接到短信接入服务器,以提供各种短信交易服务。认证服务器可以连接到各种通讯接入设施,来提供相应的服务,并且所有的服务可以使用相同的交易协议。
客户认证主体是客户认证器。由于密钥很长,客户难以记忆,而且需要对交易消息计算消息认证码,客户不可能通过人工完成,而借用电脑终端一方面不够安全,使用携带也十分不便。但因为算法简单,所需保存信息量不大,故完全可以集成到芯片上。客户认证器必须存储客户的信息:包括客户号、密钥、一次性变量及状态;能够完成交易消息的消息认证码的计算及验证;与外界通信可以通过三种方式:接触式信息交换,非接触式信息交换,还有通过液晶显示和小键盘进行人工信息交换,这样可以方便使用各种信息终端。当然,如果你喜欢使用个人电脑来完成客户认证主体功能也是可以的。
银行交易认证过程。
简单的交易过程可以通过一次交易请求和应答实现,这是一次交易信息交换过程。对复杂的交易可以通过多次交易信息交换过程来完成。以下是一次交易请求和应答的交易信息交换过程实现模式:
1、客户方发起交易请求。
交易信息通常包括:客户号,交易码,交易关键字(对方账号、交费编号等等),发生金额。
分别用CODE、KEY、AMOUNT表示上述后三项,V1为最小可用一次性变量,M1为发起交易消息,K1为变形后密钥,H为消息认证函数,则:
M1=CODE+KEY+AMOUNT
MAC1=H(K,V1,M1,K1)
在完成交易消息认证码计算后,标记当前一次性变量的使用状态,将客户号、V1、M1和MAC1一起发送给银行认证服务器。
2、银行认证服务器认证交易消息。认证服务器在接收到交易消息后,先检查一次性变量是否可用,如不可用,则返回客户最新可用的一次性变量以作同步;如变量正常可用,再通过同样计算得到交易消息认证码,并与客户传送的进行比较,如果不相同,则标记当前一次性变量的无效使用次数,返回出错给客户。如果验证无误,则标记当前一次性变量为已使用,将交易消息送到银行交易系统处理。
3、银行交易系统接收和处理交易信息,并返回结果。
4、银行认证服务器对交易结果进行认证。交易结果RESULT成功标志为1,失败为0,仍使用当前交易的一次性变量,使用后必须标记其状态,但使用的密钥经变形后不同。
M2=CODE+KEY+AMOUNT+RESULT
MAC2=H(K,V1,M2,K2)
银行认证服务器将交易结果RESULT以及结果消息认证码MAC2一起返回给客户,其他信息相同可以不必传送。
5、客户验证交易结果。
客户方接收到交易结果消息后,通过同样计算得到交易结果消息认证码,比较以验证消息认证码无误和当前交易的一次性变量及其状态也无误,则可以确认交易结果,否则可以肯定结果消息被更改或传输过程错误,需要重新取回结果。验证完成后,标记一次性变量相应使用状态。
上述是一个通用的交易认证过程,现举例客户A与客户B的转账过程。
客户A转账100元到客户B账户。为确保交易时一次性变量的新鲜性和同步使用,定义转账协议分为两次交易信息交换过程,原密钥经类似变形可得到4个新密钥K1、K2、K3、K4。
1、资金转出方客户A,计算提交资金转账消息认证码,标记一次性变量使用状态为1,并将交易消息传送给银行认证服务器。交易提出消息认证码计算如下:
MAC1=H(K,V1,M1,K1)
2、银行认证服务器同样计算消息认证码,验证客户A的转账消息,标记客户A当前一次性变量使用状态为1,然后转账请求发送给转账交易服务器。
3、转账交易服务器验证相关账户状态及资金,完成资金转出,并将结果返回给认证服务器。此时资金还没有转入客户B的账户,只是挂账到应付科目。
4、银行认证服务器接收到资金转出结果,计算资金转出结果消息认证码,标记当前一次性变量使用状态为2,将资金转出结果消息返回给客户A。提出应答消息认证码计算如下:
MAC2=H(K,V1,M2,K2)
5、客户A使用相同计算以验证提交资金转账的结果,如成功,则进行交易确认,类似地再次计算交易确认消息认证码,并标记当前一次性变量使用状态为3。交易确认消息认证码计算如下:
MAC3=H(K,V1,M1,K3)
6、确认交易时,可以通过多种方式进行。为防止转账出现人为错误,如果客户A在交易确认时能同时提交客户B的户名认证,例如网上交易、手机短信交易或人工服务中心等等,那么客户可以直接将转账确认消息和对方客户名称一起发送给银行认证中心进行认证(交易服务器在确认交易资金转入时需验证转入方户名);或者交易过程是通过无线非接触方式,对方账号通过自动输入,使用自动或半自动方式进行计算消息认证码,这种情况不会出现人为录入错误,也可以直接发送到银行进行认证;否则,客户A要将交易确认的消息认证码交给客户B,必须由客户B发起确认交易,这样可以确保不会转错账户。
7、银行认证服务器收到交易确认消息后,验证确认消息,同样标记客户A当前一次性变量使用状态为3,将交易确认消息发送给交易服务器处理。
8、银行交易服务器接收交易确认消息,验证该笔交易已提出,如果需要则验证转入客户B的账户名称,然后将资金转入客户B的账户,为增加安全性,可以同时对客户B账户的相应转入资金实施定时冻结,比如在冻结24小时后才可以使用。交易完成后,将交易结果返回给认证服务器。
9、认证服务器接收到交易确认结果,生成交易结果消息,分别计算客户A、客户B的交易结果消息认证码,在计算客户B的消息认证码时可以取客户B最新可用的一次性变量使用,并且分别对客户A和客户B当前交易的一次性变量状态更新标记,将交易结果保存,然后将客户A以及客户B的结果消息以及相应的消息认证码,返回给交易确认请求方。交易确认应答消息认证码计算如下:
客户A交易结果消息认证码:MAC4=H(K,V1,M4,K4)
客户B交易结果消息认证码:
用CODE2表示转入确认交易码,关键字KEY是该笔交易流水号(还可以增加认证对方账号后几位),AMOUNT为交易金额,RESULT表示结果状态。
MRb=CODE2+KEY+AMOUNT+RESULT
MAC2b=H(Kb,V1b,MRb,K2b)
如客户B直接向银行服务器提出请求结果认证:
Mb=CODE2+KEY+AMOUNT
MAC1b=H(Kb,V1b,Mb,K1b)
10、交易确认请求方接收到交易结果后,可以将交易对方的交易结果消息及相应消息认证码交给对方,或者双方都可以从银行服务器重新取回交易结果及相应消息认证码。交易双方通过与银行认证服务器同样方法计算以验证交易结果,并标记一次性变量的最终状态,这样交易双方都可以确认交易结果。
有益的效果。银行交易认证通过使用一次性变量的密钥数字认证方法,可以确保交易信息的完整的、新鲜性认证,通过多次认证过程,还可以确保认证双方、甚至多方认证的身份认证。使得交易过程在确保安全的前提下,认证过程相对简单化,其交易的安全性只与认证的双方主体相关,与所使用的通讯方式或通讯终端无关,这样就可以使用简单的结构实现高度的安全性和便利性。
使用本方案构造网上银行(指通过Internet网络使用的银行服务),可以将认证服务器与WEB服务器之间使用自定义协议隔离,比如类似串口通讯的协议,每个交易消息只能通过自定义协议进行传送,这样外部攻击者就不可能入侵到认证服务器,而每个交易消息必须得到认证才能确认,任何不是认证主体的第三者都不可能伪造或重放交易消息,这样就可以确保资金的安全性,为保障服务安全(指服务的质量和效果,而不是资金安全),在WEB服务器与Internet网络的连接需要使用防火墙,以防止各种干扰服务的攻击,与客户的通信还可以使用安全套接字协议层(SSL),增加保密性和增强安全性。网上银行的资金安全与WEB服务器、外部网防火墙、互联网通讯以及客户所使用的电脑无关,资金安全只与认证主体有关,即与银行认证服务器和客户认证器有关。所以客户也可以在任意一台联网的电脑上使用网上银行,只要确保客户认证器的隔离安全,即使该电脑是不可以信任的,仍然可以确保资金的安全。
由于本方案的消息认证码使用的字符集是阿拉伯数字,故客户很容易通过网上银行、电话银行、手机短信甚至人工服务中心等渠道进行各种交易,可以方便各种交易随时随地的使用。而银行和客户的资金安全性与所使用的各种通讯系统及渠道无关。由于使用相同认证,所以各种交易方式的交易协议基本相同,在各种渠道的交易方式具有类似性,易于使用,而且银行在开发和维护系统时,其共性可以通用,可以节省大量时间和资源。
Claims (2)
1、一种密钥数字认证方法,其特征是:
使用密钥通过计算和检验消息认证码对消息进行认证时使用一次性变量;一次性变量在使用前需要保存可使用的变量及其使用状态,消息认证码的计算必须使用一次性变量与消息一起进行运算,在认证消息时,不但要验证消息认证码,还必须验证同时使用的一次性变量及其使用状态;在使用一次性变量后,必须标记和保存其使用状态;对于确定的密钥和认证函数,一次性变量只用来有效认证消息一次。
2、根据权利要求1所述的密钥数字认证方法,一次性变量由多个密钥共同使用,并具有多个使用状态,对应于每一个不同的密钥,一次性变量有不同的使用状态;一次性变量对于不同的密钥,使用与密钥相对应的状态来认证消息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005101018198A CN1980124A (zh) | 2005-12-05 | 2005-12-05 | 使用一次性变量的密钥数字认证方法 |
PCT/CN2006/003276 WO2007065348A1 (fr) | 2005-12-05 | 2006-12-05 | Procede d'authentification par cle numerique comprenant l'utilisation d'une variable a usage unique |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005101018198A CN1980124A (zh) | 2005-12-05 | 2005-12-05 | 使用一次性变量的密钥数字认证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1980124A true CN1980124A (zh) | 2007-06-13 |
Family
ID=38122478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005101018198A Pending CN1980124A (zh) | 2005-12-05 | 2005-12-05 | 使用一次性变量的密钥数字认证方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1980124A (zh) |
WO (1) | WO2007065348A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291238A (zh) * | 2011-07-29 | 2011-12-21 | 朱新泉 | 一种网络用户身份认证方法 |
CN102446315A (zh) * | 2011-09-20 | 2012-05-09 | 深圳市科陆电子科技股份有限公司 | 一种无线用电管理系统和管理方法 |
CN102906776A (zh) * | 2010-03-31 | 2013-01-30 | 帕特尔有限公司 | 一种用于用户和服务提供商之间双向认证的方法 |
CN103259768A (zh) * | 2012-02-17 | 2013-08-21 | 中兴通讯股份有限公司 | 一种消息认证方法、系统和装置 |
CN104363199A (zh) * | 2014-09-30 | 2015-02-18 | 熊文俊 | 基于时间同步码的安全认证方法及时间同步码模块 |
CN104427504A (zh) * | 2013-09-08 | 2015-03-18 | 王正伟 | 控制信息验证方法 |
CN105827408A (zh) * | 2015-12-03 | 2016-08-03 | 中国航天系统工程有限公司 | 一种基于时间戳技术的工业网络安全传输方法 |
CN112214785A (zh) * | 2020-12-01 | 2021-01-12 | 南京芯驰半导体科技有限公司 | 数据加密方法、装置、数据解密方法及装置 |
CN112291055A (zh) * | 2019-07-24 | 2021-01-29 | 广东知业科技有限公司 | 一种工业互联网数据通讯加密方法 |
CN112615820A (zh) * | 2020-12-05 | 2021-04-06 | 百果园技术(新加坡)有限公司 | 重放攻击检测方法、装置、设备和存储介质 |
CN115174125A (zh) * | 2022-09-07 | 2022-10-11 | 北京笔新互联网科技有限公司 | 可信执行环境中可信真随机数的获取方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001352324A (ja) * | 2000-06-07 | 2001-12-21 | Nec Corp | ワンタイムパスワード生成装置、認証方法およびワンタイムパスワード生成プログラムを記録した記録媒体 |
CN1601490A (zh) * | 2003-09-26 | 2005-03-30 | 刘任 | 信息安全认证及其加密装置的方法 |
CN1645790A (zh) * | 2005-01-23 | 2005-07-27 | 姚忠凯 | 一种用于收发双方之间认证报文的方法 |
-
2005
- 2005-12-05 CN CNA2005101018198A patent/CN1980124A/zh active Pending
-
2006
- 2006-12-05 WO PCT/CN2006/003276 patent/WO2007065348A1/zh active Application Filing
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102906776A (zh) * | 2010-03-31 | 2013-01-30 | 帕特尔有限公司 | 一种用于用户和服务提供商之间双向认证的方法 |
CN102291238A (zh) * | 2011-07-29 | 2011-12-21 | 朱新泉 | 一种网络用户身份认证方法 |
CN102446315B (zh) * | 2011-09-20 | 2019-05-14 | 深圳市科陆电子科技股份有限公司 | 一种无线用电管理系统和管理方法 |
CN102446315A (zh) * | 2011-09-20 | 2012-05-09 | 深圳市科陆电子科技股份有限公司 | 一种无线用电管理系统和管理方法 |
CN103259768A (zh) * | 2012-02-17 | 2013-08-21 | 中兴通讯股份有限公司 | 一种消息认证方法、系统和装置 |
CN104427504A (zh) * | 2013-09-08 | 2015-03-18 | 王正伟 | 控制信息验证方法 |
CN104427504B (zh) * | 2013-09-08 | 2019-04-19 | 王正伟 | 控制信息验证方法 |
CN104363199A (zh) * | 2014-09-30 | 2015-02-18 | 熊文俊 | 基于时间同步码的安全认证方法及时间同步码模块 |
CN105827408A (zh) * | 2015-12-03 | 2016-08-03 | 中国航天系统工程有限公司 | 一种基于时间戳技术的工业网络安全传输方法 |
CN112291055A (zh) * | 2019-07-24 | 2021-01-29 | 广东知业科技有限公司 | 一种工业互联网数据通讯加密方法 |
CN112291055B (zh) * | 2019-07-24 | 2024-03-29 | 广东知业科技有限公司 | 一种工业互联网数据通讯加密方法 |
CN112214785A (zh) * | 2020-12-01 | 2021-01-12 | 南京芯驰半导体科技有限公司 | 数据加密方法、装置、数据解密方法及装置 |
CN112615820A (zh) * | 2020-12-05 | 2021-04-06 | 百果园技术(新加坡)有限公司 | 重放攻击检测方法、装置、设备和存储介质 |
WO2022116883A1 (zh) * | 2020-12-05 | 2022-06-09 | 百果园技术(新加坡)有限公司 | 重放攻击检测方法、装置、设备和存储介质 |
CN115174125A (zh) * | 2022-09-07 | 2022-10-11 | 北京笔新互联网科技有限公司 | 可信执行环境中可信真随机数的获取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2007065348A1 (fr) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1980124A (zh) | 使用一次性变量的密钥数字认证方法 | |
US10154021B1 (en) | Securitization of temporal digital communications with authentication and validation of user and access devices | |
US11930111B2 (en) | System and method for generating and depositing keys for multi-point authentication | |
CN101340437B (zh) | 时间源校正方法及其系统 | |
CN100546245C (zh) | 跨安全域的网络认证和密钥分配方法 | |
CN107231351A (zh) | 电子证件的管理方法及相关设备 | |
CN106878318A (zh) | 一种区块链实时轮询云端系统 | |
Roh et al. | A study on electronic voting system using private blockchain | |
CN102394896A (zh) | 基于令牌的隐私保护型指纹认证方法和系统 | |
TWI648679B (zh) | 使用區塊鏈之證照發行管理系統與方法 | |
CN108737323A (zh) | 一种数字签名方法、装置及系统 | |
US11429702B2 (en) | Method of verification of a biometric authentication | |
WO2014141263A1 (en) | Asymmetric otp authentication system | |
CN109981290A (zh) | 一种智能医疗环境下基于无证书签密的通信系统及方法 | |
CN109716725A (zh) | 无密码用户登录和认证 | |
CN107615797B (zh) | 一种隐藏用户标识数据的装置、方法和系统 | |
CN111010279A (zh) | 一种基于零知识证明的远程多因子认证协议 | |
CN110866754A (zh) | 一种基于动态口令的纯软件dpva身份认证方法 | |
CN1601490A (zh) | 信息安全认证及其加密装置的方法 | |
KR101856530B1 (ko) | 사용자 인지 기반 암호화 프로토콜을 제공하는 암호화 시스템 및 이를 이용하는 온라인 결제 처리 방법, 보안 장치 및 거래 승인 서버 | |
Lu et al. | BEvote: Bitcoin-enabled E-voting scheme with anonymity and robustness | |
Xiaohong et al. | RFID mutual-authentication protocol with synchronous updated-keys based on Hash function | |
CN104915689B (zh) | 一种智能卡信息处理方法 | |
CN104780049B (zh) | 一种安全读写数据的方法 | |
CN112911018A (zh) | 一种基于区块链的网络社区征信管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20070608 Address after: Tianhe District Huaming road Guangzhou City, Guangdong province 510623 No. 21 No. 2103 Applicant after: Liu Jinhong Address before: No. 3, happy road, Li Gang Town, Guangdong, Huazhou Applicant before: Liu Ren |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice |
Addressee: Liu Jinhong Document name: Notification of change of members of collegial panel |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070613 |