通过电子邮件发送安全信息的最佳做法?

时间:2009-11-20 14:57:42

标签: email security

我必须将从网站收集的敏感信息(姓名,地址,社会安全号码等)发送到电子邮件地址。

使信息安全且易于在接收方提取的最佳行动方案是什么?

编辑:我将在网站上使用ASP.NET,而不确定它在此问题上的功能。

编辑:如果我决定将信息存储在数据库中,只是在新条目发送时发送邮件,这会更好吗?并创建一些安全的方式来转储信息。

9 个答案:

答案 0 :(得分:8)

最好的做法是快速运行另一种方式。重新设计您的应用程序,使其不会导致身份盗用。

您可以使用S / MIME或PGP向大多数非Web电子邮件客户端发送安全电子邮件,但需要进行大量设置:收件人必须拥有证书,并且您必须获得正确的证书对于每个收件人。


作为更好设计的示例,请考虑向收件人邮寄通知的一个示例,然后返回到网站以在通过SSL安全地进行身份验证后查看信息。

虽然它有助于降低收件人所需系统的复杂性,但更大的好处是它可以加强对敏感信息的分发和保留的控制,并有助于审核对该信息的访问。向某人发送电子邮件可以让他们更加容易地将其永久存储,或者将其转发给未经授权的收件人。

答案 1 :(得分:2)

加密,加密,加密!!!别的什么:)

答案 2 :(得分:2)

将数据放入邮件的加密附件中。附件可以是您喜欢的任何格式。这将使另一方的解析变得可靠。您可以使用ASP.NET支持的任何编解码器,因此您可以选择对方可以读取的任何内容。

答案 3 :(得分:1)

可悲的是,如果您正在使用mailto:URL,我认为这里没有实用的解决方案。

通过电子邮件发送内容的唯一安全方式是加密。您可以使用PGP或S / MIME,但这些都不容易为Web表单上的任意用户部署,因为您无法使用PGP密钥或X.509证书轻松设置用户。

如果要从托管环境部署网站,则您控制的代码可能会加密数据然后发送。例如,您可以使用GPG使用您自己的公钥进行加密,然后将结果发送到电子邮件中。但这需要代码,而不仅仅是mailto:url。

除非你能在Javascript中找到公钥加密库。

答案 4 :(得分:1)

总之没有。默认情况下,电子邮件不受保护。您使用加密程序来保护内部信息,但这需要最终用户能够解密它。

最简单的方法可能是创建一个ssl加密站点,用户可以登录并访问该信息。

答案 5 :(得分:1)

您可能需要查看http://ecocrypt.com/SecureMessage/
这将允许您创建可通过标准电子邮件发送的加密邮件。

我认为他们有一个可用于购买/许可的API(成本非常低......) 但是,用户可以在云中加密/解密而无需任何设置要求。

这将创建一条消息:

Encrypted Message Using http://ecocrypt.com/SecureMessage
To read this secure message do the following:
    1.  go to http://ecocrypt.com/SecureMessage:
    2.  Copy this ENTIRE message into the encrypted message area:
    3.  Enter the message pass phrase:
    4.  Press the Decrypt button:
    NOTE: the message pass phrase was sent in a separate message, or the sender assumed you already have it.
    NOTE: If you need or lost the pass phrase contact the sender at:test@ecocrypt.com
------------------HEAD--------------------------------
ECOCRYPT:67570:95992fad87a1165c100a0b915f86ce7f:
------------------START--------------------------------
GyuyjmHF68edfoSGM0YqtICXPrA6P69Pf7pXdgZ22g1PjzoANDOVy+0UJ/P0Pb+B09O+IsXqWPus

BO1gsVOA1BnMEE5r68A2fa02nRC9F3anVV8rvZDiZdfu9up2uDWrtsGhlLcHI6iKau4z7dAxq6qV

k7C/o2l3

------------------END--------------------------------

如果用户知道正确的密码短语,则可以解密。

云中的相同地址:http://ecocrypt.com/SecureMessage/ 消息Decrypted:

Greetings,

This is a test Message.

Sensitive Information Goes Here:

name ss and other sensitive info.


Thanks.

答案 6 :(得分:0)

我使用的是使用TLS的Gmail SMTP。我不是.NET用户,但通过Rails应用程序连接很容易。它是免费的!当然,我认为你每月只能获得大约200个消息,但你可以支付更多费用

答案 7 :(得分:0)

如果您对接收方有“控制”(我的意思是,如果接收方不是lambda用户),我将使用PGP进行公钥/私钥加密。这个article有一个使用GnuPG和.NET的完整工作示例。

答案 8 :(得分:0)

让我重新说明信息流,看看我是否做对了。

a)用户U将信息放入网站W, b)W然后通过电子邮件向U发送信息。

这使得必须保护两个通信过程。因为你只是要求保护b)我假设你在a)期间已经在使用TLS / SSL。

要保护b)您需要一些加密密钥。我看到两种解决方案:在a)期间交换的一些对称秘密或在a)期间交换的一些非对称公钥。后者在a)期间不需要任何保密,这是一个优点,但你仍需要验证这个密钥确实来自U.

在a)期间可能会传输这两种类型的键,您可能只需要在表单中插入一个新字段。在这两种情况下,U都需要有必要的软件来破译b)中收到的任何加密通信。将x509-Certificates或PGP-Keys作为两种标准加密算法,这些可能是最好的猜测。我不确定ASP.NET支持多少,但即使我假设不直接支持电子邮件加密,也应支持某些加密。

问题仍然存在,你找不到一个不假设你的邮件客户端的某些功能的解决方案(以上阅读电子邮件,对于我们中的一些人来说加密是一个相当常见的功能)。