No Slide Title - [email protected]

Transcrição

No Slide Title - [email protected]
Faculdades Integradas Barros Melo
Pós Graduação em Segurança de Redes
Criptoanálise do Content
Scrambling System (CSS)
Frederico Madeira <[email protected]>
Célio Filho <[email protected]>
Fábio Meira Lins <[email protected]>
Cleiton Martins
Agenda

















Visão Geral
Visão Geral sobre as Chaves
Visão Geral do Processo
Autenticação Mútua
Disk e Player Keys
Linear Feedback Shift Register (LFSR)
LFSR Genérico
CSS: LFSR-17
CSS: LFSR-25
CSS: Adição LFSR
LFSR Inversão da Saída
CSS: Data Decryption
CSS: Key Decryption
Fraqueza #1: LFSR Cipher
Fraqueza #2: Mangled Output
Region Code
DeCSS
Visão Geral
DVD Player
Computador/Host
“Secret Key”
DVD
Player Keys
Área Oculta
“Secret” Key
Region Code
Bus
Key
Por título Title Key
Table of Encrypted Disk Keys
Disk Key Hash
Region Code
Bus
Bus Key
Visão Geral sobre as Chaves

Authentication Key

Esse “segredo” é usado como parte do processo de autenticação mutua

Session Key (Bus Key)



Essa chave é negociada durante a autenticação e é usada para encriptar o título e
as disk keys antes de enviá-las pelo bus desprotegido. A encriptação é necessária
para evitar interceptação das chaves
Player Key
Essa é a chave licenciada pela “Associação de controle de cópias de DVD” para o
fabricante do player de DVD. Ela é armazenada junto com o player e é utilizada para
estabelecer uma relação de confiança com o player. É usada para desencriptar a
disk key

Disk Key

É usada para encriptar a title key. É desencriptada usando o player key.

Sector Key



Cada setor possui 128-bytes de cabeçalho em texto-plano. Os bytes de 80-84 de
cada cabeçalho do setor contém uma chave adicional usada para codificar os dados
dentro do setor.
Title Key
Essa chave é resultado de um XOR com a sector key usada para encriptar os dados
dentro do setor.
Visão Geral do Processo

Fase 1: Autenticação Mútua


Fase 2: Decodificando o disco


O DVD player envia um setor para o host.
Fase 5:


A title e bus keys (session) são enviadas do player para o host. A bus key
(session) é usada para encriptar a title e a disk keys em trânsito para
prevenir um ataque de man-in-the-middle.
Fase 4:


O DVD player tenta cada uma das possíveis player keys até que ele consiga
decodificar a disk key. A disk key é o segredo geral do disco.
Fase 3: Enviando a disk e a title keys


O host e o driver usam um sistema de desafio-resposta (challengeresponse) para estabelecer uma relação de confiança entre eles. Nesse
processo eles negociam a bus key (session).
O host decodifica a title key usando a disk key.
Fase 6:

O host decodifica o setor usando a title key, e a sector key contida no
cabeçalho do setor
Autenticação Mútua
Host
Drive
Request AGID
AGID
Initialization done
Initialization done
ChallengeH (nonce)
Encrypted ChallengeH
Decrypt and verify
ChallengeH
Encrypt
ChallengeH
ChallengeD (nonce)
EncryptedD
Encrypt
ChallengeD
Success or Failure
Decrypt and verify
ChallengeD
Disk e Player Keys







Cada player possui um pequeno número de chaves
Cada disco é codificado usando uma disk key.
Cada disco possui um setor escondido. Esse setor é
previamente todo gravado com 0’s em DVD's graváveis.
Esse setor guarda uma tabela contendo a disk key
encriptada com uma das 409 possíveis player keys.
Ele também guarda a disk key encriptada com a disk key.
O player desencripta a entrada apropriada da tabela e
depois verifica se ela é correta decodificando a disk key
encriptada.
O mecanismo de encriptação é o mesmo discutido
anteriormente para as outras chaves.
Linear Feedback Shift Register (LFSR)

Pseudo-random bit stream


Uma técnica usada para codificar streams e fazendo um XOR com
um bit stream pseudo-aleatório. Se esse bit stream randômico pode
ser regenerado pelo receptor da mensagem, ele será capaz de
decodificá-la repetindo a operação de XOR
Linear Feedback Shift Register (LFSR)





O LFSR é uma técnica popular para geração de bit streams pseudoaleatório. Após o LFSR ser alimentado com uma entrada (seed), ele
pode ser ativado para gerar o stream de bits.
Infelizmente os LFSR não são verdadeiramente randômicos, eles são
periódicos e eventualmente se repetem.
Em geral, quanto maior for o LFSR, maior será o seu período. O
período também depende de configurações particulares do LFSR.
Se o valor inicial do LFSR for 0, ele produzirá apenas 0's, essa
característica é chamada de null cycling
LFSR frequentemente são combinados através de adição,
multiplexacão ou com portas lógicas para gerar um bit stream
menos previsível.
LFSR Genérico
output
taps
Feedback Path)
Feedback Function
•O registro é alimentado com um valor inicial (seed).
• A cada clock, a função de feedback é acionada usando como entrada os
tap bits. O resultado é rotacionado para o bit mais a esquerda do registro.
O bit mais a direita é rotacionada para a saída output.
•Dependendo da configuração (taps e feedback function), o período pode
ser menor do que o valor ótimo.
LFSR Genérico
CSS: LFSR-17
garbage
17
feedback
path
4
15
1
taps
Exclusive Or (XOR)
output
•Esse registro é inicializado ou com dois bytes reais ou derivados da chave
•Durante a inicialização, um bit 1 é inserido na posição 4, para garantir que o regisrto
não começa com todos os bits de sua saída com 0's causando null-cylce.
•O valor que está sendo rotacionado é usado como saída ao invés do bit típico de saída.
CSS: LFSR-25
garbage
25
feedback
path
15
5
4
1
taps
Exclusive Or (XOR)
output
•Esse registro é inicializado ou com três bytes reais ou derivados da chave
•Durante a inicialização, um bit 1 é inserido na posição 4, para garantir que o registro
não começa com todos os bits de sua saída com 0's causando null-cylce
•O valor que está sendo rotacionado é usado como saída ao invés do bit típico de saída.
CSS: Adição LFSR
key
LFSR-17
8 ticks
1 byte
Optional bit-wise inverter
+ 8-bit add
Output byte
key
LFSR-25
8 ticks
carry-out
from prior
addition
1 byte
carry-out
Optional bit-wise inverter
LFSR Inversão da Saída
Inversão dos Bts de Saída do LFSR
LFSR-17
LFSR-25
Authentication
Yes
Yes
Session key
No
No
Title Key
No
Yes
Data
Yes
No
CSS: Data Decryption
Output byte from
LFSRs
Exclusive Or (XOR)
Input data byte
Output data byte
Table-based
substitution
•Fazendo-se um XOR entre os bytes 0 e 1 da title key com os bytes 80 e 81 do
cabeçalho do setor, temos a semente para inicializar o LFSR-17
• Fazendo-se um XOR entre os bytes 2,3 e 4 da title key com os bytes 82, 83 e 84 da do
cabeçalho do setor temos a semente para inicializar o LFSR-25. O bit 1 é inserido no
bit 4 rotacionando-se tudo para a direita em uma posição
• A saída do LFSR-17 é seguramente invertida antes de ser adicionada LFSR-25.
• Muito parecido com o DES, uma tabela de substituição é aplicada a entrada dos
dados
CSS: Key Decryption
Bytes of
Ciphertext
+
+
Bytes of
Plaintext
1
+
Lk
+
2
Lk
+
3
Table
lookup
Lk
+
+
Table
lookup
Table
lookup
Table
lookup
4
Table
lookup
Lk
Lk
Lk
3
Table
lookup
Table
lookup
Table
lookup
+
2
1
0
Table
lookup
Table
lookup
Lk
Lk
Lk
Lk
+
+
4
5
Nota: Lk é o byte de entrada descriptografado usando o mesmo padrão como foi
mostrada para os bytes de dados, com um set de inversores para os tipos de chaves.
Fraqueza #1: LFSR Cipher
- 240 não é realmente muito grande – basta fazer um
ataque de força bruta.
Com 6 bytes de saída:
 Chute o status inicial do LFSR-17.
 Rotacione 4 bytes.
 Use esses 4 bytes para determinar os 4 bytes de saída
correspondentes ao LFSR-25.
 Use a saída do LFSR-25 para determinar o status do
LFSR-25’s.
 Rotacione 2 bytes em ambos LFSRs.
 Verifique esses dois bytes. Comemore ou tente
novamente.
 Isso é um ataque de 216 .


Fraqueza #1: LFSR Cipher (cont)







Com 5 bytes de saída:
Chute o status inicial do LFSR-17
Rotacione 3 bytes
Determine os bytes correspondentes da saída do LFSR-25
Tente ambas possibilidades:
 Rotacione de volta 3 bytes
 Selecione a configuração onde o bit 4 é igual a 1 (essa
é a configuraćão inicial).
Comemore ou tente novamente
Esse é um ataque a 225
Fraqueza #2: Mangled Output

Com um ciphertext e um plainttext conhecido
 Chute L
k4



Trabalhe voltando e verifique a o byte de
entrada
Esse é um ataque a 28 .
Repita para todos os 5 bytes – isso lhe dá os
5 bytes da saída conhecida para a fraqueza
anterior
Region Code





Em outros detalhes:
Cada DVD contem um código de região
chamado region code que indica a região do
mundo em que aquele disco pode ser visto.
Cada player conhece a região em que ele foi
vendido
Se a região do player não for igual com a região
do disco, o player não conseguirá obter os
dados.
Isso ajuda a MPAA a garantir que DVD não
sejam divulgados em locais do mundo antes que
eles sejam lançados oficialmente.
Region Code
DeCSS






A Xing Technologies, subsidiária da Real Networks
(desenvolvedora do Real Player), não criptografou as chaves
quando as usou em uma das versões de seu software
XingMPEG Player. Como resultado, um hacker alemão
anônimo descobriu as chaves da Xing fazendo engenharia
reversa no seu software.
Esse hacker em seguida, juntamente com um programador
norueguês Johansen de apenas 16 anos, formou o grupo
MoRE (Masters of Reverse Engineering).
Alguns softwares:
SmartRipper
DVD Decrypter
Dvd Shrink
Faculdades Integradas Barros Melo
Pós Graduação em Segurança de Redes
Frederico Madeira <[email protected]>
Célio Filho <[email protected]>
Fábio Meira Lins <[email protected]>
Cleiton Martins