国际算法:
MD5:消息摘要算法,理论上存在无数多个原文对应一个摘要,安全性较低。
SHA-1:安全哈希算法,输出长度为160比特,已被认为是不安全的。
DES:块加密算法,分组为64位,密钥长64位,已被认为是较老的算法。
3DES:DES的升级版,通过增加密钥长度来提高安全性。
RSA:非对称加密算法,基于大质数分解问题,具有高安全强度。
国密算法
SM1-2:分组长度为128位,密钥长度也为128位,与AES相当的安全保密强度。
SM2-3:椭圆曲线公钥加密算法,基于ECC,具有高安全强度和较快的签名速度。
SM3:密码杂凑算法,适用于数字签名和验证消息认证码的生成与验证。
SM4:分组对称密码算法,用于实现数据的加密/解密运算,保证数据和信息的机密性。
SM7-9:适用于非接触式IC卡,如门禁卡、工作证等,适合身份识别和支付应用。
SM9:标识密码算法,适用于端对端离线安全通讯和云端数据加密。
对称加密的算法有哪些:
DES(Data Encryption Standard)
是一种最早的对称加密算法,使用56位密钥对数据进行加密和解密,加密速度较快,但安全性较低,已经不再被广泛使用。
3DES(Triple DES)
是一种基于DES算法的对称加密算法,使用168位密钥对数据进行加密和解密,安全性较高,但加密速度较慢。
AES(Advanced Encryption Standard)
是一种目前广泛使用的对称加密算法,使用128位、192位或256位密钥对数据进行加密和解密,加密速度快,安全性较高。
RC4(Rivest Cipher 4)
是一种流密码算法,使用密钥对数据进行加密和解密,加密速度快,但安全性较低,已经不再被广泛使用。
Blowfish
是一种对称加密算法,使用变长密钥对数据进行加密和解密,加密速度快,安全性较高,在某些领域仍然得到广泛应用。
对称加密的算法有哪些:
非对称加密是一种常见的加密方法,它使用了一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密数据。以下是一些常见的非对称加密算法:
RSA(Rivest-Shamir-Adleman):RSA是最常见的非对称加密算法之一,广泛用于数字签名和数据加密。它基于大素数分解的困难性问题。
DSA(Digital Signature Algorithm):DSA是一种用于数字签名的非对称加密算法,常用于确保数据的完整性和身份验证。
ECC(Elliptic Curve Cryptography):ECC是一种基于椭圆曲线数学问题的非对称加密算法。它提供与其他算法相比相同或更高的安全性,但使用更短的密钥长度。
ElGamal:ElGamal是一种基于离散对数问题的非对称加密算法。它常用于密钥交换和加密通信。
这些是非对称加密的一些常见算法,每种算法都有其特定的优势和用途。选择适合您需求的算法时,需要考虑安全性、性能和实际应用场景。
采用不同的密码技术实现:
等保测评中的密码算法要求:
应使用符合国家密码管理主管部门要求的加密算法,如SM2、SM3、SM4等国产密码算法,或国际认可的加密算法如RSA、DSA、ECC、SHA-512以上等。
在数据传输过程中,应使用加密协议如HTTPS、SSL/TLS等,确保数据在传输过程中的机密性和完整性。
在数据存储过程中,应采用加密技术对数据进行保护,防止未授权访问和数据泄露。
常见设备默认的密码加密算法:
操作系统
Linux 操作系统:
默认散列算法:shadow 文件中的默认散列算法为 sha512,而用户密码通常使用 md5(不安全算法,建议使用更安全的算法如 sha512)。
Windows 操作系统:
默认认证机制:使用 NTLM 算法进行认证,系统会将明文密码使用 NTLM 机制进行哈希后保存在 %systemroot%\system32\config\sam 文件中。
数据库
MySQL:默认散列算法:使用 SHA-256 对密码进行哈希处理。
SQL Server:早期版本(2000-2008 R2):默认散列算法为 SHA-1。新版本(2012 及更高版本):默认散列算法为 SHA-512。
Oracle:
10g 版本:默认散列算法为 DES。11g 版本:默认散列算法为 SHA-1(加盐)。12c 及以上版本:默认散列算法为 SHA-512。
PostgreSQL:默认散列算法:使用 SHA-256 对密码进行哈希处理。
其他设备
数据库的透明加密 (TDE):
Oracle:AES 128/AES 192/AES 256 用于列加密,3DES 用于表空间。
SQL Server:3DES。
PostgreSQL:AES。
常见数据库支持的加密算法:AES 128/AES 192/AES 256、3DES。
不安全的算法为:MD5、SHA1、DES、RC2、RSA1024
数据完整性
Space Day of China
a) 应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
1、CIA简介中提到,数据的完整性通过散列来实现,散列又称为哈希,或者消息摘要,国密算法中,能够提供数据完整性的算法主要是:SM3
2、 国际算法中,能够提供数据完整性的算法主要是:MD5(128位,Hash值不唯一,过时的算法不推荐使用)、SHA-1(160位)、SHA256、SHA512。
传输过程中的完整性,传输过程中的完整性主要通过协议来实现,比如TLS、SSH协议,通过MAC(消息校验码)来实现整个数据报文的完整性和加密性。测评中如果采用TLS协议、SSH协议,默认符合传输过程中的完整性要求。
3、校验技术可理解为类似TCP协议的CRC校验码和海明校验码,但是多数没通过校验技术去判断此条款,采用什么样的校验技术才算符合,如何实现和检查目前我也不清楚,有懂的朋友留言学习一下,在本文一开始介绍中可知密码算法中哈希算法也属于密码算法,所以通过MD5和SHA系列密码技术也可以实现完整性校验。
4、此条款更多的判断方法主要是通过协议来实现传输过程中的完整性,如TLS、SSH、HTTPS协议,通过MAC(消息校验码)实现数据报文的完整性。
b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
1、操作系统鉴别数据主要有用户名、口令、组ID等。其中Windows默认采用SAM文件保存鉴别信息,口令字段采用SHA哈希算法进行加密。Linux中,口令保存在shadow文件中,口令也采用SHA哈希算法进行加密,因此,操作系统的数据传输过程的完整性要求中默认是符合的。关于业务数据、审计数据存储过程中的完整性,主要是核查数据库表(业务数据、审计数据)是否存在哈希字段,在业务数据或审计数据中,数据在前端一般通过json或xml格式进行传输,那么数据的完整性应该是核查相关数据库表字段中是否包含完整性校验字段。如果此项不满足,而且使用TLS、SSH等协议传输数据,传输过程中的完整性在一定程度上可以弥补存储过程中的完整性。
2、操作系统鉴别数据主要就是用户名、口令、组ID等。其中WindowsNT中默认采用SAM文件保存鉴别信息,其中口令字段采用SHA哈希算法进行加密。而在Linux中,口令保存shadow文件中,口令也是采用SHA哈希算法进行加密,主要有三类:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256。
3、业务数据、审计数据存储过程中的完整性通过查看数据库表(业务数据、审计数据)是否存在哈希字段,据了解在业务数据或审计数据中,数据在前端一般采用json或xml格式进行传输,检查过程中发现数据库表不包含对业务数据、审计数据完整性校验字段,一般判断为不符合。
数据保密性
Space Day of China
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;
1、测评中,主要核查是否采用TLS、SSH等加密协议进行数据传输,window如果开启了远程桌面服务,需采用加密的RDP协议,参看此R此文中C部分进行校验,Windows的RDP安全主要有安全层和加密级别两个参数,其中安全层有RDP安全层、协商和TLS1.0共3个值,默认值为协商。
2、数据传输过程中的保密性主要通过检查系统是否采用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、数据库加密主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密函数,库外加密主要通过第三方厂家的数据库加密功能。
4、存储过程中的保密性主要是核查相关账户的口令、业务数据、审计数据是否加密存储,无论使用何种加密算法,只要非明文,可判定为符合。操作系统鉴别数据全部符合,默认都是使用哈希算法,业务系统的鉴别数据,一般核查下数据库表,部分系统可能仍然是明文存储,至于业务数据、审计数据之类基本实践中未见过使用加密存储,一来没有必要 二来会影响性能,所以一般不符合。但是如果使用数据库加密功能,默认该项为符合,数据库加密 主要分库内加密和库外加密,库内加密主要是调用的数据库本身的加密功能,比如MSSQLSERVER的TDE功能、Oracle的DBMS_CRYPTO,库外加密主要通过第三方厂家的数据库加密功能。