¿Encriptando identificadores cortos?

7

Estoy desarrollando una aplicación web que no revela el recuento de registros, porque oculta la clave principal. Estoy buscando una mejor manera de hacer esto.

Mi idea favorita es cifrar la ID en sí misma con un cifrado de bloque, ya que eso no requeriría tablas de seguimiento adicionales, y si el tamaño del bloque es igual al tamaño de la clave, debería funcionar bien.

Sin embargo, no quiero un tamaño de bloque de 128 bits, ya que tomaría un tiempo escribir example.com/records/MTZjaHJzRm9yMTI4Yml0cw (representación de Base 64)

El tamaño ideal del bloque sería totalmente ajustable. Quiero poder hacer una entrada de ID de 8 dígitos que resulte en una salida de 8 dígitos, es decir, libre de colisiones usando una clave aleatoria almacenada permanentemente. La entrada sería la clave principal real, y la salida sería el identificador que se muestra al público. ¿Puedo decidir cambiar la longitud de los dígitos o cambiar a los identificadores de Base64, y me gustaría que el algoritmo fuera lo suficientemente flexible para acomodar esto?

¿Puede recomendar una rutina de cifrado para datos y salidas tan cortos? No me importa si la clave es corta o no, solo deben ser los datos y la salida.

    
pregunta George Bailey 04.04.2013 - 23:16
fuente

1 respuesta

4

Lo que quieres es cifrado para preservar el formato . Desafortunadamente, no existe un estándar listo para usar para eso, pero se conocen algunas construcciones razonables. Recomendaría el Thorp shuffle que es un esquema de Feistel extremadamente desequilibrado; si se dan suficientes rondas, esto puede implementar una permutación que sea cercana a la óptima (excepto que un esquema de Feistel es necesariamente una permutación uniforme).

Tenga en cuenta que la implementación de su propio algoritmo criptográfico está plagada de peligros. Si no se siente cómodo con el artículo citado anteriormente, busque a alguien más que lo esté. (Afortunadamente, en su escenario específico, si utiliza un cifrado débil, la penalización es limitada: los atacantes pueden adivinar el número de registros o predecir el siguiente valor de clave principal).

    
respondido por el Thomas Pornin 05.04.2013 - 13:07
fuente

Lea otras preguntas en las etiquetas