Song Jong on Nostr: #tuxdobananil #explains #nips #nip-49 # Resumo do NIP-49 - Criptografia de Chave ...
#tuxdobananil #explains #nips #nip-49
# Resumo do NIP-49 - Criptografia de Chave Privada 🔐🔑
O NIP-49 define um método pelo qual os clientes podem criptografar (e descriptografar) a chave privada de um usuário usando uma senha. Este processo visa garantir que a chave privada possa ser armazenada de forma segura e acessada de forma segura em diferentes dispositivos ou clientes.
## Derivação da Chave de Criptografia Simétrica
- **Senha (PASSWORD)**: Lida do usuário e normalizada para o formato NFKC.
- **LOG_N**: Define a quantidade de rodadas para scrypt, indicando a memória requerida e o tempo aproximado no computador. Varia de 64 MiB/100ms (LOG_N = 16) a 4 GiB (LOG_N = 22).
- **SALT**: 16 bytes aleatórios.
- **CHAVE SIMÉTRICA (SYMMETRIC_KEY)**: Derivada usando scrypt, resultando em uma chave de 32 bytes.
## Criptografando uma Chave Privada
- **CHAVE PRIVADA (PRIVATE_KEY)**: Chave secp256k1 do usuário em bytes brutos (32 bytes).
- **BYTE DE SEGURANÇA DA CHAVE (KEY_SECURITY_BYTE)**: Indica se a chave foi manipulada de forma insegura (0x00), segura (0x01), ou desconhecida (0x02).
- **DADOS ASSOCIADOS (ASSOCIATED_DATA)**: Incluem o BYTE DE SEGURANÇA DA CHAVE.
- **NONCE**: 24 bytes aleatórios.
- **CIPHERTEXT**: Resultado da criptografia XChaCha20-Poly1305 da chave privada.
- **VERSÃO (VERSION_NUMBER)**: 0x02.
- **CIPHERTEXT_CONCATENATION**: Concatenação de VERSÃO, LOG_N, SALT, NONCE, DADOS ASSOCIADOS e CIPHERTEXT.
- **CHAVE PRIVADA CRIPTOGRAFADA (ENCRYPTED_PRIVATE_KEY)**: Codificada em bech32 com prefixo 'ncryptsec'.
## Dados de Teste
- **Normalização Unicode**: A senha "ÅΩẛ̣" deve ser normalizada para o formato NFKC antes de ser usada em scrypt.
## Discussão
- **Derivação de Chave**: A senha passa por um processo de derivação usando scrypt, escolhido por sua resistência comprovada e preferência dos criptógrafos sobre argon2.
- **Algoritmo de Criptografia Simétrica**: Utiliza-se XChaCha20-Poly1305 por sua preferência entre os criptógrafos e menor associação com o governo dos EUA.
## Recomendações
- **Não é recomendado** que os usuários publiquem suas chaves privadas criptografadas no Nostr, pois a obtenção de muitas chaves criptografadas pode facilitar a quebra da criptografia por atacantes.
- **Recomenda-se** que os clientes zerem a memória de senhas e chaves privadas antes de liberar essa memória, aumentando a segurança dos dados sensíveis.
Este NIP fornece uma abordagem robusta e segura para a criptografia de chaves privadas, permitindo que os usuários protejam suas chaves privadas com uma camada adicional de segurança.
# Resumo do NIP-49 - Criptografia de Chave Privada 🔐🔑
O NIP-49 define um método pelo qual os clientes podem criptografar (e descriptografar) a chave privada de um usuário usando uma senha. Este processo visa garantir que a chave privada possa ser armazenada de forma segura e acessada de forma segura em diferentes dispositivos ou clientes.
## Derivação da Chave de Criptografia Simétrica
- **Senha (PASSWORD)**: Lida do usuário e normalizada para o formato NFKC.
- **LOG_N**: Define a quantidade de rodadas para scrypt, indicando a memória requerida e o tempo aproximado no computador. Varia de 64 MiB/100ms (LOG_N = 16) a 4 GiB (LOG_N = 22).
- **SALT**: 16 bytes aleatórios.
- **CHAVE SIMÉTRICA (SYMMETRIC_KEY)**: Derivada usando scrypt, resultando em uma chave de 32 bytes.
## Criptografando uma Chave Privada
- **CHAVE PRIVADA (PRIVATE_KEY)**: Chave secp256k1 do usuário em bytes brutos (32 bytes).
- **BYTE DE SEGURANÇA DA CHAVE (KEY_SECURITY_BYTE)**: Indica se a chave foi manipulada de forma insegura (0x00), segura (0x01), ou desconhecida (0x02).
- **DADOS ASSOCIADOS (ASSOCIATED_DATA)**: Incluem o BYTE DE SEGURANÇA DA CHAVE.
- **NONCE**: 24 bytes aleatórios.
- **CIPHERTEXT**: Resultado da criptografia XChaCha20-Poly1305 da chave privada.
- **VERSÃO (VERSION_NUMBER)**: 0x02.
- **CIPHERTEXT_CONCATENATION**: Concatenação de VERSÃO, LOG_N, SALT, NONCE, DADOS ASSOCIADOS e CIPHERTEXT.
- **CHAVE PRIVADA CRIPTOGRAFADA (ENCRYPTED_PRIVATE_KEY)**: Codificada em bech32 com prefixo 'ncryptsec'.
## Dados de Teste
- **Normalização Unicode**: A senha "ÅΩẛ̣" deve ser normalizada para o formato NFKC antes de ser usada em scrypt.
## Discussão
- **Derivação de Chave**: A senha passa por um processo de derivação usando scrypt, escolhido por sua resistência comprovada e preferência dos criptógrafos sobre argon2.
- **Algoritmo de Criptografia Simétrica**: Utiliza-se XChaCha20-Poly1305 por sua preferência entre os criptógrafos e menor associação com o governo dos EUA.
## Recomendações
- **Não é recomendado** que os usuários publiquem suas chaves privadas criptografadas no Nostr, pois a obtenção de muitas chaves criptografadas pode facilitar a quebra da criptografia por atacantes.
- **Recomenda-se** que os clientes zerem a memória de senhas e chaves privadas antes de liberar essa memória, aumentando a segurança dos dados sensíveis.
Este NIP fornece uma abordagem robusta e segura para a criptografia de chaves privadas, permitindo que os usuários protejam suas chaves privadas com uma camada adicional de segurança.