Pergunta

Estou programando uma autoridade de certificação em Java para uma aula da UNI, agora não sei qual é a melhor opção para o número de série do certificado.

  • Contador estático simples de 0 a muito
  • um grande número aleatório de bigint

Existe algum bom motivo para escolher um sobre o outro ... ou nenhum deles?

obrigado,

Foi útil?

Solução

Eu recomendaria que você use um número aleatório, mas mantenha uma lista dos números de série emitidos em um banco de dados. Isso permitirá duas coisas.

  1. Você nunca reeditará o mesmo número de série.
  2. Você pode dizer pelo número de série de um certificado se for remotamente válido.

É claro que o número 1 exige que você verifique a lista conhecida da geração e gerar um novo número aleatório se ocorrer uma colisão, e o número 2 não é muito de nada em termos de segurança ou validação, mas uma perspectiva interessante, nunca a menos .

Outras dicas

Tecnicamente, o contador de 0 para o extremo é mais fácil de implementar do que o BigRandomNumber - porque os números de série devem ser diferentes.

No entanto - você pode não querer usar um contador simples se se preocupar com pessoas sabendo quantos certificados você emitiu.

Depende do que você está usando o número de série. Se você é uma empresa pequena e se planeja fornecer um certificado por cliente, seu número de série revelará quantos clientes você tem.

Além disso, não vejo nenhuma razão para que o número de série não deve ser serial. Algumas pessoas argumentam que o uso de números de série fornecerá algumas informações (o próximo número de série) a um invasor em potencial, mas não acho que esse seja um grande problema.

O principal requisito é que o par (Issuer distinguished name, serial number) deve ser único no universo. Portanto, você não deve usar um número aleatório, a menos que seja tão grande que a probabilidade de repetição seja insignificante. Um número aleatório de 20 bytes deve ser mais do que adequado. Um contador simples é perfeitamente bom, se você não se importa com outras pessoas sabendo quantos certificados você emitiu.

Os ataques relativamente recentes aos emissores de certificados SSL (de Alex Sotirov et. Al) que exploraram a fraqueza no MD5 foram realmente facilitados pelo uso de números de série contra o tipo. Os números de série aleatórios não foram atacados. Isso não significa que os números de série previsíveis sejam de má segurança, isso significa apenas que para este aplicativo números de série aleatórios podem ajudar a mascarar as fraquezas no MD5. O problema da raiz ainda era MD5.

Acho que se examinarmos a palavra em série, a resposta está implícita .... serial, série, progressão etc.

Por acaso, encontrei essa pergunta por acaso agora e você pensaria pelas respostas que um número de série previsível não é uma preocupação de segurança. Eu diria que isso é uma preocupação e que números de série aleatórios são muito mais seguros. Cf. Flame Attack et al aqui por exemplo, ou aqui ou o artigo da Wikipedia sobre "Ataque de número de série previsível."

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top