一、加密保护我们的web service传输
在上一天的教程中,我们讲了一个简单的基于” security-constraint”的以指定用户名和密码来保护一个Web Service以及 如何用https对这个web service的通讯过程进行保护。虽然它用https来进行保护了,但是我们抛开https,这个web service之 间传输的用户名,密码,数据都是明文的。
在我之间教程中曾经提到过,有一种黑客工具叫作sniffer,或者使用MIM-ATTACK(中间件拦截)的方式,也是可以把客户端 的流拦截住并且发往黑客主机的,这样我们的用户名和密码就可以被黑客所获取了。
因此,今天我们要讲述的就是如何在web service传输时,使得这个用户名和密码以及相关数据也能被加密。
二、基本概念
我们先来看基本概念,这个基本概念将涉及到PKI的相关领域,请仔细看完这一章,要不然后面你将云里 雾里然后我劝你从头来过,我将参照麻省理工大学的教程-RSA公司出版的“计算机加密与解密原理”,用最实际的例子和最简化 的语言把PKI中最重要的几个概念给大家说清楚。
这次应该是我们第三次要求生成证书请求,证书,签名了,挺折腾的!!!
不折腾你们不行,我要把大家折腾的蛋疼,这次折腾过后就彻底明白了。
被折腾着,痛苦着并最后快活着,好了我废话又多了,下面开始。
2.1 加密解密的基本概念
我们的加密解密分两种:
1) 对称加密(Symmetric Cipher)
2) 非对称加密(Asymmetric Cipher)
2.1.1 对称加密
即采用一个密码(密钥)来对一串String进行解密,同样这个密码(密钥)也能对被加密的密文进行解密,至始至终只有一 个密码(密钥),因此它叫做对称加密。
2.1.2 非对称加密
这个是最重要的概念之一
我们知道,对称加密只有一把密钥(你可以把这个密钥看成一个密码)。而非对称加密呢?它有2把密钥,
l 一把我们称为私钥即privatekey,一把私钥可以对应着无数把公钥,公钥是可以“散播”的。
l 一把我们称为公钥即publickey,一堆公钥只能对应着仅有的一把私钥,私钥是绝对不可以“散播”的。
这两把密钥在产生时是被一起产生的,相当于同年同月生一样,即生成私钥时也伴随着生成了公钥。
下面公式来了:
公钥加密,私钥解密
大家试想一下哈,我有两把钥匙,一把是用来专门锁门的(加密),一把是专门用来开门的(解密)。那么我用来锁门的那 把key掉了,被其它人捡到了,要不要紧?大不了别人可以锁我家的门。
但是,如果我用来开门的这么key掉了?怎么办?被人捡到了人家就可以开我家的门进我家了。
因此,公钥永远被用来加密,可以有多把被多人持有,而私钥永远用来解密且只能主人自己拥有。
公钥加密,私钥解密!老老记住,这是永远的公式,也是真理!