CN116418560A - 一种基于区块链智能合约的线上快速身份认证系统及方法 - Google Patents
一种基于区块链智能合约的线上快速身份认证系统及方法 Download PDFInfo
- Publication number
- CN116418560A CN116418560A CN202310218023.9A CN202310218023A CN116418560A CN 116418560 A CN116418560 A CN 116418560A CN 202310218023 A CN202310218023 A CN 202310218023A CN 116418560 A CN116418560 A CN 116418560A
- Authority
- CN
- China
- Prior art keywords
- module
- key
- signature
- identity authentication
- blockchain
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012795 verification Methods 0.000 claims description 70
- 230000008569 process Effects 0.000 claims description 19
- 239000000446 fuel Substances 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 230000008520 organization Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- 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/3247—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 involving digital signatures
- H04L9/3252—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 involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S40/00—Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
- Y04S40/20—Information technology specific aspects, e.g. CAD, simulation, modelling, system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了区块链智能合约和FIDO身份认证系统技术领域的一种基于区块链智能合约的线上快速身份认证系统及方法,本发明首先构建一个区块链网络,在区块链网络中部署智能合约,然后将智能合约与区块链模块、FIDO身份认证模块、密钥证书管理中心模块相连。密钥证书管理中心模块通过哈希函数算法生成256位长度的比特串作为私钥,使用非对称加密算法中椭圆曲线数字签名算法生成对应的公钥,公钥经过单向的哈希函数生成地址;验证者用自己的私钥进行数字签名,线上终端服务器用签名者对应的公钥进行解密,从而完成线上快速身份认证。
Description
技术领域
本发明属于区块链智能合约和FIDO身份认证系统技术领域,具体是一种基于区块链智能合约的线上快速身份认证系统及方法。
背景技术
目前的认证技术在互联网上存在着许多缺点;用户的身份验证体验也非常分散,例如,用户需要多次对不同的实体进行身份验证,包括本地设备及各种在线服务,如电子邮件、微信、各种支付设备等,容易泄露用户隐私;而密码是目前最常用的认证方法,但存在容易受到攻击、篡改以及被盗用的风险。
区块链是一种随着比特币等加密货币而兴起的一种类似于非关系型的去中心化分布式存储数据库,去中心化保证各个厂商开发的强认证技术之间的互操作性,由于区块链的不可篡改性,因此区块链被广泛使用在认证技术中。
例如中国专利公布号为CN113704822A的专利公开了一种基于区块链技术的商业秘密保护系统及方法,包括区块链商业秘密的确权系统、访问用户的CA认证系统、商业秘密存储模块以及商业秘密流转过程管控系统。该方案通过权利人对商业秘密数据的确权取证。商业秘密数据一旦发布到区块链上,不可更改,由于hash值的计算原理,即使是商业秘密源数据变动一个字节,也会引起hash值的变化。因此,一旦商业秘密数据上链后,就无法篡改。
但是,由于区块链的不可篡改性,信息一但上传服务器,信息均保存到各节点当中,当一个节点被第三方攻破后,信息都会遭到泄露,系统缺乏安全性,信息没有隐私性。
发明内容
为了解决上述问题,本发明的目的是提供一种基于区块链智能合约的线上快速身份认证系统及方法,以用于解决用户身份认证的不安全性以及用户身份的匿名性和隐私性,同时解决现有线上快速身份认证的单一性。
为了实现上述目的,本发明的技术方案如下:一种基于区块链智能合约的线上快速身份认证系统,包括可信机构构建服务器模块和服务器,服务器包括密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块;
可信机构构建服务器模块,用于构建一个去中心化的区块链网络,在智能合约模块中部署合约;
服务器,用于承载密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块的运行;
密钥证书管理中心模块,用于负责生成公钥和私钥,并通过智能合约模块将公钥和私钥分别发送至区块链模块和FIDO身份认证模块,其中,私钥被加密保存,公钥公开在服务器中;密钥证书管理中心模块还会对公钥和私钥进行定时更新,每次更新时都会产生新的密钥版本号,密钥版本号会随公钥和私钥发送至区块链模块和FIDO身份认证模块;
区块链模块,用于存储服务器的数据,区块链模块采用梅克尔树状数据结构将服务器的数据进行排列存储,从而构建分布式数据库;
智能合约模块,分别与密钥证书管理中心模块、区块链模块和FIDO身份认证模块相连;智能合约模块包括合约生成模块和合约执行模块,合约生成模块,用于将用户的身份数据信息生成合约存储在区块链模块中,并将合约的连接地址发送至区块链模块和FIDO身份认证模块;
合约执行模块,在FIDO身份认证模块进行线上验证身份信息时,服务器的各节点会调用区块链模块存储的合约进行验证,各节点执行合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;合约执行模块接收到验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中;
FIDO身份认证模块,用于完成线上快速身份认证,当用户登录服务器注册信息时,基于私钥和公钥,FIDO身份认证模块基于FIDO协议生成与私钥对应的签名数据A1,FIDO身份认证模块使用非对称加密算法中椭圆曲线数字签名算法生成对应的公钥,椭圆曲线数字签名算法为ECDSA算法,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a保存至FIDO身份认证模块中;当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做签名数据A2,服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,FIDO身份认证模块将签名数据A2采用密钥版本号中约定的算法进行哈希运算和解密得到的摘要值a1进行比较即可验证。
一种基于区块链智能合约的线上快速身份认证方法,包括如下步骤:
Step1、利用可信机构构建区块链网络模块构建一个去中心化的区块链网络;
Step1.1、在智能合约模块中部署合约,然后将智能合约地址发送至区块链和FIDO身份认证模块;
Step2、利用密钥证书管理中心模块生成公钥、私钥和密钥版本号;
Step2.1、当用户登录服务器注册信息时,密钥证书管理中心模块通过哈希函数算法(SHA-256)生成256位长度比特串的私钥;
Step2.2、使用非对称加密算法中椭圆曲线数字签名算法生成对应的公钥;
Step2.3、密钥的生成算法;
Step2.4、公钥经过单向的哈希函数算法生成与用户对应的地址;
Step2.5、利用密钥证书管理中心模块对公钥和私钥进行定时更新,产生新的密钥版本号,将公私和密钥版本号发送至FIDO身份认证模块,FIDO身份认证模块将公钥与用户对应的地址账户相关联;
Setp2.6、密钥证书管理中心模块将私钥和密钥版本号发送至区块链模块,私钥和密钥版本号经加密后作为隐私数据存储在区块链模块中;
Step3、将用户关联身份数据信息生成合约存储在区块链模块的分布式数据库中;
Step3.1、用户首次登录FIDO身份认证模块注册信息时,用户基于密钥证书管理中心模块生成的私钥,得到签名数据A1,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a;保存至FIDO身份认证模块中;将签名数据A1与用户的身份信息进行关联并发送至智能合约模块;
Step3.2、智能合约模块将身份信息生成合约后发送至服务器中各节点;
Step3.3、服务器中各节点使用共识算法POW,身份信息经各节点确认后存储在区块链模块中;
Step3.4、利用智能合约模块判断用户关联身份数据信息是否加入区块链数据库,是,执行Step4,否,返回步骤Step3;
Step4、智能合约模块的合约执行;
Step4.1、用户进行线上验证身份信息时,各节点调用区块链模块存储的合约进行验证;
Step4.2、各节点执行智能合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;
Step4.3、各节点的验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中。
Step5、在步骤Step1、步骤Step3和步骤Step4中执行合约过程中需要燃料费用,每个节点在验证时都会进行相同的计算并储存,在执行合约过程中,每一个命令都会有一个对应的燃料消耗;
Step5.1、生成以太坊钱包,获取token,用于支付所需要的燃料费用;
Step6、验证用户的线上身份信息;
Step6.1、采用协议为U2F的FIDO协议进行认证,U2F协议采用非对称公钥和私钥;
Step6.2、FIDO协议采用椭圆曲线数字签名算法进行签名验证;
Step6.3、当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做数字签名,该数字签名为签名数据A2;
Step6.4、服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,然后使用步骤Step2.3的算法对待签名数据进行哈希运算和解密得到的摘要值进行比较验证,该过程为验证签名;
Step6.5、验证签名通过,服务器调用区块链模块中相关联的身份信息,完成身份验证。
Step6.6、验证签名没通过,退出系统;
Step7、完成身份认证。
进一步,步骤Step2.3的具体步骤如下:
Step2.3.1、选择两个大素数;m和n;
Step2.3.2、计算p=m×n,其中m,n分别为两个互异的大素数,m,n必然保密,一般要求m,n为安全素数,p的长度大于512bit,有欧拉函数(p)=(m-1)×(n-1);
Step2.3.3、随机选择加密密钥sk,满足sk和(m-1)×(n-1)互质;
Step2.3.4、利用Euclid算法计算解密密钥pk,满足sk×pk=(modφ(p)),其中p和sk也要互质,pk是公钥,sk是私钥。
进一步,步骤Step2.4的具体步骤如下:
Step2.4.1、地址是由公钥经过单向的哈希函数生成,公式可以表示为:
A=RIPEMD160[SHA256(K)],
其中A为比特币地址,K为公钥,以公钥K输入,计算SHA256哈希值,并以此结果计算RIPEMD160的哈希值,得到一个长度为160比特、容量为20字节的数字后进行Base58check编码即可得到比特币地址。
进一步,步骤Step5.1的具体步骤如下:
Step5.1.1、选择在Chorme浏览器安装和配置MetaMask插件,获取数字面具MetaMask中文版钱包;
Step5.1.2、打开MetaMask界面,按照Token发行的协议,获取Token,完成智能合约的创建以及交易。
进一步,步骤Step6.2中U2F认证的具体步骤如下:
Step6.2.1、用户登录系统,系统将数据提交给服务器。
Step6.2.2、服务器组织认证数据;
Sign Data{DOMString Version;DOMString challenge;DOMString app_id;DOMString keyHandle;DOMString sessionId;},其中Key Handle为秘钥,
将Sign Data数据发送给服务器;
Step6.2.3、浏览器收到数据后给U2F设备,U2F设备验证Key Handle是否存在设备中,Key Handle和用户是否匹配。
Step6.2.4、如果验证成功,通过Key Handle对应的私钥对指定数据做签名,对应密钥对的引用计数器加一,返回值中数据包括引用计数和签名值,并将返回值传送给服务器。
Step6.2.5、服务器验证引用计数,判断用户的登录设备是否被克隆,验证ClientData数据合法性,组织签名数据,使用对应的公钥做验签操作,验签成功,服务器将该用户的引用计数更新为最新的引用计数。
进一步,步骤Step6.4中数字签名的具体步骤如下:sig:=sign(sk,message)//签名过程是把一段消息和私钥作为一个输入,对于消息输出就是签名。
进一步,步骤Step6.4中验证签名的具体步骤如下:
Step6.4.1、isValid:=verify(pk,message,sig)//验证过程是通过把一段消息和签名消息与公钥作为输入,如果返回的结果是真,证明签名属实,执行Step6.5;如果返回结果为假,证明签名消息为假,执行Step6.6;
Step6.4.2、有效签名算法如下;
Verify(pk,message,sign(sk,message))==true。
进一步,步骤Step2.2、Step3.1和Step6.2中椭圆曲线数字签名算法(ECDSA)的公式如下:
其中,W、U1、U2表示验证参数,Z表示待验证信息的哈希值,R、S表示签名参数,n表示椭圆曲线的可倍积阶数,(x,y)表示曲线上的验证点,G表示椭圆曲线上的基点,pk表示公钥。
采用上述方案后实现了以下有益效果:1、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,采用了区块链去中心化网络,降低了中心服务器的负担,去中心化保证各个厂商开发的强认证技术之间的互操作性。
2、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,用户有各种在线身份,本发明能在这些在线身份中提供隔离,不依赖各方或身份提供者将它们联系在一起,保证用户的隐私性。
3、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,在线认证系统(FIDO身份认证模块)能改变目前使用密码作为主要验证手段的在线验证方式,减少用户对密码的依赖,为在线身份认证的多样性提供强有力的支撑,解决现有线上快速身份认证的单一性。
附图说明
图1为本发明实施例线上快速身份认证系统的示意图。
图2为图1的区块链模块的分布式数据库示意图。
具体实施方式
下面通过具体实施方式进一步详细说明:
实施例基本如附图1所示:一种基于区块链智能合约的线上快速身份认证系统,包括可信机构构建服务器模块和服务器,服务器包括密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块;
可信机构构建服务器模块,用于构建一个去中心化的区块链网络,在智能合约模块中部署合约;
服务器,用于承载密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块的运行;
密钥证书管理中心模块,用于负责生成公钥和私钥,并通过智能合约模块将公钥和私钥分别发送至区块链模块和FIDO身份认证模块,其中,私钥被加密保存,公钥公开在服务器中;密钥证书管理中心模块还会对公钥和私钥进行定时更新,每次更新时都会产生新的密钥版本号,密钥版本号会随公钥和私钥发送至区块链模块和FIDO身份认证模块。
区块链模块,用于存储服务器的数据,区块链模块采用梅克尔树状数据结构将服务器的数据进行排列存储,从而构建分布式数据库;区块链模块的建立过程(如图2所示),由哈希指针构建的一个链表,把两个基于哈希值的数据结构结合起来:第一个数据结构是区块的哈希链,每一个区块都有一个区块头部,里面有一个哈希指针指向上一个区块。第二个数据结构是一个树状数据结构-梅克尔树,也就是以树状结构把区块内所有交易的哈希值进行排列存储。其具有防篡改特性;如果改变某区块k的数据,区块k+1的哈希值将与整个区块的哈希值不匹配,网络各节点将会检测到区块k中的新数据以及区块k+1中的哈希指针的不一致性,此时网络节点将不会承认区块k,且向全网广播此区块为非法区块,并将之丢弃。区块链用来存储智能合约生成的用户身份数据信息以及密钥证书管理中心生成的密钥对和密钥版本号,同时在终端服务器进行身份验证时提供智能合约调用,完成FIDO身份认证系统端服务器的验证。
智能合约模块,分别与密钥证书管理中心模块、区块链模块和FIDO身份认证模块相连;智能合约模块包括合约生成模块和合约执行模块,合约生成模块,用于将用户的身份数据信息生成合约存储在区块链模块中,并将合约的连接地址发送至区块链模块和FIDO身份认证模块;
合约执行模块,在FIDO身份认证模块进行线上验证身份信息时,服务器的各节点会调用区块链模块存储的合约进行验证,各节点执行合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;合约执行模块接收到验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中;
FIDO身份认证模块,用于完成线上快速身份认证,当用户登录服务器注册信息时,基于私钥和公钥,FIDO身份认证模块基于FIDO协议生成与私钥对应的签名数据A1,FIDO身份认证模块使用非对称加密算法中椭圆曲线数字签名算法(ECDSA)生成对应的公钥,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a保存至FIDO身份认证模块中;当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做签名数据A2,服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,FIDO身份认证模块将签名数据A2采用密钥版本号中约定的算法进行哈希运算和解密得到的摘要值a1进行比较即可验证。
具体实施过程如下:
一种基于区块链智能合约的线上快速身份认证方法,包括如下步骤:
Step1、利用可信机构构建区块链网络模块构建一个去中心化的区块链网络;
Step1.1、在智能合约模块中部署合约,然后将智能合约地址发送至区块链和FIDO身份认证模块;
Step2、利用密钥证书管理中心模块生成公钥、私钥和密钥版本号;
生成公钥和私钥的伪代码为:
KeyPairGenerator keyPairGen=KeyPairGenerator.getInstance-(“RSA”);//初始化RSA库
keyPairGen.initialize(256);//密钥长度为256位
KeyPair keyPair=keyPairGen.generateKeyPair();//生成公私钥对
RSAPublicKeypublicKey=(RSAPublicKey)keyPair.getPublic();//取得公钥
RSAPrivateKey privateKey=(RSAPrivateKey)keyPair.getPrivate();//取得私钥
(sk,pk):=generateKeys(keysize)//generateKeys方法把keysize作为输入,来产生一对公钥(pk)和私钥(sk);私钥sk被安全保存,并用来签名一段消息;公钥pk是用来验证签名
Step2.1、当用户登录服务器注册信息时,密钥证书管理中心模块通过哈希函数算法(SHA-256)生成256位长度比特串的私钥;
Step2.2、使用非对称加密算法中椭圆曲线数字签名算法(ECDSA)生成对应的公钥;
其中,ECDSA各种参数信息比特串长度如下:
个人私钥:256位,
公钥(未压缩):512位,
公钥(压缩):257位,
待签名信息:256位,
签名:512位。
Step2.3、密钥的生成算法;
步骤Step2.3的具体步骤如下Step2.3.1、选择两个大素数;m和n;
Step2.3.2、计算p=m×n(m,n分别为两个互异的大素数,m,n必然保密,一般要求m,n为安全素数,p的长度大于512bit),有欧拉函数(p)=(m-1)×(n-1);
Step2.3.3、随机选择加密密钥sk,满足sk和(m-1)×(n-1)互质;
Step2.3.4、利用Euclid算法计算解密密钥pk,满足sk×pk=(modφ(p)),其中p和sk也要互质,pk是公钥,sk是私钥。
Step2.4、公钥经过单向的哈希函数算法生成与用户对应的地址;
步骤Step2.4的具体步骤如下:
Step2.4.1、地址是由公钥经过单向的哈希函数生成,公式可以表示为:
A=RIPEMD160[SHA256(K)],
其中A为比特币地址,K为公钥,以公钥K输入,计算SHA256哈希值,并以此结果计算RIPEMD160的哈希值,得到一个长度为160比特(20字节)的数字后进行Base58check编码即可得到比特币地址。
Step2.5、利用密钥证书管理中心模块对公钥和私钥进行定时更新,产生新的密钥版本号,将公私和密钥版本号发送至FIDO身份认证模块,FIDO身份认证模块将公钥与用户对应的地址账户相关联;
Setp2.6、密钥证书管理中心模块将私钥和密钥版本号发送至区块链模块,私钥和密钥版本号经加密后作为隐私数据存储在区块链模块中;
Step3、将用户关联身份数据信息生成合约存储在区块链模块的分布式数据库中;
Step3.1、用户首次登录FIDO身份认证模块注册信息时,用户基于密钥证书管理中心模块生成的私钥,得到签名数据A1,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a;保存至FIDO身份认证模块中;将签名数据A1与用户的身份信息进行关联并发送至智能合约模块;
Step3.2、智能合约模块将身份信息生成合约后发送至服务器中各节点;
Step3.3、服务器中各节点使用共识算法POW,身份信息经各节点确认后存储在区块链模块中;
Step3.4、利用智能合约模块判断用户关联身份数据信息是否加入区块链数据库,是,执行Step4,否,返回步骤Step3;
Step4、智能合约模块的合约执行;
Step4.1、用户进行线上验证身份信息时,各节点调用区块链模块存储的合约进行验证;
Step4.2、各节点执行智能合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;
Step4.3、各节点的验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中。
Step5、在步骤Step1、步骤Step3和步骤Step4中执行合约过程中需要燃料费用,每个节点在验证时都会进行相同的计算并储存,在执行合约过程中,每一个命令都会有一个对应的燃料消耗;
Step5.1、生成以太坊钱包,获取token,用于支付所需要的燃料费用;
步骤Step5.1的具体步骤如下:
Step5.1.1、选择在Chorme浏览器安装和配置MetaMask插件,获取数字面具MetaMask中文版钱包;
Step5.1.2、打开MetaMask界面,按照Token发行的协议,获取Token,完成智能合约的创建以及交易
Step6、验证用户的线上身份信息;
Step6.1、采用协议为U2F的FIDO协议进行认证,U2F协议采用非对称公钥和私钥;
Step6.2、FIDO协议采用椭圆曲线数字签名算法(ECDSA)进行签名验证;
步骤Step6.2中U2F认证的具体步骤如下:
Step6.2.1、用户登录系统,系统将数据提交给服务器。
Step6.2.2、服务器组织认证数据;
Sign Data{DOMString Version;DOMString challenge;DOMString app_id;DOMString keyHandle;DOMString sessionId;},其中Key Handle为秘钥,
将Sign Data数据发送给服务器;
Step6.2.3、浏览器收到数据后给U2F设备,U2F设备验证Key Handle是否存在设备中,Key Handle和用户是否匹配。
Step6.2.4、如果验证成功,通过Key Handle对应的私钥对指定数据做签名,对应密钥对的引用计数器加一,返回值中数据包括引用计数和签名值,并将返回值传送给服务器。
Step6.2.5、服务器验证引用计数,判断用户的登录设备是否被克隆,验证ClientData数据合法性,组织签名数据,使用对应的公钥做验签操作,验签成功,服务器将该用户的引用计数更新为最新的引用计数。
Step6.3、当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做数字签名,该数字签名为签名数据A2;
Step6.4、服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,然后使用步骤Step2.3的算法对待签名数据进行哈希运算和解密得到的摘要值进行比较验证,该过程为验证签名;
步骤Step6.4中数字签名的具体步骤如下:sig:=sign(sk,message)//签名过程是把一段消息和私钥作为一个输入,对于消息输出就是签名。
步骤Step6.4中验证签名的具体步骤如下:
Step6.4.1、isValid:=verify(pk,message,sig)//验证过程是通过把一段消息和签名消息与公钥作为输入,如果返回的结果是真,证明签名属实,执行Step6.5;如果返回结果为假,证明签名消息为假,执行Step6.6。
Step6.4.2、有效签名算法如下;
Verify(pk,message,sign(sk,message))==true。
Step6.5、验证签名通过,服务器调用区块链模块中相关联的身份信息,完成身份验证。
Step6.6、验证签名没通过,退出系统;
Step7、完成身份认证。
其中,步骤Step2.2、Step3.1和Step6.2中椭圆曲线数字签名算法(ECDSA)的公式如下:
其中,W、U1、U2表示验证参数,Z表示待验证信息的哈希值,R、S表示签名参数,n表示椭圆曲线的可倍积阶数,(x,y)表示曲线上的验证点,G表示椭圆曲线上的基点,pk表示公钥。
通过上述过程,1、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,采用了区块链去中心化网络,降低了中心服务器的负担,去中心化保证各个厂商开发的强认证技术之间的互操作性。
2、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,用户有各种在线身份,本发明能在这些在线身份中提供隔离,不依赖各方或身份提供者将它们联系在一起,保证用户的隐私性。
3、本发明的一种基于区块链智能合约的线上快速身份认证系统及方法,在线认证系统(FIDO身份认证模块)能改变目前使用密码作为主要验证手段的在线验证方式,减少用户对密码的依赖,为在线身份认证的多样性提供强有力的支撑,解决现有线上快速身份认证的单一性。
以上所述的仅是本发明的实施例,方案中公知的具体结构和/或特性等常识在此未作过多描述。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (9)
1.一种基于区块链智能合约的线上快速身份认证系统,其特征在于:包括可信机构构建服务器模块和服务器,服务器包括密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块;
可信机构构建服务器模块,用于构建一个去中心化的区块链网络,在智能合约模块中部署合约;
服务器,用于承载密钥证书管理中心模块、区块链模块、智能合约模块和FIDO身份认证模块的运行;
密钥证书管理中心模块,用于负责生成公钥和私钥,并通过智能合约模块将公钥和私钥分别发送至区块链模块和FIDO身份认证模块,其中,私钥被加密保存,公钥公开在服务器中;密钥证书管理中心模块还会对公钥和私钥进行定时更新,每次更新时都会产生新的密钥版本号,密钥版本号会随公钥和私钥发送至区块链模块和FIDO身份认证模块;
区块链模块,用于存储服务器的数据,区块链模块采用梅克尔树状数据结构将服务器的数据进行排列存储,从而构建分布式数据库;
智能合约模块,分别与密钥证书管理中心模块、区块链模块和FIDO身份认证模块相连;智能合约模块包括合约生成模块和合约执行模块,合约生成模块,用于将用户的身份数据信息生成合约存储在区块链模块中,并将合约的连接地址发送至区块链模块和FIDO身份认证模块;
合约执行模块,在FIDO身份认证模块进行线上验证身份信息时,服务器的各节点会调用区块链模块存储的合约进行验证,各节点执行合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;合约执行模块接收到验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中;
FIDO身份认证模块,用于完成线上快速身份认证,当用户登录服务器注册信息时,基于私钥和公钥,FIDO身份认证模块基于FIDO协议生成与私钥对应的签名数据A1,FIDO身份认证模块使用非对称加密算法中椭圆曲线数字签名算法生成对应的公钥,椭圆曲线数字签名算法为ECDSA算法,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a保存至FIDO身份认证模块中;当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做签名数据A2,服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,FIDO身份认证模块将签名数据A2采用密钥版本号中约定的算法进行哈希运算和解密得到的摘要值a1进行比较即可验证。
2.一种基于区块链智能合约的线上快速身份认证方法,其特征在于:根据权利要求1所述的基于区块链智能合约的线上快速身份认证系统的方法,包括如下步骤:
Step1、利用可信机构构建区块链网络模块构建一个去中心化的区块链网络;
Step1.1、在智能合约模块中部署合约,然后将智能合约地址发送至区块链和FIDO身份认证模块;
Step2、利用密钥证书管理中心模块生成公钥、私钥和密钥版本号;
Step2.1、当用户登录服务器注册信息时,密钥证书管理中心模块通过哈希函数算法(SHA-256)生成256位长度比特串的私钥;
Step2.2、使用非对称加密算法中椭圆曲线数字签名算法生成对应的公钥;
Step2.3、密钥的生成算法;
Step2.4、公钥经过单向的哈希函数算法生成与用户对应的地址;
Step2.5、利用密钥证书管理中心模块对公钥和私钥进行定时更新,产生新的密钥版本号,将公私和密钥版本号发送至FIDO身份认证模块,FIDO身份认证模块将公钥与用户对应的地址账户相关联;
Setp2.6、密钥证书管理中心模块将私钥和密钥版本号发送至区块链模块,私钥和密钥版本号经加密后作为隐私数据存储在区块链模块中;
Step3、将用户关联身份数据信息生成合约存储在区块链模块的分布式数据库中;
Step3.1、用户首次登录FIDO身份认证模块注册信息时,用户基于密钥证书管理中心模块生成的私钥,得到签名数据A1,用户基于私钥对签名数据的摘要进行加密,得到签名值a,并将签名值a;保存至FIDO身份认证模块中;将签名数据A1与用户的身份信息进行关联并发送至智能合约模块;
Step3.2、智能合约模块将身份信息生成合约后发送至服务器中各节点;
Step3.3、服务器中各节点使用共识算法POW,身份信息经各节点确认后存储在区块链模块中;
Step3.4、利用智能合约模块判断用户关联身份数据信息是否加入区块链数据库,是,执行Step4,否,返回步骤Step3;
Step4、智能合约模块的合约执行;
Step4.1、用户进行线上验证身份信息时,各节点调用区块链模块存储的合约进行验证;
Step4.2、各节点执行智能合约是相互独立的,各节点生成验证结果并将其发送至合约执行模块,合约执行模块基于各节点的验证结果进行对比;
Step4.3、各节点的验证结果一致时,合约执行模块将验证结果发送至FIDO身份认证模块,同时将验证结果存入区块链模块中。
Step5、在步骤Step1、步骤Step3和步骤Step4中执行合约过程中需要燃料费用,每个节点在验证时都会进行相同的计算并储存,在执行合约过程中,每一个命令都会有一个对应的燃料消耗;
Step5.1、生成以太坊钱包,获取token,用于支付所需要的燃料费用;
Step6、验证用户的线上身份信息;
Step6.1、采用协议为U2F的FIDO协议进行认证,U2F协议采用非对称公钥和私钥;
Step6.2、FIDO协议采用椭圆曲线数字签名算法进行签名验证;
Step6.3、当用户登录服务器验证身份信息时,用户使用私钥对服务器的待签名数据做数字签名,该数字签名为签名数据A2;
Step6.4、服务器使用对应的公钥对签名值a进行解密,得到摘要值a1,然后使用步骤Step2.3的算法对待签名数据进行哈希运算和解密得到的摘要值进行比较验证,该过程为验证签名;
Step6.5、验证签名通过,服务器调用区块链模块中相关联的身份信息,完成身份验证。
Step6.6、验证签名没通过,退出系统;
Step7、完成身份认证。
3.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step2.3的具体步骤如下:
Step2.3.1、选择两个大素数;m和n;
Step2.3.2、计算p=m×n,其中m,n分别为两个互异的大素数,m,n必然保密,一般要求m,n为安全素数,p的长度大于512bit,有欧拉函数(p)=(m-1)×(n-1);
Step2.3.3、随机选择加密密钥sk,满足sk和(m-1)×(n-1)互质;
Step2.3.4、利用Euclid算法计算解密密钥pk,满足sk×pk=(modφ(p)),其中p和sk也要互质,pk是公钥,sk是私钥。
4.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step2.4的具体步骤如下:
Step2.4.1、地址是由公钥经过单向的哈希函数生成,公式可以表示为:
A=RIPEMD160[SHA256(K)],
其中A为比特币地址,K为公钥,以公钥K输入,计算SHA256哈希值,并以此结果计算RIPEMD160的哈希值,得到一个长度为160比特、容量为20字节的数字后进行Base58check编码即可得到比特币地址。
5.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step5.1的具体步骤如下:
Step5.1.1、选择在Chorme浏览器安装和配置MetaMask插件,获取数字面具MetaMask中文版钱包;
Step5.1.2、打开MetaMask界面,按照Token发行的协议,获取Token,完成智能合约的创建以及交易。
6.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step6.2中U2F认证的具体步骤如下:
Step6.2.1、用户登录系统,系统将数据提交给服务器。
Step6.2.2、服务器组织认证数据;
Sign Data{DOMString Version;DOMString challenge;DOMString app_id;DOMString keyHandle;DOMString sessionId;},其中Key Handle为秘钥,
将Sign Data数据发送给服务器;
Step6.2.3、浏览器收到数据后给U2F设备,U2F设备验证Key Handle是否存在设备中,Key Handle和用户是否匹配。
Step6.2.4、如果验证成功,通过Key Handle对应的私钥对指定数据做签名,对应密钥对的引用计数器加一,返回值中数据包括引用计数和签名值,并将返回值传送给服务器。
Step6.2.5、服务器验证引用计数,判断用户的登录设备是否被克隆,验证Client Data数据合法性,组织签名数据,使用对应的公钥做验签操作,验签成功,服务器将该用户的引用计数更新为最新的引用计数。
7.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step6.4中数字签名的具体步骤如下:sig:=sign(sk,message)//签名过程是把一段消息和私钥作为一个输入,对于消息输出就是签名。
8.根据权利要求2所述的基于区块链智能合约的线上快速身份认证方法,其特征在于:步骤Step6.4中验证签名的具体步骤如下:
Step6.4.1、isValid:=verify(pk,message,sig)//验证过程是通过把一段消息和签名消息与公钥作为输入,如果返回的结果是真,证明签名属实,执行Step6.5;如果返回结果为假,证明签名消息为假,执行Step6.6;
Step6.4.2、有效签名算法如下;
Verify(pk,message,sign(sk,message))==true。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310218023.9A CN116418560A (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链智能合约的线上快速身份认证系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310218023.9A CN116418560A (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链智能合约的线上快速身份认证系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116418560A true CN116418560A (zh) | 2023-07-11 |
Family
ID=87057429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310218023.9A Pending CN116418560A (zh) | 2023-03-08 | 2023-03-08 | 一种基于区块链智能合约的线上快速身份认证系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116418560A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881981A (zh) * | 2023-09-06 | 2023-10-13 | 深圳奥联信息安全技术有限公司 | 一种基于证书的数字签名系统及方法 |
CN117336099A (zh) * | 2023-11-22 | 2024-01-02 | 成都天府通数字科技有限公司 | 基于区块链技术的智能合约的签署方法和签署系统 |
CN117335997A (zh) * | 2023-11-29 | 2024-01-02 | 广东电网有限责任公司湛江供电局 | 一种数据处理方法、系统、设备和介质 |
CN117792802A (zh) * | 2024-02-28 | 2024-03-29 | 江苏意源科技有限公司 | 基于多系统交互的身份验证与应用访问控制方法及系统 |
-
2023
- 2023-03-08 CN CN202310218023.9A patent/CN116418560A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881981A (zh) * | 2023-09-06 | 2023-10-13 | 深圳奥联信息安全技术有限公司 | 一种基于证书的数字签名系统及方法 |
CN116881981B (zh) * | 2023-09-06 | 2024-01-02 | 深圳奥联信息安全技术有限公司 | 一种基于证书的数字签名系统及方法 |
CN117336099A (zh) * | 2023-11-22 | 2024-01-02 | 成都天府通数字科技有限公司 | 基于区块链技术的智能合约的签署方法和签署系统 |
CN117336099B (zh) * | 2023-11-22 | 2024-02-09 | 成都天府通数字科技有限公司 | 基于区块链技术的智能合约的签署方法和签署系统 |
CN117335997A (zh) * | 2023-11-29 | 2024-01-02 | 广东电网有限责任公司湛江供电局 | 一种数据处理方法、系统、设备和介质 |
CN117335997B (zh) * | 2023-11-29 | 2024-03-19 | 广东电网有限责任公司湛江供电局 | 一种数据处理方法、系统、设备和介质 |
CN117792802A (zh) * | 2024-02-28 | 2024-03-29 | 江苏意源科技有限公司 | 基于多系统交互的身份验证与应用访问控制方法及系统 |
CN117792802B (zh) * | 2024-02-28 | 2024-04-23 | 江苏意源科技有限公司 | 基于多系统交互的身份验证与应用访问控制方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10903991B1 (en) | Systems and methods for generating signatures | |
WO2020197642A1 (en) | Blockchain-based authentication and authorization | |
CA2838322C (en) | Secure implicit certificate chaining | |
CN116418560A (zh) | 一种基于区块链智能合约的线上快速身份认证系统及方法 | |
CN106341232B (zh) | 一种基于口令的匿名实体鉴别方法 | |
US20050097316A1 (en) | Digital signature method based on identification information of group members, and method of acquiring identification information of signed-group member, and digital signature system for performing digital signature based on identification information of group members | |
US20140089670A1 (en) | Unique code in message for signature generation in asymmetric cryptographic device | |
EP4068183A1 (en) | Computer-implemented system and method enabling secure storage of a large blockchain over a plurality of storage nodes | |
CN113301022B (zh) | 基于区块链和雾计算的物联网设备身份安全认证方法 | |
CN103733564A (zh) | 利用隐式证书链的数字签名 | |
JPH10510692A (ja) | ユーザコンピュータユニットuとネットワークコンピュータユニットnの間における暗号鍵のコンピュータ支援交換方法 | |
CN109687965A (zh) | 一种保护网络中用户身份信息的实名认证方法 | |
CN114666032B (zh) | 基于同态加密的区块链交易数据隐私保护方法 | |
CN111147245A (zh) | 一种区块链中使用国家密码进行加密的算法 | |
KR101253683B1 (ko) | 연쇄 해시에 의한 전자서명 시스템 및 방법 | |
CN108712259A (zh) | 基于身份的可代理上传数据的云存储高效审计方法 | |
CN110851859B (zh) | 一种具有(n,t)门限的分布式权威节点区块链系统的认证方法 | |
CN113641975A (zh) | 身份标识注册方法、身份标识验证方法、装置及系统 | |
CN117094825A (zh) | 一种基于区块链的跨链可信土地交易系统及方法 | |
CN115865520B (zh) | 移动云服务环境中具有隐私保护的认证和访问控制方法 | |
CN110519040B (zh) | 基于身份的抗量子计算数字签名方法和系统 | |
CN114760072B (zh) | 签名及验签方法、装置及存储介质 | |
CN110572257B (zh) | 基于身份的数据来源鉴别方法和系统 | |
WO2009133869A1 (ja) | 二要素認証システム | |
CN115208629B (zh) | 基于智能合约的数据完整性验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |