我应该为适用于IOS和Android的视频流应用设计/实施加密解决方案。我的主要加密要求是在移动设备上保持视频流加密,并防止用户在任何其他设备/程序上运行它。因此,我需要一种好的方法来在每次播放期间解密流,而不必每次都打扰用户输入密码。
问题是我不熟悉加密技术(也是移动编程的新手),而我的创业公司没有足够的资源来聘请专家。通过阅读多个在线资源以及stackoverflow,我在最先进的加密设计实践方面做了很多研发。我已经学到了一些重要的原则,并且自然而然地结束了几个新的问题,因为这些问题对任何算法都不太具体,所以在任何地方都找不到答案。
我学到的是:
在阅读了很多文章/问题/解决方案之后,我最终概述了我能做些什么。
我的问题是:
即使在阅读了所有这些内容之后,有一点我不清楚。那里有几种算法。攻击者如何知道产品中使用了哪种算法?只有攻击者知道它,他才能设计破解它的方法,对吗?仅举一个弱DES算法实现的例子,只有当攻击者知道我正在使用DES时,她才能找到破解它的方法。她怎么知道的?我是否可以通过在程序中设计接口/声明字符串来欺骗攻击者,以使攻击者相信我正在实施AES,但实际上我只是实现了DES?加密设计师是否采用这种方法?
我生成密钥的方法是否违反了一般建议,不重新发明新的算法,重用经过验证的解决方案?我相信我不这样做。我使用标准的AES,但只是找到一个新的(只是发现自己,我知道有几个人以前会这样做)管理密钥的方法。我错了吗?
对不起,我的问题略微抽象。这是因为我还处于设计阶段,还没有具体实施。
答案 0 :(得分:3)
我的主要加密要求是在移动设备上保持视频流加密,并防止用户在任何其他设备/程序上运行它。
这称为“DRM”。有两种类型的DRM:已经破解的DRM,以及没有人想要破解的DRM。
我的创业公司没有足够的资源来聘请专家
你的初创公司应该用它的时间做其他事情。
我会使用AES 256对称方案进行加密/解密。
这违反了你学到的#1,#4和#5。
攻击者如何知道产品中使用了哪种算法?
查看您的代码。
我是否可以通过在程序中设计接口/声明字符串来欺骗攻击者,以使攻击者相信我正在实施AES,但实际上我只是实现了DES?
只有真正愚蠢的攻击者。智商高于平均水平的攻击者只需修改你的应用程序,在完成所有解码工作后,将所有已解码的字节写入磁盘。毕竟,字节必须在您的进程中已解码,以便能够将这些字节显示给用户,这意味着已修改您的字节可用于攻击者应用