在移动Web应用程序中存储“应用程序机密”的最佳方法?

时间:2018-06-20 10:17:13

标签: javascript android ios jquery-mobile app-secret

我想用JavaScript开发一个“ 响应式移动Web应用程序(iOS / Android) ”,以与Smart Contract和区块链进行交互。

我决定开发一种混合移动Web应用程序。 但是,问题是在使用JavaScript开发移动Web应用程序的情况下如何安全存储App Secret? 既然如此,我们不想将其存储在移动设备中,基于安全性的区块链

1 个答案:

答案 0 :(得分:0)

  

我想用JavaScript开发一个“响应式移动Web应用程序(iOS / Android)”,以与Smart Contract和区块链进行交互。

对于您来说是将移动应用程序编写为在移动设备中具有完全响应能力的网站,还是考虑使用Ionic,React Native或其他框架来编写它,对我来说还是不清楚的。

如果这是一个响应迅速的网站,那么据我所知,一旦没有安全的方法来保护秘密,请忽略我的其余回答。

现在,如果跨平台移动应用程序是使用许多可用框架中的任何一个完成的,那么请继续阅读,因为存在一种可能的解决方案来解决它们上的秘密问题。

  

但是,问题是在使用JavaScript开发移动Web应用程序的情况下如何安全存储App Secret?

使用XposedFrida之类的工具进行逆向工程时,客户端上运行的任何内容都将很容易受到攻击。

  

因此,由于安全性,我们不想将其存储在移动设备和区块链中。

您已经指出,移动或区块链不是存储应用程序密钥的好地方。

可能的解决方案

要加强您的移动应用程序与API服务器之间的通信,您应该使用移动应用程序证明服务,该服务将在运行时保证您的应用程序未被修改或不在监狱或生根的设备中运行,方法是:使用集成在您的App中的SDK和在云中运行的服务。

成功证明应用程序完整性的云服务会发出JWT token签名,该秘密使用仅API服务器和云服务可识别的秘密进行签名;如果失败,则JWT令牌将使用伪造的秘密进行签名, API服务器不知道。这种方法将允许API服务器仅在可以验证JWT令牌中的签名时提供请求,而在验证失败时拒绝请求。

一旦移动应用不知道云证明服务使用的秘密,就无法在运行时对其进行反向工程,即使该应用被篡改,在有根设备中运行或通过连接进行通信时,成为中间攻击中一名男子的目标。

this article上,您将通过示例了解如何使用云中的移动应用程序证明服务来认证React Native App。

免责声明:我在Approov工作

Xposed

  

Xposed是用于模块的框架,可以在不触摸任何APK的情况下更改系统和应用程序的行为。太好了,因为这意味着模块可以用于不同版本甚至ROM,而无需进行任何更改(只要原始代码的更改不太多)。撤消也很容易。当所有更改都在内存中完成后,您只需停用模块并重新启动即可恢复原始系统。还有许多其他优点,但这仅是一个优点:多个模块可以对系统或应用程序的同一部分进行更改。使用修改后的APK,您可以决定一个。除非作者构建具有不同组合的多个APK,否则无法将它们组合在一起。

Frida

  

面向开发人员,逆向工程人员和安全研究人员的动态仪表工具包。

JWT Token

  

基于令牌的身份验证

     

JSON Web令牌是一种开放的行业标准RFC 7519方法,用于在双方之间安全地表示声明。