CN112883435B - 一种实现与智能合约安全通信的方法和设备 - Google Patents
一种实现与智能合约安全通信的方法和设备 Download PDFInfo
- Publication number
- CN112883435B CN112883435B CN202110386022.6A CN202110386022A CN112883435B CN 112883435 B CN112883435 B CN 112883435B CN 202110386022 A CN202110386022 A CN 202110386022A CN 112883435 B CN112883435 B CN 112883435B
- Authority
- CN
- China
- Prior art keywords
- data
- signature
- intelligent contract
- certification unit
- digital certification
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 126
- 239000000284 extract Substances 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012790 confirmation Methods 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Finance (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种实现与智能合约安全通信的方法和设备,属于通信领域。数字通证单元与桥服务器建立订阅通信连接后,生成订阅请求并发送给桥服务器,对桥服务器返回的订阅响应数据中的第一响应数据密文进行验签,验签通过后,解密第一响应数据密文得到智能合约数据并显示,当接收到用户输入的同意建立连接信息时,生成发布消息并发送给智能合约,当接收到桥服务器推送的订阅通信消息时,解密订阅通信消息中的订阅通信消息数据得到签名指令,使用保存的私钥对签名指令中的签名参数进行签名得到签名结果并发送给智能合约。本发明实现了由数字通证单元自身来对通信数据进行签名,保障了数字通证单元与区块链网络上的智能合约之间通信的安全性。
Description
技术领域
本发明涉及通信领域,尤其涉及一种实现与智能合约安全通信的方法和设备。
背景技术
数字通证单元是用来存储和管理基于区块链技术的数字通证的工具,利用应用中生成的数字通证的通讯地址(公钥),可以接受他人发送的数字通证,也可以把数字通证发送给他人。智能合约是对一系列运行在区块链上的、带有预定义规则的、功能复杂的计算机代码程序的统称。
目前,大部分的智能合约是基于网页端的,而用于签名的私钥则保存在数字通证单元中,用户需要将数字通证单元中的私钥导出并填写到网页端,由网页端来对通信数据做签名,这不仅给用户带来了极大的不便,且将私钥导出会造成私钥的泄露,进而导致数字通证单元与智能合约之间的通信不再安全。因此,如何实现数字通证单元与智能合约进行安全的通信成为了一个亟待解决的技术问题。
发明内容
为解决现有技术的不足,提供了一种实现与智能合约安全通信的方法和设备。
第一方面,本发明提供了一种实现与智能合约安全通信的方法,包括如下步骤:
步骤101:数字通证单元根据用户的第一操作信息获取会话名称、桥服务器地址和会话密钥并保存,根据所述桥服务器地址与对应的桥服务器建立订阅通信连接;
步骤102:所述数字通证单元生成应用身份标识,根据所述会话名称和所述应用身份标识生成订阅请求并发送给所述桥服务器;
步骤103:所述数字通证单元接收所述桥服务器返回的订阅响应,从所述订阅响应中获取订阅响应数据,根据所述会话密钥对所述订阅响应数据中的第一响应数据密文进行验签,如验签通过,执行步骤104,如验签未通过,报错并结束;
步骤104:所述数字通证单元根据所述会话密钥解密所述订阅响应数据中的第一响应数据密文得到智能合约数据并显示,当接收到用户输入的同意建立连接信息时,执行步骤106,当接收到用户输入的拒绝建立连接信息时,执行步骤105;
步骤105:所述数字通证单元根据所述智能合约数据和预置的拒绝连接标识生成拒绝连接响应并发送给所述桥服务器,断开与所述桥服务器的订阅通信连接,结束;
步骤106:所述数字通证单元根据所述智能合约数据、预置的应用数据和同意建立连接标识生成发布消息并通过所述桥服务器发送给所述智能合约;
步骤107:所述数字通证单元接收所述桥服务器推送的订阅通信消息,使用所述会话密钥解密所述订阅通信消息中的订阅通信消息数据得到签名指令;
步骤108:所述数字通证单元从所述签名指令中提取签名参数并显示, 当接收到用户对所述签名参数的确认信息时,使用数字通证单元中保存的私钥对所述签名参数进行签名得到签名结果,根据所述签名结果和所述智能合约数据生成发布消息并通过所述桥服务器发送给所述智能合约,结束。
第二方面,本发明提供了一种电子设备,包括:处理器和存储器;
存储器,用于存储计算机程序;
处理器,用于运行存储器存储的计算机程序来实现本申请中与智能合约安全通信的方法。
第三方面,本发明提供了一种计算机可读存储介质,用于存储计算机程序,当计算机程序在计算机上运行时,使得计算机执行本申请中的实现与智能合约安全通信的方法。
本发明提供了一种实现与智能合约安全通信的方法和设备,通过桥服务器将智能合约与数字通证单元之间建立安全的连接,无需将数字通证单元中的私钥导出,实现了由数字通证单元自身来对通信数据进行签名,保障了数字通证单元与区块链网络上的智能合约之间通信的安全性,给用户带来了极大的便利。
附图说明
图1为本发明实施例1提供的一种与智能合约安全通信的方法的流程图;
图2为本发明实施例2提供的一种与智能合约安全通信的方法的流程图;
图3为本发明具体实施方式中提供的一种电子设备的模块框图。
具体实施方式
本申请提出了一种实现与智能合约安全通信的方法和设备,下面结合附图,对本申请具体实施方式进行详细说明。所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方式作进一步地详细描述。
需说明的是,本申请中涉及的数字通证单元可以是软件形式的数字通证单元,也可以是硬件形式的数字通证单元,还可以是由硬件设备与移动终端中的应用程序构成的数字通证单元。
实施例1
本发明实施例1提供了一种与智能合约安全通信的方法,如图1所示,该方法包括如下步骤:
步骤101:数字通证单元根据用户的第一操作信息获取会话名称、桥服务器地址和会话密钥并保存,根据桥服务器地址与对应的桥服务器建立订阅通信连接;
步骤102:数字通证单元生成应用身份标识,根据会话名称和应用身份标识生成订阅请求并发送给桥服务器;
步骤103:数字通证单元接收桥服务器返回的订阅响应,从订阅响应中获取订阅响应数据,根据会话密钥对订阅响应数据中的第一响应数据密文进行验签,如验签通过,执行步骤104,如验签未通过,报错并结束;
步骤104:数字通证单元根据会话密钥解密订阅响应数据中的第一响应数据密文得到智能合约数据并显示,当接收到用户输入的同意建立连接信息时,执行步骤106,当接收到用户输入的拒绝建立连接信息时,执行步骤105;
步骤105:数字通证单元根据智能合约数据和预置的拒绝连接标识生成拒绝连接响应并发送给桥服务器,断开与桥服务器的订阅通信连接,结束;
步骤106:数字通证单元根据智能合约数据、预置的应用数据和同意建立连接标识生成发布消息并通过桥服务器发送给智能合约;
步骤107:数字通证单元接收桥服务器推送的订阅通信消息,使用会话密钥解密订阅通信消息中的订阅通信消息数据得到签名指令;
步骤108:数字通证单元从签名指令中提取签名参数并显示, 当接收到用户对签名参数的确认信息时,使用数字通证单元中保存的私钥对签名参数进行签名得到签名结果,根据签名结果和智能合约数据生成发布消息并通过桥服务器发送给智能合约,结束。
可选地,本实施例中,步骤101之前还包括:
步骤a1:数字通证单元启动,判断是否已经具有应用账户,如果是,执行步骤a3,否则,执行步骤a2;
步骤a2:数字通证单元接收用户的第二操作信息,根据用户的第二操作信息创建应用账户,执行步骤a3;
步骤a3:数字通证单元等待接收第一操作信息,当接收到第一操作信息时,执行步骤101。
可选地,本实施例中,数字通证单元根据第一操作信息获取会话名称、桥服务器地址和会话密钥并保存具体为:数字通证单元接收通过用户的第一操作信息得到的来自智能合约的二维码信息,对二维码信息进行解码得到会话名称、桥服务器地址和会话密钥并保存。
可选地,本实施例中,数字通证单元根据用户的第一操作信息获取会话名称、桥服务器地址和会话密钥并保存具体为:数字通证单元接收通过用户的第一操作信息得到的来自智能合约的跳转链接信息,从跳转链接信息中获取会话名称、桥服务器地址和会话密钥并保存。
可选地,本实施例中,根据桥服务器地址与对应的桥服务器建立订阅通信连接具体为:
步骤b1:数字通证单元生成第一握手密钥并保存,根据第一预设数据、桥服务器地址和第一握手密钥生成订阅通信连接请求,向桥服务器发送订阅通信连接请求;
步骤b2:数字通证单元接收桥服务器返回的订阅通信连接响应,解析订阅通信连接响应得到第二握手密钥并保存;
步骤b3:数字通证单元获取保存的第一握手密钥和预置的协议标识符,根据第一握手密钥和协议标识符得到第一字符串;
步骤b4:数字通证单元使用第一预设算法对第一字符串进行哈希运算得到第一哈希值,对第一哈希值进行编码得到第一校验值;
步骤b5:数字通证单元判断第一校验值与第二握手密钥是否相同,如果是,执行步骤102,否则,清空保存的会话名称、桥服务器地址和会话密钥,报错结束。
可选地,本实施例中,步骤102具体为:数字通证单元生成应用身份标识,根据应用身份标识生成第一订阅请求,根据保存的会话名称生成第二订阅请求,分别向桥服务器发送第一订阅请求和第二订阅请求。
可选地,本实施例中,根据应用身份标识生成第一订阅请求,具体为:数字通证单元以应用身份标识作为订阅请求的主题生成第一订阅请求;
根据保存的会话名称生成第二订阅请求,具体为:数字通证单元获取预置的订阅请求标识,将订阅请求的主题设置为会话名称,将订阅请求类型设置为订阅请求标识,将订阅请求数据设置为空,将设置后的订阅请求的主题、订阅请求类型和订阅请求数据按照订阅请求的格式进行封装得到第二订阅请求。
可选地,本实施例中,从订阅响应中获取订阅响应数据,根据会话密钥对订阅响应数据中的第一响应数据密文进行验签,具体为:
步骤c1:数字通证单元从订阅响应中获取订阅响应数据,从订阅响应数据中分别提取第一响应数据密文和第一摘要数据;
步骤c2:数字通证单元根据第二预设算法和第一摘要数据使用保存的会话密钥对第一响应数据密文进行验签。
可选地,本实施例中,数字通证单元根据会话密钥解密订阅响应数据中的第一响应数据密文得到智能合约数据并显示具体包括:数字通证单元从订阅响应数据中提取第一向量数据,根据第三预设算法和第一向量数据使用会话密钥解密第一响应数据密文得到智能合约数据,生成用于询问用户是否同意与智能合约建立连接的询问信息,显示智能合约数据和询问信息。
可选地,本实施例中,步骤106具体为:数字通证单元获取保存的应用身份标识、应用基本数据、应用账户数据和支持数字通证种类标识,根据保存的同意建立连接标识、应用身份标识、应用基本数据、应用账户数据和支持数字通证种类标识生成第一数据包,根据第三预设算法使用会话密钥对第一数据包进行加密得到第一密文数据,根据第二预设算法使用会话密钥对第一密文数据进行签名得到第一签名结果,将第一密文数据、第一签名结果和智能合约数据生成第一发布消息,将第一发布消息通过桥服务器发送给智能合约。
可选地,本实施例中,步骤107中,使用会话密钥解密订阅通信消息中的订阅通信消息数据得到签名指令,具体包括:
步骤d1:数字通证单元从订阅通信消息中获取订阅通信消息数据,从订阅通信消息数据分别提取第一消息数据和第二向量数据,根据第二预设算法和第二向量数据使用会话密钥对第一消息数据进行验签,判断是否验签通过,如果是,执行步骤d2,否则,报错结束;
步骤d2:数字通证单元根据第二预设算法使用会话密钥对第一消息数据进行解密得到签名指令。
可选地,本实施例中,签名指令具体为业务签名指令,步骤108具体包括:
步骤M1:数字通证单元从业务签名指令中提取签名参数;
步骤M2:数字通证单元获取本地数据库中保存的智能合约账户的地址列表,查询签名参数中包含的接收账户是否在智能合约账户的地址列表中,如果是,执行步骤M3,否则,执行步骤M4;
步骤M3:数字通证单元从签名参数中包含的附加数据中获取智能合约的特定参数,将智能合约的特定参数显示给用户,当接收到用户对智能合约的特定参数的确认信息时,使用数字通证单元中保存的私钥对签名参数进行签名得到业务签名数据,根据业务签名数据和智能合约数据生成第二发布消息并通过桥服务器发送给智能合约,结束;
步骤M4:数字通证单元显示签名参数并提示用户该业务为普通业务,当接收到用户对签名参数的确认信息时,使用数字通证单元中保存的私钥对签名参数进行签名得到业务签名数据,根据业务签名数据和智能合约数据生成第二发布消息并通过桥服务器发送给智能合约,结束。
可选地,本实施例中,使用数字通证单元中保存的私钥对签名参数进行签名得到业务签名数据,根据业务签名数据和智能合约数据生成第二发布消息并通过桥服务器发送给智能合约,具体为:
步骤A1:数字通证单元将签名参数中的第一随机数、手续费单价、最高限制手续费、接收账户、业务数据和附加数据顺序拼接得到第一业务数据;
步骤A2:数字通证单元获取第二预设数据,将第一业务数据和第二预设数据顺序拼接得到第一待签名数据,对第一待签名数据进行编码得到第一序列化待签名数据;
步骤A3:数字通证单元根据第四预设算法对第一序列化待签名数据进行哈希运算得到第二哈希值,根据发送账户查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对第二哈希值进行签名得到第二签名结果、第三签名结果和第四签名结果;
步骤A4:数字通证单元根据第一业务数据、第二签名结果、第三签名结果和第四签名结果得到业务签名数据,对业务签名数据进行编码得到序列化业务签名数据;
步骤A5:数字通证单元根据序列化业务签名数据生成业务签名响应数据,根据第三预设算法使用会话密钥对业务签名响应数据进行加密得到第二密文数据,根据第二预设算法使用会话密钥对第二密文数据进行签名得到第五签名结果;
步骤A6:数字通证单元根据第二密文数据、第五签名结果和智能合约数据生成第二发布消息,将第二发布消息通过桥服务器发送给智能合约。
可选地,本实施例中,签名指令具体为消息签名指令,签名参数具体包括消息账户数据和待签名消息数据;
步骤108中,使用数字通证单元中保存的私钥对签名参数进行签名得到签名结果,根据签名结果和智能合约数据生成发布消息并通过桥服务器发送给智能合约,具体为:
步骤B1:数字通证单元获取预设字符串,计算待签名消息数据的长度,将预设字符串、待签名消息数据的长度和待签名消息数据顺序拼接得到第二待签名数据;
步骤B2:数字通证单元根据第四预设算法对第二待签名数据进行哈希运算得到第三哈希值,根据消息账户数据查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对第三哈希值进行签名得到第六签名结果、第七签名结果和第八签名结果;
步骤B3:数字通证单元根据第六签名结果、第七签名结果和第八签名结果得到消息签名结果;
步骤B4:数字通证单元根据消息签名结果生成消息签名响应数据,根据第三预设算法使用会话密钥对消息签名响应数据进行加密得到第三密文数据,根据第二预设算法使用会话密钥对第三密文数据进行签名得到第九签名结果;
步骤B5:数字通证单元根据第三密文数据、第九签名结果和智能合约数据生成第三发布消息,将第三发布消息通过桥服务器发送给智能合约。
本实施例提供了一种与智能合约安全通信的方法,通过桥服务器将智能合约与数字通证单元之间建立安全的连接,无需将数字通证单元中的私钥导出,实现了由数字通证单元自身来对通信数据进行签名,保障了数字通证单元与区块链网络上的智能合约之间通信的安全性,给用户带来了极大的便利。
实施例2
本发明实施例2提供了一种与智能合约安全通信的方法,本实施例以数字通证单元具体为数字货币钱包为例,该数字货币钱包应用在移动设备上,且桥服务器已经与智能合约建立了连接,如图2所示,该方法包括如下步骤:
步骤201:数字货币钱包启动,判断是否已经具有钱包账户,如果是,执行步骤203,否则,执行步骤202;
步骤202:数字货币钱包接收用户的第二操作信息,根据用户的第二操作信息创建应用账户,执行步骤203;
步骤203:数字货币钱包等待接收第一操作信息,当接收到用户的第一操作信息时,执行步骤204;
步骤204:数字货币钱包从用户的操作信息中获取会话名称、桥服务器地址和会话密钥并保存;
可选地,在一种可能的实施方式中,步骤203具体为:数字货币钱包根据用户的第一操作信息通过网页端的浏览器访问智能合约,接收来自智能合约的二维码信息,执行步骤204;
相应地,步骤204具体为:数字货币钱包对二维码信息进行解码得到会话名称、桥服务器地址和会话密钥并保存。
可选地,在另一种可能的实施方式中,步骤203具体为:数字货币钱包根据用户的第一操作信息通过内置的浏览器访问智能合约,接收来自智能合约的跳转链接信息,执行步骤204;
相应地,步骤204具体为:数字货币钱包从跳转链接信息中获取会话名称、桥服务器地址和会话密钥并保存。
例如:会话名称具体为:wc:00e46b69-d0cc-4b3e-b6a2-cee442f97188@1;
桥服务器地址具体为:bridge=https%3A%2F%2Fbridge.walletconnect.org&;
会话密钥具体为:key=91303dedf64285cbbaf9120f6e9d160a5c8aa3deb67017a3874cd272323f48ae;
步骤205:数字货币钱包生成第一握手密钥并保存,根据第一预设数据、桥服务器地址和第一握手密钥生成订阅通信连接请求,向桥服务器发送订阅通信连接请求;
可选地,本实施例中,第一握手密钥具体为:第一WebSocket握手密钥;
可选地,本实施例中,第一预设数据具体包括:指令头、连接方式(连接协议)、连接类型、WebSocket协议类型、WebSocket协议版本和订阅通信连接请求的来源;
例如:第一握手密钥具体为:Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==;
桥服务器地址具体为:Host: server.example.com;
第一预设数据具体为:
GET /chat HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13;
其中, GET /chat HTTP/1.1为指令头;
WebSocket :Upgrade: WebSocket为连接方式(连接协议);
Connection: Upgrade为连接类型;
Sec-WebSocket-Version: 13为WebSocket协议版本;
Sec-WebSocket-Protocol: chat, superchat为WebSocket协议类型;
Sec-WebSocket-Version: 13为WebSocket协议版本;
Origin: http://example.com为订阅通信连接请求的来源;
订阅通信连接请求具体为:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13;
步骤206:数字货币钱包接收桥服务器返回的订阅通信连接响应,判断订阅通信连接响应的类型,如为正常响应,执行步骤207,如为错误响应,清空保存的会话名称、桥服务器地址和会话密钥,报错并结束;
步骤207:数字货币钱包解析订阅通信连接响应得到第二握手密钥并保存;
可选地,本实施例中,第二握手密钥具体为:第二WebSocket握手密钥;
例如:订阅通信连接响应具体为:
HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=;
第二握手密钥具体为:Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=;
步骤208:数字货币钱包获取保存的第一握手密钥和预置的协议标识符,将第一握手密钥和协议标识符顺序拼接得到第一字符串;
例如:第一握手密钥具体为:Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==;
协议标识符具体为:258EAFA5-E914-47DA-95CA-C5AB0DC85B11;
第一字符串具体为:Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==258EAFA5-E914-47DA-95CA-C5AB0DC85B11;
步骤209:数字货币钱包使用第一预设算法对第一字符串进行哈希运算得到第一哈希值,对第一哈希值进行编码得到第一校验值;
可选地,本实施例中,对第一哈希值进行编码得到第一校验值具体为:对第一哈希值进行base64编码得到第一校验值;
可选地,本实施例中,第一预设算法具体为:SHA-1算法;
第一哈希值具体为:0xb37a4f2cc0624f1690f64606cf385945b2bec4ea;
第一校验值具体为:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=;
步骤210:数字货币钱包判断第一校验值与第二握手密钥是否相同,如果是,执行步骤211,否则,清空保存的会话名称、桥服务器地址和会话密钥,报错并结束;
可选地,本实施例中,第二握手密钥s3pPLMBiTxaQ9kYGzzhZRbK+xOo=与第一校验值s3pPLMBiTxaQ9kYGzzhZRbK+xOo=相同,执行步骤211;
步骤211:数字货币钱包生成钱包身份标识,根据钱包身份标识生成第一订阅请求,根据保存的会话名称生成第二订阅请求,分别通过桥服务器向智能合约发送第一订阅请求和第二订阅请求;
可选地,本实施例中,根据钱包身份标识生成第一订阅请求具体为:数字货币钱包以钱包身份标识作为订阅请求的主题生成第一订阅请求;
可选地,本实施例中,根据保存的会话名称生成第二订阅请求具体为:数字货币钱包获取预置的订阅请求标识,将订阅请求的主题设置为保存的会话名称,将订阅请求类型设置为订阅请求标识,将订阅请求数据设置为空,将设置后的订阅请求的主题、订阅请求类型和订阅请求数据按照订阅请求的格式进行封装得到第二订阅请求;
具体地,本实施例中,数字货币钱包通过桥服务器向智能合约发送第一订阅请求和第二订阅请求后,智能合约可以对第一订阅请求和第二订阅请求返回接收响应,也可以对第一订阅请求和第二订阅请求不返回接收响应,还可以在向数字货币钱包返回与第一订阅请求和第二订阅请求相关的响应;
例如:订阅请求的主题具体为:topic: 'da437bf0-2783-4b64-904a-622147c895b0';
订阅请求类型具体为:type: 'sub';
订阅请求数据具体为:payload: ' ';
第二订阅请求具体为: topic:'da437bf0-2783-4b64-904a-622147c895b0',type: 'sub',payload: ' ';
步骤212:数字货币钱包等待接收桥服务器返回的订阅响应,当接收到订阅响应时,执行步骤213;
可选地,本实施例中,数字货币钱包接收到的订阅响应是与第一订阅响应中的钱包身份标识和第二订阅响应中的会话名称相关的订阅响应;
步骤213:数字货币钱包从订阅响应中获取订阅响应的主题,判断订阅响应的主题是否为会话名称,如果是,执行步骤214,否则,返回步骤212;
例如:订阅响应具体为:topic: 'da437bf0-2783-4b64-904a-622147c895b0',type:'pub',payload:'{"data":"821d513e79c0d5d20ca5763a7c9c9ef90399acdcc696d2057641e3fcd140db08f78bfc58f943a94af3c63d8049b42ce41d43557e0326d391e921fc90339876824ceda8793b6f673e91c20ce4d1beca79f5ebe969baddef885c15e393b7ed734b234ff291d1e2ed18cb3e3a4bef3b44a51986fcfd78f34e15db69e83ab0fcc18bb41c9dbf3d5444afa9dff7795fb709698981102bd58fc534bf4cb61167bc38477a6ff02908f3292e84cf782c8f367ae4c54dd3304303e459d56cdecadeadb84781f358d0c33862bd9df573bc5908247a","hmac":"78b397e3503175891e00da8708ab35104f0838e4910e7db5979f3c1710f98e40","iv":"12a0fbda5d7cdca8a7eaacf33055c106"}';
订阅响应的主题具体为:topic: 'da437bf0-2783-4b64-904a-622147c895b0';
会话名称具体为:da437bf0-2783-4b64-904a-622147c895b0;
本实施例中,订阅响应的主题是会话名称,执行步骤214;
步骤214:数字货币钱包从订阅响应中获取第一响应数据密文、第一摘要数据和第一向量数据,根据第二预设算法和第一摘要数据使用保存的会话密钥对第一响应数据密文进行验签;
可选地,本实施例中,第二预设算法具体为:HMAC-SHA256算法;
可选地,本实施例中,数字货币钱包从订阅响应中获取第一响应数据密文、第一摘要数据和第一向量数据具体为:数字货币钱包从订阅响应中获取订阅响应数据,从订阅响应数据中分别提取第一响应数据密文、第一摘要数据和第一向量数据;
可选地,本实施例中,根据第二预设算法和第一摘要数据使用保存的会话密钥对第一响应数据密文进行验签具体为:数字货币钱包根据第二预设算法使用保存的会话密钥对第一响应数据密文进行哈希摘要运算得到第三摘要数据,判断第三摘要数据与第一摘要数据是否相同,如相同,判定验签通过,否则,判定验签未通过;
例如,本实施例中,
订阅响应数据具体为:payload:'{"data":"821d513e79c0d5d20ca5763a7c9c9ef90399acdcc696d2057641e3fcd140db08f78bfc58f943a94af3c63d8049b42ce41d43557e0326d391e921fc90339876824ceda8793b6f673e91c20ce4d1beca79f5ebe969baddef885c15e393b7ed734b234ff291d1e2ed18cb3e3a4bef3b44a51986fcfd78f34e15db69e83ab0fcc18bb41c9dbf3d5444afa9dff7795fb709698981102bd58fc534bf4cb61167bc38477a6ff02908f3292e84cf782c8f367ae4c54dd3304303e459d56cdecadeadb84781f358d0c33862bd9df573bc5908247a","hmac":"78b397e3503175891e00da8708ab35104f0838e4910e7db5979f3c1710f98e40","iv":"12a0fbda5d7cdca8a7eaacf33055c106"}';
第一响应数据密文具体为:"data":"821d513e79c0d5d20ca5763a7c9c9ef90399acdcc696d2057641e3fcd140db08f78bfc58f943a94af3c63d8049b42ce41d43557e0326d391e921fc90339876824ceda8793b6f673e91c20ce4d1beca79f5ebe969baddef885c15e393b7ed734b234ff291d1e2ed18cb3e3a4bef3b44a51986fcfd78f34e15db69e83ab0fcc18bb41c9dbf3d5444afa9dff7795fb709698981102bd58fc534bf4cb61167bc38477a6ff02908f3292e84cf782c8f367ae4c54dd3304303e459d56cdecadeadb84781f358d0c33862bd9df573bc5908247a";
第一摘要数据具体为:"hmac":"78b397e3503175891e00da8708ab35104f0838e4910e7db5979f3c1710f98e40";
第一向量数据具体为:"iv":"12a0fbda5d7cdca8a7eaacf33055c106";
步骤215:数字货币钱包判断是否验签成功,如果是,执行步骤216,否则,清空保存的会话名称、桥服务器地址和会话密钥,报错并结束;
步骤216:数字货币钱包根据第三预设算法和第一向量数据使用会话密钥解密第一响应数据密文得到智能合约数据,生成用于询问用户是否同意与智能合约建立连接的询问信息,显示智能合约数据和询问信息,当接收到用户输入的连接信息时,执行步骤217;所述智能合约数据包括智能合约身份标识;
例如:智能合约数据具体为:
id: 1,
jsonrpc: '2.0'.
method: 'session_request',
params: [{
peerId: '15d8b6a3-15bd-493e-9358-111e3a4e6ee4',
peerMeta: {
name: "WalletConnect Example",
description: "Try out WalletConnect v1.x.x",
icons: ["https://example.walletconnect.org/favicon.ico"],
url: "https://example.walletconnect.org";
智能合约身份标识具体为:peerId: '15d8b6a3-15bd-493e-9358-111e3a4e6ee4';
步骤217:数字货币钱包判断连接信息的类型,如为同意建立连接信息,执行步骤219,如为拒绝建立连接信息,执行步骤218;
步骤218:数字货币钱包根据智能合约身份标识和拒绝建立连接信息生成拒绝连接响应并发送给桥服务器,断开与桥服务器的订阅通信连接,清空保存的会话名称、桥服务器地址和会话密钥,结束;
步骤219:数字货币钱包获取保存的钱包身份标识、钱包基本数据、钱包账户数据和支持货币种类标识,根据同意建立连接信息、钱包身份标识、钱包基本数据、钱包账户数据和支持货币种类标识生成第一数据包,根据第三预设算法使用会话密钥对第一数据包进行加密得到第一密文数据,根据第二预设算法使用会话密钥对第一密文数据进行签名得到第一签名结果,将第一密文数据、第一签名结果、第一向量数据和智能合约身份标识生成第一发布消息,将第一发布消息发送给桥服务器,当接收到桥服务器推送的订阅通信消息时,执行步骤220;
可选地,本实施例中,钱包基本数据包括:钱包描述数据、钱包地址数据、钱包图标和钱包名称;
例如:钱包身份标识具体为:peerId: string;
钱包基本数据具体为:peerMeta:description: string;url: string;icons:string[];name: string;);其中,description: string为钱包描述数据,url: string为钱包地址数据,icons: string[]为钱包图标,name: string为钱包名称;
钱包账户数据具体为:accounts: string[];
支持货币种类标识具体为:chainId: number;
同意建立连接信息具体为:approved: boolean;
步骤220:数字货币钱包从订阅通信消息中提取第一消息数据、第二摘要数据和第二向量数据,根据第二预设算法和第二摘要数据使用会话密钥对第一消息数据进行验签,判断是否验签通过,如果是,执行步骤221,否则,报错并结束;
可选地,本实施例中,订阅通信消息具体为:WebSocket消息;
可选地,本实施例中,数字货币钱包从订阅通信消息中提取第一消息数据、第二摘要数据和第二向量数据具体为:数字货币钱包从订阅通信消息中获取订阅通信消息数据,从订阅通信消息数据分别提取第一消息数据、第二摘要数据和第二向量数据;
步骤221:数字货币钱包根据第二预设算法使用会话密钥和第二向量数据对第一消息数据进行解密得到签名指令;
可选地,本实施例中,步骤221还包括:数字货币钱包判断签名指令是否合法,如果是,执行步骤222,否则,报错结束;
步骤222:数字货币钱包判断签名指令的类型,如为交易签名指令,执行步骤223,如为消息签名指令,执行步骤225;
例如:交易签名指令具体为:
"id": 1,
"jsonrpc": "2.0",
"method": "eth_signTransaction",
"params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155",
"to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
"data": "0x",
"gas": "0x76c0", // 30300
"gasLimitPrice": "0x9184e72a000", // 10000000000000
"value": "0x9184e72a", // 2441306250
"nonce": "0x117" // 279 }];
步骤223:数字货币钱包从交易签名指令中提取交易参数并显示,当接收到用户对交易参数的确认信息时,执行步骤224,当接收到用户对交易参数的否认信息时,取消交易,报错结束;
可选地,本实施例中,交易参数具体包括:发送账户、接收账户、转账金额、手续费单价、最高限制手续费、第一随机数和附加数据;
可选地,本实施例中,步骤223具体包括:
步骤M1:数字货币钱包从交易签名指令中提取发送账户、接收账户、转账金额、手续费单价、最高限制手续费、第一随机数和附加数据;
步骤M2:数字货币钱包获取本地数据库中保存的智能合约账户的地址列表,查询接收账户是否在智能合约账户的地址列表中,如果是,执行步骤M3,否则,执行步骤M4;
可选地,本实施例中,智能合约账户的地址列表用于存储现有区块链网络上运行的所有智能合约账户;
可选地,本实施例中,步骤M2替换为:数字货币钱包向数字货币钱包服务器发送查询接收账户请求,接收数字货币钱包服务器返回的查询结果响应,如查询结果响应为确认响应,执行步骤M3,否则,执行步骤M4;
步骤M3:数字货币钱包从附加数据中获取智能合约的特定参数,将交易参数和智能合约的特定参数显示给用户,当接收到用户对交易参数和智能合约的特定参数的确认信息时,执行步骤224,当接收到用户对交易参数和智能合约的特定参数的否认信息时,取消交易,报错结束;
可选地,本实施例中,智能合约的特定参数具体为:调用智能合约函数所需的函数ID、第一函数参数和第二函数参数;
例如:附加数据具体为:
Data:0xa9059cbb0000000000000000000000002bfb974ebc734594f450c7526bbe58e27831efea0000000000000000000000000000000000000000000000056bc75e2d63100000;
函数ID具体为:0xa9059cbb;
第一函数参数具体为:0000000000000000000000002bfb974ebc734594f450c7526bbe58e27831efea;
第二函数参数具体为:0000000000000000000000000000000000000000000000056bc75e2d63100000;
步骤M4:数字货币钱包显示发送账户、接收账户、转账金额、手续费单价、最高限制手续费、第一随机数和附加数据并提示用户该交易为普通交易,当接收到用户对交易参数的确认信息时,执行步骤224,当接收到用户对交易参数的否认信息时,取消交易,报错结束;
例如:交易参数具体为:"params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155",
"to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
"data": "0x",
"gas": "0x76c0", // 30300
"gasLimitPrice": "0x9184e72a000", // 10000000000000
"value": "0x9184e72a", // 2441306250
"nonce": "0x117" // 279 }];
其中"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155"为发送账户"to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567"为接收账户,"value": "0x9184e72a", // 2441306250为转账金额,
"gas": "0x76c0",// 30300为手续费单价,"gasLimitPrice":"0x9184e72a000",// 10000000000000为最高限制手续费,"nonce": "0x117" // 279为第一随机数,"data":"0x"为附加数据;
步骤224:数字货币钱包使用保存的私钥对交易参数进行签名得到交易签名数据,根据交易签名数据和智能合约数据生成第二发布消息,将第二发布消息通过桥服务器发送给智能合约,结束;
可选地,本实施例中,步骤224具体为:
步骤A1:数字货币钱包将第一随机数、手续费单价、最高限制手续费、接收账户、转账金额和附加数据顺序拼接得到第一交易数据;
例如:第一交易数据具体为:"nonce": 1,"gasPrice": {"_hex": "0x0ba43b7300"},"gasLimit":{ "_hex":"0x5208"},"to":"0xd59e3dfbe06ff948ffd5472631c43ac7b90bc5ea","value":{"_hex":"0x0465f4563b6000"},"data": "0x";
步骤A2:数字货币钱包获取第二预设数据,将第一交易数据和第二预设数据顺序拼接得到第一待签名数据,对第一待签名数据进行编码得到第一序列化待签名数据;
可选地,本实施例中,对第一待签名数据进行编码得到第一序列化待签名数据具体为:数字货币钱包对第一待签名数据进行RLP编码得到第一序列化待签名数据;
例如:第二预设数据具体为:"v":00,"r":00,"s":00;
第一待签名数据具体为:"nonce": 1,"gasPrice": {"_hex": "0x0ba43b7300"},"gasLimit":{ "_hex":"0x5208"},"to":"0xd59e3dfbe06ff948ffd5472631c43ac7b90bc5ea","value":{"_hex":"0x0465f4563b6000"},"data": "0x","v":00,"r":00,"s":00;
步骤A3:数字货币钱包根据第四预设算法对第一序列化待签名数据进行哈希运算得到第二哈希值,根据发送账户查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对第二哈希值进行签名得到第二签名结果、第三签名结果和第四签名结果;
可选地,本实施例中,第四预设算法具体为:keccak256算法;
可选地,本实施例中,第五预设算法具体为:secp256k1算法;
例如:第二签名结果具体为:"v": 28;
第三签名结果具体为:"r": "0x08defb26620f5571e50c01eebe25a922fe592860023854be30be8af8b13eea7d";
第四签名结果具体为:"s": "0x466dfee473058d7d5bd1e76242dffa95eb9686ff947dfaca036a24f3b33c2b97";
步骤A4:数字货币钱包将第一交易数据、第二签名结果、第三签名结果和第四签名结果顺序拼接得到交易签名数据,对交易签名数据进行编码得到序列化交易签名数据;
可选地,本实施例中,对交易签名数据进行编码得到序列化交易签名数据具体为:数字货币钱包对交易签名数据进行RLP编码得到序列化交易签名数据;
例如:交易签名数据具体为:{"nonce": 1,"gasPrice": { "_hex": "0x0ba43b7300"},"gasLimit": { "_hex": "0x5208"}, "to": "0xd59e3dfbe06ff948ffd5472631c43ac7b90bc5ea","value": {"_hex": "0x0465f4563b6000" },"data": "0x","v": 28, "r": "0x08defb26620f5571e50c01eebe25a922fe592860023854be30be8af8b13eea7d","s": "0x466dfee473058d7d5bd1e76242dffa95eb9686ff947dfaca036a24f3b33c2b97"};
序列化交易签名数据具体为:"result":"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331";
步骤A5:数字货币钱包根据序列化交易签名数据生成交易签名响应数据,根据第三预设算法使用会话密钥对交易签名响应数据进行加密得到第二密文数据,根据第二预设算法使用会话密钥对第二密文数据进行签名得到第五签名结果;
例如:交易签名响应数据具体为:{ "id": 1, "jsonrpc": "2.0", "result":"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"};
步骤A6:数字货币钱包根据第二密文数据、第五签名结果、第二向量数据、智能合约身份标识和智能合约类型生成第二发布消息,将第二发布消息通过桥服务器发送给智能合约,结束。
可选地,本实施例中,步骤224之后还包括:
步骤N1:数字货币钱包接收桥服务器返回的交易响应,判断交易响应的类型,如为交易成功响应,执行步骤N2,如为交易失败响应,报错结束;
步骤N2:数字货币钱包从交易成功响应中获取交易ID,向数字货币钱包服务器发送查询交易ID的请求;
步骤N3:数字货币钱包接收数字货币钱包服务器返回的查询交易响应,从查询交易响应中获取交易ID对应的交易数据,对数字货币钱包中相应的数字货币钱包账户进行修改,结束;
可选地,本实施例中,对数字货币钱包中相应的数字货币钱包账户进行修改具体为:数字货币钱包修改账户余额并增加新的交易历史记录;
例如:第二发布消息具体为:topic:'da437bf0-2783-4b64-904a-622147c895b0',type:'pub',payload:'{"data":"821d513e79c0d5d20ca5763a7c9c9ef90399acdcc696d2057641e3fcd140db08f78bfc58f943a94af3c63d8049b42ce41d43557e0326d391e921fc90339876824ceda8793b6f673e91c20ce4d1beca79f5ebe969baddef885c15e393b7ed734b234ff291d1e2ed18cb3e3a4bef3b44a51986fcfd78f34e15db69e83ab0fcc18bb41c9dbf3d5444afa9dff7795fb709698981102bd58fc534bf4cb61167bc38477a6ff02908f3292e84cf782c8f367ae4c54dd3304303e459d56cdecadeadb84781f358d0c33862bd9df573bc5908247a","hmac":"78b397e3503175891e00da8708ab35104f0838e4910e7db5979f3c1710f98e40","iv":"12a0fbda5d7cdca8a7eaacf33055c106"}';
步骤225:数字货币钱包从消息签名指令中提取消息参数并显示,当接收到用户对消息参数的确认信息时,执行步骤226,当接收到用户对消息参数的否认信息时,消息取消,报错结束;
可选地,本实施例中,消息参数具体包括:消息账户数据和待签名消息数据;
例如:消息签名指令具体为: { "id": 1, "jsonrpc": "2.0", "method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "Helloworld"]},其中,"params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "Helloworld"]为消息参数,"0x9b2055d370f73ec7d8a03e965129118dc8f5bf83"为消息账户数据,"Hello world"为待签名消息数据;
步骤226:数字货币钱包使用保存的私钥对消息参数进行签名得到消息签名结果,根据消息签名结果和智能合约数据生成第三发布消息,将第三发布消息通过桥服务器发送给智能合约,结束。
可选地,本实施例中,步骤226具体为:
步骤B1:数字货币钱包获取预设字符串,计算待签名消息数据的长度,将预设字符串、待签名消息数据的长度和待签名消息数据顺序拼接得到第二待签名数据;
可选地,本实施例中,预设字符串具体为:\x19Ethereum Signed Message:\n;
步骤B2:数字货币钱包根据第四预设算法对第二待签名数据进行哈希运算得到第三哈希值,根据消息账户数据查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对第三哈希值进行签名得到第六签名结果、第七签名结果和第八签名结果;
步骤B3:数字货币钱包将第六签名结果、第七签名结果和第八签名结果顺序拼接得到消息签名结果;
步骤B4:数字货币钱包根据消息签名结果生成消息签名响应数据,根据第三预设算法使用会话密钥对消息签名响应数据进行加密得到第三密文数据,根据第二预设算法使用会话密钥对第三密文数据进行签名得到第九签名结果;
步骤B5:数字货币钱包根据第三密文数据、第九签名结果、第二向量数据、智能合约身份标识和智能合约类型生成第三发布消息,将第三发布消息通过桥服务器发送给智能合约,结束。
本实施例提供了一种与智能合约安全通信的方法,通过桥服务器将智能合约与数字货币钱包之间建立安全的连接,无需将数字货币钱包中的私钥导出,实现了由数字货币钱包自身来对通信数据进行签名,保障了数字货币钱包与区块链网络上的智能合约之间通信的安全性,给用户带来了极大的便利。
本发明还提供了一种电子设备,如图3所示,其示出了适于用来实现本申请各实施例的电子设备(例如图1中的数字通证单元)300的结构示意图。本申请实施例中的设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图3示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图3所示,设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本申请实施例的方法中限定的上述功能。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述设备中所包含的;也可以是单独存在,而未装配入该设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该设备执行时,使得该设备可以执行上述实施例中的与智能合约安全通信的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本申请提供的电子设备,适用于本申请的的与智能合约安全通信的方法的任一实施例,在此不再赘述。
本发明提供了一种电子设备,通过桥服务器将智能合约与数字通证单元之间建立安全的连接,无需将数字通证单元中的私钥导出,实现了由数字通证单元自身来对通信数据进行签名,保障了数字通证单元与区块链网络上的智能合约之间通信的安全性,给用户带来了极大的便利。
本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述实施例所示的与智能合约安全通信的方法。
本申请提供的计算机可读存储介质,适用于上述的与智能合约安全通信的方法的任一实施例,在此不再赘述。
本申请提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请中的实现与智能合约安全通信的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种实现与智能合约安全通信的方法,其特征在于,包括如下步骤:
步骤101:数字通证单元根据用户的第一操作信息获取会话名称、桥服务器地址和会话密钥并保存,根据所述桥服务器地址与对应的桥服务器建立订阅通信连接;
步骤102:所述数字通证单元生成应用身份标识,根据所述会话名称和所述应用身份标识生成订阅请求并发送给所述桥服务器;
步骤103:所述数字通证单元接收所述桥服务器返回的订阅响应,从所述订阅响应中获取订阅响应数据,根据所述会话密钥对所述订阅响应数据中的第一响应数据密文进行验签,如验签通过,执行步骤104,如验签未通过,报错并结束;
步骤104:所述数字通证单元根据所述会话密钥解密所述订阅响应数据中的第一响应数据密文得到智能合约数据并显示,当接收到用户输入的同意建立连接信息时,执行步骤106,当接收到用户输入的拒绝建立连接信息时,执行步骤105;
步骤105:所述数字通证单元根据所述智能合约数据和预置的拒绝连接标识生成拒绝连接响应并发送给所述桥服务器,断开与所述桥服务器的订阅通信连接,结束;
步骤106:所述数字通证单元根据所述智能合约数据、预置的应用数据和同意建立连接标识生成发布消息并通过所述桥服务器发送给所述智能合约;
步骤107:所述数字通证单元接收所述桥服务器推送的订阅通信消息,使用所述会话密钥解密所述订阅通信消息中的订阅通信消息数据得到签名指令;
步骤108:所述数字通证单元从所述签名指令中提取签名参数并显示, 当接收到用户对所述签名参数的确认信息时,使用数字通证单元中保存的私钥对所述签名参数进行签名得到签名结果,根据所述签名结果和所述智能合约数据生成发布消息并通过所述桥服务器发送给所述智能合约,结束。
2.如权利要求1所述的方法,其特征在于,所述步骤101之前还包括:
步骤a1:所述数字通证单元启动,判断是否已经具有应用账户,如果是,执行步骤a3,否则,执行步骤a2;
步骤a2:所述数字通证单元接收用户的第二操作信息,根据用户的第二操作信息创建应用账户,执行步骤a3;
步骤a3:所述数字通证单元等待接收第一操作信息,当接收到第一操作信息时,执行步骤101。
3.如权利要求1所述的方法,其特征在于,所述数字通证单元根据第一操作信息获取会话名称、桥服务器地址和会话密钥并保存具体为:所述数字通证单元接收通过用户的第一操作信息得到的来自智能合约的二维码信息,对所述二维码信息进行解码得到会话名称、桥服务器地址和会话密钥并保存。
4.如权利要求1所述的方法,其特征在于,所述数字通证单元根据用户的第一操作信息获取会话名称、桥服务器地址和会话密钥并保存具体为:所述数字通证单元接收通过用户的第一操作信息得到的来自智能合约的跳转链接信息,从所述跳转链接信息中获取会话名称、桥服务器地址和会话密钥并保存。
5.如权利要求1所述的方法,其特征在于,所述根据所述桥服务器地址与对应的桥服务器建立订阅通信连接具体为:
步骤b1:所述数字通证单元生成第一握手密钥并保存,根据第一预设数据、所述桥服务器地址和所述第一握手密钥生成订阅通信连接请求,向所述桥服务器发送所述订阅通信连接请求;
步骤b2:所述数字通证单元接收所述桥服务器返回的订阅通信连接响应,解析所述订阅通信连接响应得到第二握手密钥并保存;
步骤b3:所述数字通证单元获取保存的第一握手密钥和预置的协议标识符,根据所述第一握手密钥和所述协议标识符得到第一字符串;
步骤b4:所述数字通证单元使用第一预设算法对所述第一字符串进行哈希运算得到第一哈希值,对所述第一哈希值进行编码得到第一校验值;
步骤b5:所述数字通证单元判断所述第一校验值与所述第二握手密钥是否相同,如果是,执行步骤102,否则,清空保存的会话名称、桥服务器地址和会话密钥,报错结束。
6.如权利要求1所述的方法,其特征在于,所述步骤102具体为:所述数字通证单元生成应用身份标识,根据所述应用身份标识生成第一订阅请求,根据保存的会话名称生成第二订阅请求,分别向所述桥服务器发送所述第一订阅请求和所述第二订阅请求。
7.如权利要求6所述的方法,其特征在于,所述根据所述应用身份标识生成第一订阅请求,具体为:所述数字通证单元以所述应用身份标识作为订阅请求的主题生成第一订阅请求;
所述根据保存的会话名称生成第二订阅请求,具体为:所述数字通证单元获取预置的订阅请求标识,将订阅请求的主题设置为所述会话名称,将订阅请求类型设置为所述订阅请求标识,将订阅请求数据设置为空,将设置后的订阅请求的主题、订阅请求类型和订阅请求数据按照订阅请求的格式进行封装得到第二订阅请求。
8.如权利要求1所述的方法,其特征在于,所述从所述订阅响应中获取订阅响应数据,根据所述会话密钥对所述订阅响应数据中的第一响应数据密文进行验签,具体为:
步骤c1:所述数字通证单元从所述订阅响应中获取订阅响应数据,从所述订阅响应数据中分别提取第一响应数据密文和第一摘要数据;
步骤c2:所述数字通证单元根据第二预设算法和所述第一摘要数据使用保存的所述会话密钥对所述第一响应数据密文进行验签。
9.如权利要求1所述的方法,其特征在于,所述数字通证单元根据所述会话密钥解密所述订阅响应数据中的第一响应数据密文得到智能合约数据并显示具体包括:所述数字通证单元从所述订阅响应数据中提取第一向量数据,根据第三预设算法和第一向量数据使用会话密钥解密第一响应数据密文得到智能合约数据,生成用于询问用户是否同意与智能合约建立连接的询问信息,显示智能合约数据和询问信息。
10.如权利要求1所述的方法,其特征在于,所述步骤106具体为:所述数字通证单元获取保存的应用身份标识、应用基本数据、应用账户数据和支持数字通证种类标识,根据保存的同意建立连接标识、所述应用身份标识、所述应用基本数据、所述应用账户数据和所述支持数字通证种类标识生成第一数据包,根据第三预设算法使用所述会话密钥对所述第一数据包进行加密得到第一密文数据,根据第二预设算法使用所述会话密钥对所述第一密文数据进行签名得到第一签名结果,将所述第一密文数据、所述第一签名结果和所述智能合约数据生成第一发布消息,将所述第一发布消息通过所述桥服务器发送给所述智能合约。
11.如权利要求1所述的方法,其特征在于,所述步骤107中,使用所述会话密钥解密所述订阅通信消息中的订阅通信消息数据得到签名指令,具体包括:
步骤d1:所述数字通证单元从所述订阅通信消息中获取订阅通信消息数据,从所述订阅通信消息数据分别提取第一消息数据和第二向量数据,根据第二预设算法和所述第二向量数据使用所述会话密钥对所述第一消息数据进行验签,判断是否验签通过,如果是,执行步骤d2,否则,报错结束;
步骤d2:所述数字通证单元根据第二预设算法使用所述会话密钥对所述第一消息数据进行解密得到签名指令。
12.如权利要求1所述的方法,其特征在于,所述签名指令具体为业务签名指令,所述步骤108具体包括:
步骤M1:所述数字通证单元从所述业务签名指令中提取签名参数;
步骤M2:所述数字通证单元获取本地数据库中保存的智能合约账户的地址列表,查询所述签名参数中包含的接收账户是否在所述智能合约账户的地址列表中,如果是,执行步骤M3,否则,执行步骤M4;
步骤M3:所述数字通证单元从所述签名参数中包含的附加数据中获取智能合约的特定参数,将所述智能合约的特定参数显示给用户,当接收到用户对所述智能合约的特定参数的确认信息时,使用数字通证单元中保存的私钥对所述签名参数进行签名得到业务签名数据,根据所述业务签名数据和所述智能合约数据生成第二发布消息并通过所述桥服务器发送给所述智能合约,结束;
步骤M4:所述数字通证单元显示所述签名参数并提示用户该业务为普通业务,当接收到用户对所述签名参数的确认信息时,使用数字通证单元中保存的私钥对所述签名参数进行签名得到业务签名数据,根据所述业务签名数据和所述智能合约数据生成第二发布消息并通过所述桥服务器发送给所述智能合约,结束。
13.如权利要求12所述的方法,其特征在于,使用数字通证单元中保存的私钥对所述签名参数进行签名得到业务签名数据,根据所述业务签名数据和所述智能合约数据生成第二发布消息并通过所述桥服务器发送给所述智能合约,具体为:
步骤A1:所述数字通证单元将所述签名参数中的第一随机数、手续费单价、最高限制手续费、接收账户、业务数据和附加数据顺序拼接得到第一业务数据;
步骤A2:所述数字通证单元获取第二预设数据,将所述第一业务数据和所述第二预设数据顺序拼接得到第一待签名数据,对所述第一待签名数据进行编码得到第一序列化待签名数据;
步骤A3:所述数字通证单元根据第四预设算法对所述第一序列化待签名数据进行哈希运算得到第二哈希值,根据发送账户查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对所述第二哈希值进行签名得到第二签名结果、第三签名结果和第四签名结果;
步骤A4:所述数字通证单元根据所述第一业务数据、所述第二签名结果、所述第三签名结果和所述第四签名结果得到业务签名数据,对所述业务签名数据进行编码得到序列化业务签名数据;
步骤A5:所述数字通证单元根据所述序列化业务签名数据生成业务签名响应数据,根据第三预设算法使用所述会话密钥对所述业务签名响应数据进行加密得到第二密文数据,根据第二预设算法使用所述会话密钥对所述第二密文数据进行签名得到第五签名结果;
步骤A6:所述数字通证单元根据所述第二密文数据、所述第五签名结果和所述智能合约数据生成第二发布消息,将所述第二发布消息通过所述桥服务器发送给所述智能合约。
14.如权利要求1所述的方法,其特征在于,所述签名指令具体为消息签名指令,所述签名参数具体包括消息账户数据和待签名消息数据;
所述步骤108中,使用数字通证单元中保存的私钥对所述签名参数进行签名得到签名结果,根据所述签名结果和所述智能合约数据生成发布消息并通过所述桥服务器发送给所述智能合约,具体为:
步骤B1:所述数字通证单元获取预设字符串,计算所述待签名消息数据的长度,将预设字符串、所述待签名消息数据的长度和所述待签名消息数据顺序拼接得到第二待签名数据;
步骤B2:所述数字通证单元根据第四预设算法对所述第二待签名数据进行哈希运算得到第三哈希值,根据所述消息账户数据查找对应的签名私钥,根据第五预设算法使用查找到的签名私钥对所述第三哈希值进行签名得到第六签名结果、第七签名结果和第八签名结果;
步骤B3:所述数字通证单元根据所述第六签名结果、所述第七签名结果和所述第八签名结果得到消息签名结果;
步骤B4:所述数字通证单元根据所述消息签名结果生成消息签名响应数据,根据第三预设算法使用所述会话密钥对所述消息签名响应数据进行加密得到第三密文数据,根据第二预设算法使用所述会话密钥对所述第三密文数据进行签名得到第九签名结果;
步骤B5:数字通证单元根据所述第三密文数据、所述第九签名结果和所述智能合约数据生成第三发布消息,将所述第三发布消息通过所述桥服务器发送给所述智能合约。
15.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于运行所述存储器存储的计算机程序来实现如权利要求1至14任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110386022.6A CN112883435B (zh) | 2021-04-12 | 2021-04-12 | 一种实现与智能合约安全通信的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110386022.6A CN112883435B (zh) | 2021-04-12 | 2021-04-12 | 一种实现与智能合约安全通信的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112883435A CN112883435A (zh) | 2021-06-01 |
CN112883435B true CN112883435B (zh) | 2021-08-24 |
Family
ID=76039946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110386022.6A Active CN112883435B (zh) | 2021-04-12 | 2021-04-12 | 一种实现与智能合约安全通信的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112883435B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822485B (zh) * | 2022-02-15 | 2023-11-11 | 宏達國際電子股份有限公司 | 透過錢包連接介面執行的認證方法、認證系統及電腦可讀儲存媒體 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113746922B (zh) * | 2021-09-03 | 2023-10-20 | 杭州复杂美科技有限公司 | 节点连接方法、计算机设备和存储介质 |
US11361308B1 (en) * | 2021-11-08 | 2022-06-14 | Virtue Gaming Holding Ltd. | Decentralized system for performing blockchain-based token management using a side-blockchain network |
CN115001720B (zh) * | 2022-08-05 | 2022-10-04 | 北京融数联智科技有限公司 | 联邦学习建模安全传输的优化方法、装置、介质和设备 |
CN115296934B (zh) * | 2022-10-08 | 2023-01-24 | 北京安帝科技有限公司 | 基于工控网络入侵的信息传输方法、装置、电子设备 |
CN115914393A (zh) * | 2022-11-29 | 2023-04-04 | 北京科银京成技术有限公司 | 一种通信方法、装置、设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460393A (zh) * | 2009-05-01 | 2012-05-16 | 思杰系统有限公司 | 用于在虚拟存储资源之间建立云桥的系统和方法 |
CN109981650A (zh) * | 2019-03-27 | 2019-07-05 | 互链云网(北京)科技有限公司 | 区块链中通证的转移方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2017223127B2 (en) * | 2016-02-23 | 2023-01-05 | nChain Holdings Limited | Universal tokenisation system for blockchain-based cryptocurrencies |
US10643203B2 (en) * | 2016-04-12 | 2020-05-05 | Digicash Pty Ltd. | Secure transaction controller for value token exchange systems |
-
2021
- 2021-04-12 CN CN202110386022.6A patent/CN112883435B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460393A (zh) * | 2009-05-01 | 2012-05-16 | 思杰系统有限公司 | 用于在虚拟存储资源之间建立云桥的系统和方法 |
CN109981650A (zh) * | 2019-03-27 | 2019-07-05 | 互链云网(北京)科技有限公司 | 区块链中通证的转移方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822485B (zh) * | 2022-02-15 | 2023-11-11 | 宏達國際電子股份有限公司 | 透過錢包連接介面執行的認證方法、認證系統及電腦可讀儲存媒體 |
Also Published As
Publication number | Publication date |
---|---|
CN112883435A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112883435B (zh) | 一种实现与智能合约安全通信的方法和设备 | |
CN111213339B (zh) | 带有客户端密钥的认证令牌 | |
CN107153961B (zh) | 一种支付方法、支付服务器、交易服务器及可读存储介质 | |
CN107249004B (zh) | 一种身份认证方法、装置及客户端 | |
CN111199037B (zh) | 登录方法、系统和装置 | |
US10164970B1 (en) | Secure cross-domain page generation | |
CN112866385B (zh) | 接口调用方法、装置、电子设备和存储介质 | |
CN112039826A (zh) | 一种应用于小程序端的登录方法和装置 | |
CN111784887A (zh) | 一种用户访问的授权放行方法、装置以及系统 | |
JP6447949B1 (ja) | 認証システム、認証サーバ、認証方法及び認証プログラム | |
CN110650014B (zh) | 一种基于hessian协议的签名认证方法、系统、设备及存储介质 | |
CN113282951A (zh) | 一种应用程序的安全校验方法、装置及设备 | |
CN115174558B (zh) | 云网端一体化身份认证方法、装置、设备及存储介质 | |
CN111130805B (zh) | 安全传输方法、电子设备及计算机可读存储介质 | |
CN110830264B (zh) | 业务数据验证方法、服务器、客户端及可读存储介质 | |
US20240177200A1 (en) | Business service interaction method and apparatus, device, and storage medium | |
WO2019027409A1 (en) | MODULAR SYSTEM FOR PROCESSING AND STORING DATA | |
KR20100019165A (ko) | 인터넷뱅킹 서비스 제공 시스템 및 방법 | |
CN115801299B (zh) | 元宇宙身份认证方法、装置、设备及存储介质 | |
CN114584355B (zh) | 一种用于数字货币交易的安全认证方法、装置和系统 | |
CN113379019B (zh) | 核销码生成方法、装置、存储介质及电子设备 | |
CN110098921A (zh) | 验证码生成方法、装置、应用服务端和系统 | |
CN115174106B (zh) | 云服务认证方法、装置、设备及存储介质 | |
CN112926076B (zh) | 一种数据处理的方法、装置和系统 | |
CN114697956B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231030 Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085 Patentee after: Feitian Technologies Co.,Ltd. Address before: 100085 1501a, unit 2, 12 / F, Huizhi building, 9 Xueqing Road, Haidian District, Beijing Patentee before: Beijing Feitian Digital Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |