dvd加密格式:css
dvd加密格式:css
css是一种用于加密电影的算法,核心元件是LFSR,已经被**。
LFSR
L表示linear。这是一个类似于一堆晶体管串联起来的东西。
上图:
1. 根据加密方和解密方都知道的规则,将一些特定编号的晶体管(包含1bit的数据)进行XOR运算;在最左端开辟一个新的晶体管,得出的结果存储在这里。
2. 最右的晶体管的值输出。
3. 所有晶体管向左移动一格。
3次操作为1轮。每轮输出1bit。前len(LFSR)轮输出的是初始值,后面的都是前面的经过XOR运算的结果。可以凭借此检验一个LSFR的输出序列是否合理。
利用LSFR进行加密
为啥用LFSR,可能只是它看起来比较复杂……
加密+**过程图:
加密
CSS:一个LFSR的输出序列。理论上可以无限长,但是被人限制成40bits
seed: 初始状态的LFSR
如何设定seed中每个晶体管的值:见图。
将两个seed分别进行8轮循环,得到1byte的输出,例如为10010101,11011110(0~127)
相加:101110011(0~255)
截取低7位:mod256,得到01110011
解密
只需要2^17次尝试,就能**CSS.
电影使用MPEG格式,明文前20位是固定的。因此可以通过k=m XOR c得到CSS前20位。
对于17bits的LFSR,遍历每种可能的初始状态S,对S进行足够数量的操作直到输出20byte的数据S1。用CSS前20位减去S1,即为25bits的LFSR经过足够数量的操作后输出的20byte数据T1。T1中前25bit都是初始状态的数据T。将T进行足够数量的操作直到输出20bytes,结果若与T1一致,则是一个合理的输出,尝试结束,得到正确的S和T以及他们输出的前20bytes。对得到的S1和T1继续进行加密操作,可以得到CSS的全部内容,通过m=k XOR c即可解出明文。