Pergunta

Gostaria de assinar um dispositivo, e eu tenho 64 bits para armazenar minha assinatura no dispositivo. Este dispositivo tem um endereço MAC e alguns outros detalhes (cerca de 30 bytes pena) eu posso mangle para criar a minha assinatura.

Se possível, eu gostaria que o método a ser one-way, para que eu possa verificar se a assinatura é válida sem saber como criar uma assinatura válida. A maioria das teclas público-privadas têm esse recurso, mas eles geram assinaturas que são 48 bytes de comprimento (eu só tenho 8 bytes).

A implementação em Python é um plus.

Graças

Editar : Obrigado a todos pelo conselho. Parece que não há nenhuma seguro maneira de fazer isso, apenas uma forma que é moderadamente inconveniente para os atacantes. Eu provavelmente vou usar um hash criptográfico combinada com bit-baralhar segredo. Esta será tão seguro quanto qualquer outro link no meu (muito fraco) 'segurança'.

Foi útil?

Solução

As funções hash e assinaturas digitais são muito coisas diferentes.

O tamanho de uma assinatura digital depende da função hash subjacente e o comprimento da chave. Portanto, em teoria, você pode criar uma implementação RSA que gera assinaturas de 64 bits, mas isso seria uma assinatura extremamente fraco.

Para comprimentos de chave menores, você pode querer olhar para criptografia de curva elíptica.

EDIT:. Sim, eu sou um criptógrafo

EDIT 2:. No entanto, se você só precisa de uma função hash, você pode olhar para elf64 ou RIPEMD-64 como Fernando Miguélez sugeriu

EDIT 3: Fazendo as contas, você precisa usar chaves de 16 bits no ECC para gerar assinaturas de 64 bits, que é muito fraco. Para ECC, nada menos do que 128 bits pode ser considerado fraco. Para RSA este é 1024 bits.

Outras dicas

Basicamente o que você precisa é de um 64-bit criptográfico de hash funcion , como Ripemd- 64 ou elfo-64. Então você criptografar o hash com um método de criptografia e você tem uma assinatura de 64 bits. O único problema é que, do ponto de vista de um não-cryptoanalyst, que 64 bits oferece uma assinatura muito mais fraca do que bits de hash típico sobre-128. No entanto ele ainda pode ser adequado para a sua aplicação.

Você pode usar apenas uma função hash padrão (MD5 SHA1) e só usar os primeiros ou últimos 30 bytes.
O número de bytes uma função hash gera é bastante arbitrária - é, obviamente, um trade-off entre o espaço e exclusividade. Não há nada de especial sobre o comprimento da assinatura que utilizam.

Edit - desculpe, eu estava pensando que MD5 voltou 32bytes- que actaulyl retorna 16bytes mas é ussually escrito como 32hex dígitos

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