数字签名是什么?git
1.算法
鲍勃有两把钥匙,一把是公钥,另外一把是私钥。浏览器
2.安全
鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。服务器
3.网络
苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。函数
4.工具
鲍勃收信后,用私钥解密,看到信件内容。编码
5.加密
鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。
6.
而后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。
7.
鲍勃将这个签名,附在信件下面,一块儿发给苏珊。
8.
苏珊收信后,取下数字签名,用鲍勃的公钥解密,获得信件的摘要。由此证实,这封信确实是鲍勃发出的。
9.
苏珊再对信件自己使用Hash函数,将获得的结果,与上一步获得的摘要进行对比。若是二者一致,就证实这封信未被修改过。
10.
复杂的状况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用本身的公钥换走了鲍勃的公钥。所以,他就能够冒充鲍勃,写信给苏珊。
11.
苏珊发现,本身没法肯定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥作认证。证书中心用本身的私钥,对鲍勃的公钥和一些相关信息一块儿加密,生成"数字证书"(Digital Certificate)。
12.
鲍勃拿到数字证书之后,就能够放心了。之后再给苏珊写信,只要在签名的同时,再附上数字证书就好了。
13.
苏珊收信后,用CA的公钥解开数字证书,就能够拿到鲍勃真实的公钥了,而后就能证实"数字签名"是否真的是鲍勃签的。
14.
下面,咱们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。
15.
首先,客户端向服务器发出加密请求。
16.
服务器用本身的私钥加密网页之后,连同自己的数字证书,一块儿发送给客户端。
17.
客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表以内。
18.
若是数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
19.
若是这张数字证书不是由受信任的机构颁发的,浏览器会发出另外一种警告。
20.
数字证书若是是可靠的,客户端就可使用证书中的服务器公钥,对信息进行加密,而后与服务器交换加密信息。
----------------------------
在签名的过程当中,有一点很关键,收到数据的一方,须要本身保管好公钥,可是要知道每个发送方都有一个公钥,那么接收数据的人须要保存很是多的公钥,这根本就管理不过来。而且本地保存的公钥有可能被篡改替换,无从发现。怎么解决这一问题了?由一个统一的证书管理机构来管理全部须要发送数据方的公钥,对公钥进行认证和加密。这个机构也就是咱们常说的CA。认证加密后的公钥,便是证书,又称为CA证书,证书中包含了不少信息,最重要的是申请者的公钥。
CA机构在给公钥加密时,用的是一个统一的密钥对,在加密公钥时,用的是其中的私钥。这样,申请者拿到证书后,在发送数据时,用本身的私钥生成签名,将签名、证书和发送内容一块儿发给对方,对方拿到了证书后,须要对证书解密以获取到证书中的公钥,解密须要用到CA机构的”统一密钥对“中的公钥,这个公钥也就是咱们常说的CA根证书,一般须要咱们到证书颁发机构去下载并安装到相应的收取数据的客户端,如浏览器上面。这个公钥只须要安装一次。有了这个公钥以后,就能够解密证书,拿到发送方的公钥,而后解密发送方发过来的签名,获取摘要,从新计算摘要,做对比,以验证数据内容的完整性。
总结:
(1)信息 + HASH = 摘要 摘要 + 私钥 = 数字签名(给收方作对比用的,验证收发内容是否一致)
(2)公钥 + 相关信息 + CA私钥 = 数字证书(验证发送者是否正确,是可信任的公钥)
用于我发保密信息给你以前,你得让我相信真的是“你”让我“这么作”的。
(1)、对称加密算法
经常使用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不一样的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
一、加密方和解密方使用同一个密钥。
二、加密解密的速度比较快,适合数据比较长时的使用。
三、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。
四、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持12八、19二、25六、512位密钥的加密)、Blowfish。
五、加密工具:openssl、gpg(pgp工具)
(2)、非对称加密算法
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
ECC和RSA相比,在许多方面都有对绝对的优点,主要体如今如下方面:
抗攻击性强。相同的密钥长度,其抗攻击性要强不少倍。
计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具备特别重要的意义。
带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具备普遍的应用前景。
一、每一个用户拥用一对密钥加密:公钥和私钥。
二、公钥加密,私钥解密;私钥加密,公钥解密。
三、公钥传输的过程不安全,易被窃取和替换。
四、因为公钥使用的密钥长度很是长,因此公钥加密速度很是慢,通常不使用其去加密。
五、某一个用户用其私钥加密,其余用户用其公钥解密,实现数字签名的做用。
六、公钥加密的另外一个做用是实现密钥交换。
七、加密和签名算法:RSA、ELGamal。
八、公钥签名算法:DSA。
九、加密工具:gpg、openssl
因为非对称加密算法的运行速度比对称加密算法的速度慢不少,当咱们须要加密大量的数据时,建议采用对称加密算法,提升加解密速度。
对称加密算法不能实现签名,所以签名只能非对称算法。
因为对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,所以当数据量很小时,咱们能够考虑采用非对称加密算法。
在实际的操做过程当中,咱们一般采用的方式是:采用非对称加密算法管理对称算法的密钥,而后用对称加密算法加密数据,这样咱们就集成了两类加密算法的优势,既实现了加密速度快的优势,又实现了安全方便管理密钥的优势。
(3)、单向加密(散列算法)
散列是信息的提炼,一般其长度要比信息小得多,且为一个固定长度。加密性强的散列必定是不可逆的,这就意味着经过散列结果,没法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将致使散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具备相同散列结果的两条信息。具备这些特性的散列结果就能够用于验证信息是否被修改。
单向散列函数通常用于产生消息摘要,密钥加密等,常见的有:
一、MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
二、SHA(Secure Hash Algorithm):能够对任意长度的数据运算生成一个160位的数值;
SHA-1与MD5的比较
由于两者均由MD4导出,SHA-1和MD5彼此很类似。相应的,他们的强度和其余特性也是类似,但还有如下几点不一样:
一、对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操做,而对SHA-1则是2160数量级的操做。这样,SHA-1对强行攻击有更大的强度。
二、对密码分析的安全性:因为MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
三、速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
一、特征:雪崩效应、定长输出和不可逆。二、做用是:确保数据的完整性。三、加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md四、CRC-32四、加密工具:md5sum、sha1sum、openssl dgst。五、计算某个文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1