在Android上保持TensorFlow模型加密

Try*_*ice 6 encryption obfuscation android android-assets tensorflow

我搜索了解是否有一种技术可以在Android应用程序中保持训练有素的张量流模型(.pb文件)安全,但没有找到任何有用的东西.我发布了一个包含张量流模型的应用程序,我在训练集上构建了该模型.当我发布应用程序时,任何人都可以访问该模型并将其用于自己的应用程序.我想知道是否有办法保护我放在Android应用程序资产文件夹中的张量流模型?

这是我在Android中加载模型的方式:

TensorFlowInferenceInterface tf = new TensorFlowInferenceInterface();    
tf.initializeTensorFlow(context.getAssets(), "file:///android_asset/model.pb");
Run Code Online (Sandbox Code Playgroud)

我想在应用程序中嵌入加密的模型并在运行时解密它,但如果有人调试应用程序,它可以获取密码并解密它.而且,TensorFlowInferenceInterface类中只有一个initizeTensorFlow方法的实现只接受(AssetManager assetManager,String model).可以写一个接受加密的一个,但它需要对Tensorflow C++库进行一些修改.我想知道是否有更可靠的解决方案.请问有什么建议吗?

P-G*_*-Gn 6

正如评论中提到的,当您在本地运行模型时,没有真正安全的方法来保证模型的安全。话虽这么说,你可以隐藏你的模型,让事情变得比周围更困难一些.pb

除了提供的名称混淆freeze_graph之外,一个好的解决方案是使用XLA AOT 编译将模型编译为二进制文件tfcompile。它生成一个包含模型的二进制库以及使用它的头文件。想要窥视您的网络的人将不得不通过编译的代码,这对.pb大多数人来说比读取文件的门槛更高。