【问题标题】:Security of MATLAB Compiler [closed]MATLAB 编译器的安全性 [关闭]
【发布时间】:2014-09-26 00:26:23
【问题描述】:

我很想知道使用 MATLAB Compiler 从 2014 年开始编译源代码的安全性如何?我从 2011 年阅读了两个关于该主题的主题,其中指出存在安全漏洞。

在 2011 年的这个线程中,声明源文件的名称向用户公开 http://www.mathworks.fr/matlabcentral/newsreader/view_thread/299373

在 2011 年的这个帖子中,据说 m 文件有时会暴露在主机系统中不明显的位置。 http://www.mathworks.com/matlabcentral/newsreader/view_thread/310932

有人知道这些缺陷是否已经解决了吗?

【问题讨论】:

  • 投票重新提出这个问题 - 它实际上不是基于意见的,而是询问有关 MATLAB 编译器潜在不安全行为的非常具体的问题,而不是询问有关其安全性的一般意见。跨度>
  • 是的,我得到了一些我很满意的可靠答案,所以我真的看不到通过编辑或重新表述问题的任何好处。

标签: matlab security encryption matlab-deployment matlab-compiler


【解决方案1】:

由 MATLAB 编译器(和相关工具箱)生成的所有应用程序都包含一个嵌入式 CTF 存档。该存档与特定于目标的样板代码一起嵌入到生成的组件(独立 EXE、共享 DLL、Java 包、.NET 程序集等)中,以将其作为预期格式的二进制组件公开。

CTF 存档以加密形式(AES 加密)包含项目文件的所有 MATLAB 源代码和数据。当应用程序第一次运行(到可配置的缓存位置)时,归档文件被提取,然后文件被解密并在 MCR 运行时的上下文中执行。所以即使缓存目录中有一堆可见的 M 文件,它们都是加密形式的(没有明文代码写入磁盘)。

您可以在the documentation 中阅读更多相关信息。

在我看来,这里没有明显的缺陷,也从来没有……我不认为源文件的名称会让人担心暴露!

【讨论】:

  • 好的,谢谢。关于“缓存目录中的可见 M 文件”,我有两个问题。是否可以提取它们以便可以以任何方式单独使用单独的(加密的)文件(例如调用它并接收输出)?我是否理解公开源文件的名称是否正确?
  • 是的,源文件的名称(以及存储它们的任何子目录的名称)在临时提取目录中是可见的。所有 MATLAB 源代码文件都是加密的,并且(除了破坏 AES 加密)除了它们所属的已编译应用程序之外,没有任何方法可以使用或调用它们。
  • @Amro 我无法再访问 MATLAB Compiler,因此无法检查。但如果您有访问权限,或许您可以确认.m 文件以外的文件 在包含在应用程序中时是否已加密。我只记得他们不是——但也许我记错了。继续...
  • ...如果我是对的,它们没有加密,那么这就是您需要注意的事情 - 例如,您可能在应用程序中包含 .mat 专有数据文件。此外,您的 MATLAB 首选项目录包含在存档中,该存档存储在常规文本文件中,而不是 .m 文件中,并且可以查看。
  • @SamRoberts:是的,没错(我还没有检查过,但我也记得);项目中的 MAT 文件未加密,prefdir() 的内容也未加密。首选项部分的解决方法是创建一个用于打包应用程序的临时 MATLAB 配置文件(通过在启动 MATLAB 之前设置 MATLAB_PREFDIR 环境变量),这样我的实际设置都不会暴露
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多