1.阐明
本篇文章重要先容应用体系测评时数据完备性相干的底子知识和内容。
2.测评项
a)应采取校验技能或暗码技能包管紧张数据在传输过程中的完备性,包罗但不限千辨别数据、紧张业务数据、紧张审计数据、紧张设置数据、紧张视频数据和紧张个人信息等;
b)应采取校验技能或暗码技能包管紧张数据在存储过程中的完备性,包罗但不限于辨别数据、紧张业务数据、紧张审计数据、紧张设置数据、紧张视频数据和紧张个人信息等。
3.完备性
是指信息在传输、互换、存储和处理惩罚过程中,保持信息不被粉碎或修改、不丢失和信息未经授权不能改变的特性,也是最根本的安全特性。
那么假如是传输过程中的完备性,也即当数据在传输过程中,吸取方应该至少具备判定吸取到的数据是否完备,如是否被窜改过,或是否由于网络等缘故起因没有吸取完备等。
4.校验技能
校验技能我不怎么相识,实际测评中也没怎么碰到过,比如CRC循环校验等,这里就不多说了。
5.暗码技能
常用来实现数据的完备性判定的暗码技能为“单向散列函数”,一样平常也叫Hash(哈希)算法、散列算法、杂凑算法,下文统称哈希算法。实现数据完备性的判定,每每必要在原始数据里再附加一些额外数据,然后吸取方吸取到全部数据后,通过一些算法,实现完备性的判定。
那么为什么常用哈希算法来实现完备性判定呢?这里要先说说哈希算法。
哈希算法有一个输入与输出,输入恣意长度的数据,会输出一个固定长度的值(哈希值)。且输入的数据差别,输出的哈希值也差别,哪怕只有1bit的差别,产生的哈希值也会完全不一样,且没有规律。
别的,由于输入的值的范围是无穷的,而输出的值的范围确实固定的(长度固定了),以是一个MD5值实际上肯定对应着无数的原文。但一个合格的哈希算法中,会让这种环境出现的概率极低。
回到完备性来,利用哈希算法,比如MD5算法,可以轻松的实现一个根本的完备性校验方法。当客户端向服务器端发送数据时,在数据原文背面附加上数据的MD5值,一并发送已往。
当服务器端收到数据后,利用MD5盘算出数据原文的MD5值,再与附加的MD5值举行对比,即能得数据是否被窜改。如别人修改了原文部分,则无法通过校验。大概修改了MD5值部分,那也无法通过校验。
不外这种简单的方法是还是有很大的弊端的,由于你的输入值和输出值都是明文,别人颠末实行,可以很快的推断出你所利用的是哪一种哈希算法。
得知后,别人修改原文部分之后,再利用你约定利用的哈希算法,算出哈希值部分,如许就可以或许在窜改数据的环境下通过校验了。以是可以再加上一些步伐,对于原文A,盘算出其哈希值B,然后利用某加密算法对哈希值B举行加密,得到C,末了传输“A+C”。
吸取方收到数据后,对C举行解密,得到B,然后盘算出A的哈希值D,对比B和D,即可得知结果。如许环境下,别人就没办法得知你利用的哈希算法了,由于你对哈希值B举行了加密。一旦修改了A大概B部分,都无法通过校验。
固然,着实这还是有弊端,由于没有利用随机值大概时间戳,每次传输原文A,终极传输的值都是“A+C”,对方重复几个流程,可得到“D+Z”、“V+M”等等数据。
然后,当传输A时,用“D+Z”整个更换“A+C”,也能通过校验,这叫做重放攻击。
6.测评项a
a)应采取校验技能或暗码技能包管紧张数据在传输过程中的完备性,包罗但不限千辨别数据、紧张业务数据、紧张审计数据、紧张设置数据、紧张视频数据和紧张个人信息等;
实际测评过程中,少少有本身编程实现这整个过程的,由于一样平常环境下没有须要本身造一个轮子,程度不敷造的轮子还轻易有很多的弊端。对于B/S范例的应用体系来说,一样平常都是利用HTTPS协议,HTTPS协议同时实现了保密性和完备性。
而对于C/S范例的应用体系来说,假如是直接毗连数据库的那种,要看数据库是否设置了SSL,在毗连的时间是否利用了SSL。
大概是否利用了其他的暗码技能来实现完备性,比如在“等保测评2.0:Oracle身份辨别(下)”中,Oracle在举行参数上的设置后,即可包管数据传输过程中的完备性。而假如是利用中心件(也即客户端不直接和数据库打交道)的C/S范例的应用体系,要看是否利用了SSL。
实际测评过程中还是很简单的,乃至你都不必要相识相干的暗码知识。不外最好还是要懂一些,万一真有本身编程实现这个过程的,你也不至于完全不明白。
别的,假如连暗码算法都是本身实现的,且不属于国家暗码部分答应的暗码算法,一样平常顶多给部分符合。由于这种本身造的轮子(暗码算法),根本没有得到验证,其安全性很值得猜疑。
7.MD5的安全性
MD5是各人最常用的暗码算法,也有人说MD5不敷安全,应该利用更安全的SHA256等哈希算法。
这着实要看MD5不安全在哪方面:
2005年山东大学的王小云传授发布算法可以轻易构造MD5碰撞实例,以后2007年,有国外学者在王小云传授算法的底子上,提出了更进一步的MD5前缀碰撞构造算法“chosenprefixcollision”,以后尚有专家提供了MD5碰撞构造的开源的库。
什么是碰撞实例呢?举个例子,比如原文A,其MD5值为B。当我们拿到B时,可以很快的构造出一个C(C大概是A也大概不是),这个C的散列值也是B。
在这种环境下,MD5在包管数据完备性或实现数字署名方面,确实有很大的题目。
8.测评项b
b)应采取校验技能或暗码技能包管紧张数据在存储过程中的完备性,包罗但不限于辨别数据、紧张业务数据、紧张审计数据、紧张设置数据、紧张视频数据和紧张个人信息等。
这里要留意和传输过程分开区别,传输过程是一个短暂的、动态的、举行过程,而这里的存储则着实应该明白为长期的生存的过程。
固然,存储是否有短暂的、动态的、举行过程?固然是有的,比如你用记事本大概任何程序生存数据时,当你下指令生存数据后,程序就会将内存中的数据生存至硬盘当中,这个就是短暂的存储过程。但显着的,测评项指的应该是长期的生存过程。
应用体系中,一样平常都会将紧张的数据存储到数据库当中。那么在数据库中,怎样利用暗码技能包管数据库中的数据一旦被非法窜改,你就能发现呢?在实际测评中,我没碰到过实现的相干例子,只是本身假想了一个简单的模子。比如存储用户的个人信息的表中,有姓名、性别、号码等字段,然后除了这个字段,再添加一个校验字段,按照肯定的算法,比如:SHA256(SHA256(姓名+性别+号码)+SHA256(姓名))。
然后算出哈希值。如许,每次存储、更新数据的时间,都按照这个算法盘算哈希值,存储到校验字段中。每次读取数据的时间,也按照这个算法,再次盘算出哈希值,看是否便是校验字段的值。
如许,一旦出现了非法窜改,就可以或许得知,不外这个不能抵抗重放攻击,还必要再利用一些其他的步伐,这里就不多说了。
固然这一项根本没人实现,但是至少被测评方问你怎么实现的时间,你可以大概答复下,不至于说我也不知道。
别的,假如应用体系存储了一些紧张文件(比如个人照片)等,也需用利用校验技能或暗码技能包管其完备性。
这个理论上也可以实现,比如个人照片文件,一样平常来说,在数据库应该也会有一个表存储其相干属性,比如路径等,再增长一个校验字段,按照肯定的算法,比如:SHA256(SHA256(个人照片)+SHA256(路径))。然后算出哈希值,存储到校验字段中。每次利用的时间,举行校验。大概为了低落资源占用,可以写一个定时脚本、战略等,定时举行校验。
编辑:王志中
考核:张晶晶
泉源:网安头条(微信公众号)
太原市数字康健保障中心
往期保举:
●《新型冠状病毒感染诊疗方案(试行第十版)》印发
●康健科普|新型冠状病毒感染“乙类乙管”个人防护指南
●温馨提示|年前返乡必知的20个防护要点
点击“转发”分享出色内容
我要评论