Problemas de Criptografı́a: CTC . Profa. M.E. Alonso: (Hoja no. 4, 6 de Junio de 2007). 1. Sea A un conjunto finito. Una permutación σ ∈ Sn induce una biyección llamada permutación de posición σ : An → An : c 7→ cσ = (cσ(0) , ..., cσ(n−1) ) Dada una biyección de τ : A → A y una posición i ∈ {1, , n} se tiene una biyección llamada permutación de sı́mbolos en una posición: τi : An → An : τi (c0 , . . . , cn−1 ) = (c0 , ..., τ (ci ), ..., cn−1 ). Dos códigos C1 , C2 ⊂ An se dice que son equivalentes si se puede pasar de uno a otro por composicón de un número finito de permutaciones de posición, o permutaciones de sı́mbolos en una posición. Se pide (i) Probar que dos códigos equivalentes en An tienen la misma distancia mı́nima. (ii) Probar que dos códigos lineales en los que la matriz generadora de uno de ellos se encuentra aplicando permutaciones de filas y columnas a la del otro son equivalentes. Idem para la matriz de control de paridad. (i) Probar que 1 0 1 1 G1 := 1 1 0 0 los códigos binarios lineales 0 1 0 0 0 1 y G2 := 1 1 1 1 1 1 dados por las matrices generadoras siguientes: 1 0 son equivalentes 0 1 2. Sea C ⊂ Fq n un código lineal definido sobre Fq , de longitud n y de dimensión k. Y sea C ⊥ := {y ∈ Fnq :< x, y >= 0, ∀x ∈ C} el códigio dual. Se pide probar que si C es un código cı́clico de longitud n y dimensión k, con polinomio generador g ∈ Fq [X], y h = h0 + . . . + hk X k ∈ Fq [X], y polinomio de control h.g = X n − 1, entonces el código cı́clico ∗ ⊥ cuyo polinomio generador es h−1 k .h (para que sea mónico) es equivalente al dual de C, C . −1 Donde, h∗ = X k .h(1/X) es el recı́proco del polinomio h. cuyo polinomio generador es hk .h∗ (polinomio mónico ) es equivalente al dual de C, C ⊥ . 3. Sea C un código 0 1 0 G := 0 0 1 1 0 0 lineal de F52 definido por la matriz generadora 0 1 0 1 1 1 i) Calcular la dimensión de C la distancia mı́nima de C, una matrı́z de control de paridad, y todas las palabras del código. ii) Determinar el código dual C ⊥ en F2 5 . Calcular todas los “cosets” o clases de equivalencia mod. C ⊥ ,y representantes de estas clases de peso mı́nimo. Aplicando el proceso explicado de decodificación, si se recibió 01001 ¿qué palabra de C ⊥ con mayor seguridad fué la que se envió? 4. Recordemos que un código lineal [n, n − k, d] se dice perfecto si : ∀y ∈ Fn2 existe una única palabra código x ∈ C t.q. d(x, y) = t := [d − 1/2]. Probar que los códigos de Hamming son perfectos. 5. Encontrar un código binario lineal [8, 3] con distancia mı́nima 3. ¿Puede existir uno binario lineal del tipo [8, 3] con distancia mı́nima 4? 6. i) Calcular una matrı́z generadora y una de control de paridad para el dual del código de Hamming binario H3 . Tomar como matriz de control de paridad de este último: 1 0 0 1 1 0 1 H := 0 1 0 1 0 1 1 0 0 1 0 1 1 1 i) Codificar el mensaje 0110 y 1011 con H3⊥ . iii)Comprobar que H3 es equivalente al código cı́clico binario de longitud 7 definido con polinomio generador x3 + x + 1 7. Sean G1 y G2 matrices generadoras de códigos lineales de parámetros [n1 , k, d1 ] y [n2 , k, d2 ] respectivamente. Demostrar que los código lineales cuya matrices generadoras son G y G′ : G1 0 G := 0 G2 G′ := G1 G2 tienen por parámetros [n1 +n2 , 2k, δ] y [n1 +n2 , k, δ′ ] respectivamente, siendo: δ = min(d1 , d2 ) y, δ′ ≥ d1 + d2 8. Encontrar un polinomio mı́nimo para un código binario BCH de dimensión 12 y distancia asignada d = 5. Calcular su distancia de Hamming. 9. ¿Cuántos códigos binarios cı́clicos irreducibles (i.e. maximales) de logitud 15 hay?. Calcular sus polinomios generadores, dimensiones y distancias mı́nimas. 10. ¿Cuál es la longitud más corta posible de un código binario cı́clico cuyo polinomio generador es g := x7 + x + 1? Idem g1 = x9 + x + 1. 11. Sea ζ ∈ F24 (cuerpo de 16 elementos) una raı́z de f = X 4 + X + 1 (i.e. se puede ver ζ como la clase de X en F2 [X]/ < X 4 + X + 1 >). i) Comprobar que ζ es un elemento primitivo de F24 (i.e. que el polinomio f es primitivo), y en consecuencia ζ es una raı́z primitva 15 de la unidad. ii) Calcular el orden de ζ 3 en el grupo F24 ∗ y el polinomio irreducible (mı́nimo) de ζ 3 sobre F2 , que llamo fζ 3 . iii) Sea C el codigo cı́clico de longitud 15 definido por las condiciones de anularse en ζ y ζ 3 ; C := {h(X) ∈ (F2 [X]/ < X 15 − 1 >) : h(ζ) = 0, h(ζ 3 ) = 0} Comprobar que el polinomio generador de C es f.fζ 3 iv) Comprobar que una matriz de control de paridad H del código C se obtiene de la matriz H0 que esta definida en el cuerpo F24 , H0 := 1 ζ ζ 2 . . . ζ 13 ζ 14 1 ζ 3 ζ 6 . . . ζ 39 ζ 42 sustituyendo cada entrada de H0 , un cierto ζ j , por un vector columna de cuatro filas de 0 y 1’s que son las coordenadas del ζ j en funcion de la base {1, ζ, ζ 2 , ζ 3 } de F24 como F2 -esp. vectorial. v) Escribirla. ¿Cuántos errores corrige C? 12. Sea C ⊂ F2 9 el código binario dado por: (v0 , . . . , v8 ) ∈ C ⇔ v0 = v1 = v2 ; v3 = v4 = v5 ; v6 = v7 = v8 . Demostrar que C es equivalente a un código cı́clico. 0 1 2 2 1 1 0 1 2 2 13. Sea S5 la matriz 2 1 0 1 2 . Considermos el código lineal de F3 , G11 con matriz 2 2 1 0 1 1 2 2 1 0 1 . generadora G := I6 S5 (i) Demostrar que dicho código es un [11, 6] código. (ii) Calcular la matrı́z generadora del código extendido G11 (iii) Calcular las distancias mı́nimas de G11 y de G11 . 4 6 7 8 14. Sea C ⊂ F15 2 el código cı́clico cuyo polinomio generador es 1 + X + X + X + X . Calcular la dimensión, una matriz generadora y la distancia mı́nima ?. Si se recibió la palabra 1 + X 3 + X 4 + X 5 , ¿ cual es la palabra que con más seguridad se envió? y ¿el mensaje original? 15. (i) Probar que el menor m tal que F2m contiene todas las raı́ces primitivas 31- ésimas de la unidad es m = 5. (ii) Sea α una tal raı́z (sera un elemento primitivo de F32 ). Demostrar que los siguientes conjuntos de raı́ces primitivas tienen el mismo polinomio mı́nimo: M1 = {α, α2 , α4 , α8 , α16 }, M3 = {α3 , α6 , α12 , α24 , α17 }, M5 = {α5 , α9 α10 , α18 , α20 }, M7 = {α7 , α14 , α19 , α25 , α28 }. (iii) Calcular dichos polinomios, resp. : g1 , g3 , g5 , g7 , (iv) Considerese el código binario de longitud 31 C = {h(X) ∈ (F[X]/ < X 31 − 1 >) : h(αi ) = 0, ∀i ≤ 7} . Probar que C es un código cı́clico, calcular su polinomio generador, su dimensión, y su distanci mı́nima. 16. F un cuerpo finito de q elementos y sea n = q − 1. Sea α una raı́z primitiva n-ésima de la unidad α ∈ F (ya que n = q − 1) y sea g(x) = (x − α)(x − α2 )...(x − αd−1 ). Hemos visto en clase que el código cı́clico con polinomio generador g es un código BCH particular llamado código de Reed-Salomon 1 , de parámetros [n, n − 1 − d, d] (i) Comprobar que es un MDS código (verifica la igualdad en la cota de Singleton) (ii) Sea F = F23 , representando los elementos de F por bytes. ¿Qué longitud tienen una palabra código? ¿ Cuántos bytes tienen de información y cuántos de redundancia? ¿Cuál es el mayor número de errores (bytes) que este código puede corregir? (iii) Teniendo en cuenta que las palabras código tienen coordenadas que son bytes (ie. cada coordenada es una colección de 8 bits), cual serı́a la mayor longitud de una cadena de bits tal que si se conoce que esta cadena esta corrompida se pueda corregir el error? (iv) Describir un código Reed-Salomon (ejercicio anterior) de longitud 15 y dimensión 13 sobre F16 = F2 [x]/ < x4 + x + 1 >, analizando cuál es el máximo número de errores que puede corregir y dando su matriz de control de paridad. 17. ¿Qué dimensión tendrá un F3 código BCH de longitud 80 que pueda corregir hasta 5 errores? (Indic. Escribir la factorización en factores irreducibles de x80 − 1 en F3 [x], usando el Maple (“Berlekamp(x80 − 1,x) mod 3;”). Escribir todos los polinomios primitivos en F3 [x] de grado 4, (que aparecen necesariamente como factores de x80 − 1). Sea α una raı́z primitiva cuarta de 1 Los códigos Reed–Salomon, como el anterior se usan en CD’s y comunicaión espacial, cuando los errores se dan en bandas de información cercanas. uno cualquiera de estos. Escribir las raı́ces de los otros polinomios primitivos como potencias de éste α, y aplicar la construcción BCH) 18. ¿Es el dual de un código BCH un código BCH? ¿Y el de uno Reed-Salomon?. 19. Sea n = 2m −1 y sea α un generador del grupo multiplicativo F∗2m ,(ie. decir una raı́z primitiva n -ésima). Sea p(x) el polinomio mı́nimo de α sobre F2 , y escribamos la factorización de p(x): Qm−1 j p(x) = j=0 (x − α2 ). Escribimos las potencias de α en función de la base de F2m como Pm−1 F2 espacio vectorial: {1, α, α2 , , ..., αm }, αj = i=0 ci αi , y construimos la matriz H de talla m t m × (2 − 1) cuya j- columna es (c0 , . . . , cm−1 ) . Se pide: (i) Comprobar que las columnas de H recorren todos los desarrollos binarios de los números: 1, 2, . . . , 2m − 1. (ii) Sea C el código cı́clico cuyo polinomio generador p(x); probar que (0 , . . . , wn−1 ) ∈ C sı́ y sólo si Hwt = 0. (iii) Demostrar que C es equivalente al código de Hamming [2m − 1, 2m − m − 1]. 20. Sea Σ una matriz 32 × 32 cuyas entradas hij son 1 ó −1’s, de acuerdo con la regla siguiente: DadosP i, j ∈ {1, . . . , 32} escribimos los desarrollos binarios: i = a4 a3 a2 a1 a0 , j=b4 b3 b2 b1 b0 , y hij = 4l=0 al bl . Sea Σ∗ la matriz de 64 × 32 completando Σ con las filas de −Σ. (i) Demostrar que el producto escalar de cada dos filas distintas de Σ∗ es 0 y de cada fila por sı́ misma es 32. (ii) Consideremos el código de longitud 32 cuyas 64-palabras son las filas de Σ∗ . Sea w una palabra enviada y v la recibida, donde quizás se produjeron algunos erroes (cambio de 1 por −1). Comprobar que, si se produjo exactamente 1 error el producto escalar de la palabra v con las distintas filas de Σ∗ es + − 2, salvo con una fila que es + − 30. Si se produjeron exactamente 3 errores, ¿ qué sucede con esos productos escalares?. ¿Y si fueron 7? ¿Cuántos errores puede corregir ese código? NB. Este código llamado de Hadamard fué utilizado en 1969 por el Mariner para enviar fotografı́as de la Luna. Cada pixel de la foto tenı́a una intensidad de negro que era medida por un número de 6 bits. Estos 6 bits se modificaban de “modo adecuado” ãdiendo una redundancia hasta completar una fila (de longitud 32) de la matriz Σ∗ , que era la palabra código enviada.