¿Puede un elemento de campo ECC ser serializado de forma segura como "comprimido" y luego restaurado como no comprimido?

0

Tengo una biblioteca que almacena todos sus elementos de campo ECC en forma no comprimida, en un formato XML Base64 hinchado, y el almacenamiento se ha convertido en una preocupación. (Queremos admitir el código QR como un factor de forma, etc.)

En lugar de pedir a los autores de las bibliotecas criptográficas que admitan puntos comprimidos en ECC (no sé qué tan difícil sería esto), creo que es posible que un software software de pieza capture estos elementos en línea, comprímalos (con una bit de signo), y descomprímalos al deserializar

  

Mi objetivo es hacer que la biblioteca ni siquiera sepa que usé ECC comprimido para el almacenamiento temporal en tránsito.

¿Es este un enfoque viable? ¿Qué otras cosas debo considerar antes de hacer esto?

Para referencia, planeo usar este código en Bouncy Castle

    public override byte[] GetEncoded(bool compressed)
    {
        if (this.IsInfinity)
        {
            return new byte[1];
        }

        ECPoint normed = Normalize();

        byte[] X = normed.XCoord.GetEncoded();

        if (compressed)
        {
            byte[] PO = new byte[X.Length + 1];
            PO[0] = (byte)(normed.CompressionYTilde ? 0x03 : 0x02);
            Array.Copy(X, 0, PO, 1, X.Length);
            return PO;
        }

        byte[] Y = normed.YCoord.GetEncoded();

        {
            byte[] PO = new byte[X.Length + Y.Length + 1];
            PO[0] = 0x04;
            Array.Copy(X, 0, PO, 1, X.Length);
            Array.Copy(Y, 0, PO, X.Length + 1, Y.Length);
            return PO;
        }
    }
    
pregunta random65537 24.07.2014 - 21:59
fuente

1 respuesta

2

La compresión de puntos no pierde información; ese es el punto.

Detalles técnicos: supongamos que estamos trabajando en el campo Zp para obtener una gran primacía p . La ecuación de la curva es:

Y 2 = X 3 + aX + b

para dos constantes a y b que definen la curva. Para un punto (X, Y) en la curva, puede usar la ecuación para recuperar Y2 de X solo Ya que estamos trabajando en un campo, Y2 puede tener como máximo dos raíces cuadradas, y son opuestas entre sí (eso es Y y -Y ). Dado que p es un gran primo, es impar, por lo que Y y -Y siempre se diferencian en su bit menos significativo, excepto si Y = 0 , en cuyo caso -Y = 0 también. Por lo tanto, el conocimiento de X y el bit menos significativo de Y siempre es suficiente para sin ambigüedad recuperar Y , en la que punto tienes el punto completo.

(Además, normalmente elige su curva de modo que tenga un orden principal, lo que indirectamente implica que no puede haber un punto en la curva tal que Y = 0 . Pero incluso si existe tal un punto, entonces la compresión todavía funciona.)

Un mecanismo similar funciona con curvas binarias (cuando el campo es GF (2 m ) para algún entero m ) pero es ligeramente Más complejo de explicar (involucra el cálculo de medias trazas).

Tenga cuidado, al descomprimir, para asegurarse de que obtiene un punto válido. Si el cálculo produce un valor " Y 2 " que no es realmente un cuadrado en Z p , luego la descompresión fallará, pero algunas funciones de raíz cuadrada no lo notarán. El comportamiento no deseado en datos anormales es una fuente clásica de debilidades de seguridad; tal es la sutileza de la criptografía práctica.

Hay algunos rumores de que la compresión de puntos aún estaría cubierta por algunas patentes, lo que explica por qué los desarrolladores de bibliotecas de código abierto no se apresuran a implementarla. Si el rumor es cierto, sin embargo, es otra historia. Esta página de Wikipedia enumera dos patentes, uno de Certicom (pero se trata de curvas binarias en GF (2 m ) solamente, y vencerá el 29 de julio, solo cinco días a partir de ahora), y otro de HP (que pretende cubrir la compresión de puntos en general, pero la mitad se concentra en binarios curvas).

Creo que la patente de HP no iría muy lejos en los tribunales, en particular desde que se presentó en 1998, cuando el concepto de compresión de puntos ya se había publicado en todas partes. Sin embargo, no soy un abogado de patentes (soy un oso con un nombre falso).

    
respondido por el Tom Leek 25.07.2014 - 00:51
fuente

Lea otras preguntas en las etiquetas