系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全

news2024/11/18 13:36:10

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全
    • 前言
      • Linux 文件系统解释
      • 应该知道的 18 个最常用的 Linux 命令
      • HTTPS如何工作?
        • 数据是如何加密和解密的?
        • 为什么HTTPS在数据传输过程中会切换到对称加密?主要有两个原因:
      • 用简单的术语解释 Oauth 2.0
        • OAuth 代币可以做什么?
      • 身份验证机制的 4 种使用最多的形式
      • 会话、cookie、JWT、令牌、SSO 和 OAuth 2.0 - 它们是什么?
      • 如何将密码安全地存储在数据库中以及如何验证密码?
        • 不安全的操作
        • 什么是盐 (Salt)?
        • 如何存储密码和盐?
        • 如何验证密码?
      • 让 10 岁的孩子也可以看明白 JSON Web 令牌 (JWT)
      • Google 身份验证器(或其他类型的双因素身份验证器)如何工作?
        • 第 1 阶段
        • 第 2 阶段
        • 此身份验证机制是否安全?
      • 弘扬爱国精神

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分: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在数据传输过程中会切换到对称加密?主要有两个原因:
  1. 安全性:非对称加密只有一种方式。这意味着,如果服务器尝试将加密数据发送回客户端,任何人都可以使用公钥解密数据。
  2. 服务器资源:非对称加密增加了相当多的数学开销。它不适合长时间会话中的数据传输

在这里插入图片描述

用简单的术语解释 Oauth 2.0

OAuth 2.0 是一个功能强大且安全的框架,允许不同的应用程序代表用户安全地相互交互,而无需共享敏感凭据

在这里插入图片描述

OAuth 中涉及的实体是用户、服务器和身份提供程序 (IDP)。

OAuth 代币可以做什么?
  • 使用 OAuth 时,您将获得一个表示您的标识和权限的 OAuth 令牌。此令牌可以执行一些重要操作:
  • 单点登录 (SSO):使用 OAuth 令牌,您只需一次登录即可登录多个服务或应用程序,让生活更轻松、更安全。
  • 跨系统授权:OAuth 令牌允许您在各种系统之间共享您的授权或访问权限,因此您不必在任何地方单独登录。
  • 访问用户配置文件:具有 OAuth 令牌的应用可以访问您允许的用户配置文件的某些部分,但它们不会看到所有内容。
  • 请记住,OAuth 2.0 旨在确保您和您的数据安全,同时使您的在线体验在不同的应用程序和服务之间无缝无忧

在这里插入图片描述

身份验证机制的 4 种使用最多的形式

在这里插入图片描述

  1. SSH Keys: 加密密钥用于安全地访问远程系统和服务器
  2. OAuth Tokens:: 提供对第三方应用程序上的用户数据的有限访问权限的令牌
  3. SSL Certificates:: 数字证书可确保服务器和客户端之间的安全和加密通信
  4. Credentials: 用户身份验证信息用于验证和授予对各种系统和服务的访问权限

在这里插入图片描述

会话、cookie、JWT、令牌、SSO 和 OAuth 2.0 - 它们是什么?

这些术语都与用户身份管理有关。当您登录网站时,您声明了您是谁(身份识别)。您的身份已验证(身份验证),并被授予必要的权限(授权)。过去已经提出了许多解决方案,并且还在不断增长

在这里插入图片描述

排序从简单到复杂

  1. WWW-身份验证是最基本的方法。浏览器要求您输入用户名和密码。由于无法控制登录生命周期,因此今天很少使用它。
  2. 对登录生命周期的更精细控制是会话cookie。服务器维护会话存储,浏览器保留会话的 ID。Cookie 通常仅适用于浏览器,对移动应用程序不友好。
  3. 若要解决兼容性问题,可以使用令牌。客户端将令牌发送到服务器,服务器验证令牌。缺点是令牌需要加密和解密,这可能很耗时。
  4. JWT 是表示令牌的标准方式。此信息可以验证和信任,因为它是经过数字签名的。由于 JWT 包含签名,因此无需在服务器端保存会话信息。
  5. 通过使用 SSO(单点登录),您只能登录一次并登录到多个网站。它使用 CAS(中央身份验证服务)来维护跨站点信息
  6. 通过使用OAuth 2.0,您可以授权一个网站访问另一个网站上的信息

在这里插入图片描述

如何将密码安全地存储在数据库中以及如何验证密码?

在这里插入图片描述

不安全的操作
  • 以纯文本形式存储密码不是一个好主意,因为任何具有内部访问权限的人都可以看到它们。
  • 直接存储密码哈希是不够的,因为它被修剪为预计算攻击,例如彩虹表。
  • 为了减轻预计算攻击,我们会对密码进行加盐处理。
什么是盐 (Salt)?

根据OWASP指南,“盐是一个唯一的,随机生成的字符串,作为哈希过程的一部分添加到每个密码中”。

如何存储密码和盐?

哈希结果对于每个密码都是唯一的。
密码可以使用以下格式存储在数据库中:hash(password + salt)。

如何验证密码?

要验证密码,可以执行以下过程:

  1. 客户端输入密码。
  2. 系统从数据库中获取相应的盐。
  3. 系统会将盐附加到密码并对其进行哈希处理。我们将哈希值称为 H1。
  4. 系统比较 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个组合。

弘扬爱国精神

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java通过IO流下载保存文件

我们在开发过程中,可能会遇到需要到远程服务器上下载文件的需求,一般我们的文件可能会有一个url地址,我们拿到这个地址,可以构建URLConnection对象,之后可以根据这个URLConnection来获取InputStream,之后&a…

C++ list 的使用

目录 1. 构造函数 1.1 list () 1.2 list (size_t n, const T& val T()) 1.3 list (InputIterator first, InputIterator last) 2. bool empty() const 3. size_type size() const 4. T& front() 4. T& back() 5. void push_front (const T& val) 6.…

【Java系列】Java 基础

目录 基础1.JDK和JRE的区别2.Java为什么不直接实现lterator接口,而是实现lterable?3.简述什么是值传递和引用传递?4.概括的解释下Java线程的几种可用状态? 中级1.简述Java同步方法和同步代码块的区别 ?2.HashMap和Hashtable有什么区别?3.简述Java堆的结构? 什…

生命礼赞,带动世界第三次文化复兴——非洲回顾篇

一个民族的复兴需要强大的物质力量,也需要强大的精神力量。大型玉雕群组《生命礼赞》是对中华民族伟大生命的讴歌,是对百姓美好生活的赞美,完美诠释了中华民族的伟大图腾,它象征着中华民族在党的带领下艰苦奋斗,江山稳…

嵌入式软件工程师面试题——2025校招专题(二)

说明: 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要…

美团动态ThreadPoolExecutor底层实现源码实战

开篇:介绍springboot连接nacos实现动态线程池,同时得安装nacos,同时代码将有两个模块,dtp-spring-boot-starter 与 user 模块,前者将是独立的动态线程池,可以引入自己的项目中,后者模块主要用于…

面试官:听说你很了解Java8特性,给我优化一下这段代码吧?

文章目录 前言我的想法面试官 前言 在之前的一次面试过程中,我被问到了一道代码优化题:对于下面的代码,你有什么优化的思路呢? boolean handleStrList(String strList){for (String s :strList){if(s.length()%20){return true;…

测试用例的设计方法(全):等价类划分方法

一.方法简介 1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 2.划分等价类: 等价类是指某个输入域的…

祝各位程序员节日快乐

今天是1024程序员节,小编祝各位Windows开机蓝屏,Linux开机Kernel Panic,macos开机五国,服务器iDRAC/ iLO/IPMI/KVM全部失联,路由器全爆炸,路由表内存全溢出,交换机全环路,防火墙全阻…

Spring Security加密和匹配

一. 密码加密简介 1. 散列加密概述 我们开发时进行密码加密,可用的加密手段有很多,比如对称加密、非对称加密、信息摘要等。在一般的项目里,常用的就是信息摘要算法,也可以被称为散列加密函数,或者称为散列算法、哈希…

清华训练营悟道篇之浅谈操作系统

文章目录 前言系统软件执行环境操作系统的功能操作系统组成 前言 操作系统是一个帮助用户和应用程序使用和管理计算机资源的软件,它控制着嵌入式设备、更通用的系统(如智能手机、台式计算机和服务器)以及巨型机等各种计算机系统 系统软件 …

【模型部署】c++部署yolov5使用openvino

1. 推理方式 CPU推理GPU推理(要求电脑具备核显,即CPU中有嵌入显卡) 2. openvino依赖项下载 https://github.com/openvinotoolkit/openvino/releases 直接解压(随便放到哪个路径) 环境配置 ********(…

Text Classification via Large Language Models

Abstract 表达大模型在文本分类上做的不好。 原因: 1、处理复杂语境时缺少推理能力。(e.g… 类比、讽刺) 2、限制学习的上下文的token数。 提出了自己的策略: ** Clue And Reasoning Prompting (CARP).线索与推理提示** 1、能用prompt找到clue(语境线索…

Mysql进阶-存储引擎篇

MySQL体系结构 其他数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。 这种架构可以根据业务的需…

RK3568平台开发系列讲解(应用篇)串口应用编程之串口的使用步骤

🚀返回专栏总目录 文章目录 一、配置参数1.1、获取当前串口的配置参数1.2、修改和写入串口的配置参数二、模式2.1、输入模式2.2、输出模式2.3、控制模式2.4、本地模式2.5、特殊控制字符沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 串口设备是嵌入式开发中最常用的…

Facebook批量注册如何做?一文教会你

我们都知道单个代理地址注册多个社媒账号,基本第二天都会进入到一个风控状态,要申诉或者封号,批量注册需要用不同的地址进行注册,推荐使用动态代理代理,下面是需要准备到的环境和材料以及注册的全流程。 一、环境需求 1、接码平…

STM32定时器介绍

STM32F103系列单片机定时器主要有:系统定时器SysTick,2个高级定时器TIM1和TIM8,4个通用定时器TIM2/3/4/5,2个基本定时器TIM6和TIM7。下面先简单介绍一下: 基本定时器:基本定时器只能计时,不能产…

MIT-BIH-AF 数据集开发库

目录 1 介绍数据集2 本博客函数库代码地址以及介绍读取dat,qrc,atr文件,获得 ECG_rpeaks,ann_aux_note,ann_sample,ECG0寻找时间点函数----signal_time_sample寻找R_R峰信号以及其位置----find_R_R_peak寻找 nR 峰信号以及位置---…

springboot实现邮箱发送(激活码)功能

第一步&#xff1a;现在邮箱里面开启smtp服务 这里用163邮箱举例&#xff0c;配置一下授权密码&#xff0c;这个要提前记住 第二步&#xff1a;引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/P…

大语言模型(LLM)综述(三):大语言模型预训练的进展

A Survey of Large Language Models 前言4. PRE-TRAINING4.1数据收集4.1.1 数据源4.1.2 数据预处理4.1.3 预训练数据对LLM的影响 4.2 模型架构4.2.1 典型架构4.2.2 详细配置 前言 随着人工智能和机器学习领域的迅速发展&#xff0c;语言模型已经从简单的词袋模型&#xff08;B…