密码学加密技术基础encryption crypto101

aw4ker2024-07-08文章来源:SecHub网络安全社区


encryption crypto101

介绍加密,作为密码学系列的一部分

任务1 这个房间覆盖哪些点?

该会议室将包括:

  • 为什么密码学对安全性和CTF很重要
  • 密码学的两个主要类别及其用途
  • RSA,以及RSA的一些用法
  • 2密钥交换方法
  • 随着量子计算的兴起,加密的未来

注意:本课程要求您熟悉工具,并研究如何自己使用它们!

任务2 关键术语

其中许多关键术语都与https://tryhackme.com/room/hashingcrypto101共享,因此您可以 如果你已经熟悉的话可以跳过一些。

Ciphertext :密文	
加密明文、加密数据的结果

Cipher:加密法
加密或解密数据的一种方法。现代密码是加密的,但也有许多非加密的密码,如凯撒密码。

Plaintext:明文
加密前的数据,通常是文本,但也可能是照片或其他文件。

Encryption:加密
用密码把数据转换成密文。

Encoding:编码
不是一种加密形式,只是一种类似 base64的数据表示形式。

Key:密钥
正确解密密文和获取明文所需的一些信息。

Passphrase:口令(密码短语)
与密钥分开,口令与密码类似,都能用于保护密钥。

Asymmetric encryption:非对称加密
使用不同的密钥进行加密和解密。

Symmetric encryption:对称加密
使用相同的密钥进行加密和解密

Brute force:暴力破解
通过尝试每个不同的密码或每个不同的密钥来攻击加密

Cryptanalysis:密码分析
通过发现基础数学的弱点来攻击密码学(通过发现基数的弱点来攻击密码加密技术)

Alice和Bob-用于表示通常想要通信的两个人。他们叫爱丽丝和鲍勃 因为这给了它们首字母A和B。https://en.wikipedia.org/wiki/Alice_and_Bob了解更多信息,因为这些字母表通过字母表扩展,代表许多 不同的人参与沟通。

**答:**这个房间很重理论。密码学是一个很大的话题,这个房间的设计只是为了触及表面。

回答下面的问题

我同意不要抱怨这个房间有多理论。

SSH密钥是否使用密码还是口令进行保护?

提示:这些定义的研究和应用

解:看上面的区别,是口令

Passphras

这里插一句口令和密码的区别,因为实际上中文中我们把许多口令叫密码

在日常生活中,我们可以有很多的口令。比如,我们登陆计算机的密码,邮箱密码,银行卡的密码。我们可以把这些称之为口令。

有的口令是密码 有的口令不是密码。

如果我们输入的口令不经过处理,直接送到服务器进行验证是否为合法用户,此时口令不是密码。

如果输进去的口令经过了运算,计算出来另一个结果。计算出来的结果与服务器进行比对,此时可以对用户的身份进行校验。此时,称口令为密码。

以前我们使用的是磁条卡,磁条卡里面实际上是一个简单的口令,我们可以非常容易的复制这种磁条卡。安全性比较低。

现在我们使用的是IC卡,比如银行卡,门禁卡,身份证等,里面有密码芯片。安全性比较高。

任务3 为什么加密很重要?

密码学是用来保护机密性、保证完整性、保证真实性的。你每隔一段时间 很有可能是今天,而且你几乎肯定是通过加密连接阅读这篇文章的。

登录TryHackMe时,您的凭据已发送到服务器。这些是加密的,否则有人 就能通过监听你的连接来捕捉他们

当您连接到SSH时,您的客户端和服务器会建立一个加密的隧道,这样就没有人可以窥探您的 上网时段

当你连接到你的银行时,会有一个证书,它使用加密技术来证明它实际上是你的银行 而不是黑客

当你下载一个文件时,你如何检查它是否下载正确?您可以在这里使用加密来验证 数据的校验和。

您很少需要直接与密码学进行交互,但它会默默地保护您所做的几乎所有事情 用数字

每当需要存储敏感的用户数据时,都应该对其进行加密。PCI-DSS等标准规定, 应该在静止时(存储中)和传输时都加密。如果你要处理支付卡的详细信息, 你需要遵守PCI的规定医疗数据也有类似的标准。随着GDPR和加州数据保护等立法的实施, 无论是作为一个消费者还是一个企业,都是非常昂贵和危险的。

不要加密密码,除非你正在做类似密码管理器的事情。密码不应以明文形式存储, 您应该使用哈希来安全地管理它们。

回答下面的问题

SSH代表什么?

解:搜一下就有了

Secure Shell

Web服务器如何证明自己的身份?

提示:稍后再回来讨论这个问题,会有更详细的解释。

解:看上文,会有一个证书做证明

certificate

如果您存储或处理支付卡详细信息,您需要遵守的主要标准是什么?

PCI-DSS

任务4 关键加密数学

在密码学中,有一点数学上的东西经常出现。Modulo运算符几乎每种编程语言都实现了这个操作符,或者通过库提供它。当你需要处理大量的数字时,使用编程语言。Python很适合这一点,因为整数的大小是无限的,你可以很容易地得到一个解释器。

当你第一次学习除法的时候,你可能被教导在你的答案中使用除法。X % Y是 当X除以Y时的余数。

示例

25%5 = 0(5*5 = 25,因此它完全整除,没有余数)

23%6 = 5(23不能被6整除,余数为5)

关于模有一件重要的事情要记住,它是不可逆的。如果我给你一个等式:x % 5 = 4, x的无穷大值都是有效的。

回答下面的问题

30 % 5是什么

解:直接上Python

0

25 % 7是多少

4

什么是118613842 % 9091

3565

任务5 加密类型

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

Symmetric encryption****对称加密使用相同的密钥来加密和解密数据。对称加密的例子是DES(破)和AES。这些算法往往比非对称加密更快,并且使用更小的密钥(AES通常使用128或256位密钥,DES密钥为56位长)。

Asymmetric encryption****非对称加密使用一对密钥,一个用于加密,另一个用于解密。例如RSA和椭圆曲线加密。通常,这些密钥被称为公钥和私钥。用私钥加密的数据可以用公钥解密,反之亦然。你的私钥需要保密,因此得名。非对称加密往往较慢,并使用较大的密钥,例如RSA通常使用2048到4096位密钥。

RSA和椭圆曲线密码学基于不同的数学难题,这给予它们各自的优势。稍后再谈RSA。

回答下面的问题

你应该相信DES吗?Yea/Nay

提示:它仍然被认为是安全的吗?

nay

尝试使DES更安全,以便它可以使用更长时间的结果是什么?

解:搜索得到一个三重DES

Triple DES

是否可以共享您的公钥?Yea/Nay

解:看上文,私钥需要保密

Yea

任务6 RSA - Rivest Shamir Adleman

数学(S)面

RSA是基于计算一个大数字的因数的数学难题。很快的 把两个质数相乘,比如17*23 = 391,但是很难计算出这两个质数 相乘得到14351(113x127作为参考)。

进攻方

RSA背后的数学似乎在CTF中相对频繁地出现,通常需要您计算变量或 破解一些基于它们的加密RSA的维基百科页面一开始看起来很复杂,但是给予你几乎 你需要的所有信息,以完成挑战。

有一些很好的工具可以击败RSA CTF中的挑战,我个人最喜欢的是https://github.com/Ganapati/RsaCtfTool,它运行得非常好 对我来说。我

对于CTF中的RSA,您需要知道的关键变量是p、q、m、n、e、d和c。

“p”和“q”是大素数,“n”是p和q的乘积。

公钥是n和e,私钥是n和d。

“m”用于表示消息(明文),“c”表示密文(加密文本)。

涉及RSA的CTF

Crypto CTF挑战通常会向您提供一组这些值,您需要破解加密, 解密消息以检索标志。

RSA有更多的数学运算,而且很快就变得相当复杂。如果你想学习背后的数学,我建议在此阅读下面的文章

https://muirlandoracle.co.uk/2020/01/29/rsa-encryption/.

回答下面的问题

p = 4391,q = 6659。n是什么?

提示:使用Python!

解:

29239669

我对RSA有足够的了解,可以继续前进,如果我想的话,我知道在哪里可以了解更多。

任务7 使用非对称密码学建立密钥

非对称加密的一个非常常见的用途是交换对称加密的密钥。

非对称加密往往更慢,因此对于HTTPS这样的东西,对称加密更好。

但问题是,如何在不将密钥传输给窥探者的情况下与服务器商定密钥? 明白了吗?

隐喻时间

假设你有一个密码,以及如何使用密码的说明。如果你想让你的朋友 在没有其他人能够阅读它的情况下,你可以做的就是向你的朋友要一把锁。

只有他们有这把锁的钥匙,我们假设你有一个坚不可摧的盒子,你可以用它来锁。

如果你把说明书放在一个锁着的盒子里发给你的朋友,他们可以在收到说明书后打开盒子,阅读说明书。 指令

在那之后,你可以在没有人窥探的风险下用秘密代码进行通信。

在这个比喻中,密码代表对称加密密钥,锁代表服务器的公钥, 密钥,该密钥表示服务器的私钥。

您只使用过一次非对称加密,因此速度很快,而且您现在可以与对称加密进行私下通信。 加密。

真实的世界

在现实中,你需要更多的密码技术来验证你所说的人是谁。 它们是,这是使用数字签名和证书完成的。你可以从这篇优秀的博客文章中找到更多关于HTTPS(一个需要交换密钥的例子)如何工作的细节。

https://robertheaton.com/2014/03/27/how-does-https-actually-work/

回答下面的问题

我理解如何使用公钥(非对称)加密来建立密钥。

任务8 数字签名和证书

什么是数字签名?

数字签名是一种证明文件真实性的方法,可以证明是谁创建或修改了它们。使用 非对称加密,你用你的私钥生成一个签名,它可以用你的公钥验证。 由于只有您可以访问您的私钥,因此这证明您签署了文件。数字签名和物理签名 在英国,签名在法律上具有同等价值。

最简单的数字签名形式是用您的私钥加密文档,然后如果有人 如果你想验证这个签名,他们会用你的公钥解密它,并检查文件是否匹配。

证书-证明你是谁!

证书也是公钥加密的关键用途,与数字签名相关联。 一个常用的地方是HTTPS。如何 你的网络浏览器是否知道你正在与之交谈的服务器tryhackme.com?

答案是证书。网络服务器有一个证书,表明它是真实的tryhackme.com。的 证书有一个信任链,从根CA(证书颁发机构)开始。根CA自动 从安装开始就受到您的设备、操作系统或浏览器的信任。下面的证书是受信任的,因为根CA说它们 相信这个组织。下面的证书是受信任的,因为组织受到根CA的信任, 等等。信任的链条很长。再一次,这篇博客文章比我解释得更好。https://robertheaton.com/2014/03/27/how-does-https-actually-work/

您可以免费使用Let’s Encrypt为您拥有的域获取自己的HTTPS证书。如果你经营一个网站, 那就值得去安排

回答下面的问题

TryHackMe的HTTPS证书是由谁颁发的?

提示:了解如何查看您的首选浏览器。如果你在这个问题上答错了,你可能是被夹在中间,或者是在错误的领域里。答案不是Let’s Encrypt或CloudFlare。

解:直接一步一步找到证书

E1

任务9 SSH验证

加密和 SSH 认证

默认情况下,SSH使用用户名和密码进行身份验证,方法与您登录 物理机器

在某些时候,您这 使用公钥和私钥来证明客户端是服务器上的有效和授权用户。默认情况下,SSH 密钥是RSA密钥。您可以选择生成哪种算法,和/或添加密码来加密SSH密钥。 ssh-keygen是大多数时候用来生成密钥对的程序。

SSH 私钥

您应该像对待密码一样对待您的私有SSH密钥。不要共享它们,它们被称为私钥是有原因的。 如果有人有你的私钥,他们可以用它登录到服务器,除非密钥是 加密了

需要指出的是,解密密钥的密码短语并不用于向 服务器,它所做的就是解密SSH密钥。密码短语永远不会传输,也永远不会离开您的 系统

使用像John the Ripper这样的工具,你可以攻击一个加密的SSH密钥,试图找到密码, 它强调了使用安全密码和保持私钥私密的重要性。

当生成SSH密钥以登录到远程计算机时,您应该在您的计算机上生成密钥,然后复制公钥,因为这意味着私钥 key在目标机器上不存在。对于为访问CTF框而生成的临时密钥,这并不重要。

这些钥匙怎么用?

~/.ssh文件夹是OpenSSH存储这些密钥的默认位置。The authorized_keys(注意美国英语) 拼写)文件保存了允许访问服务器的公钥(如果启用了密钥身份验证)。默认情况下,在许多发行版上,密钥身份验证是启用的,因为它比使用密码进行身份验证更安全。通常,对于root用户,仅启用密钥身份验证。

为了使用SSH私钥,必须正确设置权限,否则SSH客户端将忽略该文件并发出警告。只有所有者才能读取或写入私钥(600或更严格)。ssh -i keyNameGoesHere user@host是如何为标准Linux OpenSSH客户端指定密钥。

使用 SSH 获得更好外壳的钥匙

SSH密钥是“升级”反向shell的一种很好的方法,假设用户已启用登录(通常为www-data 不会,但普通用户和root用户会)。将SSH密钥留在机器上的authorized_keys中可能是一个有用的后门,并且您不需要处理任何不稳定的反向shell(如Control-C)或缺少tab完成的问题。

回答下面的问题

我建议你自己试试。部署一个虚拟机,如 Linux Fundamentals 2 ,并尝试添加SSH密钥并使用私钥登录。

下载附加到此房间的SSH私钥。

密钥使用什么算法?

解:下载任务文件idrsa.id_rsa

先把hash导出到txt中
ssh2john idrsa.id_rsa > rsa_hash.txt
再爆破hash值

RSA

破解密码与约翰开膛手和rockyou,什么是密码的关键?

提示:你需要先使用ssh2john,我建议你先完成CC:Pentesting,如果你正在努力解决这个问题。

delicious

任务10 Diffie Hellman密钥交换

什么是密钥交换?

密钥交换允许两个人/两方建立一组公共密钥,而观察者不能 去拿钥匙一般来说,建立通用的对称密钥。

Diffie Hellman密钥交换是如何工作的?

Alice和Bob想要安全地通话。他们想建立一个公共密钥,这样他们就可以使用对称密码, 但他们不想使用非对称加密的密钥交换。这就是DH Key Exchange的作用。

Alice和Bob都有他们生成的秘密,我们称之为A和B。他们也有一些共同的材料 这是公开的,我们称之为C

我们需要做一些假设。首先,无论何时我们将联合收割机的秘密/材料结合起来, 很难分开。其次,它们组合的顺序并不重要。

Alice和Bob将联合收割机将他们的秘密与共同的材料相结合,形成AC和BC。然后他们会把这些 然后联合收割机将其与它们的秘密组合成两个相同的密钥,都是ABC。现在他们可以用这把钥匙 communicate.

额外资源

一个很好的视频,如果你想要一个视觉解释是可用的。https://www.youtube.com/watch? v=NmM9HA2MQGI

DH密钥交换通常与RSA公钥密码术一起使用,以证明您要访问的人的身份。 与数字签名交谈。这可以防止有人使用中间人攻击来攻击连接 假装是鲍勃

回答下面的问题

我理解Diffie Hellman密钥交换在基本层面上是如何工作的

任务11 PGP、GPG和AES

什么是PGP?

PGP是Pretty Good Privacy的缩写。这是一个软件,它实现了加密, 加密文件、执行数字签名等等。

什么是GPG?

GnuPG或GPG是来自GNU项目的PGP的开源实现。您可能需要使用GPG来解密文件 在CTF中。使用PGP/GPG,私钥可以用类似于SSH私钥的方式使用密码短语进行保护。如果密钥受密码保护,则可以 尝试使用John The Ripper和gpg 2 john破解此密码。此任务中提供的密钥不受密码保护。

GPG的手册页可以在这里找到。

AES呢?

AES,有时也被称为Rijndael,代表高级加密标准。是个替代品 DES有短密钥和其他密码缺陷。

AES和DES都对数据块进行操作(块是 固定大小的比特序列)。

AES很难解释,而且似乎不经常出现。如果你想 了解它是如何工作的,这里有一个来自Computerphile的优秀视频

https://www.youtube.com/watch?v=O4xNJsjtN6E

回答下面的问题

是时候尝试GPG了。下载附件中的存档并将其解压缩到合理的地方。

你有私钥,还有一个用公钥加密的文件。解密文件。密语是什么?

提示:导入密钥gpg --help。然后解密文件。你不需要破解任何东西。

解:下载任务文件gpg.zip,解压后有两个文件

当前知道密钥了,密钥就是tryhackme.key,导入密钥是import

成功导入私钥

然后我们来解密gpg文件,解密后会生成一个message文件,读取一下message得到密码

Pineapple

任务12 未来-量子计算机和加密

量子计算机将很快成为许多类型加密的问题。

非对称与量子

虽然在2030年之前我们不太可能拥有足够强大的量子计算机,但一旦这些计算机存在, 使用RSA或椭圆曲线密码的加密将非常快地被破解。这是因为量子 计算机可以非常有效地解决这些算法所依赖的数学问题。

AES/DES和Quantum

在不久的将来,128位密钥的AES也有可能被量子计算机破解,但256位AES无法破解。 很容易被打破。三重DES也容易受到量子计算机的攻击。

目前的建议

NSA建议使用RSA-3072或更好的非对称加密和AES-256或更好的对称加密。 加密。目前有几个量子安全加密算法的竞赛, 在量子计算机对RSA和AES构成威胁之前,我们可能会有一个新的加密标准。

了解更多关于量子计算机和密码学

如果您 以及目前提出的解决方案。

https://doi.org/10.6028/NIST.IR.8105

我还推荐罗杰·A·伯杰的《密码学启示录》。这是我对量子计算和量子安全密码学的介绍。

回答下面的问题

我知道量子计算机会影响加密的未来。如果我想了解更多,我知道去哪里找。