首页 > 其他分享 >学习:存储加密和传输加密的审计要点

学习:存储加密和传输加密的审计要点

时间:2023-05-24 15:57:07浏览次数:49  
标签:协议 存储 场景 加密 密码 要点 加密算法

学习转载:存储加密和传输加密的审计要点

存储加密和传输加密的审计要点

近年来,随着移动互联网的高速发展,在人们享受网络带来便利的同时,信息安全也逐渐成为大众关注的热点。

2021年落地的《中华人民共和国个人信息保护法》中第五十一条中明确提到,对于个人信息处理者的义务:采取相应的加密、去标识化等安全技术措施。2016年颁布的《中华人民共和国网络安全法》中第二十一条也对加密处理有所提及:采取数据分类、重要数据备份和加密等措施

除去法律在广义上提出的加密要求,常见的数据安全标准如:ISO/IEC 27002、GB/T 22239-2019 网络安全等级保护、PCI DSS中均对于数据传输以及数据存储有具体的加密要求。

本文将分别罗列出上述数据安全标准对于存储加密与传输加密的要求原文,以及在笔者过去的审计工作中,对于不同场景下的审计要点总结。

数据安全标准篇

常见的数据安全标准以及具体的技术要求点呈现如下:

第一个:《ISO/IEC 27002:2022 Information security, cybersecurity and privacy protection - Information security controls》

要求8.24 其他信息

a)机密性:使用信息加密来保护存储或传输的敏感或关键信息。

原文:confidentiality: using encryption of information to protect sensitive or critical information, either stored or transmitted.

第二个:《Payment Card Industry Data Security Standard version 4.0》

要求8.3.2

在传输和存储所有系统组件期间,使用强效加密算法使所有验证因素不可读。

原文:Strong cryptography is used to render all authentication factors unreadable during transmission and storage on all system components.

第三个:《GB/T 22239-2019信息安全技术 网络安全等级保护安全设计技术要求》

要求9.1.2.2 通信传输

b) 应采用密码技术保证通信过程中数据的保密性;

要求9.1.4.8 数据保密性

a) 应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;

b) 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

审计实战篇

对于传输加密,运维工程师需要查看浏览器地址栏的HTTPS证书判断加密强度;对于存储加密,研发工程师需要关注代码中对敏感数据调用的加密方法。审计过程中,涉及数据存储与数据传输两方面的加密场景远不止于此,审计师不仅需要关注加密强度、加密算法、密钥长度,还需要判断并定位加密环节的全生命周期,如密钥的生成、分配、存储、替换、销毁等环节

企业实际生产环境中涉及数据存储与数据传输的场景纷繁复杂,部分场景甚至涉及多处加密方案的部署,因此无法将安全合规建设寄托于“一招鲜,吃遍天”的解决方案。企业如何自查才能更有效的满足安全合规要求?笔者结合过去经验,依次梳理出几大经典场景并展开描述,希望为从业者在实操环节起到抛砖引玉的作用。

存储加密的场景

场景1:常规网络设备与常见操作系统的密码加密存储

在传统的用户登录系统过程中,多采用“用户名+密码”的登录方式,即根据用户输入的一串固定的静态密码来实现用户身份鉴别。目前仍有大部分场景使用该验证方式,如登录操作系统、应用软件、网络设备、安全设备等。

尽管场景不同,但系统对密码的处理方式大致相似。用户设定密码之后,大多数系统会对其执行不可逆的单向散列操作,包括但不限于MD5、SHA-1、SHA-2(SHA-256、SHA-512)等方式;除此之外,部分系统也支持对密码进行可逆的加密处理,如3DES、AES(AES-128、AES-256)、RSA(RSA-2048、RSA-4096)等方式。

对于网络设备和Linux操作系统,审计师通常会在命令行界面使用root权限账户执行查询命令,根据返回的结果来判断密码存储选用的加密方案。拿Linux和采用Linux内核开发的系统举例,输入cat /etc/shadow后,机器会输出密文状态的密码及加密方案,可以根据“$$”之间的数字判断加密方案。

image-20230524152956030

图片

对于原生Linux系统,也可以根据系统版本不同,分别执行命令见表。系统直接反馈密码加密存储方案,见图2。

图片

image-20230524153021361

场景2:常见安全设备的密码存储加密

在笔者曾经参与过的审计项目中,大部分企业会部署4A认证设备(认证Authentication、授权Authorization、账号Account、审计Audit)、堡垒机或跳板机等安全设备,用于工程师进行运维操作前的统一身份认证。无论上述安全设备是软件部署或硬件设施,原理均为将目标机器登录时配置的静态密码或私钥托管至安全设备,工程师在安全设备上完成身份认证后,可根据预先配置的资源访问权限,支持免密码输入的方式自动跳转到权限内的目标机器。此过程至少涉及到三处存储加密的场景,罗列如下:

  • 目标机器的静态密码加密存储在安全设备上;

  • 目标机器的私钥加密存储在安全设备上;

  • 用于登录安全设备的静态密码加密存储在安全设备上。

场景1和场景2中涉及的加密算法多为对称加密算法,场景3则常见于对密码执行单向散列算法。对于开源的安全设备,可通过阅读源代码的方式查看上述场景中分别对应的加密算法;对于一些商业软件,由于商业机密等原因,厂商大多无法告知相关配置信息,因此审计师可以通过厂商公开的白皮书来确定密码加密强度

场景3:常见数据库软件与应用服务系统对密码的存储加密

在数据安全的审计中,审计师也需要关注应用系统的密码加密存储方案。篇幅有限,此处仅提及三处经典场景,罗列如下:

  • 数据库软件,用户登录密码加密存储方案;

  • 应用服务器,可访问数据库的配置文件,登录数据库的用户名和密码加密存储方案;

  • Web应用,如果支持用户登录操作,用户登录密码存储在数据库表中的加密存储方案。

近几年,笔者发现越来越多的企业在生产环境中单独部署一台服务器作为配置中心,对用于访问数据库的配置文件进行加密存储。每次应用服务器访问数据库前,单独通过脚本去配置中心拉取对应的配置文件,调用解密接口服务后,获得明文密码,完成后续作业。

传输加密的场景

场景1:使用SSH协议进行设备和服务器管理

日常运维工作中,除去运维工程师在机房通过网线直连的控制台(console)方式对生产环境进行维护,更多常见于(远程控制)非控制台(non-console)的方式,即通过网络接口的逻辑访问执行运维作业。在对生产环境非Windows OS设备的远程访问中,不同的网络协议对应的加密方案见表。

图片

基于传输加密的出发点,大部分企业已由Telnet协议整改为SSH v2协议,FTP或TFTP协议升级为SFTP协议。其中SSH协议于2006年由v1升级至v2,在v1支持的3DES、Blowfish加密算法的基础上,新版本v2舍弃了DES和IDEA加密算法,增加了AES、CAST-128及RC4加密算法

在客户端与服务端建立SSH协议后,双方共同协商一个会话密钥对传输数据进行加密。客户端和服务端默认支持全部加密算法,包括弱加密算法,因此笔者会建议企业对服务端的/etc/ssh/sshd_config进行加固,通过配置服务端指定的强加密算法的方式完成对SSH协议的加固。加固方案如下,对该配置文件进行编辑,在最后一行处增加下列内容:

shellCiphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes192-cbc,aes256-cbc

image-20230524154107044

场景2:使用远程桌面协议(RDP)进行Windows服务器运维

对于将生产环境部署在Windows服务器的企业,日常运维工作则是建立在客户端与服务端的RDP协议上,目前微软已将各Windows OS对于安全协议的支持情况发布在官网,见表4。

图片

注:Windows Server 2008及2008 R2可通过安装补丁包的方式启用TLS1.1/1.2

Windows OS的支持多种TLS密码套件,具体选用的套件按照默认的优先级顺序依次启用,支持用户通过安装补丁包的方式添加新的密码套件并更改优先级

加密方案则由服务端进行配置。进入注册表路径,查看Security Layer在路径\HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\MinEncryptionLevel的键值,不同键值对应关系见表。

图片

场景3:使用HTTPS协议进行设备或系统管理

HTTPS协议是由HTTP协议与SSL/TLS协议共同构建而成,后者作用于TCP协议之上,HTTP协议之下,实现数据加密传输与身份认证的功能。SSL v1问世于1995年3月,截止至今,已升级至TLS v1.3。随着版本的升级,协议的安全性也在不断加强,旧版本也因自身存在的安全问题逐渐退出历史舞台。在2016年发布的PCI DSS v3.2.1中,就已经明确要求2018年6月30后禁止支持SSL协议及早期TLS协议(即TLS v1.0)。

对HTTPS协议的审计关注点是当前网站或接口配置的SSL/TLS协议版本,需要审计师确定数据流量走向并梳理出部署HTTPS证书的位置,包括但不限于WAF设备、负载均衡设备、Web服务器等,确认设备后根据配置信息来判断当前HTTPS协议是否支持不安全的SSL/TLS版本

同Windows OS,HTTPS协议对于密码套件的选择也是按照默认的优先级顺序依次启用。目前HTTPS协议支持用户配置多种加密套件,如密钥交换算法、身份交换算法、加密算法、加密密钥长度、加密模式等,具体的加密套件构成见图。

图片

加密套件的配置原则与SSH协议加固方案类似:放弃弱算法,如DES、MD5、RC4、IDEA;选用强算法,如ECDHE、RSA、AES、SHA256或以上。

总结

数据传输和数据存储安全是企业信息安全的一道至关重要的防线,每一处的加密强度的提升都可以看做是企业迈向信息安全的一小步,正所谓不积跬步无以至千里,本文对部分关键环节中存储加密及传输加密存在的风险及控制措施进行研究、分析,希望能够为企业数据合规建设提供一些思路和方向,提高信息安全管理效率及效果。

标签:协议,存储,场景,加密,密码,要点,加密算法
From: https://www.cnblogs.com/pam-sh/p/17428557.html

相关文章

  • 变量的存储 -- 栈和堆的区别
    引用:彻底搞懂JS闭包各种坑-简书(jianshu.com)1.js中基本变量和对象的内存存储:      2. ......
  • Elasticsearch与Clickhouse数据存储对比
    1背景京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表。随着业务的发展Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高频次分页导出导致宕机、存储成本较高。Elasticsearch的查询语句维护成本较高、在聚合计算场景下出现数据不精确......
  • Oracle 存储过程多数据集返回-程序处理
    oracle存储过程返回数据集是以游标参数的形式返回,同时返回多个数据集就相当于多几个输出类型的游标参数,而在程序处理中如何处理这种多结果集的存储过程?今天研究了Delphi7和c#两种语言,D7ODBC方式连接,OraStoreProced对象无法处理多个对象,查看其父类TCustomOraQuery,不想c#......
  • 【密码学】为什么不推荐在对称加密中使用CBC工作模式
    引言这篇文章是我在公司内部分享中一部分内容的详细版本,如标题所言,我会通过文字、代码示例、带你完整的搞懂为什么我们不建议你使用cbc加密模式,用了会导致什么安全问题,即使一定要用需要注意哪些方面的内容。注:本文仅从安全角度出发,未考虑性能与兼容性等因素工作模式是个啥分......
  • linux nfs共享存储服务
    目录一、nfs服务二、nfs优点三、配置文件四、共享文件配置过程五、实验1.创建共享文件(两台终端共享)              一、nfs服务概念:网络上共享文件系统的协议,运行多个服务器之间通过网络共享文件和目录服务端:将指定目录标记......
  • druid 数据库密码加密
    cmd命令:1、切换的druid-0.2.9.jar包所在目录2、在命令行中执行如下命令:java-cpdruid-0.2.9.jarcom.alibaba.druid.filter.config.ConfigToolsyou_password即输出加密后密码3、<!--sql统计功能就不能用<propertyname="filters"value="stat"/>--><propertyname="......
  • 接口加密了该怎么测?接口中有数据要进行加密怎么做??
    对明文编码生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串。摘要算法不要秘钥,客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。对称加密对称加密算法是共享密钥加密算法,在加密解密过程中,使用的密钥只......
  • 多线程要点博客锦集
    写的好的博客要收藏起来,避免以后丢失!1、Java多线程:彻底搞懂线程池2、Java线程池实现原理及其在美团业务中的实践......
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点
    1.Untiy3D中C#的底层原理Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。Mono存在的目的是为了跨平台,因为最初C#只支持Windows。而IL可以看成是一种汇编语言且完全基于堆栈,必须运行在虚拟机上。也就是说C#会被编译器编译成IL,当需要他们时就会被实时的加载到运行库......
  • AKSK加密认证
    AK/SK加密认证AK/SK概述1.什么是AKSKak/sk是一种身份认证方式,常用于系统间接口调用时的身份验证,其中ak为AccessKeyID,sk为SecretAccessKey。客户端和服务端两者会协商保存一份相同的sk,其中sk必须保密。2.AK/SK认证过程客户端在调用的服务端接口时候,会带上ak以及signatu......