以安全的方式通过互联网发送数据
我正在构建一个能够保存我的密码的程序。现在我有以下问题。因为我有很多计算机(一个用于工作,三个用于自己),我想保持密码与服务器同步。但现在我的问题是什么是最安全的方式通过互联网发送数据与C#?是否有可能使连接如此安全以至于我可以通过它发送密码?也许对应用程序的任何建议。以安全的方式通过互联网发送数据
是的,你可以使它合理安全。首先,我会建议与编写自己的协议栈,仅仅因为它非常容易犯一个简单的错误,使得破解安全性变得微不足道。
(显然有很多现有的服务(如的1Password,passpack等),但我想你已经知道了。)
我建议你专注于同步和UI和离开安全以证明文库。一种这样的解决方案是使用带RSA身份验证和已知主机密钥的SSH。这在许多生产站点都有使用,AFAIK认为是合理安全的(尽管在几年前最流行的一种OpenSSH中有一个hole,这非常糟糕)。 SSH协议可以用作各种不同协议的载体,包括你自己的密码同步协议(因为你可以使用SOAP或JSON-RPC或类似的东西,有很多库)。
然后,您可以通过使用SSH客户端库(https://sshnet.codeplex.com是第一个Google命中)直接与C#集成。不过,我没有直接使用C#来谈论SSH的经验。我通常做的是让一个现有的SSH客户端(例如PuTTY)打开一个端口,然后使用普通的TCP套接字。这一切都取决于你想要的同步应用程序的光滑程度,但由于你只是为自己写的,我会选择后者。
如果您很聪明地编写应用程序,则不需要除您自己的服务器部分(例如,SSH实现用于文件存储的SFTP)的服务器部分。
一个类似的想法是使用SSL。如果您预先信任证书链,则可以确保足够安全,但我的经验是,C#中的默认SSL套接字API与Windows体系结构绑定的方式过多,使得自定义证书验证更为棘手。使用公开暴露的服务器(直接通过IIS)可以打开大量新的攻击媒介。
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2014-10-12 11:41:29
你听说过WCF吗? – 2014-10-12 11:42:21
Thx for the title and I looking into WCF part :) – kevingoos 2014-10-12 11:43:59