最近做了一个采集系统,采集工业现场一些仪表数据。并将这些数据存进二进制文件中,并作为后期数据分析数据源。
    系统启动采集->停止采集生成一个完整的数据文件。系统采集过程中,可以暂停。暂停时,系统不往数据文件中写入数据。但是如果系统停电、再次启动时,需要加载之前的数据文件。流程图如下:
   
    用户要求系统能够识别数据是否被篡改过。我的想法主要通过非对称加密算法实现如下:
    系统启动运行的时候,读取私钥。然后系统开始采集时,创建数据文件。采集暂停、停止时对数据文件块进行签名(由于采集周期短,实时签名不合适),并将签名信息存储在数据文件头的某一块。
    存在这样一个问题,如果用户恶意断电,由于此时数据可能还没有进行数据签名。当系统重新上电,并运行系统加载之前的数据文件时,如何验证此时的数据文件没有更改。