一种文件加密方式的安全性分析

Posted by LuckXiang on October 21, 2019

0x00 前言

最近接触到一种文件加解密的机制,对流程里边的某一部分操作稍有困惑,分析之后豁然开朗,遂记录之。

0x01 加密流程

  • (1)从otp上获取soft key(IMK)(soft key是M2M模块选择otp soft key)
  • (2)从rng模块获取随机数(EIK)
  • (3)通过M2M模块对EIK解密(解密key为IMK,算法为AES128,模式为ECB)生成IK
  • (4)通过M2M模块对u盘里面的image进行加密(加密key为IK,算法为AES128,模式为CBC)生成Encrypted image
  • (5)最终输出EIK和Encrypted image到u盘

0x02 解密流程

  • (1)从u盘获取EIK和Encrypted image
  • (2)从otp上获取soft key(IMK)
  • (3)通过M2M模块对EIK解密(解密key为IMK,算法为AES128,模式为EBC)生成IK
  • (4)通过M2M模块对Encrypted image进行解密(解密key为IK,算法为AES128,模式为CBC)生成image

安全性分析

这个流程里边令我困惑的地方是加密第三步,这里为什么是解密而不是加密呢。 我先是这样理解的,EIK是要写到U盘的,所以它肯定是密文,而IK则是明文。把密文变成明文就是解密了。 但是这样并没有接触到问题的本质,继续思考: 为了安全性,每次对文件加密要用不同的IK,那么怎么才能生成不同的IK呢,我们先假设存在一个IK,用IMK加密可以得到EIK.反之,用IMK解密EIK就可以得到IK了。 由于EIK是个随机数,所以IMK解密得到的IK也是一个随机数。这样每次加密文件的key(IK)都不一样而且没法预测。安全性得到了提高。
OVER