Hi Henrik,
Rad [Visual C# MVP] has provided the basic idea of this approach. The key
DRM of this approach is using the undocumented file format to wrap the
image so that other vendor's image browser can not read it without your
company's file format specification.
Actually, DRM is out of the scope of .Net or C#. DRM is hot area in
computer science. Normally, the software DRM solution is not reliable
without special hardware support. Here is some comments, for your
information:
1. Undocumented custom file format. It is not uncommon for the hacker to
disassemble your application image browser to understand the logic of
parsing this undocumented file. After analysising the file format, it is
easy for the hacker to read the image part from the custom file format. DRM
lost now.
2. Although you may have encrypt the image file on the disk with enough
strong algorithm, the image still have to be decrypted in the memory before
viewing by your own application. Then the hacker process can still position
the decrypted JPG in the memory and dump/save it to the disk. DRM lost
again.
Please refer to the book below, if you need more information about how
hacker does the above 2 technologies:
"Reversing: Secrets of Reverse Engineering (Paperback) "
http://www.amazon.com/Reversing-Secr...m/dp/076457481
7/sr=1-1/qid=1167379224/ref=pd_bbs_sr_1/002-0699431-9284048?ie=UTF8&s=books
Another famous case study is Sony Music's DRM for its CD, which uses the
kernel-mode rootkit. This behavior is discovered by Mark Russinovich on his
wonderful blog below:
http://blogs.technet.com/markrussino...ny-rootkits-an
d-digital-rights-management-gone-too-far.aspx
However, using kernel-mode rootkit for DRM is also not perfect, Mark
Russinovich talks about how to use rootkit to defeat rootkit based DRM in
the article below:
"Using Rootkits to Defeat Digital Rights Management"
http://blogs.technet.com/markrussino...ing-rootkits-t
o-defeat-digital-rights-management.aspx
Using special hardware to decrypt and display the encrypted image is the
only perfect reliable way of implementing DRM, however, it is just a
principle solution, because many company can not afford the hardware based
solution.
Sorry, for the long comment, I just want to provide more information
regarding this interesting topic. The idea solution is based on your DRM
severity, in normal situation, the Rad [Visual C# MVP]'s solution is a good
balance, although you may add some type of encryption in file.
Happy New Year!
Best regards,
Jeffrey Tan
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.