◆王靖翔
(陕西省网络与信息安全测评中心 陕西 710065)
数据安全是网络安全的重要条件。2010 年,伊朗核设施遭遇“震网”病毒攻击,攻击者利用邮件入侵伊朗核设施工作人员的电脑,将震网病毒写入工作人员的U 盘,通过U 盘进入到伊朗核设施系统,对伊朗核设施系统参数进行修改。分析案例我们可以得出两个结论:
(1)网络攻击的全面性。
网络攻击遵循木桶效应,不需要攻破系统的全部安全防护,只需针对系统弱点,攻击成功即可。随着网络安全的发展,当前的信息系统部署了大量的安全设备,但针对内网发起的攻击仍是网络安全防护的薄弱之处。针对内网攻击,安全厂商开发了入侵防御等安全设备,但由于数据流量的复杂性,在实际的应用场景中,该类设备很难完全发挥作用。所以内网攻击难以防御的特点经常会被攻击者利用。美国对伊朗核设施的网络攻击正是利用内网攻击难以防御的特点。
(2)数据安全的重要性。
美国针对伊朗核设施发起的网络攻击,攻击者向核设施工程师的U 盘上传病毒,利用该工程师可以进入核设施系统的权限,当该工程师将U 盘插入核设施系统时,病毒侵入系统,对系统的参数进行修改,达到攻击目的。分析该案例,攻击者通过上传病毒,修改信息系统参数实现攻击。此处,攻击者修改了U 盘的数据和核设施系统的数据,假设修改数据时被发现,则该攻击就可以被察觉。由此可见数据完整性的重要性。
针对上述网络攻击的分析,可以看出数据安全是网络安全的必要条件,未能保证信息系统数据的完整性是伊朗核设施遭受网络攻击的根本原因。今天针对信息系统数据完整性的保护,我们主要通过哈希算法实现,该算法基于碰撞问题,实现对数据加密的单向性和唯一性。具体应用过程如下:
对需要保存的数据进行哈希运算,得到一串固定数值为a 的散列值,将散列值a 保存到系统。当下次查看数据,需要检测数据的完整性时,对该数据再次进行哈希,得到数值为b 的散列值,将a 与b对比,如果相同,则数据未被篡改,可以保证其完整性。
这种保证数据完整性的方法,经常应用到我们日常使用的信息系统中,用来保证存储数据的完整性。但该方法存在一个问题,如果我们对存储的数据进行修改后,重新计算其散列值,并对系统中保存的散列值进行替换,则该攻击就无法被察觉。
基于此弱点,本文将引入区块链,利用区块链不可篡改的特点,结合哈希函数,实现对数据存储完整性的保障。
当输入任意长度的数值时,都可以输出一个长度固定的值。具体特征如下:
(1)输入的值x为任意长度的字符串。
(2)对于不同的输入数值,输出的结果H(x)长度固定。
(3)防碰撞性:当x≠y时,没有H(x)=H(y) 。
(4)满足单向性:仅可以有输入值x得到唯一的输出值H(x),而知道输出值H(x)的情况下不能够推出输入值x。目前主流的 hash算法有:md4、md5、sha 系列。
区块链,是一个新提出的解决去中心化问题的方案,该方案有大家共同维护同一个数据库。区块链为共享数据库,其主要工作原理,是利用共享数据库,且对该数据库的修改删除作出严格限定。利用这样的机制实现去中心化,且由于其可追溯性和身份认证实现其安全可靠的性质。具体实施过程如下:根据协议和内容信息,将数据信息进行封装,形成一个区块,对于封装好的信息不可随意修改。然后进行下一步操作,第一个区块为默认合法区块,无需进行验证,对于后面的区块需要进行身份验证,如果验证成功,则该区块可以加入区块链。按此步骤形成区块链,区块链上的内容每个群组成成员可以备份。区块链上的内容可以在合法用户之间进行信息交换。由上述描述可知,区块之间的身份认证由区块链末端的区块进行认证,所以无需中心节点。这样做的好处是:一,可以提高身份认证的效率。二,由各个节点进行身份认证,去除中心节点可以避免中心节点被攻破带来的巨大危险。
当下数据存储的完整性保护,主要依靠哈希函数的单向性,即:对需要保证完整性的数据进行哈希运算,对数据进行哈希后会生成唯一值a;需要验证该数据的完整性时,对该数据再次进行哈希运算,将运算结果b 与之前保存的哈希值a 进行对比,如相同,则认为数据未被修改或者删除。但当下的数据完整性保护方式存在显著缺点:假设攻击者对被攻击系统的数据进行篡改,并对篡改数据进行哈希运算,将新得出的哈希值替换被篡改数据的哈希值,则该攻击无法被发现。
根据当下数据完整性保护方式的弱点,本文结合区块链技术不可篡改的特点对当下数据完整性保护技术进行改进。
根据数据完整性保护的安全等级,并结合实际应用过程中对数据存储效率的要求,本文只结合区块链技术中保障数据不易被篡改的技术特点,对当下数据完整性保护技术进行改进。
技术概要:建立一个区块链,每次存储数据时将需要存储的数据保存到新的区块中,并计算上一区块的哈希值,将哈希值保存到当前区块的区块头。则区块链上的每个区块均含有当前区块之外所有区块的特征,如果对区块中存储的数据进行修改,则需要对当前区块之外的所有区块数据进行修改。
(1)建立首区块,将要保存的数据存入区块。
(2)建立新的区块,将数据存储到区块中,计算当前区块前一个区块的哈希值,存储到区块头。
(3)对区块链上的最后一个区块进行哈希值,存入首区块的区块头。
数据完整性保护在网络安全中具有重要意义。本文针对信息系统中,当攻击者同时篡改数据和哈希值避免攻击被发现的情况,引入区块链技术——区块链上的每个区块均含有其他所有区块的特征,结合区块链不易被篡改的特点,保证存储在区块中数据的完整性。