20201217学习日记---cryto

作为入门的ctf玩家,需要懂得常用的密码。

说到密码,很多人会把MD5、base64等混淆在一起(包括我之前也会把md5称为“密码”)。其实严格区分起来,应该是:

  • 加密(encipher/decipher):加密传输信息,保证信息安全性,通过密钥和密文可以还原原始信息
  • 编码(encode/decode):将数据转化成某种固定格式的编码信息,方便不同系统间的传输,通过解码编码信息可以得到原始信息。
  • 散列(hash):也叫摘要或哈希,验证信息的完整性,不能通过哈希值还原原始信息。

比起系统学习各种密码(编码),更多的应该是在做题、项目中习得,比方说url编码、base64编码等就经常会被使用。

编码

常见的编码:ASCII(美国信息交换标准代码)、Base64、URL编码、HTML编码、Unicode编码、UTF-8、莫斯电码、二维码

  • ASCII
    (American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。ASCII码表
  • Base64
    一般可以用来处理在HTTP环境下传递较长的标识信息
  • URL编码
    这个是非常常见的 不能漏掉(相当于一种规范)
  • Unicode
    Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
    (其实一直对Unicode 、 gbk 、utf-8 不理解,直到我看到了这个)传送门
    Unicode:OSI指定的编码标准;
    GBK:Chinese Internal Code Specification 汉字内码扩展规范
    UTF-8:一种针对Unicode的一种可变长度字符编码
  • 其他编码
    其实编码给我的感觉就是:无密码的密码
    剩下的还有诸如莫斯电码(不同网站出来的结果会不一样)、二维码这些。

加密

加密常规一般可以分为,对称性加密目前研究已经相对充分,而非对称性加密还有很长的路需要走。

  • 对称性加密(symmetrical encryption)
  • 非对称性加密(Asymmetric encryption)

对称性加密

“对称密钥”的加密算法主要有DES、TripleDES、RC2、RC4、RC5和Blowfish等。
以上的加密算法基本准寻以下算法特征:

  1. 加密方和解密方使用同一个密钥;
  2. 加密解密的速度比较快,适合数据比较长时的使用;
  3. 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

非对称加密

对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)
非对称性加密一般有:RSA、DSA、ECDSA。

说到非对称性加密 那就不得不说RSA了。

RSA

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
找了挺多的体制解释,比较好的是这个传送门
梳理了一下思路 大概上就分为四个步骤。

  1. 选取素数n
  2. 选取大整数e
  3. 确定密钥d
  4. 公开n和e保存d
    当然具体过程并没有那么简单。
    而如果要破解此加密的关键就是选取的大素数n无法被分解(目前仅能分解到2048位)
    但是

2020年12月4日,中国科学技术大学宣布该校潘建伟等人成功构建76个光子的量子计算机九章
当然,要对付量子计算机,会有专门的量子密码(仅了解,虽然我也不懂具体是啥)
诚然,从来就没有绝对的安全。安全都是相对的。

其他非对称性加密

对称性加密最经典的、以及最常见常用的应该是RSA。公钥密码体制采用的加密密钥(公开钥)和解密密钥(秘密钥)是不同的。由于加密密钥是公开的,密钥的分配和管理就很简单,而且能够很容易地实现数字签名,因此最适合于电子商务应用的需要。
其主要的优点是:
(1)密钥分配简单。
(2)密钥的保存量少。
(3)可以满足互不相识的人之间进行私人谈话时的保密性要求。
(4)可以完成数字签名和数字鉴别。
但在实际应用中,公钥密码体制并没有完全取代私钥密码体制,这是因为公钥密码体制在应用中存在以下几个缺点:
(1)公钥密码是对大数进行操作,计算量特别浩大,速度远比不上私钥密码体制。
(2)公钥密码中要将相当一部分密码信息予以公布,势必对系统产生影响。
(3)在公钥密码中,若公钥文件被更改,则公钥被攻破。
(摘自百度百科)

哈希

常见摘要:MD5、SHA1(主要适用于数字签名标准DSS里面定义的数字签名算法)
无论多长的一段数据经过MD5之后都会变成指定的长度。
把MD5称为“加密”应当是不准确的,MD(Message-Digest Algorithm)信息摘要算法
最直观的应该是MD5不可逆(虽然有很多声称MD5破解的网站)
有MD5,也有MD4,MD2等。
目前没有软件能有效地破解 MD5。大多数时候只是把常见字符串的 MD5 存了起来为彩虹表,然后直接反查。
所谓”破解“的网站无非就是存了大量的可能密码。
比如 https://cmd5.com/

写在后面

CTF基本上看不懂的文字上面大都已经涵盖(可能只是小部分),在实战中(听说)还会出现诸如彩虹密码等新型密码,这就得看造化(yun qi)了。