公鑰 和 私鑰
公鑰(Public Key)與私鑰(Private Key)是通過一種算法得到的一個密鑰對(即一個公鑰和一個私鑰),公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。公鑰通常用于加密會話密鑰、驗證數(shù)字簽名,或加密可以用相應(yīng)的私鑰解密的數(shù)據(jù)。通過這種算法得到的密鑰對能保證在世界范圍內(nèi)是獨一的。使用這個密鑰對的時候,如果用其中一個密鑰加密一段數(shù)據(jù),必須用另一個密鑰解密。比如用公鑰加密數(shù)據(jù)就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。
可以通過SSH生成公鑰和私鑰
//打開終端,進入SSH配置
cd ~/.ssh
//生成SSH公鑰和私鑰的文件,輸入如下回車
ssh-keygen -t rsa -C "emailAddress"
//提示輸入命名公鑰和私鑰的的文件名,這里我取名:id_rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yanlongli/.ssh/id_rsa): id_rsa
//輸入文件名后回車,第一次輸入密碼(直接回車不用輸入)
Enter passphrase (empty for no passphrase):
//第二次輸入密碼(直接回車不用輸入)
Enter same passphrase again:
//看到如下內(nèi)容
Your identification has been saved in id_rsa
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:rAMqiezMn/NlTvFn1+SXxf+PAB8W3AxDR6hAJuAz6Aw vickyxiao@tencent.com
The key's randomart image is:
+---[RSA 2048]----+
| ....o .+oo |
| o o. ..* |
|E . + . .o o |
| + o . . . . |
| o . .S . o .o|
|o. . . .o + .+ +|
|+.. o+ . oo. +o|
|+. .. =. o .. .o|
| +.oo. . . +|
+----[SHA256]-----+
//ls -l 下檢查生成的SSH Key文件,看到id_rsa(私鑰)和id_rsa.pub(公鑰)兩個文件,
//代表公鑰和私鑰已經(jīng)成功生成了,若沒有,需要按照上面步驟重新生成
"數(shù)字簽名"(digital signature) 和 "數(shù)字證書"(digital certificate)
1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰

2.鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把

-
蘇珊要給鮑勃寫一封保密的信。她寫完后用鮑勃的公鑰加密,就可以達到保密的效果
-
鮑勃收信后,用私鑰解密,就看到了信件內(nèi)容。這里要強調(diào)的是,只要鮑勃的私鑰不泄露,這封信就是安全的,即使落在別人手里,也無法解密
-
鮑勃給蘇珊回信,決定采用"數(shù)字簽名"。他寫完后先用Hash函數(shù),生成信件的摘要(digest)
-
然后,鮑勃使用私鑰,對這個摘要加密,生成"數(shù)字簽名"(signature)
-
鮑勃將這個簽名,附在信件下面,一起發(fā)給蘇珊
-
蘇珊收信后,取下數(shù)字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發(fā)出的
-
蘇珊再對信件本身使用Hash函數(shù),將得到的結(jié)果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過
-
復(fù)雜的情況出現(xiàn)了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時,蘇珊實際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數(shù)字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進行解密。
-
后來,蘇珊感覺不對勁,發(fā)現(xiàn)自己無法確定公鑰是否真的屬于鮑勃。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱CA),為公鑰做認(rèn)證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關(guān)信息一起加密,生成"數(shù)字證書"(Digital Certificate)
-
鮑勃拿到數(shù)字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時,再附上數(shù)字證書就行了
-
蘇珊收信后,用CA的公鑰解開數(shù)字證書,就可以拿到鮑勃真實的公鑰了,然后就能證明"數(shù)字簽名"是否真的是鮑勃簽的
加密
對稱加密
- 加解密使用同一個密鑰
- 常見的對稱加密算法:DES,AES等
- 加解密的效率要高得多、加密速度快
非對稱加密
- 加解密使用不同的密鑰(公鑰 和 私鑰)
- 最常用的非對稱加密算法:RSA
- 加密和解密花費時間長、速度慢,只適合對少量數(shù)據(jù)進行加密
END!
參考文章:
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html










