Os padrões ML-KEM e ML-DSA permitem que você armazene a chave privada de duas maneiras. Há uma pequena semente, 64 bytes para ML-KEM e 32 bytes para ML-DSA, e há uma forma expandida maior que é derivada dessa seed por meio de uma função hash. Os dois são matematicamente equivalentes e você pode ir da semente para a forma expandida a qualquer momento, mas não pode voltar atrás. Se você está escolhendo entre o que guardar como chave privada, armazene a semente. É o verdadeiro segredo de onde todo o resto é derivado. Você pode expandir para a tonalidade completa sempre que precisar, e leva cerca de 40 microssegundos, então não há motivo real para armazenar a versão expandida em disco. Se precisar dele na memória para operações repetidas, basta expandir uma vez no momento da carga. A seed é apenas bytes aleatórios, então qualquer valor é uma chave válida. A forma expandida possui uma estrutura; coeficientes que precisam estar dentro do alcance, uma chave pública embutida, um hash que precisa corresponder, e o padrão exige que você verifique tudo isso na importação. Isso é muito mais superficial para que algo dê errado do que você simplesmente não tem com uma semente. Há também um problema contínuo de serialização no IETF, onde o formato atual de compromisso permite que tanto a semente quanto a chave expandida fiquem na mesma estrutura de dados. Isso significa que duas implementações conformes podem ler campos diferentes da mesma chave e acabar com materiais de chave diferentes, o que não é algo que você quer em um formato de chave. Resumo; Resumo: armazene a semente e expanda conforme necessário. Texto completo abaixo.