MATLAB 编译器的安全性 [关闭]

Posted

技术标签:

【中文标题】MATLAB 编译器的安全性 [关闭]【英文标题】:Security of MATLAB Compiler [closed] 【发布时间】: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 编译器潜在不安全行为的非常具体的问题,而不是询问有关其安全性的一般意见。跨度> 是的,我得到了一些我很满意的可靠答案,所以我真的看不到通过编辑或重新表述问题的任何好处。 【参考方案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 环境变量),这样我的实际设置都不会暴露

以上是关于MATLAB 编译器的安全性 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

matlab编译com问题多多

用于 LINUX 的 MATLAB 编译器

如何将结构从 Matlab 代码转换为 C 代码(使用 Matlab 编译器)

使用“deploytool”和 Matlab 编译器有啥区别?

Matlab 编译器和启动脚本

如何从不需要机器上的 Matlab 编译器运行时 (MCR) 的 matlab gui 生成可执行文件