2012-12-09 67 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位会话密钥也是最近的。从技术上讲,这些协议系统中没有任何一个会使其中一个比另一个更加安全(当然,安全漏洞也是可能的)。由于这些非技术方面的问题,例如密钥管理的简易性和撤销机制的存在成为安全性的关键因素。 –