我们正在设计一个以计算机为基础的考试系统,考生用自己的电脑写答案。考生的计算机是从考官提供的USB驱动器引导到自定义Linux操作系统的。
用于引导考生计算机的USB驱动器都包含完全相同的OS映像。
考试本身是由中央服务器提供的,答案在编写时被传送回中央服务器。所有涉及的计算机都在一个封闭的局域网中。
在发生硬件故障时,系统必须支持从传输到服务器的最新状态恢复考试。作为永久存储设备的USB驱动器可能会失败,考生的笔记本电脑也是如此。
考生的身份在考试前、考试期间或考试后的某个时间点由受信任的人核实。身份验证应该对考生造成最小的干扰,为受信任的人带来最少的工作。可以有多达几百人在同一空间参加考试,每20个考生中大约有一个值得信赖的人。
我们目前的设计是在考生开始考试时在计算机上生成一个强标记。令牌将使用考生提供的SSN和一些硬件UUID (CPU、USB驱动器)来计算。此令牌将存储在USB驱动器上。当考生完成考试时,她会把驾驶执照传给一个值得信赖的人。然后,受信任的人将使用专用计算机,根据存储在中央服务器上的令牌验证考生的身份和存储在驱动器上的令牌。
这种设计的优点是,一组考生很容易开始考试,在考试结束时,验证是一种只读的活动。这种设计至少有一个缺点:如果用于两个或两个以上考试者的令牌的硬件同时发生故障,则无法再验证谁掌握了哪个设备。例如,一个电源浪涌可能导致多台笔记本电脑和驱动器在同一时刻发生故障。
还想到了哪些其他攻击媒介,如何才能减轻它们呢?有更好的替代设计吗?
发布于 2015-07-29 17:49:45
攻击矢量:
如果没有预先认证哪个考生被分配给哪个令牌,考生可以在测试期间或之后轻松地交换驱动器。仅使用令牌是不够的,因为考生可能预先安排SSN交换。
缓解:在任何人被允许离开他们的办公桌之前,USB棒是由可信的人收集的(他也在现场验证身份,并将其与USB棒上的令牌相匹配)。在任何时候,任何人都不能在没有监督的情况下离开办公桌。即使在这种配置下,学生也有可能在确认ID之前交换了棍子。
海事组织,一个更好的配置是不要将任何东西存储在物理媒体上。
相反,整个测试都是远程服务的。为了开始测试,考生不仅必须提供他的个人证书(SSN,密码,无论你的设施/机构使用什么),再加上一个随机的、预先写好的密钥,只有在(1)他们的身份被核实之后,他们才能访问,并且(2)他们不能再与任何没有监督的人交互。
发布于 2015-07-29 19:16:18
为什么不保持它很简单:
考生在考试的第一页输入姓名+其他识别信息(如驾驶执照或护照号码)。
该信息将在页眉或页脚的某个地方显示所有后续测试屏幕。
然后他把驾驶执照放在他面前的桌子上。
同时,您可以打印出许可证号和名称的顺序列表。
然后,受信任的人四处查看ID、person和屏幕上显示的信息的通信。然后他检查名单上的人。
不需要密码+你有文件记录。如果完全失败,则在打印列表时在测试开始时失败。
如果你要求人们以后还车,就会排长队,几个人会把他们的车混在一起,有些人会松开它,有些人会跑出去把它忘在口袋里,或者放在桌子上。
另外一点:你真的必须使用SSN吗?我对此感觉不太好。如果只是为了验证,您可以将诸如驾照号码之类的敏感信息放在打印出来的最右边边缘,然后将其切断并丢弃,但保留选中的列表。
https://security.stackexchange.com/questions/95267
复制相似问题