HTTPS 敏感信息和缓存

信息安全 tls 网页浏览器 http 数据泄露
2021-08-31 22:14:49

我有一个网站,我需要与用户共享一个敏感密钥。当然,我在页面上使用 HTTPS。密钥被放入 ASP.NET 中的 HTML 服务器端。我担心的是,如果用户的计算机遭到入侵,是否可以读取用户缓存的内容并在浏览器缓存中找到密钥?HTTPS 缓存的内容是否在磁盘上加密?它甚至被缓存了吗?

更新

我只是想澄清我的问题。其中一位发帖人说,如果用户的电脑有恶意软件,游戏就结束了。首先,我指的是被盗的笔记本电脑,而不是恶意软件。我记得你在“丢失”笔记本电脑的新闻中听到的那些事件,这些笔记本电脑上有信用卡信息、SSN 等。

用户通过 HTTPS 访问的密钥与我确信可以防止静态数据攻击的程序一起使用。即使计算机本身受到威胁,密钥保护的数据也是安全的。我只想涵盖所有的基础。

当您拥有不想被缓存的 HTTPS 保护的敏感信息时,跨浏览器的标准做法是什么?

2个回答

我担心的是,如果用户的计算机遭到入侵,

然后用户输了,对不起。

如果计算机被入侵,用户看到的任何东西都可以被我的恶意软件选中;允许用户做的任何事情都可以通过恶意软件来完成(以及您可以在恶意软件上发送的任何验证码,恶意软件可以拦截并将其提交给最终用户)。

OTOH,您可以要求确认敏感命令:

Launch nuke 
[ Yes ] [ No ]

(点击是)

An SMS confirm code has been sent; 
please enter confirmation code:

当然:

  • 短信必须清楚地标明确认码的含义,以及复制代码的含义
  • 智能手机也可能受到损害;理论上对 SMS 的访问仅限于某些应用程序,但是当系统受到威胁时......
  • 如果您经常需要确认码,这可能会很烦人;用户会抱怨不友好,甚至可以决定使用不太安全的系统(被忽略的安全功能在实践中不是很有用);
  • 用户可以进入自动确认模式:他们关闭思维并在确认表中复制他们通过短信收到的任何确认码(因为计算机被入侵,确认表会显示:Please enter confirmation code to send .01 $ to a charity但同时短信会显示Nuke confirmation code has been requested; only enter to confirm code to launch nuke; code is xxxx-xxxx-xxxx
  • 当然,有人可能会偷手机(甚至可能是安装恶意软件的人)。

HTTPS 缓存的内容是否在磁盘上加密?

HTTPS 是否可缓存,取决于cache-controlHTTP 标头(如 HTTP 内容)。

它甚至被缓存了吗?

HTTPS 缓存资源不能像 HTTP 缓存资源那样加密存储在磁盘上,或者普通文件可以加密存储:Web 浏览器需要能够读取和解密文件,因此需要将密钥存储在某个地方。

您可以进行整个磁盘加密,但假设客户端计算机有恶意软件,它怎么可能有帮助?要么不输入密码,保持磁盘加密,磁盘是个无用的盒子,要么输入密码,操作系统解密磁盘,所有安装的软件都可以明文访问文件,受限于操作系统访问控制照常。

回复:更新

首先,我指的是被盗的笔记本电脑,而不是恶意软件。

我误读了“妥协”这个词。

首先,如果计算机被盗,请小心将其归还给您,以彻底检查或清除任何可能包含恶意软件的东西。它可以像“通过安装恶意软件渗透”一样“包含”。

全面的计算机保护

电脑被盗时处于哪个状态?

如果计算机在未运行时被盗,全盘加密是一种强有力的防御。

Web 浏览器级别的保护

正如我之前写的,可以使用Cache-ControlHTTP 标头控制缓存:

  • Cache-Control: no-cache 只会阻止 HTTP 客户端在没有重新验证的情况下重用缓存的资源;

  • Cache-Control: no-store 应防止储存

14.9.2 缓存可以存储什么

no-store
no-store 指令的目的是防止无意中释放或保留敏感信息(例如,在备份磁带上)。no-store 指令适用于整个消息,并且可以在响应或请求中发送。如果在请求中发送,缓存不得存储此请求的任何部分或对它的任何响应。如果在响应中发送,缓存不得存储此响应或引发它的请求的任何部分。该指令适用于非共享和共享缓存。 在这种情况下,“不得存储”意味着缓存不得有意将信息存储在非易失性存储中,并且必须尽最大努力在转发信息后尽快从易失性存储中删除信息。即使该指令与响应相关联,用户也可能在缓存系统之外显式存储这样的响应(例如,使用“另存为”对话框)。历史缓冲区可以存储这些响应作为其正常操作的一部分。该指令的目的是满足某些用户和服务作者的既定要求,他们担心通过对缓存数据结构的意外访问而意外释放信息。虽然在某些情况下使用该指令可能会改善隐私,我们警告说,这绝不是确保隐私的可靠或充分的机制。特别是,恶意或受损的缓存可能无法识别或遵守此指令,并且通信网络可能容易受到窃听。

正如警告所表明的,为了保护隐私,此标头应与 HTTPS 一起使用,以避免窃听。

HTTPS 内容可以被浏览器缓存,并且显然被缓存,除非服务器明确指示。有关详细信息和链接,请参阅此答案