BRPI0017287B1 - sistema e método de determinação da autenticidade de uma imagem executável - Google Patents

sistema e método de determinação da autenticidade de uma imagem executável Download PDF

Info

Publication number
BRPI0017287B1
BRPI0017287B1 BRPI0017287A BR0017287A BRPI0017287B1 BR PI0017287 B1 BRPI0017287 B1 BR PI0017287B1 BR PI0017287 A BRPI0017287 A BR PI0017287A BR 0017287 A BR0017287 A BR 0017287A BR PI0017287 B1 BRPI0017287 B1 BR PI0017287B1
Authority
BR
Brazil
Prior art keywords
executable image
digital signature
validator
authenticity
executable
Prior art date
Application number
BRPI0017287A
Other languages
English (en)
Other versions
BR0017287A (pt
Inventor
Dmitry Bodrov
Original Assignee
Mediadna Inc
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 Mediadna Inc filed Critical Mediadna Inc
Publication of BR0017287A publication Critical patent/BR0017287A/pt
Publication of BRPI0017287B1 publication Critical patent/BRPI0017287B1/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

"sistema e método de verificação da autenticidade de imagens executáveis dinamicamente conectáveis". sistema e método para verificação da integridade de imagens executáveis. o sistema inclui um validador durante execução que determina uma assinatura digital de referência para uma imagem executável utilizando os teores da assinatura digital que exclui aquelas porções da imagem executável que são reparadas por um carregador do programa. o validador durante execução em seguida, subseqüente ao carregamento da imagem executável, determina uma assinatura digital de integridade para verificar se a imagem executável foi inadequadamente modificada. além disso, o validador durante execução garante que cada um dos ponteiros na imagem executável não foi inadequadamente redirecionado.

Description

SISTEMA E MÉTODO DE DETERMINAÇÃO DA AUTENTICIDADE DE UMA IMAGEM EXECUTÁVEL FUNDAMENTOS DA INVENÇÃO Campo da Invenção A presente invenção refere-se a sistemas computacionais. Mais especificamente, a presente invenção refere-se a um sistema e método de verificação da autenticidade de imagens executáveis dinamicamente conectáveis.
Descrição da Tecnologia Correlata Novos modelos de objetos permitem atualmente a integração dinâmica de aplicações de software durante a sua execução. Por exemplo, Windows, um sistema operacional licenciado pela Microsoft Inc., permite a integração dinâmica de uma aplicação de software a uma biblioteca dinâmica de ligações durante a execução da aplicação de software. Depois de um usuário solicitar a execução da aplicação de software, um carregador de programas copia uma "imagem de disco" da aplicação a partir do armazenamento do disco para a memória principal para criar uma "imagem do processo". A imagem de disco refere-se à imagem executável antes de ser carregada, enquanto que a imagem do processo se refere à imagem executável depois de ter sido carregada na memória. Tanto a imagem de disco como a imagem do processo incluem uma seção de reparo que identifica que porções do software precisam ser reparadas para referenciar a biblioteca dinâmica de ligações durante a execução.
Significativamente, depois do carregamento, a imagem do processo é diferente da imagem de disco. Sendo assim, um conjunto de testes que tenha sido preparado em relação à imagem de disco não coincidirá com o conjunto de testes da imagem do processo, mesmo que a imagem do processo não tenha sido indevidamente adulterada.
Portanto, existe a necessidade de um sistema que possa verificar a identidade de uma aplicação de software em um ambiente de carregamento dinâmico. Em particular, o sistema deve ser capaz de determinar se uma aplicação de software que foi conectada dinamicamente a outro objeto de dados foi adulterada subseqüentemente à execução da aplicação de software.
SUMÁRIO DA INVENÇÃO
Uma modalidade da invenção inclui um sistema para determinar a autenticidade de uma imagem executável, o sistema caracterizado por compreender uma imagem executável que tem um ou mais ponteiros e um validador capaz de gerar em um primeiro instante fixo uma assinatura digital de referência baseada em um teor selecionado a partir da imagem executável que exclui cada um dos ponteiros, em que o validador gera uma assinatura digital de autenticidade em um segundo instante baseada no teor selecionado a partir da imagem executável que exclui cada um dos ponteiros e em que o validador determina se a assinatura digital de referência coincide com a assinatura digital de autenticidade.
Outra modalidade da invenção inclui um sistema para determinar a autenticidade de uma imagem executável, o sistema caracterizado por compreender uma imagem executável que tem um ou mais ponteiros e em que a imagem executável inclui informações que especificam se cada uma das localizações de referência dos ponteiros está dentro da imagem executável e um validador capaz de determinar se cada um dos ponteiros se refere a uma localização respectiva que está dentro da imagem executável.
Ainda outra modalidade da invenção inclui um sistema para determinar a autenticidade de uma imagem executável, o sistema caracterizado por compreender uma primeira imagem executável, uma segunda imagem executável que inclui um ponteiro que se refere a uma localização dentro da primeira imagem executável e um validador capaz de determinar se o ponteiro se refere a uma localização dentro da primeira imagem executável.
Ainda outra modalidade da invenção inclui um sistema capaz de determinar a autenticidade de uma imagem executável, o sistema caracterizado por compreender: uma primeira imagem executável, uma segunda imagem executável que compreende uma tabela de importação que inclui o identificador da primeira imagem executável e um ou mais ponteiros externos, cada um dos ponteiros externos se referindo a uma localização dentro da primeira imagem executável e uma seção de código que contém código de máquina e um ou mais ponteiros de importação, cada um dos ponteiros de importação se referindo a uma localização dentro da tabela de importação, e um validador capaz de gerar em um primeiro instante uma assinatura digital de referência baseada em um teor selecionado a partir da imagem executável, os teores selecionados excluindo cada um dos ponteiros de importação e os ponteiros externos, em que o validador gera uma assinatura digital de autenticidade em um segundo instante baseada no teor selecionado a partir da imagem executável que exclui cada um dos um ou mais ponteiros, em que o validador determina se a assinatura digital de referência coincide com a assinatura digital de autenticidade, em que o validador determina se cada um dos ponteiros de importação se refere a uma localização dentro da primeira imagem executável, e em que o validador determina se o ponteiro de importação se refere a uma localização dentro da primeira imagem executável.
BREVE DESCRIÇÃO DOS DESENHOS A Figura 1 é um diagrama de blocos de alto nível que ilustra um computador da presente invenção que está adaptado para receber uma imagem executável de uma ou mais fontes. A Figura 2 é um diagrama de blocos que ilustra um validador que é capaz de determinar a autenticidade de uma ou mais imagens executáveis que residem no computador da Figura 1. A Figura 3 é um diagrama de blocos que ilustra a estrutura interna de uma das imagens executáveis da Figura 2 . A Figura 4 é um diagrama de blocos que ilustra duas das imagens executáveis da Figura 2 sendo conectadas após um processo de carregamento. A Figura 5 é um fluxograma que ilustra um processo realizado pelo validador da Figura 2 durante uma verificação de autenticidade de uma das imagens executáveis mostradas na Figura 2. A Figura 6 é um fluxograma que ilustra outro processo realizado pelo validador da Figura 2 durante uma verificação de autenticidade de uma das imagens executáveis mostradas na Figura 2.
DESCRIÇÃO DETALHADA DA INVENÇÃO A descrição detalhada a seguir refere-se a algumas modalidades da invenção. Contudo, a invenção pode ser concretizada em diversos diferentes modos como definidos e cobertos pelas reivindicações.
Visão do Sistema A Figura 1 é um diagrama de blocos de alto nível que ilustra um computador 90. 0 computador 90 permite uma verificação de autenticidade em relação a uma ou mais imagens executáveis 100 que estão sendo executadas no computador 90. O computador 90 pode utilizar qualquer microprocessador convencional de uso geral de um ou múltiplos chips tal como um processador Pentium , um processador Pentium® Pro, um processador 8051, um processador MPS°, um processador Power PC®, ou um processador ALPHA®. Além disso, o computador 90 pode utilizar qualquer microprocessador convencional de uso específico tal como um processador digital de sinais ou um processador de gráficos. O computador 90 inclui um sistema operacional 95 e uma memória 108. 0 sistema operacional pode fornecido por qualquer vendedor de sistemas operacionais e pode incluir: UNIX, LINUX, Sistema Operacional de Disco (DOS), OS/2, Windows 3.X, Windows 95, Windows 98 e Windows NT. Para conveniência da descrição, é apresentada abaixo uma modalidade da invenção em relação ao Windows 95. 0 computador 90 está em comunicação com uma ou mais fontes de imagens executáveis 107 que fornecem a imagem executável 100 ao computador 90. Como mostrado na Figura 1, os fornecedores da imagem executável exemplificativa .ncluem: um servidor 110, uma Internet 114, um banco de lados 118, uma rede 122, um dispositivo de hardware 12 6 :/ou um dispositivo de armazenamento removível 130. A imagem executável 100 é um objeto de dados que pode lefinir por si próprio ou combinado com outras imagens ixecutáveis, uma ou mais aplicações de software. As Lplicações de software podem incluir, por exemplo: um irocessador de texto, um banco de dados, um sistema de [erenciamento de direitos digitais, um utilitário de 'inanças pessoais, um paginador da Internet, um jogo de :omputador, um programa de comunicações, um programa de LUtorização, uma carteira eletrônica, um tradutor de lultimídia ou um gerenciador de contratos. Além disso, a magem executável 100 é dinamicamente conectável a outras magens executáveis. Por exemplo, em uma modalidade da nvenção que é desenvolvida para uso com o Windows 95, a magem executável é uma biblioteca dinâmica de ligações DLL) . A Internet 114 inclui variações de rede tais como nternet pública, uma internet privada, uma internet egura, uma rede privada, uma rede pública, uma rede de alor agregado, uma intranet e similar. A rede 122 pode incluir qualquer tipo de grupo de omputadores eletronicamente conectados incluindo, por xemplo, as seguintes redes: Intranet, Redes de Área Local LAN) ou Redes de Área Ampla (WAN) . Além disso, a onectividade à rede pode ser, por exemplo, modem remoto, thernet (IEEE 802.3), Token Ring (IEEE 802.5), Fiber istributed Datalink Interface (Interface de Conexão de ados de Fibra Distribuída) (FDDI) ou Asynchronous Transfer Mode (Modo Assíncrono de Transferência) (ATM). Observe-se que os dispositivos de computação podem ser de mesa, servidores, portáteis, de mão, sobre aparelho, ou qualquer outro tipo desejado de configuração. 0 dispositivo de hardware 126 pode ser um chip lógico, uma ROM, uma RAM, um cartão inteligente, ou uma unidade central de processamento. 0 armazenamento de meios removíveis 130 pode ser um disco flexível, um disco compacto, um disco rígido, um acionador de fita, uma ROM, ou outro meio de armazenamento persistente. A Figura 2 é um diagrama de blocos que ilustra um validador 204. Em uma modalidade da invenção, o validador 204 é uma imagem executável, similar em formato à imagem executável 100. Em outra modalidade da invenção, o validador 204 está integrado à imagem executável 100. Em ainda outra modalidade da invenção, o validador 204 está integrado ao carregador do programa 208. Uma função do carregador do programa 208 é copiar uma imagem executável 100 do dispositivo de armazenamento 105 (Figura 1) para a memória 108 e unir os ponteiros de código e de dados a um endereço apropriado antes da execução da imagem executável 100. Para conveniência de descrição, a descrição a seguir considera que o validador 204 é uma aplicação separada que é distinta da imagem executável 100 e do carregador do programa 208. 0 validador 204 verifica a autenticidade da imagem executável 100 de acordo com condições selecionadas que são descritas em maior detalhe abaixo. Como pode ser apreciado pelos tecnólogos versados na técnica, o validador 204 e o carregador do programa 208 são compostos por diversas sub- rotinas, procedimentos, enunciados de definições e macros que são tipicamente compilados separadamente e conectados para dentro de um único programa executável. Portanto, a descrição a seguir é usada por conveniência para descrever a funcionalidade destes itens. 0 validador 204 e o carregador do programa 208 (Figura 1) podem ser escritos em qualquer linguagem de programação tais como C, C++, BASIC, Pascal, Java e FORTRAN. C, C++, BASIC, Pascal, Java e FORTRAN são linguagens de programação padrão da indústria para as quais muitos compiladores e interpretadores comerciais podem ser usados para criar código executável. A Figura 2 ilustra a imagem executável 100 depois de ter sido conectada a uma imagem executável 200. Observa-se que a imagem executável 200 pode compreender os mesmos tipos de objetos de dados que os descritos acima em relação à imagem executável 100. Uma função do validador 204 é verificar a autenticidade das imagens executáveis, tais como a imagem executável 100 e a imagem executável 200, depois das imagens terem sido carregadas para a memória 108 . 0 processo para verificar a autenticidade das imagens executáveis é apresentado em detalhe com referência às Figuras 5 e 6. Contudo, em resumo, o validador 204 analisa a imagem executável 100 antes da imagem executável 100 ser carregada para a memória 108 e gera uma assinatura digital de referência em relação à imagem executável 100. Depois da imagem executável 100 ser carregada, o validador 204 gera uma assinatura digital de autenticidade para garantir que a imagem executável 100 não foi adulterada. Além disso, o validador 204 examina a conexão entre a imagem executável 100 e a imagem executável 200 para garantir que a conexão entre a imagem executável 100 não foi indevidamente redirecionada para outra imagem executável. A Figura 3 é um diagrama de blocos que ilustra em maior detalhe a estrutura interna de uma modalidade da imagem executável 100 que foi construída como uma biblioteca dinamicamente conectada e que foi armazenada no dispositivo de armazenamento 105 (Figura 1). A imagem executável 100 inclui diversas seções que incluem uma seção de cabeçalho 300, uma seção de código 304, uma seção de dados 308, uma tabela de importação 312, uma tabela de re-alocação 316 e uma tabela de exportação 320. Observa-se também que a imagem executável 100 inclui diversos ponteiros que são descritos em maior detalhe abaixo. Contudo, geralmente, um ponteiro é uma referência que identifica uma localização dentro da memória 108 quer absolutamente em relação à memória 108 (Figura 1) ou relativamente em relação a outra localização. A seção de cabeçalho 300 identifica a localização relativa de outras seções e/ou tabelas que estão dentro da imagem executável 100. A seção de código 304 inclui o código de máquina compilado para a imagem executável 100. Por exemplo, a seção de código 304 inclui as instruções de máquina para o computador 90 (Figura 1) . Como mostrado na Figura 3, a seção de código 304 inclui instruções que se referem a outras seções dentro da imagem executável 100 assim como fora da imagem executável 100. Como mostrado por um bloco 320, a seção de código 304 inclui instruções para a atribuição do número "2" a uma variável global "i" .
Contudo, o endereço real da variável "i" como armazenada no dispositivo de armazenamento 105 (Figura 1) não está definido na memória 108, uma vez que a imagem executável 100 ainda não foi carregada para a memória 108 (Figura 1). Além disso, a seção de código 304 inclui uma instrução para chamar uma função foo(). A chamada para o procedimento foo() inclui um ponteiro de importação que se refere a uma localização dentro da tabela de importação 312. A seção de dados 308 é usada para armazenar os teores de quaisquer variáveis globais que são identificadas na seção de código 3 04. A tabela de importação 312 inclui diversos itens de informações para auxiliar o carregador do programa 208 (Figura 2) na conexão da imagem executável 100 a outra imagem executável. A tabela de importação 312 inclui: um identificador, tal como um nome, para cada um dos procedimentos que são mantidos por outras imagens executáveis, o nome da imagem executável e um ou mais ponteiros externos que se referem aos endereços de procedimentos mantidos externamente. A tabela de importação 312, uma vez que está armazenada no dispositivo de armazenamento 105 (Figura 1), não se refere ainda ao endereço da memória do procedimento foo(). A tabela de re-alocação 316 identifica a posição de cada uma das porções da seção de código 3 04 que necessita de "reparo" depois do carregamento da imagem executável 100. O termo reparo como usado aqui refere-se ao processo de modificação da imagem executável 100 na memória de modo que quaisquer ponteiros não-resolvidos se refiram aos dados e/ou localizações de código adequados. Depois que o ponteiro for reparado pelo carregador do programa 208, ele será "fronteira" de um endereço selecionado. A tabela de exportação 320 identifica cada um dos procedimentos que são tornados publicamente disponíveis pela imagem executável 100. Observa-se que a imagem executável 100 pode incluir outras informações tais como informações de depuração ou outras tabelas para auxiliar no processo de carregamento e/ou conexão. O validador 204 (Figura 2) determina uma assinatura digital de referência em relação à imagem executável 100 quando é armazenada no dispositivo de armazenamento 105. 0 processo para gerar a assinatura de referência é descrito em maior detalhe em relação à Figura 6. Em uma modalidade da invenção, o validador 204 determina a assinatura digital de referência em relação a toda a imagem executável 100 excluindo quaisquer ponteiros que necessitem reparo pelo carregador do programa 208 (Figura 2). Em outra modalidade da invenção, o validador 204 determina uma assinatura digital de referência em relação a seções selecionadas, tais como a seção de código 304 e/ou a tabela de importação 312 da imagem executável 100 excluindo qualquer dos endereços que necessitam reparo pelo carregador do programa 208 . A Figura 4 é um diagrama de blocos que ilustra a imagem executável 100 depois de ter sido reparada em relação à imagem executável 200. Como pode ser visto por inspeção da Figura 4, um ponteiro de dados para a variável "i" foi unido a um endereço na seção de dados 308 de acordo com as informações de reparo contidas dentro da tabela de re-alocação 316. Além disso, um ponteiro externo na tabela de importação 312 foi unido a uma tabela de exportação na imagem executável 200. Um ponteiro de exportação no endereço referenciado na tabela de exportação da segunda imagem executável 200 foi unido â localização real do procedimento foo() que reside dentro da imagem executável 200.
Depois de ser reparado, o validador 204 (Figura 2) realiza diversas verificações de autenticidade em relação à imagem executável 100. Cada uma das verificações de autenticidade é descrita em maior detalhe em relação às Figuras 5 e 6. Contudo, em resumo, o validador 204 realiza as funções descritas a seguir.
Primeiro, o validador 204 determina uma assinatura digital de autenticidade em relação aos mesmos endereços que foram usados para gerar a assinatura digital de referência. Se a assinatura digital de autenticidade diferir da assinatura digital de referência, o validador 2 04 (Figura 2) considera que a imagem executável 10 0 foi adulterada.
Segundo, o validador 2 04 examina cada uma das conexões na tabela de importação 312 para garantir que os endereços que são referenciados pela tabela de importação não foram adulterados. Se a tabela de importação 312 for adequadamente modificada, uma chamada de procedimento para uma função selecionada podería ser re-encaminhada para uma rotina não-confiável diferente da rotina pretendida pelo fornecedor da imagem executável 100. Tal rotina não-conf iável podería acidental ou deliberadamente trazer dados falsos ou outros dados nocivos para a imagem executável 100 . A Figura 5 é um fluxograma que ilustra um processo para verificação da autenticidade da imagem executável 100. Começando em um estado 600, o validador 204 (Figura 2) recebe uma solicitação para determinar a autenticidade do módulo executável 100 (Figura 1) . Em uma modalidade da invenção, a solicitação é gerada pelo carregador do programa 208. Em outra modalidade da invenção, a solicitação é gerada pelo sistema operacional 95 (Figura 1). Em ainda outra modalidade da invenção, a solicitação é gerada por uma imagem executável (não mostrada) que se executa no computador 90 (Figura 1). Em ainda outra modalidade da invenção, a solicitação é gerada por uma rotina no validador 204.
Continuando para um estado 604, o validador 204 (Figura 1) identifica cada um dos ponteiros dentro da imagem executável 100 que necessitam reparo. Em uma modalidade da invenção, se a autenticidade de apenas seções selecionadas na imagem executável 100 forem determinadas, o validador 204 identifica apenas aqueles ponteiros que caem dentro das seções selecionadas da imagem executável 100. Por exemplo, o validador 2 04 pode ser configurado para identificar apenas aqueles ponteiros que caem dentro da seção de código 304 (Figura 3) ou da tabela de importação 312 (Figura 3).
Em uma modalidade da invenção, o validador 204 analisa a tabela de re-alocação 316 para identificar cada um destes ponteiros (Figura 3) . Como discutido acima em relação à Figura 3, a tabela de re-alocação 316 identifica a localização de um endereço em relação à base da imagem executável 100. Ao examinar a tabela de re-alocação 316, o validador 204 pode identificar que porções da seção de código 304 são modificadas pelo carregador do programa 208 durante carregamento.
Continuando para um estado 608, o validador 204 (Figura 2) gera uma assinatura digital de referência em relação à imagem executável 100 (Figura 1). Uma assinatura digital como usada aqui é definida para incluir qualquer metodologia para identificação dos teores de um conjunto selecionado de dados. Na sua forma mais simples, uma assinatura digital pode incluir uma cópia completa do conjunto selecionado de dados que vai ser assinado. Contudo, a assinatura digital pode também incluir os resultados de uma função de verificação (hashing) que foi aplicada ao conjunto selecionado de dados. Uma assinatura digital pode ser ainda um certificado digital. Deve ser entendido pelos tecnólogos versados na técnica que pode ser usada uma de qualquer das funções de verificação padrão para gerar a assinatura digital de referência.
Com referência ainda ao estado 608, em uma modalidade da invenção, o validador 204 determina a assinatura digital de referência baseada nos teores da imagem executável total 100 excluindo quaisquer endereços que necessitam reparo pelo carregador do programa 208 (Figura 2)'. Em outra modalidade da invenção, o validador 204 determina uma assinatura digital de referência baseada no teor das seções selecionadas, tais como a seção de código 304 e/ou a tabela de importação 312 excluindo qualquer dos endereços que necessitam reparo pelo carregador do programa 208.
Prosseguindo para um estado 612, o validador 204 (figura 2) armazena a assinatura digital de referência para recuperação posterior. Em uma modalidade da invenção, o validador 204 armazena a assinatura digital de referência no dispositivo de armazenamento 105 (Figura 1) . Em outra modalidade da invenção, o validador 204 armazena a assinatura digital de referência em uma seção selecionada da imagem executável 100, tal como uma tabela de recurso (não mostrada). Em ainda outra modalidade da invenção, a assinatura digital de referência é anexada à imagem executável 100. Em ainda outra modalidade da invenção, a assinatura digital de referência é armazenada em um banco de dados, um servidor da rede, ou em uma rede 122 (Figura 1) . Em ainda outra modalidade da invenção, a assinatura digital de referência é criada antes da imagem executável 100 ser fornecida ao computador 90. Nesta modalidade, a assinatura digital de referência pode ser gerada em qualquer dos modos descritos acima.
Em seguida, em um estado 614, o validador 204 (Figura 2) determina uma assinatura de autenticidade da imagem executável 100 depois, ou antes, da imagem executável 100 ter sido carregada pelo carregador do programa 2 08 para a memória 108 (Figura 2). Nesta etapa, o validador 204 reaplica a função de verificação que foi aplicada pelo validador 204 durante o estado 608. O validador 204 pode ser configurado para determinar a assinatura digital de autenticidade depois da ocorrência de uma ou mais condições selecionadas, tais como: a expiração de um cronômetro, um teste próprio de autenticidade da imagem executável 100, um tempo inativo do computador 90 (Figura 1), ou depois de uma solicitação da imagem executável 100.
Continuando para um estado de decisão 618, o validador 204 (Figura 2) determina se a assinatura digital de referência (gerada no estado 608) coincide com a assinatura digital de autenticidade (gerada no estado 614). Se a assinatura digital de referência não coincidir com a assinatura digital de autenticidade, o validador 204 prossegue para um estado 622, em que o validador 204 inicia um alerta de segurança. No estado 622, o validador 204 pode realizar diversas funções tais como: descarregar a imagem executável 100, carregar uma nova cópia da imagem executável 100 a partir do armazenamento 105 (Figura 1) para a memória 108 (Figura 1), carregar uma nova versão da imagem executável 100 a partir da rede 122, apagar a imagem executável 100 do armazenamento 105, exibir um alerta para um usuário que reside no computador 90 (Figura 1), transmitir uma mensagem de erro para um computador remoto (não mostrado) através da rede 122, ou desfazer uma ou mais ações realizadas pela imagem executável 100.
Com referência novamente ao estado de decisão 618, se o validador 204 (Figura 2) determinar que a assinatura digital de referência coincide com a assinatura digital de autenticidade, o validador 204 prossegue para um estado final 624. Dependendo da modalidade, o validador 204 (Figura 2) pode retornar ao estado 614 para determinar novamente a assinatura digital de autenticidade depois da ocorrência das condições selecionadas. A Figura 6 é um fluxograma que ilustra outro processo realizado pelo validador 204 da Figura 2 durante uma verificação de autenticidade de uma das imagens executáveis mostradas na Figura 2. O processo realizado pela Figura 6 é distinto do processo realizado pela Figura 5 e pode ser realizado isoladamente ou combinado com os processos realizados pela Figura 5. Em particular, a Figura 6 ilustra um processo para verificação de que cada um dos ponteiros na imagem executável está unido a uma localização adequada. O texto a seguir descreve um processo de verificação de autenticidade em relação a ponteiros de importação na seção de código 304 e ponteiros de exportação na tabela de importação 312 da imagem executável 100. Contudo, deve ser entendido pelos tecnólogos versados na técnica que um processo similar pode ser utilizado em relação a outros tipos de ponteiros na imagem executável 100.
Começando em um estado 700, o validador 2 04 (Figura 2) recebe uma solicitação para determinar a autenticidade do módulo executável 10 0 (Figura 1) . Em uma modalidade da invenção, o solicitador é o carregador do programa 208 (Figura 2). Em outra modalidade da invenção, o solicitador é o sistema operacional 95 (Figura 1) . Em ainda outra modalidade da invenção, o solicitador é uma imagem executável (não mostrada) que se executa no computador 90 (Figura 1) . Em ainda outra modalidade da invenção, o solicitador é uma rotina dentro do validador 204. A solicitação pode ainda ser iniciada por um dos solicitadores depois da ocorrência de uma ou mais condições selecionadas que incluem: a expiração de um cronômetro, a detecção de um tempo inativo em relação ao computador 90 (Figura 1), e/ou antes da execução de uma ação crítica, tal como uma transação bancária.
Continuando para um estado 704, o validador 204 (Figura 2) identifica cada um dos ponteiros de importação na seção de código 304. Em uma modalidade da invenção, o validador 204 analisa a tabela de re-alocação 316 para identificar cada ura destes ponteiros de importação (Figura 3) .
Em seguida, em um estado 708, o validador 204 (Figura 2) examina cada um dos ponteiros de importação na seção de código 320 para determinar se cada um dos ponteiros de importação está unido a localizações que estão dentro da tabela de importação 312. Neste estado, em uma modalidade da invenção, o validador 204 lê o cabeçalho 300 para determinar o endereço de início e fim da tabela de importação 312.
Se cada um dos ponteiros de importação não está unido a uma localização que esteja dentro da tabela de importação 312 (Figura 3), o validador 204 (Figura 2) prossegue para um estado 714 em que o validador 2 04 inicia um alerta de segurança. No estado 714, o validador 204 pode realizar diversas funções tais como: descarregar a imagem executável 100, carregar uma nova cópia da imagem executável 100 a partir do armazenamento 105 (Figura 1) para a memória 108 (Figura 1) , carregar uma nova cópia da imagem executável 100, apagar a imagem executável 100 do armazenamento 105, exibir um alerta para um usuário que reside no computador 90 (Figura 1) , transmitir uma mensagem de erro para um computador remoto (não mostrado) através da rede 122, ou desfazer uma ou mais ações realizadas pela imagem executável 100. 0 fluxograma desloca-se para um estado final 715 e termina.
Com referência agora ao estado de decisão 712, se o validador 204 (Figura 2) determinar que cada um dos ponteiros de importação dentro da seção de código 304 está unido à tabela de importação 312 (Figura 3) , o validador 204 prossegue para um estado 716. No estado 716, o validador 204 identifica cada um dos ponteiros externos na tabela de importação 312.
Prosseguindo para um estado 720, o validador 204 (Figura 2) determina as localizações de união dos ponteiros externos na tabela de importação 312 (Figura 2) . Em uma modalidade da invenção, o validador 204 armazena as localizações de união em uma tabela de ponteiros externos (não mostrada) que é mantida pelo validador 204.
Continuando para um estado de decisão 722, o validador 204 determina se as localizações de união dos ponteiros externos residem dentro de uma das imagens executáveis identificadas pela tabela de importação 312 (Figura 2) . Para conveniência de descrição, as imagens executáveis identificadas pela tabela de importação 312 são coletivamente denominadas imagens executáveis de exportação.
Em uma modalidade da invenção, o validador 204 chama o sistema operacional 95 (Figura 1) para determinar as localizações das imagens executáveis de exportação dentro da memória 108 (Figura 1). Por exemplo, o Windows 95 fornece uma chamada de procedimento denominada "GetModuleHandle()" que retorna o endereço base de uma imagem executável dado o nome da imagem executável. Ao utilizar o endereço base, o validador 204 pode identificar localizações do cabeçalho assim como outras seções das imagens executáveis de exportação.
Ainda com referência ao estado 722, se o validador 204 determinar que cada um dos ponteiros externos não está unido às imagens executáveis de exportação, o validador 204 prossegue para o estado 714 que é descrito em maior detalhe abaixo. Contudo, se o validador 204 determinar que cada um dos ponteiros externos está unido às imagens executáveis de exportação, o validador 204 prossegue para o estado final 715 e termina.
Vantajosamente, a presente invenção permite a verificação estática, dinâmica e durante execução da autenticidade de imagens executáveis e não necessita de alterações tanto para a fonte como para o código do objeto de uma imagem executável. A presente invenção garante que uma imagem executável é autêntica e não foi adulterada depois de ter sido carregada. Depois de uma assinatura digital de referência ser determinada, o validador 204 pode subseqüentemente gerar uma assinatura digital de autenticidade para garantir que o objeto de dados não foi modificado. O validador 204 pode ainda determinar se cada um dos ponteiros na imagem executável foi unido a uma localização correta.
Por exemplo, em relação a um ponteiro de dados na seção de código 304, o validador 204 pode verificar a tabela de re-alocação 316 para garantir que o ponteiro de dados se refira a uma localização dentro da seção de dados 308. Por exemplo, em relação a um ponteiro externo na tabela 312, o validador 204 pode ainda garantir que o ponteiro externo se refira a uma imagem executável confiável, cujo nome é incluído na tabela de importação 312. Uma vez que o nome da imagem executável não é modificado pelo carregador do programa 2 08 (Figura 2) , o validador 204 pode garantir que o nome de uma imagem executável confiável não mudou pelo uso das assinaturas digitais de referência e de autenticidade.
Embora a descrição detalhada acima tenha mostrado, descrito e apontado novos aspectos da invenção quando aplicada a diversas modalidades, deve ser entendido por aqueles versados na técnica que podem ser realizadas diversas omissões, substituições e alterações na forma e detalhes do dispositivo ou processo ilustrado sem divergir do espírito da invenção. 0 âmbito da invenção é indicado pelas reivindicações apensas ao invés de pela descrição precedente. Todas as alterações que se enquadrem dentro do significado e faixa de equivalência das reivindicações devem ser abarcadas pelo seu âmbito.
REIVINDICAÇÕES

Claims (19)

1. Sistema para determinar a autenticidade de uma imagem executável (100), o sistema caracterizado por compreender: uma imagem executável (100) que tem um ou mais ponteiros que necessitam reparo por um carregador de programa (208); e um validador (204) capaz de gerar em um primeiro instante fixo uma assinatura digital de referência baseada em um teor selecionado a partir da imagem executável que exclui cada um dos ponteiros, em que o validador (204) gera uma assinatura digital de autenticidade em um segundo instante baseada no teor selecionado a partir da imagem executável que exclui cada um dos ponteiros, e em que o validador (204) determina se a assinatura digital de referência coincide com a assinatura digital de autenticidade para determinar a autenticidade da imagem executável (100).
2. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que a assinatura digital de referência está armazenada dentro da imagem executável (100) .
3. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que a assinatura digital de referência está armazenada em uma rede (122).
4. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que a assinatura digital de referência está armazenada em um banco de dados (118) .
5. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que a assinatura digital de referência está armazenada no validador (204) .
6. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o primeiro instante é anterior à imagem executável (100) que está sendo processada por um carregador do programa (208) e em que o segundo instante é subsequente à imagem executável (100) que está sendo processada pelo carregador do programa (208) .
7. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o primeiro instante é anterior à imagem executável (100) que está sendo processada por um carregador do programa (208) e em que o segundo instante é anterior à imagem executável (100) que está sendo processada pelo carregador do programa (208) .
8. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o primeiro instante é subsequente à imagem executável (100) que está sendo processada por um carregador do programa (208) e em que o segundo instante é subsequente à imagem executável (100) que está sendo processada pelo carregador do programa (208) .
9. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o validador (204) gera um aviso depois da determinação de que a assinatura digital de referência não coincide com a assinatura digital de autenticidade.
10. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o validador (204) gera um aviso para uma fonte da imagem executável (100) depois da determinação de que a assinatura digital de referência não coincide com a assinatura digital de autenticidade.
11. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o validador (204) gera um aviso para uma fonte do validador (204) depois da determinação de que a assinatura digital de referência não coincide com a assinatura digital de autenticidade.
12. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o teor selecionado compreende uma seção de código e um ou mais dos ponteiros que se referem a uma tabela de importação (312) que está na imagem executável (100) .
13. Sistema de acordo com a Reivindicação 1, caracterizado pelo fato de que o teor selecionado compreende uma tabela de importação (312) e um ou mais dos ponteiros que se referem a um endereço em outra imagem executável (200).
14. Método de determinação da autenticidade de uma imagem executável (100), o método caracterizado por compreender: identificar uma ou mais localizações dentro da imagem executável (100), cada uma das localizações identificadas sendo modificada por um carregador do programa (208); gerar uma assinatura digital de referência baseada no teor selecionado da imagem executável (100) que exclui as uma ou mais localizações identificadas; gerar uma assinatura digital de autenticidade baseada no teor selecionado da imagem executável (100) que exclui as uma ou mais localizações identificadas; e determinar se a assinatura digital de referência coincide com a assinatura digital de autenticidade para determinar a autenticidade da imagem executável (100).
15. Método de acordo com a Reivindicação 14, caracterizado por compreender adicionalmente a geração de um aviso depois da determinação de que a assinatura digital de autenticidade não coincide com a assinatura digital de referência.
16. Método de acordo com a Reivindicação 14, caracterizado por compreender adicionalmente a geração de um aviso para um provedor da imagem executável depois da determinação de que a assinatura digital de autenticidade não coincide com a assinatura digital de referência.
17. Método de acordo com a Reivindicação 14, caracterizado pelo fato de que o teor selecionado inclui toda a imagem executável (100) .
18. Método de acordo com a Reivindicação 14, caracterizado pelo fato de que o teor selecionado compreende uma seção de código ma máquina.
19. Método de acordo com a Reivindicação 14, caracterizado pelo fato de que o conteúdo selecionado compreende uma tabela de importação (312) que reside na imagem executável (100) .
BRPI0017287A 2000-07-25 2000-07-25 sistema e método de determinação da autenticidade de uma imagem executável BRPI0017287B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2000/020182 WO2002008873A1 (en) 2000-07-25 2000-07-25 System and method of verifying the authenticity of dynamically connectable executable images

Publications (2)

Publication Number Publication Date
BR0017287A BR0017287A (pt) 2003-06-24
BRPI0017287B1 true BRPI0017287B1 (pt) 2016-11-01

Family

ID=21741611

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0017287A BRPI0017287B1 (pt) 2000-07-25 2000-07-25 sistema e método de determinação da autenticidade de uma imagem executável

Country Status (10)

Country Link
EP (1) EP1303802B1 (pt)
JP (1) JP4698925B2 (pt)
KR (1) KR100752067B1 (pt)
CN (2) CN1222854C (pt)
AU (2) AU6371500A (pt)
BR (1) BRPI0017287B1 (pt)
CA (1) CA2416304C (pt)
HK (2) HK1057115A1 (pt)
MX (1) MX237690B (pt)
WO (1) WO2002008873A1 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2391965B (en) * 2002-08-14 2005-11-30 Messagelabs Ltd Method of, and system for, heuristically detecting viruses in executable code
US8037515B2 (en) 2003-10-29 2011-10-11 Qualcomm Incorporated Methods and apparatus for providing application credentials
JP4451884B2 (ja) 2004-02-05 2010-04-14 キングス インフォメーション アンド ネットワーク コンピュータ保安装置、コンピュータ保安方法、及び記録媒体
US7559091B2 (en) * 2004-06-12 2009-07-07 Microsoft Corporation Software obfuscation
JP4430715B2 (ja) * 2004-06-29 2010-03-10 サムスン エレクトロニクス カンパニー リミテッド インターネットプロトコルマルチメディアサブシステムにおけるパケット呼サービスに関連する制御メッセージを送受信する方法及び装置
US8156488B2 (en) * 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
CA2606981C (en) * 2005-05-05 2016-09-06 Certicom Corp. Retrofitting authentication onto firmware
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
WO2011142095A1 (ja) * 2010-05-13 2011-11-17 パナソニック株式会社 情報処理装置および情報処理方法
US8543841B2 (en) * 2011-06-30 2013-09-24 Oracle International Corporation Secure hosted execution architecture
KR101630214B1 (ko) 2015-01-19 2016-06-14 김종근 전지의 기능검사용 클램핑 장치
WO2019084908A1 (en) 2017-11-03 2019-05-09 Nokia Technologies Oy Method and apparatus for trusted computing
JP7262269B2 (ja) * 2019-03-27 2023-04-21 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
JP4166437B2 (ja) * 2001-01-31 2008-10-15 株式会社日立製作所 真正性出力方法及びその実施装置並びにその処理プログラム

Also Published As

Publication number Publication date
CA2416304C (en) 2010-11-30
KR20030045015A (ko) 2003-06-09
WO2002008873A1 (en) 2002-01-31
CN1454338A (zh) 2003-11-05
JP2004505343A (ja) 2004-02-19
CA2416304A1 (en) 2002-01-31
CN1222854C (zh) 2005-10-12
EP1303802A1 (en) 2003-04-23
BR0017287A (pt) 2003-06-24
CN1722091A (zh) 2006-01-18
HK1083653A1 (en) 2006-07-07
AU6371500A (en) 2002-02-05
HK1057115A1 (en) 2004-03-12
JP4698925B2 (ja) 2011-06-08
MX237690B (es) 2006-06-12
AU2000263715B2 (en) 2004-11-04
CN100394385C (zh) 2008-06-11
EP1303802B1 (en) 2013-01-16
KR100752067B1 (ko) 2007-08-28
MXPA03000727A (es) 2004-03-26

Similar Documents

Publication Publication Date Title
US6802006B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
US7650504B2 (en) System and method of verifying the authenticity of dynamically connectable executable images
US6978018B2 (en) Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
EP1577767B1 (en) Code rewriting
TWI363296B (en) Technique for providing secure firmware
US9336018B2 (en) Mechanism for class data sharing using extension and application class-loaders
US6851108B1 (en) Verifying intermediate language code
US6415435B1 (en) Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning
US7694300B2 (en) Inter-process interference elimination
US8082542B2 (en) Load time in-lining of subroutines
BRPI0017287B1 (pt) sistema e método de determinação da autenticidade de uma imagem executável
US9208292B2 (en) Entering a secured computing environment using multiple authenticated code modules
US20080178194A1 (en) Integrating Non-Compliant Providers of Dynamic Services into a Resource Management infrastructure
JP2000517085A (ja) 安全な装置アドレス指定のための装置および方法
US20080163375A1 (en) Embedding and patching integrity information in a program file having relocatable file sections
Male et al. Java bytecode verification for@ NonNull types
KR100728517B1 (ko) 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
JP2007128537A (ja) 動的に接続可能な実行イメージの真正性検証システム及び方法
RU2258252C2 (ru) Система и способ проверки подлинности динамически подключаемых исполняемых образов
EP1669854A2 (en) Inter-process interference elimination
US8843888B2 (en) Characterizing artificiality in object code
Gal et al. Integrated Java Bytecode Verification
NATIONAL INST OF STANDARDS AND TECHNOLOGY GAITHERSBURG MD Ada Compiler Validation Summary Report: Certificate Number 891201S1. 10211 US Navy Ada. L, Version 2.0 (NO OPTIMIZE Option) VAX 8550 and VAX 11/785 Hosts and AN/UYK-43 Target
NATIONAL INST OF STANDARDS AND TECHNOLOGY GAITHERSBURG MD Ada Compiler Validation Summary Report: Certificate Number 891201S1. 10212 US Navy Ada/L, Version 2.0 (/OPTIMIZE Option) VAX 8550 and VAX 11/785 Hosts and AN/UYK-43 Target
Pearce et al. Java Bytecode Verification for@ NonNull Types

Legal Events

Date Code Title Description
B07A Technical examination (opinion): publication of technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: INDEFIRO O PEDIDO DE ACORDO COM O ARTIGO 8O COMBINADO COM ARTIGO 13 DA LPI

B12B Appeal: appeal against refusal
B16A Patent or certificate of addition of invention granted

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 01/11/2016, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time
B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2472 DE 22-05-2018 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.