存储摄像机的明文密码 - 安全问题?

信息安全 密码管理 硬化
2021-09-06 00:42:29

这个问题在这里有一个后续问题:如何使用公私钥加密方案安全地加密数据,但如果私钥丢失也允许解密?

TL;DR:
我可以为不包含任何敏感数据的设备使用明文密码吗?
不,因为密码重用。
好的,我可以为不包含任何敏感数据的设备使用预哈希密码吗?
不,因为数据库管理员仍然可以使用预先散列的密码来获得访问权限。
那我能用什么?


据我所知,明文密码并不安全。

但是我看不到使用它们的方法。

我有两个问题:

  • 在以下情况下,使用明文密码是否不安全?
  • 在以下情况下,明文密码的使用是否不可避免?

我们正在开发用于监控和保护私人住宅的新摄像机。

我将跳过它们的用途,但它们不仅可以用作安全摄像头来防止闯入等事情,还可以用于其他家庭用途(例如检查您的孩子是否还在床上,而不是在晚上四处游荡)。

安全计划是这样的:

  • 每个相机都有一个(可能是唯一的)默认密码。密码是按摄像机生成的,但可以重复。
  • 我们将默认密码存储在数据库中以供支持(测试和“您丢失了默认密码卡,但有购买收据,这是您的默认密码”)。
  • 每台摄像机都可以通过最少的设置从世界任何地方访问。
  • 使用默认密码,可以访问相机并更改密码。
  • 使用自定义密码,可以访问摄像机并查看摄像机的流。
  • 如果设置了自定义密码,默认密码将被拒绝。
  • 默认密码不允许查看摄像机流。
  • 通过对相机的物理访问,可以将相机恢复出厂设置。这将清除自定义密码并恢复默认密码。

到目前为止,我个人没有看到任何安全问题。是的,我们存储明文密码,但它们不允许访问已配置的摄像机。它们只允许访问已插入但尚未配置的摄像机。需要强大的扫描仪来检测并接管刚刚插入但尚未配置的摄像头。即使它被接管,客户也可以将设备恢复出厂设置并重试。

现在,对于下一个变化...

我们希望简化通过多种设备(平板电脑、手机、PC?)访问相机的过程。

为此,我们将自定义密码存储在我们的数据库中。

当人们希望访问他们的相机时,他们会登录我们的平台(这个密码我们不存储明文)。他们可以检索摄像机列表和明文密码。然后他们可以使用这些密码连接到相机。明文密码的处理会在应用程序中自动进行,但使用有根设备,应该很容易找出您正在接收的数据。

  • 我们也在数据库中存储自定义密码。
  • 对平台进行身份验证后(通过适当管理的凭据)检索自定义密码。
  • 自定义密码按用户存储;如果两个人使用相同的密码将相同的相机添加到他们的帐户中,它将起作用。如果其中一个人随后更改了相机上的密码,那么另一个人将在下次尝试访问相机时获得“输入密码”对话框。

以明文形式存储这些密码,一旦数据库遭到破坏,就可以从任何地方访问所有已配置的摄像机。这是安全风险吗?最糟糕的做法是格式化 SD 卡(并像控制任何其他 PTZ 摄像机一样控制摄像机)。甚至可以启动更新过程,但所做的只是从更新服务器安装更新。除非您在摄像头附近拦截流量并更改接收到的固件,否则摄像头只会更新到我们的最新版本。

如果攻击者可以物理访问设备,那么我们拥有什么安全性并不重要;他们可以恢复出厂设置,设置自己的密码,然后从 SD 卡更新。结果是一台可以做任何它该死的事情的相机。

我愿意仅通过物理访问允许成功的(不可恢复的接管;例如摄像头的砖块)黑客尝试。这是因为我们无法让摄像机对武器具有抵抗力——如果有人可以很好地使用锤子摧毁摄像机,那么防止物理攻击向量是一个有争议的问题。


  • 在所描述的情况下,使用明文密码是否不安全?
  • 在所描述的情况下,使用明文密码是不可避免的吗?

编辑:已提出的建议是对自定义密码进行哈希处理。这消除了在数据库泄露的情况下,人们将因密码重用而遭受访问泄露的风险。

@Victor指出,当前的安全计划允许员工访问摄像头。删除密码同步功能允许我们从数据库中删除密码,消除安全风险。

但是,我们希望提供在线视频存储服务,以便在相机被盗时播放视频。这需要某种相机密码。传递此密码并将其存储在数据库中为使用数据库中的密码访问客户摄像机的员工打开了备份的情况。

我正在考虑的一个新计划涉及让客户使用该应用程序,通过与相机的本地连接,生成一个访问令牌,该令牌允许从任何地方但只能使用特定帐户(只有公司知道密码) ),仅访问视频源。这允许这样的在线视频存储服务。但是,它也允许使用此访问令牌和特殊帐户再次访问相机源。我们又面临安全风险。我不知道如何解决这个...


编辑:通过结合您的所有建议(非常感谢),我能够起草一个新的安全计划。为了防止移动目标帖子,我为此创建了一个新问题:

如何使用公私钥加密方案安全地加密数据,但如果私钥丢失也允许解密?

4个回答

这是一个很长的问题,但我认为您的主要观点是:

我们希望简化通过多种设备(平板电脑、手机、PC?)访问相机的过程。

首先看看 SSH 密钥是如何工作的。这对你最有效。

首先,客户的公钥在初始配置期间被添加到他的相机中。他可以使用存储在其设备上的私钥对自己进行身份验证。他的每一个设备(PC、平板电脑、手机……)都有自己的密钥。

如果他喜欢从新设备访问他的相机,他会使用他设备中的公钥从该设备发起请求。返回他的第一个设备并通过将公钥添加到相机中来授予请求。从现在开始,两个客户端都可以访问。您可以通过删除密钥来撤消访问权限。您还可以使用密钥存储访问级别。

您可以将所有公钥存储在您的服务器上。

如果您的服务器被黑客入侵,则只能窃取公钥。所有的摄像头仍然是安全的。

如果客户被黑客入侵,他会在您的服务器上撤销他的公钥,在他的相机上执行恢复出厂设置并添加他的新密钥。

您至少应该对密码进行哈希处理。

使用安全散列函数,例如 SHA-256 来散列密码并像这样存储它。

生成新密码时,您可以向用户发送新密码,但对其进行哈希处理并将哈希后的版本存储在相机/数据库中。

检查密码是否正确时,对输入的密码进行哈希处理,并将其与正确密码的哈希值进行比较。

这很重要,就像任何人曾经设法访问密码一样,他们可以去尝试在属于相机/帐户所有者的在线帐户上重用这些密码,并且随着密码重用的数量不断增加,可能会成功。

我认为合适的设计是您托管的服务和您销售的硬件之间没有太紧密的联系。如果客户愿意,他们应该能够单独使用这两种产品,而且我不会购买如果出售它的公司停业(或决定不再支持该产品)。

此外,您很难验证某个特定的人是否具有使用特定相机的合法权限。那么,您将如何决定是否要告诉某人他们特定相机的默认密码是什么?

相反,我会采取的方法是,如果您可以物理访问相机,那么您也可以重置密码。

您可能需要审计跟踪。我认为安全摄像头审计跟踪中最重要的部分是,在您足够靠近摄像头触摸它之前,您的照片已经被捕获并发送到远程位置。

此外,我建议重置密码也将用新的随机密钥替换相机上的某些密钥,以便与相机通信的任何服务器都可以知道密码已被重置。

默认密码的最大危险是如果人们将默认密码留在设备上,未经授权的用户可以通过互联网访问它。为了避免这种风险,我建议以下两种方法:

  • 重置为默认密码后,在您为设备选择自己的密码之前,您无法对设备执行任何其他操作。
  • 只有在使用链路本地地址与设备通信时才能使用默认密码。

出于几个不同的原因,我建议在初始步骤中使用 IPv6:

  • 它是最面向未来的协议。
  • 所有设备实际上都有一个本地链路地址(IPv4 不是这种情况)。
  • 链路本地地址可以基于 MAC 地址,并且即使重新配置网络也保持静态。您可以在相机上打印该 IPv6 地址。
  • 默认配置中的现代操作系统可以使用 IPv6 链路本地地址,而无需在链路上存在路由器、DHCP 服务器或其他设备。

当您可以物理访问相机以启用默认密码时,我可以想到两种不同的方法来执行您需要执行的操作。要么你需要按下一个按钮(通常是这样安装的,所以你需要用笔尖才能到达它),或者你需要使用一个单独的管理网络接口,在正常操作中它是不连接的。为了防止随意访问的额外安全性,您可以找到该按钮或端口,以便必须将摄像机从墙上拆下才能访问它。

这些是我可以想出的方法来避免与未经授权使用默认密码相关的问题。出于支持原因,为每个设备设置单独的默认密码可能不是一个好主意。此外,客户不必依赖您来继续使用他们购买的硬件。

我可以看到一些与您的问题和我的回答相关的后续问题可能很有趣:

  • 如何设计一项服务来管理对多个独立安全摄像头的访问,而不需要每个摄像头查看每个用户的明文密码?
  • 如何设计一项服务来收集来自安全摄像头的视频流,以使事件记录不会因破坏或设备被盗而丢失?

我不知道这些问题是否已经在这个网站上被问过,否则你可能也想问他们。

以明文形式存储默认密码

它不安全吗? 是的。

可以避免吗?不,您需要一种方法来向用户提供他的密码。

它可以管理吗?是:禁止使用默认密码集进行远程访问。此时,您不妨恢复使用标准化的默认密码。这将为您节省很多麻烦和客户服务工作。请注意,如果您的本地访问使用无线技术,您的解决方案会提供更高的安全性。使用默认密码漫游攻击是可能的。

以明文形式存储自定义密码

它不安全吗?是的,非常。

可以避免吗?不受你的限制。

是否可以管理?是的。使用多重身份验证。

我看到的一种选择是将您的密码与身份验证令牌配对。您可以创建一个简单的本地应用程序,该应用程序需要物理接近才能通过使用蓝牙、WiFi、物理按下相机上的按钮或类似的方式将其注册到相机。注册后,您将令牌与自定义密码配对以允许全局访问。您当然可以将令牌与您的移动应用程序集成(存储在客户端)。

选择

与其将自定义密码集中存储在服务器上,不如考虑将它们存储在客户端。用户只需登录他们的相机(或相机节点,如果中央系统/相机包含所有已安装/其他相机)来配置他们的应用程序一次。大概在第一次登录后可以使用其他身份验证机制或令牌来避免保存密码。这里的缺点是您将无法在不知道密码的情况下从公共接入点访问摄像机。使用中央节点只需要一个密码,因此可以在一定程度上缓解这种情况。