BRPI0714242A2 - sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador - Google Patents

sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador Download PDF

Info

Publication number
BRPI0714242A2
BRPI0714242A2 BRPI0714242-0A BRPI0714242A BRPI0714242A2 BR PI0714242 A2 BRPI0714242 A2 BR PI0714242A2 BR PI0714242 A BRPI0714242 A BR PI0714242A BR PI0714242 A2 BRPI0714242 A2 BR PI0714242A2
Authority
BR
Brazil
Prior art keywords
digital data
processing
unit
value
lookup table
Prior art date
Application number
BRPI0714242-0A
Other languages
English (en)
Inventor
Wilhelmus P A J Michiels
Paulus M H M A Gorissen
Original Assignee
Koninkl Philips Electronics Nv
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninkl Philips Electronics Nv filed Critical Koninkl Philips Electronics Nv
Publication of BRPI0714242A2 publication Critical patent/BRPI0714242A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Gasification And Melting Of Waste (AREA)

Abstract

SISTEMA E MÉTODO PARA AUMENTAR A RESISTÊNCIA À ADULTERAÇçO DE UMA UNIDADE DE PROCESSAMENTO DE DADOS DIGITAIS, E, PRODUTO DE PROGRAMA DE COMPUTADOR. Um sistema para aumentar a resistência à adulteração de uma unidade de processamento de dados digitais, compreende uma primeira unidade (901) compreendendo meios de processamento (906) para processar os dados digitaiss recebidos em dependência dos valores consultados em pelo menos uma tabela de consulta (916) com base nos valores nos dados digitais recebidos. O sistema ainda compreende uma segundo unidade (902) compreendendo meios (912) para computar pelo menos um valor para inclusão nos dados digitais forçando a primeira unidade (901) para consultar pelo menos um valor pré-determinado na tabela de consulta (916) quando processando os dados digitais. Isto compreende um elemento de inserção (910) para incluir o pelo menos um valor nos dados digitais, e uma saída (908) para transmitir os dados digitais para a primeira unidade.

Description

"SISTEMA E MÉTODO PARA AUMENTAR A RESISTÊNCIA À ADULTERAÇÃO DE UMA UNIDADE DE PROCESSAMENTO DE DADOS DIGITAIS, E, PRODUTO DE PROGRAMA DE COMPUTADOR" CAMPO DA INVENÇÃO
A invenção se relaciona a aumentar uma resistência à adulteração de uma unidade de processamento de dados digitais. FUNDAMENTOS DA INVENÇÃO
A Internet provê os usuários com acesso conveniente e ubíquo para conteúdo digital. Por causa do potencial da Internet como um canal de distribuição poderoso, muitos produtos eletrônicos de consumo (CE) se esforça diretamente para acessar a Internet ou inter-operar com a plataforma do PC - o portal predominante da Internet. Os produtos de CE incluem, mas não são limitados à, aparelhos de topo de equipamento digitais, TVs digitais, consoles de jogos, PCs e, cada vez mais, dispositivos de mão tal como PDAs, telefones de comunicação móvel, e dispositivos de armazenamento e de interpretação móveis, tal como Apple's iPod. O uso da Internet como um meio de distribuição para conteúdo de direitos autorais cria o desafio incontrolável para garantir os interesses do provedor de conteúdo. Em particular isto é requerido para garantir os direitos autorais e modelos de negócio dos provedores de conteúdo. Cada vez mais, as plataformas de CE são operadas usando um processador carregado com software adequado. Tal software pode incluir a parte principal da funcionalidade para submeter (reprodução) do conteúdo digital, tal como áudio e / ou vídeo. Controle do software de reprodução é uma maneira para fazer valer os interesses do proprietário do conteúdo incluindo os termos e condições em que o conteúdo pode ser usado. Onde tradicionalmente muitas plataformas de CE (com a exceção de um PC e PDA) costumavam ser fechadas, nos dias de hoje mais e mais plataformas pelo menos de forma parcial, são abertas. Em particular para a plataforma de PC, alguns usuários podem ser assumidos de ter controle completo sobre o hardware e software que fornecem acesso ao conteúdo e uma grande quantidade de tempo e recursos para atacar e superar quaisquer mecanismos de proteção de conteúdo. Como uma conseqüência, os provedores de conteúdo precisam distribuir conteúdo para usuários legítimos através de uma rede hostil para uma comunidade onde nem todos os usuários ou dispositivos podem ser confiáveis.
Tipicamente, sistemas de gerenciamento de direitos digitais usam uma técnica de criptografia com base em cifras de bloco que processam a seqüência de dados nos blocos usando uma seqüência de passo de criptografar e de descriptografar, referido como rodadas. Durante cada rodada, uma função específica de rodada é efetuada. A função específica de rodada pode ser baseada em uma mesma função de rodada que é executada sob controle de uma chave secundária específica de rodada. Para muitos sistemas de criptografia, a função de rodada pode ser especificada usando tabelas de mapeamento ou tabelas de consulta. Mesmo se nenhumas tabelas explícitas foram usadas, todavia tabelas freqüentemente são usadas por partes diferentes da função para eficiente execução do software das funções de criptografar / descriptografar. O código de computador acessa ou combina valores de tabela valores dentro do intervalo de valor da função. Em vez de chaves de distribuição, que podem ser específicas de usuário, se torna mais interessante distribuir algoritmos específicos de usuário em vez de chaves para algoritmos de criptografar ou de descriptografar. Esses algoritmos, funções mais freqüentemente (mapeamentos), têm de ser ofuscadas (escondidas) de modo a prevenir re-projeto ou proibir a re-computação de elementos são coincidentes com a chave. Nos computadores, tabelas acompanhadas com algum código de computador freqüentemente representam essas funções.
Provedores de conteúdo precisam distribuir o conteúdo para usuários legítimos através de uma rede hostil para uma comunidade onde nem todos os usuários ou dispositivos podem ser confiáveis. Em particular para a plataforma de PC, o usuário precisa ser assumido ter controle completo do hardware e software que fornecem acesso ao conteúdo, e uma ilimitada quantidade de tempo e recursos para atacar e superar quaisquer mecanismos de proteção de conteúdo. O código de software que faz valer os termos e condições em que o conteúdo pode ser usado não deve ser adulterado. A abordagem geral no gerenciamento de direitos digitais para conteúdo protegido distribuído para PCs é criptografar do conteúdo digital, por exemplo DES (Padrão de Criptografia de Dados), AES (Padrão de Criptografia Avançada), ou usando o método divulgado em W09967918, e para usar de chaves de descriptografar.
As duas áreas principais de vulnerabilidade de gerenciamento de direitos digitais contando com criptografia são os softwares padrões que fazem valer os termos e condições nas quais o conteúdo pode ser usado, e o tratamento e distribuição de chave.
Tipicamente, o software padrão faz valer os termos e condições nas quais o conteúdo é para ser usado. Um agressor com o objetivo de remover esses termos e condições pode tentar alcançar isso através da adulteração do código de programa compreendido no software padrão. Em relação ao tratamento de chave, para reprodução de um
tocador de mídia, tem de recuperar uma chave de descriptografar a partir de um banco de dados de licença. Este então tem de armazenar esta chave de descriptografar em algum local na memória para descriptografar do conteúdo criptografado. Isto deixa ao agressor duas opções para um ataque na chave. Primeiramente, a engenharia reversa da função de acesso do banco de dados de licença poderia resultar em software de caixa preta (i. e. o agressor não tem de entender o funcionamento interno da função de software), permitindo ao agressor recuperar chaves de ativas a partir de todos os bancos de dados de licença. Em segundo lugar, através da observação dos acessos à memória durante a retirada da criptografia do conteúdo, é possível recuperar a chave ativa. Em ambos os casos a chave é considerada ser comprometida.
Software resistente à adulterações é assim chamado porque adulterar o software direcionado com o objetivo com o software é complicado. Várias técnicas para aumentar a resistência à adulteração de aplicações de software existem. A maioria dessas técnicas é baseada na clandestinidade do conhecimento embutido da aplicação adicionando um véu de aleatoriedade e complexidade em ambos o controle e o caminho de dados da aplicação de software. A idéia atrás disso é que se torna mais difícil extrair
r
informação meramente através da inspeção de código. E, por conseguinte, mais difícil encontrar o código que, por exemplo, trata o acesso e controle de permissão da aplicação, e conseqüentemente mudá-lo.
"White-Box Cryptography and an AES Implementation", de Stanley Chow, Philip Eisen, Harold Johnson, e Paul C. Van Oorschot, em Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, 15-16 de Agosto de 2002, referido daqui em diante como "Chow 1", e "A White-Box DES Implementation for DRM Applications", de Stanley Chow, Phil Eisen, Harold Johnson, e Paul C. van Oorschot, em Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18 de Novembro de 2002, referido daqui em diante como "Chow 2", divulgam métodos com a intenção de esconder a chave através de uma combinação de codificação de sua tabela com bijeções aleatórias representando composições mais propriamente do que passos individuais, e alargando a fronteira criptográfica empurrando-a para fora além da aplicação de conteúdo.
WO 2006/046187 divulga como em um sistema, um servidor fornece uma função criptográfica F para um dispositivo de execução em uma forma tabelas de mapeamento Ti (0 < i < η; η > X) usando um operador de grupo Abelian Um processador escolhe tabelas O e C tal que C[x] <8> 0[x] = 0, Vx e Di e cria tabelas Ti, 0<i<m;n<m<n+l, onde para O < i < n, cada tabela T'i, representa a respectiva correspondente tabela Ti e pelo menos um tabela Tji 0 < O, < n, sendo formado através de uma composição Abelian de T0I e O, e pelo menos uma tabela T'ci, 0 < C] < m,Ci Φ Oi sendo formado através de uma composição Abelian que inclui C. Meios são usados para fornecer as tabelas Ti para o dispositivo de execução. O disponível de execução inclui meios para receber as tabelas e um processador para formar uma função F' que é funcionalmente equivalente à função de criptografia F através de uma composição Abelian das tabelas Ti.
SUMÁRIO DA INVENÇÃO
Seria vantajoso ter uma sistema melhorado para aumentar uma resistência à adulteração de uma unidade de processamento de dados digitais. Dar melhor resposta a esta preocupação, em um primeiro aspecto da invenção, um sistema é apresentado que compreende:
uma primeira unidade (901) compreendendo:
- uma entrada (904) para receber os dados digitais, e
- meios de processamento (906) para processar os dados digitais recebidos em dependência dos valores consultados em pelo menos uma tabela de consulta (916) com base nos valores nos dados digitais
recebidos; e
uma segunda unidade (902) compreendendo
- meios (912) para computar pelo menos um valor para inclusão nos dados digitais forçando a primeira unidade para consultar pelo menos um valor pré-determinado na tabela de consulta quando processando
os dados digitais,
- um elemento de inserção (910) para incluir o pelo menos um valor nos dados digitais, e
- uma saída (908) para transmitir os dados digitais para a primeira unidade. O processamento efetuado pela primeira unidade pode compreender uma interpretação dos dados. Os dados podem compreender conteúdo de áudio e / ou vídeo codificado. A primeira unidade compreende um ou mais tabelas de consulta (916), e o processamento dos dados digitais é efetuado pelo menos parcialmente efetuando um número de tabelas de consulta. Em muitos sistemas, os dados e / ou um processo pseudo-aleatório determina que as entradas da tabela de consulta estão sendo usadas para a decodificação. Em tais sistemas pode acontecer que certas entradas de tabela de consulta não são usadas ou somente usadas após ter já decodificado uma parte relativamente grande dos dados. Este aspecto da invenção permite a uma segunda unidade especificar pelo menos um valor pré-determinado na tabela de consulta que será acessada quando processando os dados. A segunda unidade pode especificar isto incluindo pelo menos um valor nos dados, onde o pelo menos um valor é selecionado tal que vai motivar o valor pré- determinado a ser acessado e usado no processamento. Se o valor pré- determinado na tabela de consulta tem sido mudado por um agressor, o processamento falha porque processamento com sucesso requer o uso do valor imutável.
A primeira unidade pode ser, por exemplo, um terminal de usuário, um computador, um aparelho de topo de equipamento ou televisão. A segunda unidade pode ser, por exemplo, um provedor de conteúdo ou um servidor. A primeira e segunda unidade pode também ser parte de um único dispositivo físico.
De acordo com um aspecto da invenção, a segunda unidade compreende meios de criptografia para incluir conteúdo criptografado nos dados digitais; o elemento de inserção é arranjado para incluir o pelo menos um valor no conteúdo criptografado; e os meios de processamento são arranjados para descriptografar do conteúdo criptografado baseada nas operações de consulta. Descriptografar e eriptografar pode ser eficientemente implementado usando as tabelas de consulta. Inserindo os valores no conteúdo criptografado, o decodificador vai acessar as entradas da tabela de consulta pré-determinadas sem ser capaz de distinguir os valores inseridos como tais a partir de quaisquer outros valores aparecendo nos dados com criptografia. Após descriptografar, os dados descriptografados podem conter etiquetas identificando o resultado da ação de descriptografar do valor inserido, que vai permitir aos meios de processamento descartar o resultado da ação de criptografia do valor inserido.
De acordo com um aspecto da invenção, o sistema compreende verificação dos meios para comparar uma saída dos meios de processamento com um valor de referência.
Os meios de verificação podem ser incluídos na primeira unidade, a segunda unidade ou em uma terceira unidade e recebe um desfecho do processamento. Os meios de verificação compara o desfecho do processamento com um valor que é creditado para ser o desfecho correto. Se o valor pré-determinado na tabela de consulta não contém o valor que ela deve conter, então a comparação falha e, a unidade de verificação detecta a adulteração.
De acordo com um aspecto da invenção, os meios de processamento são arranjados para processar os dados digitais em uma ordem pré-determinada, onde os valores consultados influenciam um resultado de processamento dos dados cujo processamento inicia após a operação de consulta.
Este aspecto tem a vantagem que uma porção relativamente grande dos dados não será processada corretamente se o valor de tabela de consulta foi adulterado. Uma quantidade de dados após o valor inserido será processada de forma incorreta no caso de tal uma adulteração.
De acordo com um aspecto da invenção, o elemento de inserção é arranjado para posicionar o pelo menos um valor nos dados digitais para motivar os meios de decodificação a consultar o pelo menos um valor pré-determinado na tabela de consulta antes de processar um bloco pre- determinado dos dados digitais.
Isto é para assegurar que o bloco pré-determinado do conteúdo digital é bem protegido contra ser processado em um sistema que foi adulterado.
De acordo com um aspecto da invenção, a primeira unidade compreende uma memória para armazenar uma representação de bit de software a ser executada pela primeira unidade, e pelo menos parte da representação de bit do software é usado como pelo menos parte da tabela de consulta através dos meios de processamento; e o pelo menos um valor pré- determinado na tabela de consulta ocorre na pelo menos parte da representação de bit do software.
O fato que as localizações de memória são usadas para dois propósitos independentes torna mais difícil adulterar a localização de memória, porque se uma mudança é feita para alcançar um objetivo relacionado ao primeiro uso da localização de memória, esta mudança também vai afetar o segundo uso da localização de memória em uma maneira que possa ser difícil de superar.
É notado que a aplicação de patente co-pendente EP06116693.0 (certificado legal PH005600) divulga um método para aumentar a resistência à adulteração de um sistema de software, compreendendo os passos de:
- compor uma grande quantidade de instruções executáveis de computador para processar os dados digitais baseado em uma grande quantidade de parâmetros;
- identificar em uma representação de bit dos parâmetros a parte igual a uma representação de bit do código executável de computador que é legível durante o processamento;
- arranjar as instruções para, durante uma execução das instruções, usando pelo menos um endereço de memória mantendo a representação de bit do código para ler a parte igual da representação de bit dos parâmetros por referência.
De acordo com um aspecto da invenção, a pelo menos parte da representação de bit do software contém instruções executadas como parte de uma operação dos meios de processamento.
As instruções executadas como parte dos meios de processamento, assim como, as tabelas de consulta são protegidas unificando- as e armazenando uma única cópia em memória. Os meios de processamento de novo pode compreender uns meios de descriptografar, meios de criptografia, ou meios de (des)compressão. DESCRIÇÃO BREVE DOS DESENHOS Estes e outros aspectos da invenção serão elucidados daqui em
diante com referência aos desenhos, onde
Figura 1 é um diagrama ilustrando as operações em uma rodada de AES;
Figura 2 é um diagrama ilustrando um exemplo de escamotear
as tabelas;
Figura 3 é um diagrama ilustrando uma modalidade; Figura 4 é um fluxograma ilustrando os passos do processamento;
Figura 5 é um diagrama ilustrando uma modalidade. DESCRIÇÃO DETALHADA DAS MODALIDADES
Figura 3 ilustra uma modalidade da invenção. A Figura mostra uma primeira unidade 901 e uma segunda unidade 902. A primeira unidade 901 usa a entrada 904 para receber os dados a partir da segunda unidade 902 através da saída 908. A entrada 904 pode compreender uma entrada de rede com, por exemplo, suporte a TCP/IP ou uma unidade para ler os dados a partir de mídia de armazenamento removível (e. g. DVD, CD, fita). A saída 908 correspondentemente compreende a saída de rede ou, por exemplo, equipamento de controle de disco. A seta conectando a saída 908 e a entrada 904 representa o canal de distribuição para transmitir dados da saída 908 para a entrada 904. A segunda unidade 902 ainda compreende um armazenamento de dados ou gerador de dados 914. Os dados 914 podem se refere codificados em qualquer formato particular tal como ZIP, MPEG, MP3, e pode também ser criptografado. A segunda unidade também compreende um elemento de inserção 910 para inserir valores específicos na seqüência de dados. O elemento de inserção 910 pode ter algum inteligência embutida para assegurar que os dados incluindo o valor inserido é condizente com o formato dos dados originais 914. Se os dados são gerados na certa, o elemento de inserção pode cooperar com o gerador de dados para apropriadamente acomodar os valores inseridos no formato dos dados. Também, os valores inseridos podem ser etiquetados tal que eles possam ser reconhecidos como tais. Isto é para prevenir a primeira unidade de tratar os valores inseridos, de forma errada. Contudo, a etiquetagem pode somente se tornar aparente após algum processamento tem sido feito.
A primeira unidade 901 ainda compreende meios de processamento 906 e um ou mais tabelas de consulta 916. Os meios de processamento processam os dados de entrada. Isto pode interpretar o formato no qual os dados são apresentados (ZIP, MPEG, MP3, criptografia, etc). Por exemplo, o formato ZIP significa que o processamento compreende descompressão. Os meios de processamento podem também ser arranjados para decodificar MPEG, MP3, ou outros formatos. Como um exemplo final, os meios de processamento podem ser arranjados para descriptografar ou criptografar dos dados de entrada. Os meios de processamento 906 efetuam para processamento pelo menos em parte procurando os valores derivados a partir dos dados em uma das tabelas de consulta 916. Os valores consultados podem ser usados para processamento adicional, por exemplo, para definir uma próxima procura de tabela, ou eles podem representar os dados de saída. As tabelas de consulta funcionam como um tal importante papel no processamento dos dados. Se a entrada de tabela de consulta é mudada por um agressor, e aquela entrada de tabela de consulta é usada em relação aos dados, os meios de processamento podem produzir, de forma errada, dados processados. Isto torna mais difícil para o agressor fazer mudanças com sucesso.
Supor que uma parte tem algum interesse na integridade da primeira unidade 901. Aquela parte pode usar a segunda unidade 902 para verificar a integridade da primeira unidade 901. É claro que, a integridade pode ser verificada continuamente através de procuras conforme derivadas a partir dos dados de entrada. Contudo, a segunda unidade 902 pode ser usada para verificar a presença de um valor particular pré-definido. Para este fim, o elemento de inserção 910 insere valores especialmente computados na seqüência de dados. A segunda unidade 902 ainda compreende meios 912 para computar o valor para inclusão nos dados digitais. O valor é computado em tal uma maneira que os meios de processamento 906, que são parte da primeira unidade 901 vão consultar o valor particular pré-definido quanto ela está processando os dados. Para este fim, os meios 912 para computar o valor têm algum conhecimento dos meios de processamento 906 e / ou tabelas de consulta 916.
Em alguns casos, o valor inserido não deve ser usado nos dados processados, como é incluído somente para verificar a entrada da tabela de consulta. Para este fim, o elemento de inserção 910 pode ser arranjado para incluir um marcador nos dados para identificar o valor inserido. Preferencialmente, o marcador somente se torna visível após processar os dados através dos meios de processamento 906, porque ao contrário um agressor poderia adulterar os meios de processamento 906 para pular o valor inserido. Adicionalmente, a codificação é usualmente tal que o valor inserido também influencia alguns dos dados em torno do valor inserido. Isto vai tornar os dados em torno do valor inserido inutilizáveis se a entrada da tabela de consulta foi mudada, que é exatamente o que é desejado. Também é possível que a segunda unidade 902 requeira a primeira unidade 901 para retornar (parte deles) aos dados processados para a segunda unidade 902. A segunda unidade 902 pode então verificar os dados processados e por meio disso, achar se a entrada pré-definida da tabela de consulta foi ou não mudada.
A seguir, é explicado como uma implementação de um algoritmo pode ser feito mais resistente à adulterações usando tabelas de consulta escamoteadas. Também, unificação de código com os valores da tabela é explicado. Os exemplos de AES e DES são dados. Contudo, o método pode ser aplicado para manter tipos diferentes de algoritmos, especialmente algoritmos que podem ser implementados usando uma ou mais tabelas de consulta. Escamoteando as tabelas de consulta
A abordagem de adicionar um véu de aleatoriedade e complexidade no controle e no caminho dos dados da aplicação de software não previne o software de ser submetido à adulterações, mas somente torna mais difícil determinar que mudanças seriam necessárias serem feitas de modo a alcançar o objetivo de quem adultera. Os princípios gerais atrás de resistência à adulteração pode ser delineado como a seguir. Um programa P pode ser representado como um composto de controle de acesso e / ou permissões X e com funcionalidade Y. Um agressor pode desejar adulterar o programa tal que o controle de acesso ou permissões são removidos sem afetar a funcionalidade. O programa adulterado poderia então ser executado sem controles de acesso e permissões por completo, ou pelo menos executado tal que esses controles sejam ignorados. A invenção será explicada principalmente para o caso que Y compreende uma funcionalidade de processamento. Esta funcionalidade pode incluir criptografar, descriptografar, compressão, descompressão, interpretação, validação, autenticação. A invenção se aplica a qualquer tipo de funcionalidade Y.
Idealmente, para um programa a prova de adulterações, adulterar X deve imediatamente resultar na perda de Y, não importando quão pequeno a adulteração seja. Em outras palavras, XeY devem ser inseparáveis, ou pelo menos somente separáveis com grande dificuldade. Uma maneira de implementar inseparabilidade seria criar uma relação entre X e Y tal que qualquer alteração pretendida para X resulta em uma alteração não pretendida para Y, que removeria a funcionalidade de Y. De modo a repor a funcionalidade de Y, uma alteração adicional para Y seria necessária. Como a funcionalidade e elementos de controle do programa foram feitos inseparáveis, um ataque se torna muito mais difícil. Se tal uma inseparabilidade é criada sobre o código de um programa, o programa pode ser feito resistente à adulterações sem a necessidade do código de programa ser necessariamente velado. Software resistente à adulterações é software no qual é complicado efetuar adulteração direcionada com o objetivo. AES é um bloco cifrado com um tamanho de bloco de 128 bits
ou 16 bytes. O texto sem codificação é dividido nos blocos de 16 bytes que formam o estado inicial do algoritmo de codificação, e o estado final estado do algoritmo de codificação é o texto cifrado. Para conceitualmente explicar o AES, os bytes do estado são organizados como uma matriz de 4x4 bytes. AES consiste de um número de rodadas. Cada rodada é composta de passos de processamento similar operando nos bytes, linhas, ou colunas da matriz de estado, cada rodada usando uma chave de rodada diferente nesses passos de processamento.
Figura 1 ilustra alguns passos principais de processamento de uma rodada básica de AES. Os passos de processamento incluem:
AddRoundKey 2 - cada byte do estado é submetido a uma operação de XOR com um byte da chave de rodada.
SubBytes 4 - Uma permutação byte a byte usando uma tabela
de consulta.
ShiftRows 6 - cada linha do estado é girado em um numero
fixo de bytes.
MixColumns 8 - cada coluna é processada usando uma multiplicação de módulo em GF(28).
Os passos SubBytes 4, ShiftRows 6, e MixColumns 8 são independentes da chave particular usada. A chave é aplicada no passo AddRoundKey 2. Exceto para o passo ShiftRows 6, os passos do processamento podem ser efetuados em cada coluna da matriz de estado de 4x4 sem conhecimento das outras colunas. Por conseguinte, eles podem ser considerados como operações de 32-bit como cada coluna consiste de 4 valores de 8-bit. A linha tracejada O indica que o processo é repetido até o número requerido de rodadas tenha sido efetuado.
Cada um desses passos ou uma combinação de passos pode ser representado por uma tabela de consulta ou por uma rede de tabelas de consulta (caixas S). Também é possível substituir uma rodada completa de AES através da rede de tabelas de consulta. Por exemplo, o passo de AddRoundKey pode ser implementado simplesmente submetendo à operação de XOR com a chave da rodada, enquanto os passos SubBytes, ShiftRows, e MixColumns são implementados usando procuras em tabela. Contudo, isto significa que a chave é ainda visível para o agressor no contexto de ataque de caixa branca. O passo de AddRoundKey também pode ser embutido nas tabelas de consulta, que torna menos óbvio encontrar a chave. A ordem dos passos 2, 4, 6, e 8 como mostrado é usualmente usado para criptografar. Para descriptografar, os passos são efetuados em ordem reversa. Contudo, é possível reafirmar o processo de descriptografar tal que ele usa a ordem dos passos 2, 4, 6, e 8 como mostrado na Figura.
Figura 2 ilustra uma maneira para tornar mesmo mais difícil extrair a chave. Deixemos XeY serem duas funções. Considerar uma operação Y ° X(c) = Y(X(c)), ilustrada como diagrama 2, onde c é um valor de entrada, por exemplo, uma coluna de estado de 4-byte. Contudo, a abordagem se aplica a qualquer tipo de valor de entrada c. Mapeamentos X e Y podem ser implementados como as tabelas de consulta que podem ser armazenada na memória, contudo, quando elas são armazenadas na memória, os valores podem ser lidos por um agressor. Diagrama 14 ilustra como o conteúdo das tabelas de consulta podem ser escamoteadas usando uma codificação de entrada F e uma codificação de saída H. As tabelas de consulta correspondendo à X ° F"1 e H ° Y são armazenadas como ilustrado em vez de XeY, tornando mais difícil extrair XeY. Diagrama 16 mostra como adicionar uma função G bijetora, aleatória, adicional, por exemplo, tal que o resultado intermediário das duas tabelas é também codificado. Neste caso, duas tabelas são armazenadas na memória: X' = G0X0F "!e Y' = H0Y0 G"1. Isto é ilustrado uma vez mais no diagrama 18:
Y' ° X' = (Η ° Y ° G ) ° (G ° X ° F "') = H ° (Υ ° X) ° F onde ° denota a composição da função conforme de costume (i. e. para quaisquer duas funções f(x) e g(x), f ° g (x) = f(g(x)) por definição), XeY são funções adequadas para implementação por meio de tabelas de consulta. Da mesma forma uma rede consistindo de mais do que duas funções pode ser codificada. As tabelas de codificação efetiva XeY são escamoteadas combinando H ° Y ° G"1 em uma única tabela de consulta e combinando G ° X ° F em uma única tabela de consulta. Enquanto F, G, e / ou H permanecem desconhecidos, o agressor não pode extrair a informação sobre X e / ou Y a partir das tabelas de consulta, e então o agressor não pode extrair a chave que é a base para X e / ou Y. Outros algoritmos criptográficos, incluindo DES e Rijndael (dos quais AES é a particular instanciação), podem também ser codificados conforme umas (cascata ou rede de) tabelas de consulta que podem ser escamoteadas em uma maneira similar a acima. A invenção não é limitada para os algoritmos criptográficos exemplares mencionados.
Chow 1 divulga um método com a intenção de esconder a chave através da codificação de suas tabelas com bijeções aleatória representando composições mais propriamente do que os passos individuais. Prevenir a extração de chave secreta tem a vantagem que um agressor está impedido de extrair material de chaveamento que permitiria metas de proteção de software a serem contornadas em outras máquinas, ou publicação de material de chaveamento efetivamente criando ' fissuras globais ' que derrubam medidas de segurança através de grandes bases de usuário de software instalado. Isto fornece um grau aumentado de proteção dada as restrições de uma solução somente por software e a realidade de hospedeiro hostil. Na abordagem de Chow 1, a chave é escondida (1) usando tabelas para composições mais propriamente do que passos individuais; (2) codificando essas tabelas com bijeções aleatórios; e (3) estendendo a fronteira criptográfica além do próprio algoritmo criptográfico mais para fora na aplicação de contenção, forçando os agressores (engenheiros ao avesso) a entender, de forma significativa, maiores segmentos de código para alcançar seus objetivos. Chow 1 discute uma abordagem de chave fixa: as chave(s) são embutidas na implementação através de avaliação parcial cm relação à chave(s), tal que a entrada de chave é desnecessária. Avaliação parcial significa que as expressões envolvendo uma chave são avaliadas tanto quanto razoavelmente possível, e o resultado é colocado no código mais propriamente do que nas expressões completas. O agressor poderia extrair uma implementação específica de chave e usá-la em vez da chave, contudo criptografia é tipicamente uma componente de um maior sistema de contenção que pode fornecer a entrada para o componente criptográfico em forma manipulada ou codificada, para a qual o componente é designado, mas que um adversário acharia difícil de remover. Referindo ao passo de codificar tabelas, já que codificações são arbitrárias, os resultados são significativos somente se a codificação de saída de um passo coincide com a codificação de entrada do próximo. Por exemplo, se o passo X é seguido pelo passo Y (resultando em computação do Y ° X ), a computação poderia ser codificada como
Y ' ° X ' - (Η ° Y ° G ) ° (G ° X ° F _1) = H ° (Υ ° X) ° F
Este caminho, Y = X é apropriadamente embora que a entrada necessita ser codificada com Fea saída necessita ser decodificada com H Os passos são separadamente representados como tabelas correspondendo a Y' e X', tal que F, G, e H são escondidas assim como XeY. Além de tais passos de confusão, Chow 1 usa passos de difusão por meio de transformações lineares (bijetora) para ainda disfarçar as operações subjacentes. O termo bijeção misturada é usado para descrever tal uma transformação linear. A implementação de Chow 1 pega a entrada em uma forma manipulada, e produz saída em uma forma manipulada de modo diferente, e por meio disso, tornando a AES resistente ao contexto de ataque de caixa branca (WBAC) difícil de separar de sua aplicação de contenção.
Chow 2 discute uma implementação criptográfica de DES designado para resistir ao contexto de ataque de caixa branca com o objetivo de prevenir a extração de chaves secretas do programa. As técnicas discutidas neste documento sobre escamotear redes de tabela de consulta se aplicam a uma grande parte também para outro algoritmo criptográfico incluindo AES e outros. Enquanto um agressor controlando o ambiente de execução pode claramente fazer uso do software em si (e. g. para descriptografar) sem explicitamente extrair a chave, forçando uma agressor a usar a instância instalada à mão, é freqüentemente de valor para provedores de sistema de gerenciamento de direitos digitais (DRM). In geral, a abordagem em Chow 2 é para trabalhar em direção a uma implementação consistindo inteiramente de caixas de substituição, nenhuma das quais implementa transformações afins. Um número de técnicas são descritas em Chow 2 que são necessárias para suportar a abordagem geral. Algumas dessas técnicas é codificação de I/O de bloqueio, codificação de função combinada, codificação de contorno, codificação de divisão de caminho, e divisão de saída.
Avaliações parciais significam que as expressões com base nos valores (de forma parcial,) conhecidos no tempo da implementação são pré- avaliadas. Em uma exemplo simplificado, quando a chave é ' 5 ', e a implementação original contém a expressão ' 2 * chave então mais propriamente do que incorporando ' 2 * 5 ' na implementação, a expressão pré-avaliada ' 10 ' é colocada na implementação. Deste jeito, a chave ' 5 ' não está diretamente presente no código. No caso de DES com uma chave fixa, isto envolve substituir caixas S padrões (computadas a partir de uma chave em tempo de execução) por caixas S pré-avaliadas de chave específica (computadas a partir de uma chave em ou antes do tempo de compilação). Uma bijeção misturada de acordo com Chow 2 é uma transformação afim bijetora designada tal que cada bit de saída depende de um grande número de bits de entrada. Codificação de I/O de bloqueio é um método de codificação para tratar grandes números de bits de entrada e saída. Neste caso, a codificação / decodificação pode ser formada como uma concatenação de codificações, onde cada codificação trata um subconjunto dos bits de entrada / saída. Codificação de função combinada significa que se duas ou mais operações podem ser processadas em paralelo, uma única função de codificação é aplicada à concatenação das entradas (respectivamente saídas) das operações paralelas. É mais ou menos o oposto de codificação de I/O de bloqueio. Codificação de contorno significa que a transformação da codificação adiciona um número de bits supérfluos de entropia para a entrada e / ou saída da transformação a ser escamoteada, e re-projetar a transformação para ser escamoteada para "contornar" os bits supérfluos tal que eles não afetem a saída final do procedimento. Codificação de divisão de caminho significa que a função é modificada para fornecer bits de saída adicionais para escamotear os bits de informação essencial. Divisão de saída significa que a saída de uma função é distribuída por várias funções parciais, onde a saída de todas as funções parciais precisa ser combinada de uma maneira não óbvia de modo a obter a saída original da função.
Chow 2 propõe construção de redes codificadas para construir caixas S com ampla entrada de, digamos, 32 bits ou mesmo 96 bits. Tal uma caixa S de entrada ampla representando uma transformação afim é dividida em uma rede de caixas S, cada uma tendo uma entrada e saída mais estreita; cada uma das caixas Sistema é codificada incorporando uma função de codificação na caixa S. O inverso da função de codificação é incorporado na caixa S processando a saída da caixa S. Unificando código com valores da tabela de consulta
Em um aspecto da invenção, um método para possibilitar distribuição de resistência à adulteração dos dados digitais é fornecido. Os dados necessitam ser processados através de código de computador compreendendo instruções disponíveis para um receptor dos dados digitais. O propósito do processamento pode ser uma interpretação dos sinais de áudio / vídeo representados pelos dados. O processamento pode compreender criptografar, descriptografar, compressão, descompressão, ou outro processamento. O método compreende compor uma grande quantidade de instruções compreendendo uma implementação de um algoritmo de processamento para processar os dados digitais. A grande quantidade de instruções forma um programa de computador, por exemplo, um tocador de mídia ou software padrão necessário em um terminal de usuário para reprodução com sucesso do conteúdo distribuído. O algoritmo de processamento é baseado em parâmetros. No caso de descriptografar, os parâmetros podem representar uma chave criptográfica. Os dados distribuídos podem ser ( parcialmente) criptografados usando uma correspondente chave de criptografia.
Uma parte dos parâmetros é identificado, o que é igual a uma parte das instruções do processador. Mais particularmente, uma parte de uma representação de bit dos parâmetros é igual a uma parte da representação de bit das instruções. Uma parte remanescente dos parâmetros pode ser diferente de quaisquer instruções de processador. Os parâmetros identificados podem ser iguais às instruções do processador contidos na implementação do algoritmo de processamento. Contudo, os parâmetros identificados também podem ser iguais a representação de bit das instruções do processador aparecendo em outros locais no sistema. Por exemplo, eles podem ser iguais a alguma seqüência particular de bits aparecendo em algum elemento de operação do sistema tal como uma pilha de comunicação de TCP/IP.
As instruções do processador são arranjadas tal que durante a execução, a parte igual dos parâmetros é lida (por exemplo, para uso no processe de descriptografar) referenciando uma localização de memória da parte da representação de bit das instruções do processador. A parte igual dos parâmetros não é armazenada separadamente na memória, como a representação requerida de bit é já presente nos endereços de memória mantendo as instruções do processador coincidentes. Efetivamente, um mesmo endereço de memória é usada em duas maneiras: como uma localização de armazenamento de um parâmetro para um algoritmo de descriptografar, e ao mesmo tempo como uma localização de armazenamento para uma instrução do processador a ser executada. Tipicamente a instrução lendo a localização de memória como um parâmetro é ela mesma armazenada em uma diferente localização de memória, e acessa a localização de memória mantendo o parâmetro por referência. As instruções formam o código de programa. As instruções são de acordo com o ambiente de execução onde o código de programa é executado. Por exemplo, eles são instruções do processador ou instruções de pseudo-código tal como instruções de máquina virtual (e. g. código de byte Java).
Em um outro aspecto da invenção, os parâmetros são
escolhidos tal que eles contêm uma parte igual relativamente grande. Um único endereço de memória pode manter os dados que podem ser usados em duas formas aparentemente não relacionadas: como uma instrução do processador e como um valor de parâmetro valor. Isto tem o efeito que se um agressor muda a instrução do processador, os parâmetros podem se tornar inválidos, e vice versa, se um agressor muda os parâmetros, a instrução do processador se torna inválida. Assim sendo, pode se tornar mais difícil para um agressor efetuar adulteração direcionada com objetivo.
Figura 4 mostra os passos de compor uma implementação 603, identificar uma parte coincidente dos parâmetros 613, e arranjar a implementação 615. Os parâmetros podem incluir uma ou mais tabelas de consulta, por exemplo, formando uma rede de tabelas de consulta. Tal uma rede de tabelas de consulta pode ser computada (passo 604), por exemplo, a partir de uma chave criptográfica. Uma palavra da representação de bit das instruções do processador é selecionada (no passo 606) para inclusão em pelo menos uma das tabelas de consulta na rede. A inclusão da palavra é realizada aplicando (no passo 608) uma transformação para elementos da tabela de consulta. Esta transformação é compensada aplicando (no passo 610) uma transformação de compensação invertendo um efeito da transformação para elementos de pelo menos uma da outras tabelas de consulta. Usualmente as pelo menos duas tabelas de consulta transformadas são conectadas através da rede de tabelas de consulta. A rede de tabelas de consulta transformada é usada como os parâmetros do algoritmo criptográfico mais propriamente do que a rede original de tabelas de consulta. Uma modalidade compreendendo selecionar uma grande quantidade de palavras da representação de bit das instruções e criar uma tabela de consulta que contém esta representação de bit das instruções para formar uma tabela de consulta ' contendo código '. A tabela de consulta contendo código é incluída em uma rede de tabelas de consulta formando os parâmetros para um programa de processamento de dados. Usualmente o efeito da tabela de consulta contendo código é compensado incluindo apropriadamente tabelas de consulta escolhidas na rede de tabelas de consulta. As instruções formando o código de programa são arranjadas tal que os endereços de memória mantendo as instruções, aparecendo na tabela de consulta contendo código, são também usadas para ler os valores da tabela de consulta contendo código. Tabelas de consulta executadas
Em uma modalidade, retornando à Figura 3, a segunda unidade 902 compreende meios de criptografar para incluir conteúdo criptografado nos dados digitais 914. O elemento de inserção 910 inclui o valor computado na seqüência de dados criptografada para descriptografar através dos meios de processamento 906. Os meios de processamento 906 compreendem meios de descriptografar para descriptografar do conteúdo criptografado incluindo os valores inseridos. Os meios de descriptografar usam as tabelas de consulta 916 em uma da maneira estabelecidas. Preferencialmente uma implementação de caixa branca de um algoritmo de descriptografar é usada. Esta poderia ser as implementações de AES ou DES similar à Chow 1 e Chow 2, contudo, qualquer outra implementação ou esquema de descriptografar é igualmente usável.
Em uma modalidade, os meios de processamento são arranjados para decodificar os dados digitais em um ordem pré-determinada. Os dados são processados em dependência dos dados processados anteriormente. Uma das possibilidades para implementar isto é em um método de criptografar. Isto se aplica, por exemplo, para cifras seqüenciadas. Isto também se aplica à esquemas de decodificação usando um modo de encadeamento de bloco cifrado (CBC) em que a dependência é criada com o texto sem codificação em vez do (ou em adição ao) texto cifrado.
O elemento de inserção pode ser arranjado para posicionar o valor que testa a entrada pré-definida da tabela de consulta antes de um importante bloco de dados, tal que um resultado positivo do teste é requerido para processamento apropriado do importante bloco of dados. Por exemplo, uma série de valores, cada um testando uma diferente pré-determinada entrada de tabela de consulta, são inseridos no começo de uma seqüência de dados. Desta maneira, uma mudança para quaisquer das entradas testadas retribui a seqüência de dados completa não usável.
Unificação da chave e código na memória pode ser feita para aumentar a resistência à adulteração. Os dados a serem processados em geral determinam que as entradas de tabela de consulta serão usadas no processamento. Assim, mesmo após adulterar o código, poderia acontecer que uma porção relativamente grande do processamento é efetuada com sucesso porque os valores da memória adulterados não são necessários para processar os dados. Por exemplo, se um byte é mudado em uma tabela de consulta de 8 bits para k bits (para qualquer k > 0), e somente um valor de 8 bits é necessário para processar um bloco de código, e cada um dos 256 valores de 8 bits tem igual probabilidade de ocorrer, então a probabilidade que o byte mudado seja usado no processamento, é 1/256, ou 0,4 %. Seria desejável aumentar esta probabilidade, i. e. aumentar a probabilidade que o processamento falhar e / ou para assegurar que o processamento falhe para uma parte maior dos dados após uma mudança de um ou mais bytes do código. Será apreciado que isto também pode ser desejável para acessar entradas pré-definidas de tabela de consulta que não são unificadas com o código mas que podem ter algum outro significado especial. Também se é suspeito que um certo valor pode ter sido mudado, seria desejável verificar aquele valor.
Deixemos X ser uma (possivelmente vazia) seqüência de blocos de dados blocos que têm de ser processados (por exemplo, criptografados ou descriptografados) através de uma implementação de white- box. É possível inserir em X um número de blocos Bj, B2,... Bm, que são escolhidos de tal uma maneira que eles acessam entradas particulares da tabela de consulta (i. e. partes particulares da chave) na implementação de caixa branca. Também é possível anteceder X através dos blocos Bi, B2,... Bm.
Uma abordagem para aumentar a probabilidade que o processamento falhe para uma parte maior dos dados após uma mudança de um ou mais bytes do código é a seguinte. Um modo de bloco cifrado pode ser escolhido no qual uma ação incorreta de descriptografar se propaga através de ações adicionais de descriptografar. Em comparação, no modo de "livro de receitas eletrônico" (ECB) no qual a cada bloco de texto cifrado pode ser descriptografada independente dos outros blocos de texto cifrado, cada bloco tem uma probabilidade independente (0,4% no exemplo acima) de acessar um entrada de tabela de consulta adulterada. A ação incorreta de descriptografar pode ser feita para propagar ainda para as próximas ações de descriptografar, por exemplo, fazendo o processo de descriptografar de um bloco dependente do resultado de descriptografar do bloco previamente descriptografado. Após o primeiro bloco de dados para o qual o resultado de descriptografar está errado, todos os blocos seguintes, também serão descriptografados de forma errada. Isto faz com que uma porção muito maior dos dados não podem ser processados corretamente se a porção testada do código foi adulterada.
Em uma modalidade, uma implementação de caixa branca é usada em algum tipo de um modo que propaga um erro (para a razão discutida acima). Por exemplo, a variante do modo de encadeamento de bloco cifrado (CBC) é usado na qual uma dependência é criada com o texto sem codificação em vez do texto cifrado. Por exemplo, no modo "normal" de CB C, um bloco de dados i é criptografado após operação de XOR com o bloco de dados criptografado i-1. Na variante "proposta", um bloco de dados i é criptografado após operação de XOR com o bloco de dados não criptografado (texto sem codificação) i-1. O modo "normal" de CBC torna a seqüência de dados mais aleatória. A variante "proposta" faz com que um único erro de descriptografar é propagado para todos os blocos de dados subseqüentes. A seqüência S com conteúdo a ser criptografado é precedido por um número de blocos que apontam para acessar entradas de tabela de consulta específicas, em particular as entradas contendo código. Se um ou mais bits no código unificado são mudados, então nenhum dos blocos de S será descriptografado corretamente. Também é possível combinar o modo "normal" de CBC com o modo "proposto" de CBC criando uma dependência (e. g. fazendo uma operação de XOR) com ambos o texto sem codificação e o texto cifrado de um bloco anterior. Desta maneira, as vantagens possíveis de ambos os modos (aleatoriedade e propagação de erro) são combinados.
Os blocos de dados podem ser computados tal que uma entrada particular da tabela de consulta é acessada durante o processo de descriptografar (ou durante o processo de criptografar, conforme aplicável). Considere uma implementação padrão (não caixa branca) de um algoritmo AES de descriptografar (ou criptografar) usando tabelas de consulta. Ainda mais, considere o seguinte problema para esta implementação: Dado é um rodada r e uma entrada Ir para esta rodada. Achar uma entrada Ii para a primeira rodada do algoritmo de descriptografar, tal que a entrada para a rodada r é Ir. Será aparente que com uma solução para este problema, uma pessoa qualificada é capaz de projetar blocos de dados tais que entradas particulares de tabela de consulta são acessadas através de uma pré-definida implementação de não caixa branca de um algoritmo de descriptografar. Deixe fj ser a função computada na rodada i de AES padrão (não caixa branca), i. e., fj (Ii) é a saída da rodada i se sua entrada é dada por Ii. É fácil computar a inversa f de uma rodada fj porque todos os passos na computação de fj (AddRoundKey, SubBytes, ShiftRows, MixColumns) são facilmente invertidas. Como um resultado, Ii pode ser computado como Ii = T1i0T120... 0T1m (Ir).
Este algoritmo pode ser modificado para derivar um bloco de dados que faz valer um algoritmo de descriptografar de caixa branca para acessar uma linha particular 1 em, por exemplo, uma tabela T do Tipo II. O algoritmo modificado começa derivando uma (codificada) entrada para a rodada contendo a tabela T tal que a linha 1 é acessada. A codificação é removida desta entrada, para obter uma entrada para uma rodada de uma implementação de AES (não caixa branca). O algoritmo delineado no parágrafo anterior pode agora ser utilizado para derivar um bloco de dados para o qual a implementação de caixa branca acessa a linha 1. Em geral, as codificações podem ser removidas de uma entrada codificada para uma particular tabela de consulta em uma rede de tabelas de consulta que força um acesso à linha 1 daquela particular tabela de consulta, e o processamento pode ser invertido usando uma versão do algoritmo de processamento sem codificações. Os passos de processamento sem codificações podem ser mais fáceis de inverter do que as tabelas de consulta codificadas da implementação de caixa branca. As codificações podem somente ser removidas por uma pessoa ou sistema que tenha conhecimento das codificações, não por um agressor que não tem este conhecimento.
É notado que, em vez de derivar um bloco de dados que acessa uma particular linha 1 de uma particular tabela na rede, um bloco de dados pode ser derivado que força o programa a acessar entradas pré-determinadas em cada uma de uma grande quantidade de respectivas tabelas de consulta na rede de tabelas de consulta. A razão para isto é que os bits de entrada de um bloco são distribuídos sobre uma grande quantidade de tabelas, por conseguinte é possível escolher a grande quantidade de bits distribuída para cada tabela para acessar uma respectiva entrada pré-determinada de tabela de consulta.
É também notado que os blocos de dados que são definidos para acessar particulares linhas em uma rodada r também acessam linhas em outras rodadas, conforme as rodadas são partes da rede de tabelas de consulta. Adicionalmente, algumas dessas linhas acessadas podem também ser unificadas com código. Como um resultado, menos blocos necessários, para serem incluídos para alcançar aquele certo número de bytes unificados com código, são acessado pelo algoritmo.
Além dos modos de CBC discutidos, um modo de balcão (CTR) também pode ser usado. Em tal um modo, o balcão (por exemplo, uma seqüência de valores pseudo-aleatórios) pode ser criptografado mais propriamente do que os dados em si. Os dados são submetidos a operação de XOR com a seqüência do balcão criptografada. Para este modo, a liberdade em escolher valores de contador pode ser usada para incluir os valores desejados (correspondendo às pré-determinadas tabelas de consulta) na seqüência de balcão. Por exemplo, um conjunto de valores de balcão pode ser feito para ocorrer perto do começo da seqüência de dados, o que vai forçar uma porção grande das entradas de tabela unificadas de serem acessadas. Se a criptografia da seqüência do balcão é de novo efetuada no modo "proposto" de CBC, então uma mudança no código unificado será fatal para um processamento de uma porção grande da seqüência de dados. Uma vantagem de usar o modo de CTR aqui é que não há ações de descriptografar / criptografar supérfluas, conforme o resultado da ação de criptografar dos valores de balcão escolhido é submetido a operação de XOR com dados criptografados para obter o texto sem codificação válido.
O método também pode ser usado para validação de uma imagem binária. Através de rapidamente acessar todas as entradas nas tabelas de consulta, é rapidamente verificado se os valores nas tabelas de consulta estão corretas. Em adição, não é necessário processar dados reais. Primeiro, um conjunto de blocos de dados é derivado que faz valer que todas as entradas da caixa Sistema são acessadas. Isto pode ser feito com o algoritmo descrito. A seguir, para todos os blocos de dados blocos neste conjunto, é testado se as tabelas de consulta dão a resposta correta. Se este é o caso, a imagem binária está provavelmente correta. Quando usando um modo de encadeamento de bloco cifrado como explicado acima, somente o último resultado necessita ser verificado porque ele está somente correto se todas as operações anteriores foram corretas.
Figura 5 ilustra uma modalidade da invenção. A Figura mostra uma porta de comunicação 95 tal como uma conexão para a Internet para conectar com um provedor de conteúdo digital. O conteúdo também pode ser obtido da mídia 96 tal como um DVD ou CD. O conteúdo digital no PC é tipicamente traduzido usando executores de mídia media sendo executado pelo processador 92 usando a memória 91. Tais executores podem executar, para um formato de conteúdo específico, um respectivo software padrão para efetuar a decodificação do formato específico decodificando correspondendo ao conteúdo obtido através da porta de comunicação 95 e / ou mídia 96. Aqueles formatos de conteúdo podem incluir AVI, DV, Motion JPEG, MPEG-I, MPEG-2, MPEG-4, WMV, CD de áudio, MP3, WMA, WAV, AIFF/AIFC, AU, etc. Para propósitos de gerenciamento de direitos digitais, um software padrão seguro pode ser usado o que não somente decodifica o conteúdo mas também descriptografa o conteúdo. Este software padrão compreende instruções de processador e parâmetros (tal como tabelas de consulta escamoteadas) armazenados na memória 91. As instruções de processador e parâmetros pode se sobreporem conforme estabelecido; nesse caso, algumas localizações de memória 91 contêm um valor representando ambos, a instrução de processador e o valor durante a execução do software padrão. No conteúdo, os blocos de dados são inseridos para ter certeza que algumas localizações de memória pré-definidas são usadas como entradas da tabela de consulta sua decodificação / ação de descriptografar. Por exemplo, as localizações de memória representando ambos, a instrução de processador e o valor de parâmetro podem ser endereçados. Uma entrada de usuário 94 pode ser fornecida para obter comandos de um usuário para indicar conteúdo a ser interpretado, e o mostrador 93 e / ou alto-falantes são fornecidos para traduzir o conteúdo decodificado e / ou descriptografado.
Será apreciado que a invenção também se estende à programas de computador, particularmente programas de computador sobre ou um portador, adaptado para colocar a invenção em prática. O programa pode ser na forma de código fonte, código objeto, a código intermediário de código fonte e objeto tal como na forma parcialmente compilado, ou em qualquer outra forma adequada para uso na implementação do método de acordo com a invenção. O portador pode ser qualquer entidade ou dispositivo capaz de carregar o programa. Por exemplo, o portador pode incluir uma meio de armazenamento, tal como uma ROM, por exemplo, um CD ROM ou uma memória de semicondutor, ou um meio de gravação magnético, por exemplo, um disco flexível ou disco rígido. Ainda o portador pode ser um portador transmissível tal como um sinal elétrico ou óptico, que pode ser conduzido através de cabo elétrico ou óptico ou por rádio ou outros meios. Quando o programa é incorporado em tal um sinal, o portador pode ser constituído por tal cabo ou outro dispositivo ou meios. Alternativamente, o portador pode ser um circuito integrado no qual o programa está embutido, o circuito integrado sendo adaptado para efetuar, ou para uso no desempenho do método relevante.
Deve ser notado que as modalidades acima mencionadas ilustram mais propriamente do que limitam a invenção, e que aqueles qualificados na arte serão capazes de projetar muitas modalidades alternativas sem fugir do escopo das reivindicações anexas. Nas reivindicações, quaisquer símbolos de referência colocados entre parênteses não devem ser interpretados como limitando a reivindicação. Uso do verbo "compreendendo" e suas conjugações não exclui a presença de elementos ou passos outros do que aqueles colocados em uma reivindicação. O artigo "um" ou "uma" precedendo um elemento não exclui a presença de uma grande quantidade de tais elementos. A invenção pode ser implementada por meio de hardware compreendendo vários elementos distintos, e por meio de um, de forma adequado, programa de computador. Na reivindicação de dispositivo enumerando vários meios, vários desses meios podem ser incorporados através de um e o do mesmo item de hardware. O mero fato que certas medidas são citada em mutuamente diferentes reivindicações dependentes não indicam que uma combinação dessas medidas não podem ser usadas para vantagem.

Claims (11)

1. Sistema para aumentar a resistência à adulteração de uma unidade de processamento de dados digitais, caracterizado pelo fato de compreender uma primeira unidade (901) compreendendo: - uma entrada (904) para receber os dados digitais, e - meios de processamento (906) para processar os dados digitais recebidos em dependência dos valores consultados em pelo menos uma tabela de consulta (916) com base nos valores nos dados digitais recebidos; e uma segunda unidade (902) compreendendo - meios (912) para computar pelo menos um valor para inclusão nos dados digitais forçando a primeira unidade (901) a consultar pelo menos um valor pré-determinado na tabela de consulta (916) quando processando os dados digitais, para verificar a presença do valor predeterminado, - um elemento de inserção (910) para incluir o pelo menos um valor nos dados digitais, e - uma saída (908) para transmitir os dados digitais para a primeira unidade.
2. Sistema de acordo com a reivindicação 1, caracterizado pelo fato de que - a segunda unidade compreende meios de criptografar para incluir conteúdo criptografado nos dados digitais; - o elemento de inserção é arranjado para incluir o pelo menos um valor no conteúdo criptografado; e - os meios de processamento são arranjados para descriptografar no conteúdo criptografado com base na operações de consulta.
3. Sistema de acordo com a reivindicação 1, caracterizado pelo fato de ainda compreender meios de verificação para comparar uma saída dos meios de processamento com um valor de referência.
4. Sistema de acordo com a reivindicação 1, caracterizado pelo fato de que os meios de processamento são arranjados para processar os dados digitais em uma ordem pré-determinada, onde os valores consultados influenciam um resultado do processamento dos dados cujo processamento inicia após a operação de consulta.
5. Sistema de acordo com a reivindicação 1, caracterizado pelo fato de que o elemento de inserção é arranjado para posicionar o pelo menos um valor nos dados digitais para forçar os meios de processamento a consultar o pelo menos um valor pré-determinado na tabela de consulta antes de processar um bloco pré-determinado dos dados digitais.
6. Sistema de acordo com a reivindicação 1, caracterizado pelo fato de que - a primeira unidade compreende uma memória para armazenar uma representação de bit do software a ser executado pela primeira unidade, e pelo menos parte da representação de bit do software é usado como pelo menos parte da tabela de consulta pelos meios de processamento; e - o pelo menos um valor pré-determinado na tabela de consulta ocorre na pelo menos parte da representação de bit do software.
7. Sistema de acordo com reivindicação 6, caracterizado pelo fato de que a pelo menos parte da representação de bit do software contém instruções executadas como parte de uma operação dos meios de processamento.
8. Sistema (902) para aumentar a resistência à adulteração de uma unidade de processamento de dados digitais, caracterizado pelo fato de compreender - meios (912) para computar pelo menos um valor para inclusão nos dados digitais forçando a unidade de processamento a consultar pelo menos um valor pré-determinado em uma tabela de consulta quando processando os dados digitais, para verificar a presença do valor predeterminado, - um elemento de inserção (910) para incluir o pelo menos um valor nos dados digitais, e - uma saída (908) para distribuir os dados digitais para a unidade de processamento.
9. Sistema (901) para aumentar a resistência à adulteração de uma unidade de processamento de dados digitais, caracterizado pelo fato de compreender - uma entrada (904) para receber os dados digitais; e - meios de processamento (906) para processar os dados digitais recebidos em dependência dos valores consultados na pelo menos uma tabela de consulta (916) com base nos valores nos dados digitais recebidos; onde os dados digitais contêm pelo menos um valor forçando os meios de processamento a consultar pelo menos um valor pré-determinado na tabela de consulta quando processando os dados digitais, para verificar a presença do valor predeterminado.
10. Método para aumentar a resistência à adulteração de uma unidade de processamento de dados digitais, caracterizado pelo fato de compreender em uma primeira unidade (901): - receber (904) os dados digitais, e - processar (906) os dados digitais recebidos em dependência dos valores consultados em pelo menos uma tabela de consulta com base nos valores nos dados digitais recebidos; e em uma segunda unidade (902): - computar (912) pelo menos um valor para inclusão nos dados digitais forçando a primeira unidade a consultar pelo menos um valor pre- determinado na tabela de consulta quando decodificando os dados digitais, para verificar a presença do valor predeterminado, - incluir (910) o pelo menos um valor nos dados digitais, e - transmitir (908) os dados digitais para a primeira unidade.
11. Produto de programa de computador, caracterizado pelo fato de forçar um processador a efetuar o método como definido na reivindicação 10.
BRPI0714242-0A 2006-07-12 2007-06-27 sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador BRPI0714242A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06117041 2006-07-12
EP06117041.1 2006-07-12
PCT/IB2007/052496 WO2008010119A2 (en) 2006-07-12 2007-06-27 Tamper resistance of a digital data processing unit

Publications (1)

Publication Number Publication Date
BRPI0714242A2 true BRPI0714242A2 (pt) 2013-01-29

Family

ID=38957157

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0714242-0A BRPI0714242A2 (pt) 2006-07-12 2007-06-27 sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador

Country Status (6)

Country Link
US (1) US8543835B2 (pt)
EP (1) EP2044724B1 (pt)
JP (1) JP5496663B2 (pt)
CN (1) CN101491001B (pt)
BR (1) BRPI0714242A2 (pt)
WO (1) WO2008010119A2 (pt)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2092684A2 (en) * 2006-11-17 2009-08-26 Koninklijke Philips Electronics N.V. Cryptographic method for a white-box implementation
CN101884195B (zh) * 2007-09-13 2013-03-06 耶德托公司 内容的密码处理
WO2009109884A1 (en) * 2008-03-05 2009-09-11 Koninklijke Philips Electronics N.V. Cryptographic system
EP2353002A4 (en) * 2008-11-11 2012-05-02 Kist Korea Inst Of Science And Technology SYSTEM FOR DETECTING A BIOMOLECULE WITH HIGH SENSITIVITY USING A MICRO-CANTILEVER
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
EP2406916A1 (en) * 2009-03-10 2012-01-18 Irdeto Corporate B.V. White-box cryptographic system with input dependent encodings
CN102932625A (zh) * 2011-08-10 2013-02-13 上海康纬斯电子技术有限公司 一种便携式数字化音视频采集装置
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
US9008184B2 (en) 2012-01-20 2015-04-14 Blackberry Limited Multiple sign bit hiding within a transform unit
US8976960B2 (en) 2012-04-02 2015-03-10 Apple Inc. Methods and apparatus for correlation protected processing of cryptographic operations
BR112014028947A2 (pt) * 2012-05-25 2017-06-27 Koninklijke Philips Nv método de configuração de um processador, dispositivo para configuração de um processador, processador, e produto de programa de computador
MX2015007707A (es) * 2012-12-21 2015-09-07 Koninkl Philips Nv Dispositivo de computacion que comprende red de tablas.
EP2936730B1 (en) * 2012-12-21 2016-06-15 Koninklijke Philips N.V. Computing device configured with a table network
CN105765896B (zh) * 2013-12-05 2020-02-07 皇家飞利浦有限公司 用于表格网络的迭代应用的计算设备
US9654279B2 (en) * 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
CN106464484B (zh) * 2014-03-31 2019-08-09 爱迪德技术有限公司 预定函数的混淆执行
GB201405706D0 (en) * 2014-03-31 2014-05-14 Irdeto Bv Software protection
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
DE102014016548A1 (de) * 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10700849B2 (en) * 2015-07-30 2020-06-30 Nxp B.V. Balanced encoding of intermediate values within a white-box implementation
EP3220304B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
CN108090349A (zh) * 2017-12-19 2018-05-29 武汉珈港科技有限公司 一种基于白盒指令和扩展图灵模型的应用程序白盒化保护系统及方法
US10831869B2 (en) * 2018-07-02 2020-11-10 International Business Machines Corporation Method for watermarking through format preserving encryption
US10783082B2 (en) 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2595899B2 (ja) 1994-05-17 1997-04-02 日本電気株式会社 オンライン伝文暗号化装置
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
CN1260055A (zh) * 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
CA2318198A1 (en) * 1998-01-14 1999-07-22 Irdeto Access B.V. Method for transferring data from a head-end to a number of receivers
CN1227859C (zh) 1998-06-25 2005-11-16 皇家菲利浦电子有限公司 同步数据流发生器、生成数据流的方法、加密器站、解密器站及消费电子装置
US6983371B1 (en) * 1998-10-22 2006-01-03 International Business Machines Corporation Super-distribution of protected digital content
US7162642B2 (en) * 1999-01-06 2007-01-09 Digital Video Express, L.P. Digital content distribution system and method
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US7058675B1 (en) * 2000-09-28 2006-06-06 Altera Corporation Apparatus and method for implementing efficient arithmetic circuits in programmable logic devices
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP4252229B2 (ja) * 2001-03-28 2009-04-08 ユミルリンク株式会社 情報交換システム、情報通信端末、情報交換方法、プログラム、および、記録媒体
US7007025B1 (en) * 2001-06-08 2006-02-28 Xsides Corporation Method and system for maintaining secure data input and output
WO2003003169A2 (en) * 2001-06-28 2003-01-09 Cloakware Corporation Secure method and system for biometric verification
US7191342B1 (en) * 2002-06-04 2007-03-13 Xilinx, Inc. Methods and circuits for allowing encrypted and unencrypted configuration data to share configuration frames
AU2003285891A1 (en) * 2002-10-15 2004-05-04 Digimarc Corporation Identification document and related methods
US7681035B1 (en) * 2003-09-10 2010-03-16 Realnetworks, Inc. Digital rights management handler and related methods
JP4282546B2 (ja) * 2004-05-19 2009-06-24 株式会社東芝 暗号装置、復号装置、鍵生成装置、プログラム及び方法
JP4667800B2 (ja) 2004-09-09 2011-04-13 Kddi株式会社 符号化方法およびそのプログラム
US7881466B2 (en) 2004-10-28 2011-02-01 Irdeto B.V. Method and system for obfuscating a cryptographic function
DE602004013024T2 (de) * 2004-12-02 2009-05-20 Protegrity Corp. Datenbanksystem mit zweitem Präprozessor und Verfahren für den Zugriff auf eine Datenbank
CN1786963A (zh) * 2005-07-21 2006-06-14 曾致中 一种数据库密文查询的方法
CN101401348B (zh) 2006-03-10 2011-08-31 耶德托公司 用于使密码函数模糊的方法和系统
US7664937B2 (en) * 2007-03-01 2010-02-16 Microsoft Corporation Self-checking code for tamper-resistance based on code overlapping

Also Published As

Publication number Publication date
US20090254759A1 (en) 2009-10-08
EP2044724A2 (en) 2009-04-08
US8543835B2 (en) 2013-09-24
WO2008010119A2 (en) 2008-01-24
EP2044724B1 (en) 2015-04-29
JP5496663B2 (ja) 2014-05-21
CN101491001A (zh) 2009-07-22
JP2009543498A (ja) 2009-12-03
WO2008010119A3 (en) 2008-06-19
CN101491001B (zh) 2012-03-14

Similar Documents

Publication Publication Date Title
BRPI0714242A2 (pt) sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador
JP5249053B2 (ja) データ処理システムの完全性
CN106888080B (zh) 保护白盒feistel网络实施方案以防错误攻击
JP5113169B2 (ja) 暗号関数を難読化する方法およびシステム
KR100946042B1 (ko) 탬퍼-레지스턴트 애플리케이션 구동 방법 및 시스템과 컴퓨터 판독 가능 저장 매체
US10097342B2 (en) Encoding values by pseudo-random mask
US10700849B2 (en) Balanced encoding of intermediate values within a white-box implementation
US9819486B2 (en) S-box in cryptographic implementation
CN106209346B (zh) 白盒密码技术交错查找表
CN107273724A (zh) 为白盒实施方案的输入和输出加水印
CN105978680B (zh) 一种加密钥的加密运算方法
Monden et al. A framework for obfuscated interpretation
EP3267618B1 (en) Equality check implemented with secret sharing
Yamauchi et al. Software obfuscation from crackers' viewpoint.
Pijnenburg et al. Efficiency Improvements for Encrypt-to-Self
Cary et al. The Long-Short-Key Primitive and Its Applications to Key Security

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: IRDETO B.V. (NL)

B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 6A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2256 DE 01/04/2014.