type
status
date
slug
summary
tags
category
icon
password
notion image

前言:

应用程序中有许多数据需要加密,例如数据传输过程中的数据加密、密码的存储和验证、序列号的验证。而在密码学中已有许多成熟的加密算法,在逆向程序时,如果对加密算法有了解,就可以更快地编写出注册机。

简介:

加密技术,作为密码学中的重要组成部分,主要包括对称加密和非对称加密两种方式。
对称加密算法的主要特点是在加密和解密过程中使用的是同一把密钥。这类算法可以进一步分为两种类型:分组加密和流加密。
  1. 分组密码,又称块加密,它是按照固定大小的组来加密明文。具体过程是,将明文切分为定长的块,每一块明文通过加密运算转化为对应的密文块。反过来,这些密文块经过解密运算(即加密运算的逆运算),可以还原成原始的明文块。这种方式在现代对称加密算法中使用广泛,例如数据加密标准(DES)和高级加密标准(AES)。
  1. 流加密(Stream Cyphers),又被称为序列密码,它是一次对明文的一个位进行加密。具体来说,序列密码使用一段较短的密钥(或称为制乱元素)生成一个长的伪随机位流,这个位流用于加密明文的位流,通常通过异或运算实现。
非对称加密的核心概念是,加密和解密使用的是两把不同的密钥,这两个密钥是数学相关联但是不能相互推导的。公钥是可以公开的,用于加密信息,而私钥则需要保密,用于解密信息。任何人都可以使用公钥加密信息,但只有拥有私钥的接收者才能解密这些信息。非对称加密主要包括两种算法:RSA算法和椭圆曲线密码算法(ECC)。
本文将主要从对称与非对称这两大类加密算法进行加密原理的分析,以及解密思路的阐述。
上图是常见的一些加密算法分类,其中古典密码主要是在一些CTF赛事上会遇到,实际使用古典密码的情况并不常见,下面主要分析分组加密、流密码、非对称加密、单向散列算法的密码学原理和逆向方法。

一、对称加密:

这里将对称密码分为:古典密码、分组密码、序列密码进行分别阐述:

1.古典密码:

古典密码是密码学的起源,主要分为移位密码和替换密码。在移位密码中,明文中的字母按照一定的规则移位,产生密文。而在替换密码中,明文中的每个字母都被另一个字母替换,比如凯撒密码就是一种替换密码。这些密码的加密和解密过程使用的是同一个密钥,因此它们也可以看作是对称加密的一种。
  1. 移位密码:
    1. 移位密码
  1. 替换密码:
    1. 移位密码仅仅是用不同的方式对明文进行排序,并没有对内容进行改变。而替代密码是先建立一个替换表,加密时通过查表的方式将明文替换成表中相应的密文。
      如果替换表只有一个称之为单表替换密码,如果替换表有多个,依次使用,则称为多表替代密码
      替换密码

2.分组密码:

分组密码是将明文消息编码表示后的数字序列,划分成长度为n的组,每组分别在密钥的控制下变换成等长的密文。其实和替换是一个意思,只是替换是单个字符替换成单个字符,分组密码是一块换一块。
在介绍分组加密算法之前需要先了解加密算法的工作模式。首先为什么会存在加密模式这个概念呢,因为简单地使用基本的分组密码有一些安全问题。例如,如果你用相同的密钥加密两个相同的数据块,那么你会得到两个相同的密文块。这可以让攻击者发现数据的加密算法,从而危害安全性。密码学中,分组密码的工作模式允许使用同一个分组密码密钥对多于一块的数据进行加密,在加密过程中引入了IV(初始化向量)或计数器的概念,以此来进一步保证数据的安全。 分组密码的工作模式主要有:分组加密模式(ECB模式)、电子代码本模式(CBC模式)、计数器模式(CTR模式)和输出反馈模式(OFB模式)。其中ECB模式是最常用的模式,它简单易用,但是存在着明文攻击的风险。CBC模式和CTR模式则可以有效防止明文攻击,但是比ECB模式费时费力。OFB模式则是用到了流密码的思想,它可以有效防止密码泄露。

3.序列密码(流密码):

分组密码通常是按固定规模将明文分组,对每组均使用一个固定的加密变换来进行运算。而流密码不同,它的特点是一次加密和解密一个数据位,比如一个字节或一个比特。这与分组密码(如AES和DES)形成了对比。
流密码的工作原理通常是生成一个“密钥流”,这个密钥流的长度等于明文的长度,然后将明文和密钥流进行异或操作得到密文。解密的过程也是类似,将密文和同样的密钥流进行异或操作就可以恢复出明文。流密码的安全性主要依赖于密钥流的随机性:理想情况下,密钥流应该是完全随机的,并且每次使用不同的密钥流。
生成密钥流的方法有很多,其中最常见的一种是使用伪随机数生成器。伪随机数生成器可以根据一个较小的随机“种子”(也就是密钥)生成一个长的看起来随机的序列。伪随机数生成器的设计是流密码安全性的关键部分,因为如果密钥流的随机性不够好,那么攻击者就可能通过分析密文破解密码。
这里简单介绍一下伪随机数的生成方式,以及各种随机数的攻击方式:
🕵️‍♂️
伪随机数分析
RC4是比较有名的的流密码算法,这里对其原理分析:
🕵️‍♂️
RC4加密算法分析

二、非对称加密算法:

非对称加密,也被称为公钥加密,是一种在加密和解密过程中使用不同密钥的密码学技术。在非对称加密中,通常会有一对密钥,公钥和私钥,它们是密切相关的。公钥用于加密数据,而对应的私钥用于解密数据。
非对称加密的一个主要优点是它能够解决密钥分发的问题,这是在对称加密中常见的问题。在对称加密中,加密和解密都使用同一个密钥,这个密钥必须在双方之间安全地共享,否则通信的安全性就不能得到保证。但是,在非对称加密中,公钥可以公开分享,而私钥保持机密。因此,任何人都可以使用公钥加密数据,但只有拥有私钥的人才能解密数据。
非对称加密算法

补充:其他算法分析

 
 
JS逆向技巧与实战RFID技术浅析