CN111859313A - 验证方法及装置 - Google Patents
验证方法及装置 Download PDFInfo
- Publication number
- CN111859313A CN111859313A CN201910356957.2A CN201910356957A CN111859313A CN 111859313 A CN111859313 A CN 111859313A CN 201910356957 A CN201910356957 A CN 201910356957A CN 111859313 A CN111859313 A CN 111859313A
- Authority
- CN
- China
- Prior art keywords
- information
- verification
- source code
- verification information
- signature
- 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
- 238000012795 verification Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000009434 installation Methods 0.000 claims description 67
- 101150060512 SPATA6 gene Proteins 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 16
- 238000010200 validation analysis Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供了一种验证方法及装置,该方法包括:基于第一信息生成第二信息生成与第一信息对应的第一验证信息以及与第二信息对应的第二验证信息;向区块链服务节点发送携带有第一验证信息与第二验证信息的请求信息,请求信息用于指示所述区块链服务节点在区块链上生成包含第一验证信息与第二验证信息的目标区块。本申请实现了一种证明第一信息与第二信息的一致性的方法,并且通过在可信环境中执行本申请实施例中的技术方案,从而提升了第一信息与第二信息的可信度。
Description
技术领域
本申请实施例涉及计算机技术,尤其涉及一种验证方法及装置。
背景技术
在已有技术中,编译工具(可以是编译软件、可以是编译平台等)对源代码进行编译后,生成对应的安装包,则,终端可通过运行安装包,执行软件对应功能。
当终端运行软件错误或软件内存在安全隐患时,究其原因可能分为两种:一种是源头错误,即,安装包生产商在生成安装包时出现问题。第二种是外部原因导致传输时出现错误。例如:终端与厂商或者终端与终端在传输安装包的过程中,可能存在安装包被篡改、或者安装包损坏、或者还可能存在传输文件错误等风险,导致终端无法成功运行安装包,或软件运行异常或软件存在安全隐患。
因此,如何保证源代码与安装包的一致性,使用户能够获取到基于源代码生成的正确、有效的安装包,以及,即便出现错误,也能够准确、及时的追溯错误原因,成为亟需解决的问题。
发明内容
本申请提供一种验证方法及装置,能够保证源代码与安装包的一致性,使用户能够获取到基于源代码生成的正确、有效的安装包。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种验证方法,所述方法在可行执行环境下执行,方法包括:装置可基于第一信息生成第二信息;随后,装置生成与第一信息对应的第一验证信息以及与第二信息对应的第二验证信息;接着,装置向区块链服务节点发送携带有第一验证信息与第二验证信息的请求信息,请求信息用于指示区块链服务节点在区块链上生成包含第一验证信息与第二验证信息的目标区块。
通过上述方式,本申请通过在安全环境,即,可行执行环境下生成对应于第一信息运行结果,即,第二信息,从而保证了运行结果的准确性与可信度。并且,本申请通过在区块链上记录多个对象之间的对应关系,从而提供一种可靠的、绝对准确的追溯第一信息与第二信息一致性的方法。
在一种可能的实现方式中,第一验证信息为签名信息,用于对第一信息的内容进行验证;第二验证信息为签名信息,用于对第二信息的内容进行验证。举例说明:若任意两个信息的内容存在差异,则两个信息对应的签名信息也不相同,即,签名信息可用于标识信息的整体(指信息的全部内容)。
通过上述方式,实现了通过签名信息表征第一信息与第二信息之间的关系。
在一种可能的实现方式中,第一验证信息和/或第二验证信息为哈希Hash序列。可选地,在另一种可能的实现方式中,第一验证信息和/或第二验证信息还可以为通过其它可用于对第一信息的整体(包括所有内容)以及第二信息的整体进行签名的结果。
通过上述方式,实现了通过哈希序列表征第一信息与第二信息之间的关系。
在一种可能的实现方式中,可信执行环境为英特尔软件保护扩展SGX环境。在另一种可能的实现方式中,可信执行环境还可以为ARM所属的TEE环境。
通过上述方式,实现了在可信环境中执行本申请实施例中的技术方案,从而提升了第一信息与第二信息的可信度。
在一种可能的实现方式中,第一信息为源代码,第二信息为基于源代码生成的运行结果。举例说明:第一信息可以为用于抽奖的源代码,则第二信息可以为运行抽奖源代码后所得的抽奖结果。
通过上述方式,实现了一种证明源代码与运行结果的一致性的方法,并且通过在可信环境中执行本申请实施例中的技术方案,从而提升了第一信息与第二信息的可信度。
在一种可能的实现方式中,第一信息为源代码,第二信息为基于源代码生成的安装包。
通过上述方式,实现了一种证明源代码与安装包的一致性的方法,并且通过在可信环境中执行本申请实施例中的技术方案,从而提升了第一信息与第二信息的可信度。
第二方面,本申请实施例提供一种验证装置,所述验证装置运行于可信执行环境下,装置包括:第一生成模块、第二生成模块、第三生成模块,其中,第一生成模块,用于基于第一信息生成第二信息;第二生成模块,用于生成与第一信息对应的第一验证信息以及与第二信息对应的第二验证信息;发送模块,用于向区块链服务节点发送携带有第一验证信息与第二验证信息的请求信息,所述请求信息用于指示所述区块链服务节点在区块链上生成包含第一验证信息与第二验证信息的目标区块。
在一种可能的实现方式中,第一验证信息为签名信息,用于对第一信息的内容进行验证;第二验证信息为签名信息,用于对第二信息的内容进行验证。
在一种可能的实现方式中,第一验证信息和/或第二验证信息为哈希Hash序列。
在一种可能的实现方式中,可信执行环境为英特尔软件保护扩展SGX环境。
在一种可能的实现方式中,第一信息为源代码,第二信息为基于源代码生成的运行结果。
在一种可能的实现方式中,第一信息为源代码,第二信息为基于源代码生成的安装包。
第三方面,本申请实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,其中,存储器用于存储软件程序;处理器用于读取所述软件程序并实现如第一方面或第一方面的任意可能的实现方式中的方法的指令。
第四方面,本申请实施例提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第五方面,本申请实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第六方面,本申请实施例提供了一种芯片,该芯片包括处理电路、收发管脚。其中,该收发管脚、和该处理器通过内部连接通路互相通信,该处理器执行第一方面或第一方面的任一种可能的实现方式中的方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种装置结构示意图;
图2是本申请实施例提供的一种计算机系统结构示意图;
图3是本申请实施例提供的一种验证方法的流程示意图之一;
图4是本申请实施例提供的一种验证方法的流程示意图之一;
图5是本申请实施例提供的一种验证装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的装置进行说明。参见图1,为本申请实施例提供的一种装置结构示意图。该装置可以为终端设备。如图所示,该装置包括通信模块110、传感器120、用户输入模块130、输出模块140、处理器150、音视频输入模块160、存储器170以及电源180。
通信模块110可以包括至少一个能使该计算机系统与通信系统或其他计算机系统之间进行通信的模块。例如,通信模块110可以包括有线网络接口,广播接收模块、移动通信模块、无线因特网模块、局域通信模块和位置(或定位)信息模块等其中的一个或多个。这多种模块均在现有技术中有多种实现,本申请不一一描述。
传感器120可以感测系统的当前状态,诸如打开/闭合状态、位置、与用户是否有接触、方向、和加速/减速,并且传感器120可以生成用于控制系统的操作的感测信号。
用户输入模块130,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及接收与系统的用户设置以及功能控制有关的信号输入等。用户输入模块130包括触控面板和/或其他输入设备。
输出模块140包括显示面板,用于显示由用户输入的信息、提供给用户的信息或系统的各种菜单界面等。可选的,可以采用液晶显示器(liquid crystal display,LCD)或有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板。在其他一些实施例中,触控面板可覆盖显示面板上,形成触摸显示屏。另外,输出模块140还可以包括音频输出模块、告警器以及触觉模块等。
音视频输入模块160,用于输入音频信号或视频信号。音视频输入模块160可以包括摄像头和麦克风。
电源180可以在处理器150的控制下接收外部电力和内部电力,并且提供系统的各个组件的操作所需的电力。
处理器150可以指示一个或多个处理器,例如,处理器150可以包括一个或多个中央处理器,或者包括一个中央处理器和一个图形处理器,或者包括一个应用处理器和一个协处理器(例如微控制单元或神经网络处理器)。当处理器150包括多个处理器时,这多个处理器可以集成在同一块芯片上,也可以各自为独立的芯片。一个处理器可以包括一个或多个物理核,其中物理核为最小的处理模块。
存储器170存储计算机程序,该计算机程序包括操作系统程序172和应用程序171等。典型的操作系统如微软公司的Windows,苹果公司的MacOS等用于台式机或笔记本的系统,又如谷歌公司开发的基于的安卓系统等用于移动终端的系统。前述实施例提供的方法可以通过软件的方式实现,可以认为是应用程序171的具体实现。
存储器170可以是以下类型中的一种或多种:闪速(flash)存储器、硬盘类型存储器、微型多媒体卡型存储器、卡式存储器(例如SD或XD存储器)、随机存取存储器(randomaccess memory,RAM)、静态随机存取存储器(static RAM,SRAM)、只读存储器(read onlymemory,ROM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、可编程只读存储器(programmable ROM,PROM)、磁存储器、磁盘或光盘。在其他一些实施例中,存储器170也可以是因特网上的网络存储设备,系统可以对在因特网上的存储器170执行更新或读取等操作。
处理器150用于读取存储器170中的计算机程序,然后执行计算机程序定义的方法,例如处理器150读取操作系统程序172从而在该系统运行操作系统以及实现操作系统的各种功能,或读取一种或多种应用程序171,从而在该系统上运行应用。
存储器170还存储有除计算机程序之外的其他数据173,例如本申请中涉及的区块、私钥、交易数据、以及随机数等。
图1中各个模块的连接关系仅为一种示例,本申请任意实施例提供的方法也可以应用在其它连接方式的终端设备中,例如所有模块通过总线连接。
基于图1,本申请实施例还提供了一种计算机系统,如图2所示。该计算机系统可以应用于图1中的应用程序171层。在该系统中,包括可信执行环境和富执行环境(richexecution environment,REE)。将高安全敏感的应用与通用的软件环境进行隔离,提供专门的可信执行环境TEE,并保护应用的资源和数据的保密性、完整性和访问权限;对Android等容易被攻击的传统操作系统提供通用的富执行环境REE。在REE侧执行的应用称为客户端应用程序(client application,CA),比如银行类应用等第三方支付应用,在TEE侧执行的应用称为可信应用程序(trusted application,TA),比如执行签名、加解密计算等关键服务的应用,其中,本申请实施例中的技术方案中的部分内容,例如:执行签名等步骤,均在TA模块中执行。由于TA运行在可信执行环境TEE中,TA的部署/升级操作需要严格遵循TEE发行方(通常是终端厂商)的安全验证规范,比如使用数字签名等措施,确保TEE各个环节是真正可信的。可信执行环境TEE中包括可信执行环境内部应用程序编程接口(trustedexecution environment internal application programming interface,TEE InternalAPI)和可信操作系统部件,TEE Internal API的主要作用为:向上提供可信操作系统部件的功能、与客户端应用程序CA通信、实现TA与TA通信、提供安全存储、密码学功能、时间功能等;可信操作系统部件主要包括可信核心框架、可信功能、可信内核和可信执行环境TEE通信代理,其中,可信核心框架为TA提供类似操作系统的功能;可信功能为应用开发者提供支持能力;可信内核用于与平台硬件中的可信设备进行交互;可信执行环境通信代理为TA和CA提供一个安全的通信通道,例如,可信执行环境通信代理通过平台硬件将消息传递至富执行环境通信代理,实现TA和CA的交互。富执行环境REE中包括可信执行环境客户端应用程序编程接口、可信执行环境功能应用程序编程接口和多媒体操作系统,多媒体操作系统部件主要包括公共设备驱动和富执行环境通信代理,其中,富执行环境通信代理用于与TEE进行通信,CA和TA提供一个安全的通信通道,公共设备驱动用于驱动平台硬件中的公共设备。CA使用可信执行环境客户端应用程序编程接口、可信执行环境功能应用程序编程接口接入到由TA提供的安全服务。
结合上述如图2所示的系统结构示意图,下面介绍本申请的具体实施方案:
场景一
结合图2,如图3所示为本申请实施例中的验证方法的流程示意图,在图3中:
步骤101,基于第一信息生成第二信息。
具体的,在本申请的实施例中,装置接收第一信息。可选地,在一个实施例中,第一信息可以为源代码。以及,在本申请的实施例中,第一信息可以为其它终端发送的,或者,第一信息还可以为装置从云存储中获取到的,或者,第一信息还可以为操作人员在装置中进行编码等操作后生成的。
在本申请的实施例中,装置(具体可以为图2中所示的REE,需要说明的是,在本申请的实施例中,REE可用于主程序的处理与执行,例如:控制TEE进行编码等操作)接收到第一信息接收成功(也可以为第一信息在装置中的其它模块中生成成功)后,与可信执行环境进行交互,以将第一信息上传至可信执行环境中进行后续步骤。
可选地,在一个实施例中,可信执行环境可以为图2中所示的ARM(Advanced RISCMachines)公司所属的可信执行环境(trusted execution environment,TEE)。在另一个实施例中,可信执行环境还可以为英特尔公司所属的英特尔软件保护扩展(Intel SoftwareGuard Extensions,SGX)环境。
具体的,REE可指示装置在可信执行环境(以下简称SGX)中对第一信息进行编译,以生成与第一信息对应的第二信息。可选地,在本申请的实施例中,操作人员可预先将计算机程序(该计算机程序用于执行本申请实施例中的技术方案)嵌入装置中,以使SGX环境中的TA层(或可称为TA模块)可执行本申请实施例中的步骤(例如:编译部分、以及与区块链的交互部分等),则,REE可指示TA层对第一信息进行编译,编译结果(或可称为运行结果)即为本申请实施例中的第二信息。在一个实施例中,若第一信息为源代码,则,第二信息可为对源代码进行编译后生成的安装包。在另一个实施例中,第一信息还可以为用于抽奖的源代码,则,第二信息可以为基于抽奖源代码运行后生成的抽奖结果。
需要说明的是,如前所述,SGX环境可提供一种不会受到外界干扰的可信执行环境,因此,装置在SGX环境中生成的对应于第一信息的第二信息,例如:基于源代码A生成的安装包A,则不会在装置侧发生被篡改等任何问题。
步骤102,生成与第一信息对应的第一验证信息以及与第二信息对应的第二验证信息。
具体的,在本申请的实施例中,REE在监控到SGX对第一信息的编译完成之后(例如已成功生成对应的安装包),则REE控制装置在SGX环境(具体可以为TA)中,生成与第一信息对应的第一验证信息以及生成与第二信息对应的第二验证信息。
在本申请的实施例中,第一验证信息和/或第二验证信息可以为签名信息,即,装置通过在SGX中执行签名操作,以生成用于标识第一信息的内容的签名信息以及标识第二信息的内容的第二信息。需要说明的是,本申请实施例中所指的标识是指对第一信息或第二信息的内容的唯一确定。即,若第一信息中包括A、B、C三个元素,则第一标识信息对应的第一验证信息可用于标识第一信息中包含且仅包含A、B、C三个元素,若第一信息中的内容有修改(包括删除、修改或添加),则通过第一验证信息可对第一信息是否有修改进行验证。
可选地,在一个实施例中,第一验证信息和/或第二验证信息为哈希(Hash)序列。在其他实施例中,还可以通过其它签名方式对第一信息和/或第二信息进行签名或加密,以保证第一信息与第二信息内容上的唯一性。
步骤103,向区块链服务节点发送携带有所述第一验证信息与所述第二验证信息的创建区块指令,所述创建区块指令用于指示所述区块链服务节点在区块链上生成包含第一验证信息与第二验证信息的目标区块。
具体的,在本申请的实施例中,REE在监测到装置已完成生成第一验证信息和第二验证信息的步骤后,可控制装置在SGX环境(具体可以为TA)中将第一验证信息与第二验证信息上传至区块链,以在区块链上生成包含第一验证信息与第二验证信息的目标区块。可选地,装置可通过SGX环境中的区块链客户端向区块链服务节点发送携带有第一验证信息和第二验证信息以及其它信息(例如:第一信息的描述信息和/或第二信息的描述信息等)的区块创建指令,从而使区块链服务节点基于指令中的内容,在区块链上生成包含上述信息(即第一验证信息、第二验证信息和其它信息)的目标区块。其中,装置(具体指SGX环境)与区块链的交互过程将在下面的实施例中进行详细说明。
在本申请的实施例中,基于区块链的特殊性,即,区块链上的信息不可篡改,可保证第一验证信息与第二验证信息的相关性,进一步可保证第一验证信息对应的第一信息与第二验证信息对应的第二信息之间的一致性以及相关性。举例说明:若用户获取到第一信息与第二信息,可基于第一信息和/或第二信息生成对应的第一验证信息与第二验证信息,具体的,用户可基于相同的加密方法或签名方法,例如:哈希算法,生成与获取到的第一信息对应的第一验证信息以及与第二信息对应的第二验证信息。随后,用户可通过第一验证信息和/或第二验证信息在区块链上检索包含第一验证信息和/或第二验证信息的目标区块,并提取目标区块中包含的对象(包括但不限于:第一验证信息、第二验证信息等)。接着,用户可通过验证目标区块中的第一验证信息与第二验证信息与用户生成的第一验证信息与第二验证信息的一致性,确定用户获取到的第一信息与第二信息是否与装置(指开发端的装置)生成的第一信息与第二信息一致。
综上所述,本申请通过在安全环境中生成基于源代码的安装包,并在区块链记录多个对象之间的对应关系,从而提供一种可靠的、绝对准确的追溯源代码与安装包的一致性的方法。
为使本领域技术人员更好的理解本申请实施例中的技术方案,下面以具体实施例进行详细阐述。
如图4所示为本申请实施例中的一种验证方法的流程示意图,在图4中:
步骤201,获取源代码。
在本实施例中,以第一信息为源代码为例。具体的,主程序(具体可以为图2中的REE或者装置中的其它可监测到可信执行环境并控制可信执行环境的模块,或者,主程序还可以是SGX中的控制程序(例如操作人员可在装置中嵌入计算机程序以使TA中存在可执行本实施例中所述的主程序执行的操作))获取源代码。其中,源代码为已完成编码并测试成功的代码程序,可选地,操作人员可在装置中的其它模块(例如:应用层)中完成源代码编写及测试,并提交。主程序检测到源代码提交操作后,将源代码存储至本地存储中。
需要说明的是,本申请实施例中所述的主程序仅为监控或控制端,例如:主程序可监控可信执行环境中的各模块对源代码的执行操作完成情况,并在监测到操作完成后,触发其它模块完成后续的操作。
步骤202,对源代码进行编译。
具体的,在本实施例中,主程序监测到源代码接收完成后,可触发编译程序,具体的,主程序触发如图2中所示的SGX中的TA,以执行对源代码的编译操作,即,如上文所述,TA中存在可控制装置在SGX中执行编译操作的计算机程序(或可称为编译程序)。
接着,TA中的编译程序(或可称为编译模块或编译器)可基于主程序的命令,从本地存储中提取源代码,并对源代码进行编译,以生成与源代码对应的安装包(为区分于后续用户端接收到的源代码与安装包,将开发端生成的源代码称为源代码A、对应的安装包为安装包A)。需要说明的是,本申请实施例中的技术方案是通过在SGX环境中执行编译操作,以隔绝外界因素对编译过程的干扰,编译操作的具体细节仍可参照已有技术实施例中的流程,本申请不再赘述。
随后,主程序可通过实时监控,获知编译器已完成对源代码的编译操作,即已生成对应于源代码A的安装包A。或者,如图4所示,编译器可在编译完成后,向主程序返回响应信息,以告知主程序编译操作已完成。
随后,主程序可指示SGX中的加密模块对源代码与安装包分别进行加密,并指示加密模块将加密后的源代码与安装包上传至云端(例如:图4中所示的分布式存储)。可选地,本步骤中所述的加密是指对文件进行加密,例如:可将源代码与安装包进行压缩,并对压缩包进行加密,随后,将加密后的压缩包上传至云端。具体加密方式可根据实际需求进行设置,本申请不做限定。
接续参照图4,加密文件(指加密后的源代码A和对应的安装包A)上传成功后,分布式存储向主程序返回响应信息,以告知主程序文件上传成功。
步骤203,生成与源代码对应的签名信息1以及与安装包对应的签名信息2。
具体的,在本实施例中,主程序确定加密文件上传成功后,则可触发下一步流程,即,对源代码与安装包的验证信息生成步骤。同样,在本申请的实施例中,如图2所示的SGX环境中的TA可存在执行生成验证信息的计算机程序(或可称为签名程序),从而使主程序触发TA(具体指TA中的签名模块,所述签名模块用于执行所述签名程序)执行验证信息的生成步骤。需要说明的是,如上文所述,本步骤中的签名操作是指生成源代码与安装包对应的签名信息,或者也可以理解为对源代码与安装包的整体(包括全部内容)进行加密。
在本实施例中,以签名方式为哈希算法为例进行说明。具体的,主程序触发签名模块对源代码A与安装包A进行签名操作。签名模块可从编译器获取到源代码A以及与源代码对应的安装包A。记着,签名模块可基于主程序的触发指令,生成与源代码A对应的哈希序列1,以及与安装包A对应的哈希序列2。哈希序列的具体生成方式可参照已有技术中的方式,本申请不再赘述。可选地,编译器完成对源代码的编译后,还可将源代码A与安装包A存储于SGX环境中的缓存中,随后,签名模块可从SGX中的缓存中读取源代码A与安装包A,并执行签名操作。
需要说明的是,本申请实施例中的签名操作(即生成与源代码对应的第一验证信息以及与安装包对应的第二验证信息的步骤)在SGX环境执行,以隔绝外界因素对编译过程的干扰,签名操作的具体细节仍可参照已有技术实施例中的流程,本申请不再赘述。
步骤204,向区块链服务节点发送请求信息。
步骤205,区块链服务节点基于请求信息,在区块链上生成包含第一验证信息与第二验证信息的目标区块。
区块链是一种特殊的分布式数据库。首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点(去中心化),每个节点都是平等的,都保存着整个数据库。用户可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
因此,基于区块链的上述特性,本申请实施例中通过在区块链生成包含第一验证信息与第二验证信息的目标区块,从而可保证第一验证信息与第二验证信息的一致性。
具体的,继续参照图4,主程序获知签名信息生成成功后(其中,可选地,主程序可通过主动监测的方式,获知签名模块已完成签名操作;或者,还可以通过签名模块在签名操作完成之后,向主程序返回响应信息,以告知主程序签名操作已完成),触发后续流程,即,主程序向区块链客户端触发提交指令,以指示区块链客户端将第一验证信息与第二验证信息进行提交,其中,提交对象为区块链。
具体的,主程序触发提交指令,以通知TA中的提交模块(或者也可以称为区块链客户端,用于与区块链进行数据交互)从签名模块处获取已生成的签名信息1(即哈希序列1)与签名信息2(即哈希序列2),并将签名信息1与签名信息2提交至区块链,以在区块链上生成包含签名信息1与签名信息2的目标区块。
下面对区块链客户端与区块链之间的交互,并生成目标区块的过程进行详细阐述:
区块链作为一种分布式记账本,区块链客户端在区块链上创建目标区块的过程可看作为一笔记账交易。具体的,区块链客户端发起记账交易,具体方式为:区块链客户端向区块链服务节点发送请求信息,请求信息中包括但不限于:证书信息、请求类型以及记账数据。其中,证书信息用于区块链服务节点进行验证使用,以检测区块链客户端是否为合法的客户端。请求类型为记账交易。以及,记账数据中包括但不限于:安装包A的版本信息、签名信息1与签名信息2、源代码存放地址(指源代码在云端的存放地址)、安装包的存放地址(指安装包在云端的存放地址)、软件发布者信息(包括标识信息、名称、地址等信息)。
需要说明的是,区块链客户端可从签名模块中获取从签名模块处获取已生成的签名信息1与签名信息2,也可以为签名模块将签名信息1与签名信息2存储到SGX环境中的缓存中,主程序向区块链客户端发布的触发指令中可包括签名信息1与签名信息2在缓存中的位置,随后,区块链客户端可从缓存中提取签名信息1与签名信息2,以及,上述源代码存放地址(指源代码在云端的存放地址)、安装包的存放地址(指安装包在云端的存放地址)、软件发布者信息(包括标识信息、名称、地址等信息)以及安装包A的版本信息等信息均为主程序获取并发布给区块链客户端的。可选地,若主程序为TA中的控制程序,则,主程序可从签名模块中获取签名信息1和签名信息2,并将携带签名信息1、签名信息2及版本信息等信息的提交指令下达给区块链客户端。
接着,区块链服务节点接收到网络请求后,获取其中所包含的信息(具体包括安装包A的版本信息、签名信息1与签名信息2、源代码存放地址(指源代码在云端的存放地址)、安装包的存放地址(指安装包在云端的存放地址)和软件发布者信息(包括标识信息、名称、地址等信息)),并进行共识记账,即,生成包含上述信息的目标区块。
可选地,在本申请中,区块链服务节点接收到网络请求后,还可以基于请求所携带的信息(例如:安装包A的版本信息、签名信息1与签名信息2、源代码存放地址等信息)生成多个目标区块。举例说明:多个目标区块包含的信息可相同。或者,多个目标区块可存储有不同的信息,并且,多个区块之间相互关联。例如:目标区块A与目标区块B关联,其中,目标区块A存储有源代码的相关信息,例如:源代码对应的签名信息1,目标区块B可存储有安装包的相关信息,例如:安装包对应的签名信息2。相应的,在验证阶段,用户需要对相关联的多个目标区块中的信息进行验证。
为使本领域技术人员更好的理解目标区块的生成过程,下面以以太坊区块链服务为例进行详细阐述。
在以太坊区块链服务中,为了确保网络中的所有节点都有着同一份数据拷贝,并且没有向数据库中写入任何无效数据,以太坊目前使用工作量证明(Proof Of Work,POW)算法来保证网络安全,即通过矿工挖矿(Mining)来达成共识(Consensus)。其中,共识是指各节点的数据实现了一致。
记账交易通常分为三个阶段:
第一阶段:受理阶段。
具体的,其受理阶段可以理解为待上链的业务数据(即本申请实施例中的网络请求所包含的签名信息1、签名信息2、安装包A的版本信息等记账数据)被区块链网络中的某一区块链节点接收到,并由该区块链节点受理该业务数据。具体的,区块链服务节点接收到区块链客户端发送的网络请求后,获取其中包含记账数据(以下统称为业务数据),并将业务数据存放在交易池中。
以及,区块链服务节点对交易进行验证。即,基于上文所述的网络请求中所包含的证书信息和/或请求类型等信息,进行合法性验证,例如:验证交易是否合法、客户端是否合法等。
第二阶段:共识阶段。
共识阶段可以理解为区块链节点在受理该业务数据之后,需要由区块链网络中的其它区块链节点参与对该业务数据进行共识处理,业务数据通过共识后,进入存储阶段。具体的,区块链服务节点对业务数据进行合法性验证成功后,确定受理该业务数据。接着,区块链服务节点执行智能合约,矿工基于业务数据生成区块(即生成包含所述业务数据的区块)。随后,区块链服务节点采用广播的方式将包含有业务数据的区块发送给共识节点,以使共识节点对该业务数据进行共识处理。
第三阶段:存储阶段。
存储阶段可以理解为区块链节点将共识通过的业务数据进行上链处理。
继续参照图4,区块链完成目标区块的创建后,向SGX中的区块链客户端返回响应信息,告知区块链客户端目标区块创建成功。随后,区块链客户端向主程序返回响应信息,以告知主程序目标区块创建成功。
步骤206,用户验证。
参照图4,用户可从分布式存储或其它方式(例如开发端直接发送给用户)获取到安装包A的版本信息、签名信息1与签名信息2、源代码存放地址(指源代码在云端的存放地址)、安装包的存放地址(指安装包在云端的存放地址)、软件发布者信息(包括标识信息、名称、地址等信息)等信息。随后,用户可向区块链服务节点发送查询请求,其中,查询请求中可包括上述信息中的一个或多个信息。区块链服务节点接收到查询请求后,在区块链中检索包含查询请求中所携带的信息对应的区块,并将区块中包括的业务数据(包括但不限于:安装包A的版本信息、签名信息1与签名信息2、源代码存放地址(指源代码在云端的存放地址)、安装包的存放地址(指安装包在云端的存放地址)、软件发布者信息(包括标识信息、名称、地址等信息))返回给用户。
接着,用户可基于用户从分布式存储或开发端获取到的源代码及安装包(以下简称源代码B和安装包B,其中,源代码B与源代码A可能相同也可能不同,安装包B与安装包A可能相同也可能不同),生成对应的签名信息。具体的,生成与源代码B对应的签名信息3(签名信息3为哈希序列),以及生成与安装包B对应的签名信息4(签名信息4为哈希序列)。
接着,用户将签名信息1与签名信息3进行比对,以及,将签名信息2与签名信息4进行比对。若比对结果一致,即,签名信息1与签名信息3相同,签名信息2与签名信息4相同,则可确定用户接收到的源代码与安装包即为开发端生成的源代码与安装包。
综上所述,本申请通过在安全环境中生成基于源代码的安装包,并在区块链记录多个对象之间的对应关系,从而提供一种可靠的、绝对准确的追溯源代码与安装包的一致性的方法。
上述主要从各个网元之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,验证装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对验证装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,在采用对应各个功能划分各个功能模块的情况下,图5示出了上述实施例中所涉及的验证装置200的一种可能的结构示意图,如图5所示,验证装置200可以包括:第一生成模块210、第二生成模块220、第三生成模块230。其中,第一生成模块210可用于“基于第一信息生成第二信息”的步骤,例如,该模块可以用于支持验证装置执行上述方法实施例中的步骤101、步骤201、步骤202。第二生成模块220可用于“生成与第一信息对应的第一验证信息以及与第二信息对应的第二验证信息”的步骤,例如,该模块可以用于支持验证装置执行上述方法实施例中的步骤102、步骤203。第三生成模块230可用于“在区块链上生成包含第一验证信息与第二验证信息的目标区块”的步骤,例如,该模块可以用于支持验证装置执行上述方法实施例中的步骤103、步骤204。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由验证装置执行,以控制验证装置用以实现上述方法实施例。
基于相同的技术构思,本申请实施例还提供一种计算机程序,当该计算机程序被验证装置执行时,用以实现上述方法实施例。
所述程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
基于相同的技术构思,本申请实施例还提供一种处理器,该处理器用以实现上述方法实施例。上述处理器可以为芯片。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于网络设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (14)
1.一种验证方法,其特征在于,所述方法在可行执行环境下执行,所述方法包括:
基于第一信息生成第二信息;
生成与所述第一信息对应的第一验证信息以及与所述第二信息对应的第二验证信息;
向区块链服务节点发送携带有所述第一验证信息与所述第二验证信息的请求信息,所述请求信息用于指示所述区块链服务节点在区块链上生成包含所述第一验证信息与所述第二验证信息的目标区块。
2.根据权利要求1所述的方法,其特征在于,其中,
所述第一验证信息为签名信息,用于对所述第一信息的内容进行验证;
所述第二验证信息为签名信息,用于对所述第二信息的内容进行验证。
3.根据权利要求1或2所述的方法,其特征在于,其中,
所述第一验证信息和/或所述第二验证信息为哈希Hash序列。
4.根据权利要求1至3任一项所述的方法,其特征在于,其中,
所述可信执行环境为英特尔软件保护扩展SGX环境。
5.根据权利要求1至4任一项所述的方法,其特征在于,其中,
所述第一信息为源代码,所述第二信息为基于所述源代码生成的运行结果。
6.根据权利要求1至5任一项所述的方法,其特征在于,其中,
所述第一信息为源代码,所述第二信息为基于所述源代码生成的安装包。
7.一种验证装置,其特征在于,所述验证装置运行于可行执行环境下,所述装置包括:
第一生成模块,用于基于第一信息生成第二信息;
第二生成模块,用于生成与所述第一信息对应的第一验证信息以及与所述第二信息对应的第二验证信息;
发送模块,用于向区块链服务节点发送携带有所述第一验证信息与所述第二验证信息的请求信息,所述请求信息用于指示所述区块链服务节点在区块链上生成包含所述第一验证信息与所述第二验证信息的目标区块。
8.根据权利要求7所述的装置,其特征在于,其中,
所述第一验证信息为签名信息,用于对所述第一信息的内容进行验证;
所述第二验证信息为签名信息,用于对所述第二信息的内容进行验证。
9.根据权利要求7或8所述的装置,其特征在于,其中,
所述第一验证信息和/或所述第二验证信息为哈希Hash序列。
10.根据权利要求7至9任一项所述的装置,其特征在于,其中,
所述可信执行环境为英特尔软件保护扩展SGX环境。
11.根据权利要求7至10任一项所述的装置,其特征在于,其中,
所述第一信息为源代码,所述第二信息为基于所述源代码生成的运行结果。
12.根据权利要求7至11任一项所述的装置,其特征在于,其中,
所述第一信息为源代码,所述第二信息为基于所述源代码生成的安装包。
13.一种装置,其特征在于,所述装置运行在可信执行环境下,包括:
存储器,用于存储指令;
处理器,与所述存储器耦合,用于执行权利要求1至6任一项所述的方法。
14.一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机执行,以控制所述计算机执行权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910356957.2A CN111859313A (zh) | 2019-04-29 | 2019-04-29 | 验证方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910356957.2A CN111859313A (zh) | 2019-04-29 | 2019-04-29 | 验证方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111859313A true CN111859313A (zh) | 2020-10-30 |
Family
ID=72965373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910356957.2A Pending CN111859313A (zh) | 2019-04-29 | 2019-04-29 | 验证方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111859313A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506531A (zh) * | 2020-12-11 | 2021-03-16 | 中国科学院信息工程研究所 | 软件安装方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
KR20170136406A (ko) * | 2016-05-30 | 2017-12-11 | 삼성전자주식회사 | 어플리케이션을 인증하는 전자 장치 및 그것의 동작 방법 |
CN109634615A (zh) * | 2018-10-30 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 应用安装包的发布方法、验证方法和装置 |
-
2019
- 2019-04-29 CN CN201910356957.2A patent/CN111859313A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170136406A (ko) * | 2016-05-30 | 2017-12-11 | 삼성전자주식회사 | 어플리케이션을 인증하는 전자 장치 및 그것의 동작 방법 |
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
CN109634615A (zh) * | 2018-10-30 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 应用安装包的发布方法、验证方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506531A (zh) * | 2020-12-11 | 2021-03-16 | 中国科学院信息工程研究所 | 软件安装方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11258792B2 (en) | Method, device, system for authenticating an accessing terminal by server, server and computer readable storage medium | |
EP2727040B1 (en) | A secure hosted execution architecture | |
CN108960830B (zh) | 智能合约的部署方法、装置、设备及存储介质 | |
US10721076B2 (en) | Method, device, terminal, and server for a security check | |
CN102685727B (zh) | 一种应用程序发送、运行方法、系统、服务器和终端 | |
CN108845812A (zh) | 插件更新方法、装置、计算机设备和存储介质 | |
US9195809B1 (en) | Automated vulnerability and error scanner for mobile applications | |
CN105446713A (zh) | 安全存储方法及设备 | |
CN111291339B (zh) | 一种区块链数据的处理方法、装置、设备及存储介质 | |
US20160197950A1 (en) | Detection system and method for statically detecting applications | |
CN105893837B (zh) | 应用程序安装方法、安全加密芯片及终端 | |
CN104199654A (zh) | 开放平台的调用方法及装置 | |
CN109284585B (zh) | 一种脚本加密方法、脚本解密运行方法和相关装置 | |
CN110326266A (zh) | 一种数据处理的方法及装置 | |
CN109844748A (zh) | 托管在虚拟安全环境中的安全服务 | |
JP2014048800A (ja) | 認証システムおよび認証方法 | |
CN111476652A (zh) | 基于区块链的数据处理方法、装置、终端及存储介质 | |
CN113168482A (zh) | 用于确保源码的可信性的方法 | |
CN108229210A (zh) | 一种保护数据的方法、终端及计算机可读存储介质 | |
CN111859313A (zh) | 验证方法及装置 | |
CN105873030A (zh) | 一种对终端应用进行副署签名的方法 | |
CN108563953B (zh) | 一种安全可扩展的可信应用开发方法 | |
KR101711024B1 (ko) | 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치 | |
CN109167785B (zh) | 一种虚拟可信根的调用方法和业务服务器 | |
KR20150039444A (ko) | 어플리케이션 위변조 방지 시스템 및 방법 |
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 |