一,公钥私钥 / Z S' [3 w# A7 w/ n! @' Z, z
1,公钥和私钥成对出现
( ?. Q( V' C2 L3 `9 X2,公开的密钥叫公钥,只有自己知道的叫私钥
6 q3 z; x" W) D. Z3,用公钥加密的数据只有对应的私钥可以 解密% @$ e8 \% r' G8 \2 @# b w6 e
4,用私钥加密的数据只有对应的公钥可以解密
/ {" K3 A5 {; h- U# \, e; |4 j5,如果可以用公钥解密,则必然是对应的私钥加的密4 n& `0 b% Q2 V, W) N
6,如果可以用私钥解密,则 必然是对应的公钥加的密 4 L( g$ b$ J: o$ R: O
明白了?假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们,然后我告诉大家,1是我的公钥。 2 S) s* x- V$ u! I8 G
我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。 * F# \* p3 q" W) D. K% k9 Y0 r
我的好朋友x用我的公钥1加密了字符a,加密后成了b, 放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。
! R, u |: v, o6 z' K8 [: i
现在我们知道用公钥加密,然后用私钥来解密,就可以解决安全传输的问题了。如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道 2是我的私钥),结果所有的人都看到我的内容了,因为他们都知道我的公钥是1,那么这种加密有什么用处呢?
, O) m+ `6 }" t. I0 I+ @% s1 G
但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他解密看是不是c。他用我的公钥1解密,发现果然是c。这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。
" u6 P7 e# U) L4 o! w1 G% q+ h% O
好,我们复习一下: , [/ Z* I2 R7 w8 M( b
1, 公钥私钥成对出现- v6 D9 U/ B; u& @" W7 v, @7 T* D+ h8 _
2,私钥只有我知道) A# D8 F$ O# a i# ^! {$ V& d
3,大家可以用我的公钥给我发加密的信了
0 b5 H4 h1 _. K- \6 e% I, F3 `4,大家用我的公钥解密信的内容,看看能不能解开, 能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。 4 W. j, [) t2 T. n# ] C
总结一下结论:4 |/ v [" R$ O4 Q' r
1,用公钥加密数据,用私钥来解密数据. ^* k! C+ g8 N8 T/ G# B
2, 用私钥加密数据(数字签名),用公钥来验证数字签名。
, q# f8 e/ [) W. n8 E
在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。 9 @# J2 g2 A) V
二,SSL 我和我得好朋友x,要进行安全的通信。这种通信可以是QQ聊天,很频繁的。用我的公钥加密数据就不行 了,因为:
) I8 I- t1 L+ t6 A# f; r% S1,我的好朋友x没有公私钥对,我怎么给他发加密的消息啊? (注:实际情况中,可以双方都有公私钥对)
& J1 L1 o6 S" ^3 |2,用公私钥加密运算 很费时间,很慢,影响QQ效果。
# w0 I6 F- ]$ {. ~- |
好了,好朋友x,找了一个数字3,用我的公钥1,加密后发给我,说,我们以后就用这个数字来加密信息吧。 我解开后,得到了数字3。这样,只有我们两个人知道这个秘密的数字3,别的人都不知道,因为他们既不知x挑了一个什么数字,加密后的内容他们也无法解开, 我们把这个秘密的数字叫做会话密钥。
& L# s$ S' _2 r8 T
然后,我们选择一种对称密钥算法,比如DES,(对称算法是说,加密过程和解密过程是对称的,用一个密钥加密,可以用同一个密钥解密。使用公私钥的算法是非对称加密算法),来加密我们之间的通信内容。别人因为不知道3是我们的会话密钥,因而无法解密。 8 U- c; j+ s- |! z# H% N
好,复习一下: 1,SSL实现安全的通信
0 H3 Z& Z6 w% {0 a/ L2,通信双方使用一方或者双方的公钥来传递和约定会话密钥 (这个过程叫做握手)1 D5 b0 j- u: f2 H7 o2 H! o
3, 双方使用会话密钥,来加密双方的通信内容
" R7 U1 ~) t& m% `% o- J- y9 `2 v3 q 上面说的是原理。大家可能觉得比较复杂了,实际使用中,比这还要复杂。不过庆幸的是,好心的先行者们在操作系统或者相关的软件中实现了这层(Layer),并且起了一个难听的名字叫做SSL,(Secure Socket Layer)。
. v3 p- w+ D) G( U% d1 b& B8 \( a0 Y
1 L1 W. `2 L. |7 G X) F& f
timg.rar
(27.29 KB, 下载次数: 0, 售价: 1 个金币)
|