密码学

密码学

密码学


发展

    1949年Shanon发表《保密系统的信息理论》

    1976年Diffie和Hellman发表《密码学新方向》

 

加密技术通常分为两大类:对称式,非对称式。
对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”。
非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。


 

所有的传统密码算法都是私钥密码。

对称密码安全的两个必备条件:加密算法必须是足够强的;唯有发送者和接收者知道的秘密密钥。

密码编码学:运算类型-代换与置换;所用的密钥数-单钥与双钥;处理明文的方法-分组密码与流密码。

攻击的一般方法:密码分析学,穷举攻击。


一个加密系统S可以用数学符号描述如下:
S={P, C, K, E, D}
其中
P——明文空间,表示全体可能出现的明文集合,
C——密文空间,表示全体可能出现的密文集合,
K——密钥空间,密钥是加密算法中的可变参数,
E——加密算法,由一些公式、法则或程序构成,
D——解密算法,它是E的逆。
当给定密钥kÎK时,各符号之间有如下关系:
C = Ek(P), 对明文P加密后得到密文C
P = Dk(C) = Dk(Ek(P)), 对密文C解密后得明文P
如用E-1 表示E的逆,D-1表示D的逆,则有:
Ek = Dk-1且Dk = Ek-1
因此,加密设计主要是确定E,D,K。
RSA是基于数论非对称性(公开钥)加密算法。大整数的素因子难分解是RSA算法的基础。
已研制出多种高速的RSA的专用芯片。尽管RSA的许多特性并不十分理想,但迫于信息安全的实际需要,许多重要的信息系统还是采用RSA作为基础加密机制。软件实现的RSA已经开始用于计算机网络加密,用来完成密钥分配、数字签名等功能。


 

加密算法
    DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合;
    3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;
    RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;
    IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;
    RSA:是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法;
    DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法;
    AES(Advanced Encryption Standard):高级加密标准,对称算法,速度快,安全级别高,现在 AES 标准的一个实现是 Rijndael 算法;
    BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;
    MD5:严格来说不算加密算法,只能说是摘要算法;
    PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
    SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商用算法,在国内民用和商用的,除这些都不容许使用外,其他的都可以使用;
    ElGamal、Diffie-Hellman、新型椭圆曲线算法ECC等。

 

DES算法步骤:

输入64比特明文数据;

初始置换IP;

在密钥控制下16轮迭代;

交换左右32比特;

初始逆置换IP^-1;

输出64比特密文


雪崩效应:对明文或者密钥改变1bit都会引起密文的巨大不同。

 

Des差分攻击
    des中主要起作用的算法有:矩阵置换、扩展、左移、异或、左右互换、s盒作用 。其中对攻击来说最麻烦的要说s盒一步,破解des体系关键在s盒。乍一看六位输入与四位输出貌似没什么关系。但事实上,对于同一个s盒具有相同输入异或的所有输入六比特组的输出四比特异或值有一定规律。  具体些说,对于输入异或相同的明文对B,B*仅有32组,而这32组输出异或却并不是均匀分布,而是仅分布在很少的几个四比特值中;也可以说具有相同输入异或且输出四比特异或也相同的六比特输入数量不多且分布不均匀。正是这种输入输出输出异或间的不均匀性可以被攻击者利用并破解密钥。  此方法对可选择明文攻击尤为有效。


AES

    AES算法的操作都在一个2维矩阵上执行,称之为状态(state)。

    状态由4行、Nb列的一个字节矩阵表示,这里Nb等于明文分组的长度被32整除后的值。

    从技术上讲,Rijndael的结构是非常复杂的,同时其也非常安全且通用,可以有效地抵抗差分攻击、线性攻击、平方攻击和内插攻击,而且在Rijndael中不存在弱密钥问题。


RSA算法:
首先, 找出三个数, p, q, r,
  其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数......
  p, q, r 这三个数便是 private key
接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....
  这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.....
  再来, 计算 n = pq.......
  m, n 这两个数便是 public key

 

MD5算法
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,如今信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

 

新兴密码学理论
    混沌密码学,量子密码学。
混沌密码学
    混沌算法产生的时间序列对初始条件敏感,结构复杂,难以分析和预测;同时它可以提供具有良好的随机性、相关性、复杂性的伪随机序列,独有的密码学特性,是指非常适合于序列密码加密。

你可能感兴趣的:(密码学)