选择密码并存储密码和私钥

时间:2018-04-09 14:14:14

标签: security passwords ssh-keys

在我的公司,我们正在开发一种由ARM处理器驱动的产品。我们正在使用Buildroot为它制作Linux系统。

出于调试/维护目的,将使用以太网启用SSH访问,并且设备将具有用于串行TTY的UART。该产品将出售给公司,可能只有工人可以物理访问该设备。

我想知道我们必须遵循哪些关于用户密码和私钥存储的策略:

  • 密码:我们必须选择哪个用户密码?为所有人选择一个密码似乎不是一个好主意。如果有人发现了这个密码,他将可以访问我们所有的设备,我们无法更新它们,因为它们处于脱机状态。我们甚至需要选择密码吗?还有其他安全且不依赖密码的解决方案吗?类似于SSH密钥的东西,也许......
  • SSH私钥:我正在考虑生成密钥对,并在所有设备的authorized_keys文件中添加公钥。这样,我们公司的任何必须做维护的成员都可以将私钥导入他的计算机并直接访问所有设备。但是我们如何存储这个私钥以保证其合理安全(并且不会丢失它)?

安全性在这个设备中并不重要,因为它不太可能是一个有趣的攻击目标,它的功能根本不重要,它是离线的,并且对它的物理访问将受到合理限制。知道了这一点,我想得到上述各点的答案,这样我们就可以获得合理的安全性而不会使所有事情过于复杂。

我对SSH密钥的一些看法:

  • 把它写在一张纸上并放在办公室里:我不喜欢这样,因为我不相信它不会丢失,被毁坏......
  • 将它保存在Bitbucket的私有Git存储库中:我不是非常不喜欢这个,因为有权访问存储库的人应该被允许拥有私钥,但我不知道我必须要多少钱信任云服务

我记得在这种情况下安全要求不高,但仍希望有相当好的做法。

1 个答案:

答案 0 :(得分:0)

您绝对不应为所有设备设置相同的密码,或使用相同的ssh密钥。在authorized_keys拥有公司的ssh密钥实际上是供应商的后门。不要这样做。这对您的公司来说也是一个巨大的声誉风险,如果该密钥遭到破坏,您的产品可能已经停业。

根据您设备的实际使用情况,您可以选择一些相对安全的选项:

  • 在通过(或至少 at )客户设置设备时,可以生成或输入新的密钥对或密码。然后,这个秘密将留给客户,您的公司将消除为所有设备存储主密钥的巨大风险。

  • 您可以为每个设备预先生成一个随机密码,将其设置为密码,将其打印在一张纸上并粘贴在设备上。您的公司然后忘记了密码,客户当然应该能够更改密码。这样,所有设备都没有主密钥,攻击者需要物理访问才能读取密码。请注意,虽然像mac地址这样的东西听起来像是一个很好的密码候选者,但事实并非如此,因为它太容易猜到了。它应该是一个具有足够熵的真正随机密码。另请注意,这要求只有经过授权的人才能对设备进行物理访问 - 通常是这种情况,但您尚未指定设备是什么类型的设备。

这两者都要求客户在设备上进行一次性设置阶段。

相关问题