如何保护我的字符串(包含 Api 密钥 OpenAI)免受逆向工程颤振的影响

How can i protect my string (Contains Api key OpenAI) from reverse engineering flutter

提问人:Android_devNL 提问时间:2/28/2023 更新时间:3/2/2023 访问量:837

问:

我想将我的 flutter 应用程序发布到 google play 商店,但我在想我的 api 密钥安全吗,其他人可以不访问我的 api 密钥并花费我的费用使用它吗?所以我发现我的 flutter 应用程序可以被逆向工程,并且 api 密钥可以被盗。我怎样才能让这种情况更难发生?我已经有了混淆它的想法,但它们是另一种额外保护它的方法吗?

String apikey "ApiKey"; 

我的 API 密钥现在已硬编码到应用程序中

Android iOS 字符串 Flutter 安全性

评论

0赞 GrahamD 2/28/2023
api 密钥有什么用?
0赞 Android_devNL 2/28/2023
api 密钥是他们用于识别我的 openai 应用程序。这是必需的。没有这个,我不能向 OpenAI 的 Ai 提出任何要求。
1赞 GrahamD 2/28/2023
对不起,应该更好地阅读标题。如果在应用程序中使用它,您将无法真正保护它。唯一真正的安全性是通过从应用程序调用函数从安全服务器使用它。不过,此链接将讨论您的具体情况。help.openai.com/en/articles/......此外,如果它当前在应用程序中是硬编码的,并且你已将其保存到 GitHub,它也可能被公开。
0赞 GrahamD 2/28/2023
另请参阅此 SO 帖子: stackoverflow.com/questions/61894868/...
0赞 Android_devNL 2/28/2023
你知道如何在 flutter 中使用密钥管理服务吗?

答:

2赞 Exadra37 3/2/2023 #1

您的问题

我想将我的 flutter 应用程序发布到 google play 商店,但我在想我的 api 密钥安全吗,其他人可以不访问我的 api 密钥并花费我的费用使用它吗?

不是它根本不安全,任何人都可以访问它。这就像在运行时使用静态分析、MitM 攻击和/或检测一样简单。让我们看看如何...

对移动应用程序进行逆向工程

所以我发现我的 flutter 应用程序可以被逆向工程,并且 api 密钥可以被盗。

在我撰写的有关移动和 API 安全性的系列文章中,您可以阅读文章如何使用静态二进制分析从移动应用程序中提取 API 密钥,以了解提取 API 密钥是多么容易:ApiKey

可用于逆向工程的开源工具范围非常广泛,我们真的无法在本文中触及这个主题的表面,而是我们将专注于使用移动安全框架(MobSF)来演示如何对移动应用程序的APK进行逆向工程。MobSF 是开源工具的集合,这些工具在有吸引力的仪表板中显示其结果,但在 MobSF 和其他地方使用的相同工具可以单独使用以实现相同的结果。

在本文中,我们将使用 Android Hide Secrets 研究存储库,这是一个虚拟的移动应用程序,使用多种不同的技术隐藏了 API 密钥。

对于使用代码模糊处理的移动应用

我已经有了混淆它的想法

如果你使用混淆,那么通过静态分析会更难找到它,但这对攻击者来说不是问题,因为在运行时很容易用 MitM 攻击提取你的 Api 密钥,你可以在我的文章中阅读它是如何完成的 Steal that Api Key with a Man in the Middle Attack

为了帮助演示如何窃取 API 密钥,我在 Github 上构建并发布了适用于 Android 的 Currency Converter Demo 应用程序,该应用程序使用我们在早期的 Android Hide Secrets 应用程序中使用的相同 JNI/NDK 技术来隐藏 API 密钥

因此,在本文中,您将学习如何设置和运行 MitM 攻击来拦截您控制的移动设备中的 https 流量,以便您可以窃取 API 密钥。最后,您将在较高层次上了解如何缓解 MitM 攻击。

对于使用证书固定的移动应用

你没有提到它的用途,但它是防止 MitM 攻击的常见且推荐的防御层,至少可以阻止不太熟练的攻击者,但不幸的是,它可以在运行时使用检测框架来绕过,你猜怎么着,你可以在我的文章中阅读如何做到这一点如何在 Android 应用程序上使用 Frida 绕过证书固定,向您展示如何做吧:

今天,我将展示如何使用 Frida 检测框架在运行时挂接到移动应用程序并检测代码,以便即使移动应用程序已实现证书固定,也能成功执行 MitM 攻击。

绕过证书固定并不太难,只是有点费力,并且允许攻击者详细了解移动应用程序如何与其 API 通信,然后使用相同的知识来自动执行攻击或围绕它构建其他服务。

尽管它可以被绕过,但它仍然建议使用证书固定。

可能的解决方案

我怎样才能让这种情况更难发生?我已经有了混淆它的想法,但它们是另一种额外保护它的方法吗?

混淆只能有效保护代码的知识产权,但只会在代码上隐藏您的秘密,而不是在应用程序运行时隐藏。

我建议您阅读我接受的问题的答案如何在没有人窃取令牌的情况下从我的移动应用程序中使用 API,其中运行时机密保护似乎是一种适合您的用例的方法。

简而言之,您将把密钥存储在云中,并及时安全地交付到您的移动应用程序中,但前提是该密钥没有受到攻击,在root或越狱设备上运行,未附加到调试器或在模拟器中运行。

你想走得更远吗?

在回答安全问题时,我总是喜欢引用OWASP基金会的出色工作。

对于 API

OWASP API 安全前 10 名

OWASP API 安全项目旨在通过强调不安全 API 的潜在风险,并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API 安全项目将创建和维护 10 大 API 安全风险文档,以及创建或评估 API 时最佳实践的文档门户。

对于移动应用程序

OWASP移动安全项目 - 十大风险

OWASP移动安全项目是一个集中式资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供发展控制,以减少其影响或被利用的可能性。

OWASP - 移动安全测试指南

《移动安全测试指南》(MSTG)是一本用于移动应用安全开发、测试和逆向工程的综合手册。