Arch - 架构安全性_保密(Confidentiality)

ops/2024/9/29 3:18:52/

文章目录

  • OverView
  • 导图
  • 保密
    • 保密强度与成本
    • 客户端加密
    • 密码存储与验证
  • Code
  • 总结

在这里插入图片描述

OverView

即使只限定在“软件架构设计”这个语境下,系统安全仍然是一个很大的话题。

接下来我们将对系统安全架构的各个方面进行详细分析,包括认证、授权、凭证、保密、传输安全和验证,结合案例实践,展示如何应用这些安全原则和技术,讨论具体解决方案和行业标准 ,并提供与业界标准相一致的解决方案。

计划:

  1. 认证(Authentication)

    • 介绍认证的基本概念及其在软件架构中的作用。
    • 讨论常见的认证方法(如用户名/密码、双因素认证、生物识别)及其实现方式。
    • 探讨行业标准和最佳实践(如 OAuth、OpenID Connect)。
  2. 授权(Authorization)

    • 定义授权的概念及其重要性。
    • 讲解不同的授权模型(如基于角色的访问控制RBAC、基于属性的访问控制ABAC)。
    • 介绍如何在架构中实现这些模型以及如何处理权限管理。
  3. 凭证(Credential)

    • 阐明凭证的作用及其管理方式。
    • 讨论如何确保证书和凭证的真实性、完整性和不可抵赖性。
    • 介绍现有的凭证管理方案和技术(如 PKI、公钥基础设施)。
  4. 保密Confidentiality

    • 解释数据保密的基本概念及其在系统中的应用。
    • 讨论数据加密的技术和策略(如对称加密、非对称加密)。
    • 介绍如何确保保密性,包括数据存储和处理中的加密措施。
  5. 传输(Transport Security)

    • 定义传输安全及其对系统安全的影响。
    • 讲解如何实现传输层安全(如 TLS/SSL)的具体方法。
    • 讨论如何保护网络通信免受中间人攻击和数据篡改。
  6. 验证(Verification)

    • 介绍数据验证的必要性及其对系统稳定性的影响。
    • 讨论常见的验证技术(如输入验证、数据完整性检查)。
    • 讲解如何在系统中实现数据验证机制以保证数据一致性和正确性。

导图

在这里插入图片描述

保密

保密Confidentiality)是通过加密和解密算法保护敏感数据,确保未授权人员无法访问其真实内容。可分为以下几类:

保密强度与成本

  • 简单哈希:如 MD5,可以防止明文泄露,但对抗彩虹表攻击能力弱。
  • 加盐哈希:使用静态或动态盐值增强保护。动态盐值能防止重复攻击,但复杂性增加。
  • 慢哈希函数:如 BCrypt,通过增加计算时间来抵御暴力破解。

客户端加密

客户端加密在用户登录或注册时进行,目的是防止服务端存储明文密码。这减少了被拖库的风险,确保即使服务端被攻破,密码也不会以明文形式泄露。


密码存储与验证

  • 用户注册
    • 用户输入明文密码,客户端进行哈希处理(例如,SHA-256)。
    • 添加静态或伪动态盐值,再次哈希,生成中间结果。
    • 将结果与动态盐值结合,发送到服务端。
  • 服务端存储
    • 服务端接收加密结果和盐值,存储到数据库。
  • 用户登录
    • 客户端发送输入的明文密码,重复相同的哈希过程。
    • 服务端提取存储的盐值,计算哈希,并与数据库中的哈希值进行比较。

Code

  1. 注册示例

    明文密码 = "123456"
    客户端哈希 = SHA256("123456")
    盐值 = 随机生成 (如:"somesalt")
    最终哈希 = SHA256(SHA256("123456") + 盐值)
    存储 (最终哈希, 盐值) 到数据库
    
  2. 登录示例

    用户输入密码 = "123456"
    客户端哈希 = SHA256("123456")
    从数据库中获取 盐值
    比较结果 = SHA256(客户端哈希 + 盐值)
    如果 比较结果 == 存储的哈希,则验证成功
    

在这里插入图片描述


总结

保密机制需根据实际应用需求设计,确保敏感数据在各个环节的安全,特别是在客户端和服务端之间传输时。


在这里插入图片描述


http://www.ppmy.cn/ops/118226.html

相关文章

解决 Pandas 中的 XLRDError:处理 “Excel xlsx file; not supported” 错误

解决 Pandas 中的 XLRDError:处理 “Excel xlsx file; not supported” 错误 在处理数据分析任务时,使用 Python 的 Pandas 库来读取 Excel 文件是一种常见的做法。然而,从 Pandas 1.2.0 版本开始,默认使用的 xlrd 库不再支持 .x…

Linux驱动开发初识

Linux驱动开发初识 文章目录 Linux驱动开发初识一、驱动的概念1.1 什么是驱动:1.2 驱动的分类: 二、设备的概念2.1 主设备号&次设备号:2.2 设备号的作用: 三、设备驱动整体调用过程3.1 上层用户操控设备的流程:3.2…

深度学习(5):逻辑斯蒂回归Logistic

文章目录 一、逻辑斯蒂回归(Logistic Regression)二、KL 散度(相对熵)三、交叉熵(Cross-Entropy)四、关系五、总结 一、逻辑斯蒂回归(Logistic Regression) 概述 逻辑斯蒂回归是一种…

Elasticsearch在大数据处理中的优势

Elasticsearch 在大数据处理中的优势主要体现在以下几个方面: 1. 分布式架构 水平扩展:Elasticsearch 设计为分布式系统,可以轻松地通过增加节点来水平扩展,处理 PB 级别的数据。数据分片和复制:数据自动分片并跨多个…

AIGC学习笔记—minimind详解+训练+推理

前言 这个开源项目是带我的一个导师,推荐我看的,记录一下整个过程,总结一下收获。这个项目的slogan是“大道至简”,确实很简。作者说是这个项目为了帮助初学者快速入门大语言模型(LLM),通过从零…

韩媒专访CertiK首席商务官:持续关注韩国市场,致力于解决Web3安全及合规问题

作为Web3.0头部安全公司,CertiK在KBW期间联合CertiK Ventures举办的活动引起了业界的广泛关注。CertiK一直以来与韩国地方政府保持着紧密合作关系,在合规领域提供强有力的支持。而近期重磅升级的CertiK Ventures可以更好地支持韩国本地的区块链项目。上述…

前端代码开发规范

前端代码开发规范:提升项目质量与团队协作的基石 在快速迭代的软件开发环境中,前端代码开发规范扮演着至关重要的角色。它不仅有助于提升代码的可读性、可维护性和可扩展性,还能显著增强团队成员之间的协作效率,减少因代码风格不…

flink 的 Barrier 对齐 的优劣详解:

Barrier 对齐(Barrier Alignment) 是分布式数据流系统中一个重要的机制,特别是在处理 状态一致性、故障恢复 和 容错 时起着关键作用。它主要用于确保在复杂的多并行子任务场景下,数据流的所有分支能够在某个时间点上达到一致的状…