我正在构建一个Matlab应用程序,以作为已编译的可执行文件进行部署。
此应用程序将需要读取/写入库中的文件。 这些文件包含数据,我想防止使用此应用程序的任何人读取它们。在没有任何保护的情况下,这些文件将另存为mat文件,并可以加载到Matlab工作区中。
我试图寻找一些加密解决方案。我发现有人建议使用AES,但是这种方法似乎存在安全存储加密密钥的内在问题(我不知道为什么)。
鉴于我只是想避免应用程序的用户访问那些数据文件,这样做的最佳方法是什么?如果AES实际上是一个好的解决方案,那么在要编译的代码中写入加密密钥是否安全?
答案 0 :(得分:0)
听起来您正在寻找的是功能加密。
在功能加密中,用户持有 主密钥msk可以生成功能密钥skf 对应于函数f;那么,任何具有密文Enc(x)的人 而功能键skf可以计算f(x),但除此之外一无所知 输入x。
请注意,Enc(x)是加密数据,f(x)是未加密数据的某些功能。
来源:https://eprint.iacr.org/2013/229.pdf
不幸的是,即使是功能性加密的最先进的实现,在实践中仍然很慢,并且不能轻易地推广到MATLAB程序中。
答案 1 :(得分:0)
编译应用程序时,MATLAB代码文件被加密;但没有发现,您发现的任何额外文件。
如果数据不是太大,请考虑将其保存在.m
文件而不是.mat
文件中。换句话说,编写一个简单的MATLAB函数来返回您的数据,并将其硬编码在文件中。由于这是一个代码文件,因此将在编译过程中对其进行加密。
您甚至可以使用内置函数matlab.io.saveVariablesToScript
为您自动生成此文件。