作為比特幣用戶,您將需要一種安全的私密通信方式,而無需依賴公司為您加密數據。例如,像Telegram(不是默認選項)和Signal 等端到端加密的免費方法很容易使用,但我並不完全信任它們。
本文將向您展示如何使用免費的開源軟件GNU Privacy Guard (gpg) 發送消息,該軟件允許使用公鑰和私鑰加密進行加密和解密。 DIY 一開始比較棘手,但一旦掌握了竅門,就沒有那麼難了。我將帶您一步一步地完成它,只需跟隨並收藏這篇文章以備將來參考。
這是一個 多一點背景 關於gpg(包括pgp)對於那些希望深入挖掘的人。值得注意的是,公鑰和私鑰密碼術不僅用於加密和解密,還用於驗證數字簽名——用於比特幣交易和一般數據(例如,檢查您下載的軟件是否為正版)並且沒有被篡改,如圖所示 第一個視頻在這裡)。
這個怎麼運作
要製作公鑰和私鑰對,您的計算機會生成一個非常大(“不可猜測”)的隨機數,gpg 軟件會從中為我們創建一個私鑰,然後從中創建一個公鑰(就像比特幣私鑰一樣) , 更多信息在這裡)。
公鑰與世界共享(如比特幣地址)並包含您在線發布的ID(電子郵件和姓名)。 這是我的. 把公鑰想像成一個打開的保險箱。任何人都可以寫一條消息並使用您的公鑰加密該消息(即,將其放入您的保險箱並鎖上門)——只有您擁有私鑰,因此,只有您可以打開您的保險箱(即解密和閱讀消息)。
旁注:暫時不要擔心這一點——只需注意,在比特幣中,支付沒有“加密”。取而代之的是,使用私鑰進行“簽名”,任何使用公鑰的人都可以“驗證”。
概述
在本指南中,我將帶您完成以下步驟:
- 下載gpg。
- 製作自己的私鑰和公鑰。
- 將您的私鑰存儲到USB 驅動器。
- 將您的私鑰上傳到您另一台計算機的鑰匙串。
- 將您的公鑰上傳到密鑰服務器和/或您的網站。
- 將您的公鑰指紋上傳到您的在線個人資料,例如Twitter 或Keybase。
- 給我發一條用我的公鑰加密的消息,我會用你的公鑰加密回复。
下載GPG
您需要做的第一件事是下載gpg 軟件。
Linux
如果您使用的是Linux,則應該已經安裝了gpg。如果沒有,您可以使用以下命令安裝它:
sudo apt-get 安裝gnupg
如果您只想檢查它是否已安裝,請輸入:
gpg –version
提示:如果您在Raspberry Pi 上運行比特幣節點,您實際上可以使用SSH 訪問您的Pi 的終端並運行類似的gpg 命令。如果我說的沒有意義,請不要擔心,忽略它,這超出了本文的範圍。
蘋果電腦
如果您有Mac,則需要 下載並安裝“GPG Suite” — 除非您還需要電子郵件工具(不需要),否則它是免費的。這將為您提供所需的命令行工具。
視窗
下載並安裝“Gpg4Win”。 免費。下載前有一個捐贈頁面,您可以選擇$0 繼續。
安裝時,您可以取消選中除第一個以外的所有復選框。
製作自己的私鑰和公鑰
在Mac 或Linux 中打開終端或在Windows 中打開命令提示符。
類型:
gpg –full-generate-key
選擇默認的RSA 選項。
然後選擇密鑰的大小。越大越安全。
然後選擇密鑰的有效期。我不想讓密鑰過期。
然後,您將填寫一些個人詳細信息。這將被公開,以便人們知道公鑰屬於誰。數據實際上被嵌入到密鑰中。為“好的”選擇“O”以繼續。
然後使用“密碼短語”鎖定您的私鑰。
我被建議在創建鍵的過程中移動鼠標或在鍵盤上打字,為鍵添加一些額外的隨機性。這些是我創建的密鑰的詳細信息(在底部)。
將您的公鑰存儲到USB 驅動器
您用來創建私鑰的計算機在其“鑰匙串”中有密鑰,並且用密碼鎖定。鑰匙串只是一個抽象的概念——鑰匙實際上只是存儲在某個文件中。
我建議您將您的私鑰備份到U 盤。這允許您在需要時將其複製到另一台計算機並降低丟失的風險。
為此,我們首先必須將其從鑰匙串中導出並將其放入一個文件中。
首先獲取密鑰的ID:
gpg –list-keys
這會顯示您計算機鑰匙串中的所有密鑰(公共和私人)。
將密鑰ID 複製到剪貼板。我的是:
D7200D35FF3BEDFDAB6E0C996565B2E40BC9A48F
然後我們將公鑰導出到一個文件中,我們需要將密鑰ID 放在命令中(這就是我們將其複製到剪貼板的原因)。
上面的命令使用gpg 並有一些選項。
“–output”選項指定輸出應該轉到一個文件,然後直接提供。
我選擇了“public.gpg”作為文件名,它將在命令執行時創建。
“-armor”指定輸出應採用ASCII 裝甲格式,“-export”指定應導出鑰匙串中的哪個密鑰,然後直接提供。
如果你想查看文件的內容,只需使用“less”命令(’q’退出’less’函數):
少公共.gpg
接下來,讓我們導出私鑰。該命令與之前的命令類似,但進行了一些調整。將文件名更改為“private.gpg”,並將“–export”選項更改為“–export-secret-key”。
我們現在在當前目錄中有“public.gpg”和“private.gpg”文件。將它們複製到USB 驅動器並保持安全和隱藏。它不像比特幣私鑰那麼敏感,但是“private.gpg”文件丟失或被盜會允許有人冒充您。如果您的密碼很強大,攻擊者就不太可能使用您的私鑰,即使他們得到了骯髒的手。
將您的密鑰上傳到其他計算機的鑰匙串
將帶有私鑰的USB 驅動器帶到另一台計算機。確保安裝了gpg。打開終端並導航到文件所在的位置。輸入命令:
gpg –import private.gpg
記住“private.gpg”是一個文件名,所以用你的文件名替換它,不要盲目地不假思索地複制命令。系統會要求您輸入密碼,然後將一次性導入私鑰和公鑰。
要刪除私鑰,命令是:
gpg –delete-secret-keys KEY_ID
將KEY_ID 替換為您的密鑰的密鑰ID 或電子郵件。
將您的公鑰上傳到密鑰服務器和/或您的網站
世界各地有幾種流行的密鑰服務器在使用。主要的密鑰服務器就像比特幣節點一樣自我同步,因此可以在互聯網上選擇一個離你很近的密鑰服務器,然後定期使用它來發送和接收密鑰(當然是公鑰)。
gpg –keyserver keyserver.ubuntu.com –send-key D7200D35FF3BEDFDAB6E0C996565B2E40BC9A48F
上面的命令在一行上。 “–send-key”後面有一個空格,這可能不明顯,因為瀏覽器上的格式可能會將行分成兩行。
“–keyserver”是一個選項,它期待接下來的密鑰服務器的網址。
“–send-key”是一個需要Key_ID 的選項。
如果您想直接從密鑰服務器導入其他人的公鑰,請輸入上述命令,但將“–send-key”更改為“recv-key”,並使用他或她的Key_ID。
將您的公鑰指紋上傳到您的Twitter/Keybase
這有什麼意義?如果您在不同地方顯示公鑰的簡短版本,則向您發送消息的人可以更確定他們正在下載正確的公鑰。
您可以使用以下命令查看密鑰的指紋:
gpg –fingerprint KEY_email
使用這些命令中的大多數,有時電子郵件會起作用,有時它需要確切的KEY_ID。你總是可以看到你的KEY_ID 是什麼:
gpg –list-keys
一旦你看到你的指紋,就像我在Twitter 上所做的那樣,將其複制並粘貼到你的在線個人資料中。
當您下載我的公鑰時,導入後會顯示指紋,或者如果您使用“–list-keys”命令,或“gpg –fingerprint Key_ID”。
然後,您可以使用我的在線配置文件檢查輸出,以確保您擁有正確的密鑰。
給我發一條用我的公鑰加密的消息,我會回復用你的公鑰加密
首先,你需要得到我的公鑰。您可以瀏覽到keyserver.ubuntu.com,然後在搜索字段中輸入我的電子郵件。
或者你可以訪問我的 聯繫人/gpg 頁面 並按照那裡的說明進行操作。將我的Key_ID 複製到剪貼板。
打開終端並輸入以下命令:
gpg –keyserver keyserver.ubuntu.com –recv-keys e7c061d4c5e5bc98
您現在已將我的公鑰導入到您計算機的鑰匙串中。
現在,您可以在文本文件(letter.txt) 或Word 文檔(任何東西,真的)中給我鍵入一封信,並將其保存到磁盤。在終端中,導航到您存儲文件的位置。然後輸入這個命令:
gpg –output letter.gpg –encrypt –recipient [email protected] letter.txt
在這裡,您有一個命令,它將全部放在一行上。 “-output”選項允許您創建一個隨後立即鍵入的文件名,加密數據將存放在該文件名中。
“-encrypt”選項是加密指令。
“-recipient”選項允許您選擇使用鑰匙串中的哪個公鑰來加密消息。緊接著,如果您輸入電子郵件地址,它會從您的鑰匙串中選擇正確的鑰匙。
最後,在電子郵件或Key_ID 之後,輸入要加密的文件的名稱。
您可能會收到一些警告和確認消息,但在那之後,您應該有一個名為“letter.gpg”或您選擇的任何文件名的新文件。原始文件仍然存在(“letter.txt”)。您可以使用(使用Linux 或Mac)刪除該文件:
rm 信.txt
您還可以使用以下命令清除命令提示符的歷史記錄:
歷史-c
然後您可以發送電子郵件並附上“letter.gpg”並將其發送給我。當我收到它時,我會先將它下載到磁盤,然後使用此命令解密文件:
gpg –output encrypted_message.txt –decrypt letter.gpg
這將使用來自“letter.gpg”的加密數據創建一個新文件“decrypted_message.txt”。計算機可以讀取哪個公鑰加密了數據(因此我不需要指定Key_ID),並且它可以看到它在密鑰環中具有該公鑰的私鑰,因此它可以使用它來解密消息。
結論
我已經向您展示了為自己創建私鑰和公鑰的步驟,使用我的公鑰加密消息,並將消息發送給我,我將使用我的私鑰解密。
如果您將您的公鑰或獲取它的說明發送給我,我可以加密一條消息,如果您願意,我可以向您發送一條消息。
搏一搏!
這是帕爾曼阿曼的客座帖子。表達的意見完全是他們自己的,不一定反映BTC Inc 或 比特幣雜誌.