使用闪存驱动器作为安全基础是否安全?

信息安全 验证 密码
2021-08-22 01:44:29

我正在为学校开发一些软件。我发现当前流行的学校 LAN 保护存在严重缺陷,我认为需要修复这些缺陷,因此我计划发布自己的软件。其中一个问题是,如果学生设法登录教师计算机,他们将可以访问大多数学校局域网保护软件中的所有教师工具。

相反,对于我来说,我希望每台计算机都安装教师工具,但是,相反,它需要您输入完整的密码才能使用它。这些似乎是个好主意,但如果学生设法获得教师密码怎么办?我的下一个想法是在每个教师的闪存驱动器上放置一个文件,该文件可能包含(除其他外)他们密码的加盐哈希。他们需要插入闪存驱动器并使用与闪存驱动器关联的密码。

我的问题

  • 这是安全的做法吗?
  • 是否有任何与闪存驱动器相关的 UID 可以用来确保文件没有被错误地复制到另一个设备?
  • 有没有更好的方法来处理这个?
4个回答

不,您的解决方案不安全,不,没有与闪存驱动器关联的 ID,是的,有更好的方法来做到这一点。

有几种硬件加密令牌设备与闪存驱动器具有相同的外形尺寸,您可以将它们用于此目的。

首先想到的是Yubikey该设备通常很容易集成到现有的身份验证框架中,以及构建在 OAUTH 等流行标准上。

此类别中的设备(包括这一类)通常具有以下功能:

  • 防篡改
  • 不可复制
  • 能够使用带有未公开私钥的公钥加密
  • 能够作为 USB 键盘与旧版应用程序交互(即输出安全密码)

我还没有实施这样的解决方案,所以请谨慎对待,但是如果您在老师登录以进行伪 2 因素实施时通过短信向他们发送一次性密码会发生什么?

这样,您无需引入新硬件(甚至是 USB 记忆棒),它完全基于软件,并确保您可以唯一地识别用户。

这也可能意味着您不必打开 USB 端口...

除了密码之外,还需要闪存驱动器可以提供更高的安全性。您的方法似乎不是特别明智 - 带有用于身份验证的“salted hash”的闪存驱动器。学生可以找到闪存驱动器(或软件),对其进行逆向工程,修改加盐哈希以使用他们在闪存驱动器上知道的密码。或者,如果您在远程服务器 + 闪存驱动器上有密码(并且应用程序要求两者使用相同的密码),他们可以只使用加盐密码并应用他们的 gpu 来尝试暴力破解它;比在远程服务器上重复登录尝试容易得多。有些老师会在某个时候将他们的闪存驱动器放在外面,而学生会在某个时候偷走并复制它。

你的想法的一个更好的实现是需要一个公钥 - 私钥身份验证,其中闪存驱动器上的私钥使用强密码进行加密。

同样从用户体验的角度来看,必须拥有闪存驱动器可能非常不方便(例如,丢失驱动器、将其遗忘在计算机中、将其连接到他们的钥匙链上并将他们的钥匙链留在计算机中等)。

或者您可以只使用两因素身份验证。每次登录之前,老师都会收到一条带有一次性密码的短信,然后输入,然后老师才能输入完整密码以完全登录。(如果他们不熟悉短信或没有无限短信计划,此解决方案可能会引起教师的抵制)。

顺便说一句,我会非常犹豫是否让学生能够访问计算机和/或重新启动它。硬盘驱动器应加密。(未加密驱动器上的数据很容易被盗;比如启动到 linux live cd/usb;或取出硬盘驱动器;将其作为外部驱动器安装在他们的计算机中)。教师应警惕学生通过硬件键盘记录器(插入 USB 键盘和计算机之间)截获他们的密码/密码。

此外,我建议进行一些可以放入教师工具中的健全性检查。列出每次登录时老师的上次登录时间和操作(并有一个非常可跟踪的审核日志)。大多数时候,成绩册是一次写成绩,永远不会改变;或仅更改将测验/考试交还给学生的那一天。让所有评分更改都清楚地标明时间戳、版本控制并突出显示(例如,更改显示为鲜红色),以便您可以轻松查看是否存在教师不记得的学生成绩增加的模式。进行异地备份。也许安装网络摄像头并在每次登录时拍摄老师的照片,并将照片放在审核日志旁边,并在您每次尝试输入密码时显示(因此即使网络摄像头在学生找到路时被阻止;

  1. 它是安全的,但很麻烦,并且可能需要一个自解压的可执行文件(axcrypt,可能还有许多其他工具可以做到这一点)。
  2. 不。最接近的是 PID 或 VID,但对于来自同一制造商的两个相同类型的设备,没有区别。
  3. 这取决于。根据您愿意给教师带来多少不便,您可以使系统更加安全(例如,设置一个单独的服务器,除了所有这些之外,它还使用便携式 RSA 密钥),但是由于破坏这个系统需要拥有两条独立的信息,它可能对您的目的来说足够安全。