地址:http://didda.blog.51cto.com/812410/223500

对称加密

特点:对称加密的特点是加密和解密通过一个相同的密钥。

 

比如,我们要加密一组数字

一组数字:12345

密钥:10

算法:原数字乘于密钥

加密后的结果:123450

解密的人也是通过密钥 10,拿123450除以10 就得到了原来的数字 12345,当然算法和密钥都不会这么简单。

 

缺点:对称加密的一个不便之处就是密钥的分发,因为当A发一封加密的信给B的时候,B要想读这封信,就必须知道密钥,但是怎么传递密钥呢?如果通过一封没有加密的信传递密钥,那么很容易就被截取了。

 

常见的对成加密算法: DES ,3DES, RC5

 

 

 

对称加密

非对成加密有一对密钥,私钥和公钥,当使用其中一个来加密的时候,必须用另外一个来解密。这样就把密钥分发的问题解决了,公钥可以随便分发,公钥是大家都知道的,私钥只有私钥持有人才有。

 

当 A 需要发信给 B 的时候,就使用 B 的公钥把这封信加密,然后发送给B,只有B有私钥,所以只有B能够读取这封信。这样即使别人也知道公钥,但是却看不到信的内容。

 

但是非对称加密有个缺点,就是需要复杂的计算,这要耗费很多CPU,并且一般非对称加密的密钥都很长,1024 bit 或者 2048 bit。所以一般不会用非对称加密算法来数据,只用来加密密钥(对称加密的密钥),实际的加密过程还是使用对称加密。

常见的对成加密算法:Diffie-Hellman,RSA

RSA算法是很常用的算法,硬件解码的话,DES对称算法要比RSA 快1000倍。

 

 

 

 

在 Exchange 2007 中,当使用 New-ExchangeCertificate 来申请证书的时候,可以使用参数 KeySize, 这个参数可以指定与要创建的证书关联的 RSA 公钥的大小(位)。

可接受的值是 4096、2048 和 1024。默认值为 2048。

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL

下图中可以看到,证书的公钥使用RSA算法,公钥长度1024 bits来进行加密的

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_02

 

 

 

 

 

 

 

 

哈希是用来保证一段数据不被更改,保证数据的完整性。由于哈希得到的重复值的可能性非常小,可以认为,对一段数据进行哈希得到的结果是一个唯一的结果,不会有另外的数据哈希值和它重复。

比如A发送一封信给B, 那么为了保证这封信不被更改,那么A对这封信的数据进行哈希运算,把哈希结果和信一起发送给B,B接受到这封信之后,对信的数据也进行哈希,如果得到和A相同的结果,则说明这封信没有被更改过。

一个好的哈希算法,当一段数据中有改动时,会造成哈希值很大的变动。

 

常见的哈希算法:MD5 (Message Digest), SHA 或 SHA1 (Secure Hash Algorithm)

 

一个证书也是一个文件,一段数据,为了保持证书的完整性,证书也有哈希值。

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_03

打开证书,我们可以看到这个证书的哈希算法(Thumbprint Algorithm)和哈希值(Thumbprint),我们也可以使用 Get-ExchangeCertificate 来得到 Thumbprint

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_04

 

微软提供了一个小工具来检验文件的 MD5 和 SHA1 哈希值,详见 KB889768

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_05

MS CA申请证书的时候可以选择哈希算法

 

 

 

 

数字签名

我们可以在一封邮件上加上自己的数字签名,如果你收到一封带有数字签名的邮件,那么数字签名就表明此邮件确实来自于发件人,并且邮件内容没有被更改。

数字签名其实使用自己的私钥加密邮件的哈希值,然后发送给收件人。

这里还是用到非对称加密,因为只有一个人有私钥,当他用私钥加密,而对应的公钥可以解密的时候,这个封邮件就可以证明确实来自于发件人。因为非对称加密很耗资源,所以不能加密邮件的正文,只需要把正文的哈希码加密就可以。

 

当用户 B 收到 A 发来的带有数字签名的邮件时,B 首先找到 A 的公钥,然后试图用公钥 A 来解开邮件中加密的哈希值,如果解的开,那么就证明邮件确实从 A 发来的。然后对邮件正文进行哈希运算,如果得到的结果和邮件中的哈希值一致,就说明这封邮件没有被更改过。

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_06

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_07

图:带有数字签名的邮件

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_08

图:签名的证书和加密的证书不能相同,签名的证书是使用自己的私钥,而加密的证书是使用对方的公钥。

 

 

 

 

 

证书

为什么要使用证书?

比如 B 向 A 传输数据,B 首先使用 A 的公钥来加密数据,然后发送给 A, A 用自己的私钥解密。

但是这样有一个问题,C 是一个坏人,他声称自己是 A,然后把 假A 的公钥发给 B,B 用 假A 的公钥加密数据,然后发送给 假A,毫无疑问,C得到了数据。

现在的问题是,如何防止 C 声称自己是 A,解决的方法就是用证书。

 

B 信任证书颁发机构 D,D通过验证,证明A的确是A,D 颁发一个证书给 A , 证书中列出了A的名字和它的公钥,B 看到了 A的证书,发现自己信任这个证书颁发机构,那么它就可以使用证书中所示的公钥来加密数据,并且发送给A。

由于C 不能通过证书颁发机构 D 的验证,所以它得不到证书,也就无法冒充 A了。

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_09

图:证书用来保证远程计算机的身份

 

 

 

 

 

证书创建过程

1. 首先有应用程序来生成一对密钥:公钥和私钥。

在Exchange 2003 中,我们用 IIS 中的向导申请证书,向导创建了公钥和私钥。在 Exchange 2007 中,我们用 New-ExchangeCertificate 来申请证书,这个命令也创建了公钥和私钥。

 

2. 发送信息到证书颁发机构 (CA)

证书颁发机构需要一些信息来验证你的身份,或者网站的身份,而且它还需要你生成的公钥,CA是不需要你的私钥的,经过验证,证明了,你的确是真实的身份,或者你的网站名称是真实的,就可以颁发证书了。

 

3. CA在证书上签名,然后把颁发证书,这样所有信任这个CA的客户端都会认为你的证书是有效的,并且可以使用上面的公钥。

 

Exchnage 2007 中,经常犯的一个错误就是在 Hub 或者别的机器上运行 New-ExchangeCertificate, 当从CA获得证书的时候,到 Edge 上导入证书 Import-ExchangeCertificate,这个时候就会发生 私钥丢失 的情况。原因就是 Edge 并不是当初运行 New-ExchangeCertificate 命令的那台计算机

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_10

图:申请证书的过程创建了公钥和私钥

 

 

 

 

 

 

SSL怎样工作

SSL(Secure Socket Layer ) 是由网景开发的,用于浏览器和Web服务器之间的加密通讯,当你访问一个https的站点,SSL 协议就起作用了。

TLS (Transport Level/Layer Security)是根据 SSL 发展而来的,我们可以理解为TLS 就是用来加密 SMTP 通讯的 SSL。SSL则可以用来加密 HTTP, POP3, IMAP, NTTP and LDAP 等诸多协议。

 

  1. 当你在浏览器中输入 https 开头的URL时,就向 Web 服务器发起了一个 SSL 的请求。
  2. 服务器把自己的证书发送给客户端 (记住,证书中包含公钥)
  3. 客户端浏览器验证这个证书(看看是不是信任的证书,有没有过期,有没有被吊销,证书上的名字和自己访问的相同吗?)
  4. 客户端浏览器生成一个随机的会话密钥(session key),然后使用服务器的公钥加密。
  5. 客户端浏览器把加密的会话密钥发送给Web服务器
  6. Web服务器用自己的私钥解密 会话密钥
  7. 这样,客户端和服务器都知道了 会话密钥(session key)
  8. 以后的通话都用会话密钥(session key)来加密了

当加密 POP3 等服务的时候,也是这个过程。

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_11

图:HTTPS 就是 SSL 加密的 http 通讯

 

 

 

TLS 是在SSL 3.0 基础上发展来的,值得注意的是两者虽然过程相似,但却是不相兼容的。当然通讯的过程不只这么简单,一些握手,加密,哈希过程请参考文章

 

 

 

查看没有SSL加密的通讯

 

 

如果没有SSL加密,邮件通讯其实很容易被截获,我们可以利用一些嗅探器(sniffer)得到通讯内容

 

HTTP: Base64

SMTP: Base64

POP3: Plain Text

IMAP: Plain Text

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_12

图:POP3 的不加密的话,嗅探器捕捉到的是明文,用户名和密码都可以直接看到。

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_13

图:SMTP的明文传送是 base64编码的。

 

AUTH LOGIN 说明是基本身份验证,密码是明文传送的,我们可以找一个 Base 64 编码的网站,把Base 64编码转换成明文。

比如访问http://www.hcidata.co.uk/base64.htm

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_14 

图:输入Base64编码 VXNlcm5hbWU6 就可以转化成 ASCII 码:Username:

 

 

 

 

 

TLS加密SMTP

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_15

在默认的SMTP 虚拟目录上装了证书后,就可以使用加密的连接了, telnet 上去后会发现 TLS 和 STARTTLS 命令。

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_16

 

 

 

加密MAPI RPC

加入域中的 Outlook 和 Exchange 进行通讯使用 RPC 协议,RPC有默认的加密机制,我们可以在 Outlook 账户属性中选择加密的通讯。

 

Exchange 证书基础知识SSL_Exchange 证书基础知识SSL_17