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 的范围内。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

40.2 预聚合和prometheus-record使用

本节重点介绍 : downsample降采样可以降低查询数据量 prometheus原生不支持downsample 实时查询/聚合 VS 预查询/聚合的优缺点 实时查询/聚合条件随意组合,性能差预查询/聚合 性能好,聚合条件需要提前定义 prometheus的预查询/聚合配置举例 downsample…

JavaEE 3大组件 Listener Servlet Filter

1. Listener不熟悉 2. Servlet Servlet: Server Applet,翻译为运行在服务端的Java小程序,是sun公司提供一套规范( 接口 ),用来定义我们的代码怎么写才能被tomcat识别。 本质:接口,一个类想要被tomcat正确识别&…

jmeter并发用户逐步递增压测找性能拐点

jmeter并发用户逐步递增压测找性能拐点 目的: 使用逐层递增的并发压力进行测试,找到单功能的性能拐点(一般需要包含四组测试结果,拐点前一组,拐点一组,拐点后两组),统计响应时间、…

overleaf中文生僻字显示不正确,显示双线F

我是不想换全文字体的,只是一个生僻字显示不出来,就想要像word一样,把这个生僻字用包含这个生僻字的字体来显示就好了。 解决步骤: 1、使用如下宏包: \usepackage{xeCJK} %声明宏包,主要用于支持在XeTeX…

音视频入门基础:MPEG2-TS专题(24)——FFmpeg源码中,显示TS流每个packet的pts、dts的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

Boost之log日志使用

不讲理论,直接上在程序中可用代码: 一、引入Boost模块 开发环境:Visual Studio 2017 Boost库版本:1.68.0 安装方式:Nuget 安装命令: #只安装下面几个即可 Install-package boost -version 1.68.0 Install…

QWidget应用封装为qt插件,供其他qt应用调用

在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用. 插件优点: 与主程序为同一个进程,免去了进程间繁琐的通信方式,…

大数据-261 实时数仓 - 业务数据库表结构 交易订单、订单产品、产品分类、商家店铺、地域组织表

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 目前已经更新到了: H…

Pyside6 在 pycharm 中的配置

打开文件->设置 找到 工具->外部工具 点击 号 创建一个外部工具 QtDesigner 名称:QtDesigner 程序:D:\miniconda\envs\ergoAI-qt\Lib\site-packages\PySide6\designer.exe 实参:$FileName$ 工作目录:$FileDir$ PyUIC 名称&#xf…

Linux系统编程——线程

目录 一、前言 二、线程 1、线程的理解 三、线程相关的接口 1、线程的创建 2、线程的等待 3、实验 四、总结 1、线程优点 2、线程缺点 3、线程异常 4、Linux下的进程与线程对比 一、前言 之前的文章中我们已经对进程相关的概念做了认识,从创建进程、子进…

SD ComfyUI工作流 对人物图像进行抠图并替换背景

文章目录 人物抠图与换背景SD模型Node节点工作流程工作流下载效果展示人物抠图与换背景 此工作流旨在通过深度学习模型完成精确的人物抠图及背景替换操作。整个流程包括图像加载、遮罩生成、抠图处理、背景替换以及最终的图像优化。其核心基于 SAM(Segment Anything Model)与…

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …

02-18.python入门基础一基础算法

(一)排序算法 简述: 在 Python 中,有多种常用的排序算法,下面为你详细介绍几种常见的排序算法及其原理、实现代码、时间复杂度以及稳定性等特点,并对比它们适用的场景。 冒泡排序(Bubble Sor…

深度学习blog-卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于计算机视觉领域,如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成: 输入层:接收…

三维扫描在汽车/航空行业应用

三维扫描技术应用范围广泛,从小型精密零件到大型工业设备,都能实现快速、准确的测量。 通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维…

【Axure视频教程】中继器表格间传值

今天教大家在Axure制作中继器表格间传值的原型模板,可以将一个中继器表格里的行数据传递到另外一个中继器表格里,包括传值按钮在中继器内部和外部两中案例。 这个原型模板是用中继器制作的,所以使用也很简单,只需要在中继器表格里…

【测试】接口测试

长期更新好文,建议关注收藏! 目录 接口规范接口测试用例设计postmanRequests 复习HTTP超文本传输协议 复习cookiesession 实现方式 1.工具 如postman ,JMeter(后者功能更全) 2.代码 pythonrequests / javahttpclient【高级】 接…

目录 1、常用系统数据类型 1. int或integer 2. tinyint 3. decimal[(p[,s])]或numeric[(p[,s])] 4. char(n) 5. varchar(n|max) 6. datetime 2、T-SQL创建表 3、T-SQL修改表 4、T-SQL表数据的操作 4.1 插入数据 4.2 修改数据 4.3 删除数据 5、删除表 1、常用系统…

【LLM】OpenAI 的DAY12汇总和o3介绍

note o3 体现出的编程和数学能力,不仅达到了 AGI 的门槛,甚至摸到了 ASI(超级人工智能)的边。 Day 1:o1完全版,开场即巅峰 12天发布会的开场即是“炸场级”更新——o1完全版。相比此前的预览版本&#x…

Redis缓存知识点汇总

Redis缓存知识点汇总 请先思考如下问题 1.Redis的缓存击穿,穿透,雪崩是什么意思?原因和解决方案有哪些? 2.Redis支持宕机数据恢复,他的持久化方式及其原理是什么? 3.如何保证双写一致性,即如何保…