国密算法和国际算法
a)国密算法和国际算法用途
国密算法中提供数据完整性的算法主要是SM3;国际算法提供数据完整性的算法主要是MD5、SHA256、SHA512;国密算法提供数据保密性的算法主要是SM1、SM2、祖冲之、SM4;国际算法提供数据保密性的算法主要是DES、3DES、RSA、AES、ECC等。
b)国密算法介绍
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特 算法安全保密强度和AES相当。SM2算法就是ECC椭圆曲线密码机制 SM2算法在很多方面都优于RSA算法。SM3密码杂凑(哈希、散列)算法是在SHA-256基础上改进实现的一种算法;SM4对称算法属于分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特,DES算法和国产的SM4算法都可以对静态储存和传输信道中的数据进行加密。SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。
数据完整性
a) 应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
1、校验技术可理解为类似TCP协议的CRC校验码和海明校验码,但是多数没通过校验技术去判断此条款,采用什么样的校验技术才算符合,如何实现和检查目前我也不清楚,有懂的朋友留言学习一下,在本文一开始介绍中可知密码算法中哈希算法也属于密码算法,所以通过MD5和SHA系列密码技术也可以实现完整性校验。
2、此条款更多的判断方法主要是通过协议来实现传输过程中的完整性,如TLS、SSH、HTTPS协议,通过MAC(消息校验码)实现数据报文的完整性。
b) 应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
1、操作系统鉴别数据主要就是用户名、口令、组ID等。其中WindowsNT中默认采用SAM文件保存鉴别信息,其中口令字段采用SHA哈希算法进行加密。而在Linux中,口令保存shadow文件中,口令也是采用SHA哈希算法进行加密,主要有三类:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256。
2、业务数据、审计数据存储过程中的完整性通过查看数据库表(业务数据、审计数据)是否存在哈希字段,据了解在业务数据或审计数据中,数据在前端一般采用json或xml格式进行传输,检查过程中发现数据库表不包含对业务数据、审计数据完整性校验字段,一般判断为不符合。
数据保密性
a) 应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;
数据传输过程中的保密性主要通过检查系统是否采用TLS、SSH等加密协议,对于Windows操作系统,我们需要知道Windows操作系统远程桌面RDP是否符合传输过程中的保密性,Windows的RDP安全主要有安全层和加密级别两个参数,其中安全层有RDP安全层、协商和TLS1.0共3个值,其中默认值是协商。网上了解到在WindowsServer2008版本以上的操作系统,默认RDP支持加密。
b) 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
1、Windows和Linux(含一些设备的操作系统)的鉴别信息,默认都是弱Hash存储,产生了“加密”的效果但是比较弱,可以通过清空或替换来实现篡改,没有实现鉴别信息存储完整性保护。建议是通过对操作系统鉴别信息保存文件的完整性监测来完成防篡改。
2、应用系统存在数据库中的鉴别信息,如果用MD5、SHA1属于弱加密,建议通过加salt来增强保护力度。如果已经使用了加salt的MD5、SHA1,且salt保密不容易获取,则保密性和完整性可以满足要求。
应用系统或操作系统通常采用哈希算法生成摘要值存储鉴别信息,采用MD5、SHA1哈希算法存在风险,因为如果在明文不够复杂的情况下,采用这两种算法将无法抵抗彩虹表攻击。对于数据保密存储低强度算法:DES、RSA1024、MD5、SHA1,高强度算法:3DES、AES、RSA2048、SHA256、SM系列。
3、数据库加密主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密函数,库外加密主要通过第三方厂家的数据库加密功能。