本地软件的视频加密

时间:2013-08-21 09:08:14

标签: c# encryption video-streaming video-encoding

我想在我的本地软件中显示一些视频文件,并提供一些保护,以防用户想要复制它们。我搜索了加密方法和一些DRM解决方案,但我不想要互联网连接,如果这不是唯一的选择。我正在用C#开发我的应用程序。视频文件将在CD上。

基本上我打算做的是,将视频文件保存在CD上,并在RAM上进行解密,这样每个播放器都不能播放加密文件,只有我的播放器可以,并且不会被复制(我希望)。我听说过一个类似于Delphi的项目,但我不知道这是否是C#中的最佳方式。

我的问题是

  1. 这是C#的好方法吗?
  2. 此方法适用于mp4或avi文件吗?
  3. C#中是否有任何用于此过程的库?
  4. 进度: 我搜索了SO中的CD复制保护。用户建议保留CD预写区域的数据并将其存储在某处。也许我可以制作独特的玩家,每个人都可以嵌入这些数据。或者,在网络上使用数据库,但我担心这会产生更多的安全漏洞,我还需要保护数据库。但是,它可能是一个更好的主意,因为没有用户将密钥嵌入其程序中。我觉得我真的被卡住了:)任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:2)

  1. 不,这不是一个好方法。您的假设是CD将被复制,但您的播放器不会。这是不太可能的。

  2. 一般来说,这些文件可以由其他应用程序播放(如果您加密文件,它们将不再是AVI文件)。但是,您可以对视频进行加扰,因此其他应用程序可以播放它,但它看起来完全错误。可以像在RGB中翻转R和G通道一样简单。

  3. 不,因为这个想法一开始就有缺陷。见第1点。但可能会出售蛇油。

  4. 请记住,您的预算比好莱坞的预算少了十亿倍。他们想要你想要的DRM,但仍然无法得到它。

答案 1 :(得分:1)

通过默默无闻,DRM 始终安全。只要你模糊不清,它可能适合你一段时间。但是......

您可以使用自定义解密视频播放,人们只需复制播放器即可。因此,他们也必须保护玩家 - 这意味着生成一个魔术令牌并让用户输入该令牌。除非你想要。如果您希望这样做,您必须具有某种形式的产品注册,其中注册密钥(魔术代币)基于识别目标计算机上的信息。

例如,您组合了目标计算机中的一些“东西”,比如主硬盘卷ID,创建时间戳或系统卷(只是为了保持简单),然后编写一个注册软件的Web服务时间项并生成令牌,并通过任何机制将其放回用户计算机。然后,您的软件在播放器运行时通过相同的算法计算令牌,如果不匹配,则会因许可错误而失败。

您现在遇到了新问题。 1)人们可以检查本地可执行文件以找出您的令牌算法以及计算OK / NOT OK标志的位置并修补代码以使其可以解密视频流。 2)如果有人因硬盘驱动器故障而重建计算机,则其软件将无法运行。所以,除非你想让不满意的客户在facebook上说出关于你的不好的事情,否则你必须明白这一点。 3)人们知道你的许可服务器会在你停业,死亡等等时关闭。所以他们不会在第一时间购买受保护的视频4)你会浪费很多时间可以花更多的钱有效地赚钱赚钱。 5)你也会浪费金钱

通过使用DVD及其本机复制保护,您不会浪费大量时间,但是您无法获得太多保护,或者很多人都很聪明地输入他们最喜欢的“解密DVD”搜索引擎。这是“Kobayashi maru场景”

忘了提一个最后的棺材钉子。 C#是一种糟糕的安全方法,因为CLR很容易被反汇编,你还需要混淆你的C#代码 - 更容易反编译/调试本机x85代码。

答案 2 :(得分:0)

您可以尝试BoxedApp video streaming(商业,付费),这适用于任何流。