2016-08-28 108 views
-2

我是一個很少有加密經驗的開發人員。我正在嘗試在業餘時間更多地瞭解加密技術,特別是SSL。使用私鑰和公鑰加密文件

說一個值得信賴的公司有一個文件(記事本),其中包含大量的個人和機密信息。假設我想讓他們將這些信息發給我分析。我將如何做到這一點?

我的研究告訴我,我會:

1)創建一個自簽名證書 2)生成公鑰和私鑰 3)發出公鑰給值得信賴的公司,並保持私人密鑰 4)請公司使用公鑰加密信息,然後將其發送給我 5)使用私鑰解密文件

這是正確的嗎?我將如何做到這一點?

在這種情況下,證書應由證書頒發機構簽名,因爲我手動將公鑰發給可信任的公司(他們知道它來自我)。

正如我所說我對這個主題相對較新。

+0

SSL/TLS不用於加密文件。它用於建立加密連接。如果您真的想要加密文件以進行存儲,那麼您無法使用SSL/TLS進行此操作。看來你只是簡單地指公共密鑰加密。如果是這樣,那麼是的,這是一個辦法。 –

+0

請注意,您可以使用RSA加密的數據大小限制爲小於密鑰大小。由於參考SSL,請注意數據使用對稱密鑰(如AES)進行加密,並且使用非對稱加密(如RSA)對密鑰進行加密。這有時稱爲混合加密。 – zaph

+0

@Zaph,謝謝你的評論。但是,我不想成爲「專家」。我只是想掌握基本知識。 – w0051977

回答

0

SSL是一種加密網絡連接的協議。手動加密和解密文件並不相關。 (它也不安全,不推薦使用;應該使用TLS代替)

如果您想手動加密和解密文件,那麼可以使用自簽名證書,並將公鑰發給公司發送文件。但是,您必須確保以無法攔截的方式爲其提供公鑰 - 例如將其以物理方式交給閃存驅動器,而不是通過電子郵件發送 - 否則您很容易遭到man-in-the-middle attack:某人可以攔截公鑰並給公司另一個。 (如果發生這種情況,公司會在不知不覺中加密文件以供攻擊者解密,然後攻擊者會用公鑰對文件進行重新加密並將其發送給您。)

如果您手動執行此操作並以安全的方式交付公鑰,則不需要涉及證書頒發機構。證書頒發機構的目的是在證書通過不安全的通道傳遞時證明證書的真實性。例如,當您訪問stackoverflow.com時,瀏覽器從Web服務器獲取證書(使用公鑰)。由於這個證書不是由SO員工親自給你的,你怎麼知道web服務器是真正的stackoverflow.com,而不是一箇中間人攻擊者攔截你的連接以劫持你的帳戶?該網站的證書由證書頒發機構 - DigiCert目前 - 簽署,該證書稱DigiCert已證實它是真實的。您的瀏覽器被配置爲信任來自DigiCert的簽名,因爲瀏覽器開發人員已證實該公司是值得信賴的。

PGPGPG是安全交換加密文件的好工具。他們使用基於安全交換證書的「信任網絡」模式,而不是依賴證書頒發機構。