注:基于本人英文水平,以下翻译只是我自己的理解,如对读者造成未知影响,一切后果自负。如果发现有翻译错误的,欢迎交流指正。
原文地址:http://blog.synopse.info/post/2016/05/14/AntiForensicKeyStorage
现代程序中, 特别是 Client/Server N层架构软件比如mORMot,我们经常通过一些安全的方式,保留一些私密的信息。
问题的关键是他们存在于少量的字节中 (典型的如 16 or 32 字节), 一般存放在内存或磁盘。
考虑到最新的数据恢复的能力, 数据不能被可靠的摧毁(就是你删除了还可以恢复,比如你的F盘)。
我们刚刚在SynCrypto单元中增加了“Anti-Forensic Splitter”算法,在TKS1中提出,实现在LUKS标准。LUKS是独立于平台的标准磁盘格式,用于各种工具(自行百度了)。
磁盘上存储任何加密信息,必须采取额外的预防措施,因为数据是不能保证被抹去:
(列出几个原因,略…)
“Anti-Forensic Splitter”算法是支持安全破坏磁盘上的数据的关键。
关键思想是使信息膨胀,因此提高破坏单个位的机会,
信息在这样一种方式下变臃肿,一个数据的丢失导致原始信息成为不可恢复的。
(上帝要你灭亡,必先让你疯狂…)
The TKS1 theory is presented as such:
(讲原理,略…)
我们的 SynCrypto 单元实现了以下算法, 并使用SHA-256 (LUKS 使用 SHA-1)。
TAESPRNG 类现在提供2个新的方法:
function AFSplit(const Buffer; BufferBytes, StripesCount: integer): RawByteString;
function AFUnsplit(const Split: RawByteString; out Buffer; BufferBytes: integer): boolean;
更详细的使用方法请查看开源框架帮助文档。
[mORMot 开源库就是强]