具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本领域技术人员更容易理解本发明实施例提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。
区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。区块链由其特别的区块和交易产生、验证协议,具有不可更改,不可伪造、完全可追溯的安全特性。
区块链网络中的每一个节点均享有相同的权限,其中,节点是指区块链网络的账号,如图1所示,对于多个节点设备,每一个节点设备在登陆账号后,可以参与挖矿,即计算区块。在计算区块时,首先需要根据区块链既定的协议计算出当前区块对应的target值,即target=F,其中F为前一个区块中target值以及前一个区块和当前区块之间的时间差。然后各节点设备通过当前区块号作为种子,产生一个非常大的随机数文件。每个节点设备将在随机数文件中不断的遍历随机数并做哈希hash(随机数)的运算,当节点设备从文件中找到一个hash(v)<target的随机数v时,说明本轮挖矿结束,所有节点设备中第一个找到v值的节点设备获得写区块权限。
其中,每一个节点在本地均存储一条区块链,不管由哪一个节点生成区块,各个节点之间基于P2P(Point to Point,点对点)网络通信机制可以保证各个节点本地存储的区块链的一致性。
本发明实施例提供一种记录应用程序配置信息的方法,其中,所述应用程序是区块链网络中的节点,存储有由多个区块组成的区块链,每个区块用于存储信息,如图2所示,包括:
S201、检测用于更改应用程序的配置信息的事件。
值得说明的是,本发明实施例所描述的应用程序可以是电子设备安装的第三方的应用程序,也可以是电子设备的系统应用程序。
其中,应用程序为区块链网络中的节点是指一个应用程序是区块链网络中的一个账号,对应该账号的节点设备可以由应用程序的运营商提供。这样,每一个应用程序作为区块链网络中的账号,具备在区块链中写入数据的权限。
S202、将更改后的配置信息写入所述应用程序自身的区块链的区块中。
值得说明的是,每一应用程序的区块链可以存储在安装该应用程序的电子设备中,也可以存储在云端服务器中,在具体实施时,可以根据实际需求设定。
S203、确定所述事件是否满足预设条件。
S204、在所述事件满足所述预设条件时,将所述更改后的配置信息广播到所述区块链网络中的其他节点。
基于区块链技术,其他节点在接收到更改后的配置信息后,对该配置信息进行验证,验证成功后,将更改后的配置信息写入自身的区块链的区块中。
其他节点的区块链存储的所述应用程序的配置信息可以用于,在所述应用程序自身的区块链存储的配置信息与其他节点的区块链存储的配置信息不一致时,恢复所述应用程序的配置。
也就是说,基于预设条件的判断,应用程序可以在每次更改配置信息后,将可以信任的配置信息广播到区块链网络的其他节点,以便写入区块链中。这样,在区块链网络中的其他节点的区块链存储的所述应用程序的配置信息与所述应用程序自身的区块链存储的配置信息不一致时,可以从其他节点获取所述应用程序的配置信息恢复所述应用程序的配置,防止了对所述应用程序配置的恶意篡改,提高了安全性,并且由于恢复应用程序配置无需用户手动进行,解决了现有技术中恢复应用程序配置的操作繁琐的技术问题。
为了使本领域技术人员更加理解本发明实施例提供的技术方案,下面对上述方法步骤进行详细说明。
首先,对于电子设备下载安装的应用程序来说,应用程序作为区块链网络中的一个节点,其可以是在初始安装时,由用户设备添加到区块链网络中的。在一种可能的实现方式中,电子设备在将应用程序添加到区块链网络之前,可以验证应用程序的来源是否可信,从而实现将所有可信的应用程序都添加为区块链网络中的节点。可替换地,电子设备也可以将预先设置的固定列表中的应用程序加为节点,还可以随机将新安装的应用程序添加为节点。本发明对此不做限定。
进一步地,在本发明实施例的一种可能的实现方式中,步骤S203具体包括:确定所述事件是否为用户操作触发的事件。这样,上述步骤S204即为:在所述事件是用户操作触发的事件时,将所述更改后的配置信息广播到所述区块链网络中的其他节点。也就是说,用户主动对应用程序配置进行的修改,表明该修改是可信任的,因此,可以将修改后的配置信息发布到区块链网络,以便基于可信任的配置信息对应用程序配置进行恢复。
对于非用户操作触发的事件,例如电子设备后台启动的修改应用程序配置的事件,本发明实施例可以先将修改后的配置信息写入所述应用程序自身的区块链中,而不对修改后的配置信息进行广播。
进一步地,在确定所述事件非用户操作触发的事件时,还可以提示用户是否允许修改,在检测到用户确认修改的操作时,将所述更改后的配置信息发布到所述区块链网络中的其他节点。也就是说,用户确认后的后台修改,可以作为可信任的应用程序配置修改,因此,可以将修改后的配置信息广播到其他节点。
另外,在检测到用户拒绝修改的操作的情况下,本发明实施例可以从所述区块链网络的其他节点处查询所述应用程序的配置信息,并利用所述配置信息恢复所述应用程序的配置,并将恢复后的配置信息写入所述应用程序自身的区块链的区块中。
也就是说,对于电子设备后台进行的应用程序配置修改,在提示用户后,若用户拒绝该修改,则可以从其他节点的区块链中获取所述应用程序修改之前的配置信息,并根据该配置信息恢复该应用程序之前的配置。从而防止了对应用程序配置的恶意篡改,提高了安全性。
可选地,本发明实施例提供的记录配置信息的方法还包括:从所述区块链网络的其他节点中查询所述应用程序的配置信息;确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致;将所述其他节点中存储的所述应用程序的配置信息写入所述应用程序自身区块链的区块中。
也就是说,如果在系统或某APP启动或任何读取配置信息的时刻发现各节点区块链内容出现不一致,则可以采用设定阈值的方法自动判定当前记录正确性,以恢复数据的一致性,例如,某一应用程序的区块链存储的配置信息与其他节点的区块链存储的配置信息均不相同,则可以将其他应用程序存储的配置信息写入该应用程序的区块链的区块中,保证区块链网络中每个节点的区块链存储的数据一致。
另外,在确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致时,还可以启动预警机制,或将所述应用程序自身的区块链记录的配置信息上传到诊断服务器进行诊断。
例如,在发现某一应用程序的区块链存储的配置信息与其他节点的区块链存储的配置信息均不相同时,可以通知用户,提示用户是否将相关信息上传至服务器诊断,以便服务器给出具体的诊断结果。
值得说明的是,本发明实施例中,电子设备还可以对所有应用程序的配置进行备份,例如,备份存储任何一个应用程序的区块链,其中,该区块链存储有电子设备中所有应用程序每一次的配置信息。具体地,当需要系统备份时,可以首先检查各节点的区块链的数据一致性,如果存在不一致,则采用阈值判定的方法恢复数据的一致性。在各节点的数据一致的情况下,备份存储任一节点的区块链。为了更高安全性,防止备份后的数据被篡改,也可以备份多个节点的区块链,本发明对此不做限定。
另外,在重新安装应用程序的情况下,电子设备还可以查询所述区块链网络中记录的所述应用程序的至少一种配置信息以及所述区块链网络记录所述至少一种配置信息的时间戳信息,并根据所述时间戳信息选择配置信息对所述应用程序进行配置恢复。
值得说明的是,区块链的数据是无法更改的,每一次存储的配置信息都是写入新的区块。这样,区块链即存储了应用程序每一次的配置信息。在对应用程序进行恢复配置时,可以从区块链中查询到所述应用程序每一次的配置信息,从而根据时间戳信息,用户可以选择将应用程序恢复到哪一个时间段的配置,减少了用户操作,提升了用户体验。
图3为本发明实施例提供的一种电子设备运行的应用程序的示意图。如图所示,电子设备上运行有n个应用程序,如图中示出的应用程序1和应用程序2至应用程序n-1和应用程序n。并且,每一个应用程序作为区块链网络中的一个节点,每一个应用程序对应一个区块链,如图中示出的区块链1和和应区块链2至区块链n-1和区块链n。值得说明的是,图3所示的应用程序可以是运行在同一电子设备上,也可以是运行在多个不同的电子设备上,此时,所述多个电子设备之间可以进行通信。
下面基于图3,以一个详细的例子对本发明实施例提供的技术方案进行说明,如图4所示,包括:
S401、检测对应用程序1进行配置信息更改的事件。
S402、在该事件对应用程序1的配置信息进行更改后,将应用程序1修改后的配置信息写入区块链1的区块中。
S403、确定该事件是否为用户操作触发的事件。
具体地,电子设备中可以采用专门的线程监控对应用程序的配置更改,在监控到对应用程序1的更改事件时,通过对事件类型或者其他相关信息可以判断该事件是否为用户操作触发的事件。
进一步地,若该事件是用户操作触发的事件,则执行步骤S404。若该事件是电子设备后台启动的事件,则执行步骤S405及后续步骤。
S404、将应用程序1修改后的配置信息广播至其他应用程序,以便其他应用程序将所述修改后的配置信息写入自身的区块链的区块中。
也就是说,将应用程序1修改后的配置信息写入区块链2,以及区块链n-1和区块链n中。
S405、提示用户是否允许对应用程序1的配置进行的修改。
S406、在检测到用户允许修改的操作时,将应用程序1修改后的配置信息广播至其他应用程序,以便其他应用程序将所述修改后的配置信息写入自身的区块链的区块中。
S407、在检测到用户拒绝修改的操作时,从其他应用程序的区块链中查询应用程序1的配置信息。
S408、利用查询到的配置信息对应用程序1的配置进行恢复,并将恢复后的配置信息写入区块链1的区块中。
这样,对于用户拒绝的后台修改,本发明实施例可以自动将应用程序恢复到原有配置,提升了安全性能。
另外,为了保持区块链数据的一致性,本发明实施例还可以在应用程序启动或者系统启动,或者周期性的检查各应用程序的区块链中的数据是否一致。示例地,可以执行S409及后续步骤。
S409、从区块链网络的其他应用程序的区块链中查询应用程序1的配置信息。
S410、确定与区块链1记录的配置信息不一致的节点数目超过阈值。
示例地,若区块链网络中当前存在15个节点,即图3中的n=15,阈值为70%。在此种情况下,若3个应用程序节点(包括应用程序1)的区块链中记录的应用程序1的配置信息为B,12个应用程序节点的区块链记录的应用程序1的配置信息为A,则可确定区块链网络中与区块链1记录的配置信息不一致的节点数目超过阈值。
进一步地,在超过阈值时,执行步骤S411。
S411、将其他应用程序的区块链中存储的应用程序1的配置信息写入区块链1的区块中,以使区块链1与其他应用程序的区块链的数据保持一致。
并且,对于区块链1中存储的不一致的配置信息,电子设备还可以启动预警机制,例如,提示用户可能存在的风险,或者,将相关信息发送至诊断服务器,由诊断服务器诊断可能存在的风险,提升了应用程序的安全性。
这样,每个应用程序节点都维护相同的区块链信息,但每个节点对应的应用程序其自身的数据保护方式和破解方法各不相同,因此如果某黑客想真正改写掉配置信息,需要攻破对应配置信息超过阈值的节点数量,也就是要攻破多个保护方式不同的应用程序。示例地,若阈值为80,则针对100个节点应用程序,攻击者要篡改应用程序的配置成功,需要攻破80个节点,否则,通过上述方法步骤,刚刚被篡改的动作将被发现,篡改的信息将被恢复。提升了应用程序的安全性。
另外,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本发明实施例还提供一种记录应用程序配置信息的装置50,用于实施上述方法实施例提供的一种记录配置信息的方法,如图5A所示,该记录应用程序配置信息的装置50包括:
检测模块501,用于检测用于更改应用程序的配置信息的事件。
其中,所述应用程序为区块链网络中的节点,存储有由多个区块组成的区块链,每个区块用于存储信息。
区块写入模块502,用于将更改后的配置信息写入所述应用程序自身的区块链的区块中。
确定模块503,用于确定所述事件是否满足预设条件。
区块发布模块504,用于在所述事件满足所述预设条件时,将所述应用程序更改后的配置信息广播到所述区块链网络中的其他节点。
其中,应用程序为区块链网络中的节点是指一个应用程序是区块链网络中的一个账号,对应该账号的节点设备可以由应用程序的运营商提供。这样,每一个应用程序作为区块链网络中的账号,具备在区块链中写入数据的权限。
采用上述装置,应用程序可以在每次更改配置信息后,将可以信任的配置信息广播到区块链网络的其他节点,以便写入区块链的区块中。这样,在区块链网络中的其他节点的区块链存储的所述应用程序的配置信息与所述应用程序自身的区块链存储的配置信息不一致时,可以从其他节点获取所述应用程序的配置信息恢复所述应用程序的配置,防止了对所述应用程序配置的恶意篡改,提高了安全性,并且由于恢复应用程序配置无需用户手动进行,解决了现有技术中恢复应用程序配置的操作繁琐的技术问题。
可选地,所述确定模块503用于:
确定所述事件是否为用户操作触发的事件。
可选地,如图5B所示,所述装置50还包括提示模块505,用于在所述确定模块确定所述事件非用户操作触发的事件时,提示用户是否允许修改;所述区块发布模块504还用于,在所述检测模块检测到用户确认修改的操作时,将所述更改后的配置信息发布到所述区块链网络中的其他节点。
可选地,如图5B所示,所述装置50还包括:查询模块506,用于在所述检测模块检测到用户拒绝修改的操作时,从所述区块链网络的其他节点处查询所述应用程序的配置信息;应用配置模块507用于,利用所述配置信息恢复所述应用程序的配置;所述区块写入模块502还用于,将恢复后的配置信息写入所述应用程序自身的区块链的区块中。
也就是说,对于用户主动操作触发的配置更改,以及用户确认的后台更改,均可以将修改后的配置信息广播到区块链网络中,以便之后对应用程序进行恢复配置,对于用户拒绝的后台更改,该装置可以利用区块链网络中其他节点的区块链存储的配置信息对应用程序恢复配置,提高了安全性,减少了用户操作。
可选地,所述查询模块506还用于从所述区块链网络的其他节点中查询所述应用程序的配置信息;所述确定模块503还用于,确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致;所述区块写入模块502还用于,将所述其他节点中存储的所述应用程序的配置信息写入所述应用程序自身的区块链的区块中。
可选地,如图5B所示,所述装置50还包括:预警模块508,用于在所述确定模块确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致时,启动预警机制,或将所述应用程序自身的区块链记录的配置信息上传到诊断服务器进行诊断。
可选地,所述查询模块506还用于,查询所述区块链网络中记录的所述应用程序的至少一种配置信息以及所述区块链网络记录所述至少一种配置信息的时间戳信息;所示应用配置模块507还用于根据所述时间戳信息选择配置信息对所述应用程序进行配置恢复。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,对于上述功能模块的物理实现也可以有多种方式,例如,在一示例性实施例中,装置50可以被一个或多个ASIC(Application Specific Integrated Circuit,应用专用集成电路)、DSP(Digital Signal Processor,数字信号处理器)、DSPD(Digital SignalProcessing Device,数字信号处理终端设备)、PLD(Programmable Logic Device,可编程逻辑器件)、FPGA(Field Programmable Gate Array,现场可编程门阵列)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法实施例提供的方法。
本发明实施例还提供一种电子设备60,用于实施上述方法实施例提供的一种记录配置信息的方法,如图6所示,所述电子设备60包括:
处理器单元601、通信接口602、存储器603和通信总线604;所述处理器单元601、所述通信接口602和所述存储器603通过所述通信总线604完成相互间的通信。
存储器603用于存放程序代码,所述处理器单元601执行程序代码,所述程序代码在运行时用于实现上述方法实施例提供的一种记录应用程序配置信息的方法,所述应用程序是区块链网络中的节点,存储有由多个区块组成的区块链,每个区块用于存储信息,所述方法包括:
检测用于更改应用程序的配置信息的事件;
将更改后的配置信息写入所述应用程序自身的区块链的区块中;
确定所述事件是否满足预设条件;
在所述事件满足所述预设条件时,将所述更改后的配置信息广播到所述区块链网络中的其他节点。
可选地,所述确定所述事件是否满足预设条件包括:
确定所述事件是否为用户操作触发的事件。
可选地,所述方法还包括:
在确定所述事件非用户操作触发的事件时,提示用户是否允许修改;
在检测到用户确认修改的操作时,将所述更改后的配置信息发布到所述区块链网络中的其他节点。
可选地,所述方法还包括:
在检测到用户拒绝修改的操作时,从所述区块链网络的其他节点处查询所述应用程序的配置信息;
利用所述配置信息恢复所述应用程序的配置,并将恢复后的配置信息写入所述应用程序自身的区块链的区块中。
可选地,所述方法还包括:
从所述区块链网络的其他节点中查询所述应用程序的配置信息;
确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致;
将所述其他节点中存储的所述应用程序的配置信息写入所述应用程序自身的区块链的区块中。
可选地,所述方法还包括:
在确定所述区块链网络中超过一定阈值的节点的区块链记录的所述应用程序的配置信息与所述应用程序自身的区块链记录的配置信息不一致时,启动预警机制,或将所述应用程序自身的区块链记录的配置信息上传到诊断服务器进行诊断。
可选地,所述方法还包括:
查询所述区块链网络中记录的所述应用程序的至少一种配置信息以及所述区块链网络记录所述至少一种配置信息的时间戳信息;
根据所述时间戳信息选择配置信息对所述应用程序进行配置恢复。
值得说明的是,图6只是电子设备的示意图,在具体实施时,电子设备还可以包括其他部件。本发明对此不做限定。另外,处理器单元601用于控制该电子设备60的整体操作,以结合其他装置以完成上述图2、图4所示的方法的全部或部分步骤。存储器603用于存储各种类型的数据以支持在该电子设备60的操作,这些数据的例如可以包括用于在该电子设备60上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器603可以由任何类型的易失性或非易失性存储终端设备或者它们的组合实现,例如SRAM(Static Random Access Memory,静态随机存取存储器),EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除可编程只读存储器),EPROM(Erasable Programmable Read-Only Memory,可擦除可编程只读存储器),PROM(Programmable Read-Only Memory,可编程只读存储器),ROM(Read-OnlyMemory,只读存储器),磁存储器,快闪存储器,磁盘或光盘。
本发明实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备60的处理器单元601执行以完成上述记录配置信息的方法。示例地,该非临时性计算机可读存储介质可以是ROM、RAM(Random Access Memory,随机存取存储器)、CD-ROM、磁带、软盘和光数据存储终端设备等。
在本申请所提供的几个实施例中,应该理解到,所公开的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述功能模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。