Chaves e Objetos

Cada tipo de chave ou objeto terá uma série de atributos que definem completamente aquele tipo, mas alguns são comuns à todos:

  1. Nome: identifica unicamente o objeto dentro da partição; pode ter até 32 caracteres e podem ser usados caracteres alfanuméricos e mais o underline _. No pocket os nomes dos objetos são sensíveis ao caso, ou seja, há diferenciação entre letras maiúsculas e minúsculas. Objetos em outras partições podem ser referenciados indicando o nome da partição e o nome do objeto com a regra de formação:

    partição/objeto

  2. Exportável: propriedade que permite que o objeto seja exportado para fora do pocket para uso em outras aplicações.

  3. Temporário: objetos não persistentes entre sessões, ou seja, existem apenas durante a sessão na qual foi criado, sendo removidos pelo pocket ao fim desta.

Atenção: no Dinamo todos os objetos são mantidos cifrados, independe do modo de operação.

As operações de importação e exportação de chaves criptográficas, assim como as instalações de novos algoritmos e mecanismos, não interferem nas demais chaves existentes no pocket.

No modo RM1 somente as funções aprovadas pela norma estarão disponíveis para criação de chaves:

  1. DES, nos modos ECB e CBC

  2. 3DES, 112 e 168 bits, nos modos ECB e CBC

  3. AES, com chaves de 128, 192 e 256 bits, nos modos EBC, CBC e CTR

  4. RSA, até 2048 bits

  5. ECDSA, com chaves acima de 224 bits

  6. EdDSA (ECX com Ed25519 e Ed448)

  7. XECDH

  8. SHA1, SHA2 e SHA3

  9. HMAC, baseado em SHA1, SHA2 e SHA3

  10. CMAC, baseado em 3DES e AES

No modo RM2 estão disponíveis os mesmos algoritimos de RM1, com exceção de DES e 3DES de 112 bits.

Quando operando em modo não restrito (NRM) todos os algoritmos e tamanhos de chaves estão habilitados.

DES

Chave criptográfica simétrica de bloco para algoritmo de criptografia tipo Data Encryption Standard. Tem um tamanho fixo de 56 bits. A chave na verdade tem um tamanho de 64 bits, mas a cada 8 bits um deles é usado como bit de verificação, levando a um tamanho útil de 56 bits.

As operações de criptografia podem ser feitas nos modos ECB (Electronic Codebook) e CBC (Cipher Block Chaining), sendo recomendado usar o modo CBC quando possível. Para o padding nas operações de criptografia podem ser usadas três opções: sem padding, padding com zeros e padding segundo o padrão PKCS#5.

3DES

Chave de criptografia simétrica de bloco para algoritmo de criptografia tipo Triple Data Encryption Standard, faz um sequência de três operações DES usando duas ou três chaves diferentes. O tamanho pode ser 112 ou 168 bits. A implementação trabalha usando esquema EDE (Encrypt - Decrypt - Encrypt).

As operações de criptografia podem ser feitas nos modos ECB (Electronic Codebook) e CBC (Cipher Block Chaining), sendo recomendado usar o modo CBC quando possível. Para o padding nas operações de criptografia podem ser usadas três opções: sem padding, padding com zeros e padding segundo o padrão PKCS#5.

DESX

Chave de criptografia simétrica de bloco para algoritmo de criptografia tipo Data Encryption Standard - X (DESX ou DES-X), é uma variação do DES usando técnica conhecida como key whitening, com o objetivo de dificultar ataques de força bruta. O tamanho é de 184 bits.

As operações de criptografia podem ser feitas nos modos ECB (Electronic Codebook) e CBC (Cipher Block Chaining), sendo recomendado usar o modo CBC quando possível. Para o padding nas operações de criptografia podem ser usadas três opções: sem padding, padding com zeros e padding segundo o padrão PKCS#5.

AES

Chave criptográfica simétrica de bloco para algoritmo de criptografia tipo Advanced Encryption Standard ou Rijndael, criado para ser o sucessor do DES. O tamanho pode ser de 128, 192 ou 256 bits.

As operações de criptografia podem ser feitas nos modos ECB (Electronic Codebook) e CBC (Cipher Block Chaining), sendo recomendado usar o modo CBC quando possível. Para o padding nas operações de criptografia podem ser usadas três opções: sem padding, padding com zeros e padding segundo o padrão PKCS#5.

ARC4

Chave criptográfica simétrica de stream para algoritmo de criptografia tipo Rivest Code 4, também conhecido como ARC4. A implementação do pocket usa um tamanho de 128 bits.

RSA

Chave assimétrica para algoritmo de criptografia de chave pública RSA. O tamanho pode ser de 512, 1024, 1152, 1408, 1984, ou 2048 bits.

As chaves RSA no pocket são criadas com expoente público de valor fixo e definido (três bytes na sequência 01 00 01, valor decimal de216+1=655372^{16} + 1 = 65537216+1=65537).

As assinaturas digitais gerados pelo pocket são compatíveis com os algoritmos definidos no documento Padrões e Algoritmos Criptográficos da ICP-Brasil - DOC ICP-01.01 versão 3.1 de 31 de março de 2016, com o padrão PKCS#1 RSA Cryptography Standard v.2.1 de junho de 2002 e com a RFC 3447 Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1.

ECC e ECX

Chave criptográfica assimétrica para algoritmos de chave pública tipo curvas elípticas (ECC - Ellipitc Curve Criptography) e curvas ECX (Montgomery/Edwards). A implementação do pocket adota as seguintes curvas e tamanhos de chaves:

  1. Security Group Random (112, 128, 160, 192, 224, 256, 384 e 521 bits)

  2. Security Group Koblitz (160, 192, 224 e 256 bits)

  3. NIST Random (384 e 521 bits)

  4. ISO X9.62 (192, 239 e 256 bits)

  5. Brainpool (160, 192, 224, 256, 320, 384 e 512)

A criptografia de curvas elípticas no pocket implementa operações de assinatura digital (ECDSA e EdDSA) e troca de chaves (ECDH e XECDH).

As assinaturas digitais gerados pelo pocket são compatíveis com os algoritmos definidos no documento Padrões e Algoritmos Criptográficos da ICP-Brasil - DOC ICP-01.01 versão 3.1 de 31 de março de 2016.

HOTP

Objeto contendo semente para autenticação conforme padrão OATH (Open Authentication) ou segundo RFC 4226 - An HMAC-Based One-Time Password Algorithm. Quando um objeto HOTP é criado, opcionalmente pode ser gerado e exportado um SoftToken, que é uma peça de software Java para ser instalado em dispositivos móveis. A semente pode ser gerada internamente ou pode ser importada.

Tokens físicos aderentes ao padrão OATH, vendidos por terceiros, também podem ser autenticados no pocket desde que disponibilizem a semente para importação no pocket.

MAP

O tipo MAP não é exatamente um objeto, é uma agregação de identificadores. Com o objeto MAP (mapeamento) é possível criar relações entre objetos para uso pelas aplicações. O objeto map tem dois slots que podem ser preenchidos com identificadores de outros objetos ou ainda podem ser preenchidos livremente. Fica a cargo de cada aplicação a interpretação de cada campo do MAP.

Um MAP pode ser usado por exemplo para relacionar um certificado X.509 com sua chave privada RSA em único identificador ou criar apontadores com nomes diferentes para um objeto (links simbólicos).

Certificado X.509

Certificado digital padrão X.509. Normalmente é importado como um objeto opaco e identificado pelo pocket com um certificado. Este objeto não está obrigatoriamente relacionado a uma chave privada ou chave pública no pocket. O certificado digital pode existir na partição do usuário como uma entidade independente. O pocket não gera certificados, portanto objetos deste tipo são sempre importados.

O pocket também trata nativamente objetos do tipo CRL (Certificate Revocation List).

O pocket Dinamo suporta certificados digitais no padrão ICP-Brasil.

CRL

Lista de certificado revogados (LCR ou CRL na sigla em inglês). O pocket não gera CRLs, portanto objetos deste tipo são sempre importados.

Cadeia PKCS#7

Cadeia de certificados no formato PKCS#7. Normalmente a cadeia envolve o certificado final, todas as autoridades certificadoras intermediárias e a autoridade certificadora raiz. O pocket não gera cadeias de certificados, portanto objetos deste tipo são sempre importados.

File

Objeto armazenado na partição do usuário do pocket, mas interpretado de forma opaca pelo pocket, ou seja, apenas uma sequência de bytes identificada por um nome. Este tipo pode ser usado pelas aplicações para armazenar informações de seu interesse no pocket, que é um repositório seguro. O tipo File está limitado a um tamanho de 65536 bytes.

Last updated