开发Android,安全数据传输最佳实践

时间:2010-11-03 23:04:38

标签: android security encryption

我正在寻找安全地将数据从远程服务器发送到Android设备的最佳做法。任何嗅探线路的人都需要保护这些数据,我希望HTTPS能够处理这么多。我真正关心的是......

数据将由应用程序使用,但隐藏在用户之外的真实内容。可以把它想象成用户正在进行测试,并且应用程序已经下载了所有可能的答案(并且知道哪一个是正确的)。显然,您不希望用户能够嗅探流量以发现哪个答案是正确的,您也不希望用户能够对应用程序进行反向工程并找到用于解密数据的超级秘密解密密钥。

这可能是一项不可能完成的任务,但有没有什么好方法可以真正锁定这种敏感数据?我知道这些天没有什么是安全的,甚至连蓝光解密密钥都没有。但也许有人可以指出我正确的方向。

2 个答案:

答案 0 :(得分:3)

如果您没有对设备进行物理控制,则无法使其100%安全。简单明了。

HTTPS将帮助您进行传输,但如果您要在本地计算机上保存数据(即使是临时/乱码格式),迟早会有人尝试使用它。

我建议您将(下一个)问题和可能的答案发送给客户端,然后将选择的答案发送回服务器,让服务器判断它是对还是错。冲洗并重复直到所有问题都完成,然后显示最终得分。

答案 1 :(得分:0)

确保设备上存在的信息确实是一项不可能完成的任务。 所有你真正希望做的就是让它比有人想要打扰更难。

但是,如果你的字面意思是一个测验,并且不想将答案发送到服务器进行验证,我会发现你可以使用单向散列函数,这样就不会有明文官方答案出现在手机上。相反,用户提供的答案通过该功能运行,并与散列的官方答案进行比较。

当然,这会受到字典攻击。如果潜在答案的空间相当大,你可以使计算成本足够高,手动解决所有问题会更快 - 但是,我的猜测是答案空间不会很大(因为答案必须是角色的特征确切) - 你甚至可能会说多种选择。在这种情况下,字典攻击会很快,真正的工作就是对apk进行逆向工程以识别单向散列函数,或者让apk进入模拟器,其中输入可以通过编程方式编写脚本以进行字典攻击