BR112020018229A2 - Proteção de dados de circuito integrado - Google Patents

Proteção de dados de circuito integrado Download PDF

Info

Publication number
BR112020018229A2
BR112020018229A2 BR112020018229-0A BR112020018229A BR112020018229A2 BR 112020018229 A2 BR112020018229 A2 BR 112020018229A2 BR 112020018229 A BR112020018229 A BR 112020018229A BR 112020018229 A2 BR112020018229 A2 BR 112020018229A2
Authority
BR
Brazil
Prior art keywords
bits
software
programmable memory
single programmable
firmware
Prior art date
Application number
BR112020018229-0A
Other languages
English (en)
Inventor
Vincent Pierre Le Roy
Baranidharan Muthukumaran
David Tamagno
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112020018229A2 publication Critical patent/BR112020018229A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Remote Sensing (AREA)
  • Power Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

técnicas para fornecer proteção de dados em um circuito integrado são fornecidas. um método do exemplo de acordo com essas técnicas inclui determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado, e corromper um valor de contador anti-repetição (arc), mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.

Description

“PROTEÇÃO DE DADOS DE CIRCUITO INTEGRADO” REFERÊNCIAS CRUZADAS AOS PEDIDOS RELACIONADOS FUNDAMENTOS
[0001] Os dispositivos de computação normalmente armazenam dados confidenciais de propriedade dos usuários ou empresas, com sistema operacional firmware ou software nos dispositivos de computação de propriedade de um dispositivo de computação ou fabricante de módulo seguro. Os proprietários de firmware ou software podem carregar software para dispositivos de computação que alteram as medidas de segurança, por exemplo, remove mitigações de ataque de força bruta, desativa inicialização segura/inicialização confiável e/ou carrega outro firmware ou software nos dispositivos de computação.
SUMÁRIO
[0002] Um método do exemplo para fornecer proteção de dados em um circuito integrado de acordo com a divulgação inclui determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado, e corromper um valor de contador anti-repetição (ARC) mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
[0003] As implementações de um tal método podem incluir um ou mais dos seguintes recursos. A determinação que a atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado inclui detectar uma alteração no software no circuito integrado, autenticar pelo menos um de um usuário e do software em resposta à detecção da alteração no software no circuito integrado; e determinar que a alteração no software no circuito integrado não foi autorizada em resposta a pelo menos um do usuário e do software não sendo autenticado.
A autenticação do usuário inclui determinar se o usuário foi autenticado; e realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
A autenticação do software inclui determinar um código de autenticação de mensagem (MAC) para o software aplicando- se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
A corrupção do valor de ARC ainda inclui atualizar um valor de ARC armazenado na memória programável única com um valor de ARC atual mantido na memória volátil.
A corrupção do valor de ARC inclui determinar um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
A determinação do primeiro número de bits da memória programável única para definir ainda inclui determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única. A determinação do primeiro conjunto de bits da memória programável única a ser definido ainda inclui selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
[0004] Um circuito integrado do exemplo de acordo com a divulgação inclui meios para determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e meios para corromper um valor de contador anti-repetição (ARC) mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
[0005] As implementações de um tal circuito integrado podem incluir um ou mais dos seguintes recursos. Os meios para determinar que a atualização não autorizada foi feita no software ou no firmware inclui meios para detectar uma alteração no software no circuito integrado; meios para autenticar pelo menos um de um usuário e do software em resposta à detecção da alteração no software no circuito integrado; e meios para determinar que a alteração no software no circuito integrado não foi autorizada em resposta a pelo menos um do usuário e do software não sendo autenticado. Os meios para autenticar o usuário incluem meios para determinar se o usuário foi autenticado; e meios para realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
Os meios para autenticar o software incluem meios para determinar um código de autenticação de mensagem (MAC) para o software aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e meios para comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
Os meios para corromper o valor de ARC incluem meios para atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado.
O circuito integrado ainda inclui meios para determinar um primeiro número de bits da memória programável única a ser definido; meios para determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e meios para atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
Os meios para determinar o primeiro número de bits da memória programável única para definir incluem meios para determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
Os meios para determinar que bits da memória programável única para definir incluem meios para selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
[0006] Um circuito integrado do exemplo de acordo com a divulgação inclui uma memória programável única e um processador acoplado à memória programável única. O processador está configurado para determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e corromper um valor de contador anti-repetição (ARC) mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
[0007] As implementações de um tal circuito integrado podem incluir um ou mais dos seguintes recursos. O processador sendo configurado para determinar que a atualização não autorizada foi feita no software ou no firmware é ainda configurado para detectar uma alteração no software no circuito integrado; autenticar pelo menos um de um usuário e do software em resposta à detecção da alteração no software no circuito integrado; e determinar que a alteração no software no circuito integrado não foi autorizada em resposta a pelo menos um do usuário e o software não sendo autenticado. O processador sendo configurado para autenticar o usuário é ainda configurado para determinar se o usuário foi autenticado; e realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado. O processador sendo configurado para autenticar o software é ainda configurado para determinar um código de autenticação de mensagem (MAC) para o software aplicando- se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
O processador sendo configurado para corromper o valor de ARC é ainda configurado para atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado.
O processador é ainda configurado para determinar um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
O processador sendo configurado para determinar o primeiro número de bits da memória programável única para definir é ainda configurado para determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
O processador sendo configurado para determinar que bits da memória programável única para definir é ainda configurado para selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
[0008] Um meio legível por computador não transitório de exemplo, que tem armazenado nele instruções legíveis por computador para fornecer proteção de dados em um circuito integrado, de acordo com a divulgação inclui instruções configuradas para fazer com que um computador determine que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e corromper um valor de contador anti-repetição (ARC) mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
[0009] As implementações de um tal meio legível por computador não transitório podem incluir um ou mais dos seguintes recursos. As instruções configuradas para fazer com que o computador determine que a atualização não autorizada foi feita no software ou no firmware incluem instruções configuradas para fazer com que o computador detecte uma alteração no software no circuito integrado; autenticar pelo menos um de um usuário e do software em resposta à detecção da alteração no software no circuito integrado; e determinar que a alteração no software no circuito integrado não foi autorizada em resposta a pelo menos um do usuário e do software não sendo autenticado. As instruções configuradas para fazer com que o computador corrompa o valor de ARC incluem instruções configuradas para fazer com que o computador atualize um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado. O meio legível por computador não transitório inclui instruções configuradas para fazer com que o computador determine um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única. As instruções configuradas para fazer com que o computador determine o primeiro número de bits da memória programável única para definir incluem instruções configuradas para fazer com que o computador determine o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única. As instruções configuradas para fazer com que o computador determine quais bits da memória programável única para definir incluem instruções configuradas para fazer com que o computador selecione aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
BREVE DESCRIÇÃO DOS DESENHOS
[0010] A Figura 1 é um diagrama de bloco funcional de um sistema de computador de exemplo.
[0011] A Figura 2 é um diagrama de bloco funcional de uma implementação alternativa do sistema de computador do exemplo ilustrado na Figura 1.
[0012] A Figura 3 é um diagrama de bloco de um sistema de computador do exemplo que pode ser usado para implementar os sistemas de computador ilustrados nas Figuras 1 e 2.
[0013] A Figura 4 é um diagrama que ilustra uma técnica com base em nonce para manter um contador anti- repetição.
[0014] A Figura 5 é um diagrama que ilustra uma outra técnica para manter um contador anti-repetição.
[0015] A Figura 6 é um diagrama que ilustra uma outra técnica para manter um contador anti-repetição.
[0016] A Figura 7 é um diagrama de fluxo de um processo do exemplo para apagar com segurança o conteúdo de memória não volátil segura.
[0017] A Figura 8 é um diagrama de fluxo de um processo do exemplo para corromper o contador anti- repetição.
[0018] A Figura 9 é um diagrama que ilustra uma técnica para corromper um contador anti-repetição.
[0019] A Figura 10 é um diagrama que ilustra uma técnica para corromper um contador anti-repetição.
[0020] A Figura 11 é um diagrama que ilustra uma técnica para corromper um contador anti-repetição.
[0021] A Figura 12 é um diagrama que ilustra um circuito integrado de exemplo.
DESCRIÇÃO DETALHADA
[0022] As técnicas são divulgadas neste documento para impedir uma evasão não autorizada de proteções de dados para dados confidenciais em um dispositivo de computação. Essas técnicas podem atenuar as tentativas de proprietários de firmware ou de software de contornar essas proteções de dados, substituindo o firmware e/ou o software no dispositivo de computação. Um usuário não autorizado que tem acesso físico ao dispositivo de computação pode tentar gerar uma imagem de firmware assinada que parece ser legítima e que, quando executada, pode acessar os dados confidenciais armazenados no dispositivo de computação. As técnicas divulgadas neste documento podem ser usadas para detectar uma atualização não autorizada de software e/ou de firmware associados ao dispositivo de computação, e os dados sensíveis podem ser tornados irrecuperáveis para impedir que o software ou o firmware não autorizado obtenha os dados confidenciais.
[0023] O dispositivo de computação pode compreender um circuito integrado, como um sistema em um chip (SoC), e uma memória não volátil (NVM) (também denominada aqui como uma “NVM externa”) em que dados confidenciais usados pelo circuito integrado podem ser armazenados. O conteúdo da NVM pode ser criptografado para impedir acesso não autorizado ao conteúdo da NVM. Um invasor que tem acesso físico ao dispositivo de computação pode tentar gerar uma imagem de firmware assinada que pareça ser legítima, e que quando executada, pode acessar os dados confidenciais armazenados na NVM. As técnicas divulgadas neste documento podem ser usadas para detectar uma atualização não autorizada para software e/ou firmware do dispositivo de computação, e o conteúdo da NVM pode ser tornado irrecuperável para impedir o software e/ou firmware não autorizado de obter o conteúdo da NVM.
[0024] O conteúdo da NVM pode ser seguro por um mecanismo anti-repetição. O mecanismo anti-repetição pode ser um mecanismo anti-repetição com base em fusível em que os fusíveis de uma memória programável única do circuito integrado do dispositivo de computação são usados para manter um contador anti-repetição (ARC) que pode ser usado para impedir ataques de repetição em dados armazenados na memória não volátil (NVM). O ARC pode ser usado para fornecer integridade de dados para o conteúdo da NVM através do uso de autenticação de mensagem ou outros meios. O ARC pode ser usado para fornecer confidencialidade de dados do conteúdo da NVM (também denominada aqui como dados de “carga útil”) quando usados com uma Chave Única de Hardware (HUK) ou informações secretas para produzir uma chave criptográfica que pode ser usada para criptografar o conteúdo da NVM. O ARC é usado pelo subsistema de processamento seguro para recuperar o valor da carga útil antes de ser criptografado e armazenado na NVM.
[0025] O ARC pode ser mantido na memória programável única do circuito integrado que pode ser acessado pela atualização do software e/ou do firmware não autorizado introduzida no dispositivo pelo invasor. As técnicas divulgadas neste documento podem ser usadas para detectar uma tal atualização não autorizada e para corromper o ARC na memória programável única de modo que o invasor seja incapaz de recuperar o conteúdo armazenado na NVM. O invasor pode ser capaz de obter a carga útil a partir da NVM. Mas o valor de ARC usado como a chave de criptografia terá se tornado irrecuperável, desse modo impedindo o invasor de recuperar o conteúdo não criptografado da carga útil. Embora os exemplos divulgados neste documento sejam denominados como mecanismos anti-repetição “com base em fusível”, as técnicas divulgadas neste documento não são limitadas às implementações de memória programável única que usam fusíveis. Outras implementações podem usar antifusíveis ou outros componentes que podem ser definidos uma vez e que podem ser usados para representar um bit de dados em vez de fusíveis.
[0026] A Figura 1 é um diagrama de bloco funcional de um exemplo de dispositivo de computação 100. O dispositivo de computação 100 compreende um subsistema de processamento seguro (SPSS) 110 e uma memória não volátil externa (NVM) 150 externa ao subsistema de processamento seguro 110 que pode ser usada pelo subsistema de processamento seguro 110 para armazenar dados. O subsistema de processamento seguro 110 pode ser implementado como um sistema em um chip (SoC) ou outro dispositivo semelhante que inclui um elemento processador e memória implementada em um circuito integrado. O subsistema de processamento seguro 110 pode ser implementado no circuito integrado, e a NVM 150 pode ser implementada como memória fora do chip ou uma memória externa que não é implementada no mesmo circuito integrado como o subsistema de processamento seguro 110. O subsistema de processamento seguro 110 pode ser acoplado de forma comunicável, tanto direta quando indiretamente conectado, com a NVM 150 e configurado para armazenar dados na NVM 150 e acessar dados a partir da NVM
150.
[0027] O processador 190 do subsistema de processamento seguro pode implementar as várias funções e elementos funcionais discutidos aqui em relação ao subsistema de processamento seguro 110. Por exemplo, os seguintes elementos funcionais: (código de autenticação de mensagem hash) bloco de HMAC 130, bloco de HMAC 135, e/ou o bloco correspondente 145, podem ser implementados por um processador 190 do subsistema de processamento seguro 110. A funcionalidade do bloco de HMAC 130, do bloco de HMAC 135, e do bloco correspondente 145 é descrita em mais detalhes abaixo. A implementação do exemplo ilustrada na Figura 1 inclui estes blocos funcionais para verificar a integridade da carga útil 155 armazenada na NVM 150 usando o código de autenticação de mensagem (MAC) 160 gravado na NVM 150 com a carga útil 155. Entretanto, outras implementações podem utilizar uma técnica diferente para verificar a integridade da carga útil 155 armazenada na NVM 150. Além disso, o subsistema de processamento seguro 110 pode ser configurado para gerar uma assinatura criptográfica de pelo menos uma parte dos dados ou um resumo dos dados a ser gravado na NVM externa 150. Por exemplo, o processador 190 do subsistema de processamento seguro 110 pode ser configurado para gerar um hash de pelo menos parte dos dados ou um resumo dos dados e para criptografar o hash ou resumo dos dados. O hash criptografado pode ser armazenado na NVM externa 150 com os dados em vez de ou além do MAC 160.
[0028] O subsistema de processamento seguro também pode ser implementado por um processador de uso geral, como o processador 190 do dispositivo de computação 100, que pode ser configurado para segregar recursos de processamento seguro e memória de recursos de processamento geral e memória para aplicativos não seguros. O subsistema de processamento seguro 110 pode fornecer um ambiente de execução seguro para código de programa executável pelo processador e para proteger dados armazenados que podem impedir acesso não autorizado aos dados armazenados nele e/ou impedir execução não autorizada de instruções de programa executáveis pelo processador por um processador do subsistema de processamento seguro 110. O subsistema de processamento seguro 110 pode implementar um ambiente de execução confiável (TEE) compreendendo uma área segura do processador 190. O TEE pode fornecer um ambiente operacional isolado para o código de programa e dados dentro do TEE que fornece confidencialidade e integridade para o código de programa e dados dentro do TEE. O dispositivo de computação 100 pode incluir um subsistema de processamento não seguro (não mostrado) em que o código de programa não confiável pode ser executado e os dados não confidenciais podem ser armazenados. O processador 190 pode fornecer esse subsistema de processamento não seguro ou o dispositivo de computação 100 pode incluir um ou mais processadores adicionais (não mostrado) que fornecem um ambiente de processamento não seguro que é segregado a partir do subsistema de processamento seguro 110.
[0029] O subsistema de processamento seguro 110 pode incluir uma memória volátil 120 e uma memória não volátil, como uma memória programável única 125. A memória volátil 120 pode compreender memória que é configurada para manter os dados armazenados nela enquanto a energia é fornecida à memória volátil 120. O conteúdo da memória volátil 120 será perdido se a energia fornecida ao subsistema de processamento seguro 110 for perdida. A memória programável única 125 compreende uma memória persistente que retém os dados armazenados nela mesmo se a energia ao subsistema de processamento seguro 110 for perdida. A memória programável única 125 pode compreender uma pluralidade de fusíveis em que cada um representa um bit de dados, e o valor de um bit específico pode ser definido queimando-se o fusível correspondente. O valor de um fusível, uma vez definido, não pode ser alterado. O valor do fusível em seu estado original pode ser usado para representar um valor de bit de zero (0), e o valor do fusível uma vez queimado pode ser usado para representar um valor de bit de um (1’). Em outras modalidades, o valor do fusível em seu estado original pode ser usado para representar um valor de bit de um (1’), e o valor do fusível uma vez queimado pode ser usado para representar um valor de bit de um (0’). Além disso, outros tipos de memória programável única 125 podem ser usados. A memória programável única 125 pode compreender antifusíveis ou outros componentes que podem ser definidos uma vez e que podem ser usados para representar um bit de dados em vez de fusíveis. A natureza programável de uso único da memória programável única 125 significa que a memória programável única 125 pode eventualmente ser esgotada. As técnicas divulgadas neste documento reduzem a frequência com que o ARC necessita ser incrementado na memória programável única 125, desse modo reduzindo a taxa na qual a memória programável única 125 é consumida.
[0030] O subsistema de processamento seguro
110 pode incluir uma fonte de energia interna 195. A fonte de energia interna pode ser usada como uma fonte de energia secundária que pode fornecer energia ao subsistema de processamento seguro no evento que energia a partir da fonte de energia externa 185 é perdida. A fonte de energia interna 195 pode compreender um capacitor, uma bateria, ou outro dispositivo que pode armazenar energia elétrica que pode alimentar o subsistema de processamento seguro 110 para pelo menos um curto período de tempo no evento que energia a partir da fonte de energia externa 185 é perdida. A fonte de energia interna 195 pode ser configurada para fornecer o subsistema de processamento seguro 110 com energia suficiente para permitir que o subsistema de processamento seguro 110 grave o contador anti-repetição atual (ARC) 140 armazenado na memória volátil 120 para o ARC 165 armazenado na memória programável única 125 de modo que o ARC não seja perdido devido à perda de energia do dispositivo de computação.
[0031] A fonte de energia externa 185 é uma fonte de energia que é separada a partir do subsistema de processamento seguro 110 e pode ser removível a partir do dispositivo de computação 100. A fonte de energia externa 185 pode compreender uma bateria ou outro dispositivo que possa fornecer energia elétrica aos componentes do dispositivo de computação 100. O dispositivo de computação 100 pode incluir um sensor (não mostrado na Figura 1) que pode fornecer um sinal para o subsistema de processamento seguro 110 responsivo ao sensor detectando uma intrusão física do dispositivo de computação. A fonte de energia externa 185 pode ser removível, de modo que a fonte de energia externa 185 possa ser removida e substituída com uma outra fonte de energia externa 185. Um usuário do dispositivo de computação 100 pode trocar a fonte de energia externa 185 por uma outra fonte de energia externa 185, por exemplo, se a fonte de energia estiver esgotada ou o usuário do dispositivo desejar forçar o dispositivo de computação 100 para reiniciar.
[0032] O subsistema de processamento seguro 110 pode ser configurado para armazenar um valor de contador anti-repetição (ARC), denominado como ARC 165, na memória programável única 125 responsiva a um evento de perda de energia. O termo “perda de energia” como usado neste documento indica que a fonte de energia externa 185 não está mais fornecendo energia elétrica ao subsistema de processamento seguro 110, está fornecendo um nível de energia elétrica que é insuficiente para permitir que o subsistema de processamento seguro 110 opere, ou que o nível de energia restante da fonte de energia externa 185 atingiu um limite onde a perda de energia para o subsistema de processamento seguro é iminente. A perda de energia pode resultar a partir da remoção da fonte de energia externa 185 a partir do dispositivo de computação 100, onde a fonte de energia externa 185 compreende uma bateria ou outra fonte removível de energia. Uma perda de energia evento em uma tal situação pode ser detectada pela fonte de energia externa 185 não está mais fornecendo energia ao subsistema de processamento seguro 110, a fonte de energia externa 185 não está mais fornecendo um nível suficiente de energia elétrica para permitir que o subsistema de processamento seguro 110 opere, a fonte de energia externa 185 atingindo um nível predeterminado, com base em um sinal de um sensor de intrusão físico indicativo de um compartimento ou alojamento de bateria do dispositivo de computação 100 que tem sido aberto, ou uma combinação de dois ou mais desses fatores.
[0033] Um ou mais outros eventos também podem acionar o processador 190 do subsistema de processamento seguro 110 para armazenar o ARC 140 a partir da memória não volátil na memória programável única 125 como ARC
165. Esses eventos de acionamento podem incluir, mas são não limitados a: (1) o subsistema de processamento seguro 110 fazendo uma determinação que um nível de energia restante da fonte de energia externa 185 atinja um limite predeterminado indicando que a energia a partir da fonte de energia externa 185 pode ser perdida em breve e/ou pode não está mais ser capaz de fornecer um nível de energia elétrica que é suficiente para permitir que o subsistema de processamento seguro 110 opere, (2) o dispositivo de computação 100 está sendo desligado ou reiniciado e o ARC 140 a partir da memória não volátil será perdido se não gravado na memória programável única 125 como ARC 165, e (3) o subsistema de processamento seguro 110 recebe um sinal de um sensor do dispositivo de computação 100 que indica que a bateria ou outra fonte de energia externa pode ser removida a partir do dispositivo de computação 100.
[0034] O subsistema de processamento seguro 110 do dispositivo de computação 100 pode use o ARC 140 para impedir ataques de repetição em que um invasor tenta colocar dados expirados mas de outro modo válido na NVM externa 150 em uma tentativa de ganhar acesso ao subsistema de processamento seguro 110 ou para que o subsistema de processamento seguro 110 realize alguma ação não autorizada. Para impedir ataques de repetição, o subsistema de processamento seguro 110 depende do ARC 140 para garantir que dados armazenados na NVM 150 não podem ser manipulados sem serem detectados. O subsistema de processamento seguro pode gerar dados, denominados aqui como dados de carga útil 115, na memória volátil 120 do subsistema de processamento seguro 110. Entretanto, a quantidade de memória não volátil disponível como memória no chip do circuito integrado é normalmente limitado pelo tamanho e restrições de custo, e o subsistema de processamento seguro 110 pode necessitar descarregar os dados de carga útil 115 para a NVM externa 150 para liberar memória para tarefa de processamento adicional. O subsistema de processamento seguro 110 pode descarregar os dados de carga útil 115 para a NVM externa 150 que pode ser necessário mais tarde e pode ser gravado na NVM externa 150 para armazenamento persistente visto que o tamanho e memória programável única 125 é geralmente limitado e cada bit da memória programável única 125 pode apenas ser gravado uma vez.
[0035] O processador 190 do subsistema de processamento seguro 110 pode recuperar o ARC 165, por exemplo, no momento que o dispositivo de computação 100 é ligado, a partir da memória programável única 125 e armazenar o ARC 140 na memória volátil 120. O ARC 140 pode ser mantido na memória volátil 120 até que um evento de acionamento ocorra que faça com que o processador 190 do subsistema de processamento seguro 110 atualize o ARC 165 na memória programável única com o valor atual do ARC 140 armazenado na memória volátil 120. Um evento de acionamento é um evento que indica que o fornecimento de energia elétrica para o subsistema de processamento seguro 110 pode ser ou foi perdido ou não é mais capaz de fornecer um nível suficiente de energia ao subsistema de processamento seguro 110 para permitir que o subsistema de processamento seguro 110 opere e, assim, o conteúdo da memória volátil 120 será perdido a menos que seja feito um backup.
Manter o ARC 140 na memória volátil 120 até que um tal evento de acionamento ocorra permite que o subsistema de processamento seguro 110 reduza significantemente o número de fusíveis que de outro modo seriam usados para manter o ARC 165 na memória programável única 125. O ARC 140 é atualizado cada vez que os dados são gravados na NVM externa 150. Se o ARC 165 for mantido na memória programável única 125, pelo menos um fusível da memória programável única 125 seria queimado cada vez que um evento de gravação para a NVM ocorreu.
O número de fusíveis compreendendo a memória programável única 125 é normalmente relativamente pequeno devido ao tamanho e considerações de custo para a fabricação do circuito integrado em que o subsistema de processamento seguro 110 é implementado.
Os fusíveis da memória programável única 125 podem ser prontamente esgotados, deixando o subsistema de processamento seguro 110 sem armazenamento no chip para armazenar com segurança os ARCs em uma memória persistente que não seria perdida quando o dispositivo de computação 100 fosse desligado ou reiniciado.
[0036] O ARC 140 pode ser usado pelo subsistema de processamento seguro 110 para gerar um código de autenticação de mensagem (MAC) 160 que pode ser gravado na NVM externa 150 com a carga útil 155 para ser armazenado nele. O MAC 160 pode ser usado para fornecer proteção de integridade para a carga útil 155. O MAC pode ser recalculado pelo processador 190 quando a carga útil 155 é acessada. Se a carga útil 155 fosse modificada, o MAC 160 armazenado com a carga útil 155 não corresponderia ao valor de MAC recalculado.
[0037] O bloco de HMAC 130 pode ser configurado para gerar o MAC 160 aplicando-se um algoritmo de HMAC com chave aos dados de carga útil 115 armazenados na memória volátil 120 que devem ser gravados na NVM externa 150. O bloco de HMAC 130 pode usar pelo menos uma porção do ARC 140 como um parâmetro chave para o algoritmo de HMAC. O subsistema de processamento seguro 110 pode ter criptografado ou de outro modo processado os dados de carga útil 115 antes de calcular o MAC 160. O subsistema de processamento seguro 110 pode ser configurado para gravar o MAC 160 e a carga útil 155 na NVM externa 150. O subsistema de processamento seguro 110 pode ser configurado para se comunicar com a NVM externa 150 através de um barramento ou outra via de comunicação do dispositivo de computação 100.
[0038] O subsistema de processamento seguro 110 pode ser configurado para recuperar a carga útil 155 e o MAC 160 a partir da NVM externa 150. O bloco de HMAC 135 pode receber a carga útil 155 e o valor atual do ARC 140 a partir da memória volátil 120 e recalcular o MAC para a carga útil 155 com base no ARC atual 140. O bloco correspondente 145 pode comparar o valor de MAC calculado recentemente com o MAC 160. Se o MAC 160 corresponder ao valor de MAC recentemente calculado, em seguida, a carga útil 155 não foi modificada nem houve um ataque de repetição em que dados de carga útil expirados e um MAC expirado foram inseridos na NVM externa 150. Se o MAC 160 não corresponder ao valor de MAC recentemente calculado, então, a carga útil 155 foi modificada ou corrompida ou não houve um ataque de repetição em que os dados de carga útil expirados e/ou um MAC expirado foram inseridos na NVM externa 150. O MAC 160 associado com os dados de carga útil expirados não corresponderia ao MAC recalculado pelo bloco de HMAC 135 porque o ARC 140 armazenado na memória volátil 120 é atualizado cada vez que os dados são gravados na NVM externa 150. O ARC 140 teria sido incrementado uma ou mais vezes, visto que, o MAC 160 foi determinado para a carga útil 155, assim, o MAC recentemente determinado com base no valor atual do ARC 140 não corresponderia ao MAC 160.
[0039] A funcionalidade do bloco de HMAC 130, do bloco de HMAC 135, e do bloco correspondente 145 pode ser implementada em hardware do subsistema de processamento seguro, ou pode ser implementada como código de programa executável pelo processador que é executado pelo processador 190 do subsistema de processamento seguro 110. A funcionalidade do bloco de HMAC 130, do bloco de HMAC 135, e do bloco correspondente 145 também pode ser implementada como uma combinação de código de programa executável pelo processador e hardware.
[0040] Como ilustrado na Figura 1, o processador 190 do subsistema de processamento seguro 110 está configurado para calcular um MAC 160 para a carga útil 155 a ser gravado na NVM externa 150. O MAC 160 pode ser gerado usando um código de autenticação de mensagem hash com chave (HMAC). O algoritmo de HMAC está configurado para receber dados para os quais o valor de MAC deve ser gerado e uma chave secreta usada para gerar o valor de MAC dos dados. A Figura 1 ilustra um exemplo do subsistema de processamento seguro 110 incluindo um bloco de HMAC 130 que recebe dados de carga útil e o ARC 140 armazenado na memória volátil 120 do subsistema de processamento seguro 110. Pelo menos uma porção do ARC 140 pode ser selecionada pelo bloco de HMAC 130 para o uso na geração do MAC 160 para os dados que serão gravados na NVM externa 150, que é denominada na Figura 1 como a carga útil 155. O valor do ARC 140 armazenado na memória volátil 120 pode ser incrementado para um novo valor de acordo antes do MAC 160 ser incrementado para impedir um ataque de repetição. O valor do ARC 140 pode ser incrementado usando várias técnicas onde pelo menos uma porção do ARC 140 pode ser selecionada usando um algoritmo aleatório ou um algoritmo combinatório. As Figuras 4 a 6 discutidas abaixo ilustram os processos do exemplo em que o valor do ARC é incrementado usando várias técnicas.
[0041] O exemplo de dispositivo de computação 100 ilustrado na Figura 1 também pode ser adotado para contabilizar dados de carga útil 115 de tamanhos variados. Por exemplo, o tamanho de carga útil pode compreender dados que compreendem toda a NVM externa 150, os dados que correspondam a uma página de memória, ou dados de qualquer tamanho que foram marcados como sendo confidencial. Os dados não marcados como confidencial podem ser armazenados na NVM externa 150 sem o MAC 160 ou outras tais proteções associadas que podem ser fornecidas para a carga útil 155.
[0042] O exemplo de dispositivo de computação 100 pode incluir uma memória não volátil interna 127. Em alguns aspectos, a memória não volátil interna 127 pode ser implementada como um componente do subsistema de processamento seguro 110. Por exemplo, o subsistema de processamento seguro 110 pode ser implementado como um sistema em um chip, e a memória não volátil interna 127 pode ser interna ao subsistema de processamento seguro
110. Ao contrário, a NVM externa 150 é implementada separada a partir do subsistema de processamento seguro
110. A NVM interna 127, como a NVM externa 150, é uma memória persistente que é configurada para reter o conteúdo da memória se a energia para a memória for perdida, em contraste com a memória volátil 120, que perderá o conteúdo armazenado nela se a energia para a memória for perdida ou cair abaixo de um nível necessário para permitir que a memória 120 opere. A NVM interna 127 e a NVM externa 150 podem compreender memória flash e/ou outros tipos de memória persistente que podem ser gravados várias vezes, em contraste com a memória programável única 125 em que cada bit pode apenas ser gravado uma vez. A NVM interna 127 pode armazenar código de programa executável que pode ser executado pelo processador 190, como o código de programa executável (EXP) 129, ilustrado na Figura 1. A NVM externa 150 também pode ser usada para armazenar código de programa executável que pode ser executado pelo processador 190, como o EXP 128 ilustrado na Figura 1.
[0043] O dispositivo de computação 100 pode incluir uma Chave Única de Hardware (HUK) 199 associada com o dispositivo de computação. A HUK 199 pode compreender uma sequência de bit que é armazenada na memória programável única 125 e/ou em um outro local de memória seguro do dispositivo de computação 100 que é acessível pelo processador 190 mas é acessível a certo componente confiável do dispositivo de computação 100 mas é inacessível para código de programa não confiável. A HUK 199 pode ser gerada e programada na memória programável única 125 por um fabricante de equipamento original (OEM) do dispositivo de computação 100. O OEM pode fornecer a HUK 199 para entidades confiáveis que podem fornecer atualizações de software e/ou de firmware para o dispositivo de computação 100 para atualizar software e/ou firmware associados com o dispositivo de computação 100, de modo que o dispositivo de computação 100 possa autenticar essas atualizações. O uso do termo “associado com” neste contexto se refere a software e/ou firmware que são instalados na NVM interna 127, como EXP 129, e/ou software e/ou firmware que são instalados na NVM externa, como EXP 128. O software e/ou firmware e podem ser carregados em uma memória volátil 120 para execução pelo processador 190 do dispositivo de computação 100.
[0044] Uma atualização do software e/ou do firmware pode compreender um arquivo de imagem que inclui um valor de MAC que foi calculado usando um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem. Um arquivo de imagem pode ser transferido por download para o dispositivo de computação 100 através da conexão de rede, copiado para o dispositivo a partir da mídia removível, como uma unidade flash, e/ou fornecida ao dispositivo de computação 100 através de outros meios. Se a atualização de firmware e/ou software for autêntica, o MAC incluído no arquivo de imagem deve ter sido calculado usando a HUK 199 associada com o dispositivo de computação
100. O processador 190 pode calcular um MAC com base em pelo menos uma porção do arquivo de imagem que inclui a atualização de firmware e/ou software e fornecendo uma chave com base na HUK 199 para o algoritmo de CMAC. A chave com base na HUK 199 pode ser derivada a partir da HUK 199 usando um algoritmo de derivação de chave executado pelo processador 190. O processador 190 pode ser configurado para determinar que a atualização não foi autorizada se o MAC incluído no arquivo de imagem não corresponder ao MAC calculado pelo processador 190. O processador 190 pode ser configurado para corromper o ARC 165 e limpar o ARC 140 a partir da memória volátil em resposta a uma tal atualização não autorizada. Em algumas implementações, o processador 190 pode armazenar o MAC 126 calculado para o EXP 129 na NVM interna 127, e pode usar o MAC 126 para determinar se o EXP 129 foi modificado, visto que, o MAC 126 foi calculado. Da mesma forma, o processador 190 pode armazenar o MAC 124 calculado para o EXP 128 na NVM externa 150, e pode usar o MAC 124 para determinar se o EXP 129 foi modificado, visto que, o MAC 124 foi calculado.
[0045] Um arquivo de imagem pode compreender código de objeto binário e/ou código intermediário. O código de objeto binário normalmente compreende código de máquina de formato realocável que pode não ser diretamente executável pelo processador 190 até que o código de objeto binário seja vinculado a um arquivo executável ou a um arquivo de biblioteca. O código de objeto binário pode compreender linguagem de máquina ou pode compreender uma linguagem intermediária, como a linguagem de transferência de registro (RTL). O código de objeto binário pode ser distribuído em vários formatos, como, sem limitação, o Formato de arquivo de objeto comum (COFF) e o Formato Executável e Vinculável (ELF). O código intermediário pode incluir bytecode. O bytecode também pode ser denominado como código portátil, porque o bytecode é tipicamente independente da plataforma, ao contrário do código de objeto binário. O código intermediário é normalmente executado por um interpretador (ou um ambiente de tempo de execução com um compilador antecipado ou um compilador just-in-time) sendo executado no dispositivo de computação
100. O interpretador pode executar diretamente o bytecode sem o bytecode sendo compilado em código de máquina. Em algumas implementações, o bytecode pode ser compilado em código de objeto binário por um compilador no dispositivo de computação 100 (não mostrado).
[0046] O subsistema de processamento seguro 110 do dispositivo de computação 100 pode incluir um carregador de inicialização segura 119 armazenado em uma memória somente leitura (ROM) 105 que está configurada para autenticar um ou mais arquivos de imagem de firmware e/ou arquivos de imagem para um ou mais componentes de software crítico do dispositivo de computação 100 usando várias técnicas de mecanismo de inicialização segura. O carregador de inicialização seguro também pode ser configurado para calcular o CMAC do EXP 129 e/ou o EXP 128 antes de permitir que o dispositivo de computação 100 seja inicializado. Se o valor de CMAC calculado pelo carregador de inicialização não corresponder um valor de CMAC esperado (por exemplo, MAC 126 e/ou MAC 124) que foi previamente calculado e associado com o código de programa executável a ser autenticado pelo carregador de inicialização (por exemplo, EXP 128 e/ou EXP 129), então, o carregador de inicialização seguro pode determinar que uma atualização não autorizada para software e/ou firmware ocorreu para o EXP 128 e/ou EXP 129.
[0047] A Figura 2 é um diagrama de bloco funcional que ilustra o dispositivo de computação 200, que é uma implementação alternativa do exemplo de dispositivo de computação 100 ilustrado na Figura 1. A implementação do exemplo do dispositivo de computação 100 ilustrado na Figura 1 está configurado para armazenar um único exemplo da carga útil 155 e o MAC 160 na NVM externa 150. A Figura 2 ilustra uma implementação alternativa em que o dispositivo de computação 200 pode armazenar várias cargas úteis (por exemplo, carga útil 155a-155n) na NVM 150 com cada carga útil que tem um MAC associado (por exemplo, MAC 160a-160n), onde a-n representa uma faixa de valores de número inteiro de 0 a um valor de número inteiro n. O limite inferior de n pode ser zero se nenhum dos dados está sendo armazenado na NVM 150 que é protegido usando as técnicas divulgadas neste documento, e o limite superior do valor de n pode ser limitado pela quantidade de memória compreendendo a memória volátil 120, o tamanho da NVM 150, e/ou outros fatores.
[0048] As técnicas utilizadas pela implementação do exemplo do dispositivo de computação 100 na Figura 2 diferem levemente das técnicas utilizadas na implementação do exemplo do dispositivo de computação 100 na Figura 1 para facilitar o armazenamento de várias cargas úteis (por exemplo, cargas úteis 155a-155n) e vários MACs (por exemplo, MACs 160a-160n) na NVM 150. Um aspecto que difere entre a implementação do exemplo ilustrado nas Figuras 1 e 2 é como os ARCs são armazenados na memória volátil 120 do subsistema de processamento seguro 110 versus aquele descrito acima em relação à Figura 1. Em relação à implementação do exemplo ilustrado na Figura 1, um único ARC 140 compreendendo um componente de linha de base estática e um componente transiente pode ser armazenado na memória volátil 120. Ao contrário, na implementação ilustrada na Figura 2, vários valores de ARC podem ser mantidos para várias cargas úteis (por exemplo, cargas úteis 155a-155n) armazenadas na NVM 150. Cada carga útil 155 pode ser associada com um valor de componente transiente diferente. O componente de linha de base estática 280 do ARC, uma vez determinado, permanece o mesmo até o dispositivo de computação 100 ser ligado novamente, reiniciado, ou experimentar um outro evento que faça com que o componente de linha de base estática seja incrementado. Ao contrário, o componente transiente do ARC na implementação ilustrada na Figura 1 pode ser atualizado cada vez que a carga útil 155 é gravada na NVM 150. Na implementação ilustrada na Figura 2, um componente transiente separado é associado com cada carga útil 155a- 155n gravada na NVM 150. O componente transiente pode ser incrementado cada vez que uma nova carga útil é gravada na NVM 150 ou uma das cargas úteis existentes é atualizada. As Figuras 4 a 6 discutidas abaixo ilustram várias técnicas que podem ser usadas para incrementar o componente transiente do(s) valor(s) de ARC mantido(s) pelo dispositivo de computação 100.
[0049] Tanto na implementação ilustrada na Figura 1 quanto na implementação ilustrada na Figura 2, o(s) valor(s) do(s) componente(s) transiente(s) associado(s) com a(s) carga(s) útil(s) é (são) mantido(s) na memória volátil 120, de modo que o processador 190 é capaz de recuperar o conteúdo da carga útil 155 armazenado na NVM. Por exemplo, o subsistema de processamento seguro 110 pode ser configurado para manter uma tabela de pesquisa que associa um respectivo um dos componentes transientes 270a-270n de cada carga útil das cargas úteis 155a-155n armazenadas na NVM 150. A tabela de pesquisa pode associar um endereço de uma respectiva carga útil 155a-155n armazenada na NVM 150 com o ARC (compreendendo um componente transiente dos componentes transientes 270a- 270n e um componente de linha de base estática 280) usado para proteger essa carga útil 155a-155n. O subsistema de processamento seguro 110 pode armazenar a tabela de pesquisa na memória volátil 120. O subsistema de processamento seguro 110 pode impedir software não confiável de acessar a tabela de pesquisa e as informações de ARC armazenadas nele.
[0050] Na implementação ilustrada na Figura 2, o ARC associado com cada uma da pluralidade de cargas úteis pode compartilhar o mesmo componente de linha de base estática 280. Entretanto, o componente transiente 270 para uma respectiva carga útil (representada pelos componentes transientes 270a-270n na Figura 2) pode ser diferente para cada uma da pluralidade de cargas úteis 155a-155n armazenadas na NVM 150. O subsistema de processamento seguro 110 pode armazenar os vários componentes transientes (por exemplo, componentes transientes 270a-270n) na memória volátil 120 junto com o componente de linha de base estática 280. Os dados de carga útil podem inicialmente ser armazenados na memória volátil 120 antes de serem gravados na NVM 150. Se o componente de linha de base estática 280 ainda não tiver sido calculado, o processador 190 do subsistema de processamento seguro 110 pode ser configurado para determinar o componente de linha de base estática 280 com base no ARC 165 armazenado na memória programável única
125.
[0051] Os valores de linha de base estática são armazenados e utilizados levemente de maneira diferente pelas implementações ilustradas nas Figuras 1 e
2. No exemplo, ilustrado na Figura 1, o componente de linha de base estática é usado para estabelecer o valor inicial do ARC 140 armazenado na memória volátil 120. Ao contrário, na implementação do exemplo ilustrado na
Figura 2, o componente de linha de base estática é inicializado como o componente de linha de base estática 280 na memória volátil 120. O processador 190 combina o componente de linha de base estática 280 com um respectivo um dos componentes transientes 270a-270n para determinar um respectivo ARC associado com uma respectiva carga útil 155a-155n armazenada na NVM 150.
[0052] O valor de linha de base estática para qualquer uma das implementações ilustradas nas Figuras 1 ou 2 pode ser derivado a partir do ARC 165 armazenado na memória programável única 125. O valor de linha de base estática pode ser determinado quando o dispositivo de computação 100 é reiniciado ou ligado e antes de quaisquer outros programas de firmware ou de software serem executados. O ARC 165 é alterado quando o valor de linha de base estática é determinado. Esse método pode impedir que um ataque de repetição seja encenado onde a bateria ou outro fornecimento de energia elétrica é removido a partir do dispositivo de computação 100 ou 200 em uma tentativa de resetar o valor de contador usado pelo subsistema de processamento seguro 110. Esse método também pode impedir que o software não autorizado execute e obtenha acesso ao conteúdo confidencial da NVM 150 que foi previamente criptografado ou de outro modo seguro usando o valor anterior do ARC armazenado na memória programável única
125. A determinação do valor de linha de base estática pode ser realizada por um carregador de inicialização que é implementado em uma memória somente leitura (ROM) do processador 190 que não pode ser alterado pelas atualizações de firmware ou de software. Os exemplos ilustrado nas Figuras 4 a 6, que são discutidos em detalhes abaixo, fornecem exemplos de como a linha de base estática pode ser calculada e como o ARC pode ser incrementado uma vez a linha de base estática foi atualizada. Cada vez que um evento ocorre que aciona um novo valor de linha de base estática a ser determinado, o processador 190 do subsistema de processamento seguro 110 seleciona pelo menos um bit que não foi definido na memória programável única 125. O pelo menos um bit pode ser selecionado aleatoriamente ou pode ser selecionado usando um algoritmo combinatório. O processador 190 define um valor do selecionado pelo menos um bit na memória programável única 125 queimando-se os fusíveis, antifusíveis, ou outros componentes apropriados para incrementar o ARC 165 armazenado na memória programável única 125.
[0053] O componente de linha de base estática 280 pode ser mantido na NVM 150 até que pelo menos um evento de acionamento ocorra que faça com o processador 190 do subsistema de processamento seguro 110 atualize o ARC 165 na memória programável única 125. Esses eventos de acionamento podem ser semelhantes aos discutidos acima em relação à Figura 1. Em algumas implementações, o subsistema de processamento seguro 110 pode gravar o componente de linha de base estática 280 à memória programável única 125 como o ARC 165. O processador 190 pode ser configurado para combinar um componente transiente 270 com o componente de linha de base estática 280 (por exemplo, como ilustrado nas Figuras 4 a 6) para gerar um ARC a ser gravado como o ARC 165 armazenado na memória programável única 125. O processador 190 pode ser configurado para selecionar um valor do componente transiente 270 determinado mais recentemente para gerar o ARC a ser gravado no ARC 165 armazenado na memória programável única 125 ou pode selecionar um valor de um dos componentes transientes 270a- 270n na memória volátil 120.
[0054] Na implementação do subsistema de processamento seguro 110 ilustrado na Figura 2, o processador 190 pode calcular um valor de MAC (por exemplo, MACs 160a-160n) para cada carga útil (por exemplo, 155a-155n). O componente transiente (por exemplo, componente transiente 275a-275n) também pode ser armazenado com a carga útil e o MAC. O subsistema de processamento seguro 110 pode ser configurado para opcionalmente gravar o componente transiente 270a-270n na NVM 150 como o componente transiente 275a-275n junto com a carga útil 155a-155n e o MAC 160a-160n. O subsistema de processamento seguro 110 pode ser configurado para manter uma cópia do componente transiente 270a-270n na memória volátil 120 e armazenar o componente transiente 275a-275n na NVM 150. O MAC 160a-160n para uma respectiva uma das cargas úteis 155a-155n pode ser calculado usando o ARC associado com que carga útil 155a-155n, que compreende uma união dos bits do componente de linha de base estática 280 e o respectivo componente transiente dos componentes transientes 270a-270n associados com a carga útil 155a- 155n. O MAC pode ser calculado usando um algoritmo de HMAC como discutidos acima em relação à Figura 1 usando pelo menos uma porção do ARC associada com a carga útil. O processador 190 pode recalcular o MAC para uma respectiva uma das cargas úteis usando a mesma técnica usada para calcular o MAC armazenado na NVM 150 e comparar o valor de MAC calculado para o valor armazenado na NVM 150 para determinar se a carga útil foi corrompida ou manipulada, visto que, a carga útil foi gravada na NVM 150.
[0055] A Figura 3 é um diagrama de bloco simplificado de um exemplo de dispositivo de computação 300 que pode ser usado para implementar os dispositivos de computação 100 e 200 ilustrados nas Figuras 1 e 2. A Figura 3 é um diagrama esquemático que ilustra vários componentes do exemplo de dispositivo de computação 300, que podem ser semelhantes ou o mesmo como os dispositivos de computação 100 e 200 representados nas Figuras 1 e 2. Como ilustrado pelas setas, os vários recursos/componentes/funções ilustrados nas caixas esquemáticas da Figura 3 são acoplados juntos de maneira operativa, isto é, sendo direta ou indiretamente (por exemplo, através de um ou mais componentes intermediários) conectados. Os componentes do dispositivo de computação 300 podem ser conectados de maneira comunicável um ao outro através de um ou mais barramentos (não mostrados). Outras conexões, mecanismos, recursos, funções, ou semelhantes, podem ser fornecidos e adotados como necessário para acoplar e configurar de maneira operativa um dispositivo sem fio portátil. Além disso, um ou mais dos recursos ou funções ilustrados no exemplo da Figura 3 podem ser ainda subdivididos, ou dois ou mais dos recursos ou funções ilustrados na Figura 3 podem ser combinados. Adicionalmente, um ou mais dos recursos ou funções ilustrados na Figura 3 podem ser excluídos.
[0056] Como mostrado, o dispositivo de computação 300 pode incluir um ou mais transceptores de rede de área local 306 que podem ser conectados a uma ou mais antenas 302. Os um ou mais transceptores de rede de área local 306 compreendem dispositivos, circuitos, hardware, e/ou software adequados para se comunicar com e/ou detectar sinais para/de um ou mais pontos de acesso da Rede de Acesso Local Sem Fio (WLAN) e/ou diretamente com outros dispositivos sem fio em uma rede. O(s) transceptor(es) de rede local 306 podem compreender um transceptor de comunicação WiFi (802.11x) adequado para se comunicar com um ou mais pontos de acesso sem fio. Além disso, ou alternativamente, o(s) transceptor(es) de rede local 306 podem ser configurados para se comunicar com outros tipos de redes locais, redes de área pessoal (por exemplo, redes de tecnologia sem fio Bluetooth®), etc. Adicionalmente, ou alternativamente, um ou mais outros tipos de tecnologias de rede sem fio de curto alcance podem ser usados, por exemplo, Banda Ultra Larga, ZigBee, USB sem fio, etc.
[0057] O dispositivo de computação 300 pode incluir um ou mais transceptor(es) de rede de área ampla 304 que pode(m) ser conectado(s) à uma ou mais antenas 302. O transceptor de rede de área ampla 304 pode compreender dispositivos, circuitos, hardware, e/ou software adequados para se comunicar com e/ou detectar sinais de um ou mais de, por exemplo, os pontos de acesso de WWAN e/ou diretamente com outros dispositivos sem fio dentro de uma rede. O(s) transceptor(es) de rede de área ampla 304 pode compreender um sistema de comunicação de CDMA adequado para se comunicar com uma rede de CDMA de estações base sem fio. Também, ou alternativamente, o sistema de comunicação sem fio pode compreender outros tipos de redes de telefonia celular, como, por exemplo, TDMA, GSM, WCDMA, LTE etc. Além disso, ou alternativamente, um ou mais outros tipos de tecnologias de rede sem fio podem ser usados, incluindo, por exemplo, WiMax (802,16), etc.
[0058] Em algumas modalidades, um receptor de sistema de posicionamento de satélite (SPS) (também denominado como um receptor de sistema de navegação global por satélite (GNSS)) 308 também pode ser incluído com o dispositivo de computação 300. O receptor de SPS 308 pode ser conectado a uma ou mais antenas 302 para receber sinais de satélite. O receptor de SPS 308 pode compreender qualquer hardware e/ou software adequado para receber e processar sinais de SPS. O receptor de SPS 308 pode solicitar informações conforme apropriado dos outros sistemas e pode realizar os cálculos necessários para determinar a posição do dispositivo de computação 300 usando, em parte, medições obtidas por qualquer procedimento de SPS adequado.
[0059] A fonte de energia externa 385 pode compreender uma bateria ou outro dispositivo que pode fornecer energia elétrica para os componentes do dispositivo de computação 300. A fonte de energia externa 385 pode ser removível a partir do dispositivo de computação. A fonte de energia externa 385 pode compreender uma bateria removível ou outra fonte de energia que pode ser removida por um usuário do dispositivo de computação 300 e trocado para uma outra fonte de energia externa 385. Por exemplo, o usuário do dispositivo de computação 300 pode trocar a fonte de energia externa 385 para uma outra fonte de energia externa 385 como a fonte de energia é esgotada ou o usuário do dispositivo pode desejar forçar o dispositivo de computação 300 para reiniciar.
[0060] O dispositivo de computação 300 pode incluir uma fonte de energia interna 395. A fonte de energia interna 395 pode ser usada como uma fonte de energia secundária que pode fornecer energia ao processador 310, ou pelo menos aos componentes do processador 310 como o TEE 390 e/ou a memória programável única 325, a memória volátil 392, e a memória 314 no evento que a energia a partir da fonte de energia externa 385 é perdida ou que um nível de energia fornecida pela fonte de energia externa 385 cai abaixo de um nível que permitiria ao processador 310 operar. A fonte de energia interna 395 pode compreender um capacitor, uma bateria, ou outro dispositivo que pode armazenar energia elétrica que pode alimentar o processador 310, e a memória 314 para pelo menos um curto período de tempo no evento em que energia a partir da fonte de energia externa 385 é perdida. A fonte de energia interna 395 pode ser configurada para fornecer o processador 310 com energia suficiente para gravar os valores atuais de contador anti- repetição (ARC) (por exemplo, ARC 140, componentes transientes 270a-270n, e/ou componente de linha de base estática 280) armazenados na memória volátil 392 à memória programável única 325 de modo que o valor de ARC não seja perdido devido ao dispositivo de computação 300 perder energia.
[0061] Como ainda ilustrado na Figura 3, o exemplo de dispositivo de computação 300 inclui um ou mais sensores 312a-312g acoplados a um controlador/processador
310. Por exemplo, os sensores 312a-312g podem incluir sensores de movimento para fornecer movimento relativo e/ou informações de orientação (que é independente de dados de movimento derivados de sinais recebidos pelo(s) transceptor(es) de rede de área ampla 304, o(s) transceptor(es) de rede de área local 306, e/ou o receptor de SPS 308). Por via de exemplo mas não limitação, os sensores de movimento podem incluir um acelerômetro 312a, um giroscópio 312b, e um sensor geomagnético (magnetômetro) 312c (por exemplo, uma bússola), qualquer um dos quais pode ser implementado com base no sistema microeletromecânico (MEMS) ou com base em alguma outra tecnologia. Os um ou mais sensores 312a-312g podem incluir ainda um sensor de intrusão física 312d, um termômetro (por exemplo, um termistor) 312e, um sensor de áudio 312f (por exemplo, um microfone) e/ou outros sensores. A saída de um ou mais sensores 312a-312g pode ser fornecida como parte dos dados (juntamente com informações de antena para nós que se comunicam com o dispositivo de computação 300 e/ou com dados como dados de localização) transmitidos para um dispositivo ou servidor remoto (através do transceptor de rede de área ampla 304 e/ou transceptores de rede de área local 306, ou através de alguma porta de rede ou interface do dispositivo de computação 300), para armazenamento ou processamento adicional (por exemplo, informações de antena para um AP se comunicando com o dispositivo de computação 300 podem ser inferidos combinando os dados do sensor medidos pelos sensores do dispositivo móvel com os registros que são mantidos no servidor e que incluem informações da antena para vários nós sem fio e dados do sensor associados que foram previamente obtidos por um ou mais dispositivos sem fio). Como ainda mostrado na Figura 3, em algumas modalidades, os um ou mais sensores 312a-312g também podem incluir uma câmera 312g (por exemplo, uma câmera do tipo dispositivo de carga dupla (CCD), um sensor de imagem com base em CMOS, etc.), que pode produzir imagens estáticas ou em movimento (por exemplo, uma sequência de vídeo) que pode ser exibida em um dispositivo de interface do usuário, como um monitor ou uma tela, e que pode ainda ser usada para determinar um nível de iluminação ambiente e/ou informações relacionadas a cores e existência e níveis de UV e/ou iluminação infravermelha.
[0062] O sensor de intrusão física pode ser configurado para emitir um sinal responsivo à detecção de adulteração física com o dispositivo de computação 300. A adulteração física com o dispositivo de computação 100 pode indicar que um usuário do dispositivo de computação 300 está tentando remover a bateria ou outro fonte de energia externa do dispositivo de computação 300 e uma perda de energia para o sistema de processamento seguro pode ser iminente. O processador 310 pode ser configurado para monitorar sinais do sensor de intrusão físico 312d e gravar o ARC da memória volátil 392 na memória programável única em resposta a tal sinal do sensor de intrusão físico 312d. O sensor de intrusão físico pode ser incluído onde o subsistema de processamento seguro não inclui uma fonte de energia interna secundária, como a fonte de energia interna 195, para fornecer energia no caso da fonte de energia externa ser removida do dispositivo de computação 300.
[0063] O sensor de intrusão física 312d pode compreender um interruptor mecânico que é acionado se uma caixa do dispositivo de computação 300 for aberta ou um compartimento no qual a fonte de energia externa 185 está disposta for aberto e for configurado para gerar um sinal responsivo à caixa ou compartimento foi aberto. O sensor de intrusão físico 312d também pode compreender um sensor de luz que pode detectar a luz que entra no dispositivo de computação 300 se uma caixa do dispositivo de computação 300 for aberta ou um compartimento no qual a fonte de energia externa 185 está disposta for aberto e pode gerar um sinal indicativo da mudança no nível de luz. O sensor de intrusão físico 312d também pode compreender um sensor capacitivo que está configurado para gerar um sinal responsivo a um usuário do dispositivo de computação 300 tocando o sensor de intrusão físico 312d ou sendo próximo à localização do sensor, o que pode indicar que o usuário pode remover a fonte de energia externa 185 do dispositivo de computação 300. Outros tipos de sensores também podem ser usados para gerar um sinal responsivo a um evento que pode indicar que a fonte de energia externa 185 do dispositivo de computação 300 pode ser removida.
[0064] O(s) processador(es) (também denominado(s) como um controlador) 310 pode(m) ser conectado(s) ao(s) transceptor(es) de rede de área local 306, o(s) transceptor(es) de rede de área ampla 304, o receptor de SPS 308 e os um ou mais sensores 312. O processador pode incluir um ou mais microprocessadores, microcontroladores, e/ou processadores de sinal digital que fornecem funções de processamento, bem como outras funções de cálculo e controle. O processador 310 pode ser acoplado a mídia de armazenamento legível por computador não transitória (por exemplo, memória 314) para armazenar dados e instruções de software para executar funcionalidade programada do dispositivo móvel. A memória 314 pode ser integrada ao processador 310 (por exemplo, dentro do mesmo pacote de IC), e/ou a memória pode ser memória externa ao processador e funcionalmente acoplada em um barramento de dados. A memória 314 pode compreender mídia legível por computador não volátil que pode ser usada pelo processador 310 para armazenar código de programa executável, que pode ser usado para implementar a NVM 150 dos dispositivos de computação ilustrado nas Figuras 1 e 2. O processador 310 também pode ser acoplado à memória volátil 392, que pode ser usada para implementar a memória volátil 120 dos dispositivos de computação ilustrados nas Figuras 1 e 2. A memória volátil 392 compreende memória legível por computador que perderá o conteúdo armazenado nela quando a energia for perdida na memória. O processador 310 também pode incluir memória não volátil (não mostrada), que pode ser usada para implementar a NVM 127 dos dispositivos de computação ilustrados nas Figuras 1 e 2, e que pode ser usada para armazenar código de programa executável, como EXP 129.
[0065] Várias unidades de software e tabelas de dados podem residir na memória 314 e podem ser utilizadas pelo processador 310 a fim de gerenciar ambas as comunicações com dispositivos/nós remotos, executar a funcionalidade de determinação de posicionamento e/ou executar a funcionalidade de controle de dispositivo. Como ilustrado na Figura 3, em algumas modalidades, a memória 314 pode incluir uma unidade de autenticação de usuário 316 e uma unidade de autenticação de software
318. A funcionalidade das unidades e/ou estruturas de dados pode ser combinada, separada, e/ou ser estruturada em diferentes maneiras dependendo da implementação do dispositivo de computação 300. Por exemplo, a unidade de autenticação de usuário 316 e/ou a unidade de autenticação de software 318 pode cada uma ser realizada, pelo menos parcialmente, como uma implementação com base em hardware. A memória 314 também pode incluir código de programa executável (EXP) 320 que pode ser usado para implementar uma ou mais aplicações, serviços, programas, etc. no dispositivo de computação 300. O EXP 320 pode ser executado pelo processador 310 e pode ser usado para implementar o EXP 128 armazenado na NVM 150 dos dispositivos de computação ilustrado nas Figuras 1 e 2.
[0066] A unidade de autenticação de usuário 316 e/ou a unidade de autenticação de software 318 podem ser processos em execução no processador 310 do dispositivo de computação 300. A unidade de autenticação de usuário 316 pode ser configurada para autenticar um usuário do dispositivo de computação 300 usando vários meios. A unidade de autenticação de usuário 316 pode ser configurada para autenticar o usuário exigindo que o usuário insira uma senha, PIN, padrão de furto ou outra entrada que só deva ser conhecida por um usuário autorizado do dispositivo de computação. A unidade de autenticação de usuário 316 pode ser configurada para autenticar o usuário usando dados biométricos obtidos de um ou mais dos sensores 312. O dispositivo de computação 300 pode incluir um sensor configurado para escanear uma ou mais características físicas do usuário do dispositivo de computação 300, tal como um sensor configurado para capturar uma imagem da íris e/ou retina do usuário, características faciais e/ou outras informações anatômicas que podem ser usadas para autenticar o usuário do dispositivo de computação 300. Os sensores 312a-312g do dispositivo móvel também pode incluir um sensor configurado para coletar dados de voz para o usuário que podem ser analisados pelo processador 190 para determinar se as características de uma voz de um usuário atual do dispositivo de computação 300 correspondem às características da voz de um usuário autorizado do dispositivo móvel. Se o usuário do dispositivo de computação 300 for determinado não ser um usuário autorizado do dispositivo de computação 300, a unidade de autenticação de usuário 316 pode ser configurada para fornecer uma indicação ao processador 310 de que o usuário do dispositivo de computação não é um usuário autorizado do dispositivo de computação 300. O processador 310 pode ser configurado para corromper um ARC armazenado na memória programável única 325 e para limpar quaisquer componentes de ARC armazenados na memória volátil 392 em resposta a tal indicação.
[0067] A unidade de autenticação de software
318 pode ser configurada para autenticar atualizações de firmware e/ou de software do dispositivo de computação
300. Como discutido em relação à Figura 1, as atualizações de software e/ou de firmware podem ser recebidas como um ou mais arquivos de imagem. As atualizações do firmware e/ou do software podem ser recebidas de várias fontes. As fontes legítimas de firmware e/ou de software podem incluir, mas não se limitam a, fabricantes de equipamento original (OEMs), sistemas operacionais e/ou provedores de driver de dispositivo, provedores de rede e/ou provedores corporativos que subsidiam um dispositivo e/ou exercem controle sobre a disposição e/ou configuração do dispositivo. Partes maliciosas podem tentar obter controle sobre o dispositivo de computação 300 tentando instalar ou enganando um usuário do dispositivo para instalar firmware malicioso e/ou atualizações de software no dispositivo.
[0068] A unidade de autenticação de software 318 pode ser configurada para autenticar atualizações de firmware e/ou de software associadas com o dispositivo de computação 300. O uso do termo “associado com” neste contexto se refere a software e/ou firmware que são instalados em uma memória não volátil do dispositivo de computação 300, e podem ser carregados em uma memória volátil 392 para execução pelo processador 310 do dispositivo de computação 300. O software e/ou o firmware podem ser firmware ou software confiável que pode ser executado pelo TEE 380.
[0069] A unidade de autenticação de software 318 pode ser configurada para usar uma HUK, como a HUK 199 discutida acima em relação às Figuras 1 e 2, para calcular um valor de MAC associado com o software sendo atualizado e comparar esse valor a um valor de MAC incluído com a arquivo de imagem que inclui a atualização de firmware e/ou de software. Se o valor de MAC calculado e o valor a partir do arquivo de imagem não corresponderem, então a unidade de autenticação de software 318 pode ser configurada para gerar uma indicação ao processador 310 que a atualização não foi autenticada. O processador 310 pode ser configurado para corromper um ARC armazenado na memória programável única 325 e limpar quaisquer componentes de ARC armazenados na memória volátil 392 em resposta a uma tal indicação.
[0070] O processador 310 pode incluir um ambiente de execução confiável (TEE) 380 e/ou o dispositivo de computação 300 pode incluir um elemento seguro 390. O ambiente de execução confiável 380 e/ou o elemento seguro 390 pode ser usado para implementar o subsistema de processamento seguro 110 ilustrado na Figura 1, e a NVM externa 150 pode ser implementada pela memória 314 ou uma outra memória do dispositivo de computação 300 (não mostrado).
[0071] O processador 310 também pode incluir um ambiente de execução confiável 380. O ambiente de execução confiável 380 pode ser implementado como uma área segura do processador 310 que pode ser usada para processar e armazenar dados confidenciais em um ambiente que é segregado a partir do ambiente de execução rico em que o sistema operacional e/ou aplicativos (tais como aqueles da unidade de autenticação de software 318) podem ser executados. O ambiente de execução confiável 380 pode ser configurado para executar aplicativos confiáveis que fornecem segurança ponta a ponta para dados confidenciais, reforçando a confidencialidade, integridade e proteção dos dados confidenciais neles armazenados. O ambiente de execução confiável 380 pode ser usado para armazenar chaves de criptografia, dados de contador anti-repetição e/ou outros dados confidenciais. O processador 310 também pode compreender memória programável única que pode ser usada para implementar a memória programável única 125 do dispositivo de computação 100 ilustrado nas Figuras 1 e 2.
[0072] O processador 310 também pode incluir memória programável única 325, que pode implementar a memória programável única 125 dos dispositivos de computação 100 e 200 ilustrados nas Figuras 1 e 2. A memória programável única 325 compreende uma memória persistente que retém os dados armazenados nela mesma se a energia para a memória for perdida. A memória programável única 325 pode compreender uma pluralidade de fusíveis que cada um representa um bit de dados, e o valor de um bit específico pode ser definido queimando-se o fusível correspondente. O valor de um fusível, uma vez definido, não pode ser alterado. Além disso, outros tipos de memória programável única 325 podem ser usados. A memória programável única 325 pode compreender antifusíveis ou outro componente que pode ser definido uma vez e que pode ser usado para representar um bit de dados em vez de fusíveis.
[0073] O dispositivo de computação 300 pode incluir um elemento seguro 390 (também denominado aqui como um componente confiável). O dispositivo de computação 300 pode incluir o elemento seguro 390 além de ou em vez do ambiente de execução confiável 380. O elemento seguro 390 pode compreender hardware autônomo e resistente à violação que pode ser usado para executar aplicativos seguros e os dados confidenciais associados a tais aplicativos. O elemento seguro 390 pode ser usado para armazenar chaves de criptografia, dados de contador anti-repetição e/ou outros dados sensíveis. O elemento seguro 390 pode também compreender memória programável única que pode ser usada para implementar a memória programável única 125 dos dispositivos de computação ilustrados nas Figuras 1 e 2. O elemento seguro 390 pode compreender uma etiqueta de Comunicação por Campo de Proximidade (NFC), um cartão do Módulo de Identidade do Assinante (SIM) ou outro tipo de dispositivo de hardware que pode ser usado para armazenar dados com segurança. O elemento seguro 390 pode ser integrado com o hardware do dispositivo de computação 300 de forma permanente ou semipermanente ou pode, em algumas implementações, ser um componente removível do dispositivo de computação 300 que pode ser usado para armazenar dados com segurança e/ou fornecem um ambiente de execução seguro para aplicativos.
[0074] O dispositivo de computação 300 pode ainda incluir uma interface de usuário 350 fornecendo sistemas de interface adequados, como um microfone/alto- falante 352, um teclado 354 e um visor 356 que permite a interação do usuário com o dispositivo de computação 300. O microfone/alto-falante 352 (que pode ser o mesmo ou diferente do sensor de áudio 3120 fornece serviços de comunicação de voz (por exemplo, usando o(s)
transceptor(es) de rede de área ampla 304 e/ou o(s) transceptor(es) de rede local 306). O teclado 354 pode compreender botões adequados para entrada do usuário. O display 356 pode incluir um display adequado, tal como, por exemplo, um display de cristal líquido (LCD) retro- iluminado, e pode ainda incluir um display de tela de toque para modos de entrada de usuário adicionais.
[0075] O processador 190 de dispositivos de computação ilustrado nas Figuras 1 e 2 ou o processador 310 do dispositivo de computação 300 fornecem meios para determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado e meios para corromper um valor de contador anti-repetição (ARC), mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware como discutidos acima em relação às Figuras 1 a 3.
[0076] O processador 190 ou 310 fornece os meios para determinar que a atualização não autorizada foi feita no software ou no firmware compreende incluir meios para detectar uma alteração no software no circuito integrado; meios para determinar se pelo menos um de um usuário ou do software é autêntico em resposta à detecção da alteração no software no circuito integrado; e meios para determinar que a alteração no software no circuito integrado não foi autorizada em resposta a pelo menos um do usuário ou o software não ser autêntico. A unidade de autenticação de usuário 316 e/ou a unidade de autenticação de software 318 também fornecem meios para determinar se pelo menos um de um usuário ou o software é autêntico em resposta à detecção da alteração no software no circuito integrado. O processador 190 e o processador 310 também fornece meios para determinar se o usuário foi autenticado e meios para realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado. A unidade de autenticação de usuário 316 também pode fornecer os meios para determinar se o usuário foi autenticado e meios para realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
[0077] O processador 190 ou o processador 310 fornece meios para autenticar o software que inclui meios para determinar um código de autenticação de mensagem (MAC) para o software aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado, e meios para comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado. A unidade de autenticação de usuário 316 também pode fornecer os meios para determinar um código de autenticação de mensagem (MAC) para o software aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado, e os meios para comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
[0078] O processador 190 ou o processador 310 fornece os meios para corromper o valor de ARC que inclui meios para atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado. O processador 190 ou 310 também fornece meios para determinar um primeiro número de bits da memória programável única a ser definido, meios para determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits, e meios para atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única. O processador 190 ou o processador 310 também fornece meios para determinar o primeiro número de bits da memória programável única incluindo meios para determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única. O processador 190 ou o processador 310 também fornece meios para determinar que bits da memória programável única que inclui meios para selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
[0079] As Figuras 4 a 6 ilustram mapas de fusível de exemplo 405, 410, 415, 420, 425, 430 que podem ser usados para representar o ARC, que podem compreender ARC 140 na Figura 1 ou o componente transiente 270a-270n e o componente de linha de base estática 280 na Figura 2,
armazenados na memória volátil 120. Na implementação do exemplo ilustrado na Figura 1, um único ARC 140 é armazenado na memória volátil 120. Ao contrário, na implementação do exemplo ilustrado na Figura 2, vários ARCs compreendendo um componente transiente e um componente de linha de base estática são armazenados na memória volátil para cada uma das cargas úteis 155a-155n que são armazenadas na NVM 150. Cada ARC é composto de um componente de linha de base estática 280, que é compartilhado por todos dos ARCs, e um componente transiente 270a-270n que é específico para uma carga útil particular 155a-155n na NVM 150.
[0080] Cada mapa de fusível representa inicialmente uma matriz de valores de bits que representam se um determinado fusível, antifusível ou outro componente associado a esse bit foi queimado na memória programável única 125. Os mapas de fusíveis podem ser representados usando unidimensional ou matrizes multidimensionais, aqui com os mapas de fusível 405, 410, 415, 420, 425, 430 sendo matrizes bidimensionais. Os mapas de fusíveis podem ser armazenados na memória volátil 120 e o processador 190 pode ser configurado para acessar a memória volátil 120 cada vez que os dados devem ser gravados na NVM externa 150 e para incrementar o ARC armazenado na memória volátil 120. Pelo menos uma porção do ARC atualizada pode ser usada para determinar o MAC 160 que pode ser usado para determinar que a carga útil 155 (os dados gravados na NVM externa 150) não foi modificada, visto que, os dados foram gravados na NVM externa 150. Na implementação ilustrada na Figura 2, cada carga útil 155a-155n está associada com seu próprio respectivo MAC 160a-160n e componente transiente 275a-275n. Um respectivo componente transiente 275a-275n pode ser combinado com o componente de linha de base estática 280 para determinar o MAC 160a- 160n para a respectiva carga útil 155a-155n com que o respectivo componente transiente 275a-275n está associado.
[0081] Essas técnicas podem ser usadas para impedir ataques de repetição, visto que, o ARC é usado para gerar o MAC. Se um invasor introduzisse uma cópia de um MAC antigo e carga útil 155 na NVM externa 150, o subsistema de processamento seguro 110 reconheceria que a carga útil 155 foi modificada ou corrompida, porque o MAC 160 armazenado com a carga útil 155 não corresponderia a um valor esperado do MAC calculado para a carga útil. O subsistema de processamento seguro 110 pode calcular o MAC da carga útil 155 usando o ARC atual e comparar esse valor de MAC com o MAC 160. Se os dois MACs não corresponderem, os dados na NVM externa 150 foram corrompidos ou modificados.
[0082] A Figura 4 é um diagrama que ilustra mapas de fusível para uma técnica com base em nonce para manter um contador anti-repetição (ARC) de acordo com as técnicas divulgadas neste documento. A técnica ilustrada na Figura 4 pode ser implementada pelos dispositivos de computação 100 e 200 ilustrados nas Figuras 1 e 2. A técnica ilustrada na Figura 4 é ilustrada usando uma série de mapas de fusível: mapa de fusível 405, mapa de fusível 410, mapa de fusível 415, mapa de fusível 420, mapa de fusível 425, e mapa de fusível 430 que representa uma matriz de fusíveis na memória programável única 125 do subsistema de processamento seguro 110. Cada quadrado em um mapa de fusível representa um fusível ou antifusível que pode ser queimado para definir um valor de bit correspondente. Os valores de bit que já foram definidos são representados pelo número “1” nesse quadrado. Entretanto, os valores de bit pode ser representados por um valor de bit de zero em outras implementações. O sombreado do quadrado representa como aquele bit específico foi definido. No exemplo ilustrado na Figura 4, um quadrado com um fundo sombreado solidamente indica que o bit foi definido como parte do valor da linha de base estática associado ao (ARC), um quadrado com um fundo sombreado com um painel xadrez indica que o bit foi definido além da linha de base estática que foi selecionada para evitar um ataque de reversão e um quadrado com um fundo sombreado com um padrão de diamante indica que o bit foi definido como parte de uma seleção aleatória.
[0083] A técnica ilustrada na Figura 4 pode reduzir o número de fusíveis que são usados para manter o ARC na memória programável única 125. Como discutido acima, o ARC pode ser mantido na memória volátil 120 do subsistema de processamento seguro 110 enquanto o dispositivo de computação 100 está recebendo energia de uma bateria ou outra fonte de energia. O ARC armazenado na memória volátil 120 pode ser incrementado cada vez que os dados são gravados na NVM externa 150. Quando a fonte de energia foi esgotada e/ou quando o sensor de intrusão física 312d detecta intrusão física no dispositivo de computação 100 que pode indicar que a bateria ou outra fonte de energia pode ser removida a partir do dispositivo de computação 100, o ARC mantido na memória volátil 120 pode ser gravado na memória programável única 125 do subsistema de processamento seguro 110. A capacidade de armazenamento da memória programável única 125 do subsistema de processamento seguro 110 é normalmente limitada em tamanho e é finita. O número de fusíveis incluídos na memória programável única 125 do subsistema de processamento seguro 110 pode ser limitado devido às limitações de custo e tamanho do circuito integrado no qual o subsistema de processamento seguro 110 é implementado. Além disso, a memória programável única 125 pode ser programada apenas uma vez e, portanto, não pode ser reutilizada como outros tipos de memória que podem ser usados em um dispositivo de computação.
[0084] O processo ilustrado na Figura 4 pode começar quando o dispositivo de computação 100 é ligado. No momento que o dispositivo de computação 100 foi desligado, um valor de linha de base para o ARC pode ter sido gravado para os fusíveis da memória programável única 125. O processador 190 do subsistema de processamento seguro 110 pode ser configurado para acessar a memória programável única 125 e para ler o ARC 165 armazenado nele no momento que o dispositivo de computação 100 é ligado. O mapa de fusível 405 representa uma matriz de fusíveis 6 x 6 compreendendo um valor de linha de base de ARC que foi previamente gravado na memória programável única 125. O tamanho e configuração do mapa de fusível ilustrados nos exemplos da Figura 4 são intencionados a ilustrar os processos que estão sendo divulgados aqui e são não intencionados a limitar esses processos para um mapa de fusível de um tamanho ou configuração específico. Outros tamanhos e/ou configurações (por exemplo, diferentes números de linhas e/ou colunas) de mapas de fusíveis podem ser usados. O número de fusíveis ou antifusíveis incluídos na memória programável única 125 do subsistema de processamento seguro 110 pode ser diferente (por exemplo, maior ou menor) do que o exemplo ilustrado na Figura 4. As técnicas ilustradas nas Figuras 4 a 6 fornecem maneiras de armazenar um ARC no número limitado de fusíveis disponíveis na memória programável única 125 de modo que o fornecimento limitado de fusíveis não se esgote em um pequeno número de ciclos de energia ou eventos de intrusão física que acionam o ARC para ser gravado na memória programável única 125.
[0085] O mapa de fusível de exemplo 405 tem 4 bits que foram previamente definidos como um valor de linha de base estática. O valor de linha de base estática pode ter sido determinado usando uma das técnicas ilustradas nas Figuras 4 a 6 ou podem ter sido um valor de semente selecionado que foi inicialmente usado como um ARC. A porção da memória programável única 125 usada para armazenar o ARC pode ter sido inicialmente em branco, sem fusíveis ou antifusíveis queimados, inicialmente e o valor de linha de base estática armazenado ilustrado no mapa de fusível 405 pode ter representado um valor anterior do ARC que foi gravado na memória programável única 125 a partir da memória volátil 120. O processador do subsistema de processamento seguro 110 pode acessar a memória programável única 125, ler os valores do mapa de fusível a partir da memória programável única 125, e armazenar uma representação do mapa de fusível na memória volátil 120 do subsistema de processamento seguro 110.
[0086] Depois de carregar o valor anterior de linha de base a partir da memória programável única 125, o processador 190 do subsistema de processamento seguro 110 pode selecionar pelo menos um bit para adicionar à linha de base anterior como ilustrado no mapa de fusível 410 em comparação com o mapa de fusível 405. O processador 190 pode ser configurado para selecionar aleatoriamente o pelo menos um bit de bits do mapa de fusível que ainda não foram definidos. O processador pode ser configurado para queimar os fusíveis associados com os um ou mais bits que foram selecionados na memória programável única 125 para estabelecer um novo valor de linha de base estática. O novo valor de linha de base evita um ataque de repetição onde um invasor tenta colocar dados antigos na NVM externa 150 e têm o subsistema de processamento seguro 110 processar os dados antigos. Com referência ao exemplo ilustrado na Figura 1, os dados armazenados na NVM externa 150 incluem uma carga útil 155 e um MAC 160. O MAC 160 pode ser recalculado para a carga útil 155 usando o ARC atual armazenado na memória volátil 120. O valor do MAC recalculado e do MAC 160 não corresponderá mais se dados antigos forem colocados na NVM externa 150, porque o ARC mantido na memória volátil 120 é incrementado cada vez dados são gravados na NVM externa 150.
[0087] O mapa de fusível 410 também ilustra um outro aspecto do processo. Pelo menos um bit adicional é selecionado pelo processador 190 como um componente de seleção aleatória do ARC. O pelo menos um bit é selecionado de fusíveis que não foram definidos no mapa de fusível armazenado na memória volátil 120. No exemplo ilustrado na Figura 4, o componente aleatório inclui três bits, mas o componente aleatório pode incluir um número maior ou menor de bits. A seleção aleatória é selecionada novamente cada vez que os dados são gravados na NVM externa 150. A porção de seleção aleatória do ARC não é gravada nos fusíveis da memória programável única 125. A porção de seleção aleatória é mantida apenas na representação do mapa de fusível armazenado na memória volátil 120.
[0088] O mapa de fusível 415 ilustra um exemplo do mapa de fusível 405 na memória volátil 120 que tem sido atualizado em resposta aos dados sendo gravados na NVM externa 150. A valor de linha de base estática atualizado inclui o pelo menos um bit que foi adicionado à linha de base estática recuperada a partir da memória programável única 125. Mas, a porção do ARC aleatoriamente selecionada é substituída por uma nova seleção aleatória de um ou mais bits. No exemplo ilustrado no mapa de fusível 415, três bits foram aleatoriamente selecionados a partir dos bits do mapa de fusível que não fazem parte da linha de base estática atualizada. Um número maior ou menor de bits pode ser selecionado a partir dos bits disponíveis que não fazem parte da linha de base estática atualizada cada vez que o componente aleatório do ARC é redeterminado quando dados são gravados na NVM externa 150.
[0089] O mapa de fusível 420 ilustra um exemplo do mapa de fusível 415 na memória volátil 120 que tem sido atualizado em resposta aos dados sendo gravado na NVM externa 150. Mais uma vez, uma nova seleção aleatória de bits a partir do mapa de fusível é selecionada a partir dos bits que não fazem parte da linha de base estática atualizada. No exemplo ilustrado no mapa de fusível 420, quatro bits foram selecionados a partir dos bits disponíveis, mas um número maior ou menor de bits pode ser selecionado a partir dos bits disponíveis que não fazem parte da linha de base estática atualizada cada vez que o componente aleatório do ARC é redeterminado quando dados são gravados na NVM externa 150.
[0090] O processador 190 determina que a fonte de energia foi esgotada e/ou determina que o sensor de intrusão física 312d detectou intrusão física no dispositivo de computação 100. O processador então acessa o mapa de fusível atual na memória volátil 120 e grava esses valores nos fusíveis da memória programável única 125 como o novo valor de linha de base estática. No exemplo da Figura 4, o mapa de fusível na memória volátil 120 estava no estado ilustrado pelo mapa de fusível 420. Os fusíveis definidos nesse mapa se tornarão o novo valor de linha de base estática que é gravado na memória programável única 125 pelo processador como representado pelo mapa de fusível
425.
[0091] O mapa de fusível 430 ilustra um mapa de fusível de exemplo na memória volátil 120 em que a linha de base estática ilustrada no mapa de fusível 425 foi atualizada para incluir um bit adicional. O processador 190 pode gravar o bit adicional nos fusíveis da memória programável única 125. O processador também pode selecionar um conjunto de um ou mais bits aleatoriamente selecionados que incluem bits a partir do mapa de fusível na memória não volátil que não fazem parte da linha de base estática atualizada. Esse processo de selecionar um novo componente aleatório ao ARC pode ocorrer cada vez que os dados são gravados na NVM externa 150, e podem continuar até que um evento acione o processador para gravar o mapa de fusível atual a partir da memória volátil 120 nos fusíveis compreendendo a memória programável única 125.
[0092] A Figura 5 é um diagrama que ilustra uma outra técnica para manter um contador anti-repetição de acordo com as técnicas divulgadas neste documento. A técnica é semelhante àquela ilustrada na Figura 4, mas usa um método parcialmente randomizado em que a porção do ARC que é adicionada ao componente de linha de base estática pode ser aleatoriamente selecionado enquanto o componente transiente do ARC é determinado usando um método combinatório. A técnica ilustrada na Figura 5 é ilustrada usando uma série de mapas de fusível: mapa de fusível 505, mapa de fusível 510, mapa de fusível 515, mapa de fusível 520, e mapa de fusível 525 que representam uma matriz de fusíveis na memória programável única 125 do subsistema de processamento seguro 110. No exemplo ilustrado na Figura 5, um quadrado que tem um fundo sombreado solidamente indica que o bit foi definido como parte do valor de linha de base estática associado com o (ARC), um quadrado que tem um fundo sombreado com um padrão quadriculado indica que o bit foi definido como uma adição à linha de base estática que foi selecionada para impedir um ataque de reversão, e um quadrado que tem um fundo sombreado com um padrão diamante indica que o bit foi definido como parte de um componente de seleção combinatório do componente transiente do ARC.
[0093] O processo ilustrado na Figura 5 pode começar quando o dispositivo de computação 100 é ligado como aquele do processo da Figura 4 discutido acima. No momento que o dispositivo de computação 100 foi desligado, um valor de linha de base para o ARC pode ter sido gravado nos fusíveis da memória programável única 125. O processador do subsistema de processamento seguro 110 pode acessar a memória programável única 125, ler os valores do mapa de fusível a partir da memória programável única 125, e armazenar uma representação do mapa de fusível na memória volátil 120 do subsistema de processamento seguro 110 para gerar o mapa de fusível 505. O mapa de fusível 505 é idêntico ao do mapa de fusível 1005 discutido acima, mas o processo pode começar com uma linha de base estática diferente ou nenhum valor de linha de base estática em todos como discutidos acima em relação à Figura 4.
[0094] Um novo valor de linha de base estática também pode ser determinado como discutido acima em relação à Figura 4. O processador do subsistema de processamento seguro 110 pode selecionar pelo menos um bit para adicionar à linha de base anterior como ilustrado no mapa de fusível
510. O processador pode ser configurado para selecionar aleatoriamente o pelo menos um bit dos bits do mapa de fusível que ainda não foram definidos. O processador pode ser configurado para queimar os fusíveis associados com os um ou mais bits que foram selecionados na memória programável única 125 para estabelecer um novo valor de linha de base estática. O valor de linha de base estática armazenado na memória programável única 125 pode inicialmente começar sem bits definidos.
[0095] O mapa de fusível 510 também ilustra um outro aspecto do processo. Pelo menos um bit adicional é selecionado como um componente de seleção combinatório do ARC. O componente de seleção combinatório do ARC ilustrado na Figura 5 difere a partir do componente de seleção aleatória do ARC ilustrado na Figura 4. O componente de seleção combinatório não é um conjunto de bits aleatoriamente selecionado. Em vez disso, um ponto de partida é selecionado no mapa do bit. O ponto de partida pode ser qualquer bit a partir do mapa de fusível que ainda não tiver sido selecionado. Por exemplo, o bit no canto inferior direito do mapa de fusível foi um selecionado no mapa de fusível de exemplo 510, mas qualquer bit que ainda não tiver sido definido pode ser selecionado.
[0096] A técnica ilustrada na Figura 5 minimiza o número de bits que são selecionados para o componente de seleção combinatório do ARC cada vez que o ARC é incrementado antes de gravar dados na NVM externa
150. Por exemplo, o processo ilustrado na Figura 5 pode iterar através cada uma das possíveis combinações onde o componente de seleção combinatório compreende 1 bit. Uma vez as opções de 1 bit foram esgotadas, o processo pode iterar através cada uma das opções de 2 bits até que as opções de 2 bits sejam esgotadas. Esse processo pode continuar adicionando um outro bit à medida que cada uma da série de opções de n bits são esgotadas, até que todas as possíveis combinações sejam esgotadas ou até que o ARC seja gravado na memória programável única 125. A porção de seleção monotônica do ARC não é gravada nos fusíveis da memória programável única 125 até que um evento acione o processador para gravar o mapa de fusível atual a partir da memória volátil 120 nos fusíveis compreendendo a memória programável única 125. A porção de seleção monotônica é mantida apenas na representação do mapa de fusível armazenado na memória volátil 120 até que um tal evento de gravação ocorra.
[0097] O mapa de fusível 515 ilustra um exemplo ilustrado como o mapa de fusível 510 pode mudar depois dos dados terem sido gravados na NVM externa 150 oito vezes. O componente de seleção combinatório do ARC tem incremento de oito bits. Todas as opções de 1 bit ainda não foram esgotadas. No exemplo da Figura 5, o ARC incrementa da esquerda para a direita e de baixo para cima, mas outros algoritmos podem ser usados para determinar a ordem em que as várias permutações do componente de seleção combinatória são visitadas.
[0098] O mapa de fusível 520 ilustra um exemplo ilustrado como o mapa de fusível 515 pode mudar depois dos dados terem sido gravados na NVM externa 150 trinta e duas vezes. O componente de seleção combinatório do ARC tem incremento de trinta e dois bits. Todas as opções de 1 bit foram esgotadas e o processo continua com um componente de seleção combinatória de 2 bits do ARC. No exemplo da Figura 5, o ARC incrementa da esquerda para a direita e de baixo para cima, mas outros algoritmos podem ser usados para determinar a ordem em que as várias permutações do componente de seleção combinatória são visitadas.
[0099] O processador então determina que a fonte de energia foi esgotada e/ou determina que o sensor de intrusão física 312d detectou intrusão física no dispositivo de computação 100. O processador então acesso o mapa de fusível atual na memória volátil 120 e grava esses valores nos fusíveis da memória programável única 125 como o novo valor de linha de base estática. No exemplo da Figura 5, o mapa de fusível na memória volátil 120 estava no estado ilustrado pelo mapa de fusível 520. Os fusíveis definidos nesse mapa se tornarão o novo valor de linha de base estática que é gravado na memória programável única 125 pelo processador como representado pela mapa de fusível
525.
[0100] A Figura 6 é um diagrama que ilustra uma outra técnica para manter um contador anti-repetição de acordo com as técnicas divulgadas neste documento. A técnica é semelhante àquela ilustrada nas Figuras 4 e 5, mas usa um método combinatório determinístico para determinar a porção do ARC que é adicionada ao componente de linha de base estática bem como o componente transiente do ARC. A técnica ilustrada na Figura 6 é ilustrada usando uma série de mapas de fusível: mapa de fusível 605, mapa de fusível 610, mapa de fusível 615, mapa de fusível 620, mapa de fusível 625 e mapa de fusível 630, que representa uma matriz de fusíveis na memória programável única 125 do subsistema de processamento seguro 110. No exemplo ilustrado na Figura 6, um quadrado que tem um fundo sombreado solidamente indica que o bit foi definido como parte do valor de linha de base estática associada com o (ARC), um quadrado que tem um fundo sombreado com um padrão quadriculado indica que o bit foi definido como uma adição à linha de base estática que foi selecionada para impedir um ataque de reversão, e um quadrado que tem um fundo sombreado com um padrão diamante indica que o bit foi definido como parte de um componente combinatório do ARC.
[0101] A técnica ilustrada na Figura 6 usa um método combinatório para determinar um componente combinatório do ARC que é adicionado ao componente de linha de base estática do ARC. O número de bits que são incluídos no componente combinatório pode variar dependendo de como frequentemente o dispositivo pode ser desligado. As técnicas ilustradas na Figura 6 podem reduzir o número de fusíveis da memória programável única 125 são gravados para cada ciclo de desligamento quando em comparação com as técnicas ilustradas nas Figuras 4 e 5. A técnica é semelhante àquela da Figura 5, mas cada uma das atualizações para o mapa de fusível na técnica ilustrada na Figura 6 são determinísticas e nenhuma seleção aleatória de bits é feita na técnica da Figura 6.
[0102] A técnica ilustrada na Figura 6 usa um método combinatório para determinar um componente combinatório do ARC que é adicionado ao componente de linha de base estática do ARC. O número de bits que são incluídos no componente combinatório pode variar dependendo de como frequentemente o dispositivo pode ser desligado. As técnicas ilustradas na Figura 6 podem reduzir o número de fusíveis da memória programável única
125 são gravados para cada ciclo de desligamento quando em comparação com as técnicas ilustradas nas Figuras 4 e 5. A técnica é semelhante àquela da Figura 5, mas cada uma das atualizações para o mapa de fusível na técnica ilustrada na Figura 6 são determinísticas e nenhuma seleção aleatória de bits é feita na técnica da Figura 6.
[0103] O componente combinatório do ARC é um seleção determinística de X bits entre os bits disponíveis da memória programável única 125 que não foram definidos como parte da linha de base estática. O componente combinatório do ARC é determinado para cada um gravar os dados na NVM externa 150. Os bits disponíveis que podem ser incluídos no componente combinatório e o número total de bits disponíveis podem ser determinados usando as seguintes equações: Bits disponíveis = Bits Max — Bits em Linha de base estática, onde o número max de bits representa o número total de bits compreendendo a porção da memória programável única 125 representada pelo mapa de fusível, e onde os bits na linha de base estática representa os fusíveis que foram queimados no valor de linha de base estática atualizado em que pelo menos um bit adicional foi queimado (como ilustrado no mapa de fusível 610). Assim, os bits disponíveis são os bits que ainda não foram definidos e podem ser incluídos no componente combinatório do ARC. Número de Bits disponíveis = Número Max de bits — Número de bits em Linha de base estática, onde o número max de bits representa o número total de bits compreendendo a porção da memória programável única 125 representada pelo mapa de fusível, e onde o número de bits na linha de base estática representa o número de fusíveis que foram queimados no valor de linha de base estática atualizado em que pelo menos um bit adicional foi queimado (como ilustrado no mapa de fusível 610). Assim, o número bits disponíveis são os bits que ainda não foram definidos e o número total de bits que pode ser incluído no componente combinatório do ARC.
[0104] O processo ilustrado na Figura 6 pode começar quando o dispositivo de computação 100 é ligado como aquele do processo da Figuras 4 e 5 discutidos acima. No momento que o dispositivo de computação 100 foi desligado, um valor de linha de base para o ARC pode ter sido gravado nos fusíveis da memória programável única 125. O processador do subsistema de processamento seguro 110 pode acessar a memória programável única 125, ler os valores do mapa de fusível a partir da memória programável única 125, e armazenar uma representação do mapa de fusível na memória volátil 120 do subsistema de processamento seguro 110 para gerar o mapa de fusível 605. O processo pode começar com uma linha de base estática diferente ou nenhum valor de linha de base estática, dependendo se as técnicas aqui discutidas já foram usadas para gerar e manter um ARC.
[0105] Um novo valor de linha de base estática também pode ser determinado como discutido acima em relação às Figuras 4 e 5. O processador do subsistema de processamento seguro 110 pode selecionar pelo menos um bit para adicionar à linha de base anterior como ilustrado no mapa de fusível 610. O processador pode selecionar pelo menos um bit a partir dos bits disponíveis do mapa de fusível usando o método determinístico (em contraste com os métodos ilustrados nas Figuras 4 e 5 em que o pelo menos um bit adicionado ao valor de linha de base estática pode ser aleatoriamente selecionado). O processador pode ser configurado para queimar os fusíveis associados com os um ou mais bits que foram selecionados na memória programável única 125 para estabelecer um novo valor de linha de base estática. O valor de linha de base estática armazenado na memória programável única 125 pode inicialmente começar sem bits definidos.
[0106] O mapa de fusível 615 ilustra um exemplo ilustrado como o mapa de fusível 610 pode mudar depois dos dados terem sido gravados na NVM externa 150 uma vez após a linha de base estática atualizada sendo determinada. No exemplo ilustrado no mapa de fusíveis 615, a porção combinatória do ARC compreende um bit adicional neste estágio. O tamanho (‘X’) da porção combinatória do ARC aumenta em incrementos de 1 bit, uma vez que todas as combinações de bits que compreendem X bits foram esgotadas. No exemplo ilustrado na Figura 6, o algoritmo combinatório determinístico incrementa da esquerda para a direita e de baixo para cima, mas outra implementação do algoritmo combinatório determinístico pode ser configurada para incrementar através das várias permutações de combinações de bits X em uma ordem diferente daquela ilustrada na Figura 6. Por exemplo, o processo ilustrado na Figura 6 pode iterar através cada uma das possíveis combinações onde o componente de seleção combinatório compreende 1 bit. Uma vez as opções de 1 bit forem esgotadas, o processo pode iterar por meio de cada uma das opções de 2 bits até que as opções de 2 bits tenham se esgotado. Este processo pode continuar adicionando outro bit à medida que cada uma das opções de n bits da série se esgota, até que todas as combinações possíveis sejam exauridas ou até que o ARC seja gravado na memória programável única 125. A porção de seleção combinatória do ARC não é gravada nos fusíveis da memória programável única 125 até que um evento aciona o processador para gravar o mapa de fusível atual a partir da memória volátil 120 nos fusíveis compreendendo a memória programável única
125. A porção de seleção monotônica é mantida apenas na representação do mapa de fusível armazenado na memória volátil 120 até que um tal evento de gravação ocorra.
[0107] O mapa de fusível 620 ilustra um exemplo ilustrado como o mapa de fusível 610 pode mudar depois dos dados terem sido gravados na NVM externa 150 numerosas vezes após o estado do mapa de fusível ilustrado no mapa de fusível 615. No exemplo ilustrado no mapa de fusível 625, todas as opções de 1 bit para a porção combinatória do ARC foram esgotadas e o algoritmo combinatório está agora iterando através das opções de 2 bits, que serão usadas para determinar a porção combinatória do ARC cada vez que os dados são gravados na NVM externa 150. As opções de 2 bits serão exploradas até que se esgotem.
[0108] O mapa de fusível 625 ilustra um exemplo ilustrado como o mapa de fusível 610 pode mudar depois dos dados terem sido gravados na NVM externa 150 numerosas vezes após o estado do mapa de fusível ilustrado no mapa de fusível 620. No exemplo ilustrado no mapa de fusível 625, todas as opções de 1 bit e 2 bits para a porção combinatória do ARC foram esgotadas e o algoritmo combinatório está agora iterando através de opções de 3 bits, que serão usadas para determinar a porção combinatória do ARC cada vez que os dados são gravados na NVM externa 150. As opções de 3 bits serão exploradas até que se esgotem.
[0109] O processador então determina que a fonte de energia foi esgotada e/ou determina que o sensor de intrusão física 312d detectou intrusão física no dispositivo de computação 100. O processador então acessa o mapa de fusível atual na memória volátil 120 e grava esses valores nos fusíveis da memória programável única 125 como o novo valor de linha de base estática. No exemplo da Figura 6, o mapa de fusível na memória volátil 120 estava no estado ilustrado pelo mapa de fusível 625. Os fusíveis definidos nesse mapa se tornarão o novo valor de linha de base estática que é gravado na memória programável única 125 pelo processador como representado pelo mapa de fusível
630.
[0110] A Figura 7 é um diagrama de fluxo de um processo do exemplo 700 para fornecer proteção de dados em um circuito integrado. O processo 700 pode ser usado para eficazmente apagar o conteúdo da NVM 150 corrompendo-se o ARC usado para proteger o conteúdo da NVM 150. A carga útil 155 pode ser obtida pelo firmware ou software não autorizado instalado no dispositivo de computação 100. Mas sem o(s) valor(es) de ARC correto(s) associado(s) à(s) carga(s) de dados armazenados na NVM 150, o conteúdo da(s) carga(s) não pode(m) ser descriptografado(s). O processo ilustrado na Figura 7 pode ser usado para impedir atualizações não autorizadas para o componente de firmware e/ou de software do dispositivo de computação de acessarem dados confidenciais armazenados na NVM 150. O processo ilustrado na Figura 7 pode ser implementado pelo processador 190 do subsistema de processamento seguro 110 do dispositivo de computação 100 ilustrado nas Figuras 1 e 2. O processo 700 é executado pelo dispositivo de computação antes que qualquer software ou firmware possa ser executado que foi incluído em uma atualização não autorizada para o software ou o firmware que pode ter pelo menos acesso de leitura para os ARCs armazenados na memória programável única 125 e na memória volátil 120 do dispositivo de computação 100.
[0111] Uma determinação pode ser feita que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado (estágio 705). O processador 190 determina se uma atualização não autorizada do firmware e/ou software do dispositivo de computação 100 foi feita. O processador 190 monitora o firmware e/ou software armazenado na memória do subsistema de processamento seguro do dispositivo de computação e/ou a NVM externa.
[0112] Um método para determinar se uma atualização não autorizada para software e/ou firmware ocorreu é monitorar alterações para o firmware e/ou outro(s) componente(s) de software crítico(s) do dispositivo de computação 100 e exigir o usuário do dispositivo de computação 100 a ser autenticado antes do firmware e/ou outro componente de software crítico sendo atualizado ou em resposta ao firmware sendo atualizado no dispositivo de computação 100. Um usuário autorizado do dispositivo de computação pode aprovar uma atualização do firmware e/ou componentes de software que podem acessar dados de propriedade do usuário ou da empresa nos dispositivos de computação que podem ter acesso a dados confidenciais do usuário ou dados corporativos neles armazenados. Quando o dispositivo de computação 100 está associado a uma empresa, um administrador de sistema, administrador de rede ou outro usuário autorizado pela empresa pode precisar ser autenticado para que os componentes de firmware e/ou software sejam atualizados. Um usuário corporativo geral do dispositivo de computação 100 pode não ter controle total sobre a instalação e/ou atualizações de firmware e/ou de componentes de software no dispositivo de computação 100.
[0113] O processador 190 pode realizar um procedimento de autenticação para determinar se o usuário do dispositivo de computação que tentou atualizar o firmware e/ou outro(s) componente(s) de software crítico(s) do dispositivo de computação 100. O processador pode realizar autenticação de usuário para firmware e/ou outro(s) componente(s) de software crítico(s) do dispositivo de computação 100 que são componentes de software confiáveis que podem acessar o ARC 140, os componentes transientes 270a-n, e/ou o componente de linha de base estática 280 armazenados na memória volátil 120 ou o ARC 165 armazenado na memória programável única 125. Se a autenticação de usuário falhar, então o processador 190 pode fazer uma determinação que o firmware e/ou outro(s)
componente(s) de software crítico(s) do dispositivo de computação 100 não foi autorizada, e inibir armazenamento e/ou uso do firmware e/ou outro(s) componente(s) de software crítico(s).
[0114] O processador 190 pode autenticar o usuário usando várias técnicas de autenticação, e as técnicas para apagar com segurança o conteúdo de memória não volátil segura divulgado aqui são não limitado a um tipo específico de técnica de autenticação. O usuário pode ser solicitado a inserir uma senha, PIN, padrão de furto ou outra entrada que deve ser conhecida apenas por um usuário autorizado do dispositivo de computação. O dispositivo de computação 300 pode incluir um teclado numérico, teclado e/ou uma interface de usuário de tela de toque através da qual o usuário pode fornecer a entrada. O processador 190 pode comparar a entrada com a informação de autorização armazenada pelo dispositivo de computação 300 em um local de memória seguro do dispositivo de computação 300.
[0115] O usuário também pode ser autenticado pelo processador 190 usando dados biométricos. Os sensores 312a-312g do dispositivo de computação 300 podem incluir um ou mais sensores configurados para coletar dados biométricos de um usuário do dispositivo de computação
300. Por exemplo, o dispositivo de computação 300 pode incluir um sensor de impressão digital para capturar uma ou mais impressões digitais de um usuário do dispositivo de computação 300. O dispositivo de computação 300 pode incluir um sensor configurado para escanear uma ou mais características físicas do usuário do dispositivo de computação 300, como um sensor configurado para capturar uma imagem da íris e/ou retina do usuário, características faciais e/ou outras informações anatômicas que podem ser usadas para autenticar o usuário do dispositivo de computação 300. Os sensores 312a-312g do dispositivo móvel também podem incluir um sensor configurado para coletar dados de voz para o usuário que podem ser analisados pelo processador 190 para determinar se as características de uma voz de um usuário atual do dispositivo de computação 300 correspondem às características da voz de um usuário autorizado do dispositivo móvel.
[0116] A autenticação pode ser realizada por um ambiente de execução confiável, como o TEE 380 ilustrado no exemplo de implementação do dispositivo de computação 300, para evitar que um invasor tente contornar o procedimento de autenticação. As informações de autenticação para usuários autorizados do dispositivo de computação 100 podem ser armazenadas em uma memória persistente do dispositivo de computação e podem ser criptografadas ou protegidas para evitar acesso não autorizado e/ou modificação das informações de autenticação utilizadas pelo ambiente de execução confiável e/ou outros componentes do dispositivo de computação 100 para realizar a autenticação do usuário. O processador 190 do dispositivo de computação 100 também pode manter uma lista de firmware e/ou componentes de software críticos que requerem autenticação do usuário a fim de atualizar esses elementos do dispositivo de computação 100.
[0117] Um outro método que pode ser usado além de ou em vez de exigir autenticação de um usuário autorizado antes de quaisquer atualizações de software é autenticar o código do programa das atualizações para o firmware e/ou componente(s) de software crítico do dispositivo de computação 100. Uma maneira pela qual a atualização de software pode ser autenticada é pelo processador 190 determinando um código de autenticação de mensagem (MAC) para a atualização. O MAC pode ser calculado pelo processador 190 aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem para o arquivo de imagem da atualização e/ou um ou mais componentes do mesmo. O algoritmo de CMAC pode ser fornecido com uma chave derivada de uma Chave Única de Hardware (HUK) 199 associada com o dispositivo de computação. A HUK 199 pode compreender uma sequência de bit que é armazenada na memória programável única 125 e/ou em um outro local de memória seguro do dispositivo de computação 100. A HUK 199 é acessível pelo processador 190 e pode ser acessível para certos componentes confiáveis do dispositivo de computação 100. A HUK 199 é inacessível ao código do programa não confiável, tal como, mas não limitado ao código do programa operando fora do TEE. A HUK 199 pode ser gerada e programada na memória programável única 125 por um fabricante do dispositivo de computação
100.
[0118] O processador 190 do dispositivo de computação 100 usa o CMAC para determinar se um ou mais arquivos de imagem de software associado com firmware e/ou componente(s) de software crítico(s) associados com o dispositivo de computação 100 foram alterados por um usuário não autorizado do dispositivo de computação 100. O processador 190 pode ser configurado para exigir que um usuário do dispositivo de computação 100 seja autenticado antes de gerar o CMAC com base na HUK 199. O processador 190 pode ser configurado para realizar um procedimento de autenticação, como discutido acima, de modo a autenticar o usuário do dispositivo de computação 100. Se a autenticação falhar, o processador 190 pode ser configurado para fazer uma determinação que a atualização de software não é autorizada. Alternativamente, se a autenticação falhar, o processador 190 pode gerar um valor de CMAC falso que não é com base na HUK 199. O valor de CMAC falso não corresponderá a um valor de CMAC esperado previamente gerado e associado com o firmware e/ou componente(s) crítico(s) do dispositivo de computação 100, e o processador 190 pode fazer uma determinação que a atualização não foi autorizada. Se, entretanto, o usuário foi corretamente autenticado, e o valor de CMAC gerado pelo processador 190 corresponder ao Valor de CMAC esperado, então a atualização de software pode ser determinada como autorizada.
[0119] O subsistema de processamento seguro 110 do dispositivo de computação 100 pode incluir um carregador de inicialização seguro 119 armazenado em uma memória somente leitura (ROM) 105 que é configurada para autenticar um ou mais arquivos de imagem de firmware e/ou arquivos de imagem para um ou mais componentes de software críticos do dispositivo de computação 100 usando várias técnicas de mecanismo de inicialização segura. O carregador de inicialização segura também pode ser configurado para calcular a imagem de CMAC antes de permitir que o dispositivo seja inicializado. Se um valor de CMAC calculado pelo carregador de inicialização não corresponder ao valor da imagem de CMAC esperado que foi calculado anteriormente e associado a um componente a ser autenticado pelo carregador de inicialização segura, então o carregador de inicialização segura pode determinar que a atualização de software não foi autorizada.
[0120] O valor de contador anti-repetição (ARC) 165, mantido em uma memória programável única 125 do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, pode ser corrompido responsivo para determinar que a atualização não autorizada foi feita no software ou no firmware (estágio 710). A memória não volátil pode ser separada a partir do circuito integrado 110 (por exemplo, NVM 150) ou pode ser uma parte do circuito integrado (por exemplo, NVM 127 em alguns aspectos). Em resposta ao processador 190 detectar uma atualização não autorizada para software e/ou firmware, o processador 190 corrompe o ARC 165 armazenado na memória programável única 125 do dispositivo de computação 100. O processador 190 pode limpar o ARC 140, os componentes transientes 270a-n, e/ou o componente de linha de base estática 280 armazenado na memória volátil 120. Corromper o ARC 165 e limpar os componentes de ARC a partir da memória volátil 120 evita o software e/ou o firmware incluídos na atualização não autorizada de serem capazes de recuperar o conteúdo de carga útil não criptografado armazenado na NVM
150.
[0121] A detecção de uma atualização não autorizada para software e/ou firmware pode servir como um evento de acionamento para o processador atualizar o ARC 165 armazenado na memória programável única 125 com base no ARC 140, os componentes transientes 270a-n, e/ou o componente de linha de base estática 280 armazenado na memória volátil 120 mantido na memória volátil 120. O processador grava o ARC 140 armazenado na memória volátil 120 na memória programável única 125 como ARC 165. O processador 190 grava o componente de linha de base estática 280 na memória programável única 125 como o ARC
165. O processador 190 pode combinar um componente transiente 270 com o componente de linha de base estática 280 (por exemplo, como ilustrado nas Figuras 4 a 6 e 9 a 11) para gerar o ARC a ser gravado no ARC 165 armazenado na memória programável única 125. O subsistema de processamento seguro 110 também pode ser configurado para selecionar um valor determinado mais recentemente do componente transiente 270 para gerar o ARC a ser gravado no ARC 165 armazenado na memória programável única 125 ou pode selecionar um dos valores de componente transiente 270 na memória volátil 120. Uma vez o ARC foi armazenado na memória programável única, o ARC 140, os componentes transientes 270a-n, e/ou o componente de linha de base estática 280 armazenados na memória volátil 120 podem ser suprimidos, e o ARC 165 armazenado na memória programável única 125 pode ser corrompido definindo-se bits adicionais da memória programável única 125 armazenando o ARC 165.
[0122] O processo ilustrado na Figura 8 fornece um exemplo de um tal método que pode ser usado para corromper o ARC 165, e as Figuras 9 a 11 ilustram o exemplo de uma tal técnica de corrupção sendo aplicada aos mapas de fusível a partir dos exemplos anteriores. O processador do subsistema de processamento seguro do dispositivo de computação pode ser configurado para corromper o ARC 165 responsivo a uma atualização não autorizada para software e/ou firmware para impedir um invasor de ser capaz de acessar os dados confidenciais armazenados na NVM. O ARC 165 armazenado na memória programável única 125 do dispositivo de computação 100 pode ser corrompido, e o ARC 140, os componentes transientes 270a-n, e/ou o componente de linha de base estática 280 armazenados na memória volátil 120 do dispositivo de computação 100 podem ser limpo antes da execução de qualquer um do software incluído na atualização não autorizada para software e/ou firmware.
[0123] A Figura 8 é um diagrama de fluxo de um processo do exemplo 800 para corromper o contador anti- repetição de acordo com as técnicas divulgadas neste documento. O processo ilustrado na Figura 8 pode ser implementado pelo processador do subsistema de processamento seguro 110 dos dispositivos de computação 100 e 200 ilustrados nas Figuras 1 e 2, respectivamente. Além disso, o processo ilustrado na Figura 8 pode ser usado para implementar, pelo menos em parte, o estágio 710 do processo ilustrado na Figura 7. O processo ilustrado na Figura 8 pode ser usado para alterar o ARC 165 impedir que um invasor obtenha acesso aos dados confidenciais armazenados na NVM 150. O ARC 165 armazenado na memória programável única 125 do dispositivo de computação 100 não corresponderá mais ao ARC usado ao criptografar a(s)
carga(s) útil(s) 155 armazenada(s) na NVM 150. Mesmo se um invasor for capaz de instalar novo componente de firmware e/ou de softwares no dispositivo de computação que são capazes de acessar o ARC 165 armazenado nele, o ARC já terá sido corrompido. Esse método eficazmente apaga o conteúdo seguro da NVM 150 do dispositivo de computação, porque o ARC necessário para descriptografar e autenticar o conteúdo de carga(s) útil(s) armazenado na NVM 150 não estará mais presente na memória do dispositivo de computação 100.
[0124] Um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido pode ser determinado (estágio 805). O processador 190 do subsistema de processamento seguro 110 do dispositivo de computação pode ser configurado para determinar vários bits que devem ser adicionados ao ARC 165 para tornar o ARC 165 inválido. O subsistema de processamento seguro 110 pode ser configurado para determinar se o ARC 165 armazenado na memória programável única 125 inclui um número limite de bits que foram definidos.
[0125] O número limite de bits pode ser selecionado com base em um nível de entropia desejado em relação à corrupção do ARC 165. Um nível mais alto de entropia desejado está associado a um número maior de bits da memória programável única 125 ser definido, enquanto um nível inferior desejado de entropia está associado a menos bits da memória programável única 125 sendo definida. Quanto mais bits da memória programável única 125 forem configurados, será mais difícil para um invasor tentar deduzir o que o ARC 165 deveria ser antes de ser corrompido. O subsistema de processamento seguro 110 pode ser configurado para fazer tal determinação para garantir que a configuração dos bits adicionais introduza uma quantidade suficiente de entropia no ARC 165 de modo que adivinhar quais bits faziam parte do ARC 165 e quais bits foram adicionados corrompe o ARC 165 seria proibitivamente intensivo em computação.
[0126] Em uma implementação de exemplo, o subsistema de processamento seguro 110 é configurado para determinar que um primeiro número de bits deve ser definido na memória programável única 125 em resposta a um número atual de bits que já foram definidos na memória programável única 125 sendo menor ou igual a um limite predeterminado. Nesta implementação de exemplo, o subsistema de processamento seguro 110 é configurado para determinar que um segundo número de bits deve ser definido na memória programável única 125 em resposta ao número atual de bits que já foram definidos na memória programável única 125 excedendo o limite predeterminado. O primeiro número de bits é maior que o segundo número de bits. O primeiro número de bits é selecionado para situações em que a memória programável única tem um número menor de bits atualmente definidos para tornar a determinação do ARC mais intensiva em termos de computação antes que o ARC fosse intencionalmente corrompido. Além disso, o primeiro e o segundo número de bits podem ser definidos como uma faixa de bits, e o subsistema de processamento seguro 110 pode ser configurado para selecionar um número de bits a serem definidos que caem dentro da faixa apropriada de bits.
[0127] Para ilustrar este conceito com um primeiro exemplo, suponha que o número limite de bits seja de 64 bits, o primeiro número de bits compreende 128 bits, o segundo número de bits compreende 64 bits e o ARC 165 armazenado em um a memória programável de tempo 125 compreende atualmente 40 bits. Neste exemplo, o número atual de bits que são definidos no ARC 165 da memória programável única 125 é de 40 bits, que é menor do que o limite de 64 bits. Portanto, o subsistema de processamento seguro 110 adicionaria o primeiro número de bits, 128 bits neste exemplo, ao valor atual do ARC 165.
[0128] Para ilustrar este conceito com um segundo exemplo, assume que o número limite de bits é de 64 bits, o primeiro número de bits compreende 128 bits e o segundo número de bits compreende 64 bits, e o ARC 165 armazenado na memória programável única 125 correntemente compreende 100 bits. Neste exemplo, o número atual de bits que são definidos no ARC 165 da memória programável única é 100 bits, o que excede o limite de 64 bits. Portanto, o subsistema de processamento seguro adicionaria o segundo número de bits, que é de 64 bits neste exemplo, ao valor atual do ARC 165.
[0129] Os bits a serem adicionados ao ARC 165 na memória programável única 125 e os valores de limite utilizados nestes exemplos se destinam a ilustrar os conceitos aqui divulgados e não se destinam a limitar essas técnicas a esses valores específicos. As técnicas divulgadas podem ser configuradas para adicionar um número diferente de bits ao ARC 165 na memória programável única
125. Além disso, essas técnicas podem ser implementadas usando diferentes limites e/ou vários limites para determinar quantos bits devem ser adicionados para o ARC na memória programável única. Essas técnicas também podem ser implementadas para utilizar uma faixa ou faixas de valores de bit, e o subsistema de processamento seguro 110 pode ser configurado para selecionar aleatoriamente vários bits que caem dentro de uma faixa específica associada com o número de bits que são correntemente definidos no ARC 165 da memória programável única 125.
[0130] As localizações de um primeiro conjunto de bits da memória programável única compreendendo um primeiro número de bits pode ser determinado (estágio 810). O estágio 805 compreende determinar quantos bits da memória programável única compreendendo o ARC devem ser definidos. O estágio 810 compreende determinar quais bits da memória programável única 125 devem ser selecionados para serem definidos de modo a corromper o ARC 165 armazenado na memória programável única 125. O processador 190 determina as localizações dos bits a serem definidos. O processador 190 pode usar um algoritmo aleatório ou pseudoaleatório para selecionar bits da memória programável única 125 compreendendo o ARC 165 que ainda não foram definidos. Um invasor precisaria então não apenas determinar quantos bits foram definidos na memória programável única, mas também quais bits foram definidos de modo a determinar o que o ARC 165 foi antes do valor ser intencionalmente corrompido.
[0131] O ARC armazenado na memória programável única 125 pode ser atualizado definindo-se o primeiro conjunto de bits da memória programável única (estágio 815). O processador 190 pode definir os valores do primeiro conjunto de bits da memória programável única
125. O ARC 165 armazenado na memória programável única 125 pode ser corrompido gravando-se um valor para os bits selecionados no estágio 810. Os bits que foram selecionados no estágio 810 podem ser definido pelo processador 190 queimando-se os fusíveis, antifusíveis, ou outro componente da memória programável única 125 que são usados para representar bits individuais de dados. O processo ilustrado na Figura 8 pode ser realizado em resposta a uma atualização não autorizada para software e/ou firmware sendo detectada e antes do software ser executado. Como um resultado, o invasor não teria acesso a um ARC válido 165 e não seria capaz de descriptografar os dados armazenados na NVM 150. Esse método eficazmente apaga o conteúdo da NVM 150 tornando o conteúdo irrecuperável devido à corrupção do ARC.
[0132] As Figuras 9 a 11 fornecem exemplos das técnicas para corromper o contador anti-repetição que são baseados nos exemplos ilustrados nas Figuras 4 a 6 discutidos acima. A Figura 9 adapta o exemplo ilustrado na Figura 4 para incluir detectar uma atualização não autorizada para software e/ou firmware, e corromper o ARC armazenado na memória programável única. Os mapas de fusível 905, 910, 915 e 920 refletem aqueles mapas de fusível 405, 410, 415 e 420 ilustrado na Figura 4. Entretanto, depois da atualização de NVW que levou a determinação do ARC ilustrado no mapa de fusível 920, uma atualização não autorizada para software e/ou firmware é detectada, e uma eliminação segura é acionada. O mapa de fusível 925 ilustra que dois novos bits foram selecionados além dos valores de bit que foram representados no mapa de fusível 920. Neste estágio, um número fixo ou aleatório de bits pode ser selecionado pelo processador 190 em localizações aleatórias a partir do bitmap representando os fusíveis da memória programável única em que o ARC é armazenado.
Neste exemplo, apenas dois bits foram selecionados por uma questão de clareza, mas as técnicas divulgadas neste documento não são limitadas a adicionar três novos bits.
O número maior de bits selecionados torna mais difícil determinar quantos bits e quais bits foram adicionados ao ARC anterior.
Um novo valor de linha de base estática (mapa de fusível 930) com base no ARC mais recente e os bits adicionais para ofuscar o ARC é então gravado na memória programável única pelo processador 190. Quaisquer dados armazenados na NVM que dependiam do ARC antigo se tornará irrecuperável como um resultado do ARC sendo incrementado e os ARCs armazenados na memória volátil 120 sendo removidos.
Qualquer componente transiente 275a-275n armazenado na NVM 150 também pode ser suprimido a partir da NVM 150 e/ou corrompida pelo processador 190. Na próxima vez que o dispositivo for ligado, o novo valor de linha de base estática representado no mapa de fusível 930 servirá como a base para uma atualização subsequente no conteúdo de NVW (consultar mapa de fusível 935). Nenhum dos dados confidenciais armazenados na NVM poderia ser recuperado pelo invasor.
Além disso, quaisquer dados de ARC armazenados em uma memória volátil do dispositivo de computação também podem ser suprimidos para torná-lo mais difícil para o invasor determinar o estado anterior do
ARC.
[0133] A Figura 10 ainda ilustra esses conceitos adaptando-se o exemplo ilustrado na Figura 5 para incluir detectar uma atualização não autorizada para software e/ou firmware, e corromper o ARC armazenado na memória programável única 125. Os mapas de fusível 1005, 1010, 1015 e 1020 refletem aqueles mapas de fusível 505, 510, 515 e 520 ilustrado na Figura 5. Entretanto, depois da atualização de NVW que levou a determinação do ARC ilustrado no mapa de fusível 1020, uma atualização não autorizada para software e/ou firmware é detectada pelo processador 190, e uma eliminação segura é acionada pelo processador 190. O mapa de fusível 1025 ilustra que três novos bits foram selecionados além dos valores de bit que foram representados no mapa de fusível 1020. Neste exemplo, apenas três bits foram selecionados por uma questão de clareza, mas as técnicas divulgadas neste documento não são limitadas a adicionar três novos bits. Um novo valor de linha de base estática (mapa de fusível 1030) com base no ARC mais recente e os bits adicionais para ofuscar o ARC é então gravado na memória programável única 125 pelo processador 190. Quaisquer dados armazenados na NVM que dependiam do ARC antigo se tornará irrecuperável pelo invasor. Além disso, quaisquer dados de ARC armazenados em uma memória volátil 120 e/ou a NVM 150 do dispositivo de computação também podem ser suprimidos e/ou corrompidos para torná-lo mais difícil para um invasor determinar o estado anterior do ARC.
[0134] A Figura 11 ainda ilustra esses conceitos adaptando-se o exemplo ilustrado na Figura 6 para incluir detectar uma atualização não autorizada para software e/ou firmware, e corromper o ARC armazenado na memória programável única 125. Os mapas de fusível 1105, 1110, 1115, 1120, e 1125 refletem aqueles mapas de fusível 605, 610, 615, 620 e 625 ilustrados na Figura 6. Entretanto, depois da atualização de NVW que levou a determinação do ARC ilustrado no mapa de fusível 1125, uma atualização não autorizada é detectada, e uma eliminação segura é acionada. O mapa de fusível 1130 ilustra que três novos bits foram selecionados pelo processador 190 além dos valores de bit que foram representados no mapa de fusível 1125. Neste exemplo, apenas três bits foram selecionados por uma questão de clareza, mas as técnicas divulgadas neste documento não são limitadas a adicionar três novos bits. Um novo valor de linha de base estática (mapa de fusível 1135) com base no ARC mais recente e os bits adicionais para ofuscar o ARC é então gravado na memória programável única 125 pelo processador 190. Quaisquer dados armazenados na NVM que dependiam do ARC antigo se tornará irrecuperável pelo invasor. Além disso, quaisquer dados de ARC armazenados em uma memória volátil 120 e/ou a NVM 150 do dispositivo de computação também pode ser suprimidos e/ou corrompidos para torná-lo mais difícil para um invasor determinar o estado anterior do ARC.
[0135] Os exemplos anteriores das Figuras 9 a 11 destinam-se a ilustrar os conceitos para evitar que um invasor instale software não autorizado no dispositivo de computação para obter acesso aos dados confidenciais armazenados na NVM 150. O número específico de bits adicionados ao ARC e os bits específicos que são selecionados destinam-se a ilustrar esses conceitos e não a limitar as técnicas divulgadas neste documento a essas implementações de exemplo específicas.
[0136] A Figura 12 é um diagrama de bloco de um circuito integrado do exemplo 1200. O circuito integrado compreende um processador 1290 e uma memória programável única 1225. A memória programável única 1225 pode ser acoplada de forma comunicável com o processador 1290. Em algumas implementações, a memória programável única 1225 pode ser implementada como parte do processador 1290, e pode ser tratada como memória interna para o processador
1290. O processador 1290 pode ser configurado para determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado. O software pode ser armazenado em uma memória legível por computador interno para o circuito integrado 1200 ou externo ao circuito integrado, como a memória não volátil
1250. O processador 1290 pode ser configurado para corromper um valor de contador anti-repetição (ARC), como o ARC 1265, mantido na memória programável única 1225 do circuito integrado 1200 e usado pelo circuito integrado 1200 para proteger o conteúdo de uma memória não volátil
1250. O processador 1290 pode ser configurado para corromper o ARC 1265 responsivo para determinar que a atualização não autorizada foi feita no software ou no firmware.
[0137] O circuito integrado 1200 pode ser semelhante ao subsistema de processamento seguro 110 ilustrado nas Figuras 1 e 2 discutido acima, que pode ser implementado em um circuito integrado incluindo, mas não limitado a um SoC. O circuito integrado 1200 pode ser implementado pelo dispositivo de computação 300 ilustrado na Figura 3. O processador 1290 pode ser semelhante ao processador 190 ilustrado nas Figuras 1 e 2 ou pode ser semelhante ao processador 310 ilustrado na Figura 3. A memória programável única 1225 pode ser semelhante à memória programável única 125 ou a memória programável única 325 ilustrada na Figura 3. O ARC 1265 pode ser representado como uma matriz uni ou bidimensional de bits da memória programável única 125, semelhante ao ARC 165 discutido acima.
[0138] As metodologias aqui descritas podem ser implementadas por vários meios, dependendo da aplicação. Por exemplo, essas metodologias podem ser implementadas em hardware, firmware, software ou qualquer combinação dos mesmos. Para uma implementação de hardware, as unidades de processamento podem ser implementadas dentro de um ou mais circuitos integrados específicos de aplicação (ASICs), processadores de sinais digitais (DSPs), dispositivos de processamento de sinais digitais (DSPDs), dispositivos lógicos programáveis (PLDs), matrizes de portas programáveis em campo (FPGAs), processadores, controladores, microcontroladores, microprocessadores, dispositivos eletrônicos, outras unidades eletrônicas projetadas para executar as funções aqui descritas ou uma combinação dos mesmos.
[0139] Para uma implementação de firmware e/ou de software, as metodologias podem ser implementadas com módulos (por exemplo, procedimentos, funções e assim por diante) que executam as funções aqui descritas. Qualquer meio legível por máquina que incorpora instruções tangíveis pode ser usado na implementação das metodologias aqui descritas. Por exemplo, os códigos de software podem ser armazenados em uma memória e executados por uma unidade de processador. A memória pode ser implementada dentro da unidade do processador ou externa à unidade do processador. Tal como aqui utilizado, o termo “memória” se refere a qualquer tipo de memória de longo prazo, curto prazo, volátil, não volátil ou outra memória e não deve ser limitado a qualquer tipo particular de memória ou número de memórias ou tipo de mídia. A mídia tangível inclui um ou mais artigos físicos de mídia legível por máquina, como memória de acesso aleatório, armazenamento magnético, mídia de armazenamento ótico e assim por diante.
[0140] Se implementadas em firmware e/ou software, as funções podem ser armazenadas como uma ou mais instruções ou código em um meio legível por computador. Os exemplos incluem mídia legível por computador codificada com uma estrutura de dados e mídia legível por computador codificada com um programa de computador. A mídia legível por computador inclui mídia de armazenamento físico de computador. Um meio de armazenamento pode ser qualquer meio disponível que possa ser acessado por um computador. A título de exemplo, e não como limitação, tal mídia legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que pode ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador; disquete e disco, conforme usado aqui, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos geralmente reproduzem dados magneticamente, enquanto os discos reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador. Esses meios também fornecem exemplos de meios não transitórios, que podem ser legíveis por máquina, e em que os computadores são um exemplo de uma máquina que pode ler tais meios não transitórios.
[0141] Além disso, os métodos, sistemas e dispositivos discutidos acima são exemplos. Várias configurações podem omitir, substituir ou adicionar vários procedimentos ou componentes conforme apropriado. Por exemplo, em configurações alternativas, os métodos podem ser realizados em uma ordem diferente da descrita e várias etapas podem ser adicionadas, omitidas ou combinadas. Além disso, os recursos descritos com relação a certas configurações podem ser combinados em várias outras configurações. Diferentes aspectos e elementos das configurações podem ser combinados de maneira semelhante. Além disso, a tecnologia evolui e, portanto, muitos dos elementos são exemplos e outros elementos, incluindo elementos desenvolvidos no futuro, podem ser usados.
[0142] Os princípios genéricos aqui discutidos podem ser aplicados a outras implementações.

Claims (30)

REIVINDICAÇÕES
1. Método para fornecer proteção de dados em um circuito integrado, o método compreendendo: determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e corromper um valor de contador anti-repetição (ARC), mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsivo para determinar que a atualização não autorizada foi feita no software ou no firmware.
2. Método, de acordo com a reivindicação 1, em que determinar que a atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado compreende: detectar uma alteração no software ou no firmware; determinar se pelo menos um de um usuário ou do software ou do firmware é autêntico em resposta à detecção da alteração no software ou no firmware; e determinar que a alteração no software ou no firmware não foi autorizada em resposta a pelo menos um do usuário ou do software não ser autêntico.
3. Método, de acordo com a reivindicação 2, em que o método compreende autenticar o usuário, e autenticar o usuário compreende: determinar se o usuário foi autenticado; e realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
4. Método, de acordo com a reivindicação 2, em que o método compreende autenticar o software ou o firmware, e autenticar o software ou o firmware compreende: determinar um código de autenticação de mensagem (MAC) para o software ou para o firmware aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem para o software ou para o firmware usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
5. Método, de acordo com a reivindicação 1, em que corromper o valor de ARC compreende: atualizar um valor de ARC armazenado na memória programável única com um valor de ARC atual mantido na memória volátil.
6. Método, de acordo com a reivindicação 5, ainda compreendendo: determinar um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
7. Método, de acordo com a reivindicação 6, em que determinar o primeiro número de bits da memória programável única para definir compreende: determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
8. Método, de acordo com a reivindicação 6, em que determinar o primeiro conjunto de bits da memória programável única a ser definido compreende: selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
9. Circuito integrado fornecendo proteção de dados, o circuito integrado compreendendo: meios para determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e meios para corromper um valor de contador anti- repetição (ARC), mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
10. Circuito integrado, de acordo com a reivindicação 9, em que os meios para determinar que a atualização não autorizada foi feita no software ou no firmware compreende: meios para detectar uma alteração no software ou no firmware; meios para determinar se pelo menos um de um usuário ou do software ou do firmware é autêntico em resposta à detecção da alteração no software ou no firmware; e meios para determinar que a alteração no software ou no firmware não foi autorizada em resposta a pelo menos um do usuário ou do software ou do firmware não ser autêntico.
11. Circuito integrado, de acordo com a reivindicação 10, em que os meios para determinar se pelo menos um do usuário ou do software ou do firmware é autêntico compreende: meios para determinar se o usuário foi autenticado; e meios para realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
12. Circuito integrado, de acordo com a reivindicação 10, em que os meios para determinar se pelo menos um do usuário ou do software ou do firmware é autêntico compreende: meios para determinar um código de autenticação de mensagem (MAC) para o software ou para o firmware aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software ou o firmware usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e meios para comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
13. Circuito integrado, de acordo com a reivindicação 9, em que os meios para corromper o valor de
ARC ainda compreendem: meios para atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado.
14. Circuito integrado, de acordo com a reivindicação 13, ainda compreendendo: meios para determinar um primeiro número de bits da memória programável única a ser definido; meios para determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits, e meios para atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
15. Circuito integrado, de acordo com a reivindicação 14, em que os meios para determinar o primeiro número de bits da memória programável única para definir ainda compreendem: meios para determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
16. Circuito integrado, de acordo com a reivindicação 14, em que os meios para determinar que bits da memória programável única para definir ainda compreendem: meios para selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
17. Circuito integrado fornecendo proteção de dados, o circuito integrado compreendendo: uma memória programável única; um processador acoplado de forma comunicável à memória programável única, o processador configurado para: determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e corromper um valor de contador anti-repetição (ARC), mantido na memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
18. Circuito integrado, de acordo com a reivindicação 17, em que o processador é configurado para determinar que a atualização não autorizada foi feita no software ou no firmware sendo configurado para: detectar uma alteração no software ou no firmware; autenticar pelo menos um de um usuário e do software ou do firmware em resposta à detecção da alteração no software ou no firmware; e determinar que a alteração no software ou no firmware não foi autorizada em resposta a pelo menos um do usuário e do software não sendo autenticado.
19. Circuito integrado, de acordo com a reivindicação 18, em que o processador é configurado para autenticar o usuário sendo configurado para:
determinar se o usuário foi autenticado; e realizar pelo menos um procedimento de autenticação para autenticar o usuário em resposta ao usuário não ter sido autenticado.
20. Circuito integrado, de acordo com a reivindicação 18, em que o processador é configurado para autenticar o software sendo configurado para: determinar um código de autenticação de mensagem (MAC) para o software aplicando-se um algoritmo de código de autenticação de mensagem (CMAC) com base em cifragem ao software usando uma chave derivada de uma Chave Única de Hardware (HUK) associada com o circuito integrado; e comparar o MAC com um MAC previamente determinado para determinar se o MAC corresponde ao MAC previamente determinado.
21. Circuito integrado, de acordo com a reivindicação 17, em que o processador sendo configurado para corromper o valor de ARC é ainda configurado para: atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado.
22. Circuito integrado, de acordo com a reivindicação 21, em que o processador é ainda configurado para: determinar um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
23. Circuito integrado, de acordo com a reivindicação 22, em que o processador sendo configurado para determinar o primeiro número de bits da memória programável única para definir é ainda configurado para: determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
24. Circuito integrado, de acordo com a reivindicação 22, em que o processador sendo configurado para determinar que bits da memória programável única para definir é ainda configurado para: selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
25. Meio legível por computador não transitório, que tem armazenado nele instruções legíveis por computador para fornecer proteção de dados em um circuito integrado, compreendendo instruções configuradas para fazer um computador: determinar que uma atualização não autorizada foi feita no software ou no firmware associado com o circuito integrado; e corromper um valor de contador anti-repetição (ARC), mantido em uma memória programável única do circuito integrado e usado pelo circuito integrado para proteger o conteúdo de uma memória não volátil, responsiva para determinar que a atualização não autorizada foi feita no software ou no firmware.
26. Meio legível por computador não transitório, de acordo com a reivindicação 25, em que as instruções configuradas para fazer com que o computador determine que a atualização não autorizada foi feita no software ou no firmware ainda compreendem instruções configuradas para fazer o computador: detectar uma alteração no software ou no firmware; autenticar pelo menos um de um usuário e do software ou do firmware em resposta à detecção da alteração no software ou no firmware; e determinar que a alteração no software ou no firmware não foi autorizada em resposta a pelo menos um do usuário e do software ou o firmware não sendo autenticado.
27. Meio legível por computador não transitório, de acordo com a reivindicação 25, em que as instruções configuradas para fazer com que o computador corrompa o valor de ARC ainda compreendem instruções configuradas para fazer o computador: atualizar um primeiro valor de ARC armazenado na memória programável única com um segundo valor de ARC mantido na memória volátil do circuito integrado.
28. Meio legível por computador não transitório, de acordo com a reivindicação 27, ainda compreendendo instruções configuradas para fazer o computador: determinar um primeiro número de bits da memória programável única armazenando o valor de ARC a ser definido; determinar as localizações de um primeiro conjunto de bits da memória programável única compreendendo o primeiro número de bits; e atualizar o valor de ARC armazenado na memória programável única definindo-se o primeiro conjunto de bits da memória programável única.
29. Meio legível por computador não transitório, de acordo com a reivindicação 28, em que as instruções configuradas para fazer com que o computador determine o primeiro número de bits da memória programável única para definir ainda compreendem instruções configuradas para fazer o computador: determinar o primeiro número de bits da memória programável única para definir com base em um segundo número de bits já definido na memória programável única.
30. Meio legível por computador não transitório, de acordo com a reivindicação 29, em que as instruções configuradas para fazer com que o computador determine quais bits da memória programável única para definir ainda compreendem instruções configuradas para fazer o computador: selecionar aleatoriamente o primeiro conjunto de bits da memória programável única de um segundo conjunto de bits que não foi definido na memória programável única.
BR112020018229-0A 2018-03-09 2019-03-08 Proteção de dados de circuito integrado BR112020018229A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862640942P 2018-03-09 2018-03-09
US62/640,942 2018-03-09
US16/296,066 US11321466B2 (en) 2018-03-09 2019-03-07 Integrated circuit data protection
US16/296,066 2019-03-07
PCT/US2019/021275 WO2019173670A1 (en) 2018-03-09 2019-03-08 Integrated circuit data protection

Publications (1)

Publication Number Publication Date
BR112020018229A2 true BR112020018229A2 (pt) 2020-12-29

Family

ID=67844072

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020018229-0A BR112020018229A2 (pt) 2018-03-09 2019-03-08 Proteção de dados de circuito integrado

Country Status (8)

Country Link
US (1) US11321466B2 (pt)
EP (1) EP3762852A1 (pt)
KR (1) KR20200129103A (pt)
CN (1) CN111819561B (pt)
BR (1) BR112020018229A2 (pt)
SG (1) SG11202007282YA (pt)
TW (1) TW201941065A (pt)
WO (1) WO2019173670A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703950B2 (en) * 2012-03-30 2017-07-11 Irdeto B.V. Method and system for preventing and detecting security threats
US10853309B2 (en) 2018-08-13 2020-12-01 Micron Technology, Inc. Fuseload architecture for system-on-chip reconfiguration and repurposing
US11210238B2 (en) * 2018-10-30 2021-12-28 Cypress Semiconductor Corporation Securing data logs in memory devices
US20220156411A1 (en) * 2019-08-29 2022-05-19 Google Llc Securing External Data Storage for a Secure Element Integrated on a System-on-Chip
FR3100905B1 (fr) * 2019-09-16 2022-03-04 Idemia Identity & Security France Système sur puce et procédé garantissant la fraicheur des données stockées dans une mémoire extérieure
US11681536B2 (en) * 2019-12-06 2023-06-20 Lattice Semiconductor Corporation Fast boot systems and methods for programmable logic devices
US20230109011A1 (en) * 2021-10-04 2023-04-06 Hewlett-Packard Development Company, L.P. Placing a device in secure mode
EP4312136A1 (en) * 2022-07-25 2024-01-31 Nxp B.V. Apparatuses and methods for verification of updated data-set
WO2024049141A1 (ko) * 2022-09-02 2024-03-07 삼성전자주식회사 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427343A (zh) * 2001-12-18 2003-07-02 阳庆电子股份有限公司 防止设备及软件内的设定被非授权人员使用或更改的装置
JP4875126B2 (ja) * 2002-06-06 2012-02-15 エヌヴィディア コーポレイション Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
US20030233562A1 (en) * 2002-06-12 2003-12-18 Sachin Chheda Data-protection circuit and method
CN100504818C (zh) * 2003-07-07 2009-06-24 巨视股份有限公司 调控对非易失性存储区访问的方法和判定访问的自动方法
CN1300697C (zh) * 2003-09-15 2007-02-14 英业达股份有限公司 软件保护方法及系统
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
IL171963A0 (en) 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
US20080127356A1 (en) * 2006-11-27 2008-05-29 Mediatek Inc. Embedded systems and methods for securing firmware therein
US7886150B2 (en) * 2007-05-11 2011-02-08 Mips Technologies, Inc. System debug and trace system and method, and applications thereof
US20090193261A1 (en) * 2008-01-25 2009-07-30 Mediatek Inc. Apparatus and method for authenticating a flash program
US8677144B2 (en) * 2008-02-25 2014-03-18 Cavium, Inc. Secure software and hardware association technique
JP5434203B2 (ja) * 2009-04-02 2014-03-05 大日本印刷株式会社 認証装置、認証プログラム、認証システム、パスワード生成装置、携帯型セキュリティデバイス、およびパスワード生成プログラム
US9479509B2 (en) * 2009-11-06 2016-10-25 Red Hat, Inc. Unified system for authentication and authorization
EP3518128B1 (en) * 2011-03-30 2021-04-28 Irdeto B.V. Enabling a software application to be executed on a hardware device
US20140075522A1 (en) * 2012-09-07 2014-03-13 Red Hat, Inc. Reliable verification of hypervisor integrity
US9124434B2 (en) * 2013-02-01 2015-09-01 Microsoft Technology Licensing, Llc Securing a computing device accessory
CN103544413B (zh) * 2013-10-31 2017-02-15 宇龙计算机通信科技(深圳)有限公司 一种在智能终端中校验软件版权的方法及装置
US9690922B2 (en) * 2014-07-28 2017-06-27 Avago Technologies General Ip (Singapore) Pte. Ltd. System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device
US9830479B2 (en) * 2014-09-16 2017-11-28 Nxp Usa, Inc. Key storage and revocation in a secure memory system
WO2016075865A1 (ja) * 2014-11-12 2016-05-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 更新管理方法、更新管理装置及び制御プログラム
US10353638B2 (en) * 2014-11-18 2019-07-16 Microsemi SoC Corporation Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory
US9563765B2 (en) * 2015-02-10 2017-02-07 Apple Inc. Baseband secure boot with remote storage
US9697359B2 (en) 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
US9729330B2 (en) * 2015-08-21 2017-08-08 Samsung Electronics Co., Ltd. Secure pairing of eHealth devices and authentication of data using a gateway device having secured area
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
US9917687B2 (en) * 2015-10-12 2018-03-13 Microsoft Technology Licensing, Llc Migrating secrets using hardware roots of trust for devices
EP3437248A4 (en) * 2016-03-30 2019-11-06 The Athena Group, Inc. KEY UPDATE FOR KEY MASTERS
US10127405B2 (en) 2016-05-10 2018-11-13 Qualcomm Incorporated Techniques for determining an anti-replay counter for preventing replay attacks
US9916452B2 (en) * 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates

Also Published As

Publication number Publication date
TW201941065A (zh) 2019-10-16
US11321466B2 (en) 2022-05-03
SG11202007282YA (en) 2020-09-29
KR20200129103A (ko) 2020-11-17
EP3762852A1 (en) 2021-01-13
US20190278914A1 (en) 2019-09-12
CN111819561B (zh) 2023-11-03
CN111819561A (zh) 2020-10-23
WO2019173670A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
BR112020018229A2 (pt) Proteção de dados de circuito integrado
ES2904501T3 (es) Implementación de un almacenamiento seguro con protección de integridad
KR101049647B1 (ko) 외부 저장 디바이스로부터 안전하게 부팅하기 위한 방법 및 장치
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
US9317708B2 (en) Hardware trust anchors in SP-enabled processors
KR102239711B1 (ko) 보안 파라미터들에 기초한 작업 보안 키의 생성
US9443111B2 (en) Device security using an encrypted keystore data structure
US20180091315A1 (en) Revocation and updating of compromised root of trust (rot)
EP3455779B1 (en) Techniques for determining an anti-replay counter for preventing replay attacks
US10126960B2 (en) Fuse-based anti-replay mechanism
JP2008052704A (ja) コンピュータおよび共有パスワードの管理方法
US20180046805A1 (en) Hardware-based software-resilient user privacy exploiting ephemeral data retention of volatile memory
JP2020030527A (ja) 記憶装置及びプログラム
US20170004300A1 (en) Hardware protection for encrypted strings and protection of security parameters
US11418335B2 (en) Security credential derivation
KR100952300B1 (ko) 저장매체의 안전한 데이터 관리를 위한 단말 장치, 메모리및 그 방법
CN111357003A (zh) 预操作系统环境中的数据保护
Amato et al. Mobile Systems Secure State Management
CN117501271A (zh) 通过利用物理不可克隆函数puf进行数据加密/解密向主机认证存储设备
Areno Secure Mobile Association and Data Protection with Enhanced Cryptographic Engines.
Areno et al. Secure mobile authentication and device association with enhanced cryptographic engines

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]