2012-12-09 103 views
2

我正在幫助設計一個需要在服務器上安全傳輸和存儲文件的應用程序。該應用程序是用C#編寫的,但該服務器是基於Linux的。我應該使用什麼協議來傳輸和存儲這些文件,最大可達2 GB?如何選擇安全傳輸協議

我讀過一點sftp和ssh。這些會有好處嗎?

回答

2

如果你將有你想要與.NET使用最少的元件容易和安全地傳輸大文件,你通常會想要去與FTPES,也被稱爲FTP通過明確SSL,和有時被稱爲「FTPS」或「FTP-ES」。這是唯一支持純.NET方法的版本,不需要任何第三方插件。

使用SFTP或FTP over SSH,與FTPES不同,您必須處理在您和客戶端之間手動交換密鑰的問題。你還需要一個第三方庫來實現它,因爲.NET沒有SFTP的內置功能。

如果你想編寫一個客戶端來使用FTPES,你所要做的就是使用FtpWebRequest並設置EnableSSL to true

避免什麼:

  • 不要通過Implicit SSL FTP使用。在這一點上它已被棄用 多年,應該被視爲過時。

  • 不只是PGP加密 文件,然後通過普通的舊FTP傳輸它們。使用普通的舊版FTP, 所有的用戶名和密碼都以明文形式發送,這將使得攻擊者至少可以攔截您的PGP加密文件的 文件。

+0

SSL和SSH支持可比較的密鑰長度,因此總體上SSL由於分級PKI而更安全。 –

+0

@ EugeneMayevski'EldoSCorp:我的印象是,雖然對於證書密鑰來說這是真的,但SSH2通常使用256位會話密鑰而不是SSL的128位會話密鑰。我錯了嗎? –

+1

TLS 1.1和1.2允許您使用帶有256位密鑰的AES和Camellia密碼套件。而且,對於SSH,256位會話密鑰也是最近的。從技術上講,這些協議系統中沒有任何一個會使其中一個比另一個更加安全(當然,安全漏洞也是可能的)。由於這些非技術方面的問題,例如密鑰管理的簡易性和撤銷機制的存在成爲安全性的關鍵因素。 –