本心、输入输出、结果
文章目录
- 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全
-
- 前言
-
- Linux 文件系统解释
- 应该知道的 18 个最常用的 Linux 命令
- HTTPS如何工作?
-
- 数据是如何加密和解密的?
- 为什么HTTPS在数据传输过程中会切换到对称加密?主要有两个原因:
- 用简单的术语解释 Oauth 2.0
-
- 身份验证机制的 4 种使用最多的形式
- 会话、cookie、JWT、令牌、SSO 和 OAuth 2.0 - 它们是什么?
- 如何将密码安全地存储在数据库中以及如何验证密码?
-
- 不安全的操作
- 什么是盐 (Salt)?
- 如何存储密码和盐?
- 如何验证密码?
- 让 10 岁的孩子也可以看明白 JSON Web 令牌 (JWT)
- Google 身份验证器(或其他类型的双因素身份验证器)如何工作?
-
- 弘扬爱国精神
系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全
编辑:简简单单 Online zuozuo
地址:https://blog.csdn.net/qq_15071263
如果觉得本文对你有帮助,欢迎点赞、收藏、评论
前言
我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节
我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节
Linux 文件系统解释
Linux 文件系统过去类似于一个无组织的城镇,人们随心所欲地建造房屋。但是,在 1994 年,引入了文件系统层次结构标准 (FHS) 来为 Linux 文件系统带来秩序。
通过实施像FHS这样的标准,软件可以确保在各种Linux发行版上保持一致的布局。尽管如此,并非所有 Linux 发行版都严格遵守此标准。它们通常包含自己独特的元素或满足特定要求。 要精通此标准,您可以从探索开始。使用诸如“cd”之类的命令进行导航,使用“ls”之类的命令列出目录内容。将文件系统想象成一棵树,从根 (/) 开始。
应该知道的 18 个最常用的 Linux 命令
Linux 命令是用于与操作系统交互的说明。它们帮助管理文件、目录、系统进程和系统的许多其他方面。您需要熟悉这些命令,以便有效地导航和维护基于 Linux 的系统
- ls - 列出文件和目录
- cd - 更改当前目录
- mkdir - 创建一个新目录
- rm - 删除文件或目录
- cp - 复制文件或目录
- mv - 移动或重命名文件或目录
- chmod - 更改文件或目录权限
- grep - 在文件中搜索模式
- 查找 - 搜索文件和目录
- tar - 操作压缩包存档文件
- vi - 使用文本编辑器编辑文件
- cat - 显示文件内容
- top - 显示进程和资源使用情况
- ps - 显示进程信息
- kill - 通过发送信号终止进程
- du - 估计文件空间使用情况
- ifconfig - 配置网络接口
- ping - 测试主机之间的网络连接
HTTPS如何工作?
超文本传输协议安全 (HTTPS) 是超文本传输协议 (HTTP) 的扩展。HTTPS 使用传输层安全性 (TLS) 传输加密数据。如果数据在网上被劫持,劫持者得到的只是二进制代码。
数据是如何加密和解密的?
- 步骤 1 - 客户端(浏览器)和服务器建立 TCP 连接。
- 步骤 2 - 客户端向服务器发送“客户端问候”。该消息包含一组必要的加密算法(密码套件)及其可以支持的最新 TLS 版本。服务器以“服务器问候”响应,以便浏览器知道它是否可以支持算法和TLS版本。
- 然后,服务器将 SSL 证书发送到客户端。证书包含公钥、主机名、到期日期等。客户端验证证书。
- 步骤 3 - 验证 SSL 证书后,客户端生成会话密钥并使用公钥对其进行加密。服务器接收加密的会话密钥并使用私钥对其进行解密。
- 步骤 4 - 现在客户端和服务器都持有相同的会话密钥(对称加密),加密的数据在安全的双向通道中传输。
为什么HTTPS在数据传输过程中会切换到对称加密?主要有两个原因:
- 安全性:非对称加密只有一种方式。这意味着,如果服务器尝试将加密数据发送回客户端,任何人都可以使用公钥解密数据。
- 服务器资源:非对称加密增加了相当多的数学开销。它不适合长时间会话中的数据传输
用简单的术语解释 Oauth 2.0
OAuth 2.0 是一个功能强大且安全的框架,允许不同的应用程序代表用户安全地相互交互,而无需共享敏感凭据
OAuth 中涉及的实体是用户、服务器和身份提供程序 (IDP)。
OAuth 代币可以做什么?
- 使用 OAuth 时,您将获得一个表示您的标识和权限的 OAuth 令牌。此令牌可以执行一些重要操作:
- 单点登录 (SSO):使用 OAuth 令牌,您只需一次登录即可登录多个服务或应用程序,让生活更轻松、更安全。
- 跨系统授权:OAuth 令牌允许您在各种系统之间共享您的授权或访问权限,因此您不必在任何地方单独登录。
- 访问用户配置文件:具有 OAuth 令牌的应用可以访问您允许的用户配置文件的某些部分,但它们不会看到所有内容。
- 请记住,OAuth 2.0 旨在确保您和您的数据安全,同时使您的在线体验在不同的应用程序和服务之间无缝无忧
身份验证机制的 4 种使用最多的形式
- SSH Keys: 加密密钥用于安全地访问远程系统和服务器
- OAuth Tokens:: 提供对第三方应用程序上的用户数据的有限访问权限的令牌
- SSL Certificates:: 数字证书可确保服务器和客户端之间的安全和加密通信
- Credentials: 用户身份验证信息用于验证和授予对各种系统和服务的访问权限
会话、cookie、JWT、令牌、SSO 和 OAuth 2.0 - 它们是什么?
这些术语都与用户身份管理有关。当您登录网站时,您声明了您是谁(身份识别)。您的身份已验证(身份验证),并被授予必要的权限(授权)。过去已经提出了许多解决方案,并且还在不断增长
排序从简单到复杂
- WWW-身份验证是最基本的方法。浏览器要求您输入用户名和密码。由于无法控制登录生命周期,因此今天很少使用它。
- 对登录生命周期的更精细控制是会话cookie。服务器维护会话存储,浏览器保留会话的 ID。Cookie 通常仅适用于浏览器,对移动应用程序不友好。
- 若要解决兼容性问题,可以使用令牌。客户端将令牌发送到服务器,服务器验证令牌。缺点是令牌需要加密和解密,这可能很耗时。
- JWT 是表示令牌的标准方式。此信息可以验证和信任,因为它是经过数字签名的。由于 JWT 包含签名,因此无需在服务器端保存会话信息。
- 通过使用 SSO(单点登录),您只能登录一次并登录到多个网站。它使用 CAS(中央身份验证服务)来维护跨站点信息
- 通过使用OAuth 2.0,您可以授权一个网站访问另一个网站上的信息
如何将密码安全地存储在数据库中以及如何验证密码?
不安全的操作
- 以纯文本形式存储密码不是一个好主意,因为任何具有内部访问权限的人都可以看到它们。
- 直接存储密码哈希是不够的,因为它被修剪为预计算攻击,例如彩虹表。
- 为了减轻预计算攻击,我们会对密码进行加盐处理。
什么是盐 (Salt)?
根据OWASP指南,“盐是一个唯一的,随机生成的字符串,作为哈希过程的一部分添加到每个密码中”。
如何存储密码和盐?
哈希结果对于每个密码都是唯一的。
密码可以使用以下格式存储在数据库中:hash(password + salt)。
如何验证密码?
要验证密码,可以执行以下过程:
- 客户端输入密码。
- 系统从数据库中获取相应的盐。
- 系统会将盐附加到密码并对其进行哈希处理。我们将哈希值称为 H1。
- 系统比较 H1 和 H2,其中 H2 是存储在数据库中的哈希。如果它们相同,则密码有效。
让 10 岁的孩子也可以看明白 JSON Web 令牌 (JWT)
想象一下,您有一个称为 JWT 的特殊框。在此框中,有三个部分:标头、有效负载和签名。
标题就像盒子外面的标签。它告诉我们它是什么类型的盒子以及如何保护它。它通常以称为 JSON 的格式编写,这只是一种使用大括号 { } 和冒号来组织信息的方法: 。
有效负载类似于您要发送的实际消息或信息。它可以是您的姓名、年龄或您要共享的任何其他数据。它也以 JSON 格式编写,因此易于理解和使用。 现在,签名是使 JWT 安全的原因。这就像一个特殊的印章,只有发送者知道如何创建。签名是使用密码创建的,有点像密码。此签名可确保没有人可以在发件人不知情的情况下篡改 JWT 的内容。
当您要将 JWT 发送到服务器时,请将标头、有效负载和签名放在框中。然后将其发送到服务器。服务器可以轻松读取标头和有效负载,以了解您是谁以及您想要做什么。
Google 身份验证器(或其他类型的双因素身份验证器)如何工作?
启用两因素身份验证时,Google身份验证器通常用于登录我们的帐户。它如何保证安全?
Google 身份验证器是一种基于软件的身份验证器,可实现两步验证服务。下图提供了详细信息。
涉及两个阶段:
- 第 1 阶段 - 用户启用 Google 两步验证
- 第 2 阶段 - 用户使用身份验证器登录等。
第 1 阶段
- 步骤 1 和 2:Bob 打开网页以启用两步验证。前端请求密钥。身份验证服务为 Bob 生成密钥并将其存储在数据库中。
- 步骤 3:身份验证服务向前端返回 URI。URI 由密钥颁发者、用户名和密钥组成。URI 以二维码的形式显示在网页上。
- 步骤 4: 鲍勃然后使用谷歌身份验证器扫描生成的二维码。密钥存储在身份验证器中。
第 2 阶段
- 步骤 1 和 2:Bob 想要使用 Google 两步验证登录网站。为此,他需要密码。每 30 秒,Google 身份验证器就会使用 TOTP(基于时间的一次性密码)算法生成一个 6 位密码。鲍勃使用密码进入网站。
- 步骤 3 和 4:前端将 Bob 输入的密码发送到后端进行身份验证。身份验证服务从数据库中读取密钥,并使用与客户端相同的 TOTP 算法生成 6 位密码。
- 步骤 5:认证服务对比客户端和服务器端生成的两个密码,并将比较结果返回给前端。仅当两个密码匹配时,Bob 才能继续登录过程。
此身份验证机制是否安全?
- 秘密密钥可以被其他人获得吗?
- 我们需要确保密钥是使用 HTTPS 传输的。身份验证器客户端和数据库存储密钥,我们需要确保密钥是加密的。
- 黑客可以猜到6位数的密码吗?
- 不。密码有 6 位数字,因此生成的密码有 100 万个潜在的组合。另外,密码每 30 秒更改一次。如果黑客在30秒内猜出密码,他们需要每秒输入30,000个组合。
弘扬爱国精神
如果你也想学习:黑客&网络安全的SQL攻防
在这里领取:
这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:
1.学习路线&职业规划
2.全套体系课&入门到精通
3.黑客电子书&面试资料