网络攻防古典密码传统知识的简单介绍

hacker|
187

古典密码两种加密方式

古典加密算法:置换密码

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack

begins

at

five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:

a

t

t

a

c

k

b

e

g

i

n

s

a

t

f

i

v

e

根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:

1

2

3

4

5

6

f

=

1

4

5

3

2

6

根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式:

a

a

c

t

t

k

b

i

n

g

e

s

a

i

v

f

t

e

从而得到密文:aacttkbingesaivfte

古典密码安全算法有哪些?

世界上最早的一种密码产生于公元前两世纪。是由一位希腊人提出的,人们称之为

棋盘密码,原因为该密码将26个字母放在5×5的方格里,i,j放在一个格子里,具体情

况如下表所示

1 2 3 4 5

1 a b c d e

2 f g h i,j k

3 l m n o p

4 q r s t u

5 v w x y z

这样,每个字母就对应了由两个数构成的字符αβ,α是该字母所在行的标号,β是列

标号。如c对应13,s对应43等。如果接收到密文为

43 15 13 45 42 15 32 15 43 43 11 22 15

则对应的明文即为secure message。

另一种具有代表性的密码是凯撒密码。它是将英文字母向前推移k位。如k=5,则密

文字母与明文与如下对应关系

a b c d e f g h i j k l m n o p q r s t u v w x y z

F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

于是对应于明文secure message,可得密文为XJHZWJRJXXFLJ。此时,k就是密钥。为了

传送方便,可以将26个字母一一对应于从0到25的26个整数。如a对1,b对2,……,y对

25,z对0。这样凯撒加密变换实际就是一个同余式

c≡m+k mod 26

其中m是明文字母对应的数,c是与明文对应的密文的数。

随后,为了提高凯撒密码的安全性,人们对凯撒密码进行了改进。选取k,b作为两

个参数,其中要求k与26互素,明文与密文的对应规则为

c≡km+b mod 26

可以看出,k=1就是前面提到的凯撒密码。于是这种加密变换是凯撒野加密变换的

推广,并且其保密程度也比凯撒密码高。

以上介绍的密码体制都属于单表置换。意思是一个明文字母对应的密文字母是确定

的。根据这个特点,利用频率分析可以对这样的密码体制进行有效的攻击。方法是在大

量的书籍、报刊和文章中,统计各个字母出现的频率。例如,e出现的次数最多,其次

是t,a,o,I等等。破译者通过对密文中各字母出现频率的分析,结合自然语言的字母频

率特征,就可以将该密码体制破译。

鉴于单表置换密码体制具有这样的攻击弱点,人们自然就会想办法对其进行改进,

来弥补这个弱点,增加抗攻击能力。法国密码学家维吉尼亚于1586年提出一个种多表式

密码,即一个明文字母可以表示成多个密文字母。其原理是这样的:给出密钥

K=k[1]k[2]…k[n],若明文为M=m[1]m[2]…m[n],则对应的密文为C=c[1]c[2]…c[n]。

其中C[i]=(m[i]+k[i]) mod 26。例如,若明文M为data security,密钥k=best,将明

文分解为长为4的序列data security,对每4个字母,用k=best加密后得密文为

C=EELT TIUN SMLR

从中可以看出,当K为一个字母时,就是凯撒密码。而且容易看出,K越长,保密程

度就越高。显然这样的密码体制比单表置换密码体制具有更强的抗攻击能力,而且其加

密、解密均可用所谓的维吉尼亚方阵来进行,从而在操作上简单易行。该密码可用所谓

的维吉尼亚方阵来进行,从而在操作上简单易行。该密码曾被认为是三百年内破译不了

的密码,因而这种密码在今天仍被使用着。

古典密码的发展已有悠久的历史了。尽管这些密码大都比较简单,但它在今天仍有

其参考价值。

古典密码包括两大类

1.古典密码编码方法归根结底主要有两种,即替换密码和置换密码。

(1)一种是将明文字符替换成一些其他的字符,形成密文,称“替换密码”。其本质:不变的是字符的位置,变化的是字符。

(2)一种是将原有的明文字符的顺序打乱,形成密文,称“(位)置(变)换密码”。其本质:不变的是字符本身,变化的是位置。

2.替换密码:

(1)凯撒密码

基本思路:将明文中的字符移动一定的位数(k)来实现加密和解密,也就是明文中的所有字符都在字符表上进行k偏移,形成密文。

(2) 乘法密码:

基本思路:使用采样的方式进行加密,将明文字符串的每个字符,每隔k位算出字符并排列起来形成密文。

(3)仿射密码:

基本思路:明文中所有字符按照(ax + b)mod 26进行计算,得到密文。

(4)维吉尼亚密码:

基本思路:使用字符串作为密钥,并把密钥与明文进行对应,依次重复密钥,直至与明文的长度相同。

3.置换密码:

(1)栅栏密码

基本思路:先将明文中的字符分成N个一组,再将每组的第1个字符组合,每组的第2个字符组合,依次类推,直到第N个字符组合,最后再将所有字符全部连接起来,形成密文。这里N称为栏。

古典密码和网络安全之间的关系

古典密码技术是传统加密技术之一,是保护网络安全的一种技术。

同时古典密码作为密码学的基础,是保证信息和信息系统能够安全运行的防护性行为。

古典密码包括两个基本操作:代换技术和置换技术。

密码学知识精粹

① 替换法

替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。

替换法有单表替换和多表替换两种形式。

② 移位法

移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。

例如约定好向后移动2位(abcde - cdefg),这样 bee 单词就变换成了dgg。

古典密码破解方式--频率分析法

古典密码的安全性受到了威胁,外加使用便利性较低,到了工业化时代,近现代密码被广泛应用。

恩尼格玛机

恩尼格玛机是二战时期纳粹德国使用的加密机器,其使用的加密方式本质上还是移位和替代,后被英国破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。

① 散列函数加密(消息摘要,数字摘要)

散列函数,也见杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。

MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值

SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值

特点:消息摘要(Message Digest)又称为数字摘要(Digital Digest)

它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生

使用数字摘要生成的值是不可以篡改的,为了保证文件或者值的安全

MD5算法 : 摘要结果16个字节, 转16进制后32个字节

SHA1算法 : 摘要结果20个字节, 转16进制后40个字节

SHA256算法 : 摘要结果32个字节, 转16进制后64个字节

SHA512算法 : 摘要结果64个字节, 转16进制后128个字节

② 对称加密

对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。

例如原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密……最后拼接成密文;块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。前文提到的古典密码学加密方法,都属于流加密。

示例

我们现在有一个原文3要发送给B

设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B

B拿到密文324后, 使用324/108 = 3 得到原文

常见加密算法

DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

特点

加密速度快, 可以加密大文件

密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露

加密后编码表找不到对应字符, 出现乱码,故一般结合Base64使用

加密模式

ECB : Electronic codebook, 电子密码本. 需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密

优点 : 可以并行处理数据

缺点 : 同样的原文生成同样的密文, 不能很好的保护数据

CBC : Cipher-block chaining, 密码块链接. 每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块

优点 : 同样的原文生成的密文不一样

缺点 : 串行处理数据

填充模式:当需要按块处理的数据, 数据长度不符合块处理需求时, 按照一定的方法填充满块长的规则

NoPadding不填充.

对应的AES加密类似,但是如果使用的是AES加密,那么密钥必须是16个字节。

加密模式和填充模式:

AES/CBC/NoPadding (128)

AES/CBC/PKCS5Padding (128)

AES/ECB/NoPadding (128)

AES/ECB/PKCS5Padding (128)

DES/CBC/NoPadding (56)

DES/CBC/PKCS5Padding (56)

DES/ECB/NoPadding (56)

DES/ECB/PKCS5Padding (56)

DESede/CBC/NoPadding (168)

DESede/CBC/PKCS5Padding (168)

DESede/ECB/NoPadding (168)

DESede/ECB/PKCS5Padding (168)

RSA/ECB/PKCS1Padding (1024, 2048)

RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)

RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)

PS: Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一

可读性编码算法不是为了保护数据的安全性,而是为了可读性

可读性编码不改变信息内容,只改变信息内容的表现形式

所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”

Base64 算法原理:base64 是 3个字节为一组,一个字节 8位,一共 就是24位 ,然后,把3个字节转成4组,每组6位(3 * 8 = 4 * 6 = 24),每组缺少的2位会在高位进行补0 ,这样做的好处在于 base取的是后面6位而去掉高2位 ,那么base64的取值就可以控制在0-63位了,所以就叫base64,111 111 = 32 + 16 + 8 + 4 + 2 + 1 =

toString()与new String ()用法区别

③ 非对称加密

非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。

特点:

加密和解密使用不同的密钥

如果使用私钥加密, 只能使用公钥解密

如果使用公钥加密, 只能使用私钥解密

处理数据的速度较慢, 因为安全级别高

常见算法:RSA,ECC

数字签名

数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改),是非对称加密和消息摘要的应用

keytool工具使用

keytool工具路径:C:\Program Files\Java\jre1.8.0_91\bin

--- END

0条大神的评论

发表评论