gpt4 book ai didi

android - 如何在移动设备上安全地存储数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:24 25 4
gpt4 key购买 nike

我应该为旨在用于IOS和Android的视频流应用程序设计/实现加密解决方案。我的主要密码要求是使视频流在移动设备上保持加密,并防止用户在任何其他设备/程序上运行它。因此,我需要一个很好的方法在每次播放过程中解密流,而又不必每次都麻烦用户输入密码。

问题是我对密码学不熟悉(对移动编程也不陌生),而我的创业公司没有足够的资源来为此聘请专家。通过阅读一些在线资源以及stackoverflow,我在最先进的密码设计实践方面进行了大量的研发。我学到了一些重要的原理,并且自然而然地遇到了几个新问题,这些问题的答案在任何地方都找不到,因为这些问题并不是针对任何算法的。

我学到的是:

  • 密码术会使我的流媒体速度变慢。我需要明智地使用它。
  • 开发人员/设计人员不应尝试自己“发明”新的加密算法。始终建议使用现有的成熟解决方案。
  • 解决方案的优势/劣势不在于算法的设计/选择,而在于密钥管理和密钥管理策略
  • 无法在移动设备上存储解密密钥,每个人都建议不要这样做。因此,这排除了使用任何基于PKI的方案的可能性。唯一可能的解决方案是每次都要求用户输入密码来解密流。
  • 我有个想法使用ID-based encryption scheme并在移动设备本身上实现PKG。但是很快我意识到这也需要在设备上存储一个“秘密”,事实证明与上述问题相同。

  • 阅读了很多文章/问题/解决方案后,我最后概述了我可以做的事情。
  • 我将在C++中实现该解决方案以尽可能地使代码模糊。
  • 我将使用AES 256对称方案进行加密/解密。
  • 我将使用设备中的多个参数以及多个哈希级别(并在每个级别中将参数添加为salt以使其尽可能复杂)来导出将作为密钥的哈希。这将(希望)安全地标识我的用户安装。这是从here启发而来的。
  • 将数据下载到设备后,我将对设备本身的数据进行加密。从服务器到客户端,我将进行某种加扰,其密钥将被编码为算法(例如:空间填充曲线方法)。我知道这可能是最薄弱的环节,但是稍后我会找到更好的解决方案。

  • 我的问题是:
  • 即使阅读了所有这些内容,我仍然不清楚一件事。有几种算法。攻击者如何知道产品使用哪种算法?只有攻击者知道了,他才能设计出破解方法,对吗?仅以弱DES算法实现为例,只有攻击者知道我正在使用DES时,她才能找到破解它的方法。她怎么知道的?我可以通过在程序中设计接口/声明字符串来使攻击者相信我正在实现AES,但实际上我仅在实现DES,从而愚弄攻击者吗?密码设计师会采用这种方法吗?
  • 我的生成密钥的方法是否违反了一般性建议,即不要重新发明较新的算法,不要重用久经考验的解决方案?我相信我不会那样做。我使用标准的AES,但是只是找到一种新的(用于发现自己,我知道几个人以前会做过)管理密钥的方法。我错了吗?

  • 对不起,我的问题有点抽象。这是因为我仍处于设计阶段,还没有具体实现。

    最佳答案

    我的主要密码要求是使视频流在移动设备上保持加密,并防止用户在任何其他设备/程序上运行它。

    这称为“DRM”。 DRM有两种类型:已破解的DRM和尚未有人尝试破解的DRM。

    我的创业公司没有足够的资源来为此聘请专家

    那么,您的创业公司应该在时间上做其他事情。

    我将使用AES 256对称方案进行加密/解密。

    这违反了您所学的#1,#4和#5。

    攻击者如何知道产品使用哪种算法?

    通过查看您的代码。

    我可以通过在程序中设计接口/声明字符串来使攻击者相信我正在实现AES,但实际上我仅在实现DES,从而愚弄攻击者吗?

    只有真正愚蠢的攻击者。在完成所有工作后,智商高于一般岩石的攻击者只需修改您的应用程序,即可将所有解码字节写入磁盘。毕竟,必须在您的进程中对字节进行解码,才能将其显示给用户,这意味着修改了您的应用的攻击者可以使用这些字节。

    关于android - 如何在移动设备上安全地存储数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423952/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com