java验证数据完整性_等保2.0系列安全计算环境之数据完整
性、保密性测评
网络前端和后端的区别1 前⾔
java下载过程等级测评中,相信很多测评师在内的⼈都不是很了解数据的完整性和数据的保密性,因此本⽂将结合商密测评⾓度浅淡数据的完整性和保密性的理解和测评。如有错误,欢迎指正。
2 定义
2.1完整性
通俗的来说就是数据不被篡改和⾮授权访问。⽬前完整性主要是通过哈希算法来实现。
国密算法中,能够提供数据完整性的算法主要是:SM3。
国际算法中,能够提供数据完整性的算法主要是:MD5、SHA256、SHA512。
2.2保密性
通俗的来说就是数据不能是明⽂,⽬前保密性主要是通过加密算法来实现。
国密算法中,能够提供数据保密性的算法主要是:SM1和SM2,少数使⽤祖冲之,⽆线局域⽹中使⽤SM4。
国际算法中,能够提供数据保密性的算法主要是:DES、3DES、RSA、AES、ECC等。
3 数据的完整性测评
a)应采⽤校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配
置数据、重要视频数据和重要个⼈信息等;
测评理解:重点有三个,⼀是校验技术或密码技术;⼆是传输过程中的完整性;三是包括不仅限于鉴别
数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个⼈信息等。
先⼀个个来看,⼀、校验技术其实很好理解,就是类似TCP协议的CRC校验码或者海明校验码等,这是协议层⾯的,如果按照这要求利街,那么这条指标基本全部符合,所以⽬前测评难点不是在这⾥,⽽是在密码技术如何实现完整性,这⾥是⼀个容易弄混的的知识点,可能⼤部分⼈有疑惑,密码技术不是i⽤来加密的吗,怎么能⽤来保证完整性呢?其实在商⽤密码中,密码算法分为加密算法和哈希算法两⼤类,其中哈希算法常见是MD5和SHA系列,哈希算法也属于密码算法,所以通过密码技术完全可以实现完整性校验。
⼆、传输过程中的完整性,传输过程中的完整性主要通过协议来实现,⽐如TLS、SSH协议,通过MAC(消息校验码)来实现整个数据报⽂的完整性和加密性,⽆论报⽂本⾝内容是否进⾏加密和哈希校验,这个应该⽐较好理解把,因此,测评中,如果采⽤TLS协议、SSH协议,默认其实应该是符合传输过程中的完整性要求的。html中base标签的作用
三、重要数据的理解,主要数据包括鉴别数据、审计数据、业务数据等。
b)应采⽤校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配
置数据、重要视频数据和重要个⼈信息等。
操作系统的存储过程完整性。操作系统鉴别数据主要就是⽤户名、⼝令、组ID等。其中WindowsNT中默认采⽤SAM⽂件保存鉴别信息,其中⼝令字段采⽤SHA哈希算法进⾏加密。⽽在Linux中,⼝令保存shadow⽂件中,⼝令也是采⽤SHA哈希算法进⾏加密,主要有三类:$1表⽰MD5 ; $6 表⽰SHA-512 ; $5 SHA-256。可能在这⾥⼤家有疑惑,为什么不采⽤加密算法对⼝令加密,⽽采⽤哈希算法进⾏加密?个⼈觉得原因主要有两个:⼀是加密算法分为对称加密算法和⾮对称加密算法,⽆论哪种,都需要安全的保存密钥,这就导致鸡⽣蛋和蛋⽣鸡的问题,⼆是加密算法时间长,哈希算法时间较短。因此,操作系统的数据传输过程的完整性要求中默认是符合的。
⾄于业务数据、审计数据存储过程中的完整性,主要是核查数据库表(业务数据、审计数据)是否存在哈希字段,在业务数据或审计数据中,数据在前端⼀般通过json或xml格式进⾏传输,那么数据的完整性应该是核查相关数据库表字段中是否包含完整性校验字段。⽬前测评项⽬中极为少见,⼀般均为不符合,印象中好像只有个⼀个系统实现存储过程中的完整性校验。但是如果通过TLS、SSH等协议,可以通过传输过程中的完整性在⼀定程度上弥补存储过程中的完整性。
verifysignatures是什么意思怎么读其实在开发过程中,技术⽅⾯进⾏哈希校验并不难,因为常见开发语⾔均内置哈希函数,⽐如php的hash()、java的hashcode()等,但是问题重点在主流开发语⾔⽬前少于内置SM3等国密哈希算法,随着商密应⽤的测评,⽇后要求⽀持国密的哈希算法估计会成为测评要求判定之⼀,当然商密局官⽹有现成的php、java、c++源代码库下载,可以⽤来在开发项⽬中直接调⽤。
4 数据的保密性测评
a)应采⽤密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个⼈信息等;
传输过程中的保密性测评中,这个⽐较简单,主要核查是否采⽤TLS、SSH等加密协议,其中常见的问题主要集中在以下两个地⽅:
1)Windows远程桌⾯RDP是否符合传输过程中的保密性?笔者查过相关资料 Windows的RDP安全主要有安全层和加密级别两个参数,其中安全层有RDP安全层、协商和TLS1.0共3个值,其中默认值是协商。
excelcountif两个条件怎么用安全层 值描述
协商强制使⽤客户端⽀持的最安全的⽅法。如果⽀持传输层安全(TLS)版本1.0 ,则它将⽤于验证RD会话主机服务器如果不⽀持TLS ,则使⽤本地远程桌⾯协议(RDP)加密来保证通信安全,但不验证RD会话主机服务器。
RDP安全层使⽤本地RDP加密来保证客户端和RD会话主机服务器之间的通信安全。如果选择此设置.则不验证RD会话主机服务器。SSL(TLS1.0)SSL⽅法要求使⽤TLS 1.0验证RD会话:主机服务器。如
果不⽀持TLS ,则连接将失败。
如下图所⽰:
加密级别也主要有4个值可选,分别是低、客户端兼容、⾼和符合FIPS标准,区别主要是加密算法。
加密级
别值
描述
低此级别使⽤ 56 位加密对从客户端向服务器发送的数据进⾏加密。不对从服务器向客户端发送的数据进⾏加密。
兼容这是默认设置,此级别以客户端⽀持的最⼤密钥强度对在客户端与服务器之间发送的数据进⾏加密。终端服务器在包含混合客户端或旧版客户端的环境中运⾏时使⽤此级别。
⾼此级别使⽤ 128 位加密对从客户端向服务器发送的数据以及从服务器向客户端发送的数据进⾏加密。终端服务器在只包含 128 位客户端(例如远程桌⾯连接客户端)的环境中运⾏时使⽤此级别。不⽀持此加密级别的客户端⽆法连接。
符合FIPS标准此级别使⽤联邦信息处理标准 (FIPS) 140-1 经过验证的加密⽅法,对从客户端向服务器发送的数据以及从服务器向客户端发送的数据进⾏加密和解密。不⽀持此加密级别的客户端⽆法连接。
由此可知,其实在WindowsServer2008及以上系统,默认RDP就⽀持加密差别就是加密长度和加密算法不同,⾄于采⽤何种算法,⽹上也没有统⼀的答案,抓包也没有发现,猜测可能是RC-4,如果是Windows10客户端连接WindowsServer2008,默认配置下使⽤的是TLSV1.0协议进⾏加密,如下图:
b)应采⽤密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个⼈信息等。
listbox控件输入内容存储过程中的保密性这个就⽐较简单了,主要是核查相关账户的⼝令、业务数据、审计数据是否加密存储,⽆论使⽤是何种加密算法,只要⾮明⽂,这条就符合,实践中,操作系统鉴别数据全部符合,
默认都是使⽤哈希算法,业务系统的鉴别数据,这个⼀般核查下数据库表,部分系统可能仍然是明⽂存储,⾄于业务数据、审计数据之类基本实践中未见过使⽤加密存储,⼀来没有必要,⼆来会影响性能,所以⼀般不符合。但是如果使⽤数据库加密功能,默认该项为符合,数据库加密 主要分库内加密和库外加密,库内加密主要是调⽤的数据库本⾝的加密功能,⽐如MSSQLSERVER的TDE功能、Oracle的DBMS_CRYPTO,有兴趣的可以⾃⼰百度,库外加密主要通过第三⽅⼚家的数据库加密功能,这⾥就不举例了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论