全国咨询热线: 020-32290702

汇聚行业动态 分享安全信息

专业的网络安全检测机构、专业的网络安全综合服务机构

安全知识

SAFETY KNOWLEDGE

您的当前位置:首页 > 新闻资讯 > 安全知识
【专题课堂】密码技术(数据完整性)
发布时间:2023-05-30

序言

密码技术的目的很明确,就是为了解决信息安全问题。
用客户端与服务器端的数据通讯过程举例(考虑客户端与服务器端通讯的双向性)。
信息安全可分为四类特性:
1、数据保密性:为了防止通讯过程中信息被窃听,对应的密码技术有对称加密和非对称加密。(用户敏感数据不应明文传输)
2、数据完整性:为了防止通讯过程中信息被篡改,对应的密码技术有单向散列函数、消息认证码、数字签名。
3、认证:为了防止攻击者伪装成真正的发送者,对应的密码技术有消息认证码和数字签名。
4、数据抗抵赖:为了防止发送者事后否认自己没有做过,对应的密码技术为数字签名。

保证数据完整性

消息摘要
消息摘要函数是一种用于判断数据完整性的算法,也称为散列函数或哈希函数,函数的返回值是散列值,散列值又称为消息摘要或者指纹。
这种算法是不可逆的,即无法通过消息摘要反向推导出消息,因此又称为单向散列函数。
常见算法:
MD5 SHA-1 SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)
国密SM3(安全性及效率与SHA-256相当)
 
操作系统的存储过程完整性。操作系统鉴别数据主要就是用户名、口令、组ID等。其中Windows中默认采用SAM文件保存鉴别信息,其中口令字段采用SHA哈希算法进行加密。而在Linux中,口令保存shadow文件中,口令也是采用SHA哈希算法进行加密,主要有三类:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256。

值得注意的是,现阶段有些系统会使用MD5或者base64当做应用层的加密手段。姑且不论MD5和base64根本不可称之为加密算法,实际就目前而言,MD5和SHA1已被破解,base64只是作为一种转码算法。目前相对安全的哈希算法需达到SHA256及以上级别
例:

当我们使用某一软件时,下载完成后需要确认是否是官方提供的完整版,是否被人篡改过。通常软件提供方会提供软件的散列值,用户下载软件之后,在本地使用相同的散列算法计算散列值,并与官方提供的散列值向对比。如果相同,说明软件完整,未被修改过。
下图是使用Windows命令行查看本地某Apk文件签名信息的运行结果,如果App具备自校验签名机制,当我们对该apk文件进行重签名之后,安装重签名的Apk文件并运行,过程中会失败

keytool -list -printcert -jarfile F:\1.apk

 
优点:
可以保证数据的完整性。
 
缺点:
无法保证数据的真实性,即不能确定数据和散列值是来自发送方的,因为攻击者完全可以将数据和散列值一起替换。
 
我有网络安全服务需求
I HAVE NETWORK SECURITY SERVICE NEEDS