aw4ker2024-07-08文章来源:SecHub网络安全社区
介绍加密,作为密码学系列的一部分
注意:本课程要求您熟悉工具,并研究如何自己使用它们!
其中许多关键术语都与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卡,比如银行卡,门禁卡,身份证等,里面有密码芯片。安全性比较高。
密码学是用来保护机密性、保证完整性、保证真实性的。你每隔一段时间 很有可能是今天,而且你几乎肯定是通过加密连接阅读这篇文章的。
登录TryHackMe时,您的凭据已发送到服务器。这些是加密的,否则有人 就能通过监听你的连接来捕捉他们
当您连接到SSH时,您的客户端和服务器会建立一个加密的隧道,这样就没有人可以窥探您的 上网时段
当你连接到你的银行时,会有一个证书,它使用加密技术来证明它实际上是你的银行 而不是黑客
当你下载一个文件时,你如何检查它是否下载正确?您可以在这里使用加密来验证 数据的校验和。
您很少需要直接与密码学进行交互,但它会默默地保护您所做的几乎所有事情 用数字
每当需要存储敏感的用户数据时,都应该对其进行加密。PCI-DSS等标准规定, 应该在静止时(存储中)和传输时都加密。如果你要处理支付卡的详细信息, 你需要遵守PCI的规定医疗数据也有类似的标准。随着GDPR和加州数据保护等立法的实施, 无论是作为一个消费者还是一个企业,都是非常昂贵和危险的。
不要加密密码,除非你正在做类似密码管理器的事情。密码不应以明文形式存储, 您应该使用哈希来安全地管理它们。
SSH代表什么?
解:搜一下就有了
Secure Shell
Web服务器如何证明自己的身份?
提示:稍后再回来讨论这个问题,会有更详细的解释。
解:看上文,会有一个证书做证明
certificate
如果您存储或处理支付卡详细信息,您需要遵守的主要标准是什么?
PCI-DSS
在密码学中,有一点数学上的东西经常出现。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
加密的两个主要类别是对称和非对称。
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
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”表示密文(加密文本)。
Crypto CTF挑战通常会向您提供一组这些值,您需要破解加密, 解密消息以检索标志。
RSA有更多的数学运算,而且很快就变得相当复杂。如果你想学习背后的数学,我建议在此阅读下面的文章
https://muirlandoracle.co.uk/2020/01/29/rsa-encryption/.
p = 4391,q = 6659。n是什么?
提示:使用Python!
解:
29239669
我对RSA有足够的了解,可以继续前进,如果我想的话,我知道在哪里可以了解更多。
非对称加密的一个非常常见的用途是交换对称加密的密钥。
非对称加密往往更慢,因此对于HTTPS这样的东西,对称加密更好。
但问题是,如何在不将密钥传输给窥探者的情况下与服务器商定密钥? 明白了吗?
假设你有一个密码,以及如何使用密码的说明。如果你想让你的朋友 在没有其他人能够阅读它的情况下,你可以做的就是向你的朋友要一把锁。
只有他们有这把锁的钥匙,我们假设你有一个坚不可摧的盒子,你可以用它来锁。
如果你把说明书放在一个锁着的盒子里发给你的朋友,他们可以在收到说明书后打开盒子,阅读说明书。 指令
在那之后,你可以在没有人窥探的风险下用秘密代码进行通信。
在这个比喻中,密码代表对称加密密钥,锁代表服务器的公钥, 密钥,该密钥表示服务器的私钥。
您只使用过一次非对称加密,因此速度很快,而且您现在可以与对称加密进行私下通信。 加密。
在现实中,你需要更多的密码技术来验证你所说的人是谁。 它们是,这是使用数字签名和证书完成的。你可以从这篇优秀的博客文章中找到更多关于HTTPS(一个需要交换密钥的例子)如何工作的细节。
https://robertheaton.com/2014/03/27/how-does-https-actually-work/
我理解如何使用公钥(非对称)加密来建立密钥。
数字签名是一种证明文件真实性的方法,可以证明是谁创建或修改了它们。使用 非对称加密,你用你的私钥生成一个签名,它可以用你的公钥验证。 由于只有您可以访问您的私钥,因此这证明您签署了文件。数字签名和物理签名 在英国,签名在法律上具有同等价值。
最简单的数字签名形式是用您的私钥加密文档,然后如果有人 如果你想验证这个签名,他们会用你的公钥解密它,并检查文件是否匹配。
证书也是公钥加密的关键用途,与数字签名相关联。 一个常用的地方是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
默认情况下,SSH使用用户名和密码进行身份验证,方法与您登录 物理机器
在某些时候,您这 使用公钥和私钥来证明客户端是服务器上的有效和授权用户。默认情况下,SSH 密钥是RSA密钥。您可以选择生成哪种算法,和/或添加密码来加密SSH密钥。 ssh-keygen
是大多数时候用来生成密钥对的程序。
您应该像对待密码一样对待您的私有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密钥是“升级”反向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
密钥交换允许两个人/两方建立一组公共密钥,而观察者不能 去拿钥匙一般来说,建立通用的对称密钥。
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密钥交换在基本层面上是如何工作的
PGP是Pretty Good Privacy的缩写。这是一个软件,它实现了加密, 加密文件、执行数字签名等等。
GnuPG或GPG是来自GNU项目的PGP的开源实现。您可能需要使用GPG来解密文件 在CTF中。使用PGP/GPG,私钥可以用类似于SSH私钥的方式使用密码短语进行保护。如果密钥受密码保护,则可以 尝试使用John The Ripper和gpg 2 john破解此密码。此任务中提供的密钥不受密码保护。
GPG的手册页可以在这里找到。
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
量子计算机将很快成为许多类型加密的问题。
虽然在2030年之前我们不太可能拥有足够强大的量子计算机,但一旦这些计算机存在, 使用RSA或椭圆曲线密码的加密将非常快地被破解。这是因为量子 计算机可以非常有效地解决这些算法所依赖的数学问题。
在不久的将来,128位密钥的AES也有可能被量子计算机破解,但256位AES无法破解。 很容易被打破。三重DES也容易受到量子计算机的攻击。
NSA建议使用RSA-3072或更好的非对称加密和AES-256或更好的对称加密。 加密。目前有几个量子安全加密算法的竞赛, 在量子计算机对RSA和AES构成威胁之前,我们可能会有一个新的加密标准。
如果您 以及目前提出的解决方案。
https://doi.org/10.6028/NIST.IR.8105
我还推荐罗杰·A·伯杰的《密码学启示录》。这是我对量子计算和量子安全密码学的介绍。
我知道量子计算机会影响加密的未来。如果我想了解更多,我知道去哪里找。