Os certificados digitais são como os computadores sabem que confiam em um site, arquivo ou e-mail. Alguns dos casos de uso mais proeminentes incluem o protocolo TLS e a prática de assinatura de código. Embora haja muitos aplicativos diferentes para certificados digitais, a infraestrutura subjacente que rege o provisionamento e a revogação de certificados é basicamente a mesma.
Este artigo tem como objetivo fornecer uma melhor compreensão das considerações de segurança por trás da infraestrutura de chave pública que dá suporte ao ecossistema de certificado digital. Podemos então explorar o compartilhamento secreto de Shamir, um método seguro para armazenar chaves privadas - usado pelo Avance Network.
Conforme o cenário de ameaças evolui, com ataques novos e sofisticados surgindo com frequência, este artigo também explora como a segurança é fornecida pela Internet e as áreas que podem ser aprimoradas.
Criptografia de chave pública
Para entender melhor os certificados digitais, vamos começar com alguns fundamentos da criptografia de chave pública. Cada certificado digital contém uma assinatura digital, que é fornecida com base nos princípios básicos da criptografia de chave pública.
A criptografia de chave pública, também comumente referida como criptografia de chave assimétrica, é o conceito de usar um par de chaves para realizar a criptografia e a descriptografia. Ao contrário da criptografia de chave simétrica, que requer apenas uma única chave, a criptografia de chave pública requer duas chaves correspondentes que são matematicamente derivadas e vinculadas para executar as funções criptográficas pretendidas.
Ao longo dos anos, os criptógrafos desenvolveram diferentes métodos de geração de pares de chaves. Todos esses métodos compartilham a mesma característica, que é que, se dada uma chave pública , seria inviável derivar computacionalmente a chave privada correspondente . Essa propriedade exclusiva permitiu que a criptografia de chave pública fosse usada para conduzir verificações de integridade de dados por meio do provisionamento de assinaturas digitais. Quando fornecido um par de chaves privada e pública, a chave privada é usada para fornecer uma assinatura digital e a chave pública é então usada para verificar essa assinatura.
De acordo com a forma como as chaves são nomeadas, uma chave privada deve ser mantida em segurança, com acesso limitado a partes autorizadas, e sua chave pública correspondente disponibilizada para partes que precisam verificar assinaturas. Supondo que uma chave privada foi mantida em segurança, podemos ter total confiança na origem de qualquer informação que tenha sido assinada digitalmente.
Certificados digitais
Os certificados digitais contêm várias informações, sendo a mais importante uma assinatura digital para verificar a autenticidade da autoridade emissora do certificado. O processo de verificação é essencialmente como estabelecemos identidades e confiança na Internet. Antes de nos conectarmos a um site ou baixar software / aplicativos, nossos dispositivos realizam verificações de identidade em segundo plano, validando os certificados digitais apresentados. Se esse processo de validação falhar, é comum ver avisos sinalizados em nossos dispositivos nos informando que a conexão não é segura ou que a integridade do software não é confiável. Em termos de um modelo de comunicação cliente-servidor, a responsabilidade recai sobre o servidor em fornecer um certificado digital para que os clientes autentiquem a identidade do servidor.
A importância dos certificados digitais não pode ser subestimada, pois é assim que as organizações se identificam aos clientes ao fornecer serviços pela Internet. Sem a existência de certificados digitais, os agentes de ameaças basicamente têm liberdade para se passar por entidades legítimas para fins nefastos na Internet.
O que é uma infraestrutura de chave pública (PKI)?
A próxima área a explorar é a infraestrutura por trás do gerenciamento de certificados digitais. Os certificados digitais são a personificação da confiança na Internet, daí a necessidade de passar por uma autoridade de certificação (CA) confiável para obter um. A configuração da infraestrutura por uma autoridade de certificação confiável é conhecida como infraestrutura de chave pública e é a principal responsável pela emissão e revogação de certificados digitais.
O modelo de PKI moderno adotado por autoridades de certificação confiáveis é conhecido como modelo de confiança distribuída. Por design, a CA raiz, que é o início da cadeia de confiança, tem seu próprio par de chaves pública e privada e assina certificados intermediários que são emitidos para CAs intermediárias ramificadas. As CAs intermediárias, por sua vez, têm seu próprio par de chaves pública e privada e emitem certificados folha assinados para entidades que os apresentam a clientes solicitantes, como um navegador da web.
Por ter a maior parte da responsabilidade de assinatura passada para uma CA intermediária, o uso da chave privada da CA raiz é bastante minimizado e isso ajuda a preservar a segurança da chave privada da CA raiz. No caso de a chave privada de uma CA intermediária ficar comprometida, os certificados folha que se estendem dessa ramificação podem ser facilmente revogados e o impacto geral na PKI é limitado em comparação com o comprometimento da chave privada da CA raiz. Preservar o sigilo da chave privada do certificado raiz é um dos aspectos mais importantes da PKI, pois é o segredo que sustenta todo o modelo de confiança.
Podemos confiar nas CAs?
Embora a noção de uma CA confiável forneça um certo grau de segurança, isso não significa que essas CAs não sejam suscetíveis de ter suas chaves privadas de certificado raiz / intermediário comprometidas. É claro que isso é comparado a um cenário do juízo final para a CA, já que os certificados agora podem ser emitidos de forma fraudulenta e mal utilizados. O que devemos ter em mente é que essas CAs confiáveis geralmente estão bem estabelecidas, com uma sólida reputação construída ao longo dos anos, e isso as coloca na mira de invasores mal-intencionados.
Um exemplo notável de tal ocorrência é quando a DigiNotar, uma CA confiável extinta, teve a chave privada de sua CA intermediária comprometida em 2011. Um servidor de emissão de certificados da DigiNotar foi comprometido e os invasores foram capazes de gerar certificados fraudulentos. De acordo com este artigo, um total de 531 certificados não autorizados foram emitidos para domínios renomados, como microsoft.com, google.com e até mesmo domínios de agências governamentais em todo o mundo. A análise pós-incidente observou que a DigiNotar implementou uma combinação de salvaguardas virtuais e físicas para proteger suas chaves privadas, mas suas defesas foram violadas por meio de um servidor web sem patch. Isso deu aos invasores uma entrada para navegar pela rede da DigiNotar e, eventualmente, trabalharam para chegar ao servidor de emissão do certificado. Especulações sobre como isso poderia ter ocorrido eram abundantes, com muitos se perguntando como os invasores conseguiram contornar os controles físicos. Os possíveis cenários que foram discutidos incluem funcionários da DigiNotar deixando cartões de acesso negligentemente em seus terminais por longos períodos de tempo.
Incidentes semelhantes ao caso DigiNotar surgiram esporadicamente ao longo dos anos, o que certamente mostra que CAs confiáveis não são inexpugnáveis. Mesmo com o apoio de pesados investimentos em medidas de segurança, as CAs ainda podem cair nas mãos dos cibercriminosos. Isso nos leva a questionar o que mais pode ser feito para reduzir as chances de ocorrência desses eventos.
Considerações de PKI para o Avance Network
No Avance Network, os certificados digitais são usados em uma infinidade de áreas. Por exemplo, nossos aplicativos e lançamentos de software são empacotados com um certificado para os clientes validarem a autenticidade dos lançamentos. Isso está muito de acordo com as práticas recomendadas de assinatura de código no setor de tecnologia.
Convencionalmente, o provisionamento de certificados digitais, conforme descrito na seção acima, é tratado pelas autoridades de certificação e seus intermediários. Depois de muita consideração, decidimos usar nossa própria infraestrutura de chave pública para lidar com a distribuição de certificados.
A escolha de canalizar recursos por trás da configuração de nossa própria PKI veio com sua cota justa de riscos e desafios, embora, ao mesmo tempo, nos tenha dado a oportunidade de transferir o controle da segurança exclusivamente para nossas mãos. Configurar uma PKI em vez de passar por uma autoridade de certificação reconhecida envolve assumir a responsabilidade pelo provisionamento e revogação de certificados e também pela proteção da chave privada do certificado raiz. Com modelagem de ameaças e considerações de design adequadas, a rota que escolhemos ajuda a eliminar a dependência de um fornecedor terceirizado para a segurança de nossos produtos.
Proteção de chave privada
Agora que temos uma compreensão básica da importância de proteger as chaves privadas, vamos discutir os métodos adotados para proteger as chaves privadas do certificado raiz. Este tópico raramente é discutido e esperamos esclarecer a importância dessa consideração.
Métodos predominantes
Desde o início da criptografia de chave pública em meados da década de 1970, várias maneiras foram criadas para proteger as chaves privadas. Os métodos de fato giram em torno do conceito de ter a chave privada armazenada offline em um módulo de segurança de hardware (HSM), como uma unidade USB criptografada. Algumas variações incluem ter a chave privada armazenada fisicamente em um pedaço de papel e trancada em uma sala segura com controles de acesso rígidos.
Esses métodos provaram resistir ao teste do tempo em grande medida, e são poucos os incidentes que envolvem o comprometimento de chaves privadas. Em teoria, no entanto, ter a chave privada armazenada como um todo apresenta um único ponto de falha. No caso de ataques internos, especialmente de alguém com acesso a chaves privadas, os métodos predominantes oferecem pouca ou nenhuma proteção. Embora esse cenário seja altamente improvável, definitivamente vale a pena dar uma olhada em outras alternativas possíveis que podem ajudar a mitigar esse risco.
Compartilhamento do segredo de Shamir
É aqui que o Compartilhamento de Segredo de Shamir entra em cena. O compartilhamento secreto de Shamir foi inventado por Adi Shamir, o mesmo criptógrafo que desempenhou um papel fundamental no desenvolvimento do algoritmo de criptografia de chave pública RSA amplamente adotado. A ideia generalizada para o compartilhamento secreto de Shamir é dividir um segredo em n números de compartilhamentos e armazená-los separadamente. Esses compartilhamentos são ligados matematicamente por meio de uma equação polinomial, e reconstruir o segredo requer que um número limite de compartilhamentos esteja presente.
Você pode pensar em cada ação individual como uma peça de um quebra-cabeça, mas, nesse caso, nem todas as peças são necessárias para reconstruí-lo. Contanto que você tenha o número limite de peças, pode reconstruir o quebra-cabeça com sucesso.
Vamos dar um exemplo usando equações polinomiais. Voltando aos fundamentos das equações polinomiais, lembramos que são necessários k pontos para definir um polinômio de grau k-1. Por exemplo:
Apenas uma linha pode ser desenhada entre 2 pontos dados s ( curva x 1 )
Apenas uma parábola pode ser desenhada entre 3 pontos dados ( curva x 2 )
Apenas uma curva cúbica pode ser desenhada entre 4 pontos dados ( curva x 3 )
Para qualquer equação polinomial que escolhermos para definir como dividimos nosso segredo, as partes divididas serão pontos no gráfico da equação polinomial traçada. Para dar uma olhada mais de perto nas complexidades matemáticas de Shamir Secret Sharing, vamos tentar dividir um segredo em 5 compartilhamentos, mas com um limite de apenas 3 compartilhamentos necessários para reconstruir o segredo. Cada compartilhamento será representado por um ponto no gráfico da função polinomial e o segredo será representado pelo ponto onde o gráfico traçado cruza o eixo y.
Segredo = 1954, Limiar = 3
A equação polinomial teria que ser no grau de k-1 que é 2
Equação da curva : f (x) = a x 2 + bx + c
Constantes um e b pode ser aleatória, ao passo que c será 1954 como que vai ser onde a curva intersecta o eixo dos y do gráfico quando x = 0 . Identificar onde a curva se cruza com o eixo y é a chave para reconstruir o segredo. Vamos escolher os valores para a e b da seguinte maneira:
a = 12, b = 43
f (x) = 12 x 2 + 43x + 1954
Usando constantes aleatórias como mostrado acima, terminaríamos com a equação resultante para guiar a divisão do segredo nas 5 partes que desejamos. Para esta ilustração, estes 5 pontos foram escolhidos:
x = 1, f (1) = 12 (1 ) 2 + 43 (1) + 1954 = 2009 → (1, 2009)
x = 2, f (2) = 12 (2 ) 2 + 43 (2) + 1954 = 2088 → (2, 2088)
x = 3, f (3) = 12 (3 ) 2 + 43 (3) + 1954 = 2191 → (3, 2191)
x = 4, f (4) = 12 (4 ) 2 + 43 (4) + 1954 = 2318 → (4, 2318)
x = 5, f (5) = 12 (5 ) 2 + 43 (5) + 1954 = 2469 → (5, 2469)
No gráfico acima, podemos ver que cada um dos pontos encontra-se na parábola, que é a forma esperada de uma função polinomial com grau 2. A parábola corta o eixo y em (0, 1954), que são as coordenadas do nosso valor secreto.
Para a premissa de reconstruir o segredo, vamos supor que a função exata da curva é desconhecida para nós e temos apenas 3 partes aleatórias das 5 existentes, pois 3 é o limite.
Variáveis conhecidas:
Compartilhar 1, (1, 2009)
Compartilhar 2, (3, 2191)
Compartilhar 3, (5, 2469)
f (x) = a x 2 + bx + c
Das 3 ações disponíveis para nós, podemos formar 3 equações separadas e tentar resolver o valor da constante c para recuperar o segredo usando os princípios de resolução de equações simultâneas.
Equação 1: 2009 = a (1 ) 2 + b (1) + c, 2009 = a + b + c
Equação 2: 2191 = a (3 ) 2 + b (3) + c, 2191 = 9a + 3b + c
Equação 3: 2469 = a (5 ) 2 + b (5) + c, 2469 = 25a + 5b + c
Passo 1
Equação 1 multiplicada por 9 e subtraindo a Equação 2 da equação resultante
9a + 9b + 9c = 18081
(9a + 9b + 9c) - (9a + 3b + c) = 18081 - 2088
Equação 4: 6b + 8c = 15890
Passo 2
Equação 1 multiplicada por 25 e subtraindo a equação 3 da equação resultante
25a + 25b + 25c = 50225
(25a + 25b + 25c) - (25a + 5b + c) = 50225 - 2469
Equação 5: 20b + 24c = 47756
Etapa 3
Use as Equações 4 e 5 para eliminar a constante b encontrando um múltiplo comum entre 20 e 6
60b + 80c = 158900 → Equação 4 multiplicado por 10
60b + 72c = 143268 → Equação 5 multiplicado por 3
8c = 158900 - 143268 = 15632 c = 15632/8 = 1954
O segredo foi reconstruído e encontrado em 1954 usando 3 compartilhamentos aleatórios. As etapas podem ser repetidas com qualquer combinação de 3 das 5 ações disponíveis e seus cálculos devem resultar em 1954 como o segredo.
O exemplo acima demonstra como um segredo pode ser dividido em compartilhamentos, com cada compartilhamento dado a uma pessoa diferente para guarda. O segredo pode então ser reconstruído quando um número predeterminado de pessoas fornece suas ações quando necessário. Assim, ninguém detém todo o segredo, nem pode recuperá-lo. As propriedades matemáticas por trás do Compartilhamento de Segredo de Shamir permitem que ele seja maleável para casos de uso específicos, pois você pode escolher o grau de uma equação polinomial com base no número de compartilhamentos em que um segredo será dividido. Para nossa implementação, também demos um passo além para que cada compartilhamento seja criptografado com a chave pública do proprietário do compartilhamento para confidencialidade ao mantê-lo em segurança.
Comparado com os métodos comuns de armazenamento de chaves privadas, o compartilhamento secreto de Shamir aborda a principal desvantagem de ter um único ponto de falha. Ataques internos agora exigiriam a cooperação de um número limite de proprietários de ações antes que a chave privada pudesse ser comprometida. Isso se aplica da mesma forma a agentes de ameaças externas, pois o comprometimento de um único compartilhamento não seria suficiente para adquirir a chave privada. Essa camada adicional de segurança nos deu um maior grau de confiança ao emitir certificados digitais e nossos clientes podem ter a tranquilidade de que os certificados não foram emitidos de forma fraudulenta.
O exemplo mostrado acima é apenas uma ilustração de como o Compartilhamento de Segredo de Shamir funciona; as implementações do mundo real são muito mais complexas, com outros fatores a serem considerados. A implementação real do compartilhamento secreto de Shamir também envolve os princípios da aritmética de campos finitos. Se a equação polinomial fosse plotada em um campo infinito, haveria preocupações de segurança, pois um invasor poderia resolver o caminho da função subjacente e reconstruir o segredo sem o número limite de compartilhamentos. Em teoria, uma equação polinomial plotada em um corpo finito acabaria sendo mais desarticulada, o que aumentaria a complexidade matemática de reconstruir o segredo sem o número limite de compartilhamentos.
Pensamentos finais
Ao longo dos anos, o Avance Network construiu uma base de clientes considerável e as atualizações de software estão sendo enviadas para os dispositivos com frequência. Proteger nossos produtos da ameaça de invasores que visam nossos sistemas e aplicativos como um ponto de entrada para a propagação de software malicioso é uma de nossas principais prioridades. Além de aderir aos padrões de segurança da indústria para o lançamento público de software, também conduzimos modelos de ameaças regularmente e adicionamos melhorias de segurança onde julgamos necessário. A implementação do compartilhamento secreto de Shamir é um exemplo em que avaliamos que forneceria camadas adicionais de segurança e atenuaria os riscos decorrentes dos métodos existentes.
À medida que o mundo digital evolui rapidamente, também é importante para nós, como organização, revisar nossos processos regularmente e considerar as opções disponíveis para melhorar nossa infraestrutura de chave pública. Historicamente, os agentes de ameaças desenvolveram repetidamente métodos de ponta para contornar as práticas de segurança mais recentes e devemos estar sempre atentos para ficar a par deles. Os padrões do setor sempre podem ser aprimorados por meio do amálgama de diferentes técnicas, pois isso coloca obstáculos adicionais a serem superados pelos agentes da ameaça antes de um acordo completo.