密码学概述及基本概念:
1.密码(cipher):
通常密码学中的密码指的是密码算法,是用于加密和解密的数学函数(一般情况下加密和解密有两种不同的密码算法)。有别于我们日常生活中所说的密码,我们说的密码是一种用于身份认证的口令(password)。
2.密钥(key):
密钥是在在密码算法运行需要输入的参数,分为对称密钥和非对称密钥。
相同明文相同加密算法的情况下,使用不同的密钥会得到不同的密文结果。
密钥越长越安全,但是密钥过长算法运行速度会很慢。
3.对称密钥:
对称密钥用于对称加密算法中。
在对称加密算法中,加密和解密过程使用的密钥是相同的。
对称加密算法的安全性取决于密钥的保密性。
4.非对称密钥:
用于非对称加密算法中,分为公钥和私钥。
公共密钥是公开的,而私有密钥必须保密。
公钥和私钥的其中一把用于加密时,则另一把就用于解密。
用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密。
为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。
有时候也存在用私钥加密用公钥解密的情况,如数字签名。
常见加密算法:
通常把加密算法分为三类:对称加密算法(传统加密算法)、非对称加密算法(公钥加密算法)和哈希算法。
1.对称加密算法:
指加密和解密使用相同密钥的加密算法。
优点:运行速度快;
缺点:需要在服务端和客户端之间共享密钥,然而难以做到在公开的计算机网络上安全地传送和保管密钥。且由于双方都使用相同的密钥,无法实现数数字签名等功能,无法保证信息的不可否认性。
常见的对称加密算法:
分组密码 :DES、3DES、
AES、
流密码:RC2、RC4、RC5、
IDEA、
TDEA、
Blowfish、
SKIPJACK
2.非对称加密算法
加密和解密使用不同的密钥–公钥和私钥来进行。
非对称加密的过程:
1.服务端生成配对的公钥和私钥
2.私钥保存在服务端,公钥发送给客户端
3.客户端使用公钥加密明文传输给服务端
4.服务端使用私钥解密密文得到明文
优点:由于非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法进行解密。安全性得到了很大的提升;
缺点:加解密速度远远慢于对称加密算法。
常见的非对称加密算法:
RSA、
Elgamal、
背包算法、
Rabin、
D-H、
ECC(椭圆曲线加密算法)
3.哈希散列算法
散列函数H是一个公开的函数,它可将任意长度的报文M变换成固定长度的散列码h,散列函数表示为h=H(M),它生成报文所独有的“指纹”(摘要)。
散列函数的特征:
1. 对于不同报文不能产生相同散列码(事实上哈希碰撞的概率是很小的),改变原始报文中任意一位数值将产生完全不同的散列码
2. 对任意一个报文无法预知散列码
3. 无法根据散列码倒推报文
4. 散列算法是公开的,其安全性来自于单向散列的能力
5. 散列码长度固定,与报文长度无关
常见的哈希算法:
MD4、MD5、SHA1