Pràctica 1 de Codificació, de l'assignatura de Matemàtiques per a la Multimèdia, del Grau Multimèdia de la UOC. Per a descarregar-te l'enunciat, visita la meva wiki: http://raco-vermell.wikispaces.com/MATEM%C3%80TIQUES+II
Matemàtiques per a la Multimèdia II - Pràctica 1 - Multimedia (UOC) - Paquita Ribas
1. PAQUITA RIBAS TUR
PRÀCTICA 1 – MATEMÀTIQUES PER A MULTIMÈDIA II
APARTAT 1 – CODIFICACIÓ
Sóc l’agent Esquirol3 i entreno durament des de que James Bond va jubilar-se, fa ara ja dos anys.
Estic un poc nerviosa. Cal dir que és la meva primera missió i això es nota, però he aconseguit
arribar al meu objectiu sense contratemps. La Caserna General del Comandament Nuclear està en
silenci i fosca. No m’han vist. Ara he trobar la caixa forta i comunicar a MoneyPenny el que hi trobi
a l’interior.
Hi poden aparèixer varies coses:
1- Teranyines
2- Una ampolla del millor whisky
3- La temporada 11 d’American Idol en DVD
4- Un pollastre de goma
5- El llistat complet dels números de telèfon dels generals de l’exèrcit nord-coreà
6- Els plànols de la planta de producció de bombes nuclears
7- Un gra d’arròs
Hem acordat codificar les paraules utilitzant només 0 i 1. El conjunt de totes les paraules que
n
podem construir amb 0 i 1 s’anomena Z2 , on n indica la quantitat de dígits que tindrà la nostra
paraula codificada amb 0 i 1. Per exemple, el gra d’arròs podria construir-se amb (1 1) o amb (1 1 1
1 1). Per això s’ha de determinar un valor de n que generi un mínim de 7 paraules (o grups de
paraules), que són les que tenim. Sabem que:
1
- Per a n=1 = Z2 = només podem formar dues paraules (0) i (1)
2
- Per a n=2 = Z2 =podem formar quatre paraules (00) (01) (10) (11)
3
- Per a n=3 = Z2 = vuit paraules
4
- Per a n=4 = Z2 =setze paraules
3
Llavors, Z2 ens servirà. Es a dir, MoneyPenny té la llista d’objectes que poden aparèixer en la
caixa forta, codificats amb un codi de tres dígits (n=3).
Objectes Codi
Teranyines (000)
Una ampolla del millor whisky (001)
La temporada 11 d’American Idol en DVD (010)
Un pollastre de goma (100)
El llistat dels números de telèfon dels generals nord-coreans (101)
Els plànols de la planta de producció de bombes nuclears (110)
Un gra d’arròs (111)
2. He trobat la caixa forta. El meu entrenament ha estat força dur i pesat, però l’he aprofitat bé: la
caixa s’ha obert sense molta complicació, tal i com havia planejat. Ara he de comunicar a
Moneypenny el que hi he trobat a l’interior.
Enfoco amb la llanterna i localitzo una carpeta vermella amb uns documents. Un d’ells és el llistat
amb els números de telèfons dels generals. Em decideixo a transmetre el missatge. Podria enviar
el (101), que és el codi del llistat dels números de telèfons, però és convenient afegir-hi informació
redundant. Amb els nervis em podria equivocar a l’hora d’enviar-lo. Per exemple, si en lloc de
(101) m’equivoqués i poses (100) el meu contacte pensaria que he trobat un pollastre de goma. En
ningun moment pensaria que jo havia comés un error. Això es podria solucionar repetint el
missatge varies vegades, però disposem de mètodes de codificació que permeten la detecció i
correcció d’errors.
Per afegir redundància de codi utilitzaré la matriu generadora de codi. La matriu ha de tenir el
mateix número de files que n, es a dir, de dígits tingui el codi. En el nostre cas n=3. Ha te tenir el
mateix número de columnes que paraules a codificar (en el nostre cas són set). La matriu no pot
tenir ni cap fila repetida ni cap que s’obtingui amb la suma de dos o més files. La nostra és així:
( )
Per a obtenir el codi amb la informació redundant, bastarà multiplicar cada paraula per la matriu
generadora. Obtindrem un nou codi d’una sola fila i de tantes columnes com columnes tingui la
matriu G (en aquest cas són set).
Z2 té una forma de sumar i de multiplicar els 0 i 1 segons les següents taules:
Suma dels nombres de tipus Z2: Multiplicació dels nombres de tipus Z2:
Suma: + 0 1 Producte: . 0 1
0 0 1 0 0 0
1 1 0 1 0 1
Tenint tota aquesta informació començarem a generar el codi del llistat de telèfons dels generals
nord-coreans.
( )( )
(1·1+0·0+1·0 1·0+0·1+1·0 1·0+0·0+1·1 1·1+0·1+1·1 1·1+0·1+1·0 1·0+0·1+1·1
1·1+0·0+1·1)=(1+0+0 0+0+0 0+0+1 1+0+1 1+0+0 0+0+1 1+0+1)= (1 0 1 0 1 1 0)
Em disposo ara mirar el segon document de la carpeta vermella, són els plànols de la planta de
producció de bombes nuclears. Novament, genero el codi a enviar amb la matriu generadora G.
3. ( )( )
(1·1+1·0+0·0 1·0+1·1+0·0 1·0+1·0+0·1 1·1+1·1+0·1 1·1+1·1+0·0 1·0+1·1+0·1
1·1+1·0+0·1)=(1+0+0 0+1+0 0+0+0 1+1+0 1+1+0 0+1+0 1+0+0)= (1 1 0 0 0 1 1)
Els codis que enviaré al meu contacte són el (1 0 1 0 1 1 0) i el (1 1 0 0 0 1 1).
Una vegada MoneyPenny hagi rebut les paraules codificades, pot comprovar si els codis són
correctes o no amb la matriu de comprovació de paritat. El nombre de files d’aquesta es forma
restant el nombre de columnes de G – n. Té les mateixes columnes que G. En el nostre cas és una
matriu de 7-3 files i 7 columnes.
( )
El meu contacte es disposa a comprovar els codis enviats, col·locant-los verticalment i
multiplicant-los per la matriu H. Si el resultat dóna 0, no s’ha produït cap error en la transmissió
del codi.
( ) ( )
( )
( ) ( ) La paraula (1 0 1 0 1 1 0) pertany al codi.
( ) ( )
( )
( ) ( ) La paraula (1 1 0 0 0 1 1) pertany al codi.
Però què hagués passat si es produís un error en la transmissió del codi?. Suposem que envio al
meu contacte la paraula (1 0 1 1 1 1 0) en lloc de (1 0 1 0 1 1 0). MoneyPenny la comprovaria amb
la matriu H i això seria el resultat:
4. ( ) ( )
( )
( ) ( )
El resultat no donaria tot zeros. Això ja indicaria al receptor del missatge que hi ha un error en la
transmissió. Per a poder corregir l’error compararíem el vector resultant amb la matriu H. El
resultat coincideix amb la quarta columna de la matriu. Això significa que l’error està en el quart
dígit del codi. Per tant, MoneyPenny substituiria el quart dígit que ha rebut com 1 per un 0.
Objectes Codi Codi generat
Teranyines (000) (0 0 0 0 0 0 0)
Una ampolla del millor whisky (001) (0 0 1 1 0 1 1)
La temporada 11 d’American Idol en DVD (010) (0 1 0 1 1 1 0)
Un pollastre de goma (100) (1 0 0 1 1 0 1)
El llistat dels números de telèfon dels generals nord-coreans (101) (1 0 1 0 1 1 0)
Els plànols de la planta de producció de bombes nuclears (110) (1 0 1 0 1 1 0)
Un gra d’arròs (111) (1 1 1 1 0 0 0)
Per a saber quants d’errors es podrien corregir d’un codi lineal, ens fixaríem en quants d’1 té la
paraula del codi amb menys 1. Naturalment no comptaríem amb la que té tot zeros. En el nostre
cas, totes les paraules tenen quatre uns, per tant, el quatre és la distància mínima del codi, que
anomenarem d. Per a saber quants d’errors podem detectar, a la distància mínima li restarem 1.
Així doncs, només podríem detectar fins a 4-1=3 errors. Per a conèixer el nombre d’errors que
podrem corregir, aplicarem la següent fórmula:
errors = =3/2 =1,5 = 1
5. APARTAT 2 – CRIPTOGRAFIA DE CLAU PRIVADA
El sistema de clau privada es caracteritza perquè utilitza una clau secreta acordada entre l’emissor
i el receptor i que només saben ells i ningú més.
El missatge que es vol encriptar el denominem m, l’encriptat c i la clau secreta k.
L’encriptació de Cèsar és un sistema de clau privada. Consisteix en avançar tantes lletres de
l’abecedari com valor tingui k. El receptor, per a desencriptar el missatge, haurà de fer l’operació
contrària: retrocedir tantes lletres com valor tingui k.
Precisament vaig acordar amb el contacte AribasP la clau privada k=13. Ens vam transmetre la clau
per un canal segur. El missatge que havia d’enviar-li era m= cargoltreubanyapujaalamuntanya.
Per tant, em vaig disposar a encriptar-lo pel mètode de Cèsar.
A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
La primera lletra és la C. Per tant, ens col·locarem a la C i avançarem k=13 posicions. Arribarem a la
lletra O. Per tant, la lletra C la substituirem per la lletra O. Si avancem k=13 posicions des de l’A,
arribarem a l’N i així successivament fins a completar l’encriptació del missatge.
Si identifiquem cada lletra amb un número, tindrem que.
A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
D’aquesta forma podem aplicar la fórmula d’encriptació i desencriptació del sistema de Cèsar:
Ek (m) = m + k mod 27
Dk (m) = m – k mod 27
Finalment, el missatge enviat al receptor és c= ondsaxfdqgñnzknbgvnnxnygzfnzkn
Al cap d’uns dies he rebut una resposta encriptada del meu contacte AribasP.
El missatge és c= iawjsfgwhohcpsfhorsqohoziamo
Aquesta vegada em disposo a fer la desencriptació amb un applet que ens ha facilitat la directora
del centre d’operacions especials. Només he d’escriure el missatge encriptar en la casella de
“Descifrado”, la clau acordada, que en aquest cas és k=13 i pitjar sobre la fletxa blava de “Cifrado”.
Automàticament, l’applet ha realitzat tota la tasca de desencriptar en un obrir i tancar d’ulls. El
missatge de AribasP és m= universitatobertadecatalunya
6. Utilitzant mètode de Cèsar pot ser fàcil arribar a trobar quina és la clau privada k, ja que hi ha una
probabilitat d’1 entre 26. Existeixen altres mètodes de clau privada més segurs.
Un d’ells és l’encriptació de Vigenère. És una modificació del mètode de Cèsar. Consisteix a dividir
el missatge en blocs de longitud acordada entre emissor i receptor, desprès s’acorden també
tantes claus com longitud té el bloc. Finalment, s’aplica el mètode Cèsar segons la clau que li
pertoca a cada lletra.
Per exemple, m=PRACTICA. Hem decidit el receptor i jo, una longitud 3 i claus
k1=1, k2=2 i k3=3
P R A C T I C A
16 18 0 2 20 8 2 0
1 2 3 1 2 3 1 2
17 20 3 3 22 11 3 2
Q T D D V L D C
El resultat d’encriptar la paraula PRACTICA amb el mètode Vigènere és c=QTDDVLDC
Un altre mètode molt segur és l’encriptació de Vernam. Cada lletra es codifica amb una cadena de
8 bits, per mitjà un codi estàndard. Es codifica lletra per lletra i es suma amb la clau privada. La
clau privada ha de ser tant llarga en bits com el missatge.
Per exemple: m= DIA
Missatge D I A
Codificació 01000100 01001001 01000001
Clau privada 01011010 10011010 10101101
Encriptat 00011110 11010011 11101100
No cal traduir-lo a lletres. Per a desencriptar cal restar la clau privada.
Existeixen altres sistemes com les transposicions, que consisteix a dividir el missatge en blocs i
permutar les lletres entre elles, d’una manera pactada entre emissor i receptor.
7. APARTAT 3 – CRIPTOANÀLISI
El criptoanàlisi és l’habilitat de descobrir la clau privada per poder desencriptar un missatge. El
mètode més senzill és el de Cèsar, ja que només s’ha d’anar provant les 26 claus privades possibles
fins a aconseguir un missatge amb sentit.
He aconseguit desxifrar un missatge enviat per un agent secret DramirezC al seu contacte Lalba. El
missatge enviat és c= rteutweqzhmteqfiwzlfwefqfrjhjeqfxeyjquwfrt
L’agent secret contrari, havia utilitzat el mètode de Cèsar. Per a descobrir la clau només he anat
provant les claus possibles fins que el missatge resultant tingués algun significat. He utilitzat el
mateix applet facilitat per la nostra directora d’operacions especials. He començat per k= 1
qsdtsvdpyzglsdpehvykevdepeqigidpewdxiptveqs
k=2
prcsrucoxyfkrcodguxjducdodphfhcodvcwhosudpr
k=3
oqbrqtbñwxejqbñcftwictbcñcogegbñcubvgñrtcoq
k=4
ñpaqpsanvwdipanbesvhbsabnbñfdfanbtaufnqsbñp
k=5
nozporzmuvchozmadrugarzamanecezmasztemprano
Finalment, el missatge interceptat és: No por mucho madrugar amanece más temprano.
Aquest és el mètode més fàcil de trencar. En hi ha de més difícils.
Es pot encriptar un missatge per substitució. Aquest mètode s’utilitza amb el mètode d’encriptacio
per transposició. Es tracta d’anar substituint unes lletres per unes altres segons una taula que
només emissor i receptor coneixen. Per a desencriptar aquest missatges s’utilitza l’atac estadístic.
L’atac estadístic consisteix en: cada llengua sempre té lletres que es repeteixen més que les altres.
Per tant, primerament s’hauria de saber la llengua del missatge encriptat; després calcular les
freqüències d’aparició de les lletres (es pot fer amb el Word). Per exemple, si la lletra “a” és la més
nombrosa, es canviarà el símbol més nombrós del missatge encriptat per la lletra “a”. I així
successivament fins a tenir paraules quasi completes. Després aniríem completant les paraules i
substituint els símbols.
L’encriptació de Vigenère i de Vernam són molt segures contra l’atac estadístic.
8. APARTAT 4 – CRIPTOGRAFIA DE CLAU PÚBLICA
Aquesta vegada l’agent AribasP i jo intercanviarem missatges mitjançant la criptografia de clau
pública. En aquest sistema, cadascú disposem d’una clau pública i d’una clau privada. La meva clau
privada només la conec jo i la de AribasP només la coneix ell. Per a fer possible aquest intercanvi,
utilitzarem l’applet creat per aquest fi.
http://materials.cv.uoc.edu/continguts/PID_00154421/index.html
Tenim diversos elements. P i q són nombres primers i no es comparteixen. La clau pública e ha de
ser un nombre primer que no sigui divisor de (p-1)(q-1). La clau que es comparteix amb el receptor
del missatge és (e, n). La resta de claus es mantenen en secret.
He confirmat que el 101 i el 103 són nombres primers i que el 7 no és divisor de 10200. Per tant,
envio pel canal pactat (7, 10403).
L’agent AribasP ha rebut la meva clau pública i m’envia un missatge encriptat 3693
Per a desencriptar-lo, poso la clau privada d, la clau n i el missatge encriptat, enviat per l’agent.
El missatge de AribasP desencriptat és 4908. Perquè funcioni sense problemes, el missatge
encriptat c no pot ser més gran que n.
Més tard AribasP m’envia la seva clau pública (11,50693). Amb aquestes dades i l’applet em
disposo a encriptar un missatge per enviar-li.
9. Envio a l’agent AribasP el missatge encriptat 27256. Ell haurà fet la següent operació per a
desencriptar el missatge: Introduirà la seva clau privada d, la clau n i el missatge encriptat, y el seu
resultat c coincidirà amb el meu missatge sense encriptar.
PAQUITA RIBAS TUR, 2012
Pràctica 1 – Matemàtiques II - UOC