Reputation: 41
We are in the process of talking about how to set up an online video rental store. Besides streaming we would love it if the user would be able to download a movie first, which is then stored for a certain amount of time on the device itself, in this scenario an iOS-device.
But how can we achieve this and keep it save? Obviously we don't want the user to be able to simply copy the file from the filesystem which is a pretty easy task once the device is jailbroken.
So there is the need to store the file encrypted or with some sort of DRM. But even then: How to make sure that the user can't decrypt it himself? And once playback is started how can we achieve that we don't decrypt the whole file (which would be too big to store it in the memory) so that the user doesn't get access it.
Any ideas / solutions?
Upvotes: 4
Views: 2311
Reputation: 517
You will need to get agreement from the content owners who provide the video files - typically they will require a pre-certified DRM such as PlayReady (Microsoft) WideVine (Google) or Verimatrix.
Upvotes: 0
Reputation: 45598
Welcome to the world of DRM. The fact is, you can't stop a determined attacker from decrypting the video. If the user can see it playing, they will be able to access the full decrypted video, even if that means intercepting raw video signals sent to the LCD display.
The only thing you can do is make it more difficult through anti-debugging techniques and encryption.
Upvotes: 1
Reputation: 163
At some point the file is going to have to be decrypted on the device in order to play. A smart reverse-engineer will find out how to breakpoint after that point and copy the file. This is how most DRM is broken, it is just a matter of finding out how to get into the execution of the application at the correct point.
Your best bet is to build in as many anti-debugging features as possible to your code and/or stream it without local storage. Both options are not perfect and can be defeated over time, but it will at least slow most of them down.
Upvotes: 0