BRPI0114066B1 - sistema e método de assinatura de código - Google Patents

sistema e método de assinatura de código Download PDF

Info

Publication number
BRPI0114066B1
BRPI0114066B1 BRPI0114066A BR0114066A BRPI0114066B1 BR PI0114066 B1 BRPI0114066 B1 BR PI0114066B1 BR PI0114066 A BRPI0114066 A BR PI0114066A BR 0114066 A BR0114066 A BR 0114066A BR PI0114066 B1 BRPI0114066 B1 BR PI0114066B1
Authority
BR
Brazil
Prior art keywords
signature
software application
access
apis
digital signature
Prior art date
Application number
BRPI0114066A
Other languages
English (en)
Other versions
BR0114066A (pt
Inventor
David P Yach
Herbert A Little
Michael S Brown
Original Assignee
Blackberry Ltd
Research In Motion Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=27398521&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0114066(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Blackberry Ltd, Research In Motion Ltd filed Critical Blackberry Ltd
Publication of BR0114066A publication Critical patent/BR0114066A/pt
Publication of BRPI0114066B1 publication Critical patent/BRPI0114066B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • 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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing
    • 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/321Cryptographic 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 involving a third party or a trusted authority
    • 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
    • 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/3247Cryptographic 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 involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/067Network architectures or network communication protocols for network security for supporting key management in a packet data network using one-time keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Circuits Of Receivers In General (AREA)
  • Electrotherapy Devices (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Container Filling Or Packaging Operations (AREA)

Abstract

"sistema e método de assinatura de código". um sistema e método de assinatura de código são fornecidos. o sistema de assinatura de código opera em conjunto com uma aplicação de software assinada tendo um uma assinatura digital e inclui uma plataforma de aplicação, uma interface de programação de aplicação (api), e uma máquina virtual. a api é configurada para enlaçar a aplicação de software com a plataforma de aplicação. a máquina virtual verifica a autenticidade da assinatura digital para controlar o acesso à api pela aplicação de software.

Description

SISTEMA E MÉTODO DE ASSINATURA DE CÓDIGO
REFERÊNCIA CRUZADA A APLICAÇÕES RELACIONADAS
[001] Esta aplicação reivindica prioridade e está relacionada às seguintes aplicações anteriores: "Code Signing System and Method" (Sistema e método de assinatura de código), Pedido provisório de Patente dos Estados Unidos número 60/234.152, requerida em 21 de setembro de 2000; "Code Signing System and Method" (Sistema e método de assinatura de código), Pedido provisório de Patente dos Estados Unidos número 60/235.354, requerido em 26 de setembro de 2000; e "Code Signing System and Method" (Sistema e método de assinatura de código), Pedido provisório de Patente dos Estados Unidos número 60/270.663, requerida em 20 de fevereiro de 2001.
HISTÓRICO DA INVENÇÃO 1.CAMPO DA INVENÇÃO
[002] Esta invenção relaciona-se genericamente ao campo de protocolos de segurança para aplicações de software. Mais particularmente, a invenção fornece um sistema e método de assinatura de código que é particularmente bem adequado para aplicações Java™ para dispositivos de comunicação móveis, como Assistentes Digitais Pessoais, telefones celulares, e dispositivos de comunicação bilaterais sem fio (coletivamente referidos doravante como "dispositivos móveis" ou simplesmente "dispositivos").
2.DESCRIÇÃO DA TÉCNICA RELACIONADA
[003] Protocolos de segurança envolvendo esquemas de assinatura de código de software são conhecidos. Tipicamente, esses protocolos de segurança são utilizados para assegurar a confiabilidade de aplicações de software que são baixadas da Internet. Em um tipico esquema de assinatura de código de software, a assinatura digital é afixada a uma aplicação de software que identifica o desenvolvedor do software. Uma vez baixado o software pelo usuário, o usuário precisa tipicamente utilizar seu julgamento para determinar se a aplicação de software é ou não confiável, com base unicamente em seu conhecimento da reputação do desenvolvedor do software. Este tipo de esquema de assinatura de código não assegura que a aplicação de software escrita por terceiros para um dispositivo móvel interagirá apropriadamente com as aplicações nativas do dispositivo e com outros recursos. Dado que os protocolos de assinatura de código típicos não são seguros e dependem unicamente no julgamento do usuário, há um grave risco de que aplicações de software destrutivas, do tipo "Trojan horse" possam ser baixadas e instaladas em um dispositivo móvel.
[004] Também permanece a necessidade de operadores de rede terem um sistema e um método para manter o controle sobre quais aplicações de software são ativadas nos dispositivos móveis.
[005] Permanece uma outra necessidade em redes 2,5G e 3G em que clientes corporativos ou operadores de rede gostariam de controlar os tipos de software nos dispositivos emitidos para seus empregados.
SUMÁRIO DA INVENÇÃO
[006] São fornecidos um sistema e um método de assinatura de código. O sistema de assinatura de código opera em conjunto com uma aplicação de software tendo uma assinatura digital e inclui uma plataforma de aplicação, uma interface de programação de aplicação (API), e uma máquina virtual. A API é configurada para ligar a aplicação de software à plataforma de aplicação. A máquina virtual verifica a autenticidade da assinatura digital para controlar o acesso à API pela aplicação de software.
[007] Um sistema de assinatura de código para operação em conjunto com uma aplicação de software tendo uma assinatura digital, de acordo com outra versão da invenção compreende uma plataforma de aplicação, uma pluralidade de APIs, cada uma delas configurada para ligar a aplicação de software a um recurso na plataforma de aplicação, e uma máquina virtual que verifica a autenticidade da assinatura digital para controlar o acesso à API pela aplicação de software, em que a máquina virtual verifica a autenticidade da assinatura digital para controlar o acesso à pluralidade de APIs pela aplicação de software.
[008] De acordo com uma outra versão da invenção, o método de controlar o acesso a interfaces de programação de aplicação sensíveis em um dispositivo móvel compreende as etapas de carregar uma aplicação de software no dispositivo móvel que requer acesso a uma API sensível, determinar se a aplicação de software inclui ou não uma assinatura digital associada à API sensível, e se a aplicação de software não inclui a assinatura digital associada à API sensível, então negar acesso pela aplicação de software à API sensível.
[009] Em outra versão da invenção, o método de controlar o acesso a uma interface de programação de aplicação (API) em um dispositivo móvel por uma aplicação de software criada por um desenvolvedor de software compreende as etapas de receber a aplicação de software do desenvolvedor de software, revisar a aplicação de software para determinar se ela pode acessar a API, se a aplicação de software pode acessar a API, então apensar uma assinatura digital à aplicação de software, verificar a autenticidade de uma assinatura digital apensa a uma aplicação de software, e fornecer acesso à API para aplicações de software para as quais a assinatura digital apensa é autêntica.
[010] Um método de restringir acesso a uma API sensivel em um dispositivo móvel, de acordo com outra versão da invenção, compreende as etapas de registrar um ou mais desenvolvedores de software que são confiados para projetar aplicações de software que acessam a API sensivel, receber um número aleatório de uma aplicação de software, determinar se a aplicação de software foi projetada por um dos desenvolvedores de software registrados, e se a aplicação de software foi projetada por um dos desenvolvedores de software registrados, então gerar uma assinatura digital utilizando o número aleatório da aplicação de software, em que a assinatura digital pode ser apensa à aplicação de software, e o dispositivo móvel verifica a autenticidade da assinatura digital para controlar o acesso à API sensivel pela aplicação de software.
[011] Em ainda outra versão, o método de restringir acesso a interfaces de programação de aplicação em um dispositivo móvel compreende as etapas de carregar a aplicação de software no dispositivo móvel que requer acesso a uma ou mais APIs, determinar se a aplicação inclui ou não uma assinatura digital associada ao dispositivo móvel, e se a aplicação de software não inclui uma assinatura digital associada ao dispositivo móvel, então negar à aplicação de software acesso à uma ou mais APÍs.
BREVE DESCRIÇÃO DOS DESENHOS A Figura 1 é um diagrama que ilustra um protocolo de assinatura de código de acordo com uma versão da invenção. A Figura 2 é um fluxograma do protocolo de assinatura de código descrito acima com referência à Figura 1. A Figura 3 é um diagrama de blocos de um sistema de assinatura de código em um dispositivo móvel. A Figura 3A é um diagrama de blocos de um sistema de assinatura de código em uma pluralidade de dispositivos móveis. A Figura 4 é um fluxograma que ilustra a operação do sistema de assinatura de código descrita acima com referência à Figura 3 e à Figura 3A.
A Figura 5 é um fluxograma que ilustra o gerenciamento das autoridades de assinatura de código descrita com referência à Figura 3A. E A Figura 6 é um diagrama de blocos de um dispositivo de comunicação móvel em que o sistema e o método de assinatura de código podem ser implementados.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[012] Com referência agora aos desenhos das figuras, a Figura 1 é um diagrama que ilustra um protocolo de assinatura de código de acordo com uma versão da invenção. Um desenvolvedor de aplicação 12 cria uma aplicação de software 14 (aplicação Y) para um dispositivo móvel que requer acesso a uma ou mais APIs sensíveis no dispositivo móvel. A aplicação de software Y 14 poderá, por exemplo, ser uma aplicação Java que opera em uma máquina virtual Java instalada no dispositivo móvel. Uma API permite que a aplicação de software Y faça interface com uma plataforma de aplicação que poderá incluir, por exemplo, recursos como o hardware do dispositivo, sistema operacional e software de cerne e modelos de dados. Para fazer chamadas de função ou de outra forma interagir com esses recursos do dispositivo, a aplicação de software Y precisa acessar uma ou mais APIs. APIs, portanto, podem efetivamente servir de "ponte" entre a aplicação de software e os recursos do dispositivo associados. Nesta descrição e nas reivindicações apensas, referências ao acesso à API devem ser interpretadas como incluindo acesso a uma API de modo tal a permitir que a aplicação de software Y interaja com um ou mais recursos correspondentes do dispositivo. O fornecimento de acesso a qualquer API, assim, permite que a aplicação de software Y interaja com recursos de dispositivo associados, enquanto negar acesso a uma API impede que a aplicação de software Y interaja com os recursos associados. Por exemplo, a API de base de dados poderá comunicar-se com um arquivo de dispositivo ou sistema de armazenamento de dados, e o acesso à API de base de dados proveria a interação entre a aplicação de software Y e o arquivo ou o sistema de armazenamento de dados. A API de interface de usuário (UI) comunicar-se-ia com controladoras e/ou software de controle para esses componentes do dispositivo como uma tela, um teclado, e qualquer outro componente do dispositivo que fornece saida para o usuário ou aceitam entrada do usuário. Em um dispositivo móvel, uma API de rádio também pode ser fornecida como uma interface para os recursos de comunicação sem fio como o transmissor e o receptor. De modo similar, uma API criptográfica pode ser fornecida para interagir com um módulo criptográfico que implementa algoritmos criptográficos em um dispositivo. Esses são meramente exemplos ilustrativos de APIs que podem ser fornecidas em um dispositivo. O dispositivo pode incluir qualquer uma dessas APIs de exemplo, ou APIs diferentes no lugar ou em acréscimo àquelas descritas acima.
[013] Preferivelmente, qualquer API poderá ser classificada como sensivel pelo fabricante do dispositivo móvel, ou possivelmente pelo autor da API, o operador de rede sem fio, o proprietário ou operador do dispositivo, ou alguma outra entidade que poderá ser afetada por um virus ou código malicioso em uma aplicação de software do dispositivo. Por exemplo, o fabricante do dispositivo móvel poderá classificar como sensíveis aquelas APIs que fazem interface com rotinas criptográficas, funções de comunicação sem fio, ou modelos de dados proprietários como livro de endereço ou entradas de calendário. Para proteger contra acesso não autorizado a essas APIs sensíveis, o desenvolvedor de aplicação 12 é obrigado a obter uma ou mais assinaturas digitais do fabricante do dispositivo móvel ou de outra entidade que classificou quaisquer APIs como sensíveis, ou de uma autoridade de assinatura de código 16 agindo em prol do fabricante ou outra entidade com um interesse em proteger o acesso a APIs de dispositivo sensíveis, e apensar as assinaturas na aplicação de software Y 14.
[014] Em uma versão, a assinatura digital é obtida para cada API sensível ou biblioteca que inclui uma API sensível à qual a aplicação de software necessita acessar. Em alguns casos, múltiplas assinaturas são desejáveis. Isso permitiría ao provedor de serviço, empresa ou operador de rede limitar algumas ou a totalidade de aplicações de software carregadas ou atualizadas sobre um conjunto particular de dispositivos móveis. Neste cenário de assinaturas múltiplas, todas as APIs são restringidas e travadas até que uma assinatura "global" seja verificada para uma aplicação de software. Por exemplo, uma empresa poderá desejar impedir seus empregados de executar qualquer aplicação de software em seus dispositivos sem obter permissão de um departamento de tecnologia de informação empresarial (IT) ou de serviços de computador. Todos esses dispositivos móveis da empresa podem então ser configurados para exigir a verificação de pelo menos uma assinatura global antes da aplicação de software poder ser executada. Acesso a APIs e bibliotecas sensíveis do dispositivo, se houver, podería então ser ainda mais restringida, dependendo da verificação das respectivas assinaturas digitais correspondentes.
[015] A representação executável binária da aplicação de software Y 14 poderá ser independente do tipo particular de dispositivo móvel ou modelo de um dispositivo móvel. A aplicação de software Y 14 poderá, por exemplo, estar em um formato binário do tipo escrever-uma-vez-e-processar-em-qualquer-lugar como é o caso com as aplicações de software Java. No entanto, poderá ser desejável ter uma assinatura digital para cada tipo ou modelo de dispositivo móvel, ou alternativamente, para cada plataforma ou fabricante do dispositivo móvel. Portanto, a aplicação de software Y 14 poderá ser submetida a várias autoridades de assinatura de código se a aplicação de software Y 14 for dirigida para vários dispositivos móveis.
[016] A aplicação de software Y 14 é enviada do desenvolvedor da aplicação 12 para a autoridade de assinatura de código 16. Na versão mostrada na Figura 1, a autoridade de assinatura de código 16 revisa a aplicação de software Y 14, embora conforme descrito em maior detalhe abaixo, é contemplado que a autoridade de assinatura de código 16 poderá também, ou em vez de, considerar a identidade do desenvolvedor da aplicação 12 para determinar se a aplicação de software Y 14 deve ser assinada, ou não. A autoridade de assinatura de código 16 é preferivelmente um ou mais representantes do fabricante do dispositivo móvel, os autores de quaisquer APIs sensíveis, ou possivelmente outros que tenham conhecimento da operação de APIs sensíveis aos quais a aplicação de software necessita acesso.
[017] Se a autoridade de assinatura de código 16 determina que a aplicação de software Y 14 poderá acessar a API sensível e, portanto, deve ser assinada, então uma assinatura (não mostrada) para a aplicação de software Y 14 é gerada pela autoridade de assinatura de código 16 e apensada à aplicação de software Y 14. A aplicação de software Y assinada 22, compreendendo a aplicação de software Y 14 e a assinatura digital, é então devolvida ao desenvolvedor da aplicação 12. A assinatura digital é preferivelmente um rótulo que é gerado utilizando uma chave de assinatura privada 18 mantida unicamente pela autoridade de assinatura de código 16. Por exemplo, de acordo com um esquema de assinatura, um número aleatório da aplicação de software Y 14 poderá ser gerado, utilizando um algoritmo de números aleatórios como o Secure Hash Algorithm SHA1, e depois utilizado com a chave de assinatura privada 18 para criar a assinatura digital. Em alguns esquemas de assinatura, a chave de assinatura privada é utilizada para criptografar um número aleatório de informação a ser assinado, como a aplicação de software Y 14, enquanto em outros esquemas, a chave privada poderá ser utilizada de outras maneiras para gerar uma assinatura da informação a ser assinada ou uma versão transformada da informação.
[018] A aplicação de software Y assinada 22 poderá então ser enviada para um dispositivo móvel 28 ou baixada pelo dispositivo móvel 28 por uma rede sem fio 24. No entanto, deve ser compreendido que o protocolo de assinatura de código de acordo com a presente invenção não é limitado a aplicações de software que são baixadas por uma rede sem fio. Por exemplo, em versões alternativas, a aplicação de software Y assinada 22 poderá ser baixada para um computador pessoal através de uma rede de computador e carregado no dispositivo móvel através de um enlace serial, ou poderá ser adquirido do desenvolvedor de aplicação 12 de qualquer outra maneira e carregado no dispositivo móvel. Uma vez carregada a aplicação de software Y assinada 22 no dispositivo móvel 28, cada assinatura digital é preferivelmente verificada com uma chave de assinatura pública 20 antes da aplicação de software Y 14 ter acesso concedido a uma biblioteca de API sensivel. Embora a aplicação de software Y assinada 22 é carregada em um dispositivo, deve ser apreciado que a aplicação de software que poderá eventualmente ser executada no dispositivo é a aplicação de software Y 14. Como foi descrita acima, a aplicação de software Y assinada 22 inclui a aplicação de software Y 14 e uma ou mais assinaturas digitais apensas (não mostradas). Quando as assinaturas são verificadas, a aplicação de software Y 14 pode ser executada no dispositivo e acessar quaisquer APIs para as quais assinaturas correspondentes tenham sido verificadas.
[019] A chave de assinatura pública 20 corresponde à chave de assinatura privada 18 mantida pela autoridade de assinatura de código 16, e é preferivelmente instalada no dispositivo móvel juntamente com a API sensivel. No entanto, a chave pública 10 poderá, em vez disso, ser obtida de um depositário de chave pública (não mostrado), utilizando o dispositivo 28 ou possivelmente um sistema de computador pessoal, e instalada no dispositivo 28 conforme necessário. De acordo com uma versão de um esquema de assinatura, o dispositivo móvel 28 calcula um número aleatório da aplicação de software Y 14 na aplicação de software Y assinada 22, utilizando o mesmo algoritmo de números aleatórios que a autoridade de assinatura de código 16, e utiliza a assinatura digital e a chave de assinatura pública 20 para recuperar o número aleatório calculado pela autoridade de assinatura 16. O número aleatório calculado localmente resultante e o número aleatório recuperado da assinatura digital são então comparados, e se os números são o mesmo, a assinatura está verificada. A aplicação de software Y 14 pode então ser executada no dispositivo 28 e acessar quaisquer APIs sensíveis para as quais a assinatura correspondente tenha sido verificada. Como foi descrita acima, a invenção não está de modo algum limitada a este esquema particular de assinatura de exemplo ilustrativo. Outros esquemas de assinatura, incluindo outros esquemas de assinatura de chave pública, também poderão ser utilizados em conjunto com os métodos e sistemas de assinatura de código aqui descritos.
[020] A Figura 2 é um fluxograma 30 do protocolo de assinatura de código descrito acima com referência à Figura 1. O protocolo inicia na etapa 32. Na etapa 34, o desenvolvedor de software escreve a aplicação de software Y para um dispositivo móvel que requer acesso a uma API sensivel ou biblioteca que expõe a API sensível (biblioteca A de API) . Como foi discutido acima, parte ou a totalidade de APIs em um dispositivo móvel poderá ser classificada como sensível, assim exigindo verificação de uma assinatura digital para acesso por qualquer aplicação de software como a aplicação de software Y. Na etapa 36, a aplicação Y é testada pelo desenvolvedor de software, preferivelmente utilizando um simulador de dispositivo em que a função de verificação da assinatura digital foi desativada. Desta maneira, o desenvolvedor de software poderá depurar a aplicação de software Y antes da assinatura digital ser adquirida da autoridade de assinatura de código. Uma vez escrita e deputada a aplicação de software Y, ela é encaminhada para a autoridade de assinatura de código na etapa 38.
[021] Nas etapas 40 e 42, a autoridade de assinatura de código revisa a aplicação de software Y para determinar se ela deve ou não ser dada acesso à API sensível, e aceita ou rejeita a aplicação de software. A autoridade de assinatura de código poderá aplicar um número de critérios para determinar se concede ou não à aplicação de software acesso à API sensível incluindo, por exemplo, o tamanho da aplicação de software, os recursos de dispositivo acessados pela API, a utilidade percebida da aplicação de software, a interação com outras aplicações de software, a inclusão de um vírus ou outro código destrutivo, e se o desenvolvedor tem ou não uma obrigação contratual ou outro arranjo empresarial com o fabricante do dispositivo móvel. Outros detalhes do gerenciamento de autoridades de assinatura de código e de desenvolvedores estão descritos abaixo com referência à Figura 5.
[022] Se a autoridade de assinatura de código aceita a aplicação de software Y, então uma assinatura digital, e preferivelmente uma identificação de assinatura, são apensadas na aplicação de software Y na etapa 46. Como foi descrita acima, a assinatura digital pode ser gerada pela utilização de um número aleatório da aplicação de software Y e uma chave de assinatura privada 18. A identificação da assinatura é descrita abaixo com referência às Figuras 3 e 4. Uma vez apensas a assinatura digital e a identificação da assinatura na aplicação de software Y para gerar uma aplicação de software assinada, a aplicação de software Y assinada é devolvida ao desenvolvedor de software na etapa 48. O desenvolvedor de software poderá então licenciar a aplicação de software Y assinada para ser carregada em um dispositivo móvel (etapa 50). No entanto, se a autoridade de assinatura de código rejeita a aplicação de software Y, então uma notificação de rejeição é preferivelmente enviada para o desenvolvedor de software (etapa 44), e a aplicação de software Y será incapaz de acessar quaisquer APIs associados à assinatura.
[023] Em uma versão alternativa, o desenvolvedor de software poderá fornecer à autoridade de assinatura de código apenas um número aleatório da aplicação de software Y, ou fornecer a aplicação de software Y em algum tipo de formato resumido. Se a aplicação de software Y for uma aplicação Java, então os arquivos *.class binários independentes de dispositivo podem ser utilizados na operação de número aleatório, embora arquivos dependentes de dispositivos como os arquivos *.cod utilizados pelo designado da presente aplicação poderão ser utilizados na numeração aleatória ou outra operação de assinatura digital quando as aplicações de software são dirigidas para operação em dispositivos particular ou tipos de dispositivos. Ao fornecer apenas um número aleatório ou versão resumida da aplicação de software Y, o desenvolvedor de software poderá ter a aplicação de software Y assinada sem revelar código proprietário para a autoridade de assinatura de código. O número aleatório da aplicação de software Y, juntamente com a chave de assinatura privada 18, poderá então ser utilizado pela autoridade de assinatura de código para gerar a assinatura digital. Se uma versão de outra forma resumida da aplicação de software Y é enviada para a autoridade de assinatura de código, então a versão resumida poderá de modo similar ser utilizada para gerar a assinatura digital, desde que o esquema ou algoritmo de resumo, como o algoritmo de número aleatório, gera saidas diferentes para entradas diferentes.
Isto assegura que cada aplicação de software terá uma versão resumida diferente e assim uma assinatura diferente que pode apenas ser verificada quando apensada à aplicação de software correspondente em particular da qual a versão resumida foi gerada. No entanto, como esta versão não permite que a autoridade de assinatura de código revise com profundidade a aplicação de software por virus ou outro código destrutivo, o processo de registro entre o desenvolvedor de software e a autoridade de assinatura de código também poderá ser necessário. Por exemplo, a autoridade de assinatura de código poderá concordar com antecedência em fornecer a um desenvolvedor de software confiável acesso a um conjunto limitado de APIs sensíveis.
[024] Em ainda outra versão alternativa, a aplicação de software Y poderá ser submetida a mais de uma autoridade de assinatura. Por exemplo, cada autoridade de assinatura poderá ser responsável por assinar aplicações de software para APIs sensíveis em particular ou APIs em um modelo particular de dispositivo móvel ou conjunto de dispositivos móveis que suportam as APIs sensíveis exigidas pela aplicação de software. Por exemplo, o fabricante, o operador da rede de comunicação móvel, o provedor de serviço ou o cliente corporativo, poderá assim ter autoridade de assinatura sobre a utilização de APIs sensíveis para seu modelo de dispositivo móvel em particular, ou os dispositivos móveis que operam em determinada rede, assinando a um ou mais serviços particulares, ou distribuída para empregados da empresa. Uma aplicação de software assinada poderá então incluir uma aplicação de software e pelo menos uma assinatura digital apensa apensada de cada uma das autoridades de assinatura. Muito embora essas autoridades de assinatura neste exemplo estariam gerando uma assinatura para a mesma aplicação de software, diferentes esquemas de assinatura e de verificação de assinatura poderão ser associados a diferentes autoridades de assinatura.
[025] A Figura 3 é um diagrama de blocos de um sistema de assinatura de código 60 em um dispositivo móvel 62. O sistema 60 inclui uma máquina virtual 64, uma pluralidade de aplicações de software 66-70, uma pluralidade de bibliotecas API 72-78, e uma plataforma de aplicação 80. A plataforma de aplicação 80 preferivelmente inclui todos os recursos do dispositivo móvel 62 que poderão ser acessados pelas aplicações de software 66-70. Por exemplo, a plataforma de aplicação poderá incluir hardware de dispositivo 82, o sistema operacional do dispositivo móvel 84, ou software de cerne e modelos de dados 86. Cada biblioteca API 72-78 preferivelmente inclui uma pluralidade de APIs que fazem interface com um recurso disponível na plataforma de aplicação. Por exemplo, uma biblioteca API pode incluir todas as APIs que fazem interface com um programa de calendário e modelos de dados de entrada de calendário. Outra biblioteca API pode incluir todas as APIs que fazem interface com o circuito de transmissão e funções do dispositivo móvel 62. Ainda outra biblioteca API pode incluir todas as APIs capazes de fazer interface com serviços de nível mais baixo efetuados pelo sistema operacional do dispositivo móvel 84. Além disso, a pluralidade de bibliotecas API 72-78 podem incluir tanto bibliotecas que expõem uma API sensível 7 4 e 78, como a interface para uma função criaptográfica, como bibliotecas 72 e 76 que podem ser acessadas sem expor APIs sensíveis. De modo similar, a pluralidade de aplicações de software 66-70 poderá incluir tanto aplicações de software assinadas 66 e 70 que exigem acesso a uma ou mais APIs sensíveis, e aplicações de software não assinadas como 68. A máquina virtual 64 é preferivelmente um ambiente de run-time orientado ao objeto como o J2ME™ (Java 2 Platform, Micro Edition) da SunMicro System, que gerencia a execução de todas as aplicações de software 66-70 que operam no dispositivo móvel 62, e liga as aplicações de software 66-70 às várias bibliotecas API 72-78.
[026] A aplicação de software Y 70 é um exemplo de uma aplicação de software assinada. Cada aplicação de software assinada preferivelmente inclui uma aplicação de software real como a aplicação de software Y que, por exemplo, compreende código de software que pode ser executado na plataforma de aplicação 80, uma ou mais identificações de assinatura 94 e uma ou mais assinaturas digitais correspondentes 96. Preferivelmente, cada assinatura digital 96 e identificação de assinatura associada 94 em uma aplicação de software assinada 66 ou 70 corresponde a uma biblioteca API sensível 74 ou 78 a qual a aplicação de software X ou a aplicação de software Y requer acesso. A biblioteca API sensível 74 ou 78 poderá incluir uma ou mais APIs sensíveis. Em uma versão alternativa, as aplicações de software assinadas 66 e 70 poderão incluir uma assinatura digital 96 para cada API sensível dentro da biblioteca API 74 ou 78. As identificações de assinatura 94 podem ser integrais singulares ou algum outro meio de relacionar uma assinatura digital 96 a uma biblioteca API especifica 74 ou 7 8, API, plataforma de aplicação 80 ou modelo do dispositivo móvel 62.
[027] A biblioteca API A 7 8 é um exemplo de uma biblioteca API que expõe uma API sensivel. Cada biblioteca API 7 4 e 7 8 que inclui uma API sensivel deve preferivelmente incluir uma cadeia de descrição 88, uma chave de assinatura pública 20, e um identificador de assinatura 92. O identificador de assinatura 92 preferivelmente corresponde a uma identificação de assinatura 94 em uma aplicação de software assinada 66 ou 70, e permite que a máquina virtual 64 case rapidamente uma assinatura digital 96 com a biblioteca API 74 ou 78. A chave de assinatura pública 20 corresponde à chave de assinatura privada 18 mantida pela autoridade de assinatura de código, e é utilizada para verificar a autenticidade da assinatura digital 96. A cadeia de descrição 88 pode, por exemplo, ser uma mensagem de texto que é exibida no dispositivo móvel quando uma aplicação de software assinada 66 ou 70 é carregada, ou alternativamente quando a aplicação de software X ou Y tenta acessar uma API sensivel.
[028] Operacionalmente, quando a aplicação de software assinada 68-70, respectivamente incluindo uma aplicação de software X, Z ou Y, que requer acesso a uma biblioteca API sensivel 74 ou 78 é carregada em um dispositivo móvel, a máquina virtual 64 pesquisa a aplicação de software assinada por uma assinatura digital apensa 96 associada a uma biblioteca API 74 ou 78. Preferivelmente, a assinatura digital apropriada 96 é localizada pela máquina virtual 64 ao casar o identificador de assinatura 92 na biblioteca API 74 ou 78 com a identificação de assinatura 94 na aplicação de software assinada. Se a aplicação de software assinada inclui a assinatura digital apropriada 96, então a máquina virtual 64 verifica sua autenticidade utilizando a chave de assinatura pública 20. Então, uma vez que a assinatura digital apropriada 96 foi localizada e verificada, a cadeia de descrição 88 é preferivelmente exibida no dispositivo móvel antes da aplicação de software X ou Y é executada e acessa a API sensivel. Por exemplo, a cadeia de descrição 88 pode exibir uma mensagem dizendo que "A Aplicação Y está tentando acessar a Biblioteca API A". e assim fornecer ao usuário do dispositivo móvel o controle final para conceder ou negar acesso à API sensivel.
[029] A Figura 3A é um diagrama de blocos de um sistema de assinatura de código 61 em uma pluralidade de dispositivos móveis 62E, 62F e 62G. O sistema 61 inclui uma pluralidade de dispositivos móveis cada um dos quais apenas três são ilustradas, os dispositivos móveis 62E, 62F e 62G. Também mostrada é uma aplicação de software assinada 70, que inclui uma aplicação de software Y a qual duas assinaturas digitais 96E e 96F com as correspondentes identificações de assinaturas 94E e 94F foram apensas. No sistema de exemplo 61, cada par composto de uma assinatura digital e de identificação, 94E/96E e 94F/96F, corresponde a um modelo do dispositivo móvel 62, biblioteca API 78 ou plataforma 80 associada. Se as identificações de assinatura 94E e 94F correspondem a modelos diferentes do dispositivo móvel 62, então quando uma aplicação de software assinada 70 que inclui a aplicação de software Y que requer acesso a uma biblioteca API sensível 78 é carregada no dispositivo móvel 62E, a máquina virtual 64 busca na aplicação de software assinada 70 por uma assinatura digital 96E associada à biblioteca API 78 ao casar o identificador 94E com o identificador de assinatura 92. De modo similar, quando uma aplicação de software assinada 70 que inclui uma aplicação de software Y que requer acesso a uma biblioteca API sensível 78 é carregada em um dispositivo móvel 62F, a máquina virtual 64 no dispositivo 62F busca a aplicação de software assinada 70 pela assinatura digital 96F associada à biblioteca API 78. No entanto, quando a aplicação de software Y em uma aplicação de software assinada 70 que requer acesso a uma biblioteca API sensível 78 é carregada em um modelo de dispositivo móvel para o qual o desenvolvedor de aplicação não obteve uma assinatura digital, o dispositivo 62G no exemplo da Figura 3A, a máquina virtual 64 no dispositivo 64G não encontra a assinatura digital apensa à aplicação de software Y e, conseqüentemente, acesso à biblioteca API 78 é negado no dispositivo 62G. Deve ser apreciado da descrição anterior que uma aplicação de software como a aplicação de software Y pode ter múltiplas assinaturas específicas de dispositivo, específicas de biblioteca, ou específicas de API ou alguma combinação dessas assinaturas a ela apensa. De modo similar, diferentes requisitos de verificação de assinatura podem ser configurados para os dispositivos diferentes. Por exemplo, o dispositivo 62E pode exigir a verificação tanto de uma assinatura global, bem como assinaturas adicionais para quaisquer APIs sensíveis aos quais a aplicação de software requer acesso para que a aplicação de software seja executada, enquanto o dispositivo 62F pode exigir a verificação de apenas uma assinatura global e o dispositivo 62G pode exigir a verificação de assinaturas apenas para seus APIs sensíveis. Também deve ser aparente que o sistema de comunicação pode incluir dispositivos (não mostrados) nos quais a aplicação de software Y recebida como parte de uma aplicação de software assinada como 70 pode executar sem qualquer verificação de assinatura. Embora a aplicação de software assinada tem uma ou mais assinaturas a ela apensas, a aplicação de software Y pode possivelmente ser executada em alguns dispositivos sem primeiro ter quaisquer de suas assinaturas verificadas. A assinatura de uma aplicação de software preferivelmente não interfere com sua execução nos dispositivos em que a verificação da assinatura digital não é implementada.
[030] A Figura 4 é um fluxograma 100 que ilustra a operação do sistema de assinatura de código descrito acima com referência às Figuras 3 e 3A. Na etapa 102, a aplicação de software é carregada no dispositivo móvel. Uma vez carregada a aplicação de software, o dispositivo, preferivelmente utilizando uma máquina virtual, determina se a aplicação de software requer ou não acesso a quaisquer bibliotecas API que expõem uma API sensível (etapa 104). Se não, então a aplicação de software é ligada a todas as suas bibliotecas API necessárias e executadas (etapa 118) . No entanto, se a aplicação de software de fato requer acesso a uma API sensível, então a máquina virtual verifica se a aplicação de software inclui uma assinatura digital válida associada a quaisquer APIs sensíveis aos quais acesso é necessário, nas etapas 106-116.
[031] Na etapa 106, a máquina virtual recupera a chave de assinatura pública 20 e o identificador de assinatura 92 da biblioteca API sensível. O identificador de assinatura 92 é então utilizado pela máquina virtual na etapa 108 para determinar se a aplicação tem ou não uma assinatura digital apensa 96 com uma identificação de assinatura 94 correspondente. Se não, então a aplicação de software não foi aprovada para acesso à API sensível por uma autoridade de assinatura de código, e a aplicação de software é preferivelmente impedida de ser executada na etapa 116. Em versões alternativas, a aplicação de software sem uma assinatura digital 96 apropriada pode ser purgada do dispositivo móvel, ou pode ter o acesso negado à biblioteca API expondo a API sensível mas executada no grau possível sem acesso à biblioteca API. Também é contemplado que o usuário poderá ser orientado para uma entrada quando a verificação de assinatura falhar, assim provendo o controle do usuário de operações subseqüentes tais como a purgação da aplicação de software do dispositivo.
[032] Se uma assinatura digital 96 correspondente à biblioteca API sensível é apensada à aplicação de software e localizada pela máquina virtual, então a máquina virtual utiliza a chave pública 20 para verificar a autenticidade da assinatura digital 96 na etapa 110. Esta etapa pode ser efetuada, por exemplo, pela utilização do esquema de verificação de assinatura descrito acima ou outros esquemas de assinatura alternativos. Se a assinatura digital 96 não é autêntica, então a aplicação de software é preferivelmente não executada, purgada, ou restringida de acessar a API sensível conforme descrito acima com referência à etapa 116. No entanto, se a assinatura digital for autêntica, então a cadeia de descrição 88 é preferivelmente exibida na etapa 112, avisando o usuário do dispositivo móvel que a aplicação de software requer acesso a uma API sensível, e possivelmente orientando o usuário pela autorização para executar ou carregar a aplicação de software (etapa 114). Quando mais de uma assinatura é para ser verificada para a aplicação de software, então as etapas 104-110 são preferivelmente repetidas para cada assinatura antes do usuário ser orientado na etapa 112. Se o usuário do dispositivo móvel na etapa 114 autoriza a aplicação de software, então ela pode ser executada e ligada à biblioteca API sensível na etapa 118.
[033] A Figura 5 é um fluxograma 200 que ilustra o gerenciamento das autoridades de assinatura de código descritas com referência à Figura 3A. Na etapa 210, o desenvolvedor de aplicação desenvolveu uma nova aplicação de software que se pretende seja executada em um ou mais modelos ou tipos de dispositivo alvo. Os dispositivos alvo podem incluir conjuntos de dispositivos de fabricantes diferentes, conjuntos de modelos ou tipos de dispositivo do mesmo fabricante, ou geralmente quaisquer conjuntos de dispositivos tendo requisitos particulares de assinatura e de verificação. O termo "dispositivo alvo" refere-se a qualquer desse conjunto de dispositivos tendo um requisito de assinatura comum. Por exemplo, um conjunto de dispositivos que exige verificação de uma assinatura global específica de dispositivo para execução de todas as aplicações de software poderá compreender um dispositivo alvo, e dispositivos que exigem tanto uma assinatura global como outras assinaturas para APIs sensíveis podem ser parte de mais de um conjunto de dispositivos alvo. A aplicação de software poderá ser escrita de maneira independente de dispositivo ao utilizar pelo menos uma API conhecida, suportada em pelo menos um dispositivo alvo, com uma biblioteca API. Preferivelmente, a aplicação de software desenvolvida pretende-se que seja executada em vários dispositivos alvo, cada um dos quais tem sua própria pelo menos uma biblioteca API.
[034] Na etapa 220, a autoridade de assinatura de código para um dispositivo alvo recebe uma solicitação de assinatura de alvo do desenvolvedor. A solicitação de assinatura de alvo inclui a aplicação de software ou o número aleatório da aplicação de software, o identificador do desenvolvedor, bem como pelo menos um identificador do dispositivo alvo que identifica o dispositivo alvo para o qual a assinatura está sendo solicitada. Na etapa 230, a autoridade de assinatura consulta uma base de dados de desenvolvedor 235 ou outro registro para determinar se o desenvolvedor 220 deve ou não ser confiado. Esta determinação pode ser feita de acordo com vários critérios discutidos acima, como se o desenvolvedor tem ou não uma obrigação contratual ou entrou em algum outro tipo de arranjo empresarial com um fabricante de dispositivo, operador de rede, provedor de serviço, ou fabricante de dispositivo. Se o desenvolvedor é confiado, então o método prossegue na etapa 240. No entanto, se o desenvolvedor não é confiado, então a aplicação de software é rejeitada (250) e não assinada pela autoridade de assinatura. Supondo que o desenvolvedor foi confiado, na etapa 240 a autoridade de assinatura determina se ela tem a chave privada alvo correspondente ao identificador alvo submetido ao consultar um armazém de chave privada como a base de dados de chave privada alvo 245. Se a chave privada alvo for encontrada, então uma assinatura digital para a aplicação de software é gerada na etapa 260 e a assinatura digital ou uma aplicação de software assinada que inclui a assinatura digital apensa à aplicação de software é retornada para o desenvolvedor na etapa 280. No entanto, se a chave privada alvo não é encontrada na etapa 240, então a aplicação de software é rejeitada na etapa 270 e nenhuma assinatura digital é gerada para a aplicação de software.
[035] Como vantagem, se as autoridades de assinatura alvo seguem versões compatíveis do método delineado na Figura 5, uma rede de autoridades de assinatura alvo podem ser estabelecidas para gerenciar com eficiência as autoridades de assinatura de código e um processo de assinatura de código da comunidade desenvolvedora fornecer aplicações de software assinadas para múltiplos alvos com baixa probabilidade de código destrutivo.
[036] Caso qualquer código destrutivo ou de outra forma problemático for encontrado na aplicação de software ou suspeitado por causa do comportamento exibido quando a aplicação de software é executada em um dispositivo, então o registro ou privilégios do desenvolvedor de aplicação correspondente com qualquer uma ou todas as autoridades de assinatura também poderão ser suspensos ou revogados, pois a assinatura digital fornece uma trilha de auditoria através da qual o desenvolvedor de uma aplicação de software problemática pode ser identificado. Nesse caso, dispositivos poderão ser informados da revogação ao serem configurados para baixar periodicamente listas de revogação de assinatura, por exemplo. Se as aplicações de software para as quais as assinaturas digitais correspondentes foram revogadas estão processando em um dispositivo, o dispositivo poderá então parar a execução de quaisquer dessas aplicações de software e possivelmente purgar a aplicação de software de seu armazenamento local. Se preferido, dispositivos também poderão ser configurados para re-executar verificações de assinatura digital, por exemplo periodicamente ou quando uma nova lista de revogação é baixada.
[037] Embora a assinatura digital gerada por uma autoridade de assinatura seja dependente da autenticação do desenvolvedor da aplicação e confirmação de que o desenvolvedor da aplicação foi apropriadamente registrado, a assinatura digital é preferivelmente gerada de uma versão de número aleatório ou de uma versão transformada de outra forma da aplicação de software e, portanto, é especifica da aplicação. Isto contraste com esquemas de assinatura de código conhecidos, em que o acesso API é concedido a qualquer aplicação de software que chegue de desenvolvedores ou autores de aplicação confiáveis. Nos sistemas e métodos de assinatura de código aqui descritos, o acesso à API é concedido em base de aplicação-a-aplicação e assim pode ser mais rigidamente controlado ou regulado.
[038] A Figura 6 é um diagrama de blocos de um dispositivo de comunicação móvel em que o sistema e o método de assinatura de código poderão ser implementados. O dispositivo de comunicação móvel 610 é preferivelmente um dispositivo de comunicação bilateral tendo pelo menos capacidades de comunicação de voz e de dados. O dispositivo preferivelmente tem a capacidade de se comunicar com outros sistemas de computador na Internet. Dependendo da funcionalidade fornecida pelo dispositivo, o dispositivo poderá ser referido como um dispositivo de mensagens de dados, um dispositivo de radiochamada bilateral, um telefone celular com capacidades de mensagens de dados, um aparelho de Internet sem fio, ou um dispositivo de comunicação de dados (com ou sem capacidade de telefonia).
[039] Quando o dispositivo 610 é ativado para comunicação bilateral, o dispositivo incorporará um subsistema de comunicação 611, incluindo um receptor 612, um transmissor 614, e componentes associados como um ou mais, preferivelmente embutido ou interno, elementos de antena 616 e 618, osciladores locais (LOs) 613, e um módulo de processamento como um processador de sinal digital (DSP) 620. Como será aparente àqueles habilitados no campo da comunicação, o projeto particular do subsistema de comunicação 611 será dependente da rede de comunicação em que pretende-se que o dispositivo venha a operar. Por exemplo, o dispositivo 610 destinado para um mercado da América do Norte poderá incluir um subsistema de comunicação 611 projetado para operar dentro do sistema de comunicação móvel Mobitex™ ou do sistema de comunicação móvel DataTAC™, enquanto o dispositivo 610 pretendido para utilização na Europa poderá incorporar um subsistema de comunicação de Serviço de Rádio de Pacote Geral (GPRS) 611.
[040] Os requisitos de acesso à rede também variarão dependendo do tipo de rede 919. Por exemplo, nas redes Mobitex e DataTAC, dispositivos móveis como o 610 são registrados na rede utilizando um número de identificação singular associado a cada dispositivo. Contudo, nas redes GPRS, o acesso à rede é associado ao assinante ou usuário de um dispositivo 610. O dispositivo GPRS, portanto, requer um módulo de identidade do assinante (não mostrado), comumente referido como a placa SIM, para operar em uma rede GPRS. Sem a placa SIM, o dispositivo GPRS não será inteiramente funcional. Funções de comunicação local ou não de rede (se houver) podem ser operadas, mas o dispositivo 610 será incapaz de realizar quaisquer funções que envolvem comunicação por rede 619, além de qualquer operação legalmente necessária como a chamada de emergência "911".
[041] Quando os procedimentos necessários de registro de rede ou de ativação foram completados, o dispositivo 610 poderá enviar e receber sinais de comunicação pela rede 619. Sinais recebidos pela antena 616 através de uma rede de comunicação 619 são entrados no receptor 612, que poderá efetuar funções comuns de receptor como amplificação do sinal, conversão descendente de freqüência, filtragem, seleção de canal e assemelhados, e no sistema exemplo mostrado na Figura 6, conversão analógico-digital. A conversão analógico-digital de um sinal recebido permite que funções mais complexas de comunicação como demodulação e decodificação sejam efetuadas no DSP 620. De maneira similar, os sinais a serem transmitidos são processados, incluindo modulação e codificação, por exemplo, pelo DSP 620 e entrados no transmissor 614 para a conversão digital para analógico, conversão ascendente da freqüência, filtragem, amplificação e transmissão pela rede de comunicação 619 através da antena 618.
[042] O DSP 620 não apenas processa os sinais de comunicação, mas também provê o controle do receptor e do transmissor. Por exemplo, os ganhos aplicados aos sinais de comunicação no receptor 612 e no transmissor 614 podem ser controlados adaptativamente através de algoritmos de controle de ganho automáticos implementados no DSP 620.
[043] O dispositivo 610 preferivelmente inclui um microprocessador 638 que controla a operação geral do dispositivo. Funções de comunicação, incluindo pelo menos comunicação de dados e de voz, são efetuadas através do subsistema de comunicação 611. O microprocessador 638 também interage com outros subsistemas do dispositivo ou recursos como a tela 622, memória flash 624, memória de acesso aleatório (RAM) 626, subsistemas de entrada/saida (I/O) auxiliares 628, porta serial 630, teclado 632, alto-falante 634, microfone 636, um subsistema de comunicação de curto alcance 640 e quaisquer outros subsistemas do dispositivo geralmente designados como 642. APIs, incluindo APIs sensíveis que exigem verificação de uma ou mais assinaturas digitais correspondentes antes do acesso ser concedido, podem ser fornecidas no dispositivo 610 para fazer interface entre as aplicações de software e quaisquer dos recursos mostrados na Figura 6.
[044] Alguns dos subsistemas mostrados na Figura 6 efetuam funções relacionadas com comunicação, enquanto outros subsistemas podem fornecer funções no dispositivo ou "residentes". Notadamente, alguns subsistemas, como o teclado 632 e a tela 622, por exemplo, podem ser utilizados tanto para funções relacionadas com comunicação, como entrar uma mensagem de texto para transmissão por uma rede de comunicação, e funções residentes no dispositivo como uma calculadora ou uma lista de tarefas.
[045] O software do sistema operacional utilizado pelo microprocessador 638, e possivelmente APIs a serem acessadas pelas aplicações de software, é preferivelmente armazenada em um armazenamento persistente como a memória flash 624, que, em vez disso, pode ser uma memória de apenas leitura (ROM) ou elemento de armazenamento similar (não mostrado). Aqueles habilitados na tecnologia apreciarão que o sistema operacional, aplicações de software especificas de dispositivo, ou partes das mesmas, podem ser temporariamente carregadas dentro de um armazenamento volátil como a RAM 626. É contemplado que os sinais de comunicação recebidos e transmitidos também podem ser armazenados na RAM 626.
[046] O microprocessador 638, além de suas funções de sistema operacional, preferivelmente ativa a execução de aplicações de software no dispositivo. Um conjunto predeterminado de aplicações que controlam operações de dispositivo básicas, incluindo pelo menos aplicações de comunicação de dados e de voz, por exemplo, normalmente serão instaladas no dispositivo 610 durante a fabricação. Uma aplicação preferida que pode ser carregada no dispositivo pode ser uma aplicação de gerente de informação pessoal (PIM) tendo a capacidade de organizar e gerenciar itens de dados relacionados ao usuário do dispositivo como, sem a eles se limitar, correspondência eletrônica, eventos de calendário, correspondências de voz, compromissos, e itens de tarefas. Naturalmente, um ou mais armazéns de memória estariam disponíveis no dispositivo para facilitar o armazenamento dos itens de dados PIM no dispositivo. Essa aplicação PIM preferivelmente teria a capacidade de enviar e de receber itens de dados, através da rede sem fio. Em uma versão preferida, os itens de dados PIM são integrados sem falhas, sincronizados e atualizados, através da rede sem fio, com os itens de dados correspondentes do usuário do dispositivo armazenados ou associados a um sistema de computador hospedeiro assim criando um computador hospedeiro espelhado no dispositivo móvel com relação aos itens de dados pelo menos. Isto seria especialmente vantajoso no caso em que o sistema de computador hospedeiro é o sistema de computador de escritório do usuário do dispositivo móvel. Outras aplicações, incluindo aplicações de software assinadas conforme foi descrito acima, também podem ser carregadas no dispositivo 610 através da rede 619, um subsistema de E/O auxiliar 628, a porta serial 630, o subsistema de comunicação de curto alcance 640 ou qualquer outro subsistema adequado 642. O microprocessador do dispositivo 638 pode então verificar quaisquer assinaturas digitais, possivelmente incluindo tanto as assinaturas de dispositivo "globais" como as assinaturas específicas da API, apensas à tal aplicação de software antes da aplicação de software poder ser executada pelo microprocessador 638 e/ou acessar quaisquer APIs sensíveis associadas. Essa flexibilidade na instalação da aplicação aumenta a funcionalidade do dispositivo e poderá fornecer funções no dispositivo aprimoradas, funções relacionadas a comunicações, ou as duas. Por exemplo, aplicações de comunicação segura podem permitir funções de comércio eletrônico e outras transações financeiras dessas a serem efetuadas utilizando o dispositivo 610, através de uma API criptográfica e um módulo criptográfico que implementa algoritmos de criptografia no dispositivo (não mostrado).
[047] Em um modo de comunicação de dados, o sinal recebido como a mensagem de texto ou a baixa de página da Web será processada pelo subsistema de comunicação 611 e entrado no microprocessador 638, que preferivelmente ainda processará o sinal recebido para saida para a tela 622, ou alternativamente para um dispositivo de 1/0 auxiliar 628. O usuário do dispositivo 610 também poderá compor itens de dados como mensagens de correio eletrônico, por exemplo, utilizando o teclado 632, que é preferivelmente um teclado alfanumérico completo ou um teclado do tipo telefone, em conjunto com a tela 622 e possivelmente um dispositivo de E/S auxiliar 628. Esses itens compostos poderão então ser transmitidos por uma rede de comunicação através do subsistema de comunicação 611.
[048] Para a comunicação de voz, a operação geral do dispositivo 610 é similar, exceto que os sinais recebidos preferivelmente seriam emitidos para um alto-falante 634 e os sinais para transmissão seriam gerados por um microfone 636. Subsistemas de E/S de voz ou de áudio alternativos como o subsistema de gravação da mensagem de voz também podem ser implementados no dispositivo 610. Embora a saida do sinal de voz ou de áudio é preferivelmente efetuada principalmente através do alto-falante 634, a tela 622 também pode ser utilizada para fornecer uma indicação da identidade de uma parte a chamar, a duração de uma chamada de voz, ou outra informação relacionada com a chamada de voz, por exemplo.
[049] A porta serial 630 na Figura 6 normalmente seria implementada em um dispositivo de comunicação do tipo assistente digital pessoal (PDA) para o qual sincronização com o computador de mesa do usuário (não mostrado) poderá ser desejável, mas é um componente de dispositivo opcional. Essa porta 630 permitiría ao usuário fixar preferências através de um dispositivo externo ou aplicação de software e estendería as capacidades do dispositivo ao prover informação ou baixas de software para o dispositivo 610 sem ser através de uma rede de comunicação sem fio. A via de baixa alternativa, por exemplo, poderá ser utilizada para carregar uma chave criptográfica no dispositivo através de uma conexão direta e assim confiável para assim permitir comunicação de dispositivo segura.
[050] Um subsistema de comunicação de curto alcance 640 é um outro componente opcional que poderá prover comunicação entre o dispositivo 624 e diferentes sistemas ou dispositivos, que não precisam necessariamente ser dispositivos similares. Por exemplo, o subsistema 640 poderá incluir um dispositivo infra-vermelho e circuitos e componentes associados ou um módulo de comunicação Bluetooth™ para prover comunicação com sistemas e dispositivos ativados de modo similar.
[051] As versões aqui descritas são exemplos de estruturas, sistemas ou métodos tendo elementos que correspondem aos elementos da invenção recitada nas reivindicações. Esta descrição escrita poderá possibilitar àqueles versados na técnica fazer e utilizar versões tendo elementos alternativos que da mesma forma correspondem aos elementos da invenção recitada nas reivindicações. O escopo pretendido da invenção assim inclui outras estruturas, sistemas ou métodos que não diferem da linguagem literal das reivindicações, e ainda inclui outras estruturas, sistemas ou métodos com diferenças não substanciais da linguagem literal das reivindicações.
[052] Por exemplo, quando uma aplicação de software é rejeitada na etapa 250 no método mostrado na Figura 5, a autoridade de assinatura poderá solicitar que o desenvolvedor assine um contrato ou entre em um entendimento empresarial com o fabricante de dispositivo ou outra entidade em prol de quem a autoridade de assinatura age. De modo similar, se uma aplicação de software é rejeitada na etapa 270, a autoridade para assinar a aplicação do software pode ser delegada a uma autoridade de assinatura diferente. A assinatura de uma aplicação de software após a delegação da assinatura da aplicação de software para a autoridade diferente pode prosseguir conforme é mostrado na Figura 5, em que a autoridade de assinatura alvo que receber a solicitação original do desenvolvedor de confiança na etapa 220 solicita que a aplicação de software seja assinada pela autoridade de assinatura diferente em prol do desenvolvedor de confiança da autoridade de assinatura alvo. Uma vez estabelecida a relação de confiança entre as autoridades de assinatura de código, chaves de assinatura de código privado alvo poderiam ser partilhadas entre autoridades de assinatura de código para melhorar o desempenho do método na etapa 240, ou o dispositivo pode ser configurado para validar assinaturas digitais de qualquer uma das autoridades de assinatura de confiança.
[053] Além disso, embora descritos principalmente no contexto de aplicações de software, os sistemas e métodos de assinatura de código de acordo com a presente invenção também podem ser aplicados a outros componentes relacionados ao dispositivo, incluindo, mas de modo algum limitado a tal, comandos e argumentos de comando associados, e bibliotecas configuradas para fazer interface com os recursos do dispositivo. Esses comandos e bibliotecas podem ser enviados para os dispositivos móveis pelos fabricantes do dispositivo, proprietários do dispositivo, operadores de rede, provedores de serviço, desenvolvedores de aplicação de software e assemelhados. Seria desejável controlar a execução de qualquer comando que possa afetar a operação do dispositivo, como o comando para mudar o código de identificação do dispositivo ou o endereço de rede de comunicação sem fio, por exemplo, ao exigir a verificação de uma ou mais assinaturas digitais antes do comando poder ser executado no dispositivo, de acordo com os sistemas e métodos de assinatura de código descritos e aqui reivindicados.
REIVINDICAÇÕES

Claims (108)

1. Sistema de assinatura de código para operação em conjunto com uma aplicação de software assinado com uma assinatura digital e uma identificação da assinatura externa a um dispositivo móvel em que a assinatura digital é associada à identificação da assinatura, caracterizado por compreender: uma plataforma de aplicação no dispositivo móvel; uma interface de programação de aplicação (API) configurada para ligar a aplicação de software no dispositivo móvel com a plataforma de aplicação no dispositivo móvel, a aplicação de software sendo assinada com a assinatura digital que foi previamente associada com a API; e uma máquina virtual no dispositivo móvel que verifica a autenticidade da assinatura digital para controlar o acesso à API pela aplicação de software em que o identificador da assinatura corresponde à identificação da assinatura.
2 . Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da máquina virtual negar o acesso da aplicação de software à API se a assinatura digital não for autenticada.
3. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da máquina virtual purgar a aplicação de software se a assinatura digital não for autenticada.
4 . Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da assinatura digital ser gerada por uma autoridade de assinatura de código .
5. Sistema de assinatura de código para operação em conjunto com uma aplicação de software assinada com uma assinatura digital e uma identificação da assinatura externa a um dispositivo móvel em que a assinatura digital é associada à identificação da assinatura, caracterizado por compreender: uma plataforma de aplicação no dispositivo móvel; uma pluralidade de interfaces de programação de aplicação (API) associada a uma assinatura digital, cada uma delas configurada para ligar a aplicação de software no dispositivo móvel com um recurso na plataforma de aplicação na qual a assinatura digital é associada com a API, e a aplicação de software assinada com a assinatura digital; e uma máquina virtual no dispositivo móvel que verifica a autenticidade da assinatura digital para controlar o acesso à API pela aplicação de software em que a identificação da assinatura corresponde ao identificador da assinatura, em que a máquina virtual verifica a autenticidade da assinatura digital para controlar o acesso à pluralidade de APIs pela aplicação de software, em que se a assinatura digital não for verificada, a aplicação de software é purgada, não executada ou restringida de acessar a API.
6. Sistema de assinatura de código, de acordo com a reivindicação 5, caracterizado pelo fato da pluralidade de APIs ser incluída em uma biblioteca API.
7 . Sistema de assinatura de código, de acordo com a reivindicação 5, car acter i zado pelo fato de uma ou mais APIs da pluralidade de APIs ser classificada como sensível e ter um identificador de assinatura associado, e da máquina virtual utilizar a assinatura digital e a identificação de assinatura para controlar o acesso às APIs sensíveis.
8. Sistema de assinatura de código, de acordo com a reivindicação 7, caracterizado pelo fato do sistema de assinatura de código operar em conjunto com uma pluralidade de aplicações de software, em que uma ou mais aplicações de software da pluralidade de aplicações de software tem uma assinatura digital e uma identificação de assinatura, e da máquina virtual verificar a autenticidade da assinatura digital de cada uma das uma ou mais aplicações de software da pluralidade de aplicações de software, onde a identificação da assinatura corresponde ao identificador da assinatura das respectivas APIs sensíveis, para controlar o acesso às APIs sensíveis por cada uma da pluralidade de aplicações de software.
9. Sistema de assinatura de código, de acordo com a reivindicaçãoó, caracteri zado pelo fato do recurso da plataforma de aplicação compreender um sistema de comunicação sem fio.
10. Sistema de assinatura de código, de acordo com a reivindicação 5, caracterizado pelo fato do recurso da plataforma de aplicação compreender um módulo criptográfico que implementa algoritmos de criptografia.
11. Sistema de assinatura de código, de acordo com a reivindicação 5, caracterizado pelo fato do recurso na plataforma de aplicação compreender um armazém de dados.
12 . Sistema de assinatura de código, de acordo com a reivindicação 5, caracterizado pelo fato do recurso na plataforma de aplicação compreender uma interface de usuário (UI).
13. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado por compreender ainda: uma pluralidade de bibliotecas API, cada uma da pluralidade de bibliotecas API inclui uma pluralidade de APIs, em que a máquina virtual controla o acesso à pluralidade de bibliotecas API pela aplicação de software.
14 . Sistema de assinatura de código, de acordo com a reivindicação 13, caracterizado pelo fato de pelo menos uma biblioteca API da pluralidade de bibliotecas API ser classificada como sensivel, em que o acesso a uma biblioteca API sensivel requer uma assinatura digital associada a uma identificação de assinatura em que a identificação de assinatura corresponde a um identificador de assinatura associado à biblioteca API sensivel; em que a aplicação de software inclui pelo menos uma assinatura digital e pelo menos uma identificação de assinatura associada para acessar bibliotecas API sensíveis; e em que a máquina virtual autentica a aplicação de software para acessar a biblioteca API sensível ao verificar a uma assinatura digital incluída na aplicação de software que tem uma identificação de assinatura que corresponde ao identificador de assinatura da biblioteca API sensível.
15. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada, e da máquina virtual utilizar uma chave de assinatura pública para verificar a autenticidade da assinatura digital.
16. Sistema de assinatura de código, de acordo com a reivindicação 15, caracterizado pelo fato de: a assinatura digital ser gerada pela aplicação da chave de assinatura privada a um número aleatório da aplicação de software; e a máquina virtual verifica a autenticidade da assinatura digital ao gerar um número aleatório da aplicação de software para obter o número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter o número aleatório recuperado, e comparar o número aleatório gerado ao número aleatório recuperado.
17. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da API ainda compreender: uma cadeia de descrição que é exibida pelo dispositivo móvel quando a aplicação de software tentar acessar a API.
18. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da plataforma de aplicação compreender um sistema operacional.
19. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da plataforma de aplicação compreender uma ou mais funções de cerne de um dispositivo móvel.
20. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da plataforma de aplicação compreender hardware em um dispositivo móvel.
21. Sistema de assinatura de código, de acordo com a reivindicação 20, caracterizado pelo fato do hardware compreender uma placa de módulo de identidade do assinante (SIM).
22 . Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da aplicação de software ser uma aplicação Java para o dispositivo móvel.
23. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da API fazer interface com uma rotina criptográfica na plataforma de aplicação.
24. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da API fazer interface com um modelo de dados proprietário na plataforma de aplicação.
25. Sistema de assinatura de código, de acordo com a reivindicação 1, caracterizado pelo fato da máquina virtual ser uma máquina virtual Java instalada em um dispositivo móvel.
26. Método de controlar o acesso a interfaces de programação de aplicação sensíveis em um dispositivo móvel, caracterizado por compreender as etapas de: carregar uma aplicação de software no dispositivo móvel que requer acesso a uma interface de programação de aplicação sensível (API), a aplicação de software é assinada externa ao dispositivo móvel com um identificador de assinatura; determinar se a aplicação de software inclui uma assinatura digital e uma identificação digital; e negar o acesso pela aplicação de software à API sensível quando a identificação de assinatura não corresponde ao identificador da assinatura.
27. Método, de acordo com a reivindicação 26, caracterizado por compreender a etapa adicional de: purgar a aplicação de software do dispositivo móvel quando a identificação da assinatura não corresponder ao identificador da assinatura.
28. Método, de acordo com a reivindicação 26, caracterizado pelo fato da assinatura digital e da identificação da assinatura serem geradas por uma autoridade de assinatura de código.
29. Método, de acordo com a reivindicação 26, caracterizado por compreender as etapas adicionais de: verificar a autenticidade da assinatura digital em que a identificação da assinatura corresponde ao identificador da assinatura; e negar acesso da aplicação de software à API sensivel quando a assinatura digital não for autenticada.
30. Método, de acordo com a reivindicação 29, caracterizado por purgar a aplicação de software do dispositivo móvel quando a assinatura digital não for autenticada.
31. Método, de acordo com a reivindicação 29, caracterizado pelo fato da assinatura digital ser gerada pela aplicação de uma chave de assinatura privada a um número aleatório da aplicação de software, e da etapa de verificar a autenticidade da assinatura digital ser efetuada por um método que compreende as etapas de: armazenar uma chave de assinatura pública que corresponde à chave de assinatura privada no dispositivo móvel; gerar um número aleatório da aplicação de software para obter um número aleatório gerado; aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado; e comparar o número aleatório gerado com o número aleatório recuperado.
32. Método, de acordo com a reivindicação 31, caracterizado pelo fato da assinatura digital ser gerada pelo cálculo de um número aleatório da aplicação de software e a aplicação da chave de assinatura privada.
33. Método, de acordo com a reivindicação 26, caracterizado por compreender a etapa adicional de: exibir uma cadeia de descrição que notifica o usuário do dispositivo móvel que a aplicação de software requer acesso à API sensível.
34. Método, de acordo com a reivindicação 33, caracterizado por compreender a etapa adicional de: receber um comando do usuário concedendo ou negando o acesso da aplicação de software à API sensível.
35. Método de controlar o acesso a uma interface de programação de aplicação (API) em um dispositivo móvel assinado com um identificador de assinatura externo ao dispositivo móvel por uma aplicação de software criada por um desenvolvedor de software, caracterizado por compreender as etapas de: receber a aplicação de software do desenvolvedor de software; determinar se a aplicação de software satisfaz pelo menos um critério; apensar a assinatura digital e a identificação da assinatura à aplicação de software quando a aplicação de software satisfaz pelo menos um critério; verificar a autenticidade da assinatura digital apensa à aplicação de software no dispositivo móvel quando a identificação da assinatura corresponde ao identificador da assinatura; e fornecer acesso para aplicações de software à API quando a assinatura digital é autenticada.
36. Método, de acordo com a reivindicação 35, caracterizado pelo fato da etapa de determinar se a aplicação de software satisfaz pelo menos um critério ser efetuado por uma autoridade de assinatura de código.
37. Método, de acordo com a reivindicação 35, caracterizado pelo fato da etapa de anexar a assinatura digital e a identificação da assinatura à aplicação de software incluir gerar a assinatura digital compreendendo as etapas de: calcular um número aleatório da aplicação de software; e aplicar a chave de assinatura ao número aleatório da aplicação de software para gerar a assinatura digital.
38. Método, de acordo com a reivindicação 37, caracterizado pelo fato do número aleatório da aplicação de software ser calculado utilizando o Algoritmo de Número Aleatório Seguro (SHAl).
39. Método, de acordo com a reivindicação 37, caracterizado pelo fato da etapa de verificar a autenticidade da assinatura digital compreender as etapas de: fornecer uma chave de assinatura correspondente no dispositivo móvel; calcular o número aleatório da aplicação de software no dispositivo móvel para obter um número aleatório calculado; aplicar a chave de assinatura correspondente à assinatura digital para obter um número aleatório recuperado; e autenticar a assinatura digital ao comparar o número aleatório calculado com o número aleatório recuperado.
40. Método, de acordo com a reivindicação 39, caracterizado por compreender a etapa adicional de negar à aplicação de software acesso à API quando a assinatura digital não for autenticada.
41. Método, de acordo com a reivindicação 39, caracterizado pelo fato da chave de assinatura ser uma chave de assinatura privada e da chave de assinatura correspondente ser uma chave de assinatura pública.
42 . Método de controlar o acesso a uma interface de programação de aplicação (API) sensível em um dispositivo móvel assinado com um identificador de assinatura em um dispositivo móvel, caracterizado por compreender as etapas de: registrar um ou mais desenvolvedores de software que são confiáveis para desenvolver aplicações de software que acessem a API sensível; receber um número aleatório de uma aplicação de software; determinar se o número aleatório foi enviado por um desenvolvedor de software registrado; e gerar uma assinatura digital, externa ao dispositivo móvel, utilizando o número aleatório da aplicação de software e uma identificação de assinatura que corresponde ao identificador de assinatura quando o número aleatório foi enviado pelo desenvolvedor de software reqistrado; em que a assinatura digital e a identificação da assinatura são apensadas à aplicação de software; e o dispositivo móvel verifica a autenticidade da assinatura digital associada à API para controlar o acesso à API sensível pela aplicação de software quando a identificação da assinatura corresponde ao identificador da assinatura, em que se a assinatura digital não for verificada, a aplicação de software é purgada, não executada ou restringida de acessar a API.
43. Método, de acordo com a reivindicação 42, caracterizado pelo fato da etapa de gerar a assinatura digital ser efetuada por uma autoridade de assinatura de código.
44. Método, de acordo com a reivindicação 42, caracterizado pelo fato da etapa de gerar a assinatura digital ser efetuada pela aplicação de uma chave de assinatura ao número aleatório da aplicação de software.
45. Método, de acordo com a reivindicação 44, caracterizado pelo fato do dispositivo móvel verificar a autenticidade da assinatura digital ao efetuar as etapas adicionais de: fornecer uma chave de assinatura correspondente no dispositivo móvel; calcular o número aleatório da aplicação de software no dispositivo móvel para obter um número aleatório calculado; aplicar a chave de assinatura correspondente à assinatura digital para obter um número aleatório recuperado; determinar se a assinatura digital é autêntica ao comparar o número aleatório calculado com o número aleatório recuperado; e negar acesso pela aplicação de software à API sensível quando a assinatura digital não for autenticada.
46. Método para restringir o acesso a interfaces de programação de aplicação em um dispositivo móvel, caracterizado por compreender as etapas de: carregar uma aplicação de software no dispositivo móvel assinado com uma assinatura digital e uma identificação de assinatura externa ao dispositivo móvel que requer acesso a uma ou mais interfaces de programação de aplicação (APIs) tendo pelo menos um identificador de assinatura; autenticar a assinatura digital no dispositivo móvel quando a identificação da assinatura corresponder ao identificador da assinatura; e negar à aplicação de software acesso à uma ou mais APIs quando a aplicação de software não incluir uma assinatura digital autêntica.
47. Método, de acordo com a reivindicação 46, caracterizado pelo fato da assinatura digital e da identificação da assinatura serem associadas a um tipo de dispositivo móvel.
48. Método, de acordo com a reivindicação 46, caracterizado por compreender a etapa adicional de: purgar a aplicação de software do dispositivo móvel quando a aplicação de software não incluir uma assinatura digital autêntica.
49. Método, de acordo com a reivindicação 46, caracterizado pelo fato de: a aplicação de software incluir uma pluralidade de assinaturas digitais e identificações de assinatura; e a pluralidade de assinaturas digitais e identificações de assinatura incluir assinaturas digitais e identificações de assinatura respectivamente associadas a tipos diferentes de dispositivos móveis.
50. Método, de acordo com a reivindicação 49, caracterizado pelo fato de cada uma da pluralidade de assinaturas digitais e identificações de assinatura associadas serem geradas por uma respectiva autoridade de assinatura de código correspondente.
51. Método, de acordo com a reivindicação 46, caracterizado pelo fato da etapa de determinar se a aplicação de software inclui uma assinatura digital autêntica compreender as etapas adicionais de: verificar a autenticidade da assinatura digital quando a identificação da assinatura corresponder a pelo menos um identificador de assinatura.
52. Método, de acordo com a reivindicação 50, caracterizado pelo fato de cada uma da pluralidade de assinaturas digitais e identificações de assinatura serem geradas pela autoridade de assinatura de código correspondente ao aplicar uma chave de assinatura privada correspondente associada à autoridade de assinatura de código a um número aleatório da aplicação de software.
53. Método, de acordo com a reivindicação 46, caracterizado pelo fato da etapa de autenticar a assinatura digital quando a identificação da assinatura corresponder ao identificador da assinatura compreender as etapas de: armazenar uma chave de assinatura pública em um dispositivo móvel que corresponde à chave de assinatura privada associada à autoridade de assinatura de código que gera a assinatura digital; gerar um número aleatório da aplicação de software para obter um número aleatório gerado; aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado; e comparar o número aleatório gerado com o número aleatório recuperado.
54. Método, de acordo com a reivindicação 46, caracterizado pelo fato de: o dispositivo móvel incluir uma pluralidade de APIs; pelo menos uma da pluralidade de APIs ser classificada como sensível; o acesso a qualquer uma da pluralidade de APIs requer uma assinatura global autêntica; o acesso a cada uma da pluralidade das APIs sensíveis requer uma assinatura global autêntica e uma assinatura digital autêntica associada a uma identificação de assinatura; a etapa de determinar se a aplicação de software inclui uma assinatura digital autêntica e uma identificação da assinatura compreende as etapas de: determinar se a uma ou mais APIs a qual a aplicação de software requer acesso inclui uma API sensível; determinar se a aplicação de software inclui uma assinatura global autêntica; e determinar se a aplicação de software inclui uma assinatura digital autêntica e uma identificação de assinatura, em que a uma ou mais APIs as quais a aplicação de software requer acesso inclui uma API sensível e a aplicação de software inclui uma assinatura global autêntica; e a etapa de negar a aplicação de software acesso à uma ou mais APIs compreende as etapas de: negar a aplicação de software acesso à uma ou mais APIs quando a aplicação de software não inclui uma assinatura global autêntica; e negar a aplicação de software acesso à API sensível quando a uma ou mais APIs as quais a aplicação de software requer acesso inclui uma API sensível, a aplicação de software inclui uma assinatura global autêntica, e a aplicação de software não inclui uma assinatura digital autêntica e um identificador de assinatura exigidos para acessar a API sensível.
55. Sistema de assinatura de código para controlar o acesso a interfaces de programação de aplicação (APIs) por aplicações e software em um dispositivo móvel assinado com um identificador de assinatura externo ao dispositivo móvel, o sistema de assinatura de código caracterizado por compreender: um sistema de verificação para autenticar assinaturas digitais usadas para assinar as respectivas aplicações de software para acessar as APIs no dispositivo móvel quando as identificações de assinatura corresponderem ao identificador da assinatura das respectivas APIs e quando uma assinatura digital para uma aplicação de software for gerada externamente ao dispositivo móvel com uma identificação de assinatura que corresponde a um identificador de assinatura para acessar pelo menos uma API; e um sistema de controle no dispositivo móvel para permitir acesso a pelo menos uma das APIs quando a assinatura digital usada para assinar a aplicação de software for autenticada pelo sistema de verificação, em que se o identificador de assinatura não for verificado, a aplicação de software é purgada, não executada ou restringida de acessar a API.
56. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato da máquina virtual compreender o sistema de verificação e o sistema de controle.
57 . Sistema de assinatura de código, de acordo com a reivindicação 56, caracterizado pelo fato da máquina virtual ser uma máquina virtual Java instalada em um dispositivo móvel.
58. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato do sistema de controle exigir uma assinatura digital e uma identificação de assinatura para cada biblioteca de pelo menos uma das APIs .
59. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato do sistema de assinatura de código ser instalado em um dispositivo móvel e a aplicação de software ser uma aplicação Java para o dispositivo móvel.
60. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato da assinatura digital e da identificação da assinatura da aplicação de software serem geradas por uma autoridade de assinatura de código.
61. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato das APIs acessarem pelo menos um dentre: um módulo criptográfico, que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietário, e uma interface de usuário (UI).
62 . Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada sob um esquema de assinatura associado à identificação da assinatura, e do sistema de verificação utilizar uma chave de assinatura pública para autenticar a assinatura digital.
63. Sistema de assinatura de código, de acordo com a reivindicação 62, caracterizado pelo fato de: a assinatura digital ser gerada ao aplicar a chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e o sistema de verificação autentica a assinatura digital ao gerar um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos .
64 . Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado por pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tenta acessar pelo menos uma das APIs.
65. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato das APIs fornecerem acesso a pelo menos uma de uma ou mais funções de cerne do dispositivo móvel, do sistema operacional e do hardware em um dispositivo móvel.
66. Sistema de assinatura de código, de acordo com a reivindicação 55, caracterizado pelo fato da verificação da assinatura digital global fornecida pela aplicação de software ser obrigatória para acessar quaisquer das APIs.
67 . Método de controlar o acesso a interfaces de programação de aplicação (APIs) tendo identificadores de assinatura por aplicações de software assinados com assinaturas digitais externas a um dispositivo móvel, o método no dispositivo móvel caracterizado por compreender: autenticar as respectivas aplicações de software assinadas com assinaturas digitais externas ao dispositivo móvel para acessar as APIs em que as identificações de assinatura correspondem aos identificadores de assinatura das respectivas APIs e em que a assinatura digital para a aplicação de software é gerada com uma identificação de assinatura que corresponde a um identificador de assinatura para acessar pelo menos uma API; e permitir acesso a pelo menos uma das APIs em que a assinatura digital usada para assinar a aplicação de software é autenticada,, em que se a assinatura digital não for verificada, a aplicação de software é purgada, não executada ou restringida de acessar a API.
68. Método, de acordo com a reivindicação 67, caracterizado pelo fato de uma assinatura digital e de uma identificação de assinatura serem usadas para assinar a aplicação de software para acessar uma biblioteca de pelo menos uma das APIs.
69. Método, de acordo com a reivindicação 67, caracterizado pelo fato da assinatura digital e da identificação da assinatura da aplicação de software serem geradas por uma autoridade de assinatura de código.
70. Método, de acordo com a reivindicação 67, caracterizado pelo fato das APIs acessarem pelo menos um dentre: um módulo criptográfico que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietário, e uma interface de usuário (UI).
71. Método, de acordo com a reivindicação 67, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada sob um esquema de assinatura associado a uma identificação de assinatura, e da chave de assinatura pública ser utilizada para autenticar a assinatura digital.
72. Método, de acordo com a reivindicação 71, caracterizado pelo fato de: a assinatura digital ser gerada pela aplicação da chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e a assinatura digital ser autenticada pela geração de um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos.
73. Método, de acordo com a reivindicação 67, caracterizado pelo fato de pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tenta acessar pelo menos uma das APIs.
74. Método, de acordo com a reivindicação 67, caracterizado pelo fato das APIs fornecerem acesso a pelo menos uma função de uma ou mais funções de cerne do dispositivo móvel, do sistema operacional, e do hardware no dispositivo móvel.
75. Método, de acordo com a reivindicação 67, caracterizado pelo fato da verificação da assinatura digital global fornecida pela aplicação de software é obrigatória para acessar quaisquer das APIs.
76. Sistema de gerenciamento para controlar o acesso por aplicações de software a interfaces de programação de aplicação (APIs) tendo pelo menos um identificador de assinatura em uma pluralidade de dispositivos móveis, o sistema de gerenciamento caracterizado por compreender: uma autoridade de assinatura de código, externa à pluralidade de dispositivos móveis, para assinar aplicações de software com assinaturas digitais e identificações de assinatura que exigem acesso a pelo menos uma das APIs com um identificador de assinatura na pluralidade de dispositivos móveis, em que a assinatura digital para uma aplicação de software é gerada com as identificações de assinatura que correspondem ao identificador de assinatura, e as identificações de assinatura usadas para assinar as aplicações de software compreendem aquelas identificações de assinatura que correspondem aos identificadores de assinatura que estão apenas na pluralidade de dispositivos móveis; em que cada dispositivo móvel da pluralidade de dispositivos móveis compreende: um sistema de verificação, na pluralidade de dispositivos móveis, para autenticar assinaturas digitais usadas para assinar respectivas aplicações de software para acessar as respectivas APIs em que as identificações digitais correspondem aos identificadores digitais das respectivas APIs; e um sistema de controle, na pluralidade de dispositivos móveis, para permitir que as respectivas aplicações de software acessem pelo menos uma das APIs onde as assinaturas digitais usadas para assinar as respectivas aplicações de software são autenticadas pelo sistema de verificação.
77. Sistema de gerenciamento, de acordo com a reivindicação 76, caracterizado pelo fato da máquina virtual compreender o sistema de verificação e o sistema de controle.
78. Sistema de gerenciamento, de acordo com a reivindicação 77, caracterizado pelo fato da máquina virtual ser uma máquina virtual Java e das aplicações de software serem aplicações Java.
79. Sistema de gerenciamento, de acordo com a reivindicação 7 6, caracterizado pelo fato do sistema de controle exibir uma assinatura digital e uma identificação de assinatura para cada biblioteca de pelo menos uma das APIs.
80. Sistema de gerenciamento, de acordo com a reivindicação 7 6, caracterizado pelo fato das APIs acessarem pelo menos um dentre: um módulo criptográfico que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietários, e uma interface de usuário (UI).
81. Sistema de gerenciamento, de acordo com a reivindicação 76, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada sob um esquema de assinatura associado à identificação da assinatura, e do sistema de verificação utilizar uma chave de assinatura pública para autenticar a assinatura digital.
82 . Sistema de gerenciamento, de acordo com a reivindicação 81, caracterizado pelo fato de: a assinatura digital ser gerada ao aplicar a chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e o sistema de verificação autentica a assinatura digital ao gerar um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos.
83. Sistema de gerenciamento, de acordo com a reivindicação 7 6, caracterizado pelo fato de pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tenta acessar a dita pelo menos uma das APIs.
84. Sistema de gerenciamento, de acordo com a reivindicação 7 6, caracterizado pelo fato da pluralidade de dispositivos móveis compreender dispositivos móveis sob o controle de pelo menos uma dentre uma empresa e uma portadora.
85. Sistema de gerenciamento, de acordo com a reivindicação 76, caracterizado pelo fato da assinatura digital global fornecida pela aplicação de software ter de ser autenticada antes da aplicação de software ter permissão para acessar quaisquer das APIs no dispositivo móvel da pluralidade de dispositivos móveis.
86. Método de controlar o acesso por aplicações de software para interfaces de programação de aplicação (APIs) tendo pelo menos um identificador de assinatura em uma pluralidade de dispositivos móveis, o método caracterizado por compreender: gerar, externo à pluralidade de dispositivos móveis, assinaturas digitais para assinar aplicações de software com identificações de assinatura que correspondem aos respectivos identificadores de assinatura das APIs; e fornecer à pluralidade de dispositivos móveis as aplicações de software com assinaturas digitais e as identificações de assinatura que exigem acesso a pelo menos uma das APIs; em que cada dispositivo móvel da pluralidade de dispositivos móveis compreende: um sistema de verificação para autenticar as assinaturas digitais usadas para assinar respectivas aplicações de software para acessar as respectivas APIs em que as identificações de assinatura correspondem aos identificadores de assinatura das respectivas APIs; e um sistema de controle para permitir que a aplicação de software acesse pelo menos uma das APIs em que a assinatura digital usada para assinar a aplicação de software é autenticada pelo sistema de verificação.
87. Método, de acordo com a reivindicação 86, caracterizado pelo fato da máquina virtual compreender o sistema de verificação e o sistema de controle.
88. Método, de acordo com a reivindicação 87, caracterizado pelo fato da máquina virtual ser uma máquina virtual Java e das aplicações de software serem aplicações Java.
89. Método, de acordo com a reivindicação 86, caracterizado pelo fato do sistema de controle exigir uma assinatura digital e uma identificação de assinatura para cada biblioteca de pelo menos uma das APIs.
90. Método, de acordo com a reivindicação 86, caracterizado pelo fato das APIs acessarem pelo menos um entre: um módulo criptográfico que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietário, e uma interface de usuário (UI).
91. Método, de acordo com a reivindicação 86, caracterizado pelo fato de pelo menos uma das assinaturas digitais ser gerada utilizando uma chave de assinatura privada sob um esquema de assinatura associado a uma identificação da assinatura, e do sistema de verificação utilizar chaves de assinatura pública para autenticar pelo menos uma das assinaturas digitais.
92. Método, de acordo com a reivindicação 91, caracterizado pelo fato de: pelo menos uma das assinaturas digitais ser gerada pela aplicação da chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e o sistema de verificação autenticar pelo menos uma das assinaturas digitais ao gerar um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à pelo menos uma das assinaturas digitais para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos.
93. Método, de acordo com a reivindicação 86, caracterizado pelo fato de pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tentar acessar a dita pelo menos uma das APIs.
94. Método, de acordo com a reivindicação 86, caracterizado pelo fato da pluralidade de dispositivos móveis compreender dispositivos móveis sob o controle de pelo menos uma de uma empresa e uma portadora.
95. Dispositivo móvel para uma pluralidade de dispositivos móveis, caracterizado pelo fato do dispositivo móvel compreender: uma plataforma de aplicação tendo interfaces de programação de aplicação (APIs); um sistema de verificação para autenticar respectivas aplicações de software que já foram assinadas externas ao dispositivo móvel com assinaturas digitais e identificações de assinatura para acessar as APIs; e um sistema de controle para permitir que a aplicação de software acesse pelo menos uma das APIs em que a assinatura digital usada para assinar a aplicação de software é autenticada pelo sistema de aplicação; em que uma autoridade de assinatura de código assina aplicações de software externa ao dispositivo móvel com assinaturas digitais e identificações de assinatura que exigem acesso a pelo menos uma das APIs tal que a assinatura digital para a aplicação de software é gerada de acordo com um esquema de assinatura da identificação de assinatura, em que as identificações de assinatura usadas para assinar as aplicações de software compreendem aquelas identificações de assinatura que são apenas autorizadas para permitir acesso na pluralidade de dispositivos móveis, e em que se a assinatura digital não for autorizada, a aplicação de software é purgada, não executada ou restringida de acessar a API.
96. Dispositivo móvel, de acordo com a reivindicação 95, caracterizado pelo fato da máquina virtual compreender o sistema de verificação e o sistema de controle.
97. Dispositivo móvel, de acordo com a reivindicação 96, caracterizado pelo fato da máquina virtual ser uma máquina virtual Java e da aplicação de software ser uma aplicação Java.
98. Dispositivo móvel, de acordo com a reivindicação 95, caracterizado pelo fato do sistema de controle exigir uma assinatura digital e uma identificação de assinatura para cada biblioteca das pelo menos uma das APIs.
99. Dispositivo móvel, de acordo com a reivindicação 95, caracterizado pelo fato das APIs da plataforma de aplicação acessarem pelo menos um dentre: um módulo criptográfico que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietário, e uma interface de usuário (UI).
100. Dispositivo móvel, de acordo com a reivindicação 95, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada sob o esquema de assinatura, e do sistema de verificação utilizar uma chave de assinatura pública para autenticar a assinatura digital.
101. Dispositivo móvel, de acordo com a reivindicação 100, caracterizado pelo fato de: a assinatura digital ser gerada pela aplicação da chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e o sistema de verificação autenticar a assinatura digital ao gerar um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos.
102. Dispositivo móvel, de acordo com a reivindicação 95, caracterizado pelo fato de pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tentar acessar pelo menos uma das APIs.
103. Método de controlar o acesso a interfaces de programação de aplicação (APIs) de uma plataforma de aplicação de um dispositivo móvel para uma pluralidade de dispositivos móveis, o método caracterizado por compreender: receber aplicações de software assinadas externamente à pluralidade de dispositivos móveis com assinaturas digitais e identificações de assinatura que as exigem para acessar as APIs; autenticar as assinaturas digitais e as identificações digitais; e permitir que a aplicação de software acesse pelo menos uma das APIs em que a assinatura digital usada para assinar as aplicação de software é autenticada; em que uma autoridade de assinatura de código, externa à pluralidade de dispositivos móveis, fornece as assinaturas digitais e as identificações de assinatura para as aplicações de software que exigem acesso a pelo menos uma das APIs tal que a assinatura digital para a aplicação de software é gerada de acordo com um esquema de assinatura da identificação de assinatura, em que as identificações de assinatura usadas para assinar as aplicações de software compreendem aquelas identificações de assinatura que são apenas autorizadas para permitir acesso na pluralidade de dispositivos móveis, e em que se a assinatura digital não for autorizada, a aplicação de software é purgada, não executada ou restringida de acessar a API.
104. Método, de acordo com a reivindicação 103, caracterizado pelo fato de uma assinatura digital e de uma identificação de assinatura serem necessárias para acessar cada biblioteca das pelo menos uma das APIs.
105. Método, de acordo com a reivindicação 103, caracterizado pelo fato das APIs da plataforma de aplicação acessarem pelo menos um dentre: um módulo criptográfico que implementa algoritmos criptográficos, um armazém de dados, um modelo de dados proprietário, e uma interface de usuário (UI) .
106. Método, de acordo com a reivindicação 103, caracterizado pelo fato da assinatura digital ser gerada utilizando uma chave de assinatura privada sob o esquema de assinatura, e da chave de assinatura pública ser utilizada para autenticar a assinatura digital.
107. Método, de acordo com a reivindicação 106, caracterizado pelo fato de: a assinatura digital ser gerada pela aplicação da chave de assinatura privada a um número aleatório da aplicação de software sob o esquema de assinatura; e a assinatura digital ser autenticada pela geração de um número aleatório da aplicação de software para obter um número aleatório gerado, aplicar a chave de assinatura pública à assinatura digital para obter um número aleatório recuperado, e verificar se o número aleatório gerado e o número aleatório recuperado são os mesmos.
108. Método, de acordo com a reivindicação 103, caracterizado pelo fato de pelo menos uma das APIs compreender ainda: uma cadeia de descrição que é exibida ao usuário quando a aplicação de software tentar acessar a dita pelo menos uma das APIs.
BRPI0114066A 2000-09-21 2001-09-20 sistema e método de assinatura de código BRPI0114066B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US23415200P 2000-09-21 2000-09-21
US23535400P 2000-09-26 2000-09-26
US27066301P 2001-02-20 2001-02-20
PCT/CA2001/001344 WO2002025409A2 (en) 2000-09-21 2001-09-20 Software code signing system and method

Publications (2)

Publication Number Publication Date
BR0114066A BR0114066A (pt) 2004-02-10
BRPI0114066B1 true BRPI0114066B1 (pt) 2016-08-02

Family

ID=27398521

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0114066A BRPI0114066B1 (pt) 2000-09-21 2001-09-20 sistema e método de assinatura de código

Country Status (11)

Country Link
US (8) US8489868B2 (pt)
EP (8) EP2284644B1 (pt)
CN (4) CN101694688B (pt)
AT (4) ATE479931T1 (pt)
AU (1) AU2001293563A1 (pt)
BR (1) BRPI0114066B1 (pt)
CA (3) CA2422917C (pt)
DE (3) DE60142992D1 (pt)
ES (6) ES2385565T3 (pt)
HK (7) HK1055629A1 (pt)
WO (1) WO2002025409A2 (pt)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2385565T3 (es) 2000-09-21 2012-07-26 Research In Motion Limited Sistema y método de firma mediante código por software
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US20030191943A1 (en) * 2002-04-05 2003-10-09 Poisner David I. Methods and arrangements to register code
JP2003337716A (ja) * 2002-05-20 2003-11-28 Ntt Docomo Inc 電子機器、データ共用方法、プログラム及び記憶媒体
FR2840134B1 (fr) * 2002-05-21 2004-08-13 France Telecom Procede de controle d'acces a des ressources cryptographiques, plate-forme informatique et module logiciel utilisables dans la mise en oeuvre du procede
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
FR2849230B1 (fr) * 2002-12-24 2005-04-22 Francois Bangui Procede et dispositif de verification de l'integrite d'une application logicielle sans cle de chiffrement/dechiffrement
US7096005B2 (en) * 2003-01-23 2006-08-22 Inventec Appliances Corp. Method of carrying out a safe remote electronic signing by cellular phone
US7565551B2 (en) * 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US7337330B2 (en) 2003-03-10 2008-02-26 Cyberview Technology, Inc. Universal game download system for legacy gaming machines
US7802087B2 (en) 2003-03-10 2010-09-21 Igt Universal method for submitting gaming machine source code software to a game certification laboratory
AU2004220645C1 (en) 2003-03-10 2010-11-18 Mudalla Technology, Inc. Dynamic configuration of a gaming system
US8491391B2 (en) 2003-03-10 2013-07-23 Igt Regulated gaming—agile media player for controlling games
US7600251B2 (en) 2003-03-10 2009-10-06 Igt Universal peer-to-peer game download
US7921302B2 (en) 2003-03-10 2011-04-05 Igt Universal game download methods and system for legacy gaming machines
US7966493B2 (en) * 2003-11-18 2011-06-21 Oracle International Corporation Method of and system for determining if an electronic signature is necessary in order to commit a transaction to a database
RU2006126665A (ru) * 2004-01-22 2008-01-27 Конинклейке Филипс Электроникс Н.В. (Nl) Способ авторизации доступа к контенту
US20050289350A1 (en) * 2004-06-25 2005-12-29 Markus Schmidt-Karaca Method and system for secure synchronization between an enterprise system and a device
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US9313214B2 (en) 2004-08-06 2016-04-12 Google Technology Holdings LLC Enhanced security using service provider authentication
GB2422919B (en) * 2004-11-02 2009-05-27 T Mobile Int Ag & Co Kg Software application security access management in mobile communication devices
CN101065716A (zh) * 2004-11-22 2007-10-31 诺基亚公司 用于验证电子设备的平台软件的完整性的方法和设备
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US20060236100A1 (en) * 2005-04-19 2006-10-19 Guruprasad Baskaran System and method for enhanced layer of security to protect a file system from malicious programs
DE102005030590B4 (de) * 2005-06-30 2011-03-24 Advanced Micro Devices, Inc., Sunnyvale Sicheres Patchsystem
KR101290818B1 (ko) * 2005-06-30 2013-07-30 어드밴스드 마이크로 디바이시즈, 인코포레이티드 보안 패치 시스템
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US8320880B2 (en) * 2005-07-20 2012-11-27 Qualcomm Incorporated Apparatus and methods for secure architectures in wireless networks
JP2007081482A (ja) * 2005-09-09 2007-03-29 Canon Inc 端末認証方法及びその装置、プログラム
US7797545B2 (en) * 2005-09-29 2010-09-14 Research In Motion Limited System and method for registering entities for code signing services
US8340289B2 (en) 2005-09-29 2012-12-25 Research In Motion Limited System and method for providing an indication of randomness quality of random number data generated by a random data service
US20070074032A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Remote hash generation in a system and method for providing code signing services
US20070074031A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited System and method for providing code signing services
US20070074033A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Account management in a system and method for providing code signing services
US20070083378A1 (en) * 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
JP4854000B2 (ja) * 2005-11-02 2012-01-11 株式会社日立ソリューションズ 機密ファイル保護方法
SE530662C2 (sv) * 2005-11-09 2008-08-05 Noll Och Ett Data Ab Förfarande och anordning
WO2007097439A1 (ja) * 2006-02-21 2007-08-30 Nec Corporation プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
JP2007328770A (ja) * 2006-05-10 2007-12-20 Ricoh Co Ltd 情報処理装置、アクセス制御方法、アクセス制御プログラム、記録媒体、及び画像形成装置
US8341747B2 (en) * 2006-08-08 2012-12-25 International Business Machines Corporation Method to provide a secure virtual machine launcher
US8615801B2 (en) * 2006-08-31 2013-12-24 Microsoft Corporation Software authorization utilizing software reputation
EP2009565A1 (en) * 2007-06-28 2008-12-31 Gemplus Method for securely loading a client applet in an electronic portable device
US8364978B2 (en) * 2007-11-26 2013-01-29 Koolspan, Inc. System for and method of auto-registration with cryptographic modules
US8842836B2 (en) * 2007-11-26 2014-09-23 Koolspan, Inc. System for and method of cryptographic provisioning
US9223938B2 (en) * 2007-12-31 2015-12-29 Google Technology Holdings LLC Location bound secure domains
EP2248366A4 (en) * 2008-01-29 2014-04-09 Qualcomm Inc SECURE APPLICATION SIGNATURE
US20090228704A1 (en) * 2008-03-04 2009-09-10 Apple Inc. Providing developer access in secure operating environments
KR20100126476A (ko) * 2008-03-04 2010-12-01 애플 인크. 보안 동작 환경에서의 소프트웨어 개발자들에 대한 코드 자격들의 관리
NO2404428T3 (pt) 2009-03-06 2018-04-14
US8818412B2 (en) * 2009-03-18 2014-08-26 Wavemarket, Inc. System for aggregating and disseminating location information
US20100242097A1 (en) 2009-03-20 2010-09-23 Wavemarket, Inc. System and method for managing application program access to a protected resource residing on a mobile device
US8683554B2 (en) * 2009-03-27 2014-03-25 Wavemarket, Inc. System and method for managing third party application program access to user information via a native application program interface (API)
US8839458B2 (en) * 2009-05-12 2014-09-16 Nokia Corporation Method, apparatus, and computer program for providing application security
US20110137817A1 (en) * 2009-06-01 2011-06-09 Wavemarket, Inc. System and method for aggregating and disseminating personal data
CN102087689B (zh) * 2009-12-04 2013-04-03 北大方正集团有限公司 一种软件重用模块的保护方法及装置
EP2517399B1 (en) 2009-12-21 2017-01-25 Kik Interactive Inc. Systems and methods for accessing and controlling media stored remotely
US9264448B2 (en) 2010-01-20 2016-02-16 Blackberry Limited Apparatus, and an associated method, for facilitating secure operations of a wireless device
US8533811B2 (en) * 2010-01-20 2013-09-10 Microsoft Corporation Developer phone registration
CN102130907B (zh) * 2010-01-20 2014-05-07 微软公司 开发者电话注册
JP2012003679A (ja) * 2010-06-21 2012-01-05 Kyocera Mita Corp 画像形成装置用追加アプリケーションのセキュリティ確保方法、画像形成システム及び画像形成装置
US20120089733A1 (en) * 2010-10-12 2012-04-12 Ansca, Inc. Managing Access to an Application
US20120089978A1 (en) * 2010-10-12 2012-04-12 I O Interconnect, Ltd. Method for managing applications of portable devices
US8621591B2 (en) * 2010-10-19 2013-12-31 Symantec Corporation Software signing certificate reputation model
US8938809B2 (en) * 2011-06-24 2015-01-20 Google Technology Holdings LLC Retrieval of data across multiple partitions of a storage device using digital signatures
US8572368B1 (en) 2011-09-23 2013-10-29 Symantec Corporation Systems and methods for generating code-specific code-signing certificates containing extended metadata
US8745616B1 (en) * 2011-09-23 2014-06-03 Symantec Corporation Systems and methods for providing digital certificates that certify the trustworthiness of digitally signed code
KR101430240B1 (ko) * 2011-12-19 2014-08-19 주식회사 케이티 어플리케이션 서명 장치 및 방법
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
KR101876297B1 (ko) * 2012-03-16 2018-07-10 삼성전자주식회사 전자 서명 검증 장치 및 방법
US9009705B2 (en) 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
EP2750065A1 (en) * 2012-12-27 2014-07-02 Telefonica S.A. Method, system and computer program product for managing operations of service terminals
US8894485B2 (en) * 2013-03-18 2014-11-25 Cadillac Jack, Inc. Electronic gaming system with ROM-based media validation
IN2013MU01235A (pt) * 2013-03-28 2015-04-10 Tata Consultancy Services Ltd
US9158932B2 (en) 2013-05-08 2015-10-13 Sap Se Modeled authorization check implemented with UI framework
US9515832B2 (en) * 2013-06-24 2016-12-06 Microsoft Technology Licensing, Llc Process authentication and resource permissions
US9385869B1 (en) * 2014-03-26 2016-07-05 Symantec Corporation Systems and methods for trusting digitally signed files in the absence of verifiable signature conditions
US20160048688A1 (en) * 2014-08-14 2016-02-18 Google Inc. Restricting System Calls using Protected Storage
US10050993B2 (en) * 2014-09-24 2018-08-14 Mcafee, Llc Non-invasive whitelisting
US9843451B2 (en) * 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
US10303891B2 (en) * 2014-12-30 2019-05-28 Data I/O Corporation Automated manufacturing system with job packaging mechanism and method of operation thereof
US9536080B2 (en) * 2015-05-29 2017-01-03 Apple Inc. Method for validating dynamically loaded libraries using team identifiers
US10044701B2 (en) * 2016-05-24 2018-08-07 Vantiv, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10419224B2 (en) * 2016-06-14 2019-09-17 International Business Machines Corporation Preventing monoculture in application distribution
CN108259413B (zh) 2016-12-28 2021-06-01 华为技术有限公司 一种获取证书、鉴权的方法及网络设备
SE541713C2 (en) * 2017-05-03 2019-12-03 Enigio Time Ab Method and system for registering digital documents
US11354399B2 (en) 2017-07-17 2022-06-07 Hewlett-Packard Development Company, L.P. Authentication of entitlement certificates
US20190026442A1 (en) * 2017-07-24 2019-01-24 Microsoft Technology Licensing, Llc Offline activation for application(s) installed on a computing device
CN108768664B (zh) * 2018-06-06 2020-11-03 腾讯科技(深圳)有限公司 密钥管理方法、装置、系统、存储介质和计算机设备
US10719373B1 (en) * 2018-08-23 2020-07-21 Styra, Inc. Validating policies and data in API authorization system
US11520877B2 (en) * 2018-12-12 2022-12-06 Raytheon Company Resilient multi-variant execution verification
RU2706873C1 (ru) * 2018-12-28 2019-11-21 Акционерное общество "Лаборатория Касперского" Система и способ проверки ЭЦП файла
US10897361B1 (en) * 2019-09-04 2021-01-19 Garantir LLC Automated hash validation
US11645410B2 (en) 2019-10-09 2023-05-09 Intertrust Technologies Corporation Content management systems and methods
KR102644153B1 (ko) * 2019-10-31 2024-03-07 삼성에스디에스 주식회사 데이터 보안 장치 및 방법
US11244077B2 (en) * 2020-01-31 2022-02-08 Fortanix, Inc. Securing data integrity for an application
US11431510B1 (en) 2020-04-30 2022-08-30 Wells Fargo Bank, N.A. Code-sign white listing (CSWL)
US11003498B1 (en) 2020-08-10 2021-05-11 Coupang Corp. Computerized systems and methods for fail-safe loading of information on a user interface using a circuit breaker
US11334345B2 (en) * 2020-10-08 2022-05-17 Pelion Technology, Inc. Differential firmware update generation
US20220141029A1 (en) * 2020-10-29 2022-05-05 Microsoft Technology Licensing, Llc Using multi-factor and/or inherence-based authentication to selectively enable performance of an operation prior to or during release of code
US11057215B1 (en) 2021-01-27 2021-07-06 Garantir LLC Automated hash validation
US12008146B2 (en) * 2021-03-31 2024-06-11 Seagate Technology Llc Code-based signatures for secure programs
US11954007B2 (en) 2022-04-20 2024-04-09 International Business Machines Corporation Tracking usage of common libraries by means of digitally signed digests thereof

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5005200A (en) 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
KR0161361B1 (ko) 1993-04-28 1999-03-20 사또 후미오 구동 회로 장치
US5421013A (en) 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
US6135646A (en) 1993-10-22 2000-10-24 Corporation For National Research Initiatives System for uniquely and persistently identifying, managing, and tracking digital objects
US5625690A (en) * 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
DK0739560T3 (da) * 1994-01-13 2001-10-01 Certco Inc Kryptografisk system og fremgangsmåde med nøgledeponeringsfunktion
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5680619A (en) 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5657378A (en) 1995-04-11 1997-08-12 M Power Corporation Digital screen phone terminal with graphical user interface
US5966714A (en) 1995-04-28 1999-10-12 Intel Corporation Method and apparatus for scaling large electronic mail databases for devices with limited storage
US5845282A (en) 1995-08-07 1998-12-01 Apple Computer, Inc. Method and apparatus for remotely accessing files from a desktop computer using a personal digital assistant
US5797089A (en) 1995-09-07 1998-08-18 Telefonaktiebolaget Lm Ericsson (Publ) Personal communications terminal having switches which independently energize a mobile telephone and a personal digital assistant
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US6253027B1 (en) * 1996-06-17 2001-06-26 Hewlett-Packard Company System, method and article of manufacture for exchanging software and configuration data over a multichannel, extensible, flexible architecture
US6067582A (en) 1996-08-13 2000-05-23 Angel Secure Networks, Inc. System for installing information related to a software application to a remote computer over a network
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US6023509A (en) * 1996-09-30 2000-02-08 Intel Corporation Digital signature purpose encoding
US5958051A (en) 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5903882A (en) 1996-12-13 1999-05-11 Certco, Llc Reliance server for electronic transaction system
US6009176A (en) 1997-02-13 1999-12-28 International Business Machines Corporation How to sign digital streams
US5935249A (en) * 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
WO1998043212A1 (en) * 1997-03-24 1998-10-01 Visa International Service Association A system and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
EP1004992A3 (en) * 1997-03-24 2001-12-05 Visa International Service Association A system and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
US6212636B1 (en) * 1997-05-01 2001-04-03 Itt Manufacturing Enterprises Method for establishing trust in a computer network via association
DE69816986T2 (de) 1997-05-29 2004-07-22 Sun Microsystems, Inc., Palo Alto Verfahren und vorrichtung zur versiegelung und unterschrift von objekten
US6389534B1 (en) 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US5940379A (en) 1997-07-23 1999-08-17 Motorola, Inc. Apparatus and method for using multiple spreading codes for data transmission in a satellite communication system
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
WO1999033224A1 (en) * 1997-12-19 1999-07-01 British Telecommunications Public Limited Company Data communications
US8489860B1 (en) * 1997-12-22 2013-07-16 Texas Instruments Incorporated Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device
AU2433899A (en) 1998-02-03 1999-08-23 Mondex International Limited System and method for controlling access to computer code in an ic card
US6131166A (en) 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6324650B1 (en) * 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US20010044901A1 (en) * 1998-03-24 2001-11-22 Symantec Corporation Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption
US6374357B1 (en) * 1998-04-16 2002-04-16 Microsoft Corporation System and method for regulating a network service provider's ability to host distributed applications in a distributed processing environment
US6256393B1 (en) 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6085321A (en) 1998-08-14 2000-07-04 Omnipoint Corporation Unique digital signature
US6230184B1 (en) 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6748541B1 (en) * 1999-10-05 2004-06-08 Aladdin Knowledge Systems, Ltd. User-computer interaction method for use by a population of flexibly connectable computer systems
JP4764536B2 (ja) * 1998-11-17 2011-09-07 株式会社リコー 画像計測機器
US6390374B1 (en) * 1999-01-15 2002-05-21 Todd Carper System and method for installing/de-installing an application on a smart card
US6298354B1 (en) 1999-02-19 2001-10-02 Sun Microsystems, Inc. Mechanism and process to transform a grammar-derived intermediate form to an object-oriented configuration database
US6256737B1 (en) * 1999-03-09 2001-07-03 Bionetrix Systems Corporation System, method and computer program product for allowing access to enterprise resources using biometric devices
US6223291B1 (en) * 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6574636B1 (en) * 1999-05-04 2003-06-03 Accenture Llp Method and article of manufacture for isolating data within a computer program
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
US6895507B1 (en) * 1999-07-02 2005-05-17 Time Certain, Llc Method and system for determining and maintaining trust in digital data files with certifiable time
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US6526513B1 (en) * 1999-08-03 2003-02-25 International Business Machines Corporation Architecture for dynamic permissions in java
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
US6289382B1 (en) * 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
DE69927590T2 (de) * 1999-08-31 2006-07-06 Swisscom Ag Mobiler Roboter und Steuerverfahren für einen mobilen Roboter
US20050160272A1 (en) * 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US20020112078A1 (en) * 1999-12-03 2002-08-15 David Yach Virtual machine web browser
US6931546B1 (en) 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
US7162035B1 (en) * 2000-05-24 2007-01-09 Tracer Detection Technology Corp. Authentication method and system
US6687837B1 (en) 2000-06-15 2004-02-03 Cisco Technology, Inc. Method and system for controlling the supply of power to a circuit card in a card shelf through an activation signal
US6981262B1 (en) * 2000-06-27 2005-12-27 Microsoft Corporation System and method for client interaction in a multi-level rights-management architecture
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
US6678887B1 (en) 2000-07-11 2004-01-13 Networks Associates Technology, Inc. Customizing business logic and data sources by modifying methods defined within an API
US6721809B1 (en) 2000-08-21 2004-04-13 Oracle International Corporation Method and apparatus for configuring extensible application programming interfaces
BR0113510A (pt) * 2000-08-25 2003-07-01 Research In Motion Ltd Sistema e método para implementar um protocolo de segurança de camada de transporte aprimorado
ES2385565T3 (es) 2000-09-21 2012-07-26 Research In Motion Limited Sistema y método de firma mediante código por software
CA2375844C (en) * 2001-03-09 2008-12-30 Research In Motion Limited Advanced voice and data operations in a mobile data communication device
CA2450584C (en) * 2001-06-12 2011-01-04 Research In Motion Limited Certificate management and transfer system and method
AU2002311039A1 (en) * 2001-06-12 2002-12-23 Research In Motion Limited System and method for compressing secure e-mail for exchange with a mobile data communication device
CN101060538B (zh) * 2001-07-12 2012-08-08 捷讯研究有限公司 用于为移动通信设备提供远程数据访问的系统和方法
US7526572B2 (en) * 2001-07-12 2009-04-28 Research In Motion Limited System and method for providing remote data access for a mobile communication device
US7046991B2 (en) * 2001-07-16 2006-05-16 Research In Motion Limited System and method for supporting multiple certificate authorities on a mobile communication device
US7076244B2 (en) * 2001-07-23 2006-07-11 Research In Motion Limited System and method for pushing information to a mobile device
EP1417814B1 (en) * 2001-08-06 2008-10-29 Research In Motion Limited System and method for processing encoded messages
US20030063772A1 (en) 2001-09-06 2003-04-03 Smith Joshua R. System and method for authentication and tracking of a workpiece that includes an optically active medium
JP2005506803A (ja) * 2001-10-25 2005-03-03 リサーチ イン モーション リミテッド エンコードされたメッセージの処理のための多段階システムおよびその方法
US20040166334A1 (en) 2003-02-26 2004-08-26 Shigeo Kawabata Decorative film-like material
JP4745238B2 (ja) * 2004-08-12 2011-08-10 富士通株式会社 Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
EP2370692B1 (en) 2008-12-02 2014-01-29 Vestas Wind Systems A/S Method for installing a wind turbine, a nacelle for a wind turbine, and method for transporting elements of a wind turbine
US20110162074A1 (en) 2009-12-31 2011-06-30 Sap Portals Israel Ltd Apparatus and method for remote processing while securing classified data
US7944079B1 (en) 2010-04-21 2011-05-17 General Electric Company Systems and methods for assembling a gearbox handling assembly for use in a wind turbine
WO2012105971A1 (en) 2011-02-02 2012-08-09 Smith Matthew K Nacelle-mounted maintenance system for wind turbines

Also Published As

Publication number Publication date
US20170076071A1 (en) 2017-03-16
WO2002025409A2 (en) 2002-03-28
EP2306260A3 (en) 2011-07-20
ES2385565T3 (es) 2012-07-26
CN101694687A (zh) 2010-04-14
DE60115072D1 (de) 2005-12-22
CN1541350A (zh) 2004-10-27
CN101714201B (zh) 2016-02-03
ES2253426T5 (es) 2009-12-14
EP1626324A2 (en) 2006-02-15
US20120179917A1 (en) 2012-07-12
CN100573402C (zh) 2009-12-23
EP2306259A2 (en) 2011-04-06
EP1626326A2 (en) 2006-02-15
EP1320795B2 (en) 2009-08-26
DE60115072T3 (de) 2010-04-01
EP2284644B1 (en) 2014-03-05
HK1091666A1 (en) 2007-01-26
US20190392115A1 (en) 2019-12-26
EP2306260A2 (en) 2011-04-06
EP1626326B1 (en) 2010-09-01
US8489868B2 (en) 2013-07-16
EP1320795A2 (en) 2003-06-25
HK1156409A1 (en) 2012-06-08
US10032007B1 (en) 2018-07-24
ES2352556T3 (es) 2011-02-21
EP1626324A3 (en) 2009-06-17
EP1626326A3 (en) 2009-06-17
US20180330065A1 (en) 2018-11-15
EP2306259A3 (en) 2011-07-20
CA2923740A1 (en) 2002-03-28
ES2360005T3 (es) 2011-05-31
ES2545791T3 (es) 2015-09-15
WO2002025409A3 (en) 2002-06-13
EP2306260B1 (en) 2014-02-26
HK1091665A1 (en) 2007-01-26
CA2923740C (en) 2018-07-10
CA2422917C (en) 2016-03-29
HK1055629A1 (en) 2004-01-16
DE60115072T2 (de) 2006-07-27
US9507920B2 (en) 2016-11-29
US20150026457A1 (en) 2015-01-22
EP1626325A2 (en) 2006-02-15
EP2278429B1 (en) 2014-03-12
ATE310271T1 (de) 2005-12-15
US11030278B2 (en) 2021-06-08
AU2001293563A1 (en) 2002-04-02
ES2253426T3 (es) 2006-06-01
DE60142992D1 (de) 2010-10-14
ATE553426T1 (de) 2012-04-15
BR0114066A (pt) 2004-02-10
EP2278429A1 (en) 2011-01-26
DE60142991D1 (de) 2010-10-14
CN101694687B (zh) 2017-04-12
EP1626325A3 (en) 2009-06-17
US20130145150A1 (en) 2013-06-06
CN101694688A (zh) 2010-04-14
US8984278B2 (en) 2015-03-17
EP1320795B1 (en) 2005-11-16
CA2422917A1 (en) 2002-03-28
CN101694688B (zh) 2014-07-16
ATE479931T1 (de) 2010-09-15
HK1091667A1 (en) 2007-01-26
US20180211015A1 (en) 2018-07-26
US20040025022A1 (en) 2004-02-05
HK1154427A1 (en) 2012-04-20
ATE479930T1 (de) 2010-09-15
ES2465967T3 (es) 2014-06-09
CN101714201A (zh) 2010-05-26
EP1626325B1 (en) 2010-09-01
HK1153829A1 (en) 2012-04-05
EP2306259B1 (en) 2015-05-27
EP1626324B1 (en) 2012-04-11
CA3006733A1 (en) 2002-03-28
US10437967B2 (en) 2019-10-08
US9922175B2 (en) 2018-03-20
EP2284644A1 (en) 2011-02-16

Similar Documents

Publication Publication Date Title
US11030278B2 (en) Code signing system and method
US8782807B2 (en) System and method for authenticating code executing on computer system
JP2004533046A (ja) プラグ対応認可システムに対するサーバサポート方法およびシステム
CN111066016A (zh) 应用证书

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B25D Requested change of name of applicant approved

Owner name: BLACKBERRY LIMITED (CA)

B25G Requested change of headquarter approved

Owner name: BLACKBERRY LIMITED (CA)

B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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