Hi,
in short, I've implemented bus encryption support in libaacs. My work
can be found at: https://github.com/rraptorr/libaacs/compare/bus_enc

It seems to work quite nicely although I only have one disc with bus
encryption enabled. I've tried to split my work in way that is easier
to review, so there are several commits. For details about about bus
encryption itself please see commit messages, I've tried to explain
how it works in them.

I've tested this code on Linux x86_64 with mplayer and on Windows 7
with 64 bit version of VLC (whatever I've tried I was unable to build
32 bit version of libaacs.dll with MinGW that VLC would recognize).

While implementation is complete there is one place for improvement.
Currently, bus encryption requires a working host certificate, when
the host certificate is revoked the disc (I am talking about bus
encryption enabled discs only) becomes completely unplayable. For
backup purposes it would be nice to store Read Data Key somewhere
(this key is used to decrypt bus encryption). The only problem is that
this key is drive dependent. I see two possible solutions:
- cache read data key in the same way as VUK, but the cache would have
to be named after the drive model (and in theory the same drive models
might have different keys so that can be not enough)
- extend disc entry in KEYDB.cfg to store it, probably with several
possible entries per disc (if one has several drives); unfortunately
there is no easy way to check if correct key was used, only checking
the video stream after all decryption layers are applied
Any thoughts on this?

I'm looking forward for any comments, feedback and reports if it works
for anyone else:)

-- 
Janusz Dziemidowicz
_______________________________________________
libaacs-devel mailing list
libaacs-devel@videolan.org
https://mailman.videolan.org/listinfo/libaacs-devel

Reply via email to