[翻译]安全存储私密信息

注:基于本人英文水平,以下翻译只是我自己的理解,如对读者造成未知影响,一切后果自负。如果发现有翻译错误的,欢迎交流指正。

原文地址: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 开源库就是强]

分享到: