这个问题在这里有一个后续问题:如何使用公私钥加密方案安全地加密数据,但如果私钥丢失也允许解密?
TL;DR:
我可以为不包含任何敏感数据的设备使用明文密码吗?
不,因为密码重用。
好的,我可以为不包含任何敏感数据的设备使用预哈希密码吗?
不,因为数据库管理员仍然可以使用预先散列的密码来获得访问权限。
那我能用什么?
据我所知,明文密码并不安全。
但是我看不到使用它们的方法。
我有两个问题:
- 在以下情况下,使用明文密码是否不安全?
- 在以下情况下,明文密码的使用是否不可避免?
我们正在开发用于监控和保护私人住宅的新摄像机。
我将跳过它们的用途,但它们不仅可以用作安全摄像头来防止闯入等事情,还可以用于其他家庭用途(例如检查您的孩子是否还在床上,而不是在晚上四处游荡)。
安全计划是这样的:
- 每个相机都有一个(可能是唯一的)默认密码。密码是按摄像机生成的,但可以重复。
- 我们将默认密码存储在数据库中以供支持(测试和“您丢失了默认密码卡,但有购买收据,这是您的默认密码”)。
- 每台摄像机都可以通过最少的设置从世界任何地方访问。
- 使用默认密码,可以访问相机并更改密码。
- 使用自定义密码,可以访问摄像机并查看摄像机的流。
- 如果设置了自定义密码,默认密码将被拒绝。
- 默认密码不允许查看摄像机流。
- 通过对相机的物理访问,可以将相机恢复出厂设置。这将清除自定义密码并恢复默认密码。
到目前为止,我个人没有看到任何安全问题。是的,我们存储明文密码,但它们不允许访问已配置的摄像机。它们只允许访问已插入但尚未配置的摄像机。需要强大的扫描仪来检测并接管刚刚插入但尚未配置的摄像头。即使它被接管,客户也可以将设备恢复出厂设置并重试。
现在,对于下一个变化...
我们希望简化通过多种设备(平板电脑、手机、PC?)访问相机的过程。
为此,我们将自定义密码存储在我们的数据库中。
当人们希望访问他们的相机时,他们会登录我们的平台(这个密码我们不存储明文)。他们可以检索摄像机列表和明文密码。然后他们可以使用这些密码连接到相机。明文密码的处理会在应用程序中自动进行,但使用有根设备,应该很容易找出您正在接收的数据。
- 我们也在数据库中存储自定义密码。
- 对平台进行身份验证后(通过适当管理的凭据)检索自定义密码。
- 自定义密码按用户存储;如果两个人使用相同的密码将相同的相机添加到他们的帐户中,它将起作用。如果其中一个人随后更改了相机上的密码,那么另一个人将在下次尝试访问相机时获得“输入密码”对话框。
以明文形式存储这些密码,一旦数据库遭到破坏,就可以从任何地方访问所有已配置的摄像机。这是安全风险吗?最糟糕的做法是格式化 SD 卡(并像控制任何其他 PTZ 摄像机一样控制摄像机)。甚至可以启动更新过程,但所做的只是从更新服务器安装更新。除非您在摄像头附近拦截流量并更改接收到的固件,否则摄像头只会更新到我们的最新版本。
如果攻击者可以物理访问设备,那么我们拥有什么安全性并不重要;他们可以恢复出厂设置,设置自己的密码,然后从 SD 卡更新。结果是一台可以做任何它该死的事情的相机。
我愿意仅通过物理访问允许成功的(不可恢复的接管;例如摄像头的砖块)黑客尝试。这是因为我们无法让摄像机对武器具有抵抗力——如果有人可以很好地使用锤子摧毁摄像机,那么防止物理攻击向量是一个有争议的问题。
- 在所描述的情况下,使用明文密码是否不安全?
- 在所描述的情况下,使用明文密码是不可避免的吗?
编辑:已提出的建议是对自定义密码进行哈希处理。这消除了在数据库泄露的情况下,人们将因密码重用而遭受访问泄露的风险。
@Victor指出,当前的安全计划允许员工访问摄像头。删除密码同步功能允许我们从数据库中删除密码,消除安全风险。
但是,我们希望提供在线视频存储服务,以便在相机被盗时播放视频。这需要某种相机密码。传递此密码并将其存储在数据库中为使用数据库中的密码访问客户摄像机的员工打开了备份的情况。
我正在考虑的一个新计划涉及让客户使用该应用程序,通过与相机的本地连接,生成一个访问令牌,该令牌允许从任何地方但只能使用特定帐户(只有公司知道密码) ),仅访问视频源。这允许这样的在线视频存储服务。但是,它也允许使用此访问令牌和特殊帐户再次访问相机源。我们又面临安全风险。我不知道如何解决这个...
编辑:通过结合您的所有建议(非常感谢),我能够起草一个新的安全计划。为了防止移动目标帖子,我为此创建了一个新问题: