67、加密数据库解密技术深度剖析

加密数据库解密技术深度剖析

1. 加密块特征与CryptoPP库分析

在对加密数据库进行分析时,我们发现大部分加密块的大小介于36到48之间,且所有块的大小均为偶数,不存在大小为奇数的块。同时,存在能在字节甚至比特级别操作的流密码。

用于浏览该加密数据库的程序用C#编写,其.NET代码经过了深度混淆。不过,其中的DLL包含x86代码,经检查发现其中有Popular open - source library CryptoPP的部分代码。由于CryptoPP是开源库,所以很容易找到DLL中的所有函数。

CryptoPP库拥有众多加密函数,包括AES(Rijndael)。较新的x86 CPU具备AES辅助指令,如AESENC、AESDEC和AESKEYGENASSIST 。较新的CryptoPP版本会使用这些指令,但在解密过程中,AESENC会被执行,而AESDEC却未被执行。经检查,CPU是支持这些AES指令的,这就引发了疑问:为何程序使用AES加密来解密数据库呢?

我们找到了加密块的函数 CryptoPP::Rijndael::Enc::ProcessAndXorBlock ,它可以调用 Rijndael::Enc::AdvancedProcessBlocks() ,而后者又能调用包含AESENC指令的 AESNI_Enc_Block AESNI_Enc_4_Blocks 。由此可知, CryptoPP::Rijndael::Enc::ProcessAndXorBlock() 用于加密一个16字节的块。以下是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值