为什么mail_crypt是否需要将生成的私钥存储在服务器上?我认为静态加密的目的是防止攻击者读取用户邮箱的内容。一旦有人获得服务器的访问权限,他们就可以使用私钥解密电子邮件(即使密钥本身是用可以被暴力破解的密码加密的)。
我认为私钥只会存储在用户的客户端上,并且电子邮件将在本地解密(通过 IMAP/POP3 下载后)。
答案1
评论太长:
为什么 mail_crypt 要求将生成的私钥存储在服务器上?
因为正如介绍所说:“Mail crypt 插件用于保护存储在 Dovecot 系统中的电子邮件消息。消息在写入存储之前被加密,在阅读之后被解密。这两个操作对用户都是透明的。”
透明度就是这里的关键词。
对于经过身份验证的用户,Dovecot 必须能够逆转加密,而这需要私钥。
我认为静态加密的目的是防止攻击者读取用户邮箱的内容。
静态数据加密可以防御部分威胁,但不能防御所有威胁。
(服务器) 应用程序对静态数据进行加密的一般思想是,当攻击者试图绕过应用程序中的访问控制并尝试直接从文件系统/磁盘读取数据时,加密将阻止他们的攻击。
即当对手甚至是受信任的管理员执行类似操作时:cat Maildir/cur/1659449681.11765_1.mail.example.com
将不再显示明文消息头、信封数据和消息正文,而只显示一些加密的乱码。
我认为私钥只会存储在用户的客户端上,并且电子邮件将在本地解密(通过 IMAP/POP3 下载后)
这样的解决方案要么需要支持 mail_crypt 添加的特定加密的邮件客户端(插件),要么只能通过自定义电子邮件客户端来实现。
并且它要求用户将其公钥上传到服务器,然后才能加密他们的消息等等。
答案2
据推测,邮件是使用服务器的私钥和客户端的公钥加密的,因此只能使用服务器的公钥和客户端的私钥解密。至少,这是我对这种加密工作原理的理解。非对称加密使用一个密钥进行加密,另一个密钥进行解密,因此,如果服务器上的邮件实际上仅使用服务器的私钥加密,则只能使用服务器的公钥解密。而且由于客户端的公钥就是公开的,因此服务器可以将其存储给每个用户,而不会产生任何特殊的安全风险。