一直以來對公鑰和私鑰都理解得不是很透徹,感覺到模棱兩可,心里直打鼓呢。公鑰怎么會事?私鑰怎么會事?工作原理是怎么的?今天在網上找了半天,通過查看大家對這個密鑰對的理解,總算弄清楚了,咱就把我的心得寫出來給大家對密鑰對有疑問的同志們看看。
公鑰和私鑰就是俗稱的不對稱加密方式,是從以前的對稱加密(使用用戶名與密碼)方式的提高。我用電子郵件的方式說明一下原理。
使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的:
1. 我發送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。
2. 必須保證是我發送的郵件,不是別人冒充我的。
要達到這樣的目標必須發送郵件的兩人都有公鑰和私鑰。
公鑰,就是給大家用的,你可以通過電子郵件發布,可以通過網站讓別人下載,公鑰其實是用來加密/驗章用的。私鑰,就是自己的,必須非常小心保存,最好加上密碼,私鑰是用來解密/簽章,首先就Key的所有權來說,私鑰只有個人擁有。公鑰與私鑰的作用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能用公鑰解密。
比如說,我要給你發送一個加密的郵件。首先,我必須擁有你的公鑰,你也必須擁有我的公鑰。
首先,我用你的公鑰給這個郵件加密,這樣就保證這個郵件不被別人看到,而且保證這個郵件在傳送過程中沒有被修改。你收到郵件后,用你的私鑰就可以解密,就能看到內容。
其次我用我的私鑰給這個郵件加密,發送到你手里后,你可以用我的公鑰解密。因為私鑰只有我手里有,這樣就保證了這個郵件是我發送的。
當A->B資料時,A會使用B的公鑰加密,這樣才能確保只有B能解開,否則普羅大眾都能解開加密的訊息,就是去了資料的保密性。驗證方面則是使用簽驗章的機制,A傳資料給大家時,會以自己的私鑰做簽章,如此所有收到訊息的人都可以用A的公鑰進行驗章,便可確認訊息是由 A 發出來的了。
加密算法包括對稱加密和非對稱加密,對稱加密就是加密和解密用一個秘鑰,就像偽裝者等電視劇里的電報加密一樣,需要一個密碼本,發送方通過它加密,接收方通過它解密,因此密碼本非常重要,一旦泄露就會所有信息被竊取。也就有了特務護送密碼本的橋段,缺點顯而易見。
而非對稱加密有兩個秘鑰,公鑰和私鑰。例如接收方先生成一對公鑰私鑰,公鑰可以直接不加密發送給發送方,任何人都可以拿到。然后發送方用公鑰加密,發送給接收方后,接收方用私鑰可以解密,並且只有私鑰能解密,公鑰不能解密,只能加密。
著名的RSA算法就是非對稱加密的一種,是基於大數難以進行質因數分解設計的。加密等級越高,RSA位數就越長,目前常用1024bits。
並且RSA算法除了加密以外還可以實現數字簽名。就是證明A發送的信息確實是A發出的。公鑰和私鑰實際上地位平等,可以互相加密解密。即用公鑰加密的密文可以用私鑰解密,這就是加密過程,反過來用私鑰加密的密文可以用公鑰解密,也就是說大眾可以用公鑰對A發出的密文解密來驗證信息確實是A發出的,這就是數字簽名。
RSA速度很慢,一般只對少量信息進行加密。常用的做法是用RSA給對稱加密密鑰加密,發送給接收方。然后接收方解密知道了對稱加密密鑰,雙方再通過對稱加密方式通訊。