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