Symmetric
如何使用 GPG 創建和發送對稱密鑰
我想和一個朋友交流(他住在另一個國家,所以我們不能物理交換指紋或密鑰,我可以給他發一個 U 盤,但我相信我可以通過網路做到這一點)。
我對公鑰加密非常熟悉,但這是我第一次決定使用對稱方法。有幾件事我想知道:
- 我是否需要為此生成一種特殊類型的密鑰,或者我可以
gpg --full-gen-key
像往常一樣生成一個 4096 位 RSA 密鑰對嗎?- 我使用我的私鑰還是公鑰有區別嗎?這兩個鍵之間有什麼真正的區別嗎?這意味著如果我使用我的私鑰加密一個文件,它的質量是否與我使用公鑰的質量相同?
- 因此,除了我發送給他的消息的密碼之外,我的朋友還需要一份我用來解密它的密鑰副本,這樣我們就有了一個共享密鑰。發送兩個密鑰(私鑰和公鑰)是否是個好主意,這樣當第三方用我們的公鑰加密某些東西時,我們都可以解密它。我是否有正確的想法,或者這會給這個對稱通信系統帶來任何安全風險?
這只是一個練習練習,我們都對密碼學感興趣,並希望我們的線上通信 100% 加密和安全,以便對密碼學、隱寫術和安全性有一個實際的理解。這是第 1 步,我們將發送交換電子郵件地址和安全的 IM 服務帳戶詳細資訊。從那裡我們可以討論如何加強並逐步實現我們的目標,即 100% 加密和安全。我將非常感謝任何提示、見解、方法,指出我的方法中的缺陷以及我尚未考慮的事情。
一個有趣的挑戰是找到他的鑰匙。我不會讓它過於復雜,但這是我的想法:
- 將密鑰對壓縮到受密碼保護的 zip 存檔中,並將其嵌入到 PDF 文件或 PNG 或任何文件類型中,因為額外的大小不會顯得奇怪。
當然,更安全的方法是給他發一個 USB 密鑰,但我們現在想完全通過網路來完成。
- 是的,您可以生成您的 RSA 密鑰對,您的朋友也會這樣做。然後你可以交換你的公鑰。可以在不安全的環境中進行交換。從現在開始,您可以使用您朋友的公鑰來加密您要發送給他的東西。他可以使用他的私鑰解密它們。另一方面,您的朋友使用您的公共密鑰進行加密,而您將使用您的私鑰對其進行解密。為此,最好使用已建立的標準,例如 PKCS1。
- 由於私鑰和公鑰具有相同的模數,我假設您的意思是我們通常使用整數 65537 的公共指數(當然您不是“被迫”使用它)。使用這個短指數的原因之一是加快公鑰操作的算術,例如簽名驗證或在您的情況下加密。如果您使用您的私鑰加密了您的文件,那麼擁有您的公鑰的每個人都可以解密它。如果您僅使用您的公鑰對其進行加密,您將能夠解密它(假設您是唯一擁有相應私鑰的人)。
- 一旦知道您的部分/全部私鑰,您的“安全系統”就會被破壞。因此,通過 Internet 以明文形式發送您的私鑰並不是一個好主意。但是如 1) 中所述,您可以使用您朋友的公鑰加密您的私鑰,然後將其發送給他(反之亦然)。但這不是通常在實踐中完成的方式。在這裡,您將使用建構在 RSA 上的密鑰協商協議,例如交換對稱密鑰,然後將其用於對稱密碼,例如 AES。我想你們都需要加密的數據量並不高(電子郵件、文本等),這意味著使用公鑰方案相對較慢的加密/解密過程不會成為您系統的瓶頸。