我需要一些关于bios加载/执行过程的解释。我需要验证CPU执行的bios。我的想法是执行MISO数据流(从SPI BIOS闪存到CPU的数据)的HMAC-SHA1。
问题是我不确定MISO数据流是否总是相同的。我做了一些尝试,我总是得到一个与前一个不同的数据流。流的第一部分总是相同的,过了一段时间(我没有设备来转储整个通信并获得发生的时刻),流就不同了。我不确定,但我怀疑这是不同的,因为当计数器达到指定值时,我可以嗅探到流的几个字节,并且我得到了不同的嗅探值。我认为嗅探过程是正确的,但我不能确定(嗅探是由FPGA在CPU和SPI BIOS闪存之间执行的,我编写了VHDL )。
我还注意到,在bios执行期间,CPU至少读取2次重置向量( 0hFFFFF0 )。
CPU是否可能在每次加电时执行不同的步骤?在您看来,是否有可能对数据流进行身份验证?我需要的是确保执行的bios是有效的bios (我的bios )。
我很抱歉这个问题是一团糟,但我对bios和启动过程的了解很差。
谢谢你的帮助。
发布于 2015-08-15 17:16:55
是的,系统通常在通电后重置几次,并且BIOS采用不同的执行路径。此外,SPI控制器可以按块读取闪存部分并缓存这些部分,因此您看到的从闪存读取的内容不一定是CPU执行的内容。不幸的是,你的方法是不可靠的,有一个行业标准的方法可以做到这一点,它被称为测量引导,它涉及到TPM。请在谷歌上搜索一下,看看它是否能满足你的需求。
https://stackoverflow.com/questions/32013031
复制相似问题