C# 如何选择安全传输协议

C# 如何选择安全传输协议,c#,linux,sftp,C#,Linux,Sftp,我正在帮助设计一个需要在服务器上安全传输和存储文件的应用程序。应用程序将用C#编写,但服务器是基于Linux的。我应该使用什么协议来传输和存储这些文件(最大为2GB) 我读了一点sftp和ssh。这些有什么好处吗?如果你想用.NET以最少的组件轻松安全地传输大文件,你通常会希望使用FTPE,也称为通过显式SSL的FTP,有时也称为“FTPS”或“FTP-ES”。这是唯一一个纯.NET方法支持的版本,不需要第三方插件 与FTPE不同,使用SFTP或FTP over时,您必须在您和您的客户机之间手动

我正在帮助设计一个需要在服务器上安全传输和存储文件的应用程序。应用程序将用C#编写,但服务器是基于Linux的。我应该使用什么协议来传输和存储这些文件(最大为2GB)


我读了一点sftp和ssh。这些有什么好处吗?

如果你想用.NET以最少的组件轻松安全地传输大文件,你通常会希望使用FTPE,也称为通过显式SSL的FTP,有时也称为“FTPS”或“FTP-ES”。这是唯一一个纯.NET方法支持的版本,不需要第三方插件

与FTPE不同,使用SFTP或FTP over时,您必须在您和您的客户机之间手动交换密钥。您还需要一个第三方库来实现这一点,因为.NET没有SFTP的内置功能

如果您想编写一个客户端来使用FTPES,那么您所要做的就是使用FtpWebRequest和set

避免什么:

  • 不要通过FTP使用。它已经被弃用了好几年了 在这一点上已经有很多年了,应该被认为是过时的

  • 不要只使用PGP加密 文件,然后通过普通的旧FTP传输它们。用普通的老式FTP, 所有用户名和密码都以明文形式发送,这将 轻松让攻击者至少拦截您的PGP加密 档案


SSL和SSH支持可比较的密钥长度,因此总体而言,由于分层PKI,SSL更安全。@EugeneMayevski'EldoSCorp:我的印象是,虽然证书的密钥确实如此,但SSH2通常使用256位会话密钥,而不是SSL的128位会话密钥。我错了吗?TLS1.1和1.2允许您使用带有256位密钥的AES和Camellia密码套件。此外,对于SSH,256位会话密钥也是最近才有的。从技术上讲,这两个协议系统中没有任何一个会使其中一个协议系统的加密安全性低于另一个协议系统(当然,这两个协议系统中都可能存在安全漏洞:)。由于这一点,非技术方面(如密钥管理的易用性和撤销机制的存在)成为安全性的关键因素。