信息安全概论———密码学基础

密码学基础定义

密码学: 主要针对数据安全的一种信息安全的核心技术。分为密码编码学和密码分析学。

相关定义:
明文(消息)(M)——加密(E)——>密文(C)——解密(D)——>明文(M)。
发送方——————>信道——————>接收方
密钥(K)包括对称密钥和非对称密钥(公开密钥)两种,根据加解密密钥是否相同区分。
有效的加解密的前提是密钥空间K足够大,无法穷举密钥搜索。

密码分类:
(1)古典密码:一般方法为文字替换,包括单标替换密码,多表替代密码,轮转密码等。
(2)对称密钥(单密钥):加解密使用相同密钥。
(3)公开密钥(非对称密钥):加解密密钥不同,往往其中一个密钥会公开。

古典密码:
(1)简单替换密码(单表替换密码)
1.移位密码(凯撒密码):
加密E(m)=(m+k)%q;
解密D(c)=(c-k)%q;
2.乘数密码:
加密E(m)=(m*k)%q;(gcd(k,q)==1,以满足一一映射)
解密D(c)=(k^(-1)*c)%q,使用的k不是一个,而是加密时k的模q的乘法逆元(扩展欧几里得算法,可以求得a mod b的乘法逆元,即k^(-1)*k mod q =1,欧几里得算法求a,b的最大公约数,公式为gcd(a,b)=gcd(a mod b ,b))
3.仿射密码(移位与乘数的结合)
加密E(m)=(k1+k2*m) mod q;
解密D(c)=(k2^(-1)*(c-k1))%q

缺点: 基于统计的密码分析,单表的一一映射关系,会导致密码分析者如果知道明文的特点规律,如频次等,就可以利用这个特点,进行匹配,在密文信息足够长的情况下,是很有效的破解办法。

(2)多表替代密码(弥补了单表一一映射的缺点,可以隐藏字母的频次)
一般使用周期多表替代密码,即表个数有限,会循环利用。每次加密使用的是不同的表对应的加密方式,使用哪一个表是有顺序的。
如维吉尼亚(vigenere)密码:在移位基础上,添加了多表机制。
E(m)=C1C2C3C4…..CN,其中Ci=(mi+ki)%q;

对称加密密钥:加密的算法是公开的,而关键在于密钥(虽然几乎所有加密都是这样。。),密钥的传递一定要是安全信道传递。

根据密钥的作用可以分为,分组密码和序列密码;前者是使用同一密钥和算法来直接对所有组的明文进行加密。后者是用密钥来使用伪随机数发生器来产生密钥流,而实际用来加解密的是该密钥流,多用于军事,外交等要求比较高的场合。

重要的对称密码实例:DES(DATA Encryption Standard 数据加密标准)
(1)简化版(函数相对简单):
输入:8位明文,10位密钥
输出:8位密文

密钥的使用:
(1)输入的10位密钥首先经过置换函数P10,变换位置顺序。
(2)将前5位和后5位分别使用循环左移函数LS,左移一位,得到KL,KR。
(3.1)KL与KR合并后使用P8置换,取前8位产生一个子密钥K1。
(3.2)KL和KR各自循环左移2位,之后合并,使用P8置换,取前8位产生一个子密钥K2。

加密过程:
(1)首先是IP置换(初始置换)
(2)之后将8位分为左右两部分ml,mr,对mr送入F中进行一系列操作,包括先在扩展函数E/P函数中将4位变成8位mrep,之后使用mrep与K1异或(密钥在这里使用),将结果分为左右两部分4位数mrl和mrr,将mrl使用s0盒(一个4元矩阵),mrr使用s1盒。
(3)s盒使用的方式为,将mrl的第1,4位组成一个二进制数,为i,2,3位组成一个二进制数,为j。使用(i,j)在矩阵中找到对应的数,矩阵中是从0到3的十进制数,可转变为一个两位的二进制数。对于两个盒子的输出合在一起,就构成了一个4位数,再进行P4置换,作为F函数体的输出。
(4)该输出与2中的ml按位异或,再与mr合并成一个8位的数。
(5)之后将该8位数左右4位置换(SW),之后重复(2)(3)(4),得到8位数,注意使用的密钥变为了K2。
(6)最后,使用第一步的IP的逆置换IP-1,得到最终的密文。

解密过程:与加密的流程正好相反即可。

(2)实际DES:
使用64位为一组的分组加密算法,密钥长度也为64位,其中8位校验,56位为有效位。 进行16轮fk的计算,每轮都会使用一个48位的子秘钥。所以DES的破解难度主要是一样靠设计的复杂性和数据长度大来保证的。

公开密钥密码:往往公钥和密钥同时产生,之后会把公钥公开。

Diffie-Hellman函数:
(1)原根:素数p的原根a是指a的1到p-1次方mod p是对1到p-1的一个排列。
(2)离散对数:给定一个整数b和一个素数p及其原根a,其满足b = a^i (mod p)的对数i
(3)DH密钥交换算法:基于有限域中计算离散对数的困难性。

  • 有公开的大素数p及其原根g
  • A,B各自选取一个< p的数 a,b,使用它计算g^a mod p的结果Y1,Y2
  • 交换自己的结果,利用对方的结果Y2做底数,自己选取的原来的数a做指数,再mod p
  • 这样得到的余K就是同一个,相当于都是g^(a*b),而交换的只是Y1,Y2,就算有人得到了,也无法得到K值。这样就相当于成功形成了两个人的密钥,但是仍然是单密钥。

  • RSA密钥:
    (1)欧拉函数f(n):小于n且和n互质的数的个数。f(1)=1;
    (2)若n能分解为两个质数p,q,f(n)= (p-1)(q-1).
    (3)过程:
    • 使用互异的素数p,q,求得n=pq;求得f(n)=(p-1)(q-1);
    • 选择于f(n)互质的数e,一般较小,为加密指数。
    • 计算e在mod f(n)的乘法逆元d,为解密指数。
    • 加解密使用信息为底数,对应加解密指数做指数,mod n即可得到对应结果。
    • 这样e,n是公开的,而d,p,q是秘密的,重点是d使用f(n),f(n)可以用p,q直接计算,也可以用n,p,q间接计算,但是没有p,q,只有n是无法计算的。虽然n与p,q 直接有关,但是这里存在一个大整数因子分解难问题,所以只要p,q不公开,就很难得到密钥。

消息认证(不是身份认证)

目的:
确保消息不会被篡改,保证消息完整性。包括内容,顺序,时间的修改和消息的否认。

方法:消息认证符(MAC或直接加密),消息编码。

认证函数:
(1)加密函数:除了有加密的功能,还有一定认证功能。这是由于相信密钥只有特定的人有,所以能加密有效消息或者得到有效消息的人就是拥有密钥的特定人群。加密成为签名,解密称为认证。
(2)MAC:使用事先约定的秘密规则,根据消息,生成一个短数据块儿MAC,之后附加在消息中。接收者得到消息后,对消息同样进行MAC生成,比对接收到的MAC,就对消息的完整性进行验证。可以使一种基于加密的,但是只是对一部分进行加密,或者说只是对特征信息进行加密。也可以是一种消息摘要,如单向散列计算,即使得到了这个散列值,也无法伪造出另一个散列值相同的消息(散列函数的弱无碰撞性),或者根本就没有两个消息有相同的签名(强无碰撞性)。

消息编码:
对消息直接进行重新编码,即制定一个秘密的编码规则,使得有某些特定序列有特定含义,而另一些看似可用的系列或编码,使之成为禁用编码。篡改者使用了这些禁用编码,就很容易被检测。

散列安全长度:对于N位散列值,可能发生一次碰撞的测试次数是2^(n/2),而非2^n.

数字签名:是用来验证发送者身份的一种机制,现在大多数的思路都是公钥加密技术,是在mac的思路上,对mac消息,增加了一种公钥机制,发送者对使用哈希函数得到的签名,使用私钥加密,接收方使用公钥解密,得到签名,对信息哈希,比对判断身份。这主要是用户发送方面向全体用户的一种自我证明的方式,和签字一样,看到这个签名就可以判断,因为只有有私钥的人加的密,才能用其公钥解开。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值