DPKI: abordando as desvantagens da PKI centralizada com blockchain



Não é segredo que uma das ferramentas auxiliares comuns, sem as quais a proteção de dados em redes abertas é impossível, é a tecnologia de certificados digitais. No entanto, não é segredo que a principal desvantagem dessa tecnologia é a confiança incondicional nos centros que emitem certificados digitais. Andrey Chmora, diretor de tecnologia e inovação da ENCRY, propôs uma nova abordagem para organizar a infraestrutura de chave pública ( PKI ), que ajudará a eliminar as deficiências atuais e que usa a tecnologia de registro distribuído (blockchain). Mas as primeiras coisas primeiro.

Se você estiver familiarizado com os princípios operacionais da infraestrutura existente de chaves públicas e conhecer suas principais deficiências, poderá imediatamente recorrer à descrição do que propomos mudar.

O que são assinaturas e certificados digitais?
A interação na Internet sempre envolve a transferência de dados. Estamos todos interessados ​​em garantir que os dados sejam transmitidos de maneira segura. Mas o que é segurança? Os serviços de segurança mais solicitados são confidencialidade, integridade e autenticidade. Para isso, atualmente são usados ​​métodos de criptografia assimétrica ou criptografia com uma chave pública.

Para começar, para usar esses métodos, os sujeitos da interação devem ter duas chaves de pares individuais - pública e secreta. Com a ajuda deles, os serviços de segurança mencionados acima são fornecidos.

Como é alcançada a confidencialidade da transmissão de informações? Antes de enviar dados, o assinante remetente criptografa (converte criptograficamente) os dados abertos usando a chave pública do destinatário e o remetente descriptografa o texto cifrado recebido usando um par de chaves secretas.



Como é alcançada a integridade e autenticidade das informações transmitidas? Para resolver esse problema, outro mecanismo foi criado. Os dados abertos não são criptografados, mas com ele o resultado da aplicação de uma função hash criptográfica - uma imagem "compactada" da sequência de dados de entrada - é criptografada. O resultado desse hash é chamado de "resumo" e sua criptografia é realizada na chave secreta do assinante remetente ("testemunha"). A criptografia Digest resulta em uma assinatura digital. Ele, juntamente com o texto sem formatação, é transmitido ao assinante-destinatário (“revisor”). Ele descriptografa a assinatura digital na chave pública da testemunha e a compara com o resultado da aplicação da função hash criptográfica, que o verificador calcula independentemente com base nos dados abertos recebidos. Se eles corresponderem, isso indica que os dados foram transmitidos de forma autêntica e integral precisamente pelo assinante remetente e não modificados pelo invasor.



A maioria dos recursos que trabalham com dados pessoais e informações de pagamento (bancos, companhias de seguros, transportadoras aéreas, sistemas de pagamento e portais governamentais, como o serviço de impostos) usam ativamente métodos de criptografia assimétricos.

O que um certificado digital tem a ver com isso? Tudo é simples. No primeiro e no segundo processo, as chaves públicas estão envolvidas e, como elas desempenham um papel central, é muito importante garantir que as chaves realmente pertençam ao remetente (a testemunha, no caso de verificação de assinatura) ou ao destinatário, e não sejam substituídas pelas chaves dos atacantes. Para isso, existem certificados digitais que podem garantir a autenticidade e a integridade da chave pública.

Nota: a autenticidade e a integridade de uma chave pública são verificadas exatamente da mesma maneira que a autenticidade e a integridade dos dados abertos, ou seja, usando uma assinatura digital eletrônica (EDS).

De onde vêm os certificados digitais?
A emissão e manutenção de certificados digitais é de responsabilidade de autoridades de certificação confiáveis ​​ou Autoridades de Certificação (CAs). O requerente solicita a emissão de um certificado na CA, passa a identificação no Centro de Registro (CR) e recebe um certificado na CA. A CA garante que a chave pública do certificado pertence à própria entidade para a qual foi emitida.

Se você não confirmar a autenticidade da chave pública, o invasor durante a transferência / armazenamento dessa chave poderá substituí-la pela sua. Se a substituição ocorreu, o invasor poderá descriptografar tudo o que o assinante remetente transmite ao assinante receptor ou alterar os dados abertos a seu critério.

Os certificados digitais são usados ​​sempre que houver criptografia assimétrica. Um dos certificados digitais mais comuns são os certificados SSL para o modo de interação seguro via protocolo HTTPS. Centenas de empresas registradas em várias jurisdições estão envolvidas na emissão de certificados SSL. A parcela principal recai sobre cinco a dez grandes centros confiáveis: IdenTrust, Comodo, GoDaddy, GlobalSign, DigiCert, CERTUM, Actalis, Secom, Trustwave.

CA e CR são componentes de PKI, que também incluem:

  • Diretório Aberto - Um banco de dados acessível ao público que fornece armazenamento confiável de certificados digitais.
  • A lista de revogação de certificado é um banco de dados acessível ao público que fornece armazenamento confiável de certificados digitais de chaves públicas revogadas (por exemplo, devido ao comprometimento de uma chave secreta privada). Os atores de infraestrutura podem acessar esse banco de dados por conta própria ou podem usar o OCSP (Online Certification Status Protocol) especializado, que simplifica o processo de verificação.
  • Usuários de certificado - entidades atendidas pela PKI que assinaram um contrato de usuário com a CA e verificam a assinatura digital e / ou criptografam dados com base em uma chave pública do certificado.
  • Os assinantes são entidades atendidas pela PKI que possuem uma chave privada, um par de chaves públicas do certificado e firmaram um contrato de assinante com a CA. O assinante pode ser um usuário do certificado ao mesmo tempo.

Portanto, as entidades confiáveis ​​da infraestrutura de chave pública, que incluem a CA, o CR e os diretórios abertos, são responsáveis ​​por:

1. Verificação da identidade do requerente.
2. Criando perfil de um certificado de chave pública.
3. Emissão de um certificado de uma chave pública para o requerente, cuja identidade é autenticamente verificada.
4. Altere o status de um certificado de chave pública.
5. Fornecer informações sobre o status atual do certificado de chave pública.

Desvantagens da PKI, o que são?
Uma desvantagem fundamental da PKI é a presença de entidades confiáveis.
Os usuários certamente devem confiar na CA e no MD . Mas, como mostra a prática, a confiança incondicional está repleta de sérias conseqüências.

Nos últimos dez anos, vários grandes escândalos relacionados à vulnerabilidade de infraestrutura ocorreram nessa área.

- Em 2010, o malware Stuxnet começou a se espalhar na rede, que foi assinada usando certificados digitais roubados da RealTek e JMicron.

- Em 2017, o Google acusou a Symantec de emitir um grande número de certificados falsificados. Naquela época, a Symantec era uma das maiores CAs em termos de saída. No navegador Google Chrome 70, o suporte para certificados emitidos por esta empresa e suas afiliadas GeoTrust e Thawte foi descontinuado até 1º de dezembro de 2017.

As ACs foram comprometidas, como resultado, todos sofreram - tanto as próprias ACs quanto os usuários e assinantes. A confiança na infraestrutura foi prejudicada. Além disso, os certificados digitais podem ser bloqueados em conflitos políticos, o que também afetará o trabalho de muitos recursos. Isso foi precisamente o que se temia há vários anos na administração do presidente russo, onde em 2016 eles discutiram a possibilidade de criar um centro de certificação estadual que emitisse certificados SSL para sites em Runet. O estado atual é tal que até os portais estatais na Rússia usam certificados digitais emitidos pelas empresas americanas Comodo ou Thawte (a "filha" da Symantec).

Há outro problema - a questão da autenticação primária (autenticação) dos usuários . Como identificar um usuário que se inscreveu na CA com uma solicitação de certificado digital sem contato pessoal direto? Agora, isso está sendo decidido situacionalmente, dependendo dos recursos da infraestrutura. Algo é retirado de registros abertos (por exemplo, informações sobre entidades legais que solicitam certificados), nos casos em que os solicitantes são pessoas físicas, agências bancárias ou correios podem ser usados ​​onde sua identidade é confirmada por documentos de identificação, por exemplo, um passaporte.

O problema da falsificação de credenciais com a finalidade de personificação pertence à categoria das fundamentais. Observe que uma solução completa para esse problema não existe devido a razões teóricas da informação: sem informações confiáveis ​​a priori, é impossível confirmar ou negar a autenticidade de um determinado assunto. Como regra, para verificação é necessário apresentar um conjunto de documentos que comprovem a identidade do requerente. Existem muitos métodos de verificação diferentes, mas nenhum deles oferece garantia total da autenticidade dos documentos. Por conseguinte, a autenticidade da identidade do requerente também não pode ser garantida como confirmada.

Como essas deficiências podem ser eliminadas?
Se os problemas de PKI em sua situação atual puderem ser explicados pela centralização, é lógico supor que a descentralização ajudaria a eliminar parcialmente as deficiências indicadas.

A descentralização não implica a presença de atores confiáveis ​​- se você criar uma infraestrutura descentralizada de chaves públicas (Infraestrutura de Chave Pública Descentralizada, DPKI ), não precisará de uma CA ou de um escritório central . Desistimos do conceito de certificado digital e usamos um registro distribuído para armazenar informações sobre chaves públicas. No nosso caso, chamamos um registro de banco de dados linear que consiste em registros separados (blocos) conectados pela tecnologia blockchain. Em vez de um certificado digital, apresentamos o conceito de "notificação".

Como será o processo de recebimento, verificação e cancelamento de notificações na DPKI proposta:

1. Cada solicitante envia um pedido de notificação por conta própria, preenchendo um formulário durante o registro, após o qual forma uma transação que é armazenada em um pool especializado.

2. As informações sobre a chave pública, juntamente com os detalhes do proprietário e outros metadados, são armazenadas em um registro distribuído, e não em um certificado digital, pelo qual a CA é responsável pela emissão em uma PKI centralizada.

3. A identidade do solicitante é verificada após o fato pelos esforços conjuntos da comunidade de usuários da DPKI, não da CR.

4. Somente o proprietário dessa notificação pode alterar o status de uma chave pública.

5. Todos podem acessar o registro distribuído e verificar o status atual da chave pública.

Nota: à primeira vista, a verificação de identidade da comunidade pode parecer pouco confiável. Mas devemos lembrar que, atualmente, todos os usuários de serviços digitais certamente deixarão uma pegada digital, e esse processo só continuará ganhando força. Registros eletrônicos abertos de entidades legais, mapas, digitalização de imagens de terrenos e redes sociais são ferramentas disponíveis publicamente. Eles já são usados ​​com sucesso em investigações de jornalistas e órgãos policiais. Por exemplo, basta recordar as investigações de Bellingcat ou da equipe de investigação conjunta JIT, que estuda as circunstâncias do acidente do Boeing da Malásia.

Então, como uma infraestrutura de chave pública descentralizada funcionará na prática? Vamos nos debruçar sobre a descrição da própria tecnologia, que patenteamos em 2018 e, com razão, consideramos nosso know-how.

Imagine que existe um proprietário que possui muitas chaves públicas, em que cada chave é uma determinada transação armazenada no registro. Como, na ausência de uma autoridade de certificação, entender que todas as chaves pertencem a esse proprietário em particular? Para resolver esse problema, é criada uma transação zero, que contém informações sobre o proprietário e sua carteira (da qual é debitada a comissão pela colocação da transação no registro). Uma transação zero é um tipo de “âncora” à qual as seguintes transações com dados sobre chaves públicas serão anexadas. Cada transação contém uma estrutura de dados especializada, ou de outra maneira - uma notificação.

Notificação é um conjunto de dados estruturado que consiste em campos funcionais e inclui informações sobre a chave pública do proprietário, cuja persistência é garantida pela colocação em uma das entradas relacionadas do registro distribuído.

A próxima pergunta lógica é como é formada uma transação zero? Uma transação zero - como as subsequentes - é uma agregação de seis campos de dados. Durante a formação de uma transação zero, um par de chaves da carteira (chaves públicas e secretas do par) é envolvido. Esse par de chaves aparece no momento em que o usuário registra sua carteira, da qual será debitada a comissão pela postagem de uma transação zero no registro e, posteriormente, pelas operações com notificações.



Conforme mostrado na figura, o resumo da chave pública da carteira é gerado aplicando sucessivamente as funções de hash SHA256 e RIPEMD160. Aqui, o RIPEMD160 é responsável pela apresentação compacta de dados cuja capacidade de bits não excede 160 bits. Isso é importante - porque o registro não é um banco de dados barato. A própria chave pública é inserida no quinto campo. O primeiro campo contém dados que estabelecem uma conexão com a transação anterior. Para uma transação zero, este campo não contém nada, o que o distingue das transações subseqüentes. O segundo campo são os dados para verificar a conectividade da transação. Por uma questão de brevidade, chamaremos os dados do primeiro e do segundo campos de "pacote" e "verificação", respectivamente. O conteúdo desses campos é gerado pelo método de hash iterativo, como mostra o exemplo de vinculação da segunda e terceira transações na figura abaixo.



Os dados dos cinco primeiros campos são certificados por uma assinatura digital eletrônica, gerada usando a chave secreta da carteira.

Tudo, a transação zero é enviada ao pool e após uma verificação bem-sucedida (como mostra a figura abaixo) é inserida no registro.



Agora você pode "amarrar" as seguintes transações a ele. Considere como ocorre a formação de transações diferentes de zero.



A primeira coisa que provavelmente impressionou você foi a abundância de pares de chaves. Além do par de chaves já familiar da carteira, são usados ​​pares de chaves comuns e oficiais.

Uma chave pública comum é aquela para a qual tudo, de fato, foi iniciado. Essa chave está envolvida em vários procedimentos e processos que se desenrolam no mundo circundante (transações bancárias e outras, fluxo de documentos, etc.). Por exemplo, uma chave secreta de um par comum pode ser usada para gerar assinaturas digitais de vários documentos - ordens de pagamento, etc. e pública - para verificar essa assinatura digital com a execução subsequente dessas ordens, sujeita à sua validade.

Um par de negócios é emitido para uma entidade DPKI registrada. O nome desse par corresponde ao seu objetivo. Observe que, ao gerar / verificar uma transação zero, as chaves de serviço não são usadas.

Mais uma vez, esclareceremos o objetivo das chaves:

  1. As chaves da carteira são usadas para gerar / verificar uma transação zero e qualquer outra transação diferente de zero. A chave secreta da carteira é conhecida apenas pelo proprietário da carteira, que ao mesmo tempo é o proprietário de muitas chaves públicas comuns.
  2. Uma única chave pública tem finalidade semelhante a uma chave pública para a qual um certificado é emitido em uma PKI centralizada.
  3. O par de chaves de serviço pertence à DPKI. A chave secreta é emitida para entidades registradas e é usada na formação de transações digitais eletrônicas (com exceção de zero). Público é usado para verificar a assinatura digital de uma transação antes de ser colocada no registro.

Assim, existem dois grupos de chaves. O primeiro inclui chaves de serviço e chaves de carteira - elas fazem sentido apenas no contexto da DPKI. O segundo grupo inclui chaves comuns - seu escopo pode variar e é devido aos aplicativos em que são usados. Ao mesmo tempo, o DPKI garante a integridade e autenticidade das chaves públicas comuns.

Nota: Um par de chaves de serviço pode ser conhecido por várias entidades DPKI. Por exemplo, pode ser o mesmo para todos. Por esse motivo, ao gerar a assinatura de cada transação diferente de zero, duas chaves secretas são usadas, uma das quais é a chave da carteira - é conhecida apenas pelo proprietário da carteira, que também é o proprietário de muitas chaves públicas comuns. Todas as chaves têm seu próprio significado. Por exemplo, você sempre pode provar que uma transação foi inserida no registro por uma entidade DPKI registrada, pois a assinatura foi gerada, inclusive em uma chave de serviço secreto. E não pode haver abuso, como um ataque do DOS, porque o proprietário paga por cada transação.

Todas as transações que seguem o zero são geradas de maneira semelhante: uma chave pública (mas não uma carteira, como no caso de uma transação zero, mas de um par de chaves comum) é executada através de duas funções de hash SHA256 e RIPEMD160. Portanto, os dados do terceiro campo são formados. As informações de acompanhamento são inseridas no quarto campo (por exemplo, informações sobre o status atual, períodos de validade, registro de data e hora, identificadores dos algoritmos criptográficos usados ​​etc.). No quinto campo, a chave pública do par de chaves de serviço. Com sua ajuda, o EDS será verificado, para que seja replicado. Justificamos a necessidade de tal abordagem.

Lembre-se de que uma transação é inserida no pool e armazenada lá até ser processada. O armazenamento no pool está associado a um certo risco - essas transações podem ser falsificadas. O proprietário certifica os dados da transação de assinatura digital. A chave pública para verificar essa assinatura digital é indicada em um dos campos da transação de forma explícita e, posteriormente, inserida no registro. , , . , . , , , . . , .

. :

1. .
2. , .
3. .

, 1 2 , . 3, , , . .

, — . , . , . , .

. . ( ). , / . , . .

— - , , — . — , . “” .

, , : . : — , — , , , ( ). , .



: “” ? — . - , .

, , №3 №2. - , №2. №3 - , №2. - SHA256 RIPEMD160. №2, . .




. :



, , , , .

, , , , DPKI :

1. ().
2. ().
3. ().

// -. , , , (, .) . DPKI , , , .

, DPKI , .

?

— . — . : , , , .

ENCRY , , , , :

  • : ( ), ,
  • PrismLang, ,
  • .

, :

  1. DPKI . — - . .
  2. .
  3. .
  4. , : .
  5. .
  6. ENCRY , .
  7. , .

, , .

, . : , DPKI , . . . - Bellingcat.

: DPKI — , , PKI.

, , , ENCRY.

Source: https://habr.com/ru/post/pt461761/


All Articles