BR112020023826A2 - Método, e, primeiro computador. - Google Patents

Método, e, primeiro computador. Download PDF

Info

Publication number
BR112020023826A2
BR112020023826A2 BR112020023826-0A BR112020023826A BR112020023826A2 BR 112020023826 A2 BR112020023826 A2 BR 112020023826A2 BR 112020023826 A BR112020023826 A BR 112020023826A BR 112020023826 A2 BR112020023826 A2 BR 112020023826A2
Authority
BR
Brazil
Prior art keywords
vector
computer
encrypted
public key
difference
Prior art date
Application number
BR112020023826-0A
Other languages
English (en)
Inventor
Kim Wagner
Original Assignee
Visa International Service Association
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Visa International Service Association filed Critical Visa International Service Association
Publication of BR112020023826A2 publication Critical patent/BR112020023826A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3231Biological data, e.g. fingerprint, voice or retina
    • 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/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • Collating Specific Patterns (AREA)

Abstract

método, e, primeiro computador. um método e sistema para realizar um cálculo de um produto escalar de preservação de privacidade são fornecidos. uma primeira parte e uma segunda parte (por exemplo, um primeiro computador e um segundo computador) possuindo um primeiro vetor e um segundo vetor, respectivamente, podem determinar simultaneamente o produto escalar dos dois vetores, sem revelar nenhum dos vetores para a outra parte. cada vetor pode ser mascarado e depois criptografado usando uma chave pública de um par de chaves assimétricas. usando operações de criptografia homomórfica, o produto escalar dos vetores pode ser determinado enquanto os vetores ainda estão criptografados. cada parte pode comparar o produto escalar ou um valor derivado do produto escalar em relação a um limite predeterminado. a título de exemplo, duas partes podem realizar o produto escalar para comparar dois modelos biométricos expressos como vetores sem revelar os modelos biométricos um ao outro, preservando a privacidade das pessoas correspondentes a esses dados biométricos.

Description

1 / 64 MÉTODO, E, PRIMEIRO COMPUTADOR
REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[001] Este pedido é um pedido não provisório e reivindica prioridade sobre o pedido de patente dos EUA no 62/676.219, depositado em 24 de maio de 2018, que é aqui incorporado por referência em sua totalidade.
FUNDAMENTOS
[002] Em muitos casos, os computadores podem simplesmente transmitir seus dados entre si para comparação, principalmente se os dados não forem privados. Por exemplo, um usuário pode querer verificar se o software local está atualizado (ou seja, o software é a versão estável mais recente desse software disponível). O usuário pode não ter problemas com a transmissão de dados sobre o software para um servidor externo para comparação. No entanto, em alguns casos, especialmente aqueles que envolvem dados privados ou informações de identificação pessoal (por exemplo, registros médicos, números de contas de pagamento, biometria), um usuário pode não querer transmitir esses dados para outro computador externo, por medo de que o computador externo possa ser operado por um usuário ou organização fraudulenta ou mal-intencionada.
[003] Felizmente, existem técnicas disponíveis que permitem que dois ou mais computadores comparem dados ou executem cálculos sem revelar seus respectivos dados um ao outro, como técnicas de computação multipartidárias seguras. Infelizmente, essas técnicas costumam ser lentas, complexas e requerem um grande número de operações de computação. Se os computadores participantes tiverem uma conexão ruim, a probabilidade de falha de computação multipartidária segura aumenta significativamente. Além disso, o grande número de comunicações e operações de computação tornam esses protocolos inadequados para aplicativos sensíveis ao tempo ou em ambientes de computação de baixo desempenho.
[004] As modalidades resolvem esses e outros problemas, individual
2 / 64 e coletivamente.
SUMÁRIO
[005] As modalidades da invenção são direcionadas a métodos e sistemas para calcular de forma segura e simultânea o produto escalar (ou produto "escalar") de dois vetores. Um primeiro computador e um segundo computador podem possuir um primeiro e um segundo vetor respectivamente, e podem calcular o produto escalar do primeiro e segundo vetor simultaneamente, sem o primeiro computador revelar o primeiro vetor para o segundo computador e sem o segundo computador revelar o segundo vetor para o primeiro computador. Cada computador pode comparar o produto escalar ou um valor derivado do produto escalar a um limite predeterminado. Desde que o produto escalar ou o valor derivado do produto escalar exceda o limite predeterminado, o primeiro computador e o segundo computador podem realizar uma interação um com o outro. Por exemplo, a interação pode compreender o segundo computador emitindo um token de acesso ao primeiro computador.
[006] Como exemplo, um sistema de autorização biométrica (segundo computador) pode comparar um vetor biométrico (ou seja, uma instância biométrica vetorizada) fornecido por um primeiro computador (operado ou pertencente a um usuário correspondente ao vetor biométrico) a um vetor biométrico armazenado em um segundo computador, e o segundo computador pode emitir um token de acesso (como um token de pagamento ou um token que permite ao usuário acessar um edifício) se a biometria corresponder. No entanto, o segundo computador pode não querer dar ao usuário uma cópia de seu vetor biométrico armazenado, pois o usuário pode ser um fraudador que tenta roubar o vetor biométrico para realizar o roubo de identidade. Da mesma forma, o usuário pode não estar disposto a dar ao segundo computador uma cópia de seu vetor biométrico, visto que o segundo computador pode ser operado por um fraudador. As modalidades podem ser
3 / 64 usadas para calcular o produto escalar e realizar uma comparação das duas instâncias biométricas usando o produto escalar, sem o usuário revelar seu respectivo vetor biométrico para o segundo computador e sem o segundo computador revelar seu respectivo vetor biométrico para o usuário. Desta forma, o usuário pode ser autorizado sem qualquer risco de expor dados sensíveis.
[007] As modalidades fornecem uma melhoria em relação aos sistemas convencionais porque as modalidades permitem que o produto escalar seja calculado sem realizar tantas comunicações entre os computadores ou entidades, proporcionando uma melhoria na velocidade e confiabilidade. Em modalidades da presente divulgação, o primeiro computador e o segundo computador calculam simultaneamente o produto escalar e nem o primeiro computador nem o segundo computador precisam transmitir a magnitude quadrada do primeiro vetor, α ou a magnitude quadrada do segundo vetor β para o outro computador. Isso reduz o número de mensagens enviadas entre computadores, melhorando a velocidade, eficiência e confiabilidade do protocolo em relação aos sistemas convencionais.
[008] Uma modalidade é direcionada a um método que compreende: transmitir, por um primeiro computador, para um segundo computador, uma primeira chave pública, uma segunda chave pública, um primeiro vetor mascarado criptografado e um primeiro vetor aleatório criptografado, em que o primeiro vetor mascarado criptografado é um primeiro vetor mascarado criptografado usando a primeira chave pública e o primeiro vetor aleatório criptografado é um primeiro vetor aleatório criptografado usando a segunda chave pública; receber, pelo primeiro computador, a partir do segundo computador, uma terceira chave pública, uma quarta chave pública, um segundo vetor mascarado criptografado e um segundo vetor aleatório criptografado, em que o segundo vetor mascarado criptografado é um
4 / 64 segundo vetor mascarado criptografado, usando a terceira chave pública e o segundo vetor aleatório criptografado é um segundo vetor aleatório criptografado, usando a quarta chave pública; receber, pelo primeiro computador, a partir do segundo computador, um terceiro vetor de diferença criptografado permutado e um quarto vetor de diferença criptografado permutado, em que o terceiro vetor de diferença criptografado permutado é criptografado usando a primeira chave pública e permutado usando uma terceira permutação, e em que o quarto vetor de diferença criptografado permutado é criptografado usando a segunda chave pública e permutado usando uma quarta permutação; produzir, pelo primeiro computador, um terceiro vetor de diferença permutado ao descriptografar o terceiro vetor de diferença criptografado permutado usando uma primeira chave privada correspondente à primeira chave pública; produzir, pelo primeiro computador, um quarto vetor de diferença permutado ao descriptografar o quarto vetor de diferença criptografado permutado usando uma segunda chave privada correspondente à segunda chave pública; e calcular, pelo primeiro computador, um produto escalar de um vetor e um segundo vetor com base no primeiro vetor mascarado, no primeiro vetor aleatório, no terceiro vetor de diferença permutada e no quarto vetor de diferença permutada.
[009] Outra modalidade é direcionada a um primeiro computador que compreende: um processador; e um meio legível por computador não transitório acoplado ao processador, o meio legível por computador não transitório compreendendo código, executável pelo processador para implementar o método mencionado acima.
[0010] Estas e outras modalidades são descritas em detalhes abaixo. Uma melhor compreensão da natureza e das vantagens das modalidades pode ser obtida com referência à seguinte descrição detalhada e aos desenhos anexos.
TERMOS
5 / 64
[0011] Um "computador servidor" pode incluir um computador poderoso ou cluster de computadores. Por exemplo, o computador servidor pode ser um mainframe grande, um agrupamento de minicomputadores ou um grupo de servidores que funciona como uma unidade. Em um exemplo, o computador de servidor pode ser um servidor de banco de dados acoplado a um servidor da Web. O computador servidor pode incluir um ou mais aparelhos computacionais e pode usar qualquer de uma variedade de estruturas, disposições e compilações de computação para atender as solicitações de um ou mais computadores de cliente.
[0012] Uma “memória” pode ser qualquer dispositivo adequado ou dispositivos que podem armazenar dados eletrônicos. Uma memória adequada pode incluir um meio legível por computador não transitórios que armazena as instruções que podem ser executadas por um processador para implementar um método desejado. Exemplos de memórias podem incluir um ou mais chips de memória, discos rígidos, etc. Essas memórias podem operar usando qualquer modo adequado elétrico, óptico e/ou magnético de operação.
[0013] Um "processador" pode se referir a qualquer dispositivo ou dispositivos de computação de dados apropriados. Um processador pode incluir um ou mais microprocessadores trabalhando juntos para realizar uma função desejada. O processador pode incluir uma CPU que compreende pelo menos um processador de dados de alta velocidade adequado para executar componentes de programa para executar solicitações geradas pelo usuário e/ou sistema. A CPU pode ser um microprocessador, tal como da AMD Athlon, Duron e/ou Opteron; IBM e/ou PowerPC da Motorola; Processador de Celular da IBM e da Sony; Intel Celeron, Itanium, Pentium, Xeon e/ou XScale; e/ou processador(es) similar(es).
[0014] Um "elemento seguro" pode se referir a um componente que pode executar uma função com segurança. Um elemento seguro pode ser uma memória que armazena dados com segurança, de forma que o acesso aos
6 / 64 dados seja protegido. Um exemplo de um “elemento seguro” é um ambiente de execução confiável (TEE), uma área segura de um processador. Outro exemplo de elemento seguro é um cartão de circuito integrado universal (UICC), um cartão inteligente seguro. Um exemplo adicional de um elemento seguro é um elemento seguro embutido, um componente de hardware embutido em um sistema mecânico ou elétrico maior.
[0015] Um "vetor" pode se referir a uma lista ordenada de componentes. Os componentes de um vetor podem ser numéricos, por exemplo, um vetor exemplar pode ter três componentes: c→ = [1,2,3]. Os componentes de um vetor podem ser associados a rótulos, por exemplo, um segundo vetor exemplar d→ pode ter três componentes: d→ = [altura: 1,72 metros, peso: 63,5 libras, idade: 25 anos]. Operações matemáticas podem ser aplicadas a vetores, por exemplo, dois vetores podem ser somados ou subtraídos um do outro. Um "vetor aleatório" pode se referir a uma lista ordenada de componentes que são gerados aleatoriamente ou pseudo- aleatoriamente, por exemplo, usando um gerador de número aleatório ou pseudoaleatório. Um "vetor de diferença" pode se referir a um vetor que iguala a diferença entre dois vetores, por exemplo, e→ = d→ - c→. Um "vetor mascarado" pode se referir a uma soma vetorial de um vetor e um vetor aleatório. O termo "vetorização" pode se referir a qualquer processo pelo qual um conjunto de dados é convertido em um vetor, por exemplo, o processo pelo qual a altura, peso e idade de uma pessoa são convertidos em um vetor que compreende componentes correspondentes à altura, peso dessa pessoa, e idade.
[0016] Uma “permutação” pode se referir a uma maneira pela qual algo pode ser ordenado ou organizado. O termo "permutado" pode indicar que algo foi pedido ou organizado por meio de uma permutação. Por exemplo, um vetor permutado pode se referir a um vetor que foi reorganizado de acordo com uma permutação.
7 / 64
[0017] Um “usuário” pode se referir a uma pessoa ou coisa que emprega alguma outra coisa para alguma finalidade. Um usuário pode incluir um indivíduo que pode estar associado a uma ou mais contas pessoais e/ou dispositivos de usuário. O usuário também pode ser referido como um titular do cartão, titular de conta ou consumidor em algumas modalidades.
[0018] Um “recurso” pode se referir a algo que pode ser usado por uma entidade ou transferido entre entidades. Exemplos de recursos incluem bens, serviços, informações e/ou acesso a locais restritos.
[0019] Um “provedor de recursos” pode se referir a uma entidade que pode fornecer recursos. Exemplos de fornecedores de recursos incluem comerciantes, agências governamentais, etc. Um provedor de recursos pode operar um computador provedor de recursos.
[0020] Um "dispositivo de comunicação" pode compreender qualquer dispositivo adequado que pode fornecer recursos de comunicação remota ou direta. Exemplos de recursos de comunicação remota incluindo usando uma rede de telefonia móvel (sem fio), rede de dados sem fio (por exemplo, 3G, 4G ou redes similares), Wi-Fi, Wi-Max, ou qualquer outro meio de comunicação que pode fornecer acesso a uma rede como a Internet ou uma rede privada. Exemplos de dispositivos de comunicação incluem desktops, consoles de videogame, telefones celulares (por exemplo, telefones celulares), PDAs, tablets, netbooks, laptops, reprodutores de música pessoais, leitores manuais especializados, cartões inteligentes, etc. Outros exemplos de dispositivos de comunicação incluem dispositivos vestíveis, como relógios inteligentes, pulseiras de fitness, tornozeleiras, anéis, brincos, etc., bem como veículos com recursos de comunicação remota ou direta.
[0021] Uma “interação” pode referir-se a uma ação, efeito ou influência recíproca. Por exemplo, uma interação pode ser uma troca ou transação entre duas ou mais partes.
[0022] Um “terminal de acesso” pode ser qualquer dispositivo
8 / 64 adequado que forneça acesso a um sistema remoto. Um terminal de acesso também pode ser usado para se comunicar com um computador comercial, um computador de processamento de transações, um computador de autenticação ou qualquer outro sistema adequado. Um terminal de acesso pode geralmente estar localizado em qualquer local adequado, como no local de um comércio. Um terminal de acesso pode estar em qualquer forma adequada. Alguns exemplos de terminais de acesso incluem terminais de ponto de venda (POS), telefones celulares, PDAs, computadores pessoais (PCs), tablet PCs, leitores manuais especializados, decodificadores, caixas registradoras eletrônicas (ECRs), caixas eletrônicos (ATMs), caixas registradoras virtuais (VCRs), quiosques, sistemas de segurança, sistemas de acesso e semelhantes. Um terminal de acesso pode usar qualquer contato adequado ou modo de operação sem contato para enviar ou receber dados de, ou associado a, um dispositivo móvel do usuário. Em algumas modalidades, onde um terminal de acesso pode compreender um terminal POS, qualquer terminal POS adequado pode ser usado e pode incluir um leitor, um processador e um meio legível por computador. Um leitor pode incluir qualquer modo de operação com ou sem contato adequado. Por exemplo, os leitores de cartão exemplares podem incluir as antenas de rádio frequência (RF), scanners óticos, leitores de código de barras ou leitores de fita magnética para interagir com um dispositivo de pagamento e/ou dispositivo móvel. Em algumas modalidades, um telefone celular, tablet ou outro dispositivo sem fio dedicado usado como um terminal POS pode ser referido como um ponto móvel de venda ou um terminal "mPOS".
[0023] Uma “rede de acesso” pode referir-se a uma rede associada a um terminal de acesso. Uma rede de acesso pode incluir uma série de dispositivos que suportam o terminal de acesso, fornecendo algumas funcionalidades necessárias. Por exemplo, uma rede de acesso pode ser uma matriz de antenas ou feixes (como feixes de Wi-Fi ou Bluetooth) projetados
9 / 64 para se comunicar com uma coleção de dispositivos móveis em nome do terminal de acesso. Uma rede de acesso pode incluir uma rede de área local, uma rede de área ampla ou redes como uma rede celular ou a Internet.
[0024] O termo "instância biométrica" pode incluir informações relacionadas a uma observação biológica. Uma instância biométrica pode incluir dados biométricos correspondentes a uma amostra biométrica ou um modelo biométrico derivado da amostra biométrica ou dos dados biométricos. Uma instância biométrica pode ser usada para verificar a identidade de um usuário. Uma instância biométrica pode ser capturada por meio de uma interface biométrica, hardware usado para capturar instâncias biométricas. Por exemplo, uma instância biométrica pode ser capturada por meio de uma interface biométrica, como um scanner de íris, que compreende uma fonte de luz infravermelha e uma câmera. Exemplos de instâncias biométricas incluem representações digitais de varreduras da íris (por exemplo, códigos binários que representam uma íris), impressões digitais, gravações de voz, varreduras de rosto, etc. As instâncias biométricas podem ser armazenadas em um formato criptografado e/ou em uma memória segura de um dispositivo móvel.
[0025] O termo “chave criptográfica” pode se referir a algo usado na criptografia ou descriptografia. Como exemplo, uma chave criptográfica pode se referir a um produto de dois grandes números primos. Uma chave criptográfica pode servir como entrada em um processo criptográfico ou sistema criptográfico, como RSA ou AES, e pode ser usada para criptografar texto simples e produzir uma saída de texto cifrado ou descriptografar texto cifrado e produzir uma saída de texto simples.
[0026] O termo “texto simples” pode referir-se a um texto simples. Por exemplo, texto simples pode se referir a um texto que um ser humano ou um computador pode ler sem qualquer processamento, como a frase "olá, como vai você?" Também pode referir-se a texto em formato não criptografado. Números ou outros símbolos também podem ser qualificados
10 / 64 como texto simples.
[0027] O termo “texto cifrado” pode se referir a texto que está em uma forma criptografada. Por exemplo, isso pode se referir a um texto que deve ser descriptografado antes de ser compreendido por um ser humano ou computador. O texto cifrado pode ser gerado por qualquer número de algoritmos criptográficos, como RSA ou AES.
[0028] Um "adquirente" pode normalmente ser uma entidade empresarial (por exemplo, um banco comercial) que tem uma relação de negócios com um comerciante em particular ou outra entidade. Algumas entidades podem executar ambas funções de emissor e adquirente. Algumas modalidades podem abranger tais entidades únicas emissoras-adquirentes. Um adquirente pode operar um computador do adquirente, que também pode ser genericamente referido como um "computador de transporte".
[0029] Uma “entidade autorizada” pode ser uma entidade que autorize um pedido. Exemplos de entidades de autorização podem incluir emissores, agências governamentais, repositórios de documentos, administradores de acesso, etc. Um "emissor" normalmente pode se referir a uma entidade empresarial (por exemplo, um banco) que mantém uma conta para um usuário. Um emissor também pode emitir credenciais de pagamento armazenadas em um dispositivo móvel, como um telefone celular, cartão inteligente, tablet ou laptop para o consumidor. Uma entidade de autorização pode operar um computador de autorização.
[0030] “Dados de autenticação” podem incluir quaisquer dados adequados para provar que algo é verdadeiro e válido. Os dados de autenticação podem ser obtidos a partir de um usuário ou um dispositivo que é operado pelo usuário. Exemplos de dados de autenticação obtidos de um usuário podem incluir PINs (Números de Identificação Pessoal), senhas, etc. Exemplos de dados de autenticação que podem ser obtidos de um dispositivo móvel podem incluir números de série do dispositivo, identificadores de
11 / 64 elemento de segurança de hardware, impressões digitais do dispositivo, números de telefone, números IMEI, instâncias biométricas armazenadas no dispositivo móvel, etc.
[0031] O "dispositivo de pagamento" pode incluir qualquer dispositivo adequado que possa ser usado para realizar uma transação financeira, tal como para fornecer credenciais de pagamento para um comerciante. O dispositivo de pagamento pode ser um objeto de software, um objeto de hardware ou um objeto físico. Como exemplos de objetos físicos, o dispositivo de pagamento pode incluir um substrato, como um cartão de plástico ou papel, e as informações que são impressas, gravadas, codificadas, ou caso contrário incluídas em ou perto de uma superfície de um objeto. Um objeto de hardware pode se relacionar aos circuitos (por exemplo, valores de tensão permanente) e um objeto de software pode se relacionar a dados não- permanentes armazenados em um dispositivo. Um dispositivo de pagamento pode ser associados a um valor como um valor monetário, um desconto, ou crédito na loja e um dispositivo de pagamento pode estar associado a uma entidade como um banco, um comerciante, uma rede de processamento de pagamento ou uma pessoa. Um dispositivo de pagamento pode ser usado para fazer uma transação de pagamento. Os dispositivos de pagamento adequados podem ser portáteis e compactos de modo que os mesmos possam caber na carteira ou bolso do usuário (por exemplo, tamanho de bolso). Dispositivos de pagamento de exemplo podem incluir cartões inteligentes, cartões de tarja magnética, dispositivos de chaveiro (como o Speed-passTM disponível comercialmente na Exxon-Mobil Corp.), etc. Outros exemplos de dispositivos móveis incluem pagers, cartões de pagamento, cartões segurança, cartões de acesso, mídia inteligente, transponders e semelhantes. Se o dispositivo de pagamento estiver na forma de um cartão de débito, crédito ou inteligente, o dispositivo de pagamento também opcionalmente pode ter características tais como tarjas magnéticas. Esses dispositivos podem operar em modo de contato
12 / 64 sem contato. Em algumas modalidades, um dispositivo móvel pode funcionar como um dispositivo de pagamento (por exemplo, um dispositivo móvel pode armazenar e transmitir as credenciais de pagamento para uma transação).
[0032] Uma "credencial" pode ser quaisquer informações adequadas que sirva como evidência confiável de valor, propriedade, identidade ou autoridade. Uma “credencial de acesso” pode ser uma credencial que pode ser usada para obter acesso a um recurso específico (por exemplo, um bem, serviço, local, etc.). Uma credencial pode ser uma sequência de números, letras ou quaisquer outros caracteres adequados, ou qualquer objeto ou documento que pode servir como confirmação. Exemplos de credenciais incluem cartões de identificação, documentos certificados, cartões de acesso, senhas e outras informações de login, números de contas de pagamento, números de crachás de acesso, tokens de pagamento, tokens de acesso, etc.
[0033] As "credenciais de pagamento" podem incluir quaisquer informações adequadas associadas a uma conta (por exemplo, uma conta de pagamento e/ou dispositivo de pagamento associado à conta). Essas informações podem ser direcionadas à conta ou derivadas de informações relacionadas à conta. Exemplos de informações de conta podem incluir um PAN (número da conta principal ou "número da conta"), nome de usuário, data de validade, CVV (valor de verificação do cartão), dCVV (valor de verificação dinâmico do cartão), CVV2 (valor de verificação do cartão 2), etc. As credenciais de pagamento podem ser quaisquer informações que identifiquem ou estejam associadas à conta de pagamento. AS credenciais de pagamento podem ser fornecidas para realizar um pagamento a partir da conta de pagamento. As credenciais de pagamento também podem incluir um nome de usuário, uma data de validade, um número ou código de cartão de presente e qualquer informação adequada.
[0034] Um “token” pode ser um valor substituto para uma credencial real. Um token pode ser um tipo de credencial e pode ser uma sequência de
13 / 64 números, letras ou quaisquer outros caracteres adequados. Exemplos de tokens incluem tokens de pagamento, tokens de acesso, tokens de identificação pessoal, etc.
[0035] Um “token de pagamento” pode incluir um identificador para uma conta de pagamento que é um substituto para um identificador de conta, como um número de conta principal (PAN). Por exemplo, um token pode incluir uma série de caracteres alfanuméricos que podem ser usados como um substituto para um identificador de conta original. Por exemplo, um token 4900 0000 0000 0001” pode ser usado no lugar de um PAN “4147 0900 0000 1234”. Em algumas modalidades, um token pode ser "preservador de formato" e pode ter um formato numérico que está em conformidade com o identificador de conta usado em redes de processamento de transações existentes (por exemplo, formato de mensagem de transação financeira ISO 8583). Em algumas modalidades, um token pode ser usado no lugar de um PAN para iniciar, autorizar, liquidar ou resolver uma operação de pagamento ou representar a credencial original em outros sistemas onde a credencial original normalmente seria fornecida. Em algumas modalidades, um valor de token pode ser gerado de modo que a recuperação do PAN original ou outro identificador de conta do valor de token não possa ser derivado computacionalmente. Além disso, em algumas modalidades, o formato de token pode ser configurado para permitir que a entidade que recebe o token possa identificá-lo como um token e reconhecer a entidade que emitiu o token.
[0036] Uma "mensagem de solicitação de autorização" pode ser uma mensagem eletrônica que é enviada para solicitar autorização para uma transação. Em algumas modalidades, uma mensagem de pedido de autorização pode ser uma mensagem eletrônica enviada para uma rede de processamento de pagamento e/ou um emissor de um cartão de pagamento para solicitar autorização para uma transação. Uma mensagem de solicitação
14 / 64 de autorização de acordo com algumas modalidades pode cumprir a norma ISO 8583, que é um padrão para sistemas que trocam informações de transação eletrônica associadas a um pagamento feito por um consumidor usando um dispositivo de pagamento ou conta de pagamento. A mensagem de solicitação de autorização pode incluir um identificador de conta de emissor pode ser associado a um dispositivo de pagamento ou a conta de pagamento. Uma mensagem de solicitação de autorização também pode incluir elementos de dados adicionais correspondentes às "informações de identificação" incluindo, a título de exemplo apenas: um código de serviço, um CVV (valor de verificação de cartão), um dCVV (valor de verificação de cartão dinâmico), uma data de validade, etc. Uma mensagem de solicitação de autorização também pode incluir "informações de transações", tal como qualquer informações associadas a uma transação atual, tais como quantidade de transação, identificador de vendedor, local do vendedor, valor de transação, etc., assim como quaisquer outras informações que podem ser utilizadas para determinar se identificar e/ou autorizar uma transação.
[0037] Uma "mensagem de resposta de autorização" pode ser uma resposta de mensagem eletrônica para uma mensagem de solicitação de autorização. A mesma pode ser gerada por uma instituição financeira emissora ou uma rede de processamento de pagamento. A mensagem de resposta de autorização pode incluir, a título de exemplo, um ou mais dos indicadores de status a seguir: Aprovação - a transação foi aprovada; Recusar - a transação não foi aprovada: ou Call Center --- resposta pendente de mais informações, o comerciante deve ligar para o número de telefone de autorização gratuita. A mensagem de resposta de autorização também pode incluir um código de autorização, que pode ser um código que um banco emissor de cartão de crédito retorna em resposta a uma mensagem de solicitação de autorização em uma mensagem eletrônica (seja diretamente ou por meio da rede de processamento de pagamento) para o dispositivo de
15 / 64 acesso do comerciante (por exemplo, equipamento POS) que indica a aprovação da transação. O código pode servir como prova de autorização. Conforme observado acima, em algumas modalidades, uma rede de processamento de pagamento pode gerar ou encaminhar a mensagem de resposta de autorização ao comerciante.
[0038] Um “código de dispositivo” ou “identificador de dispositivo” pode ser um código especificamente associado a um dispositivo (por exemplo, apenas um dispositivo). O código do dispositivo pode ser derivado de qualquer informação específica do dispositivo, incluindo, mas não se limitando a incluir um ou mais de um identificador de elemento seguro (SE ID), um número IMEI, um número de telefone, uma localização geográfica, um número de série do dispositivo, um impressão digital do dispositivo, etc. Esses códigos podem ser derivados de tais informações usando qualquer operação matemática adequada, incluindo hashing e/ou criptografia. Os códigos do dispositivo podem incluir qualquer número adequado e/ou tipo de caracteres.
BREVE DESCRIÇÃO DAS FIGURAS
[0039] A FIG. 1 mostra um diagrama de blocos de um sistema exemplar de acordo com algumas modalidades da invenção.
[0040] A FIG. 2 mostra um diagrama de blocos de um primeiro computador exemplar de acordo com algumas modalidades.
[0041] A FIG. 3 mostra um diagrama de blocos de um segundo computador exemplar de acordo com algumas modalidades.
[0042] A FIG. 4 mostra uma visão geral do fluxograma de um método para calcular o produto escalar de dois vetores e realizar uma interação de acordo com algumas modalidades.
[0043] A FIG. 5 mostra um fluxograma de uma fase de configuração, parte de um método de cálculo do produto escalar de dois vetores de acordo com algumas modalidades.
16 / 64
[0044] A FIG. 6 mostra um fluxograma de uma fase de cálculo intermediária, parte de um método de cálculo do produto escalar de dois vetores de acordo com algumas modalidades.
[0045] A FIG. 7 mostra um fluxograma de uma fase de cálculo de produto escalar, parte de um método de cálculo do produto escalar de dois vetores de acordo com algumas modalidades.
[0046] A FIG. 8 mostra uma primeira interação exemplar, compreendendo uma transação de pagamento entre um usuário de um primeiro computador e um provedor de recursos.
[0047] A FIG. 9 mostra uma segunda interação exemplar, compreendendo um processo de autenticação de entrada de edifício entre um usuário de um primeiro computador e um provedor de recursos.
DESCRIÇÃO DETALHADA
[0048] Como as modalidades são direcionadas a métodos e sistemas de preservação de privacidade para calcular o produto escalar de dois vetores, um breve iniciador sobre vetores pode ser útil para compreender melhor as modalidades.
[0049] Embora o termo vetor tenha significados diferentes nas ciências, geralmente um vetor se refere a uma lista ordenada de componentes. Em alguns casos, um vetor também pode ser representado como magnitude e ângulo ou direção emparelhados. Por exemplo, o vetor [norte: 1 milha, oeste: 1 milha] representa um caminho reto entre um primeiro ponto no espaço e um segundo ponto no espaço exatamente uma milha ao norte e uma milha a oeste do primeiro ponto. Esse vetor pode, alternativamente, ser representado como [magnitude: 1,414 milhas, direção: 45 graus], indicando que o vetor aponta 1,414 milhas, 45 graus no sentido horário do norte. Ambas as representações são equivalentes porque descrevem o mesmo caminho. Como variáveis em equações matemáticas, os vetores são frequentemente representados por um símbolo com uma seta no topo, por exemplo: . Os vetores estão sujeitos a
17 / 64 muitas relações matemáticas às quais outras variáveis estão sujeitas, por exemplo, vetores semelhantes podem ser somados ou subtraídos uns dos outros.
[0050] Muitas formas de dados podem ser vetorizadas, ou seja, convertidas em vetores ou representadas por vetores. Como exemplo, as estatísticas de saúde de uma pessoa (por exemplo, altura, peso, idade) podem ser representadas por um vetor como [altura: 1,72 metros, peso: 63,5 libras, idade: 25 anos]. A vetorização é útil porque permite que os dados sejam comparados objetivamente usando operações vetoriais que podem ser executadas rapidamente por um computador.
[0051] Por exemplo, um método de comparação de dois conjuntos de dados é vetorizar cada conjunto de dados e determinar o ângulo entre os dois vetores. Vetores semelhantes têm um pequeno ângulo entre eles, enquanto vetores diferentes têm um grande ângulo entre eles. O ângulo entre dois vetores idênticos (por exemplo, [norte: 1 milha, oeste: 0 milhas] e [norte: 1 milha, oeste: 0 milhas]) é zero, enquanto dois vetores ortogonais (por exemplo, [norte: 1 milha, oeste : 0 milhas] e [norte: 0 milhas, oeste: 1 milha]) têm um ângulo de 90 graus entre eles e dois vetores opostos (por exemplo, [norte: 1 milha, oeste: 0 milhas] e [sul: 1 milha, oeste: 0 milhas]) têm um ângulo de 180 graus entre eles. O ângulo entre dois conjuntos de dados vetorizados (por exemplo, estatísticas de saúde correspondendo a uma primeira pessoa e estatísticas de saúde correspondendo a uma segunda pessoa), ou uma função trigonométrica (por exemplo, cosseno) do ângulo entre dois conjuntos de dados vetorizados pode ser usado como uma similaridade ou diferença métrica para avaliar a similaridade ou diferença entre esses dois conjuntos de dados.
[0052] Da mesma forma, operações de vetor, como o produto escalar, podem ser usadas para avaliar a similaridade ou diferença entre dois vetores. O produto escalar de dois vetores pode ser calculado multiplicando cada
18 / 64 componente do primeiro vetor pelo componente correspondente do segundo vetor e somando o resultado, ou seja:
[0053] Por exemplo, o produto escalar de c→ = [1,3, - 5] e d→ = [4, -2, -1] igual a:
[0054] O produto escalar é útil porque, entre outros motivos, é proporcional ao ângulo entre os dois vetores, conforme demonstrado pela seguinte igualdade:
[0055] Onde IIc→II é a magnitude (ou seja, o “tamanho”) do vetor c→, IId→II é a magnitude do vetor d→ e Θ é o ângulo entre os dois vetores. Como tal, o produto escalar de dois conjuntos de dados vetorizados pode ser usado para determinar semelhanças ou diferenças entre esses conjuntos de dados.
[0056] A vetorização pode ser usada para simplificar ou acelerar a comparação de dados, como biometria. Em um exemplo, um biométrico capturado pode ser comparado com um modelo biométrico ou biométrico armazenado em um banco de dados, a fim de identificar ou autenticar uma pessoa correspondente ao biométrico. Um exemplo é a impressão digital, em que as imagens das impressões digitais de uma pessoa são capturadas (biométricas) e comparadas às impressões digitais armazenadas em um banco de dados de impressão digital para identificar essa pessoa. Se as impressões digitais capturadas e as impressões digitais armazenadas no banco de dados de impressão digital forem vetorizadas, é possível determinar se as impressões digitais capturadas correspondem a um conjunto de impressões digitais armazenadas no banco de dados de impressão digital usando operações vetoriais, como o cálculo do produto escalar das impressões digitais vetorizadas capturadas e as impressões digitais vetorizadas armazenadas no banco de dados.
19 / 64
[0057] Métodos exatos de vetorização de biometria ou modelos biométricos estão além do escopo desta divulgação. No entanto, o exemplo a seguir é fornecido a fim de ilustrar como uma biometria exemplar pode ser vetorizada.
[0058] Um código de íris (um biométrico tipicamente compreendendo 256 bytes que pode ser usado para realizar o reconhecimento de íris) pode ser vetorizado convertendo-o em um vetor com 256 componentes, cada componente correspondendo a um byte do código de íris correspondente. Como alternativa, o código da íris pode ser convertido em um vetor binário que compreende 2048 componentes, cada um compreendendo um bit do código da íris correspondente ou, alternativamente, um vetor com 128 componentes, cada componente correspondendo a dois bytes do código da íris correspondente. Existem várias maneiras pelas quais uma biometria, como um código de íris pode ser convertida em um vetor e outras biométricas (por exemplo, impressões digitais, varreduras faciais, etc.) podem ser convertidas em vetores usando métodos semelhantes.
[0059] Embora existam vários métodos e técnicas para comparar a biometria, vetorizada ou não, poucas técnicas são orientadas para preservar a privacidade do indivíduo. Por exemplo, quando uma pessoa é submetida a uma leitura de impressão digital, ela normalmente tem que fornecer suas impressões digitais (a biométrica) a uma entidade (por exemplo, uma agência de aplicação da lei) para que a entidade compare essas impressões digitais com as impressões digitais armazenadas em um base de dados. No entanto, isso expõe a pessoa ao risco de roubo de identidade. Um fraudador pode se passar por uma entidade legítima e solicitar a biometria da pessoa como parte de uma solicitação de autenticação aparentemente legítima (por exemplo, por meio de um ataque de phishing de email). O fraudador pode então usar essa biometria para se passar por uma pessoa como parte de um esquema de roubo de identidade.
20 / 64
[0060] As modalidades da presente divulgação, no entanto, fornecem métodos para duas entidades (por exemplo, dois computadores, como um smartphone pertencente a um usuário e um servidor remoto) para calcular o produto escalar de dois vetores (por exemplo, dois biométricos vetorizados) sem qualquer entidade revelando sua respectiva biometria para a outra entidade. Como tal, um servidor remoto pode determinar se a biometria de uma pessoa corresponde a uma biométrica armazenada em um banco de dados biométrico sem realmente receber a biometria da pessoa. Isso resulta em um aumento tangível na segurança da informação e evita esquemas de roubo de identidade, como o descrito acima.
[0061] As modalidades conseguem isso usando criptografia homomórfica aditiva, usando criptosistemas como o criptosistema Paillier. A criptografia homomórfica aditiva permite que as entidades participantes calculem a soma dos dados criptografados sem primeiro descriptografar os dados. Particularmente, no criptosistema Paillier, o produto de dois textos criptografados (ou seja, dados criptografados) é igual à soma criptografada dos textos simples correspondentes:
[0062] As modalidades da presente divulgação fazem uso desta propriedade para permitir que dois computadores calculem o produto escalar de dois vetores enquanto os componentes dos vetores são criptografados. Como as chaves privadas usadas para descriptografar os vetores são conhecidas apenas por suas respectivas entidades (ou seja, um primeiro computador conhece chaves privadas que são desconhecidas para um segundo computador, e vice-versa), cada entidade pode impedir que a outra entidade saiba de seus vetor, enquanto ainda calcula o produto escalar dos dois vetores.
[0063] A FIG. 1 mostra um diagrama de blocos de um sistema 100 exemplar, compreendendo um primeiro computador 102, um segundo computador 104, um computador provedor de recursos 106 e um usuário 108.
21 / 64 Os computadores do sistema 100 podem estar em comunicação operacional uns com os outros por meio de uma ou mais redes de comunicação.
[0064] Uma rede de comunicações pode assumir qualquer forma adequada, que pode ser qualquer uma e/ou a combinação das seguintes: uma interconexão direta; a Internet; uma rede local (LAN); uma Rede de Área Metropolitana (MAN); uma missão operacional como nós na Internet (OMNI); uma conexão personalizada segura; uma rede de longa distância (WAN); uma rede sem fio (por exemplo, empregando protocolos tais como, mas não se limitando a, Wireless Application Protocol (WAP), I-mode e/ou semelhantes); e/ou semelhantes. As mensagens entre as entidades, provedores, usuários, dispositivos, computadores e redes podem ser transmitidas usando um protocolo de comunicação seguro, como, mas não limitado a, File Transfer Protocol (FTP); Protocolo de Transferência de Hipertexto (HTTP); Secure HyperText Transfer Protocol (HTTPS), Secure Socket Layer (SSL), ISO (por exemplo, ISO 8583) e/ou semelhantes.
[0065] Métodos de acordo com modalidades permitem que o primeiro computador 102 e o segundo computador 104 calculem o produto escalar de um primeiro vetor 102A e um segundo vetor 104A sem cada computador revelar seu respectivo vetor ou o produto escalar calculado para o outro computador. Através de uma série de fases, descritas abaixo com referência às FIGs. 4-7, o primeiro computador 102 e o segundo computador 104 podem preparar e trocar informações que permitem ao primeiro computador 102 e ao segundo computador 104 calcular simultaneamente o produto escalar do primeiro vetor 102A e do segundo vetor 104A. O primeiro computador 102 e o segundo computador 104 podem, cada um, comparar simultaneamente o produto escalar calculado ou um valor derivado do produto escalar (por exemplo, um ângulo entre os dois vetores) para limiares predeterminados. Se o produto escalar do valor derivado do produto escalar exceder os limites predeterminados, o primeiro computador 102 e o segundo computador 104
22 / 64 podem realizar uma interação um com o outro. Esta interação pode compreender adicionalmente um provedor de recursos, que pode possuir ou operar um computador provedor de recursos 106.
[0066] Interações exemplares são descritas em mais detalhes abaixo com referência às FIGs. 8 e 9. Geralmente, a comparação do produto escalar ou um valor derivado do produto escalar para um limite predeterminado pode ser realizada como parte de um procedimento de autenticação, e a interação pode ocorrer desde que a autenticação tenha sido bem-sucedida (ou seja, o produto escalar ou um valor derivado do produto escalar excede o limite predeterminado). Por exemplo, se o primeiro vetor 102A é um vetor biométrico armazenado no primeiro computador 102 (por exemplo, um smartphone de propriedade do usuário 108) correspondente ao usuário 108, e o segundo vetor 104A é um vetor biométrico correspondente ao usuário 108 que é armazenado no segundo computador 104 (por exemplo, um vetor biométrico no arquivo correspondente ao usuário 108), o produto escalar do primeiro vetor 102A e o segundo vetor 104A podem ser usados para autenticar o usuário 108. Uma vez que o usuário 108 é autenticado, uma interação pode ocorrer, como uma transação de pagamento entre o usuário 108 e um comerciante (isto é, um provedor de recursos operando o computador provedor de recursos 106).
[0067] A FIG. 2 mostra um primeiro computador 200 exemplar de acordo com algumas modalidades. Particularmente, a FIG. 2 mostra o primeiro computador 200 como um dispositivo móvel (por exemplo, um smartphone). Deve ser entendido, no entanto, que o primeiro computador 200 pode assumir muitas formas, como qualquer dispositivo de comunicação apropriado conforme definido acima na seção de termos.
[0068] O primeiro computador 200 pode incluir circuitos que são usados para habilitar certas funções do dispositivo, como comunicação sem fio ou telefonia. Os elementos funcionais responsáveis por habilitar essas
23 / 64 funções podem incluir um processador 202 que pode executar instruções que implementam as funções e operações do dispositivo. O processador 202 pode acessar o armazenamento de dados 210 (ou outra região ou elemento de memória adequado) para recuperar instruções ou dados usados na execução das instruções. O elemento de entrada/saída de dados 206, como um teclado ou tela de toque, pode ser usado para permitir que um usuário opere o primeiro computador 200 (por exemplo, permitindo ao usuário navegar para um aplicativo de carteira móvel 214). A entrada/saída de dados 206 também pode ser configurada para dados de saída (por meio de um alto-falante, por exemplo). O monitor 204 também pode ser usado para enviar dados para um usuário. O elemento de comunicação 208 pode ser usado para permitir a transferência de dados entre o primeiro computador 200 e uma rede com ou sem fio (via antena 224, por exemplo), permitir funções de transferência de dados e pode ser usado para auxiliar na conectividade com a Internet ou outra rede. O primeiro computador 200 também pode incluir interface de elemento sem contato 220 para permitir a transferência de dados entre o elemento sem contato 222 e outros elementos do dispositivo. O elemento sem contato 222 pode incluir uma memória segura e um elemento de transferência de dados de comunicação de campo próximo (ou outra forma de tecnologia de comunicação de curto alcance). Como observado, telefones celulares, telefones inteligentes, dispositivos vestíveis, laptops ou outros dispositivos semelhantes são exemplos de dispositivos móveis e, portanto, exemplos de primeiros computadores de acordo com modalidades.
[0069] O armazenamento de dados 210 pode compreender um meio legível por computador que também pode compreender uma série de módulos de software, como um módulo de comunicação 212, um aplicativo de carteira móvel 214, um aplicativo de biometria 216 e um módulo de cálculo de produto escalar 218.
[0070] O módulo de comunicações 212 pode compreender código que
24 / 64 permite ao processador 202 implementar ou permitir comunicações entre o primeiro computador 200 e outros dispositivos, como outros dispositivos móveis, terminais de acesso ou um segundo computador. O módulo de comunicação 212 pode permitir a comunicação de acordo com qualquer protocolo apropriado, como TCP, UDP, IS-IS, OSPF, IGRP, EIGRP, RIP, BGP, etc. Ele pode permitir comunicações seguras permitindo que o processador 202 estabeleça um canal de comunicação seguro ou criptografado entre o primeiro computador 200 e outros dispositivos. Por exemplo, o módulo de comunicação 212 pode compreender código executável pelo processador 202 para realizar uma troca de chave (tal como uma troca de chave Diffie-Hellman) entre o dispositivo móvel 200 e outro dispositivo. O módulo de comunicação 212 pode ainda permitir a transmissão de tokens de acesso, incluindo tokens de pagamento, para outros dispositivos, como um terminal de acesso, além de permitir a transmissão de vetores criptografados ou não criptografados e chaves criptográficas.
[0071] O aplicativo de carteira móvel 214 pode incluir código que permite que o primeiro computador 200 gerencie tokens. Por exemplo, o aplicativo de carteira móvel 214 pode compreender um código que permite ao processador 202 recuperar tokens de acesso armazenados na memória segura 222 através da interface de elemento sem contato 220. O aplicativo de carteira móvel 214 pode compreender ainda um código que permite ao primeiro computador 200 exibir qualquer informação de token adequada, por exemplo, a hora e data durante a qual um token de acesso foi fornecido, um alias ou identificador para o token de acesso, a hora e a data de a interação ou transação mais recente envolvendo o token de acesso, etc. Além disso, o aplicativo de carteira móvel 214 pode compreender código que permite ao processador 202 exibir uma interface gráfica de usuário (GUI) que permite a um usuário ativar a funcionalidade relacionada ao token. Além disso, o aplicativo de carteira móvel 214 pode compreender código que permite ao
25 / 64 primeiro computador 200 enviar tokens para um terminal de acesso, por exemplo, durante uma transação com um comerciante.
[0072] O aplicativo de biometria 216 pode compreender código que permite ao primeiro computador 200 capturar instâncias biométricas por meio de entrada/saída de dados 206. Por exemplo, durante um processo de inscrição (tal como a fase de inscrição 402 da FIG. 4, descrita em mais detalhes abaixo), o primeiro computador 200 pode ser usado para capturar uma instância biométrica, como uma varredura facial, usando um elemento de entrada/saída de dados 206 como uma câmera. O aplicativo de biometria 216 pode ser usado para capturar esta instância biométrica e armazenar a instância biométrica, seja de forma criptografada ou não criptografada na memória segura 220. O aplicativo de biometria 216 pode incluir adicionalmente código ou instruções executáveis pelo processador 202 para vetorizar instâncias biométricas, isto é, gerar vetores biométricos correspondentes a essas instâncias biométricas. O aplicativo de biometria 216 também pode incluir código ou instruções executáveis pelo processador 202 para participar de um sistema de interação com base biométrica, como um sistema de transação com base em biometria. Esses códigos ou instruções podem incluir códigos para comunicação com um terminal de acesso e execução de funções, como a transmissão de vetores biométricos para o terminal de acesso.
[0073] O módulo de cálculo de produto escalar 218 pode compreender código ou instruções executáveis pelo processador 202 para realizar um cálculo de preservação de privacidade do produto escalar de dois vetores de acordo com algumas modalidades. Estes métodos podem ser melhor compreendidos com referência às FIGs. 4-7 abaixo. O código ou as instruções podem incluir a geração de números aleatórios ou vetores aleatórios, a geração de vetores mascarados, chaves criptográficas privadas (incluindo chaves criptográficas homomórficas aditivas, como chaves Paillier), criptografar e descriptografar vetores, gerar vetores de negação,
26 / 64 vetores de diferença, permutações, calcular magnitudes quadradas e calcular o produto escalar de dois vetores, entre outras coisas, como descrito abaixo com referência às FIGs. 4-7.
[0074] A FIG. 3 mostra um segundo computador 300 exemplar de acordo com algumas modalidades da presente divulgação. O segundo computador 300 pode compreender um processador 302, uma interface de comunicação 304 e um meio legível por computador 306. O meio legível por computador 306 pode compreender uma série de módulos de software, incluindo um módulo de comunicação 308, um módulo de inscrição 310, um módulo de cálculo de produto escalar 312, um módulo de interação 314 e um banco de dados de vetor 316, entre outros.
[0075] O processador 302 pode ser qualquer aparelho ou dispositivo de processamento adequado, conforme descrito na seção de termos acima. A interface de comunicação 304 pode compreender uma interface de rede que permite ao segundo computador 300 se comunicar com outros computadores ou sistemas (por exemplo, o primeiro computador) através de uma rede como a Internet.
[0076] O módulo de comunicação 308 pode compreender código ou software, executável pelo processador 302 para estabelecer comunicação entre o segundo computador 300 e outras entidades, incluindo o primeiro computador. Como um exemplo, o módulo de comunicações 308 pode compreender código que permite a geração de pacotes UDP (User Datagram Protocol) ou TCP (Transmission Control Protocol), ou qualquer outra forma apropriada de comunicação de rede. O segundo computador 300 pode usar o módulo de comunicação 308 para transmitir e receber dados de entidades, como o primeiro computador. Esses dados podem incluir vetores, criptografados, permutados ou de outra forma, e chaves criptográficas, conforme descrito abaixo com referência à primeira fase de transmissão 406 e à segunda fase de transmissão 408 da FIG. 4.
27 / 64
[0077] O módulo de inscrição 310 pode compreender um código que permite a um usuário (por exemplo, usuário 108 da FIG. 1) se inscrever em um sistema de autenticação baseado em vetor, como um sistema de autenticação de vetor biométrico. Em alguns métodos de acordo com as modalidades, a inscrição pode ser opcional. Como tal, o módulo de inscrição 310 também pode ser opcional. O módulo de inscrição 310 pode compreender código que permite ao segundo computador 300 associar um vetor biométrico correspondente a um usuário ou um primeiro computador a uma identidade do usuário ou um identificador correspondente ao usuário. Por exemplo, o módulo de inscrição 310 pode compreender um código que permite ao segundo computador 300 associar um vetor biométrico correspondente a uma varredura da íris para um usuário desconhecido "John Doe". O módulo de inscrição 310 pode compreender adicionalmente o código que permite ao segundo computador 300 armazenar o vetor biométrico exemplar, em associação com um identificador correspondente a "John Doe", no banco de dados biométrico 316. Posteriormente, um primeiro computador correspondente a "John Doe" (por exemplo, o smartphone de John) e o segundo computador 300 podem realizar um cálculo de produto escalar para preservação de privacidade do vetor biométrico armazenado no banco de dados biométrico 318 e um vetor biométrico armazenado em o primeiro computador, para autenticar John Doe e realizar uma interação.
[0078] O módulo de cálculo de produto escalar 312 pode compreender código, executável pelo processador 302, para realizar um cálculo de produto escalar de preservação de privacidade de acordo com algumas modalidades. Os cálculos de produto escalar de preservação de privacidade podem ser melhor compreendidos com referência aos fluxogramas das FIGs. 4-7. O módulo de cálculo de produto escalar 312 pode compreender código que permite a geração de vetores aleatórios, vetores mascarados, chaves criptográficas, vetores permutados, etc., conforme
28 / 64 descrito abaixo, além de operações matemáticas usadas para calcular as somas de vetores, diferenças entre vetores e o magnitude ou magnitude quadrada dos vetores.
[0079] O módulo de interação 314 pode compreender código, executável pelo processador 302 para realizar uma interação com o primeiro computador. Esta interação pode compreender, por exemplo, a autenticação do primeiro computador a um provedor de recursos, de modo que o primeiro computador ou um usuário associado ao primeiro computador possa obter acesso a um recurso. Por exemplo, o provedor de recursos pode ser um comerciante, o recurso pode ser um bem ou serviço que um cliente deseja comprar, o primeiro computador pode ser um smartphone de propriedade do cliente e o segundo computador 300 pode ser um computador servidor associado com uma rede de processamento de pagamentos. A interação pode compreender a execução de uma transação de pagamento entre o usuário e o comerciante, e o módulo de interação 314 pode compreender um código executável pelo processador 302 para a execução da transação de pagamento entre o usuário e o comerciante.
[0080] Como uma segunda interação exemplar, um provedor de recursos pode ser um sistema de computador que controla o acesso a um edifício por meio de uma porta computadorizada trancada. A interação entre o primeiro computador e o segundo computador 300 pode compreender o segundo computador permitindo que um proprietário do primeiro computador acesse o edifício, por exemplo, enviando um sinal de controle para o computador provedor de recursos instruindo a porta ser aberta, ou fornecendo o primeiro computador com um token de acesso ou outra credencial que o primeiro computador pode fornecer ao computador do provedor de recursos, de modo que o computador do provedor de recursos abra a porta.
[0081] O banco de dados de vetores 316 pode compreender qualquer banco de dados, arquivo ou estrutura de memória contendo vetores. Esses
29 / 64 vetores podem incluir, por exemplo, vetores biométricos correspondentes a uma pluralidade de usuários inscritos. O segundo computador 300 pode recuperar um vetor do banco de dados de vetor 316 a fim de calcular o produto escalar desse vetor e outro vetor correspondente a um primeiro computador.
[0082] A FIG. 4 mostra uma visão geral do fluxograma de um método 400 de cálculo do produto escalar de um primeiro vetor a→ e um segundo vetor b→ de acordo com algumas modalidades. O método é dividido em sete fases: fase de inscrição 402, fase de configuração 404, primeira fase de transmissão 406, fase de cálculo intermediário 408, segunda fase de transmissão 410, fase de cálculo de produto escalar 412 e fase de interação 414.
[0083] A fase de inscrição 402 pode ser opcional, ou seja, em algumas modalidades, a fase de inscrição 402 pode ser realizada e em outras modalidades, a fase de inscrição 402 pode não ser realizada. As características da fase de inscrição 402 podem depender das características do primeiro vetor a→ e do segundo vetor b→ e da natureza da interação realizada na fase de interação 414.
[0084] Como um exemplo, os vetores podem corresponder a instâncias biométricas e o produto escalar dos dois vetores pode corresponder à similaridade entre as duas instâncias biométricas. Como tal, o produto escalar pode ser calculado a fim de determinar se as duas instâncias biométricas correspondem a um grau suficiente de certeza (por exemplo, 75% de correspondência, 95% de correspondência, 99% de correspondência, etc.). Neste caso, a fase de inscrição 402 pode compreender um processo de inscrição biométrica. Este processo de inscrição biométrica pode compreender, por exemplo, a captura de uma biometria de um usuário de inscrição (por exemplo, capturando uma imagem da íris do usuário, realizando uma digitalização de polegar ou impressão digital, etc.),
30 / 64 convertendo a biometria capturada (por exemplo, em uma código da íris ou outra representação digital apropriada da biometria), e armazenar com segurança a instância biométrica (por exemplo, em um elemento seguro em um primeiro computador e/ou em um banco de dados seguro em um segundo computador.
[0085] Como afirmado acima, as características da fase de inscrição 402 podem depender das características da fase de interação 414 e da interação. Como um exemplo, o método 400 da FIG. 4 poderia ser aplicado a um sistema de autorização biométrica para fazer pagamentos. A instância biométrica de um cliente, representada como um primeiro vetor a→, pode ser comparada à instância biométrica do cliente, representada como um segundo vetor b→ e armazenada em um servidor de processamento de pagamento. Se os vetores biométricos corresponderem (determinado com base no produto escalar do primeiro vetor e do segundo vetor), o servidor de processamento de pagamento pode autenticar o cliente e aprovar uma transação (ou seja, a interação da fase de interação 414) entre o cliente e um comerciante. Neste caso, como a interação é uma transação, a fase de inscrição 402 pode compreender adicionalmente a associação de uma credencial de pagamento (como um PAN) com o vetor biométrico (segundo vetor b→) armazenado no servidor de processamento de pagamento (segundo computador). Neste exemplo, a fase de inscrição 402 pode compreender adicionalmente o usuário ou consumidor preenchendo um formulário da web com informações, como o PAN do usuário, que pode então ser criptografado e transmitido para o segundo computador para que possa ser armazenado em associação com o segundo vetor b→.
[0086] No entanto, como afirmado acima, em algumas modalidades, a fase de inscrição 402 pode ser opcional. Isso pode ocorrer em modalidades em que o primeiro computador e o segundo computador não precisam receber o primeiro vetor a→ e o segundo vetor b→, respectivamente, de uma fonte
31 / 64 externa (por exemplo, por meio de uma captura biométrica). Por exemplo, o primeiro vetor pode representar a localização de um usuário, determinada a partir do GPS do smartphone do usuário, e o segundo vetor b→ pode representar a localização de uma empresa, como um café para o qual o usuário está tentando navegar. Como tal, o primeiro computador pode compreender o smartphone do usuário e o segundo computador pode compreender um computador servidor associado a um serviço de navegação ou mapeamento. O produto escalar dos dois vetores pode ser usado pelo smartphone do usuário para ajudá-lo a navegar até o café. Como o vetor de localização do usuário pode ser inferido a partir de dados de GPS, e como o serviço de navegação pode já saber a localização do café, pode não haver necessidade de realizar a fase de inscrição 402.
[0087] A fase de configuração 404 pode ser melhor compreendida com referência à FIG. 5. Em geral, a fase de configuração pode compreender etapas que podem ocorrer antes de quaisquer dados serem transmitidos entre o primeiro computador e o segundo computador.
[0088] A FIG. 5 mostra um fluxograma das etapas realizadas durante a fase de configuração de um método de acordo com as modalidades. Pode ser útil observar que o subscrito A geralmente se refere a vetores ou valores gerados ou usados pelo primeiro computador, enquanto o subscrito B geralmente se refere a vetores, valores ou chaves criptográficas geradas ou usadas pelo segundo computador.
[0089] Na etapa 502A, o primeiro computador pode recuperar com segurança o primeiro vetor a→. Em algumas modalidades, o primeiro computador pode ser um smartphone associado a um usuário. Nessas modalidades, o primeiro computador pode recuperar com segurança o primeiro vetor a→ de um elemento seguro do primeiro computador (usando, por exemplo, a interface de elemento sem contato 220 da FIG. 2).
[0090] Da mesma forma, na etapa 502B, o segundo computador pode
32 / 64 recuperar com segurança o segundo vetor b→. Em algumas modalidades, o segundo computador pode ser um computador servidor remoto associado a alguma forma de entidade de autenticação (por exemplo, uma agência governamental ou um servidor de processamento de pagamento associado a uma rede de processamento de pagamento). O segundo computador pode recuperar com segurança o segundo vetor b→ de um banco de dados seguro ou criptografado.
[0091] Em algumas modalidades, o primeiro vetor a→ e o segundo vetor b→ podem ser vetores biométricos, isto é, o primeiro vetor a→ e o segundo vetor b→ podem corresponder a um primeiro modelo biométrico e um segundo modelo biométrico (por exemplo, códigos de íris, representações digitais de impressões digitais, voz amostras, segmentos de DNA, etc.). O primeiro vetor a→ e o segundo vetor b→ podem ter comprimentos iguais, ou seja, possuir o mesmo número de componentes.
[0092] Na etapa 504A, o primeiro computador pode gerar um primeiro vetor aleatório rA→. O primeiro vetor aleatório rA→ pode ser gerado de acordo com qualquer meio apropriado, incluindo o uso de geradores de números pseudoaleatórios criptograficamente seguros (CSPRNGs). O primeiro vetor aleatório rA→ pode ter comprimento igual ao primeiro vetor a→, isto é, o primeiro vetor a→ e o primeiro vetor aleatório rA→ podem possuir o mesmo número de componentes. Por exemplo, se o primeiro vetor a→ compreende um código de íris vetorizado compreendendo 256 componentes de 1 byte, o primeiro vetor aleatório rA→ pode compreender 256 bytes gerados aleatoriamente.
[0093] Da mesma forma, na etapa 504B, o segundo computador pode gerar um segundo vetor aleatório rB→. O segundo vetor aleatório rB→ pode ser gerado de forma semelhante usando qualquer meio apropriado, incluindo o uso de CSPRNGs. O segundo vetor aleatório rB→ pode ser de comprimento igual ao segundo vetor b→, isto é, o segundo vetor b→ e o segundo vetor
33 / 64 aleatório rB→ podem possuir o mesmo número de componentes.
[0094] Na etapa 506A, o primeiro computador pode gerar o primeiro vetor mascarado α’→ combinando o primeiro vetor a→ e o primeiro vetor aleatório rA→. Em algumas modalidades, o primeiro vetor mascarado α’→ pode ser igual à soma do primeiro vetor a→ e do primeiro vetor aleatório rA→:
[0095] Da mesma forma, na etapa 506B, o segundo computador pode gerar o segundo vetor mascarado b’1→ combinando o segundo vetor b→ e o segundo vetor aleatório rB→. Em algumas modalidades, o segundo vetor mascarado b’1→ pode ser igual à soma do segundo vetor b→ e do segundo vetor aleatório rB→:
[0096] Na etapa 508A, o primeiro computador pode gerar um primeiro par de chaves compreendendo uma primeira chave pública PbA e uma primeira chave privada PrA. A primeira chave pública PbA pode permitir o uso da função de criptografia EA e a primeira chave privada PrA pode permitir o uso da função de descriptografia DA. Ou seja, os dados (por exemplo, vetores) criptografados com a primeira chave pública PbA podem ser descriptografados com a primeira chave privada PrA.
[0097] Na etapa 510A, o primeiro computador pode gerar um segundo par de chaves compreendendo uma segunda chave pública Pb’A e uma segunda chave privada Pr’A. A segunda chave pública Pb’A pode permitir o uso da função de criptografia E’A e a segunda chave privada Pr’A pode permitir o uso da função de descriptografia D’A. Ou seja, dados (por exemplo, vetores) criptografados com a segunda chave pública Pb’A podem ser descriptografados com a segunda chave privada Pr’A.
[0098] Da mesma forma, na etapa 508B, o segundo computador pode gerar um terceiro par de chaves que compreende uma terceira chave pública PbB e uma terceira chave privada PrB. A terceira chave pública PbB pode
34 / 64 permitir o uso da função de criptografia EB, e a terceira chave privada PrB pode permitir o uso da função de descriptografia DB. Ou seja, dados (por exemplo, vetores) criptografados com a terceira chave pública PbB podem ser descriptografados com a terceira chave privada PrB.
[0099] Da mesma forma, na etapa 510B, o segundo computador pode gerar um quarto par de chaves compreendendo uma quarta chave pública Pb’B e uma quarta chave privada Pr’B. A quarta chave pública Pb’B pode permitir o uso da função de criptografia E’B e a quarta chave privada Pr’B pode permitir o uso da função de descriptografia D’B. Ou seja, dados (por exemplo, vetores) criptografados com a quarta chave pública Pb’B podem ser descriptografados com a quarta chave privada Pr’B.
[00100] Em algumas modalidades, a primeira chave pública PbA, a primeira chave privada PrA, a segunda chave pública Pb’A, a segunda chave privada Pr’A, a terceira chave pública PbB, a terceira chave privada PrB, a quarta chave pública Pb’B e a quarta chave privada Pr’B podem ser chaves criptográficas homomórficas aditivas, como as chaves criptográficas Paillier.
[00101] A geração desses pares de chaves criptográficas depende da natureza do sistema criptográfico que está sendo usado. O método de exemplo a seguir de geração de pares de chaves criptográficas corresponde ao uso do sistema de criptografia Paillier. Primeiro, o primeiro computador ou segundo computador pode escolher dois grandes números primos p e q aleatoriamente e independentemente, de modo que o maior denominador comum de pq e (p- 1)(q-1) seja 1. Em segundo lugar, o primeiro computador ou segundo computador pode calcular n = p * q e λ = lcm(p-1, q-1), onde lcm é uma função usada para determinar o mínimo múltiplo comum. Terceiro, o primeiro computador ou segundo computador pode gerar um número inteiro aleatório g de tal modo que g € Ζ*n2. Quarto, o primeiro ou segundo computador pode calcular µ = mod n. A chave pública (usada para criptografia) é o par (n, g), enquanto a chave privada (usada para descriptografia) é o par (λ, µ).
35 / 64 Este processo pode ser repetido com base no número de chaves a serem geradas, por exemplo, o primeiro computador pode repetir este processo duas vezes para gerar a primeira chave pública PbA, a primeira chave privada PrA, a segunda chave pública Pb’A e a segunda chave privada Pr’A, e o segundo computador pode repetir o processo duas vezes para gerar a terceira chave pública PbB, a terceira chave privada PrB, a quarta chave pública Pb’B e a quarta chave privada Pr’B.
[00102] Na etapa 512A, o primeiro computador pode gerar um primeiro vetor mascarado criptografado EA(a1→) criptografando o primeiro vetor mascarado α’→ usando a primeira chave pública PbA.
[00103] Da mesma forma, na etapa 514A, o primeiro computador pode gerar um primeiro vetor aleatório criptografado E’A(rA1→) criptografando o primeiro vetor aleatório rA→ usando a segunda chave pública Pb’A.
[00104] Na etapa 512B, o segundo computador pode gerar um segundo vetor mascarado criptografado EB(b→) criptografando o segundo vetor mascarado b’→ usando a terceira chave pública PbB.
[00105] Da mesma forma, na etapa 514B, o segundo computador pode gerar um segundo vetor aleatório criptografado E’B(rB→) criptografando o segundo vetor aleatório rB→ usando a quarta chave pública Pb’B.
[00106] Geralmente, nas modalidades da presente divulgação, um vetor criptografado se refere a um vetor para o qual cada componente do vetor é criptografado. Por exemplo, para o primeiro vetor mascarado criptografado EA(a’→):
[00107] Voltando à FIG. 4, após a fase de configuração 404 é a primeira fase de transmissão 406. Na primeira fase de transmissão 406, o primeiro computador e o segundo computador podem transmitir dados um ao outro. Estes dados podem ser usados na fase de cálculo intermediário subsequente 408 e na fase de cálculo de produto escalar 412.
36 / 64
[00108] Mais especificamente, na primeira fase de transmissão 406, o primeiro computador pode transmitir para o segundo computador, uma primeira chave pública PbA, uma segunda chave pública Pb’A, um primeiro vetor mascarado criptografado EA(a’→) e um primeiro vetor aleatório criptografado E’A(rA→), em que o primeiro vetor mascarado criptografado EA(a’→) é um primeiro vetor mascarado criptografado α’→ usando a primeira chave pública PbA, e o primeiro vetor aleatório criptografado E’A(rA→) é um primeiro vetor aleatório criptografado rA→ usando a segunda chave pública Pb’A.
[00109] Além disso, a primeira fase de transmissão 406 pode compreender o primeiro computador recebendo, do segundo computador, uma terceira chave pública PbB, uma quarta chave pública Pb’B, um segundo vetor mascarado criptografado EB(b’→) e um segundo vetor aleatório criptografado E’B(rB→), em que o segundo vetor mascarado criptografado EB(b’→) é o segundo vetor mascarado b’→ criptografado usando a terceira chave pública PbB e o segundo vetor aleatório criptografado é um segundo vetor aleatório rB→ criptografado usando a quarta chave pública Pb’B.
[00110] Esses dados (ou seja, a primeira chave pública PbA, a segunda chave pública Pb’A, a terceira chave pública PbB, a quarta chave pública Pb’B, o primeiro vetor mascarado criptografado EA(a’→), o segundo vetor mascarado criptografado EB(b’→), o primeiro vetor aleatório criptografado E’A(rA→) e o segundo vetor aleatório criptografado E’B(rB→)) podem ser transmitidos por qualquer rede apropriada em qualquer forma apropriada. Por exemplo, esses dados podem ser transmitidos por uma rede, como a Internet, em pacotes de dados, como pacotes UDP ou TCP.
[00111] Após a primeira fase de transmissão 406, o primeiro computador e o segundo computador 408 podem avançar para a fase de cálculo intermediária 408, que pode ser melhor compreendida com referência à FIG. 6.
37 / 64
[00112] A FIG. 6 mostra um fluxograma das etapas realizadas durante a fase de cálculo intermediária de um método de acordo com as modalidades.
[00113] Na etapa 602A, o primeiro computador pode gerar um primeiro vetor de negação -a→. O primeiro vetor de negação -a→ pode compreender a negação do primeiro vetor a→, ou seja, cada componente do primeiro vetor de negação -a→ pode ser igual ao valor negativo do componente correspondente do primeiro vetor a→. Por exemplo, para um primeiro vetor a→ = [1,2,3], o primeiro vetor de negação -a→ = [-1, -2, -3].
[00114] Da mesma forma, na etapa 602B, o segundo computador pode gerar um segundo vetor de negação -b→. O segundo vetor de negação -b→ pode compreender a negação do segundo vetor -b→, ou seja, cada componente do segundo vetor de negação -b→ pode ser igual ao valor negativo do componente correspondente do segundo vetor b. Por exemplo, para um segundo vetor b→ = [-4, -5, -6], o segundo vetor de negação -b→ = [-4, -5, -6].
[00115] Na etapa 604A, o primeiro computador pode gerar um primeiro vetor de negação criptografado EB(-a→) criptografando o primeiro vetor de negação a→ usando a terceira chave pública PbB. A terceira chave pública PbB poderia ter sido gerada anteriormente pelo segundo computador durante a fase de configuração (fase de configuração 404 da FIG. 4) e transmitida para o primeiro computador durante a primeira fase de transmissão (primeira fase de transmissão 406 da FIG. 4).
[00116] Na etapa 606A, o primeiro computador pode gerar um primeiro vetor de diferença criptografado EB(b’→-a→) com base no segundo vetor mascarado criptografado EB(b’→) e no primeiro vetor de negação criptografado EB(-a→). O segundo vetor mascarado criptografado EB(b’→) pode ter sido recebido pelo primeiro computador do segundo computador durante a primeira fase de transmissão. Em algumas modalidades, o primeiro computador pode fazer uso das propriedades da criptografia homomórfica aditiva para gerar o primeiro vetor de diferença criptografado EB(b’→-a→).
38 / 64 Isso pode permitir que o primeiro computador gere o primeiro vetor de diferença criptografado EB(b’→-a→) sem primeiro descriptografar o A EB(b’→).
[00117] Por exemplo, no criptossistema Paillier, geralmente, o produto de dois textos cifrados c e d é igual à soma criptografada do texto simples correspondente, ou seja:
[00118] Como resultado, o primeiro computador pode gerar o primeiro vetor de diferença criptografado EB(b’→-a→) multiplicando cada componente do segundo vetor mascarado criptografado EB(b’→) pelo componente correspondente do primeiro vetor de negação criptografado EB(-a→): ]
[00119] Na etapa 608A, o primeiro computador pode gerar um segundo vetor de negação criptografado E’B(-a→) criptografando o primeiro vetor de negação -a→ usando a quarta chave pública Pb’B. A quarta chave pública Pb’B pode ter sido gerada pelo segundo computador durante a fase de configuração e transmitida ao primeiro computador durante a primeira fase de transmissão.
[00120] Na etapa 610A, o primeiro computador pode gerar um segundo vetor de diferença criptografado E’B(rB→-a→) com base no segundo vetor aleatório criptografado E’B(rB→) e no segundo vetor de negação criptografado E’B(-a→). O segundo vetor aleatório criptografado E’B(rB→) pode ter sido recebido do segundo computador durante a primeira fase de transmissão. Em algumas modalidades, o primeiro computador pode fazer uso das propriedades da criptografia homomórfica aditiva para gerar o segundo
39 / 64 vetor de diferença criptografado E’B(rB→-a→). Isso pode ser realizado usando uma série semelhante de etapas ou operações usadas para gerar o primeiro vetor de diferença criptografado na etapa 606A, ou seja, multiplicar cada componente criptografado do segundo vetor aleatório criptografado E’B(rB→) pelo componente correspondente do segundo vetor de negação criptografado E’B(-a→): ]
[00121] Na etapa 604B, o segundo computador pode gerar um terceiro vetor de negação criptografado EA(-b→) criptografando o segundo vetor de negação -b→ usando a primeira chave pública PbA. A primeira chave pública PbA pode ter sido gerada pelo primeiro computador durante a fase de configuração e transmitida ao segundo computador durante a primeira fase de transmissão.
[00122] Na etapa 606B, o segundo computador pode gerar um terceiro vetor de diferença criptografado EA(a’→-b→) com base no primeiro vetor mascarado criptografado EA(a’→) e no terceiro vetor de negação criptografado EA(-b→). O segundo computador pode ter recebido o primeiro vetor mascarado criptografado EA(a’→) do primeiro computador durante a primeira fase de transmissão. Em algumas modalidades, o segundo computador pode fazer uso das propriedades da criptografia homomórfica aditiva para gerar o terceiro vetor de diferença criptografado EA(a’→-b→). Isso pode ser realizado usando uma série semelhante de etapas ou operações usadas para gerar o primeiro vetor de diferença criptografado na etapa 606A, ou seja, multiplicar cada componente criptografado do primeiro vetor mascarado criptografado EA(a’→) com o componente criptografado correspondente do terceiro vetor de
40 / 64 negação criptografado EA(-b→): ]
[00123] Na etapa 608B, o segundo computador pode gerar um quarto vetor de negação criptografado E’A(-b→) criptografando o segundo vetor de negação -b→ usando a segunda chave pública Pb’A. A segunda chave pública Pb’A poderia ter sido gerada anteriormente pelo primeiro computador durante a fase de configuração e transmitida ao segundo computador durante a primeira fase de transmissão.
[00124] Na etapa 610B, o segundo computador pode gerar um quarto vetor de diferença criptografado E’A(rA→-b→) com base no primeiro vetor aleatório criptografado E’A(rA→) e no quarto vetor de negação criptografado E’A(-b→). O segundo computador pode ter recebido o primeiro vetor aleatório criptografado do primeiro computador durante a primeira fase de transmissão. Em algumas modalidades, o segundo computador pode fazer uso das propriedades da criptografia homomórfica aditiva para gerar o quarto vetor de diferença criptografado E’A(rA→-b→). Isso pode ser realizado usando uma série semelhante de etapas ou operações usadas para gerar o terceiro vetor de diferença criptografado na etapa 606B, ou seja, multiplicar cada componente criptografado do segundo vetor aleatório criptografado E’A(rA→) pelo componente criptografado correspondente do segundo vetor de negação criptografado E’A(-b→):
41 / 64 ]
[00125] Na etapa 612A, o primeiro computador pode gerar uma primeira permutação πA1 e uma segunda permutação πA2. Como descrito acima, uma permutação é uma maneira pela qual um conjunto ou número de coisas pode ser ordenado ou arranjado. Uma permutação pode ser usada para "permutar" algo de acordo com a permutação, e uma permutação pode ser representada como um vetor. Como exemplo, a permutação π = [3,1,2] pode indicar que, para um vetor compreendendo três componentes, o terceiro componente deve ser colocado na primeira posição, o primeiro componente deve ser colocado na segunda posição e o segundo componente deve ser colocado na terceira posição. Por exemplo, a permutação π = [3,1,2] aplicada ao vetor v→ = [7,8,9] pode resultar em um vetor permutado π(v→) = [9,7,8].
[00126] O primeiro computador pode gerar a primeira permutação πA1 e a segunda permutação πA2 de várias maneiras. Como exemplo, o primeiro computador pode usar um algoritmo (como o embaralhamento de Fisher- Yates) para embaralhar uma sequência ordenada (ou seja, [1, 2, ..., n]). A sequência ordenada embaralhada pode ser usada como a primeira permutação πA1. O primeiro computador pode usar um processo semelhante para gerar a segunda permutação πA2, embaralhando uma sequência ordenada uma segunda vez e usando o resultado como a segunda permutação πA2. A primeira permutação πA1 e a segunda permutação πA2 podem ter o mesmo número de componentes que o primeiro vetor a→.
[00127] Na etapa 612B, o segundo computador pode gerar uma terceira permutação πB1 e uma quarta permutação πB2. Conforme descrito acima com referência à primeira permutação πA1 e à segunda permutação πA2, a terceira permutação πB1 e a quarta permutação πB2 podem ser geradas de várias maneiras, por exemplo, embaralhando uma sequência ordenada usando um algoritmo de embaralhamento, por exemplo, Fisher-Yates.
[00128] Na etapa 614A, o primeiro computador pode gerar um
42 / 64 primeiro vetor de diferença criptografado permutado πA1(EB(b’→-a→)) usando a primeira permutação πA1 e o primeiro vetor de diferença criptografado EB(b’→-a→). O primeiro computador pode gerar o primeiro vetor de diferença criptografado permutado πA1(EB(b’→-a→)) permutando o primeiro vetor de diferença criptografado EB(b’→-a→) usando a primeira permutação πA1, isto é, aplicando a primeira permutação πA1 ao primeiro vetor de diferença criptografado EB(b’→-a→). Isso pode ser realizado usando os valores ou componentes da primeira permutação πA1 como índices para reordenar o primeiro vetor de diferença criptografado EB(b’→-a→). Para repetir o exemplo usado acima, a permutação π = [3,1,2] aplicada ao vetor v→ = [7,8,9] pode resultar em um vetor permutado π(v→) = [9,7,8]. De maneira semelhante, a primeira permutação πA1 aplicada ao primeiro vetor de diferença criptografado EB(b’→-a→) pode resultar no primeiro vetor de diferença criptografado permutado πA1(EB(b’→-a→)).
[00129] Na etapa 616A, o primeiro computador pode gerar um segundo vetor de diferença criptografado permutado πA2(E’B(rB→-a→)) usando a segunda permutação πA2 e o segundo vetor de diferença criptografado E’B(rB→-a→). Isto pode ser realizado substancialmente da mesma maneira como descrito acima com referência à etapa 614A, isto é, o primeiro computador pode usar a segunda permutação πA2 para reordenar os componentes do segundo vetor de diferença criptografado E’B(rB→-a→), produzindo o segundo vetor de diferença criptografado permutado πA2(E’B(rB→-a→)).
[00130] Na etapa 614B, o segundo computador pode gerar um terceiro vetor de diferença criptografado permutado πB1(EA(a’→-b→) usando a terceira permutação πB1 e o terceiro vetor de diferença criptografado EA(a’→-b→). Isso pode ser realizado substancialmente da mesma maneira conforme descrito acima com referência às etapas 614A e 616A, ou seja, o segundo computador pode usar a terceira permutação πB1 para reordenar os componentes do
43 / 64 terceiro vetor de diferença criptografado EA(a’→-b→) para produzir o terceiro vetor de diferença criptografado permutado πB1(EA(a’→-b→).
[00131] Na etapa 616B, o segundo computador pode gerar um quarto vetor de diferença criptografado permutado πB2(E’A(rA→-b→) usando a quarta permutação πB2 e o quarto vetor de diferença criptografado E’A(rA→-b→). Isso pode ser realizado substancialmente da mesma maneira conforme descrito acima com referência às etapas 614A, 614B e 616A, ou seja, o segundo computador pode usar a quarta permutação πB2 para reordenar os componentes do quarto vetor de diferença criptografada E’A(rA→-b→) para produzir o quarto vetor de diferença criptografada permutada πB2(E’A(rA→-b→)).
[00132] Deve ser entendido que em algumas modalidades, algumas etapas realizadas durante a fase de cálculo intermediária podem, em vez disso, ser realizadas em uma fase anterior ou posterior. Como um exemplo, a primeira permutação πA1, segunda permutação πA2, terceira permutação πB1 e quarta permutação πB2 podem ser geradas durante a fase de configuração (fase de configuração 404 da FIG. 4). Da mesma forma, o primeiro vetor de negação -a→ e o segundo vetor de negação -b→ também podem ser gerados durante a fase de configuração, em vez de durante a fase de cálculo intermediária, conforme descrito.
[00133] Voltando à FIG. 4, após a fase de cálculo intermediário 408, o primeiro computador e o segundo computador podem realizar a segunda fase de transmissão 410. Na segunda fase de transmissão 410, o primeiro computador e o segundo computador podem transmitir dados gerados durante a fase de cálculo intermediária 408 um para o outro. Esses dados podem ser usados para calcular o produto escalar a→.b→ na fase de cálculo de produto escalar 412, conforme descrito abaixo.
[00134] Mais especificamente, na segunda fase de transmissão 410, o primeiro computador pode transmitir, para o segundo computador, o primeiro
44 / 64 vetor de diferença criptografado permutado πA1(EB(b’→-a→)) e o segundo vetor de diferença criptografado permutado πA2(E’B(rB→-a→)). Da mesma forma, na segunda fase de transmissão 410, o primeiro computador pode receber, a partir do segundo computador, um terceiro vetor de diferença criptografado permutado πB1(EA(a’→-b→)) e um quarto vetor de diferença criptografado permutado πB2(E’A(rA→-b→)), em que o terceiro vetor de diferença criptografado permutado πB1(EA(a’→-b→)) é criptografado usando a primeira chave pública PbA e permutado usando uma terceira permutação πB1, e em que o quarto vetor de diferença criptografado permutado πB2(E’A(rA→- b→)) é criptografado usando a segunda chave pública Pb’A e permutado usando uma quarta permutação πB2.
[00135] Como na primeira fase de transmissão 406, esses dados (ou seja, o primeiro vetor de diferença criptografada permutada πA1(EB(b’→-a→)), o segundo vetor de diferença criptografada permutada πA2(E’B(rB→-a→)), o terceiro vetor de diferença criptografada permutada πB1(EA(a’→-b→)) e o quarto vetor de diferença criptografada permutada πB2(E’A(rA→-b→))) podem ser transmitidos através de qualquer rede apropriada em qualquer formato. Por exemplo, esses dados podem ser transmitidos por uma rede, como a Internet, em pacotes de dados, como pacotes UDP ou TCP.
[00136] Após a segunda fase de transmissão 410, o primeiro computador e o segundo computador podem prosseguir para a fase de cálculo de produto escalar 412, na qual o primeiro computador e o segundo computador calculam o produto escalar do primeiro vetor a→ e do segundo vetor b→. A fase de cálculo do produto escalar 412 pode ser melhor compreendida com referência à FIG. 7.
[00137] Na etapa 702A, o primeiro computador pode produzir um terceiro vetor de diferença permutado dA→:=πB1(a’→-b→) descriptografando o terceiro vetor de diferença criptografado permutado πB1(EA(a’→-b→) usando a primeira chave privada PrA. Embora o primeiro computador conheça o valor
45 / 64 dos componentes do primeiro vetor mascarado α’→, porque a terceira permutação πB1 é desconhecida do primeiro computador, o primeiro computador não pode determinar o valor dos componentes do segundo vetor b→. Assim, o segundo vetor b→ é protegido do primeiro computador. Isso pode manter a privacidade de uma pessoa correspondente ao segundo vetor b→ (por exemplo, se o segundo vetor b→ for um vetor biométrico correspondente à pessoa).
[00138] Na etapa 702B, o segundo computador pode produzir um primeiro vetor de diferença permutado dB→:=πA1(b’→-a→) descriptografando o primeiro vetor de diferença criptografado permutado πA1(EB(b’→-a→)) usando a terceira chave privada PrB. Embora o segundo computador conheça o valor dos componentes do segundo vetor mascarado b→, porque a primeira permutação πA1 é desconhecida para o segundo computador, o segundo computador não pode determinar o valor dos componentes do primeiro vetor a→. Assim, o primeiro vetor a→ é protegido do segundo computador. Isso pode manter a privacidade de uma pessoa correspondente ao primeiro vetor a→ (por exemplo, se o primeiro vetor a→ for um vetor biométrico correspondente à pessoa).
[00139] Na etapa 704A, o primeiro computador pode produzir um quarto vetor de diferença permutado sA→:=πB2(rA→-b→) descriptografando o quarto vetor de diferença criptografado permutado πB2E’A(rA→-b→)) usando a segunda chave privada Pr’A. Novamente, o segundo vetor b→ é protegido do primeiro computador, porque embora o primeiro computador conheça o valor dos componentes do primeiro vetor aleatório rA→, o primeiro computador não conhece a quarta permutação πB2.
[00140] Na etapa 704B, o segundo computador pode produzir um segundo vetor de diferença permutado sB→:=πA2(rB→-a→) descriptografando o segundo vetor de diferença criptografado permutado πA2(E’B(rB→-a→)) usando a quarta chave privada Pr’B. Novamente, o primeiro vetor a→ é protegido do
46 / 64 segundo computador, porque embora o segundo computador conheça o valor dos componentes do segundo vetor aleatório rB→, o segundo computador não conhece a segunda permutação πA2.
[00141] Na etapa 706A, o primeiro computador pode calcular uma magnitude quadrada do primeiro vetor mascarado α’. O valor da magnitude quadrada do primeiro vetor mascarado α’ é igual ao produto escalar do primeiro vetor mascarado α’→ consigo mesmo, ou seja:
[00142] O primeiro computador pode elevar ao quadrado o valor de cada componente do primeiro vetor mascarado α’→ e, em seguida, somar os quadrados resultantes, ou seja, o primeiro computador pode calcular a magnitude quadrada do primeiro vetor mascarado α’ de acordo com a seguinte fórmula:
[00143] Da mesma forma, na etapa 706B, o segundo computador pode calcular a magnitude quadrada do segundo vetor mascarado β’. O valor da magnitude quadrada do segundo vetor mascarado β’ é igual ao produto escalar do segundo vetor mascarado b’→ consigo mesmo, ou seja:
[00144] O segundo computador pode elevar ao quadrado o valor de cada componente do segundo vetor mascarado b’→ e, em seguida, somar os quadrados resultantes, ou seja, o segundo computador pode calcular a magnitude quadrada do segundo vetor mascarado β’ de acordo com a seguinte fórmula:
[00145] Na etapa 708A, o primeiro computador pode calcular uma
47 / 64 magnitude quadrada do primeiro vetor aleatório ρA. O valor da magnitude quadrada do primeiro vetor aleatório ρA é igual ao produto escalar do primeiro vetor aleatório rA→ consigo mesmo, ou seja:
[00146] O primeiro computador pode elevar ao quadrado o valor de cada componente do primeiro vetor aleatório rA→ e, em seguida, somar os quadrados resultantes, ou seja, o primeiro computador pode calcular a magnitude quadrada do primeiro vetor aleatório ρA de acordo com a seguinte fórmula:
[00147] Da mesma forma, na etapa 708B, o segundo computador pode calcular a magnitude quadrada do segundo vetor aleatório ρB. O valor da magnitude quadrada do segundo vetor aleatório ρ é igual ao produto escalar do segundo vetor aleatório rB→ consigo mesmo, ou seja:
[00148] O segundo computador pode elevar ao quadrado o valor de cada componente do segundo vetor aleatório rB→ e, em seguida, somar os quadrados resultantes, ou seja, o segundo computador pode calcular a magnitude quadrada do segundo vetor aleatório ρB de acordo com a seguinte fórmula:
[00149] Na etapa 710A, o primeiro computador pode calcular a magnitude quadrada do terceiro vetor de diferença permutada ϑA. O valor da magnitude quadrada do terceiro vetor de diferença permutada ϑA é igual ao produto escalar do terceiro vetor de diferença permutada dA→ = πB1(a’→-b→) consigo mesmo, ou seja:
48 / 64
[00150] O primeiro computador pode elevar ao quadrado o valor de cada componente do terceiro vetor de diferença permutada dA→ = πB1(a’→-b→) e, em seguida, somar os quadrados resultantes, ou seja, o primeiro computador pode calcular a magnitude quadrada do terceiro vetor de diferença permutada ϑA de acordo com a seguinte fórmula:
[00151] Da mesma forma, na etapa 710B, o segundo computador pode calcular a magnitude quadrada do primeiro vetor de diferença permutada ϑB. O valor da magnitude quadrada do primeiro vetor de diferença permutada ϑB é igual ao produto escalar do primeiro vetor de diferença permutada dB→:=πA1(b’→-a→) consigo mesmo, ou seja:
[00152] O segundo computador pode elevar ao quadrado o valor de cada componente do primeiro vetor de diferença permutada dB→:=πA1(b’→- a→) e, em seguida, somar os quadrados resultantes, ou seja, o segundo computador pode calcular a magnitude quadrada do primeiro vetor de diferença permutada ϑB de acordo com a seguinte fórmula:
[00153] Na etapa 712A, o primeiro computador pode calcular a magnitude quadrada do quarto vetor de diferença permutada σA. O valor da magnitude quadrada do quarto vetor de diferença permutada σA é igual ao produto escalar do quarto vetor de diferença permutada sA→:=πB2(rA→-b→) consigo mesmo, ou seja:
[00154] O primeiro computador pode elevar ao quadrado o valor de
49 / 64 cada componente do quarto vetor de diferença permutada sA→:=πB2(rA→-b→) e, em seguida, somar os quadrados resultantes, ou seja, o primeiro computador pode calcular a magnitude quadrada do quarto vetor de diferença permutada σA de acordo com a seguinte fórmula:
[00155] Da mesma forma, na etapa 712B, o segundo computador pode calcular a magnitude quadrada do segundo vetor de diferença permutada σB. O valor da magnitude quadrada do segundo vetor de diferença permutada σB é igual ao produto escalar do segundo vetor de diferença permutada sB→:=πA2(rB→-a→) consigo mesmo, ou seja:
[00156] O segundo computador pode elevar ao quadrado o valor de cada componente do segundo vetor de diferença permutada sB→:=πA2(rB→-a→) e, em seguida, somar os quadrados resultantes, ou seja, o segundo computador pode calcular a magnitude quadrada do quarto vetor de diferença permutada σB de acordo com a seguinte fórmula:
[00157] Na etapa 714A, o primeiro computador pode calcular o produto escalar do primeiro vetor a→ e o segundo vetor b→ com base na magnitude quadrada do primeiro vetor mascarado a1, na magnitude quadrada do primeiro vetor aleatório ρA, na magnitude quadrada do terceiro vetor de diferença permutada ϑA, e na magnitude quadrada do quarto vetor de diferença permutada σA. Em algumas modalidades, o primeiro computador pode calcular o produto escalar do primeiro vetor a→ e do segundo vetor b→ com base na seguinte fórmula:
50 / 64
[00158] Da mesma forma, na etapa 714B, o segundo computador pode calcular o produto escalar do primeiro vetor a→ e o segundo vetor b→ com base na magnitude quadrada do segundo vetor mascarado β’, na magnitude quadrada do segundo vetor aleatório ρβ, na magnitude quadrada do primeiro vetor permutado ϑB, e na magnitude quadrada do segundo vetor permutado σB. Em algumas modalidades, o segundo computador pode calcular o produto escalar do primeiro vetor a→ e do segundo vetor b→ com base na seguinte fórmula:
[00159] Como um breve aparte, pode ser útil mostrar que os métodos usados pelo primeiro computador e o segundo computador para calcular o produto escalar do primeiro vetor a→ e o segundo vetor b→ calculam com precisão o produto escalar conforme descrito acima.
[00160] Lembre-se de que, por definição, o produto escalar de dois vetores é igual à soma do produto dos componentes de cada vetor:
[00161] Como afirmado acima, o primeiro computador calcula o produto escalar do primeiro vetor a→ e o segundo vetor b→ usando a magnitude quadrada do primeiro vetor mascarado α’, a magnitude quadrada do primeiro vetor aleatório ρA, a magnitude quadrada do terceiro vetor permutado ϑA e a magnitude quadrada do quarto vetor permutado σA de acordo com a seguinte fórmula:
[00162] Como um lembrete, a magnitude quadrada de um determinado vetor c→ é definida como a soma dos componentes do vetor c→ ao quadrado:
51 / 64
[00163] Conforme definido acima, o terceiro vetor de diferença permutada dA→=πB1(a’→-b→). A magnitude quadrada do terceiro vetor de diferença permutada ϑA pode ser expressa da seguinte forma:
[00164] Por causa da propriedade comutativa de adição, a soma é independente da permutação, portanto:
[00165] Pela definição do produto escalar e a magnitude quadrada do primeiro vetor mascarado α’, a magnitude quadrada do terceiro vetor de diferença permutada ϑA pode ser expressa como:
[00166] Usando uma linha de raciocínio semelhante, o quarto vetor de diferença permutada σA pode ser expresso da seguinte forma:
52 / 64
[00167] Retornando à expressão para o produto escalar e substituindo as expressões para a magnitude quadrada do terceiro vetor de diferença permutada ϑA e a magnitude quadrada do quarto vetor de diferença permutada σ A: )
[00168] Agrupando termos semelhantes:
[00169] Lembre-se de que o primeiro vetor mascarado α’→ é igual à soma do primeiro vetor α→ e do primeiro vetor aleatório rA→:
[00170] A expressão para o produto escalar pode ser simplificada da seguinte forma:
[00171] Isso demonstra a precisão da fórmula usada pelo primeiro computador para calcular o produto escalar do primeiro vetor α→ e do segundo vetor b→.
53 / 64
[00172] Da mesma forma, o segundo computador calcula o produto escalar do primeiro vetor α→ e do segundo vetor b→ usando a magnitude quadrada do segundo vetor mascarado β’, a magnitude quadrada do segundo vetor aleatório ρB, a magnitude quadrada do primeiro vetor de diferença permutada ϑB e a magnitude quadrada do segundo vetor de diferença permutada σB de acordo com a seguinte fórmula:
[00173] Usando uma linha de raciocínio semelhante, uma expressão para a magnitude quadrada do primeiro vetor de diferença permutada ϑB pode ser determinada:
[00174] Da mesma forma, uma expressão para a magnitude quadrada do segundo vetor de diferença permutada σB pode ser determinada:
54 / 64
[00175] Retornando à expressão para o produto escalar e substituindo expressões para a magnitude quadrada do primeiro vetor de diferença permutada ϑB e a magnitude quadrada do segundo vetor de diferença permutada σB: )
[00176] Agrupando termos semelhantes:
[00177] O segundo vetor mascarado b’→ é igual à soma do segundo vetor b→ e do segundo vetor aleatório rB→: :
[00178] A expressão para o produto escalar pode ser simplificada da seguinte forma:
55 / 64
[00179] Isso demonstra que a equação usada pelo segundo computador para calcular o produto escalar do primeiro vetor α→ e do segundo vetor b→ é precisa.
[00180] Voltando à FIG. 7, na etapa 716A, o primeiro computador pode comparar o produto escalar ou um valor derivado do produto escalar a um primeiro limite predeterminado TA e se o produto escalar ou o valor derivado do produto escalar exceder o primeiro limite predeterminado (isto é, ), o primeiro computador pode realizar uma interação com o segundo computador (isto é, durante a fase de interação 414 da FIG. 4), tal como uma transação de pagamento ou ganhar entrada em um edifício seguro para um usuário ou proprietário do primeiro computador. Exemplos de valores que podem ser derivados de produtos escalares incluem o ângulo entre o primeiro vetor α→ e o segundo vetor b→, ou o cosseno do ângulo entre o primeiro vetor α→ e o segundo vetor b→, ou outra função trigonométrica do ângulo entre o primeiro vetor α→ e o segundo vetor b→ ou algum outro valor, como pontuação de correspondência, métrica de distância, etc.
[00181] Por exemplo, se o critério de correspondência é que o ângulo entre o primeiro vetor α→ e o segundo vetor b→ é de 5 graus ou menos, e o valor derivado do produto escalar é o cosseno do ângulo entre o primeiro vetor α→ e o segundo vetor b→, o primeiro limite predeterminado TA pode ser igual a cos(5º) = 0,996. Se o valor derivado do produto escalar for maior do que o primeiro limite predeterminado TA, isso indica que a diferença angular entre o primeiro vetor α→ e o segundo vetor b→ é de 5 graus ou menos, potencialmente indicando uma correspondência.
[00182] Em algumas modalidades, o primeiro vetor α→ e o segundo vetor b→ podem corresponder a um primeiro modelo biométrico e um segundo modelo biométrico, respectivamente, e o primeiro limite
56 / 64 predeterminado TA pode ser um limite de compatibilidade biométrica.
[00183] Na etapa 716B, o segundo computador pode comparar o produto escalar ou um valor derivado do produto escalar (por exemplo, um ângulo entre o primeiro vetor α→ e o segundo vetor b→, ou uma função trigonométrica do ângulo entre o primeiro vetor α→ e o segundo vetor b→) a um segundo limite predeterminado TB, e se o produto escalar ou o valor derivado do produto escalar exceder o segundo limite predeterminado (isto é, o segundo computador pode realizar uma interação com o primeiro computador (isto é, durante a fase de interação 414 da FIG. 4), como realizar uma transação de pagamento ou permitir que um usuário do primeiro computador acesse um edifício seguro.
[00184] Em algumas modalidades, o primeiro limite predeterminado TA e o segundo limite predeterminado TB podem ser desiguais, indicando que tanto o primeiro computador quanto o segundo computador podem ter um limite mais alto para realizar uma interação. No entanto, em outras modalidades, pode ser vantajoso que o primeiro limite predeterminado TA e o segundo limite predeterminado TB sejam iguais.
[00185] Em algumas modalidades, depois de comparar o produto escalar ou um valor derivado do produto escalar com o primeiro limite predeterminado TA, o primeiro computador pode transmitir uma mensagem de indicação para o segundo computador, indicando que o primeiro computador está satisfeito com a comparação e continuará com uma interação. Da mesma forma, depois de comparar o produto escalar ou um valor derivado do produto escalar com o segundo limite predeterminado TB, o segundo computador pode transmitir uma mensagem de indicação para o primeiro computador, indicando que o segundo computador está satisfeito com a comparação e continuará com uma interação. Alternativamente ou adicionalmente, cada um do primeiro e/ou segundo computador pode incluir um indicador (por exemplo, em um visor) quando uma correspondência apropriada é
57 / 64 determinada (por exemplo, uma luz verde) ou não é determinada (por exemplo, uma luz vermelha).
[00186] Uma vantagem de ambos os computadores compararem o produto escalar com seus respectivos limites é que ambos os computadores podem confirmar que o escalar excede seus respectivos limites. Se, por exemplo, apenas o primeiro computador comparou o produto escalar com seu respectivo limite, o segundo computador tem que confiar que o primeiro computador calculou o produto escalar corretamente e que o primeiro computador indicou honestamente que o produto escalar excedeu o primeiro limite predeterminado. No entanto, como ambos os computadores calculam o produto escalar e comparam o produto escalar ou um valor derivado do produto escalar com seu respectivo limite, cada computador pode confirmar o cálculo e nenhum computador pode enganar o outro.
[00187] Voltando à FIG. 4, após a fase de cálculo de produto escalar 412, o primeiro computador e o segundo computador podem realizar uma interação na fase de interação 414. A interação pode ser realizada se o produto escalar, ou um valor derivado do produto escalar (por exemplo, um ângulo, uma estimativa heurística do ângulo, um cosseno de um ângulo, uma estimativa heurística do cosseno de um ângulo, outra métrica de distância, etc.) excede um limite predeterminado, conforme descrito com referência à FIG. 7.
[00188] A interação da fase de interação 414 pode assumir muitas formas. A FIG. 8 mostra um diagrama de blocos de uma primeira interação exemplar, uma transação de pagamento. A FIG. 9 mostra um diagrama de blocos de uma segunda interação exemplar, uma sequência de acesso ao edifício.
[00189] A FIG. 8 mostra um sistema de processamento de transação exemplar. Esse sistema de processamento de transações pode ser usado como parte de uma primeira interação exemplar entre o primeiro computador 804 e
58 / 64 o segundo computador 806.
[00190] O usuário 802 pode ser um cliente operando o primeiro computador 804 (por exemplo, um smartphone). O usuário 802 pode desejar comprar um bem ou serviço de um provedor de recursos (por exemplo, um comerciante, operando um computador provedor de recursos 810). O provedor de recursos pode operar adicionalmente um terminal de acesso 808 (por exemplo, um terminal de ponto de venda). O computador provedor de recursos 810 pode se comunicar com um computador emissor 816 por meio de um computador adquirente 812 e uma rede de processamento de pagamento 814.
[00191] A rede de processamento de pagamento 814 pode incluir subsistemas de processamento de dados, redes e operações usadas para suportar e entregar serviços de autorização, serviços de arquivo de exceção e serviços de compensação e liquidação. Uma rede de processamento de pagamento exemplar 814 pode incluir VisaNetTM. As redes de processamento de pagamento como VisaNetTM são capazes de processar transações de cartão de crédito, transações de cartão de débito e outros tipos de transações comerciais. VisaNetTM, em particular, inclui um sistema VIP (sistema Visa Integrated Payments) que processa os pedidos de autorização e um sistema BASE II que realiza serviços de compensação e liquidação. A rede de processamento de pagamentos pode usar uma rede com ou sem fio adequada, incluindo a Internet.
[00192] Uma transação de pagamento exemplar usando um cálculo de produto escalar de preservação de privacidade com base em vetor biométrico pode ser descrita como segue. O usuário 802 pode colocar o primeiro computador 804 em contato com o terminal de acesso 808, de modo que o primeiro computador 804 e o terminal de acesso 808 possam se comunicar, por exemplo, por meio de comunicação de campo próximo. O primeiro computador 804 pode se comunicar para acessar o terminal 808 que o usuário
59 / 64 802 deseja pagar por bens ou serviços. O terminal de acesso 808 pode solicitar uma credencial, como um token de acesso que pode ser usado para decretar um pagamento entre uma conta de pagamento associada ao usuário 802, gerenciada por um emissor e uma conta de pagamento associada ao provedor de recursos, gerenciada por um adquirente.
[00193] Para adquirir o token de acesso, o primeiro computador 804 e o segundo computador 806 podem realizar um cálculo de produto escalar de preservação de privacidade, a fim de calcular o produto escalar do primeiro vetor biométrico, armazenado no primeiro computador 804 e um segundo vetor biométrico, armazenado em um banco de dados de vetor biométrico no segundo computador 806. O primeiro computador 804 e o segundo computador 806 podem realizar o cálculo do produto escalar como descrito acima com referência às FIGs. 4-7. Ao calcular o produto escalar, o segundo computador 806 pode comparar o produto escalar ou um valor derivado do produto escalar a um limite predeterminado. Se o produto escalar ou o valor derivado do produto escalar exceder o limite predeterminado, o segundo computador 806 pode transmitir um token de acesso ao primeiro computador 804 (esta transmissão pode compreender a interação entre o primeiro computador 804 e o segundo computador 806).
[00194] Tendo recebido o token de acesso do segundo computador 806, o primeiro computador 804 pode transmitir o token de acesso e quaisquer credenciais de acesso adicionais para o terminal de acesso 808. O computador provedor de recursos 810, operando em comunicação com o terminal de acesso 808, pode então gerar uma mensagem de pedido de autorização que inclui as informações recebidas pelo terminal de acesso 808 juntamente com qualquer informação de transação adicional (por exemplo, um valor de transação, informações específicas do comerciante, etc.) e transmite eletronicamente essas informações para o computador adquirente
812. O computador adquirente 812 pode, então, receber, processar e
60 / 64 encaminhar a mensagem de solicitação de autorização para o computador emissor 816 através da rede de processamento de pagamento 814 para autorização. O computador emissor 816 pode responder com uma mensagem de resposta de autorização. A mensagem de resposta de autorização pode ser transmitida do computador emissor 816 para o terminal de acesso 808 através do computador provedor de recursos 810, o computador adquirente 812 e a rede de processamento de pagamento 814.
[00195] No final do dia ou em algum outro intervalo de tempo adequado, um processo de compensação e liquidação entre o computador adquirente 812, a rede de processamento de pagamento 814 e o computador emissor 816 pode ser realizado na transação.
[00196] A FIG. 9 mostra uma segunda interação exemplar de acordo com algumas modalidades. Um usuário 902 deseja obter acesso ao prédio 910, uma instalação segura (ou seja, um complexo de apartamentos seguro ou prédio administrativo do governo). A porta do prédio 910 é trancada e controlada por um computador provedor de recursos 908. A fim de obter acesso ao edifício 910, o usuário 902 precisa fornecer um token de acesso ou outra credencial ao computador provedor de recursos 908, através do primeiro computador 904 (por exemplo, smartphone 902 do usuário).
[00197] O usuário 902 pode ter se inscrito anteriormente em um sistema de autenticação biométrica envolvendo um segundo computador 906. O segundo computador 906 pode armazenar um vetor biométrico (segundo vetor) correspondente ao usuário 902 em um banco de dados biométrico. Da mesma forma, o primeiro computador 904 pode armazenar um vetor biométrico salvo (primeiro vetor) correspondente ao usuário 902 em um elemento seguro. Alternativamente, o usuário 902 pode usar o primeiro computador 904 para capturar uma instância biométrica e vetorizar a instância biométrica capturada, por exemplo, apontando uma câmera de smartphone para seus olhos e tirando uma foto.
61 / 64
[00198] Como parte do sistema de autenticação biométrica, o primeiro computador 904 e o segundo computador 906 podem calcular o produto escalar do primeiro vetor e do segundo vetor a fim de autenticar o usuário
902. Depois de calcular o produto escalar (como descrito acima com referência às FIGs. 4-7), o segundo computador 906 pode comparar o produto escalar ou um valor derivado do produto escalar (por exemplo, o ângulo entre o primeiro vetor e o segundo vetor) a um limite predeterminado. Se o produto escalar ou o valor derivado do produto escalar exceder o limite predeterminado, o usuário 902 pode ser autenticado. Subsequentemente, o segundo computador 906 pode transmitir uma instrução para o computador provedor de recursos 908, instruindo o computador provedor de recursos 908 a abrir a porta e permitir que o usuário 902 acesse o edifício 910. Alternativamente, o segundo computador 906 pode emitir um token de acesso ao primeiro computador 904. O primeiro computador 904 pode subsequentemente fornecer este token de acesso ao provedor de recursos 908 (por exemplo, através de comunicação de campo próximo ou através de uma rede como a Internet ou uma LAN). O computador provedor de recursos 908 pode verificar o token de acesso e conceder ao usuário 902 acesso ao edifício
910.
[00199] Qualquer um dos sistemas de computador mencionados neste documento pode utilizar qualquer número adequado de subsistemas. Em algumas modalidades, um sistema de computador inclui um único aparelho de computador, onde os subsistemas podem ser componentes do aparelho de computador. Em outras modalidades, um sistema de computador pode incluir vários aparelhos de computador, cada um sendo um subsistema, com componentes internos.
[00200] Um sistema de computador pode incluir uma pluralidade de componentes ou subsistemas, por exemplo, conectados entre si por interface externa ou por uma interface interna. Em algumas modalidades, os sistemas
62 / 64 computadores, subsistemas ou aparelhos podem se comunicar sobre uma rede. Em tais exemplos, um computador pode ser considerado um cliente e um outro computador um usuário, onde cada um pode ser parte de um mesmo sistema computador. Um cliente e um usuário podem, cada um, incluir múltiplos sistemas, subsistemas ou componentes.
[00201] Deve ser entendido que qualquer uma das modalidades da presente invenção pode ser implementada na forma de lógica de controle usando hardware (por exemplo, um circuito integrado específico de aplicação ou matriz de porta programável em campo) e/ou usando software de computador com um processador geralmente programável em de forma modular ou integrada. Conforme usado neste documento, um processador inclui um processador de núcleo único, processador de vários núcleos em um mesmo chip integrado ou várias unidades de processamento em uma única placa de circuito ou em rede. Com base na divulgação e nos ensinamentos fornecidos aqui, um indivíduo de conhecimento comum na técnica vai saber e observar outras maneiras e/ou métodos para implementar as modalidades da presente invenção usando hardware e uma combinação de hardware e software.
[00202] Qualquer um dos componentes de software ou funções descritas neste aplicativo pode ser implementado como código de software a ser executado por um processador usando qualquer linguagem de computador adequado, tais como, por exemplo, Java, C, C++, c#, Objective-C, Swift ou linguagem de script como Perl ou Python usando, por exemplo, técnicas convencionais ou orientadas a objeto. Um código de software pode ser armazenado com uma série de instruções ou comandos em um meio legível por computador para armazenamento e/ou transmissão, o meio adequado inclui a memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), um meio magnético como um disco rígido ou um disquete ou um meio óptico como um disco compacto (CD) ou DVD (disco versátil digital),
63 / 64 memória flash e similares. O meio legível por computador pode ser qualquer combinação de tais dispositivos de armazenamento ou transmissão.
[00203] Tais programas também podem ser codificados e transmitidos por meio de sinais adaptados para transmissão através de redes com fios, ópticas e/ou sem fio, de acordo com uma variedade de protocolos, incluindo a Internet. Como tal, um meio legível por computador, de acordo com uma modalidade da presente invenção pode ser criado usando um sinal de dados codificado com tais programas. O meio legível por computador codificado com o código de programa pode ser embutido com um dispositivo compatível ou fornecido separadamente a partir de outros dispositivos (por exemplo, através de transferência pela Internet). Qualquer tal meio legível por computador pode residir em ou dentro de um único produto de computador (por exemplo, um disco rígido, um CD ou um sistema computador inteiro) e pode estar presente ou dentro dos produtos de computador diferentes dentro de um sistema ou rede. Um sistema de computador pode incluir um monitor, impressora ou outro monitor adequado para fornecer qualquer um dos resultados mencionados neste documento a um usuário.
[00204] Qualquer um dos métodos descritos neste documento pode ser totalmente ou parcialmente executado com um sistema computador, incluindo um ou mais processadores, que podem ser configurados para executar as etapas. Assim, as modalidades podem envolver sistemas de computador configurados para executar as etapas de qualquer um dos métodos descritos neste documento, potencialmente com diferentes componentes executando as respectivas etapas ou um respectivo grupo de etapas. Embora apresentado como etapas numeradas, as etapas dos métodos neste documento podem ser executadas ao mesmo tempo ou em uma ordem diferente. Além disso, as porções dessas etapas podem ser usadas com partes de outras etapas de outros métodos. Além disso, todos ou partes de uma etapa podem ser opcionais. Além disso, as etapas de qualquer um dos métodos podem ser realizadas com
64 / 64 módulos, circuitos ou outros meios para executar essas etapas.
[00205] Os detalhes específicos das modalidades em particular podem ser combinados de forma adequada sem se afastar do espírito e o escopo das modalidades da invenção. No entanto, outras modalidades da invenção podem envolver modalidades específicas relacionadas a cada aspecto individual ou combinações específicas desses aspectos individuais. A descrição acima de modalidades exemplares da invenção foi apresentada com o propósito de ilustração e descrição. Não se destina a ser exaustiva ou limitar a invenção ao formulário descrito preciso e muitas variações e modificações são possíveis tendo em conta o ensinamento acima. As modalidades foram escolhidas e descritas a fim de melhor explicar os princípios da invenção e suas aplicações práticas para, assim, permitir que outros versados na técnica utilizem da melhor forma a invenção em várias modalidades e com várias modificações conforme adequado para o uso específico contemplado.
[00206] A citação de "um", "uma" ou "o/a" tem a intenção de significar "um ou mais", a menos que seja especificamente indicado o contrário. O uso de "ou" destina-se a dizer um "ou inclusivo" e não um "ou exclusivo" a menos que especificamente indicado do contrário.
[00207] Todas as patentes, pedidos de patentes, publicações e descrições aqui mencionados são incorporados por referência em sua totalidade para todos os fins. Nenhum é admitido como sendo o estado da técnica.

Claims (20)

1 / 12 REIVINDICAÇÕES
1. Método caracterizado pelo fato de que compreende: transmitir, por um primeiro computador, para um segundo computador, uma primeira chave pública, uma segunda chave pública, um primeiro vetor mascarado criptografado e um primeiro vetor aleatório criptografado, em que o primeiro vetor mascarado criptografado é um primeiro vetor mascarado criptografado usando o primeiro chave pública, e o primeiro vetor aleatório criptografado é um primeiro vetor aleatório criptografado usando a segunda chave pública; receber, pelo primeiro computador, a partir do segundo computador, uma terceira chave pública, uma quarta chave pública, um segundo vetor mascarado criptografado e um segundo vetor aleatório criptografado, em que o segundo vetor mascarado criptografado é um segundo vetor mascarado criptografado usando a terceira chave pública e o segundo vetor aleatório criptografado é um segundo vetor aleatório criptografado usando a quarta chave pública; receber, pelo primeiro computador, a partir do segundo computador, um terceiro vetor de diferença criptografado permutado e um quarto vetor de diferença criptografado permutado, em que o terceiro vetor de diferença criptografado permutado é criptografado usando a primeira chave pública e permutado usando uma terceira permutação, e em que o quarto vetor de diferença criptografado permutado é criptografado usando a segunda chave pública e permutado usando uma quarta permutação; produzir, pelo primeiro computador, um terceiro vetor de diferença permutado ao descriptografar o terceiro vetor de diferença criptografado permutado usando uma primeira chave privada correspondente à primeira chave pública; produzir, pelo primeiro computador, um quarto vetor de diferença permutado ao descriptografar o quarto vetor de diferença
2 / 12 criptografado permutado usando uma segunda chave privada correspondente à segunda chave pública; e calcular, pelo primeiro computador, um produto escalar de um primeiro vetor e um segundo vetor com base no primeiro vetor mascarado, no primeiro vetor aleatório, no terceiro vetor de diferença permutada e no quarto vetor de diferença permutada.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que o cálculo do produto escalar do primeiro vetor e do segundo vetor compreende: calcular, pelo primeiro computador, uma magnitude quadrada do primeiro vetor mascarado; calcular, pelo primeiro computador, uma magnitude quadrada do primeiro vetor aleatório; calcular, pelo primeiro computador, uma magnitude quadrada do terceiro vetor de diferença permutada; calcular, pelo primeiro computador, uma magnitude quadrada do quarto vetor de diferença permutada; e calcular, pelo primeiro computador, o produto escalar do primeiro vetor e o segundo vetor com base na magnitude quadrada do primeiro vetor mascarado, a magnitude quadrada do primeiro vetor aleatório, a magnitude quadrada do terceiro vetor de diferença permutada e a magnitude quadrada do quarto vetor de diferença permutada.
3. Método de acordo com reivindicação 1, caracterizado pelo fato de que antes de transmitir, pelo primeiro computador, para o segundo computador, a primeira chave pública, a segunda chave pública, o primeiro vetor mascarado criptografado e o primeiro vetor aleatório criptografado, o método incluindo ainda: gerar, pelo primeiro computador, o primeiro vetor aleatório; gerar, pelo primeiro computador, o primeiro vetor mascarado
3 / 12 combinando o primeiro vetor e o primeiro vetor aleatório; gerar, pelo primeiro computador, uma primeira permutação e uma segunda permutação; gerar, pelo primeiro computador, um primeiro par de chaves incluindo a primeira chave pública e a primeira chave privada; gerar, pelo primeiro computador, um segundo par de chaves incluindo a segunda chave pública e a segunda chave privada; criptografar, pelo primeiro computador, o primeiro vetor mascarado usando a primeira chave pública; e criptografar, pelo primeiro computador, o primeiro vetor aleatório usando a segunda chave pública.
4. Método de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira chave pública, a primeira chave privada, a segunda chave pública, a segunda chave privada, a terceira chave pública, uma terceira chave privada correspondente à terceira chave pública, a quarta chave pública e uma quarta chave privada correspondente a quarta chave pública são chaves criptográficas homomórficas aditivas.
5. Método de acordo com a reivindicação 1, caracterizado pelo fato de que antes de receber, pelo primeiro computador, a partir do segundo computador, a terceira chave pública, a quarta chave pública, o segundo vetor mascarado criptografado e o segundo vetor aleatório criptografado: o segundo computador gera o segundo vetor aleatório; o segundo computador gera o segundo vetor mascarado combinando o segundo vetor e o segundo vetor aleatório; o segundo computador gera a terceira permutação e a quarta permutação; o segundo computador gera um terceiro par de chaves incluindo a terceira chave pública e uma terceira chave privada; o segundo computador gera um quarto par de chaves incluindo
4 / 12 a quarta chave pública e uma quarta chave privada; o segundo computador criptografa o segundo vetor mascarado usando a terceira chave pública; e o segundo computador criptografa o segundo vetor aleatório usando a quarta chave pública.
6. Método de acordo com a reivindicação 1, caracterizado pelo fato de que: o segundo computador gera um terceiro vetor de negação criptografado criptografando um segundo vetor de negação usando a primeira chave pública; o segundo computador gera um terceiro vetor de diferença criptografado com base no primeiro vetor mascarado criptografado e no terceiro vetor de negação criptografado; o segundo computador gera um quarto vetor de negação criptografado criptografando o segundo vetor de negação usando a segunda chave pública; o segundo computador gera um quarto vetor de diferença criptografado com base no primeiro vetor aleatório criptografado e no quarto vetor de negação criptografado; o segundo computador gera o terceiro vetor de diferença criptografado permutado usando uma terceira permutação e o terceiro vetor de diferença criptografado; e o segundo computador gera o quarto vetor de diferença criptografado permutado usando uma quarta permutação e o quarto vetor de diferença criptografado.
7. Método de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: comparar, pelo primeiro computador, o produto escalar ou um valor derivado do produto escalar a um primeiro limite predeterminado; e
5 / 12 se o produto escalar ou o valor derivado do produto escalar exceder o primeiro limite predeterminado, realizar, pelo primeiro computador, uma interação com o segundo computador.
8. Método de acordo com a reivindicação 7, caracterizado pelo fato de que o primeiro vetor e o segundo vetor correspondem a um primeiro modelo biométrico e um segundo modelo biométrico, respectivamente, e em que o primeiro limite predeterminado é um limite de correspondência biométrica
9. Método de acordo com a reivindicação 1, caracterizado pelo fato de que após receber, pelo primeiro computador, a partir do segundo computador, a terceira chave pública, a quarta chave pública, o segundo vetor mascarado criptografado e o segundo vetor aleatório criptografado, e antes de receber, pelo primeiro computador, a partir do segundo computador, o terceiro vetor de diferença permutada e o quarto vetor de diferença permutada, o método inclui ainda: gerar, pelo primeiro computador, um primeiro vetor de negação criptografado criptografando um primeiro vetor de negação usando a terceira chave pública; gerar, pelo primeiro computador, um primeiro vetor de diferença criptografado com base no segundo vetor mascarado criptografado e no primeiro vetor de negação criptografado; gerar, pelo primeiro computador, um segundo vetor de negação criptografado criptografando o primeiro vetor de negação usando a quarta chave pública; gerar, pelo primeiro computador, um segundo vetor de diferença criptografado com base no segundo vetor aleatório criptografado e no segundo vetor de negação criptografado; gerar, pelo primeiro computador, um primeiro vetor de diferença criptografado permutado usando uma primeira permutação e o
6 / 12 primeiro vetor de diferença criptografado; gerar, pelo primeiro computador, um segundo vetor de diferença criptografado permutado usando uma segunda permutação e o segundo vetor de diferença criptografado; e transmitir, pelo primeiro computador, para o segundo computador, o primeiro vetor de diferença criptografado permutado e o segundo vetor de diferença criptografado permutado.
10. Método de acordo com a reivindicação 9, caracterizado pelo fato de que: o segundo computador gera um primeiro vetor de diferença permutado descriptografando o primeiro vetor de diferença criptografado permutado usando uma terceira chave privada correspondente à terceira chave pública; o segundo computador gera um segundo vetor de diferença permutado ao descriptografar o segundo vetor de diferença criptografado permutado usando uma quarta chave privada correspondente à quarta chave pública; o segundo computador calcula o produto escalar do primeiro vetor e o segundo vetor com base no segundo vetor mascarado, o segundo vetor aleatório, o primeiro vetor de diferença permutada e o segundo vetor de diferença permutada; o segundo computador compara o produto escalar ou um valor derivado do produto escalar a um segundo limite predeterminado; e se o produto escalar ou o valor derivado do produto escalar exceder o segundo limite predeterminado, o segundo computador realiza uma interação com o primeiro computador.
11. Primeiro computador, caracterizado pelo fato de que compreende: um processador; e
7 / 12 uma mídia legível por computador não transitória acoplada ao processador; a mídia legível por computador não transitória incluindo código executável pelo processador para implementar um método incluindo: transmitir, para um segundo computador, uma primeira chave pública, uma segunda chave pública, um primeiro vetor mascarado criptografado e um primeiro vetor aleatório criptografado, em que o primeiro vetor mascarado criptografado é um primeiro vetor mascarado criptografado usando a primeira chave pública, e o primeiro vetor aleatório criptografado é um primeiro vetor aleatório criptografado usando a segunda chave pública; receber, a partir do segundo computador, uma terceira chave pública, uma quarta chave pública, um segundo vetor mascarado criptografado e um segundo vetor aleatório criptografado, em que o segundo vetor mascarado criptografado é um segundo vetor mascarado criptografado usando a terceira chave pública e a segunda o vetor aleatório criptografado é um segundo vetor aleatório criptografado usando a quarta chave pública; receber, a partir do segundo computador, um terceiro vetor de diferença criptografada permutada e um quarto vetor de diferença criptografada permutada, em que o terceiro vetor de diferença criptografada permutada é criptografado usando a primeira chave pública e permutado usando uma terceira permutação, e em que o quarto vetor de diferença criptografada permutada é criptografado usando a segunda chave pública e permutado usando uma quarta permutação; produzir um terceiro vetor de diferença permutado ao descriptografar o terceiro vetor de diferença criptografado permutado usando uma primeira chave privada correspondente à primeira chave pública; produzir um quarto vetor de diferença permutada pela descriptografia do quarto vetor de diferença criptografada permutada usando uma segunda chave privada correspondente à segunda chave pública; e calcular um produto escalar de um primeiro vetor e um
8 / 12 segundo vetor com base no primeiro vetor mascarado, no primeiro vetor aleatório, no terceiro vetor de diferença permutada e no quarto vetor de diferença permutada.
12. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que o cálculo do produto escalar do primeiro vetor e do segundo vetor compreende: calcular uma magnitude quadrada do primeiro vetor mascarado; calcular uma magnitude quadrada do primeiro vetor aleatório; calcular uma magnitude quadrada do terceiro vetor de diferença permutada; calcular uma magnitude quadrada do quarto vetor de diferença permutada; e calcular o produto escalar do primeiro vetor e do segundo vetor com base na magnitude quadrada do primeiro vetor mascarado, a magnitude quadrada do primeiro vetor aleatório, a magnitude quadrada do terceiro vetor de diferença permutada e a magnitude quadrada do quarto vetor permutado vetor de diferença.
13. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que antes de transmitir para o segundo computador, a primeira chave pública, a segunda chave pública, o primeiro vetor mascarado criptografado e o primeiro vetor aleatório criptografado, o método inclui ainda: gerar o primeiro vetor aleatório; gerar o primeiro vetor mascarado combinando o primeiro vetor e o primeiro vetor aleatório; gerar uma primeira permutação e uma segunda permutação; gerar um primeiro par de chaves compreendendo a primeira chave pública e a primeira chave privada;
9 / 12 gerar um segundo par de chaves compreendendo a segunda chave pública e a segunda chave privada; criptografar o primeiro vetor mascarado usando a primeira chave pública; e criptografar o primeiro vetor aleatório usando a segunda chave pública.
14. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que a primeira chave pública, a primeira chave privada, a segunda chave pública, a segunda chave privada, a terceira chave pública, uma terceira chave privada correspondente à terceira chave pública, a quarta chave pública e uma quarta chave privada correspondente a quarta chave pública são chaves criptográficas homomórficas aditivas.
15. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que antes de receber do segundo computador, a terceira chave pública, a quarta chave pública, o segundo vetor mascarado criptografado e o segundo vetor aleatório criptografado: o segundo computador gera o segundo vetor aleatório; o segundo computador gera o segundo vetor mascarado combinando o segundo vetor e o segundo vetor aleatório; o segundo computador gera a terceira permutação e a quarta permutação; o segundo computador gera um terceiro par de chaves incluindo a terceira chave pública e uma terceira chave privada; o segundo computador gera um quarto par de chaves incluindo a quarta chave pública e uma quarta chave privada; o segundo computador criptografa o segundo vetor mascarado usando a terceira chave pública; e o segundo computador criptografa o segundo vetor aleatório usando a quarta chave pública.
10 / 12
16. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que: o segundo computador gera um terceiro vetor de negação criptografado criptografando um segundo vetor de negação usando a primeira chave pública; o segundo computador gera um terceiro vetor de diferença criptografado com base no primeiro vetor mascarado criptografado e no terceiro vetor de negação criptografado; o segundo computador gera um quarto vetor de negação criptografado criptografando o segundo vetor de negação usando a segunda chave pública; o segundo computador gera um quarto vetor de diferença criptografado com base no primeiro vetor aleatório criptografado e no quarto vetor de negação criptografado; o segundo computador gera o terceiro vetor de diferença criptografado permutado usando uma terceira permutação e o terceiro vetor de diferença criptografado; e o segundo computador gera o quarto vetor de diferença criptografado permutado usando uma quarta permutação e o quarto vetor de diferença criptografado.
17. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que o método compreende ainda: comparar o produto escalar ou um valor derivado do produto escalar a um primeiro limite predeterminado; e se o produto escalar ou o valor derivado do produto escalar exceder o primeiro limite predeterminado, realizar uma interação com o segundo computador.
18. Primeiro computador de acordo com a reivindicação 17, caracterizado pelo fato de que o primeiro vetor e o segundo vetor
11 / 12 correspondem a um primeiro modelo biométrico e um segundo modelo biométrico, respectivamente, e em que o primeiro limite predeterminado é um limite de compatibilidade biométrica.
19. Primeiro computador de acordo com a reivindicação 11, caracterizado pelo fato de que depois de receber do segundo computador, a terceira chave pública, a quarta chave pública, o segundo vetor mascarado criptografado e o segundo vetor aleatório criptografado, e antes de receber do segundo computador, o terceiro vetor de diferença permutada e o quarto vetor de diferença permutada, o método incluindo ainda: gerar um primeiro vetor de negação criptografado criptografando um primeiro vetor de negação usando a terceira chave pública; gerar um primeiro vetor de diferença criptografado com base no segundo vetor mascarado criptografado e no primeiro vetor de negação criptografado; gerar um segundo vetor de negação criptografado criptografando o primeiro vetor de negação usando a quarta chave pública; gerar um segundo vetor de diferença criptografado com base no segundo vetor aleatório criptografado e no segundo vetor de negação criptografado; gerar um primeiro vetor de diferença criptografado permutado usando uma primeira permutação e o primeiro vetor de diferença criptografado; gerar um segundo vetor de diferença criptografado permutado usando uma segunda permutação e o segundo vetor de diferença criptografado; e transmitir para o segundo computador, o primeiro vetor de diferença criptografado permutado e o segundo vetor de diferença criptografado permutado.
20. Primeiro computador de acordo com a reivindicação 19,
12 / 12 caracterizado pelo fato de que: o segundo computador gera um primeiro vetor de diferença permutado descriptografando o primeiro vetor de diferença criptografado permutado usando uma terceira chave privada correspondente à terceira chave pública; o segundo computador gera um segundo vetor de diferença permutado ao descriptografar o segundo vetor de diferença criptografado permutado usando uma quarta chave privada correspondente à quarta chave pública; o segundo computador calcula o produto escalar do primeiro vetor e o segundo vetor com base no segundo vetor mascarado, o segundo vetor aleatório, o primeiro vetor de diferença permutada e o segundo vetor de diferença permutada; o segundo computador compara o produto escalar ou um valor derivado do produto escalar a um segundo limite predeterminado; e se o produto escalar ou o valor derivado do produto escalar exceder o segundo limite predeterminado, o segundo computador realiza uma interação com o primeiro computador.
Petição 870200147472, de 23/11/2020, pág. 86/95 PRIMEIRO COMPUTADOR 102 SEGUNDO COMPUTADOR 104 PRIMEIRO VETOR 102A SEGUNDO VETOR 104A 1/9
COMPUTADOR DO PROVEDOR DE RECURSOS 106 USUÁRIO 108
ANTENA
PRIMEIRO COMPUTADOR
PROCESSADOR
VISOR ENTRADA/SAÍDA DE DADOS
ELEMENTO DE COMUNICAÇÕES APLICATIVO/DADOS DE ARMAZENAMENTO/MEMÓRIA
MÓDULO DE COMUNICAÇÃO
APLICATIVO DE CARTEIRA MÓVEL
APLICAÇÃO BIOMÉTRICA
MÓDULO DE CÁLCULO DE PRODUTO ESCALAR
INTERFACE DE ELEMENTO SEM CONTATO TRANSFERÊNCIA DE DADOS DE NFC/MEMÓRIA SEGURA DE
ELEMENTO SEM CONTATO
Petição 870200147472, de 23/11/2020, pág. 88/95 PRIMEIRO COMPUTADOR 300 PROCESSADOR MEIO LEGÍVEL POR COMPUTADOR 306 302
MÓDULO DE MÓDULO DE INSCRIÇÃO MÓDULO DE CÁLCULO COMUNICAÇÃO 310 DE PRODUTO ESCALAR 308 312
INTERFACE DE COMUNICAÇÕES 304 3/9
MÓDULO DE
INTERAÇÃO BANCO DE 314 DADOS
VETORIAL 316
FASE DE INSCRIÇÃO
FASE DE CONFIGURAÇÃO
PRIMEIRA FASE DE TRANSMISSÃO
FASE DE CÁLCULO INTERMEDIÁRIA
SEGUNDA FASE DE TRANSMISSÃO
FASE DE CÁLCULO DO PRODUTO ESCALAR
FASE DE INTERAÇÃO
PRIMEIRO SEGUNDO
COMPUTADOR COMPUTADOR
PRIMEIRO COMPUTADOR RECUPERA COM SEGUNDO COMPUTADOR RECUPERA COM
SEGURANÇA O PRIMEIRO VETOR SEGURANÇA O SEGUNDO VETOR
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA SEGUNDO
PRIMEIRO VETOR ALEATÓRIO VETOR ALEATÓRIO
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA SEGUNDO
PRIMEIRO VETOR MASCARADO VETOR MASCARADO
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA TERCEIRO
PRIMEIRO PAR DE CHAVES PAR DE CHAVES COMPREENDENDO A
COMPREENDENDO A PRIMEIRA CHAVE TERCEIRA CHAVE PÚBLICA E A TERCEIRA
PÚBLICA E A PRIMEIRA CHAVE PRIVADA CHAVE PRIVADA
PRIMEIRO COMPUTADOR GERA SEGUNDO SEGUNDO COMPUTADOR GERA QUARTO
PAR DE CHAVES COMPREENDENDO A PAR DE CHAVES COMPREENDENDO A
SEGUNDA CHAVE PÚBLICA E A SEGUNDA QUARTA CHAVE PÚBLICA E A QUARTA
CHAVE PRIVADA CHAVE PRIVADA
PRIMEIRO COMPUTADOR ENCRIPTA O SEGUNDO COMPUTADOR ENCRIPTA
PRIMEIRO VETOR MASCARADO USANDO A SEGUNDO VETOR MASCARADO USANDO
PRIMEIRA CHAVE PÚBLICA TERCEIRA CHAVE PÚBLICA
PRIMEIRO COMPUTADOR ENCRIPTA O SEGUNDO COMPUTADOR ENCRIPTA
PRIMEIRO VETOR ALEATÓRIO USANDO A SEGUNDO VETOR ALEATÓRIO USANDO
SEGUNDA CHAVE PÚBLICA QUARTA CHAVE PÚBLICA
PRIMEIRO SEGUNDO
COMPUTADOR COMPUTADOR
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA SEGUNDO
PRIMEIRO VETOR DE NEGAÇÃO VETOR DE NEGAÇÃO
PRIMEIRO COMPUTADOR ENCRIPTA O SEGUNDO COMPUTADOR ENCRIPTA
PRIMEIRO VETOR DE NEGAÇÃO USANDO A SEGUNDO VETOR DE NEGAÇÃO USANDO
TERCEIRA CHAVE PÚBLICA SEGUNDA CHAVE PÚBLICA
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA TERCEIRO
PRIMEIRO VETOR DE DIFERENÇA VETOR DE DIFERENÇA ENCRIPTADO
ENCRIPTADO PERMUTADO
PRIMEIRO COMPUTADOR ENCRIPTA O SEGUNDO COMPUTADOR ENCRIPTA
PRIMEIRO VETOR DE NEGAÇÃO USANDO A SEGUNDO VETOR DE NEGAÇÃO USANDO
QUARTA CHAVE PÚBLICA SEGUNDA CHAVE PÚBLICA
PRIMEIRO COMPUTADOR GERA SEGUNDO SEGUNDO COMPUTADOR GERA O QUARTO
VETOR DE DIFERENÇA ENCRIPTADO VETOR DE DIFERENÇA ENCRIPTADO
PRIMEIRO COMPUTADOR GERA A SEGUNDO COMPUTADOR GERA TERCEIRA
PRIMEIRA PERMUTAÇÃO E A SEGUNDA PERMUTAÇÃO E QUARTA PERMUTAÇÃO
PERMUTAÇÃO
PRIMEIRO COMPUTADOR GERA O SEGUNDO COMPUTADOR GERA TERCEIRO
PRIMEIRO VETOR DE DIFERENÇA VETOR DE DIFERENÇA ENCRIPTADO
ENCRIPTADO PERMUTADO PERMUTADO
PRIMEIRO COMPUTADOR GERA SEGUNDO SEGUNDO COMPUTADOR GERA O QUARTO
VETOR DE DIFERENÇA ENCRIPTADA VETOR DE DIFERENÇA ENCRIPTADO
PERMUTADO PERMUTADO
PRIMEIRO SEGUNDO
COMPUTADOR COMPUTADOR
PRIMEIRO COMPUTADOR DESCRIPTA O SEGUNDO COMPUTADOR DESCRIPTA O
TERCEIRO VETOR DE DIFERENÇA PRIMEIRO VETOR DE DIFERENÇA
ENCRIPTADO PERMUTADO USANDO A ENCRIPTADA PERMUTADO USANDO
PRIMEIRA CHAVE PRIVADA TERCEIRA CHAVE PRIVADA
PRIMEIRO COMPUTADOR DESCRIPTA O SEGUNDO COMPUTADOR DESCRIPTA O
QUARTO VETOR DE DIFERENÇA SEGUNDO VETOR DE DIFERENÇA
ENCRIPTADA PERMUTADO USANDO A ENCRIPTADA PERMUTADO USANDO A
SEGUNDA CHAVE PRIVADA QUARTA CHAVE PRIVADA
PRIMEIRO COMPUTADOR CALCULA A SEGUNDO COMPUTADOR CALCULA A
MAGNITUDE QUADRADA DO PRIMEIRO MAGNITUDE QUADRADA DO SEGUNDO
VETOR MASCARADO VETOR MASCARADO
PRIMEIRO COMPUTADOR CALCULA A SEGUNDO COMPUTADOR CALCULA A
MAGNITUDE QUADRADA DO PRIMEIRO MAGNITUDE QUADRADA DO SEGUNDO
VETOR ALEATÓRIO VETOR ALEATÓRIO
PRIMEIRO COMPUTADOR CALCULA A SEGUNDO COMPUTADOR CALCULA A
MAGNITUDE QUADRADA DO TERCEIRO MAGNITUDE QUADRADA DO PRIMEIRO
VETOR DE DIFERENÇA PERMUTADO VETOR DE DIFERENÇA PERMUTADO
PRIMEIRO COMPUTADOR CALCULA A SEGUNDO COMPUTADOR CALCULA A
MAGNITUDE QUADRADA DO QUARTO MAGNITUDE QUADRADA DO SEGUNDO
VETOR DE DIFERENÇA PERMUTADO VETOR DE DIFERENÇA PERMUTADO
PRIMEIRO COMPUTADOR CALCULA SEGUNDO COMPUTADOR CALCULA O
PRODUTO ESCALAR BASEADO EM PRODUTO ESCALAR BASEADO EM
MAGNITUDES QUADRADAS CALCULADAS MAGNITUDES QUADRADAS CALCULADAS
PRIMEIRO COMPUTADOR COMPARA SEGUNDO COMPUTADOR COMPARA
PRODUTO ESCALAR OU VALOR DERIVADO PRODUTO ESCALAR OU VALOR DERIVADO
DO PRODUTO ESCALAR AO PRIMEIRO DO PRODUTO ESCALAR AO SEGUNDO
LIMIAR PREDETERMINADO LIMIAR PREDETERMINADO
Petição 870200147472, de 23/11/2020, pág. 93/95
SEGUNDO
COMPUTADOR 8/9
PRIMEIRO TERMINAL DE COMPUTADOR DO COMPUTADOR DO REDE DE COMPUTADOR DO
COMPUTADOR ACESSO PROVEDOR DE ADQUIRENTE PROCESSAMENTO DE EMISSOR
RECURSOS PAGAMENTO
USUÁRIO
Petição 870200147472, de 23/11/2020, pág. 94/95 USUÁRIO 902 9/9
PRIMEIRO COMPUTADOR DO
PROVEDOR DE EDIFÍCIO
COMPUTADOR
RECURSOS
SEGUNDO
COMPUTADOR
BR112020023826-0A 2018-05-24 2019-05-24 Método, e, primeiro computador. BR112020023826A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862676219P 2018-05-24 2018-05-24
US62/676,219 2018-05-24
PCT/US2019/033933 WO2019226999A1 (en) 2018-05-24 2019-05-24 Efficient concurrent scalar product calculation

Publications (1)

Publication Number Publication Date
BR112020023826A2 true BR112020023826A2 (pt) 2021-04-13

Family

ID=68616032

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020023826-0A BR112020023826A2 (pt) 2018-05-24 2019-05-24 Método, e, primeiro computador.

Country Status (8)

Country Link
EP (1) EP3804214A4 (pt)
JP (1) JP7280285B2 (pt)
KR (1) KR20210000722A (pt)
CN (1) CN112166577B (pt)
AU (1) AU2019274602B2 (pt)
BR (1) BR112020023826A2 (pt)
SG (1) SG11202011250XA (pt)
WO (1) WO2019226999A1 (pt)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE469499T1 (de) * 2007-07-27 2010-06-15 Research In Motion Ltd Vorrichtung und verfahren zum betrieb eines drahtlosen servers
CN102314580A (zh) * 2011-09-20 2012-01-11 西安交通大学 一种基于向量和矩阵运算的支持计算的加密方法
US8966277B2 (en) 2013-03-15 2015-02-24 Mitsubishi Electric Research Laboratories, Inc. Method for authenticating an encryption of biometric data
FR3018934B1 (fr) * 2014-03-24 2017-05-26 Morpho Procede d'enrolement de donnees dans une base pour la protection desdites donnees
US10079674B2 (en) * 2015-02-26 2018-09-18 New York University Systems and methods for privacy-preserving functional IP verification utilizing fully homomorphic encryption
JP6786884B2 (ja) * 2015-07-10 2020-11-18 富士通株式会社 関係暗号化
FR3040842B1 (fr) * 2015-09-03 2018-12-07 Commissariat A L'energie Atomique Et Aux Energies Alternatives Methode d'interrogation confidentielle d'un service geodependant par cryptographie homomorphe
US10033760B2 (en) * 2016-05-27 2018-07-24 Apple Inc. Secure wireless ranging

Also Published As

Publication number Publication date
AU2019274602B2 (en) 2024-05-02
CN112166577A (zh) 2021-01-01
KR20210000722A (ko) 2021-01-05
JP2021525386A (ja) 2021-09-24
JP7280285B2 (ja) 2023-05-23
AU2019274602A1 (en) 2020-11-26
EP3804214A1 (en) 2021-04-14
EP3804214A4 (en) 2021-04-14
WO2019226999A1 (en) 2019-11-28
SG11202011250XA (en) 2020-12-30
CN112166577B (zh) 2024-06-07

Similar Documents

Publication Publication Date Title
US10873447B2 (en) Efficient concurrent scalar product calculation
US11770369B2 (en) System and method for identity verification across mobile applications
US11736296B2 (en) Biometric verification process using certification token
Gunasinghe et al. PrivBioMTAuth: Privacy preserving biometrics-based and user centric protocol for user authentication from mobile phones
US11250116B2 (en) Optimized private biometric matching
US8325994B2 (en) System and method for authenticated and privacy preserving biometric identification systems
CN1758594B (zh) 生物测量认证装置和终端
US20240048390A1 (en) Verification of biometric templates for privacy preserving authentication
US20220407709A1 (en) Biometric sensor on portable device
WO2021053749A1 (ja) 情報照合システム、クライアント端末、サーバ、情報照合方法、及び情報照合プログラム
Al-Maliki et al. Challenge-response mutual authentication protocol for EMV contactless cards
US10503936B2 (en) Systems and methods for utilizing magnetic fingerprints obtained using magnetic stripe card readers to derive transaction tokens
BR112020023826A2 (pt) Método, e, primeiro computador.
Alhothaily Secure Verification for Payment and Banking Systems
David et al. Prognostic Analysis of User Authentication Mechanisms in Mobile Wallets
Gunasinghe Privacy Enhancing Techniques for Digital Identity Management