在Android上保持TensorFlow模型加密

时间:2017-03-17 23:00:41

标签: android encryption tensorflow obfuscation android-assets

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

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

TensorFlowInferenceInterface tf = new TensorFlowInferenceInterface();    
tf.initializeTensorFlow(context.getAssets(), "file:///android_asset/model.pb");

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

1 个答案:

答案 0 :(得分:2)

如评论中所述,在本地运行模型时,没有真正安全的方法可以确保模型安全。话虽如此,您可以隐藏模型并使其比起.pb更加困难。

除了name obfuscation provided by freeze_graph之外,一个好的解决方案是使用tfcompilecompile to model to a binary using XLA AOT compilation。它会生成一个二进制库,其中包含您的模型以及要使用的模型的头文件。这样一来,想要窥视您的网络的人就必须通过编译后的代码,对于大多数人来说,这是比读取.pb文件更高的标准。