tryhackme-Cyber Security 101-Cryptography-Cryptography Basics(加密基础)

目的:了解加密和对称加密的基础知识。

任务1:介绍

你有没有想过如何防止第三方阅读你的消息?您的应用程序 或 Web 浏览器如何与远程服务器建立安全通道?安全是指没有人可以读取或更改交换的数据;此外,我们可以确信我们正在与真实服务器连接。多亏了密码学,这些要求得到了满足。

密码学为我们的数字世界奠定了基础。虽然网络协议使分布在全球各地的设备能够进行通信,但加密技术使信任这种通信成为可能。

这个房间是三个关于密码学的介绍性房间中的第一个。除了使用 Linux 命令行的基本能力外,没有学习先决条件。如果您不确定,请考虑加入 Pre Security 路径。

  • 密码学基础 (this room)
  • 公钥加密基础知识
  • 哈希基础知识

学习目标

完成此房间后,您将学习以下内容:

  • 加密密钥术语
  • 密码学的重要性
  • 凯撒密码
  • 标准对称密码
  • 常见的非对称密码
  • 密码学中常用的基本数学

任务2:密码学的重要性

密码学的最终目的是确保在有对手的情况下进行安全通信。术语 安全 包括所通信数据的机密性和完整性。密码学可以定义为安全通信和数据保护技术的实践和研究,我们预计会有对手和第三方的存在。换句话说,这些对手应该无法披露或更改消息的内容。

加密技术用于保护机密性、完整性和真实性。在这个时代,您每天都在使用加密技术,而且几乎可以肯定您是通过加密连接读取的。请考虑以下使用加密的方案:

  • 当您登录 TryHackMe 时,您的凭据会被加密并发送到服务器,因此没有人可以通过窥探您的连接来检索它们。
  • 当您通过 SSH 连接时,您的 SSH 客户端和服务器会建立加密隧道,因此没有人可以窃听您的会话。
  • 当您进行网上银行业务时,您的浏览器会检查远程服务器的证书,以确认您正在与银行的服务器通信,而不是与攻击者的服务器通信。
  • 下载文件时,如何检查它是否下载正确?加密通过哈希函数提供解决方案,以确认您的文件与原始文件相同。

如您所见,您很少需要直接与密码学交互,但它的解决方案和影响在数字世界中无处不在。考虑一家公司想要处理信用卡信息和处理相关交易的情况。在处理信用卡时,公司必须遵循并执行支付卡行业数据安全标准 (PCI DSS)。在这种情况下,PCI DSS 可确保存储、处理和传输与卡信用相关的数据的最低安全级别。如果您检查大型组织的 PCI DSS,您将了解到数据在存储(静态)和传输(动态)时都应该加密。

与处理支付卡详细信息需要遵守 PCI DSS 的方式相同,处理医疗记录需要遵守各自的标准。与信用卡不同,处理医疗记录的标准因国家/地区而异。处理医疗记录时应考虑的示例法律和法规包括美国的 HIPAA(健康保险流通与责任法案)和 HITECH(经济和临床健康信息技术)、欧盟的 GDPR(通用数据保护条例)和英国的 DPA(数据保护法)。虽然该列表并不详尽,但它给出了医疗保健提供者应该根据其国家/地区考虑的法律要求的想法。这些法律和法规表明,密码学是一种必需品,应该存在,但通常对用户直接访问是隐藏的。

任务3:明文转密文

在介绍关键术语之前,让我们先从一个例子开始。我们从要加密的明文开始。明文是可读数据;它可以是任何东西,从简单的“你好”、猫照片、信用卡信息或医疗健康记录。从密码学的角度来看,这些都是等待加密的 “明文” 消息。明文与适当的密钥一起通过加密函数传递;加密函数返回密文。加密功能是密码的一部分;密码是一种将明文转换为密文的算法,反之亦然。

要恢复明文,我们必须通过解密功能将密文与正确的密钥一起传递,这将为我们提供原始明文。如下图所示。

我们刚刚介绍了几个新术语,我们需要学习它们才能理解有关密码学的任何文本。条款如下:

  • 纯文本Plaintext是加密之前的原始可读消息或数据。它可以是文档、图像、多媒体文件或任何其他二进制数据。
  • 密文Ciphertext是加密后消息的乱序、不可读版本。理想情况下,除了它的大致大小外,我们无法获得有关原始明文的任何信息。
  • 密码Cipher是一种将纯文本转换为密文并再次转换回来的算法或方法。密码通常由数学家开发。
  • Key 是密码用于加密或解密数据的一串位。通常,使用的密码是公共知识;但是,除非它是非对称加密中的公钥,否则密钥必须保持机密。我们将在后面的任务中访问非对称加密。
  • 加密Encryption是使用密码和密钥将明文转换为密文的过程。与密钥不同,密码的选择是公开的。
  • 解密Decryption是加密的相反过程,使用密码和密钥将密文转换回明文。尽管密码是公共知识,但在不知道密钥的情况下恢复明文应该是不可能的(不可行)

任务4:历史密码

密码学的历史悠久,可以追溯到公元前 1900 年的古埃及。然而,最简单的历史密码之一是公元前 1 世纪的凯撒密码。这个想法很简单:将每个字母移动某个数字以加密消息。

请考虑以下示例:

  • 明文:TRYHACKME
  • key:3(假设它是 3 的右移。
  • 密码:Caesar Cipher

我们可以很容易地弄清楚 T 变成 W,R 变成 U,Y 变成 B,依此类推。正如您所注意到的,一旦我们到达 Z,我们就会重新开始,如下图所示。因此,我们得到 的密文 。WUBKDFNPH

要解密,我们需要以下信息:

  • 密文:WUBKDFNPH
  • key:3
  • 密码:Caesar Cipher

对于加密,我们向右移动 3;对于解密,我们向左移动 3 并恢复原始明文,如上图所示。但是,如果有人给你一个密文并告诉你它是使用 Caesar Cipher 加密的,那么恢复原始文本将是一项简单的任务,因为只有 25 个可能的密钥。英文字母表是 26 个字母,移动 26 个字母将保持字母不变;因此,有 25 个有效的密钥用于使用 Caesar Cipher 进行加密。下图显示了如何通过尝试所有可能的密钥来成功解密;在本例中,我们使用 Key = 5 恢复了原始消息。因此,按照今天的标准,在密码是众所周知的地方,Caesar Cipher 被认为是不安全的。

您会在电影和密码学书籍中遇到更多历史密码。示例包括:

  • 16 世纪的 Vigenère 密码
  • 第二次世界大战的 Enigma 机器
  • 冷战时期的一次性垫子

任务5:加密类型

加密的两个主要类别是对称和非对称

对称加密Symmetric Encryption

对称加密,也称为对称加密,使用相同的密钥对数据进行加密和解密,如下图所示。保守密钥是必须的;它也称为私钥加密。此外,将密钥传达给目标各方可能具有挑战性,因为它需要一个安全的通信渠道。维护密钥的机密性可能是一项重大挑战,尤其是在有许多收件人的情况下。在强大的对手面前,问题变得更加严重;例如,考虑一下工业间谍活动的威胁。

考虑一个简单的案例,您创建了一个受密码保护的文档以与您的同事共享该文档。您可以轻松地将加密文档通过电子邮件发送给您的同事,但很可能您无法通过电子邮件将密码发送给他们。原因是任何有权访问其邮箱的人都可以访问受密码保护的文档及其密码。因此,您需要考虑一种不同的方式,即 channel,来共享密码。除非您考虑一个安全、可访问的渠道,否则一种解决方案是亲自见面并将密码传达给他们。

对称加密的示例包括 DES(数据加密标准)、3DES(三重 DES)和 AES(高级加密标准)。

  • DES 于 1977 年作为标准采用,并使用 56 位密钥。随着计算能力的进步,1999 年,DES 密钥在不到 24 小时内成功破解,推动了向 3DES 的转变
  • 3DES 是 DES 应用了三次;因此,密钥大小为 168 位,但有效安全性为 112 位。当 DES 不再被认为是安全的时,3DES 更像是一种临时解决方案。3DES 已于 2019 年弃用,应替换为 AES;但是,它可能仍存在于某些旧系统中。
  • AES 于 2001 年被采用为标准。其密钥大小可以是 128、192 或 256 位。

在各种应用程序中使用了更多的对称加密密码;但是,它们尚未被采纳为标准。

非对称加密Asymmetric Encryption

与使用相同密钥进行加密和解密的对称加密不同,非对称加密使用一对密钥,一个用于加密,另一个用于解密,如下图所示。为了保护机密性,非对称加密或非对称加密使用公钥对数据进行加密;因此,它也被称为公钥密码学

示例包括 RSA、Diffie-Hellman 和椭圆曲线加密 (ECC)。该过程中涉及的两个密钥称为公钥私钥。使用公钥加密的数据可以使用私钥解密。您的私钥需要保持私有,因此得名。

非对称加密往往速度较慢,并且许多非对称加密密码使用的密钥比对称加密大。例如,RSA 使用 2048 位、3072 位和 4096 位密钥;2048 位是建议的最小密钥大小。Diffie-Hellman 还建议的最小密钥大小为 2048 位,但使用 3072 位和 4096 位密钥以增强安全性。另一方面,ECC 可以用更短的密钥实现同等的安全性。例如,对于 256 位密钥,ECC 提供与 3072 位 RSA 密钥相当的安全级别。

非对称加密基于一组特定的数学问题,这些问题很容易在一个方向上计算,但极难逆转。在这种情况下,极其困难意味着实际上不可行。例如,我们可以依赖一个数学问题,而这个问题需要很长时间,例如数百万年才能用今天的技术来解决。

我们将在隔壁房间访问各种非对称加密密码。目前,需要注意的重要一点是,非对称加密为您提供了一个与所有人共享的公钥和一个您保护和保密的私钥。

新术语摘要

  • Alice 和 Bob 是加密示例中常用的虚构角色,用于表示试图安全通信的两方。对称加密是一种将同一密钥用于加密和解密的方法。因此,此密钥必须保持安全,绝不能透露给除预期方以外的任何人。非对称加密是一种使用两种不同密钥的方法:用于加密的公钥和用于解密的私钥。

任务6:基础数学

现代密码学的基石在于数学。为了演示一些基本算法,我们将介绍各种算法中使用的两个数学运算:

  • 异或操作
  • 模运算

异或操作

XOR 是“异或”的缩写,是二进制算术中的一种逻辑运算,在各种计算和加密应用中起着至关重要的作用。在二进制中,XOR 比较两个位,如果位不同则返回 1,如果它们相同则返回 0,如下面的真值表所示。此操作通常由符号 ⊕ 或 ^ 表示。

一个BA ⊕ B
000
011
101
110

如果这是您第一次使用真值表,则它是一个显示所有可能结果的表。上面的 XOR 真值表说明了所有四种情况:0 ⊕ 0 = 0、0 ⊕ 1 = 1、1 ⊕ 0 = 1 和 1 ⊕ 1 = 0。

让我们考虑一个例子,我们想对二进制数 1010 和 1100 应用 XOR。在这种情况下,我们一点一点地进行运算:1 ⊕ 1 = 0,0 ⊕ 1 = 1,1 ⊕ 0 = 1,0 ⊕ 0 = 0,得到 0110。

您可能想知道 XOR 如何在密码学中发挥作用。XOR 具有几个有趣的特性,使其在加密和错误检测中非常有用。一个关键属性是,将 XOR 应用于具有自身的值会导致 0,而将 XOR 应用于任何具有 0 的值将使其保持不变。这意味着对于任何二进制值 A,A ⊕ A = 0,A ⊕ 0 = A。此外,XOR 是可交换的,即 A ⊕ B = B ⊕ A。它是结合的,即 (A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)。

让我们看看如何在密码学中利用上述内容。我们将演示如何将 XOR 用作基本的对称加密算法。考虑二进制值 P 和 K,其中 P 是纯文本,K 是密钥。密文为 C = P ⊕ K。

现在,如果我们知道 C 和 K,我们就可以恢复 P。我们从 C 开始 ⊕ K = (P ⊕ K) ⊕ K。但我们知道 (P ⊕ K) ⊕ K = P ⊕= (K ⊕ K),因为 XOR 是结合的。此外,我们知道 K ⊕ K = 0;因此,(P ⊕ K) ⊕ K = P ⊕ (K ⊕ K) = P ⊕ 0 = P。换句话说,XOR 是一种简单的对称加密算法。在实践中,它更复杂,因为我们需要一个密钥,只要是明文。

模运算

我们在密码学中经常遇到的另一个数学运算是模运算符,通常写成 % 或 mod。模运算符 X%Y 是 X 除以 Y 时的余数。在我们的日常生活计算中,我们更关注除法的结果而不是余数。其余部分在密码学中起着重要作用。

在解决一些密码学练习时,您需要使用大数。如果您的计算器失败,我们建议使用 Python 等编程语言。Python 有一个内置类型,可以处理任意大小的整数,并会根据需要自动切换到更大的类型。许多其他编程语言都有用于大整数的专用库。如果您更喜欢在线数学运算,请考虑 WolframAlpha。int

让我们考虑几个例子。

  • 25%5 = 0,因为 25 除以 5 等于 5,余数为 0,即 25 = 5 × 5 + 0
  • 23%6 = 5,因为 23 除以 6 等于 3,余数为 5,即 23 = 3 × 6 + 5
  • 23%7 = 2,因为 23 除以 7 是 3 余数为 2,即 23 = 3 × 7 + 2

关于 modulo 需要记住的一个重要一点是它是不可逆的。如果我们给出方程 x%5 = 4,则 x 的无限值将满足此方程。

取模运算始终返回小于除数的非负结果。这意味着对于任何整数 a 和正整数 n,a%n 的结果将始终在 0 到 n − 1 的范围内。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

螺杆支撑座在运用中会出现哪些问题?

螺杆支撑座是一种用于支撑滚珠螺杆的零件,通常用于机床、数控机床、自动化生产线等高精度机械设备中。在运用中可能会出现多种问题,这些问题源于多个方面,以下是对可能出现的问题简单了解下: 1、安装不当:安装过程中没…

基于SpringBoot的在线文档管理系统的设计与实现

一、项目背景 随着社会的快速发展,计算机的影响是全面且深入的。员工生活水平的不断提高,日常生活中员工对在线文档方面的要求也在不断提高,在线文档管理受到广大员工的关注,使得在线文档管理系统的开发成为必需而且紧迫的事情。…

UE5 崩溃问题汇总!!!

Using bundled DotNet SDK version: 6.0.302 ERROR: UnrealBuildTool.dll not found in "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 在你遇到这种极奇崩溃的BUG ,难以解决的时候。 尝试了N种方法,都不行的解决方法。…

QML学习(五) 做出第一个简单的应用程序

通过前面四篇对QML已经有了基本的了解,今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目,选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型,以及输出的程…

Dockerfile基础指令

1.FROM 基于基准镜像(建议使用官方提供的镜像作为基准镜像,相对安全一些) 举例: 制作基准镜像(基于centos:lastest) FROM cenots 不依赖于任何基准镜像 FROM scratch 依赖于9.0.22版本的tomcat镜像 FROM…

光谱相机的工作原理

光谱相机的工作原理主要基于不同物质对不同波长光的吸收、反射和透射特性存在差异,以下是其具体工作过程: 一、光的收集 目标物体在光源照射下,其表面会对光产生吸收、反射和透射等相互作用。光谱相机的光学系统(如透镜、反射镜…

Windows Subsystem for Linux (WSL)

目录 定义与功能 版本与特点 应用场景 启用 WSL 功能 更新WSL及其内核 下载Linux发行版本 WSL(Windows Subsystem for Linux)是微软在Windows 10和Windows 11中引入的一项功能,使用户能够在Windows上原生运行Linux的命令行工具和应用程…

基于springboot的汽车租赁系统丨源码+数据库+万字文档+PPT

作者简介: 作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 技术框架 开发语言:Java 框架:spring…

ECharts仪表盘-GaugeCar,附视频讲解与代码下载

引言: ECharts仪表盘(Gauge Chart)是一种类似于速度表的数据可视化图表类型,用于展示单个或多个变量的指标和状态,特别适用于展示指标的实时变化和状态。本文将详细介绍如何使用ECharts库实现一个仪表盘,…

Debian安装配置RocketMQ

安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…

单纯从配色看:飞书B端界面超出大多数B端界面的窠臼。

提及管理系统界面的配色,大家的第一印象就是蓝色,导航栏居左,深蓝色。不是说这种配色和布局不好,而是说看多了就腻歪了,本次分享一些飞书的后台界面,虽说也是左右布局,布局上没有啥突破。 但是…

Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘

问题分析:显示Jupyter未安装这个模板 解决办法:在单元格内输入:!pip install wordcloud

《Vue3 二》Vue 的模板语法

在 React 中,想要编写 HTML,是使用 JSX,之后通过 Babel 将 JSX 编译成 React.createElement 函数调用;在 Vue 中,也支持 JSX 的开发模式,但大多数情况下都是使用基于 HTML 的模板语法,在模板中允…

idea 安装插件(在线安装、离线安装)

目录 在线安装 离线安装 在线安装 1、打开IntelliJ IDEA 2024.x软件, 点击file-Settings 2、点击搜索框,输入plugins,找到plugins列,输入xxx软件--点击install 安装 3、重启idea 离线安装 1、在官网上下载插件包 (1&…

FPGA三模冗余TMR工具(二)

学术和商业领域有许多自动化的三模冗余TMR工具,本文介绍当前主流的基于寄存器传输级的三模冗余工具(Register-Transfer Level,RTL),基于重要软核资源的三模冗余工具,以及新兴的基于高层次综合的三模冗余工具…

Ubuntu 中安装 RabbitMQ 教程

简介 RabbitMq作为一款消息队列产品,它由Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。 应用场景 异步处理 场景说明:用户注册后,注册信息写入数据库,再发邮件、短信通知。 …

WPF TextBox 输入限制 详解

总目录 前言 通常对于WPF输入框 输入的控制无非以下方式 1 直接禁止输入(包括粘贴) 不符合要求的字符 如只可输入数字的输入框,当你输入字母的时候是无法输入的 2 输入后,校验内容是否符合要求,然后提示错误,禁止提交信息 如只可…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外,文章还涵…

Linux学习2.0——vi编辑器和gcc编译器的使用

vi是一种方便的代码编辑器,Linux系统一般是自带的、 vi和vim的区别:vim是vi的升级版,基础功能两者一致,不过在嵌入式开发板中 只有vi没有vim,但是在Ubuntu上我们可以使用vim编辑器,它的功能更加丰富。 这里…

有一个4*5的矩阵如下,要求编写程序计算总和与平均值,并找出其中值最大的那个元素输出,以及其所在的行号和列号。

一、题目 二、代码解析 max_value 被初始化为矩阵的第一个元素 matrix[0][0]。max_row 和 max_col 分别被初始化为 0,表示最大值所在的行和列。s 被初始化为 0,用于累加矩阵中的所有元素。外层循环 for k in range(len(matrix)) 遍历矩阵的每一行。内层…