今天在解決使用putty免密登陸樹莓派的問題,在使用了puttygen生成了兩個密鑰后,有了一個疑惑:我該在樹莓派上面放我本地的哪個密鑰,公鑰還是私鑰?
1.搜索了一下大腦里面存了很久沒用到的知識,私鑰是留給自己的,公鑰是可以公開的。既然是我在當前電腦上面生成的key,那么私鑰我就不能隨便給別人,那么放到樹莓派上面的必然就是公鑰。並且從設計的角度來說,我當前電腦是允許使用使用ssh免密登陸多個電腦的,此時的對應關系是1台我的電腦對應n台我需要遠程的電腦。那么對比密鑰的自己持有(1個)和公開(n個)有的區別,那么可以佐證我放在樹莓派上面的應該是公鑰。
2.接着我又有了一個疑惑,公鑰和私鑰,是用於加密和解密的。那么誰被用於加密,誰被用於解密?通過公鑰和私鑰來進行身份認證的流程又是怎么樣的呢?
我提出以下猜想:
a.私鑰是用於加密的,公鑰是用來解密的(源於私和共兩個字的猜想,這個猜想是錯誤的)。那么這個身份認證的流程就是我私鑰加密一個簽名,發送到樹莓派上面去。然后樹莓派使用公鑰解密,確認私鑰的發送者是合法的用戶。因為私鑰是保密的,發送給樹莓派的簽名被正確解密的話,可以確認發送者的身份是正確的。但是這有一個問題,就是公鑰是公開的,那么這個發送給樹莓派的簽名就可能被網絡中監聽的程序所解密,從而不經過我允許而獲取我加密的內容。因此這個身份認證的流程是有問題的。
b.公鑰用於加密,私鑰用於解密。因為我本機持有的是自己的私鑰,如果私鑰用於解密的話,那么我首先要獲得一個加密的信息,才能用於解密。那么身份認證的流程就可能是:筆記本向樹莓派請求身份認證。樹莓派發送用公鑰加密后的信息,我這邊用公鑰解密以后,那么我該怎么向樹莓派證明我已經正確的解密了這個被加密的信息呢?直接發送的話,很容易被監聽竊取。監聽者可以直接攔截我的報文,然后發送一個和我一樣的內容的報文給樹莓派,這樣樹莓派還是無法確認誰是身份合法的。因此這個流程也有問題。
好吧,我已經煩了,不想再去思考了,我准備直接爬到巨人的肩膀上去直接看結果了(題目不會直接翻答案)。百度非對稱加密如下:
非對稱加密算法需要兩個密鑰:公開密鑰(publickey:簡稱公鑰)和私有密鑰(privatekey:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。 非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將公鑰公開,需要向甲方發送信息的其他角色(乙方)使用該密鑰(甲方的公鑰)對機密信息進行加密后再發送給甲方;甲方再用自己私鑰對加密后的信息進行解密。甲方想要回復乙方時正好相反,使用乙方的公鑰對數據進行加密,同理,乙方使用自己的私鑰來進行解密。
藍色的部分是重點,唉,這個是大學密碼學課程的基礎內容。這個遇到了點問題,准備翻書補密碼學的課程了。准備補一下基礎知識再解決這個內容。