我试图从我的汽车钥匙链中读取加密密钥以进行探索,主要是看看我是否可以克隆它。
我打开机箱,看到它使用的是 Microchip HCS361。HCS361 将其密钥存储在内部 EEPROM 中,在正常操作期间无法读取。
但是,数据表说“在编程周期结束时,可以通过回读 EEPROM 来验证设备”。提到的编程周期只是写入 EEPROM。
我在想,也许可以对芯片进行电压毛刺攻击,使其认为它刚刚被编程,以便可以读取 EEPROM。
其可行性显然取决于如何在芯片上实现读保护。我认为这基本上是检查是否在寄存器中设置了某个位,但我不确定。如果是这种情况,理论上应该可以通过故障绕过该指令。
根据下图如何执行验证,
我写了一个小的 Arduino 草图,它执行以下操作:
1. Set S1 and S3 to high
2. Perform the glitch
3. Clock S3 and read from DATA
并以不同的故障时间重试。
大多数情况下,我会在DATA
按下按钮时传输的线路上获得预期的 PWM 数据。然而,随着故障越来越长,我得到越来越多的 0。
这种方法甚至远程可行还是我应该只对芯片进行编程并将其重新学习到我的汽车上?