2010-11-03 41 views
0

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

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

这可能是不可能的任务,但是有没有什么好的方法可以真正锁定这类敏感数据?我知道现在没有什么是安全的,甚至不是蓝光解密密钥。但也许有人可以指引我走向正确的方向。

回答

3

如果您没有设备的物理控制,那么您无法使其100%安全。干净利落。

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

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

+0

这就是我能想到的最好的。但是,如果我真的很偏执,我会在下一组问题中包含合格/不合格(这使得特殊情况下的第一个和最后一个问题),或者如果单独发送合格/不合格,我可能会填充单个boolaen位1K左右的随机噪声,以防止使用者截获通过/失败的数据包并取代它们。矫枉过正,但对金融交易来说是否足够偏执? – Mawg 2010-11-05 00:40:38

0

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

但是,如果您的字面意思是一个测验,并且不想将答案发送到服务器进行验证,那么我发现您可以使用单向哈希函数,从而永远不会有纯文本官员回答目前的电话。相反,用户提供的答案是通过该函数运行的,并与散列的官方答案进行比较。

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