安全性 - 在设备上实时生成API密钥



首先,我不确定要问哪个堆栈交换网站,所以如果这是错误的,我道歉。

我读了这篇文章,该文章讨论了在您的移动应用程序上存储API键的最安全方法,而感兴趣的我感兴趣的方法之一是具有在本地生成API键并以此方式在服务器上具有相同功能的函数没有人可以入侵您的代码并获得API键字符串字面。这是文章所说的:

您的设备不需要存储任何钥匙,可以处理保护字符串字面的所有麻烦!这是一种非常古老的技术,由远程密钥验证等服务使用。

客户端知道返回键的函数((。后端知道客户端实现的函数((客户端通过函数((生成键,然后将其传递到服务器。服务器对其进行验证,并继续进行请求。您在连接点吗?与其具有返回字符串(易于识别(的本机函数,为什么不具有将您返回1到100之间的三个随机数字的函数?或一个函数,该功能以UnixTime表示当前一天并为每个不同的数字添加1个?从设备中获取一些上下文信息(例如所使用的内存量(提供更高程度的熵?

现在,我想知道的是什么是为了防止假设黑客使用与使用有效的API密钥相同的算法?在我看来

function generateKey() {
    var key = 0
    for(var i=0; i<4; i++) {
        key *= Math.floor((Math.random() * 10) + 1);
    }
    return key // after encrypting it with unixtime as seed, for example
}

如果此功能无法正常工作或愚蠢,请原谅,这实际上只是想到的第一件事。因此,黑客无法遵循相同的方法后,黑客不能遵循相同的方法,并提出了服务器将标记为有效的密钥?

如果您想在答案中发布一个示例,请随时删除加密,因为我只需要简单的"概念证明"答案。

谢谢

没有什么可以阻止攻击者这样做的。如果攻击者可以对您的应用程序进行反向工程,他们将找到您存储的任何秘密。

文章的重点是如何使假设的逆向工程师真正找到您的秘密难度。这就是为什么在文章中,作者正在从Java方法(易于分解(转移到本机方法(不太容易编译,但可以通过他们使用的长而仿佛是随机的API密钥来识别(到一个动态的 - 生成的键。

相关内容

  • 没有找到相关文章

最新更新