This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
- Pessoas no mundo: ~ 2^33- Células no corpo humano: ~ 2^33- Atomos no corpo humano: ~ 2^81- Grãos de areia na terra: ~ 2^63- Estrelas no universo: ~ 2^69- Átomos no universo: ~ 2^246
Tamanho de uma chave simétrica considerada segura: 2^128
Tempo estimado para um super-computador quebrar esta chave por força bruta: > 10^21 anos! Ou, 1 000 000 000 000 000 000 000 anos!
1) A imagem deve estar íntegra.2) A imagem deve ter sido "assinada" pelo desenvolvedor.3) Só pode bootar de imagens geradas e gravadas na fonte.4) Os passos do processo de boot devem ser configuráveis.5) A imagem pode, ou não, estar criptografada.
- Chave única, idêntica dos dois lados.- Deve ser "combinada" previamente.- Cálculos muito rápidos.
13
Criptografia Assimétrica
- Cada lado tem um par de chaves: pública, privada.- Não há necessidade de "combinar" a chave previamente.- Cálculo matemático lento: exponencial.
Chave Privada Ana
Chave Pública Ana
14
Criptografia - Resumo (Hash)
- Oferece um resumo dos dados, integridade.- Muito difícil encontrar outro dado que dê o mesmo resumo.- Não necessita de chave, qualquer um pode calcular obtendo o mesmo
resultado.
Hash = 10! Hash = 10?Integro!
15
Boot seguro
Boot Seguro - Passo a Passo
Problema 1 : Integridade dos dados.
FlashCode A:
MysecurecodeNot my codeMysecurecodeMysecurecodeMysecurecodeMysecurecode
Boot Seguro (Revisão)Para o boot ocorrer de maneira segura:
1) A imagem deve estar íntegra.a) ANA gera e envia um resumo criptográfico.
2) A imagem deve ter sido "assinada" pelo desenvolvedor.a) ANA assina o resumo com sua chave privada, e envia sua chave pública junto com a imagem.
3) Só pode bootar de imagens geradas e gravadas na fonte.a) Par de chaves público e privada do desenvolvedor (ANA).b) O processador (BETO) deve poder checar que ANA é a ANA.
i) Resumo criptogáfico da chave pública da ANA.
4) Os passos do processo de boot devem ser configuráveis.5) A imagem pode, ou não, estar criptografada.
- Seleção de protocolos de segurança.- Assinatura (RSA 1024, 2048, ECC)- Hash (SHA128, 256)- Cifra (AES)
- Endereços das assinaturas e certificados.- Seleção de recursos do processador de maneira segura.- Ordem dos cálculos.- Lógica de checagem do hash dos certificados.
23
Múltiplas assinaturas
- É possível checar assinatura de diversos objetos (regiões).- Exemplos:
- U-boot- Kernel, Device Tree- Outros binários (cores secundários, GPU, WiFi, etc)- Rootfs (boot pode ficar demorado)
- Cada novo objeto, gera um par de chaves:- Chave privada, para a assinatura, “na fábrica”.
- Chave pública, em formato de certificado digital, a ser copiada junto com a imagem para a
execução do processo de boot.
- Geralmente, para cada produto é criado um conjunto de novas chaves.- Quanto mais pares de chaves, mas seguro é o processo geral.
24
Gravação em fusíveis
Algumas configurações do boot seguro devem ser, na fábrica, gravadas em fusíveis internos do processador, e bloqueados para gravações futuras:
- Fonte de boot- Parâmetros de boot- Hash das chaves públicas
Estes fusíveis devem ser gravados em fábrica, atravéz de ferramentas disponibilizadas pelo fabricante.
- Os dados podem ser gravados via u-boot, ou via programa rodando no PC com link serial (USB) com a placa.
25
Chain of
Trust
- O Hardware se encarrega de carregar uma imagem inicial de boot loader de maneira segura.
- O boot loader ou o hardware, “bootam” o kernel de maneira segura.- O kernel, por sua vez, se encarrega de montar o rootfs e mantê-lo de maneira
segura.
Corrente de confiança (Chain of Trust)
u-boot
kernel
rootfs
Hardware
Boot seguro
26
Implementação em um processador comercial *
Ferramentas necessárias
Familia estudada: i.MX6 da NXP, utilizando o HABv4 (High Assurance Boot).
- Gerador de certificados, responsável por gerar:- Par de chaves público/privada- Certificados digitais- Hash a ser gravado nos fusíveis
- Assinador de código, responsável por:- Calcular o resumo do binário em questão- Assinar o resumo com a chave privada- Concatenar o resultado com os certificados necessários
- Exemplo de comandos de boot seguro- Ferramenta para gravação dos fusíveis, em fábrica
28
Distribuição de certificados e chavesCertificado
mestre
Produto 1
Certificado Pai 1
Certificado Filho 1-1
Certificado Filho 1-2
Certificado Filho 1-3
Produto 2
Certificado Pai 2
Certificado Filho 2-1
Certificado Filho 2-2
Certificado Filho 2-3
Produto n
n
n
n
n
Tabela de chaves e
certificados
29
Gerando as chavesbruno@bruno:~/CST-CodeSigningTool/cst-2.3.2/keys$ .
/hab4_pki_tree.sh
Do you want to use an existing CA key (y/n)?: n
Do you want to use Elliptic Curve Cryptography (y/n)?: n
Enter key length in bits for PKI tree: 2048
Enter PKI tree duration (years): 10
How many Super Root Keys should be generated? 1
Do you want the SRK certificates to have the CA flag set? (y/n)?: