Professional Documents
Culture Documents
Seguretat I Xarxes Magistral
Seguretat I Xarxes Magistral
Seguretat I Xarxes Magistral
1. Avaluació
Si trèiem dos suspesos, a recuperació recuperem tot. La primera part s’explica lo millor que es
pot, es dura, que l’examen doni bé. Els exàmens 4-5 punts es el basic, el 6-7 es una mica mes
complicat, 7-8 més, i 9-10 excel·lents.
Cada etapa va guiada per una clau, tenim un algoritme de xifratge i un algoritme per claus, anem
deduint n claus derivades i a cada iteració fem servir una de les claus, anem fent substitucions i
permutacions, i si jo nomes canvio un bit de la entrada, el que m’ha de passar es que obtinc un
criptograma, si canviem un bit, quan jo ho xifri, els dos elements seran molt diferents, i a més,
que no es pugui deduir el canvi. 56 bits es la mida de clau del DES, es l’espai de cerca.
2. Eines criptogràfiques
a. Introduction
i. Fundamentals of cryptography
Típicamente es con tono militar, hasta que ahora queremos que haya cifrado en pagos… es buena
idea que nos conectemos en una red sin protección? Si alguien quiere informacion tiene que
pinchar el cable. Si tenemos una antena, podríamos coger y tener todas las direcciones ahí, pero
no nos gusta.
Hi ha quatre propietats:
Estem a casa, agafem una llimona, agafem una ploma i escrivim amb el suc de la llimona, si
posem una flama el missatge sorgeix, aquest missatge era clar, però no el veiem. Una imatge de
les vacances, i al bit menys significatiu codifiquem una imatge, no s’aprecia que hi ha un canvi, a
dins la informació es amagada, passa desapercebuda.
Si envio un missatge xifrat a algu, el que passa es que algu que estigui escoltant a la xarxa, no se
que estan dient, però hi ha alguna cosa, perquè hi ha informació xifrada. Si enviem una foto de
la uni no hi ha sospita, doncs de vegades si volem missatges xifrats, usem la criptografia. Si veiem
un missatge xifrat alarma, si no ho es, no genera alarma, però com ho enviem llavors xifrat?
Agafem el missatge d’informació, el xifrem, i el missatge xifrat, amb steganografia, l’amaguem
en un missatge normal.
CITADE: emissor receptor compartien una barra del mateix diàmetre, envoliquen una cinta a la
barra, el missatge l’escrivien, el desfeien, i l’enviaven. Veiem una cinta amb caràcters, el receptor
té la barra amb el mateix diàmetre, pot recuperar el missatge, que era la clau. Necessitem el
diàmetre. Aqui la clau era la barra amb el mateix diàmetre.
CESAR: El missatge està format per un seguit de caràcters, fem un desplaçament, li sumem
posicions a cada caràcter, això ja es un xifratge. El missatge original es: m=m1m2m3, on cada m
es un caràcter, tenim 3 caracters, i a cada m li sumem 3 posicions per exemple, ara obtenim un
altre missatge.
En cada llengua hi ha caràcters que son mes habituals, en català és la lletra ‘e’, si fem xifratge de
CESAR, tenim un text on el caràcter que surt mes cops es la ‘e’, la propietat es manté, el alkimdi
es va donar compte i ho va usar per trencar. Amb aquests mètodes es va poder acabar trencant
el criptosistema.
1585: si estem en un grup i pensem que ens escolten, som sincers, o ens dona igual. Ens movem
a un lloc on ningú ens escolta per parlar. Si tenim la percepció de que el node de comunicació es
segur parlem lliurement i diem coses que en public no diríem, la reina dels escocesos, Mary,
pensava que tenia un criptosistema segur, es va comunicar amb els seus per matar a la cosina,
però el sistema no era segur, com va ser capaç de desxifrar el complot, tenien proves, a la Mary
li van tallar el cap.
Maquina enigma: qui, com, que ha ajudat? Intercepció dels missatges, anàlisi, trencament de
missatges...
Un microfilm es un exemple de esteganografia, perquè pot ocultar informació dins un mitja físic
de manera discreta. Tenim una pel·lícula fotogràfica en miniatura, per guardar informació de
forma compacta.
El futur es la criptografia quàntica, nosaltres si tot no canvia massa, els quàntics requereixen
unes condicions d’energia, temperatura... que no son massa portables, existiran, i seran capaços
de trencar la criptografia convencional, intenta que ordinadors com aquests tinguin un grau de
seguretat per a que ningú sigui capaç de trencar les xifres.
Criptosistema: operacions per aconseguir una de les propietats que hem comentat, necessitem
una clau, si es la mateixa entre emissor-receptor, es criptografia simètrica, si no, és asimètrica.
Hi ha primitives, amb clau, sense clau...
El GSM, un xifratge, tot secret, intel·ligències, ingenieria inversa i es trenca, fàcil. UMTS,
avancem, repetim la cagada, sistema protegit, el trenquen. I mil exemples més. Si algun dia hem
d’usar un criptosistema, hem d’usar un public i conegut, no un inventat. El DES, ha arribat al final
de vida util, en dies es va desxifrar, es va fer un concurs internacional amb els criptors millors, el
mateix dia que es presenta, es va trencar, es va disminuir la complexitat per a fer el xifratge.
Como hacemos llegar la clave? Pot xifrar qualsevol tipus de missatge, es ràpid, el problema es la
distribució de claus, si hi ha molta gent, moltes claus. La solució es usar criptografia asimètrica.
La asimètrica Tenemos una parella de claus, una publica i una privada, la publica la sap tothom,
quan algú vol fer arribar el missatge, xifra simètricament, i la clau inventada la xifra amb la clau
publica, això ho pot fer tothom perquè tothom coneix la clau publica, qui ho pot desfer? Nomes
nosaltres. Hi ha una fase inicial de negociació de claus per a fer arribar la clau simètrica, i una
amb la clau simètrica.
La clau publica, tenim sempre una parella de claus, totes dues vinculades, el que fem amb la clau
publica passa a la clau privada. El pany d’una porta, quan obrim la porta, cada pany te la seva
clau, tenim que cada parella de clau te la clau privada i la publica.
La clau privada de la Ivet qui la te? Nomes la Ivet, i la publica la té tothom. Una porta que tanca
de cop, qui es capaç de tancar la porta, tothom. Quan algu es vol comunicar amb la Ivet, usa la
clau publica, però nomes el pot obrir amb la clau privada la mateixa persona.
Si la persona agafa un missatge i el xifra amb la clau privada, qui ho pot desfer? Tothom, que
hauria fet la Ivet? Signar. Es correcto. Tenemos nuestro movil, i rebem un missatge d’actualització
signat per Apple, aquesta signatura qui la pot verificar, tots els usuaris, es el mateix.
A l’examen hi ha una pregunta de una historia i hem de fer un xifratge, hem de veure si cal fer
hash, xifrar, usar una o una altra clau, cal signar? Si la fem bé, segur passem l’examen.
Tenim emissor – receptor, xifratge -> clau publica del receptor, signatura -> clau privada del ?
Les claus son numerets, llavors, per vincular la nostra identitat amb la nostra clau fem certificats,
es informació que diu que la nostra clau es nostra. I ho diu algu amb el que confiem, el missatge
ja l’identificarem la clau usada.
Per a aconseguir les propietats, necessitem molta informació. Pregunta per calcular un invers
multiplicatiu i una concessió rapida -> examen.
Exemple: 𝑔𝑎 𝑚𝑜𝑑 𝑝 = 𝑥; 𝑥, 𝑔, 𝑝 → ′ 𝑎′ 𝑘 ∗ 𝑝 + 𝑥 = 𝑔𝑎
Tot es fàcil si coneixem la a, sinó, es molt costos, escollim un problema on el càlcul es molt fàcil,
i fem la inversa molt complicada.
En el cas de RCA:
b. Steam ciphers
i. Additive stream cipher
Teniem una clau, generador o criptosistema, generem una sequencia, fem la xor, i obtenim la
clau. Per al desxifratge: obtenim la sequencia, fem la xor amb aquesta i obtenim el missatge.
Lo important, generem aleatoris i es tot 0, 8 zeros, 8 uns, 8 zeros, 8 uns... es mal generador
perquè segueix un patró, si es patró, es fàcil desxifrar-lo. Fem xor amb la sequencia i ja ho tenim.
Que ens importa? Com ha de ser la sequencia? Ha de ser imprevisible.
El fet de ser imprevisible, tenim més 0 que 1, o al reves... el que volem es què cada bit sigui
equiprobable, la màxima incertesa. Voldríem que fos imprevisible, igual de equiprobable un 0
d’un 1. Tenim moltes rafegues consecutives, no ho volem. Això és el principi de Golomb’s. Ha de
ser:
- Imprevisible.
- Sigui equiprobable el numero de 1 i 0.
- La correlació de la sequencia amb si mateixa no doni informació addicional.
o Hem d’agafar la sequencia i veure la ràfega de 0 i de 1.
▪ Sequencia de 3: 111 000
▪ Sequencia de 2: 11 00 11 00
o Si la separo i la comparo, i noto que els bits son iguals que son diferents, ens
dona un numero -> números iguals – números diferents.
o Separem amb 2 bits, 4... fem tants desplaçaments com la sequencia, bits iguals
a bits diferents han de ser iguals.
c. Bloc ciphers
i. AES
Amb el DES deia, canvio l’ordre de les claus i ja ho tinc tot, a nivell de costs, tenim una circuiteria
que la usem per xifrar i desxifrar, aquí tenim unes operacions per xifrar i altres per desxifrar, hi
ha més costos.
El AES porta operatiu 24 anys, encara es considera segur, les claus de 256 bits es consideren
resistents a atacs amb ordinadors quàntics, no esta malament, el que esta aguantant, avui en dia
es l’estàndard, si hem de xifrar algo en simètric, AES, no hi ha debilitats, a mes a mes, quan la
cosa es mes complicada, podem augmentar la mida de bloc, que donarà mes seguretat o
eficiència.
ii. MODE ECB
Tenim un missatge, per xifrar un missatge amb un criptosistema de bloc, quina condició s’ha de
complir? Que la mida del missatge ha de ser multiple a la mida de bloc. Passa sempre? No, per
solucionar això, usem el farciment. Son uns bits aleatoris? No, perquè hem de poder marcar i
treure els bits. Posem el farciment per xifrar i els trec després perquè no son part del missatge.
Si hem de xifrar un arxiu, posem farciment i el xifrem, 384 bits.
Com xifrem un missatge amb AES de 384 bits, el normal es que dividim el missatge en 3 blocs de
128 bits, i que llavors agafem la clau amb el missatge i obtenim un criptograma -> AES(m1),
AES(m2), AES(m3), sent m = m1 m2 m3, xifrem cada bloc, i obtenim c1, c2 i c3.
Per desxifrar fem AES^-1(c1) per obtindré m1, AES^-1(c2) = m2... i m3? No, volem tindre
confidencialitat, hem de xifrar.
- Si algun atacant, agafem el missatge i enviem c1, c2, i c3, si canviem l’ordre de l’operacio
i posem c2, c3, c1, importa?
- Si cada dia usem la mateixa clau i criptosistema i envio un missatge, l’atacant sap alguna
cosa?
- Perquè veiem la fotografia? Perquè som capaços de veure l’interior de la imatge?
Passen dos coses, si algú se li acudeix de canviar l’ordre o algú agafa la idea de carregar-se un
dels criptogrames, nosaltres no ens enterarem, perquè el xifratge es pot fer igualment, pot ser
un problema.
Quan un mateix missatge es xifra moltes vegades, sempre son el mateix. El color negre quan es
xifra obtinc un criptograma, si xifrem una imatge, es mantenen els patrons.
Solucions:
- Per evitar els patrons, usem el salt, es a dir, cada missatge que xifri, ens inventem un
valor de salt, es aleatori o determinístic? Aleatori i conegut. Per cada missatge agafaré i
al xifrar-lo usarem un salt, que es un valor pseudoaleatori, perquè quan xifri això una
vegada o dos, serà diferent, quan enviem això, no nomes hem d’enviar el c1, sinó que
també el salt, no ens afecta que sigui conegut, la força es la clau.
El salt i el missatge han de tindre una mida determinada, a mes salt missatges mes petits, de
manera que acostumem a usar el salt amb la clau, es a dir, contrasenya + salt = key, com ho fem?
Amb derivacions, iteracions, concatenacions, on combinem els dos valors, cada cop que jo canvio
el salt, tindre una clau diferent, i això no afecta la mida de bloc.
El mode ECB nomes el podem usar quan el missatge a xifrar té una mida igual o inferior a la mida
de bloc del criptosistema simètric de bloc. Es a dir, el mode ECB nomes l’usem quan tenim 1 bloc.
Si borrem un bloc, no hi ha missatge, ens donem compte, i amb un bloc no ens poden canviar
l’ordre.
160 bits, el podem xifrar? NO!, perquè es més d’1 bloc, el AES estandard son 128 bits de bloc,
no es podria per a que sigui segur. Ha de ser un unic bloc. El mode ECB es molt senzill però hem
de respectar els patrons.
Usem IV i SALT: Que fem? Dividim el missatge en blocs o parts, al xifrar obtenim uns
criptogrames, i hi haurà una vinculació, per xifrar el c2 uso l’anterior, i el c3 l’anterior, si algu em
canvia l’ordre, hi haurà un error, o si algu elimina un criptograma surt error. Ara esta tot controlat.
Guardem dos coses, que típicament surt a l’examen:
Modificar un bit del DES fa que la sortida sigui molt diferent, com l’AES, agafem i tenim per un
costat que hi ha un encadenament, si en un bloc hi ha un error afecta al seguent. I si perdem
algun bit que passa? Com funciona el mode CBC?
Xifrat:
Tenim el missatge que son amb divisions 3 blocs, busquem un valor IV que es pseudoaleatori i
amb la mateixa mida del bloc, fem xor de cada bloc amb el IV.
Desxifrat:
Agafem la clau i desxifro c1 i obtinc m1’, fem la xor amb el IV i obtinc m1. El segon fem el mateix...
Ha anat tot super be. Si ho fem amb un altre ordre, encara anirà bé, així que tot guay.
Si tinc un error dintre, ens afecta d’alguna manera? Cuidado, posem per cas que el que esta
malament es el c1, llavors, quan agafem i desxifrem el c1, que obtindrem, si tenim un bit
malament, no obtindrem el mateix, hi ha molta permutació, al final, si canvia un bit, ho canvia
absolutament tot. Per tant, si volem desxifrar el c1’ i te un bit diferent, que obtindrem al fer
Tenim:
𝐴𝐸𝑆𝐾 (𝐶1) = 𝑆1
𝐶2 = 𝑚2 𝑋𝑂𝑅 𝑠2
𝐴𝐸𝑆𝐾 (𝐶2) = 𝑆3
𝐶3 = 𝑚3 𝑋𝑂𝑅 𝑠3
Els C per encadenar, el IV per obtindré una nova sequencia cada vegada. Hem de desxifrar el IV
𝐴𝐸𝑆𝐾 (𝐼𝑉) = 𝑆1
𝐶1 𝑋𝑂𝑅 𝑆1 = 𝑚1
𝐴𝐸𝑆𝐾 (𝐶1) = 𝑆2
𝐶2 𝑋𝑂𝑅 𝑆2 = 𝑚2
𝐴𝐸𝑆𝐾 (𝐶2) = 𝑆3
𝐶3 𝑋𝑂𝑅 𝑆3 = 𝑚3
CTR es senzill.
La criptografia simètrica es ràpida, per xifrar un arxiu gran les operacions no son costoses, son
lineals, podem xifrar qualsevol tipus d’arxiu on no importa la mida, en canvi, hi ha parts més
costoses, una es la part de distribució de claus, per agafar i compartir la clau necessitem que cap
atacant pugui accedir-hi, necessitem un canal de connexió. Però amb la clau publica, si algú es
vol comunicar, usa la clau publica i la usa per xifrar.
- Simètrica:
o Flux
o Bloc: on trobem el DES, que no es segur, i l’AES, que si.
▪ Multixifratge i modes de xifratge dins de AES, operem un criptosistema
de bloc com un de flux, i per cadascun hem vist propietats.
- Asimètrica: per a que la usem, quan treballem amb asimètrica:
o Distribució de claus: Passa que si tenim dos usuaris, tots dos han de compartir
una clau, com enviem la clau? En clar no, necessitem que la clau tingui un canal
segur per a fer la distribució. Com fem que dos usuaris tinguin la mateixa clau
de forma segura.
o Nombre elevat de claus: Tenim varis usuaris, per a comunicar-se un usuari A amb
uns altres usuaris, tindrà una clau diferent per cada usuari, tindra una clau Kab,
una Kac... el nombre de claus es significativament molt gran, graf complet.
o Signatura de claus: Tenim un missatge, fem un xifrat, el transformem per
demostrar integritat o autenticitat. Com el CBC-MAC O MMAC amb hash,
calculem el hash del missatge concatenat amb la clau i amb c, = x. Quan el
receptor ho rep que vol:
▪ Integritat
▪ Autenticitat
Veiem que no ha estat modificat, i després, que realment ha estat enviat per
l’emissor. B calcula el hash de IV || C || x. Nomes A i B coneixen x.
Si hi ha una disputa entre A i B, i A diu que no ha enviat IV, C i x, o que B diu que ha rebut IV, c’ i
x’ de A, qui ha mentit? Ha d’haver un jutge, tenim que IV es un valor pseudoaleatori, el c es la K,
i el missatge pot dir el que digui, la c la poden veure qui vulgui. Tant un com l’altre el pot calcular
els dos, no podem decidir que un calculi una cosa o una altra.
Llavors, tenim una signatura digital, on la signa el propietari de les claus, i la pot verificar tothom!
Això aquí no ho tenim, de manera que partim d’uns avantatges. Per lo que necessitem la
criptografia de clau pública.
El # de claus, ens imaginem un graf on els nodes son persones per comunicar-nos amb els n-1
restant nodes, en les comunicacions es fan servir dos claus típicament, però sinó 1.
Havia si la operació és amb clau privada, aquella operació nomes l’ha pogut fer el qui te la clau
privada, de manera que ara podem tindre signatures digitals. Llavors, en el conjunt Z, constem
de operacions modulars, definim que tenim 2 sencers, diem que a divideix a b si a es divisor de
b o es un factor de b. Existeix un c que diu que b = ac.
Com podem calcular el màxim comú divisor, el que hem vist es que amb les divisions successives
podem trobar el mcd de dos valors, per exemple, el mcd(a,b)=mcd(b,r).
Llavors tindrem que al fer les operacions, nosaltres, el valor a r es el mes petit, es mes petit que
b, per tant, nosaltres tindrem que el residu que sigui més gran que 0, aquest es el mcd de a i b,
quan volem agafar i calcular el mcd de dos valors, nomes hem de anar aplicant els principis:
Calculem:
- 62425477:
Saber si un numero es o no primer es costos, per agafar i saber si es o no es primer, fem un seguit
de testos, en Java, hi ha una funció. Que vol dir, que aquell valor que ens donin serà un probable
primer, però no sabem si realment es o no es, podria ser que sigui un pseudoprimer, o resultat
de operar dos o mes valors que donin aquell numero.
Un dels problemes es el de la factorització, multiplicar dos valors es una operació fàcil, factoritzar
no es tant fàcil.
Son coprimers quan el mcd de dos números es 1, i la dificultat de factoritzar un numero quan es
gran, aquest es el resum, ara arribem a conceptes. Hi ha una funció important o que usarem,
que es la funció de Euler totient:
Indica quants números son coprimers amb un numero n, quan aquests mes petits que la n son
coprimers. Cuando n es primero, es primero, por lo que calculamos con p-1 el valor.
Si queremos calcular Euler de n, donde n = p*q, en este caso de aquí, totiem de n se calcula como
totiem de p por totiem de q, hay propiedades.
i. Mathematical background
1. Advantages of public key cryptography
- Distribució de claus per a que el atacant no pugui agafar la clau, necessitem un canal,
necessitem saber que la clau publica realment pertany a un usuari, la publica tothom la
pot conèixer, però hem de saber si realment es seva. El pany tothom el pot tenir, la clau
no.
- Gestió de les claus, quan tenim n usuaris, hem de fer compartició de tots amb tots. N
usuaris, cadascun guarda n-1 claus. Amb 5 claus publiques ja ens comuniquem tots,
abans ens feien falta 10 claus per a comunicar-se tots.
- Signatura digital: com dos usuaris comparteixen, si hi ha una disputa no sabem qui ho
ha fet, amb la clau publica si que ho podem saber, quan calculem la signatura digital
s’usa la clau privada, que nomes la sap el seu propietari. Per tant, la signatura vàlida
nomes l’ha pogut calcular el propietari de la clau privada.
2. Validity of keys
Al final tenim una parella de claus, on tenim la clau publica i la clau privada, les dos vinculades,
la publica la coneix tothom, la privada nomes el propietari, i a partir de la publica no podem
obtenir la privada.
La clau publica son un seguit de valors, com podem donar-li una entitat, hem de saber la
vinculació d’una clau publica amb una entitat. Podem garantir que una clau es autentica, si no
es així, no podem.
El proces de xifratge, es fa amb la clau publica, i el desxifrar amb la privada. Signar amb la clau
privada i verificar amb la publica. Quan xifrem i desxifrem, el que busquem es la confidencialitat,
i quan signem (signar i verificar), busquem la integritat, autenticitat i el no repudi.
3. Number theory
El mcd(a,b) = mcd(b,r), aquí es on apareix la màgia, per a poder fer successives divisions, la taula
es pot continuar. Mirem la taula de mcd.
4. Main Property
5. Prime numbers
Diem que dos sencers a i b son relativament primers o coprimers si mcd(a,b)=1. Euclides va dir
que el nombre de números primers es infinit. Llavors tenim el teorema de Tschebycheffs, que
intenta acotar el nombre de primers, intenta aproximar el nombre de primers.
Primality tests, com podem saber si un valor es o no primer, agafem i fem la divisió dels valors
per tots els més petits, pot ser determinístic si tenim la certesa de que es primer, ens costa el
temps, i de probabilitat si intenta dir si es o no primer, es més ràpid.
6. Factorització
Si tenim 21 = 3*7, p1=3, p2=7. La seguretat depèn de la intractabilitat del nombre primer, de la
seva mida. Per factoritzar podem dividir, o ens pot costar, divisions successives fins a trobar els
seus factors. Hi ha algoritmes de factorització en lloc d’agafar i fer la divisió.
7. Phi function
Dos nombres son coprimers quan mcd (a,b)=1, el que volem es definir la funció de totiem d’euler,
que donada una variable, totiem de n son el nombre de nombres naturals menors de n que son
relativament primers a ell. Phi(n) es el nombre d’elements tal que 1<=x<n on el mcd(x,n)=1. Va
molt bé fer la factorització, menys ells i qualsevol que fos divisor, no ho es.
Phi(80)=2^4*5=phi(2^4)*phi(5)=2^4-1*1*4.
8. Integers mod n
a dividit entre n, dona -> a==b mod n. 24 = 5*4+4. 9 = 5*1 + 4, si fem la resta de 24-9=tenim el
mòdul=5*3. El que ens interesa es quan el mcd(a,b)=1, si passa això, tenim que
a*Qi+b*Pi=mcd(a,b), quan els dos valors a i b son coprimers, ens dona que = 1, si fem mòdul a
(a*Qi+b*Pi)mod a = 1 mod a = ((a*Qi)mod a + (b*Pi)mod a)mod a=1 -> b*Pi mod a = 1; b^-1mod
a, així calculem l’invers multiplicatiu.
24 modul 37, busquem l’invers, doncs fem la taula de bezout com abans
9. Ordre de Zn
Es el numero de elements que té un conjunt Z sub n *, el ordre dels elements es igual a phi(n),
quan calculem phi(n), tots els elements tenen invers multiplicatiu, te n-1 si es primer elements
inversos multiplicatius, i tots son coprimers. Es el nombre de coprimers amb n.
Si tenemos:
- 75 𝑚𝑜𝑑 15 → 745 𝑚𝑜𝑑 15 → 45 𝑚𝑜𝑑 𝑝ℎ𝑖(𝑛) = 45 𝑚𝑜𝑑 𝑝ℎ𝑖(15) = 45 𝑚𝑜𝑑 8 = 5 =
75 𝑚𝑜𝑑 15
- 73217 𝑚𝑜𝑑 15 = 3217 𝑚𝑜𝑑 8 = 1 → 71 𝑚𝑜𝑑 15
Si elevo el 7 a 1, 2, 3,... que passa, com hem dit que l’ordre es 8, quan arribem al 9 es com agafar
i tornar a començar. Es com si fem mòdul phi de n. Els exponents son cíclics.
Un cas especial es el teorema de Fermat, torna a passar el mateix que abans, arriba un punt que
es repeteix, perquè el ordre es igual que phi(n), el nombre d’elements de phi de n.
Per exemple, pel conjunt de Z11, si elevem un nombre g^10, ens donem que torna a començar i
es repeteix el cicle, g^10=1 i g^11 comença com g^1. Dona una volta.
G=2 mod 11, doncs g^1 = 2 mod 11... Es repeteix una vegada arriba a 1. Depen del nombre, però
mai augmentarà més de 11. Tots els elements tenen un ordre, aquest ordre es l’enter positiu de
forma que a^t mod n = 1.
Como calculamos el orden de un numero? Es el nombre de números tal que a^k = 1 mod n. Por
ejemplo, en Z^11, el orden de 1 = 1, porque 1^1=1, el orden de 2 = 10, porque hasta 2^10 no da
1, el orden de 3 = 5 porque hasta 3^5 = 243, 243 mod 11 = 1, y asi...
10. Generadors
- 2 es generador de Z23? 2^k = 1 mod 23, vemos que 2^11 = 1 mod 23, el orden de 2 en
Z23 = 11, como 2 no genera todos los elementos de Z^23, que seria hasta 22, no es
generador.
- 15 es generador en Z23? Si calculamos 15^1 = 15 mod 23, 15^2 = 17 mod 23, 15^3 = 4
mod 23... 15^22 = 1, entonces, es generador.
11. ALGORITHM: Multiplying-squaring algorithm
𝛼 𝑥 𝑚𝑜𝑑 𝑝
Si el nostre valor de l’exponent es = 1, fem una multiplicació, i mentre no arribem a l’últim bit,
elevem al quadrat. Multipliquem i elevem al quadrat. Tantes iteracions com bits, tants valors fins
al zero, fins no som a l’últim element, fins que la i != 0, elevem al quadrat mod p el valor.
𝛼 = 37073
𝑥 = 19
𝑝 = 45887
𝛼 𝑥 𝑚𝑜𝑑 𝑝
3707319 𝑚𝑜𝑑 45887
En molts casos trobem exponents que son 1 0000000 1 per a fer menys càlcul, fem els dos
condicionals, fem la part de la multiplicació, els 0 ens estalvia de fer la multiplicació, nomes el
elevar al quadrat, i el primer bit si que fa la multiplicació.
Donats dos números naturals que son relativament primers entre ells, tenim a1 que pertany a
Zm1, a2 que pertany a Zm2,... i ak que pertany a Zmk. Existeix un valor unic que es congruent en
mòdul M, on M es el produce de totes les m, m1, m2, ..., mk.
Ja que hem fet tota la volta. Si 𝑥 = 𝑎𝑏 𝑚𝑜𝑑 𝑛 i volem aplicar el teorema xinès: 𝑎𝑏 𝑚𝑜𝑑 𝑝 →
𝑎 𝑏 𝑚𝑜𝑑 𝑞, on b es un nombre molt gran:
Si sustituimos, que es la quarta columna, passem de lloc. Amb això podem calcular la y, coneixem
tots els valors.
• Calculem z1
• Calculem z2
• Calculem p^-1 mod q
• Calculem y
• Obtenim ‘x’
I hem de assumir que la exponenciació rapida, farem mes iteracions, i que en 1,2,3 fem menys
iteracions, el 4 es una resta i multiplicació mod z. Fem un exemple, el que volem fer es el pas a
pas per a calcular, el que volem fer es elevar 2023 amb el gran exponent que hi ha.
Es calcula amb la taula de Bézout, mirar llibreta. A^-1 també pertany al conjunt Z, on a*a^-1 mod
p = 1. Una altra forma, es calcular-ho amb phi.
Todo lo que hemos hecho es para entender cómo construir los criptosistemas asimétricos,
nuestra Seguridad puede ser incondicional, que el sistema es seguro y no nos importa la potencia
de cálculo, y la computacional, asumimos que el problema al que se enfronta el atacante no tiene
tiempo suficiente para descifrarlo.
Una de las clases tienen coste temporal exponencial, con el coste mucho mas grande, donde el
orden es de O(e^cn), donde c es una constante, aquí el coste es mucho mas grande, aumentar
el coste es hacer mas operaciones.
Entre los polinomiales y los exponenciales tenemos los subexponenciales, donde el orden es
hacer más pequeño el exponente, si landa = 0, tiene un coste polinomial, si landa=1, es
exponencial.
Es como meter un mensaje dentro de una botella, y luego sacarlo es difícil, fácil en una dirección
no en la otra. Es fácil romper un papel, pero no reconstruirlo, un solo sentido fácil, de y a x no es
fácil, la anti-imagen.
Cerrar una puerta es muy fácil, abrirla es fácil si hay clave, si no hay clave es muy difícil.
Básicamente, con la clave publica es fácil calcular la operación de cifrado, y con la clave privada
el descifrado.
FACTORITZAR valors molt grans, se basa en ElGamal, ∝𝑑 𝑚𝑜𝑑 𝑝 → 𝑙𝑜𝑔∝ ∝ 𝑚𝑜𝑑 𝑝 -> cost
subexponencial.
Ja podem treballar amb els algoritmes de clau asimètrica: RSA i ElGamal, en aquests
criptosistemes podem xifrar i signar, i en ElGamal veiem DSA.
Quan parlem de funcions unidireccionals, sabem que fe el producte es senzill, però la inversa,
que es fer factorització, es realment difícil, en RSA veiem que en grans nombres, es molt costos
computacionalment.
1. Key Generation
Escollim dos primers i calculem el seu producte, p*q, calculem n=p*q, calculem phi(n), i una e,
que ha de ser major que 1 i menor que phi(n), i calculem mcd(e,phi(n))=1, i e^-1 = d. (e,n) seran
les claus publiques, i el d, la clau privada. Tenemos que conocer phi(n) para conocer el inverso
multiplicativa de e mod phi(n). P i q han de ser de ser de magnitud similar, però no han de ser
molt propers, perquè volem factoritzar ‘n’, computacionalment poc costos.
Com escollim?
Otro criptosistema asimètric, al 85, se basa en la dificultat de calcular logaritmes discrets, fer la
operació de a^b mod p = c, sent p un primer, sol ser fàcil, però quan el que coneixem es la c, que
es c=a^x mod p, coneixem la base a, i coneixem el primer, el que volem calcular es el log a de c
mod p, que ens dona = x, que es la b. Si som capaços, diem que es exponenciació modular, la
operació es complexa.
El grup cíclic es Z*p, tots els valors que estan a Z son els elements fins a p-1, els elements tenen
el invers multiplicatiu, si el valor el multipliquem per l’invers ens dona 1. I es generador si el
nombre elevat ens dona tots els elements possibles de Z*. El ordre es phi(p)=p-1.
1. Key Generation
Com escollim el primer p, una vegada escollim el primer p, ja podem escollir un primitiu de Zp,
el primer p es recomana que sigui de la seguent forma:
- P i q son primers
- P = 2q + 1.
El primer pas es escollir un primer p.
Si tenemos
𝑥 𝑜𝑟𝑑𝑟𝑒 𝑚𝑜𝑑 𝑝 = 1
Por ejemplo, en Z11: 2^0, 2^1...2^10=1, 4^1,4^2...4^5=1, el 2 té ordre 10, i el 4 té ordre 5, tots
els elements de Zp tenen un ordre, i el ordre màxim es p-1. El ordre del generador alpha es
ordre(p-1). Com sabem si es primitiu?
De la p:
Tenim p=23, que es descomposa en: 2*11+1, phi(p)=23-1=22 = 2*11, on p1=2 i p2=11. Quan
𝑝ℎ𝑖(𝑝)
agafem el valor que escollim, quan fem ∝ 𝑝𝑖 𝑚𝑜𝑑 𝑝 ! = 1. Si p1=2 i p2=11, escollim un alpha
dins de Z*p = {1,...,p-1}, no s’escull el 1.
𝑝ℎ𝑖(𝑝)
∝ 𝑝𝑖 𝑚𝑜𝑑 𝑝 ! = 1
22
∝ 2 𝑚𝑜𝑑 23 =∝11 𝑚𝑜𝑑 23! = 1 → 𝑠𝑖 𝑎𝑙𝑝ℎ𝑎 = 3 → 311 𝑚𝑜𝑑 23 = 1
→ 𝑒𝑙 3 𝑁𝑂 𝑒𝑠 𝑔𝑒𝑛𝑒𝑟𝑎𝑑𝑜𝑟
22
∝11 𝑚𝑜𝑑 23 =∝2 𝑚𝑜𝑑 23 ! = 1
Si alpha = 3 NO.
22
∝ 2 𝑚𝑜𝑑 23 =∝11 𝑚𝑜𝑑 23! = 1 → 𝑠𝑖 𝑎𝑙𝑝ℎ𝑎 = 7 → 711 𝑚𝑜𝑑 23 = 22 → 𝑒𝑙 7 𝑃𝑜𝑡 𝑠𝑒𝑟
22
∝11 𝑚𝑜𝑑 23 = 72 𝑚𝑜𝑑 23 = 3 ! = 1, 𝐸𝑆 𝐺𝐸𝑁𝐸𝑅𝐴𝐷𝑂𝑅 𝐸𝐿 7!
A partir de p, calculem la phi de p, calculem a partir de la factorització, mirem quins valors son
generadors possibles, hi ha més.
Para continuar, lo que hacemos es resolver p=q*2+1, donde q=4919. Siendo p1=2 y p2=4919.
Miramos ahora los generadores possibles, y vemos cual de ellos pega. Si ejecutamos Chinese en
Java nos damos cuenta que el 23 es el unico que al hacer 23^4919 mod 9839 no da 1, por lo que
ese es el generador.
Ahora nos toca buscar la clave privada d, que tiene unos requisitos:
El unico que esta por debajo es el 8326, porque los demàs salen del rango, ya que es 9839. El
orden de magnitud debe ser grande, el nombre de bits, no cogemos un valor cercano a 1 o a p-
1.
Ahora podemos calcular la clave publica, que se calcula haciendo: y=g^d mod p, o haciendo
alpha^p, que nos da 213.
En resumen:
Xifratge Desxifratge
X es el valor que nosaltres volem xifrar. El Tenim el c1 elevat a ^-d, i el multipliquem per
criptograma en RSA era un valor, en ElGamal c2, que es la part que conté el missatge en sí.
son dos valors c1 i c2, que es concatenen, en
eficiència en el Gamal enviem el doble de bits
per xifrar el mateix missatge. En RSA fem una
exponenciació, aquí fem 2, tenim el doble de
informació i el doble de exponenciacions.
Alpha es el generador, d la clau publica i k es
un valor que escollim aleatòriament que
pertany en Zp.
, es correcte.
e. Digital signatures
i. Definitions and properties
ii. How to obtain digital signatures
iii. RSA signature
iv. ElGamal Signature
v. Digital Signature Standard
vi. Hash functions
1. Hash functions
Una limitació en ElGamal i RSA es que la m havia de ser menor que n, i en ElGamal que m era <
que phi(p), tenim mida màxima. Per donar solució a la problemàtica quan hem de signar un arxiu
gran, una actualització del SO i no podem signar ni amb RSA ni amb ElGamal, podem pensar que
podem agafar el missatge i partir-lo en parts petites, es una opcio, ja que les operacions de
signatura acostumen a ser digital amb un criptosistema asimètric, son costoses, a més a més,
hauríem de concatenar-les, hi ha una part molt gran, si ho divideixo en parts hi ha gran cost
computacional.
Ens proposen fer servir una funció de hash, ens dona igual la mida, a una cadena binaria de mida
fixa, que anomenem valor de hash. Si a un missatge li passem la funció de hash, obtenim h, que
seria el hash value. També tindria noms iguals que seriena una representació compacta o imatge,
o es un imprint o imprenta digital, te molts noms, o missatge digest. Aquesta sortida té una mida
fixa, aquesta sortida que fa com de representació de la imatge, la usem com un identificador
únic, tinc el meu missatge, i al calcular el hash, el valor h l’uso per representar el missatge
d’entrada, per a que ens poden servir? Com els criptosistemes de clau publica son lents, la
simètrica es rapida, però té limitacions, la asimètrica és lenta computacionalment, en lloc de
signar tot el document, signem un missatge partit en blocs, que formen m, calculem el hash de
m i nomes signem la representació o el valor hash, en lloc de tot el missatge sencer.
Una funció de hash mapeja, passa tot el conjunt de missatges possibles, que es un conjunt infinit,
el passa a un conjunt que te una mida fixa, qualsevol missatge que tinguem, va a parar amb un
de hash.
El nombre d’elements que podem tindre a A és infinit, molt més gran que al de hash, es sempre
mes petit.
Queremos que sea fácil de computar, y que sea computacionalment complejo que al calcular la
función de x sea distinto que A’.
Que con x encontrar x’ tal que x != x’ y hash(x)=hash(x’), si esto pasa, hay una colision.
Queremos eso porque antes para firmar m, ahora hay un paso previo, que es calcular el hash de
m, si tenemos m1!=m2 y cuando calculamos el hash de m1 da h, y cuando hago el hash(m2) da
h tambien, cuando firmamos, firmamos el mensaje de ambos. Si los hash son iguales, firmamos
los dos a la vez, por eso no queremos colisión.
Obtenemos una s o una (r,s) en el caso de ElGamal a partir de una h. Al usar el hash, no estamos
firmando el mensaje, firmamos el hash, y al firmar el hash quiere decir que firmamos todos los
mensajes mi tales que su hash es el mismo.
Para entender como funciona el hash, encontramos la paradoja del nacimiento. Tenemos R1,
R2,…RN, variables aleatorias, cada una con T posibles valores, donde T son los dias del año y n
los individuos, queremos que todos los aleatorios sean distintos.
n->personas.
Queremos que todo sea distinto, pero pueden haber dos iguales. 1-P(tots diferents), cuando
calculamos esto, calculamos la probabilidad de que alguien cumpla la mismo día que otra
persona. Que acaba saliendo una probabilidad de e^-2pi/2T, sale a 63% de que al menos un par
cumplan el mismo día.
Pero si calculamos la probabilidad de que alguien nazca un día concreto, es de 7,4%, mucho mas
pequeña. Si hay 40 personas, casi un 90%. Tenemos dos conjuntos con una cierta mida, al final
tenemos colisiones, que puede ser mas alta de lo que pensamos.
Resistencia a las colisiones cercanas, tiene que ser difícil encontrar dos entradas x y x’ tal que el
hash de x y de x’ difiera en muy poco.
Si conocemos una parte de la entrada, tiene que ser difícil encontrar la resta, es unidireccional.
No podemos reconstruir ninguna parte.
Esto es un ejemplo donde la entrada es una cadena x y la salida una cadena de n bits.El input se
divide en bloques de 64 bits, si un bloque no tiene el tamaño, se añade farciment. La sortida es
calcula amb un IV, que es un valor aleatori, a continuació
Hay dos grandes tipus de funcions de hash, les funcions sense clau, i les funcions amb clau, en
les funcions amb clau, concatenem el missatge amb la clau, necessitem la clau per obtenir el h’.
Guardamos el hash y cogemos una clave k para hacer las operaciones. Podemos garantizar que
los datos no han sido alterados, para hacer eso podemos usar una MAC o message authorization
code. Si tenemos dos usuarios que comparten una clave K, lo que queremos evitar es que
modifiquen el mensaje. Lo que hacen es hacer un hash con el mensaje y la k.
Si hay un atacante y quiere cambiar la m por una m’, si envia la m’ y la x, cuando llegue al receptor
b, este que hace? Calcula el hash de m’ con la clave y obtindra una x’, que será distinta de la x
que ha enviado, si quiere tener éxito tiene que ser capaz de calcular una x’ y tiene que conocer
la k, si no la conoce es complicado.
xi. MAC
Se calcula con criptografía simétrica, entonces lo que podemos coger y asegurar es que nadie se
coloca en medio, no podemos asegurar el no repudio. Un hash es como una signatura privada
porque tanto A como B la pueden calcular, no podemos garantizar el no repudio, no podemos
garantizar quien de los dos lo ha enviado.
En las transacciones podemos añadir datos únicos, como NONCE, #SEC, time… para evitar
ataques de reply, porque un A puede usar su ID para identificarse, cifra el mensaje y lo envia a
B, B lo descifra y extrae el ID y el passwork y hace la verificación, si hacemos eso, un atacante
martes usa la c y es autentica y tendrá éxito.
Se podría hacer algo mas elaborado con mensajes de respuesta, autenticar A y B, B devuelve un
aleatorio, y A calcula un hash con NONCE y NONCE2, pone ID, y la K, y eso es la x, y la devuelve,
para verificar usa la clave para encontrar el id, hace el hash con el nonce1, nonce2, el id, y la k, y
tiene que ser igual x con x’, en cada identificación cambian los NONCE, porque son distintos.
En resumen en RSA:
Siempre enviamos m, y (r,s) o (Alpha^k, s). La funcion de hash tiene que ser segura, la seguridad
recae en las funciones de hash, si no es segura, saldrá todo igual.
Hasta aquí hemos hablado de la criptografía simétrica, la asimétrica con cálculos, signatura
digital… Un mensaje m si era muy grande no podíamos firmarlo:
Ya podemos firmarlo todo, pero si tenemos un mensaje m de 12 MBytes, y lo tengo que enviar
confidencialmente, si Ismael quiere enviar el mensaje a Judit, como lo haríamos? Que
necesitamos? Que técnica usamos?
- Generamos una clave AES k y ciframos con k el mensaje, y enviamos el mensaje. Pero
cuando lo reciba para descifrar y tener m, le hace falta k, como le llega k… ->NO.
- Obtenemos la clave publica de la Judit, usamos RSA donde ciframos m con la clave
publica de la Judit, pero quizás no se puede hacer porque el mensaje m < n, y si n es mas
grande, no podemos.
Como usamos lo que hemos visto hasta ahora? Combinamos las técnicas de las criptografías
con distintas iteraciones, un paso para unicidad, otro para no repudio, según lo que queramos,
hacemos una u otra cosa.
Queremos m’ que se obtiene con la k, que se obtiene con el descifrado de c2. Para conseguirla,
como necesitamos Pubjudit, usamos PrivJudit.
1. RSA(𝑃𝑟𝑖𝑣𝐽𝑢𝑑𝑖𝑡 , c2)=k
2. 𝐴𝐸𝑆𝐾−1 (𝑐1) = 𝑚′
3. m’ = m|| s
4. hash(m)=h
5. RSA(PubIsmael, s) = h’
6. Verificamos si la h = h’, si si, es una firma correcta, si no, es una firma incorrecta.
Otro caso, si Ismael quiere enviarle el mensaje a dos destinatarios, tiene dos opciones, o enviar
dos mensajes, o un mensaje a dos destinatarios, teniendo en cuenta que el mensaje ocupa
12MB, que tenemos la clave publica y la clave privada de Ismael, y que además, la clave publica
de Judit, y la de Ines. Obviamente, queremos confidencialidad, autenticidad, integridad y no
repudio, para lo primero ciframos y para lo otro firmamos. Qué hacemos?
El IAN ha creado una pareja de claves falsas para el Alex, las dos falsas, y ha hecho lo mismo para
la Laia, una publica y privada. Y después ha entrado en internet y ha hecho una web del Alex,
con su informacion y al final la Info de la clave publica, que es fake, y ha hecho una de la Laia. Se
ha pagado dinero para que salga antes la pagina web falsa antes que la otra, y ha hecho lo mismo
con la de la Laia. Por lo que el Ian ha podido consultar la informacion.
Que ha hecho?
- Obtiene la clave publica de la Laia, y en el buscador de la Laia, se coge con la informacion
falsa de Laia. Si tenemos un mensaje y hacemos cifrado con la clave publica y el mensaje
obtenemos un criptograma falso, que le mandamos a Ian, que el tiene la clave publica
falsa de la Laia y la privada, porque el la ha encontrado, por lo que el puede descifrar el
mensaje.
Todo esto se soluciona con un certificado digital, la criptografía se usa para asegurar integridad,
autenticidad y no repudio, pero obviamente tambien para encriptar informacion.
En la encriptación, se usan criptosistemas simétricos para encriptar, pero para enviar la clave, se
usa asimétrica.
Por otro lado, en la parte de autenticación e integridad, usamos firmas digitales con funciones
de hash para firmar con la clave privada.
Como hacemos la distribución de las claves publicas, con un directorio publico, en lugar de mirar
las web, tenemos un directorio con un gestor confiable, pero si lo usamos, es un cuello de botella,
la gestión es crítica, si alguien es capaz de modificar claves se nos lia, no podemos permitir una
intercepción. Todo lo que es modificar informacion la lia, no pueden haber interacciones raras,
como lo solucionamos? Usamos certificados y autoridades de certificación o CA.
El certificado vincula la clave publica con una identidad llamada subject, que puede ser una
persona, una entidad, una empresa, una autoridad… y quien vincula? La autoridad de
certificación, que es la que valida la relacion entre subject y clave publica, lo asegura. Y una vez
valida, hace la emisión, que garantiza que la validación es auténtica o que ha estado emitido por
la CA, y que es integra, o que no ha estado modificado, y por último, no repudio, ya que la CA no
puede negar la emisión del certificado.
i. Basic Concepts
Los certificados digitales son una estructura de datos que contienen informacion sobre el
propietario de unas claves criptográficas, la publica y un certificado digital que valida todos los
campos. El propietario o owner es el único que conoce la clave privada.
La PKI es una infraestructura, es tot el hardware i components amb els usuaris, políticas i
procediments que permeten la creacio i gestió dels certificats digitals basats en la clau publica.
Gestio eficiente de la confianza de las claves criptográficas que usamos para autenticación,
integridad, confidencialidad y no repudio, es una confianza, para conseguir eso usamos la PKI,
que garantiza que unas claves son de ahí.
El CA, el punt central, de confiança, son empreses que fan les RA, el proces de validació,
verifiquen el subject, que sigui correcte, llavors una vegada validat, la relació de subject i clau
publica, llavors fan la emissió, i això té un cost, es paga per cada certificat, hi ha una despesa per
mantindré la part de seguretat. S’ha de mantenir que el certificat no s’hagi caducat.
El PGP, aquest es mes sofisticat, hi ha més d’una entitat, cada usuari genera la seva parella de
claus i la comparteix. Per exemple, el IAN fa la seva pagina web amb la seva clau publica del PGP,
i si algú la vol, la certificació la fan els usuaris, amb lo qual, podem fer que el IAN tingui la seva
clau certificada per n persones. Quan veiem una clau amb moltes certificacions, aquesta clau és
més fiable, això comporta que cada cop la clau creix, creix la mida i la confiança, es un model
més distribuït en el qual son els usuaris els que entre ells es certifiquen.
En aquest model, que es mes distribuït, cada usuari fa de CA, les claus publiques son signades
pels usuaris, a mes signats, més confiança, el model es coneix com a web de confiança, tenim la
idea de que els amics dels meus amics son els meus amics. Es el pretty good privacy, es
interessant la historia.
El Phil Zimermann va publicar el codi font. Fem servir la RSA per a xifrar, una encriptació
simètrica.
El que es fa es:
- Escrivim un text.
- Fem la part del zip.
- Es fa el xifratge, obtenim la clau k simètrica amb 3DES o IDEA.
- Xifrem amb simètric.
- Xifrem la clau k amb asimètric.
Aquest es l’ordre que es seguia, el que té gracia es la compressió, fem redundància, tenim
contingut en binari, aprofitem els beneficis dels compressors.
Hem parlat de models de CA… Pero com es el cicle de vida, que fem per obtenir un certificat:
- La generación de les Claus van acompanyades de un certificat.
- Després hi ha el registre, verificar que el certificat es correcte. L’usuari es el que ell diu
que es? Assegurar que la clau publica es la nostra. RA.
- Certificació: emet el certificat, però hi poden haver problemes.
- Revocació del certificat: Si canviem de empresa, ens roben la clau... si la parella de claus
està en risc o la informació no es correcta, hem de revocar, tornem a començar, comença
la generació de claus.
- Renovació del certificat: si el certificat caduca, hem de tornar a fer el proces. Quan
expira, s’ha de fer un de nou, si hi ha una incidència, no podem usar la mateixa parella
de claus, es fa una de nova.
1. Generació de claus:
Per exemple, generem les claus de Judit amb openssl, aquest fitxer conte la clau privada i la
publica, hi ha la p, la q... parlem de claus RSA, que es senzill. Tenim exponent public... la d...
A continuació fem la petició de certificat, aquí es on fem: Judit.csr, aquí agafem i a tota la part
del subject la proporcionem, posem país, nom empresa, common name, email...
Aquest csr va signat, com hi ha la clau publica, i la signatura, la signatura demostra que tenim la
clau publica vinculada amb la privada.
Aixo s’ha de fer a la nostra maquina, on ningú té accés a la clau privada, a la nostra casa, segur...
i guardem el fitxer.
2. Registre:
El domini es nostre, però ho hem de demostrar, assegurem que som nosaltres. La petició, on
rebem el Judit.csr, totes les verificacions, si tot es correcte pasem a la certificació.
3. Certification:
Aqui trobem la emissió del certificat, aquí donem el Judit.crt. Aqui a donem el subject i la clau
publica, son tots els camps que tenim.
En resum:
CA_Grup_L1A.key -> CA_Grup_L1A.csr -> CA_Gruo_L1A.crt -> Ara que tenim tot correcte,
generem les claus per a tindre un certificat.
4. Certificate Revocation
Per tant, la clau es veu compromesa, cal agafar la CA i informar de que cal revocar el certificat,
que s’ha trencat i no podem confiar, la CA usa la llista de certificats revocats o CRL, que es una
llista signada de totes les claus publiques revocades i tenim un numero de sèrie per cada
certificat.
Tenim els números de sèrie dels certificats no vàlids. També tenim el temps de revocació, motiu
de la revocació... I també, la cadena pot tindre un temps, i això ha d’anar signat, per a que ningú
pugui treure-la de la llista, un cop emes, ningú ho pot modificar, i s’aconsegueix amb la signatura
digital.
Aquest es per a veure l’estat d’un certificat, o valid o revocat. El OSCP ens obliga a consultar, aquí
tenim que la informació està actualitzada, es revoca i obtenim la informació, el requisit es tindre
connexió. Aqui es un servei que hem de respondre cada petició i amb seguretat.
Les respostes que pot tenir poden ser de diversos tipus, i el que s’ha de complir es que ha d’estar
signat. La clau per signar ha de pertànyer a algun dels següents casos:
- La versió de la resposta.
- El nom del responder, qui es el servei que respon.
- Respostes que s’han fet.
- Si hi ha extensions addicionals.
- El algoritme servit: elGamal, DSA...
- Signatura.
Hem de saber quan fixar un interval, es important el timestamp, llavors, quan els certificats
expiren, s’acaba el compromís, cal renovar, s’han de fer els passos anteriors, hem de generar les
claus, petició de certificat i emissió del certificat.
Recordem que la generació de claus vol dir claus noves. Els certificats de curta durada o CRLs
duren poc temps, no cal posar tants certificats.
En el mon real, els sistemes necessiten indicar clarament on comença i on acaba el missatge, el
format de codificació (x64, bin), la estructura... la informació s’agrupa, si volem guardar la clau,
com ho fem, amb mòdul? Amb p... quin ordre seguim? Hi ha informació necessària per a que els
sistemes interactuin, hi ha un estandard per agafar i interactuar amb els diferents sistemes,
necessitem la part dels estandards per interacturar.
Un d’ells, el mes conegut, son els PKCS, aquests son un seguit d’especificacions que van fer els
laboratoris dels RSAs, per a estandarditzar el format de les dades usades en la criptografia de
les claus publiques.
Van començar l’any 1991 i ara el suporten Apple, Microsoft, Sun... Hi ha molts estàndards, des
del #1 fins al #15, que tenen les regles, justifiquen les sintaxis, independentment de l’algoritme
usat.
- #1 defineix el mecanisme per signar i xifrar usant RSA. Com es la clau publica i privada i
com fer signatura amb RSA, molt important.
- #3 defineix un protocol per intercanvi de claus.
- #5 descriu un mètode per a xifrar un text amb una clau secreta computada amb una
contrasenya.
- #7 defineix una sintaxis general per als missatges que incorporen criptografia, molt
important.
- #8 es l’arxiu on guardem la clau privada, el defineix.
- #9 defineix atributs que s’usen en altres PKCSs.
- #10 es la sintaxis per a una petició de certificat per a una clau publica.
- #11 defineix una interfaç de programació independent. Per instal·lar llibreries. Instalem
el pcsc, tenim un lector, marquem emissor...
- #12 justifica el format per guardar i enviar certificats. On guardem la parella de claus.
- #13 tenim tota la part dels mecanismes per xifrar o signar fent servir curves el·líptiques.
- #14 per a generar números pseudoaleatoris.
- #15 complementa PKCS, per a definir la forma en que les claus es guarden en dispositius
criptogràfics.
h. Security Devices
La clau privada es informació molt sensible, perquè si accedim a aquella, els atacants poden
signar codis i d’aquesta forma, emetre una signatura i posar codi maliciós. Les comunicacions
permeten desxifrar informació. Fer un seguit d’atacs, la seguretat, una part importat és no
accedir a la clau privada. En clau simètrica també. Hi ha un seguit de dispositius criptogràfics,
les targetes intel·ligents, els mòduls de seguretat hardware o HSN, que permet executar codi de
forma sensible, o els mòduls de plataforma confiable, TPM, esta a les plaques bases per
assegurar que l’arrencada es segura, i finalment els tokens de seguretat, que van canviant el valor
per afegir una capa de seguretat addicional.
i. Smart Card
La targeta intel·ligent es un dispositiu que conté un circuit de seguretat integrat, un chip, que pot
ser un microcontrolador segur o equivalent, que tindrà una memòria interna i segura, i també
un xip.
Es una peça de hardware associat amb una plataforma software que pot estar vinculat amb un
PC o servidor per proporcionar un seguit de funcions criptogràfiques. Pot servir com un
generador criptogràfic, o per a guardar les claus, pot fer operacions de xifratge, desxifratge,
validació...
Aquests dispositius també son tamper-resistents, si els manipulem, esborren les claus, i si tenim
un codi sensible, es pot fer dins, pot contindre codi.
Que pot fer? Signatura digital, intercanvi de claus... protegit amb el TCG subsistema. Quan fem
el boot de la maquina es quan podem accedir a aquesta informació, si en l’arrancada es detecta
que hi ha algo incorrecte, la maquina pot no arrencar, si la sequencia no es correcta, el hash no
s’espera, es bloqueja.
Les aplicacions son la navegació segura, el Mail segur, es protegeixen les dades, però necessitem
que la placa mare o suporti.
Es un dispositiu que té una pantalla on va mostrant un codi que cada poc temps va canviant,
llavors, això s’anomena authentication token, que s’usa per donar accés a algunes xarxes, com a
factor extra.
Ja hem acabat el tema 1, ara ja sabem eines criptogràfiques per a protegir les comunicacions.
Quan parlem de protegir, parlem de un seguit de propietats:
Com sabem que les claus son d’una entitat o persona? Amb la signatura digital (RSA, ElGamal,
DSA), volem xifrar la informació del sobre... Com podem unir totes les propietats en una? Parlem
de certificats, un exemple es la PKI de la estructura, finalment vam fer un parlat del hardware
usat.
Tenim una base matemàtica necessària per a la part de la clau asimètrica, es un tema apanyat
de criptografia, per a tindre unes parts. Ens centrem en la protecció de la comunicació, com
usem les eines.
Quan hi ha dos parts que es volen comunicar entre elles, hi ha uns primers passos, el client envia
petició de comunicació, el b accepta... son uns passos primers. Es la part d’establiment de
connexió, i aquest establiment el tenim amb la part de seguretat, per obtenir les claus de sessió
-> Obtenim un seguit de claus.
La segona part, es la part de la comunicació segura-> aquí es on usem les claus que hem obtingut
en la primera part d’alguna forma.
Quan parlem de comunicació, hem estudiat a xarxes que hi ha diferents capes o nivells, el físic,
el de link... el de transport, entrarem protocols a nivell d’enllaç, que son a nivell de subxarxa i la
part del wifi, ha de ser confidencial, integra... WEP, WAP, WAP II i WAP III. A nivell de xarxa veurem
el IPSec, aquí la conexio es de maquina a maquina, NO de servei a servei. A nivell de transport,
veiem el TLS i el SSH. I a nivell d’aplicació, veiem un exemple, el SMIME i el PGP.
Les comunicacions que son entre fils van pel medi aeri, la seva intercepció es mes fàcil, es pot
fer mitjançant atacs passius. Hi ha atacs actius i passius, els passius es basen en escoltar, obtenir
informació escoltant els missatges que passen a traves de la xarxa. Els actius son on intento
enganyar, injecto missatges falsos, hi ha una part de participació activa.
Quan tenim un cable de xarxa, hem de tindre accés pel cable per obtenir informació, si tenim
una estació que emet per conectarse amb una altra, ens col·loquem al mig per escoltar, es atac
passiu. I també es molt fàcil per injectar tràfic en estacions terceres o atac actiu.
Sobre les propietats que volem aconseguir, ens preocupen dos, la confidencialitat, i la segona es
la integritat. Es a dir, amb confidencialitat es vol assegurar que quan dos nodes es comuniquen
la informació que es comuniquen, no hi pugui haver un atacant que pugui esbrinar els missatges
que estan enviant-se, la informació que anirà entre ells es suposa que anirà xifrada.
I amb la integritat es que l’atacant no ha de poder modificar els missatges ni injectar cap tipus
de missatge idealment.
Per la part de la confidencialitat o privadesa, es va usar un criptosistema de flux, simètric, el RC4,
i per la part de integritat un CRC, cíclic redundancy coach en cadascuna de les trames que
s’envien.
El WEP es opcional, podem estar en una xarxa oberta on qualsevol que escolta pot capturar la
informació o la podem activar, aquí quines claus podem usar?
- Clau k de 40 bits.
- Clau k de 104 bits.
Com moltes vegades hem dit, tenim una contrasenya, llavors, PBKDF ens dona la K, que pot ser
de 40 o 104 bits. Totes les estacions que es volen connectar han de conèixer la clau. Tenim un AP
amb la contrasenya i uns clients amb la mateixa contrasenya.
1. HOW IT WORKS
Perquè no usem la clau k directament? Si tenim dos missatges m1 i m2, si volem xifrar m1, fem
m1 || CRC(m1) XOR S, la sequencia es fa amb RC4(K)=s1. Si fem el mateix amb el m2, obtenim
una s2 i un c2, fem el mateix, RC4(K). Aquest s1 =? S2 o es diferent? Si el RC4 es la mateixa, les
seqüencies son les mateixes, si fem l’RC4 amb la mateixa clau, sempre que xifri la sequencia es
la mateixa, si coneguem el criptograma, i sabem que el missatge en clar, podem calcular la
informació.
Per evitar, la K serà K||IV sempre. Els IV han de ser diferents, com usem cada cop un IV diferent,
tenim seqüències diferents, si desxifra algo, desxifra una seqüència, no totes. -> NO USEM LA
MATEIXA SEQÜÈNCIA, la solució és usar un IV diferent, però el WEP no es segur, quins atacs
podem tindre?
Si tenim un error, tenim ciIV1, fem la XOR i obtenim una seqüència si. Com els IV son de 24 bits,
tenim 2^24 possibilitats, tenim 2^24 seqüències diferents, si hi ha una velocitat de 11MBps per
segon, podem enviar trames fins completar la taula i desxifrar, ara escoltem el canal i veiem una
parella de IVt, Ct, quan tenim els elements, el IV com tenim la taula, trobem el IV amb relació St,
busco l’element, agafo la st, fem st XOR ct i obtenim mt || CRC, bàsicament, no cal clau,
completem la taula.
Si volem injectar, calculem el CRC i després anem a la taula i escollim el IV que ens agradi, calcula
el s1, escull valors, i fem si XOR mx || CRC(mx) = ci, no ens cal clau.
Es vulnerable a molts tipus d’atacs, el pitjor es el FMS, pot capturar contrasenyes, k que usa, hi
ha exploits. Una altra part que hem vist. El CRC està pensat per detectar errors, però si es un
atac actiu, el atacant pot alterar el criptograma i calcular el CRC.
En general, quan enviem unes dades entre dos estacions, típicament volem enviar si, el missatge
o el criptograma, i a mes una prova. Si hi ha dos caixes, una que té precinte i una que no en té,
es compra la que està més segura, perquè vol dir que ningú l’ha tocada.
El precinte té la garantia de que ningú ha manipulat res, aporta integritat i autenticitat. Tant en
un cas com en l’altre: missatge + prova, o criptograma + prova. La prova nomes l’ha de poder
calcular l’emissor i el receptor, llavors la clau k, nomes la pot conèixer l’emissor o el receptor, i ha
de ser prou segura, de forma que un atacant ha de tindre dificultar computacional, no l’ha de
poder obtenir, de 128 bits o més.
Finalment, tenim un punt d’accés PA, en aquest sistema, qualsevol missatge que intercanvia una
part, com tots coneixen la contrasenya, qualsevol pot desxifrar un missatge que enviem
nosaltres. Llavors, la confidencialitat en el WEP es un desastre si ens ataquen.
Els WEP volen la part de confidencialitat i integritat. Amb aquesta qüestió, sorgeixen atacs que
eviten tindre ni confidencialitat ni integritat, hi ha mancances, una millora es el WPA, a mitjans
del 2003 s’implanta, volem: Confidencialitat, integritat i una part d’autenticitat o de
autenticació.
El WPA vol solucionar els problemes del WEP, però hi ha una part important, la de compatibilitat.
Apareixen dos modes:
- WPA personal: es el que usem a casa, hi ha una contrasenya que els membres de la casa
la saben, accedim a dispositius... Normalment tenim una wifi pròpia, i una de convidats,
hem de tindre dos wifis, es una recomanació.
o WPA-PSK: es Shared password key.
o Tots els usuaris tenen un pas d’autenticació, però qualsevol que coneix el
password compartit. Es pot canviar la contrasenya manualment.
- WPA Enterprise: en aquest està pensat per a empreses o grans organitzacions, la xarxa
eduroam, si anem de Erasmus... les universitats, totes tenen eduroam, es la mateixa. Hi
ha un servidor RADIUS al darrere, el nostre identificador té un domini/usuari, el domini
es el que ens redirigeix cap al servidor de autenticació correcte. El domini es la URV, el
usuari nosaltres, es per autenticar.
o Va amb un servidor RADIUS.
o Entorns empresarials.
Aqui, expliquem que la personal usa el sistema TKIP, tenim una part inicial on podem dir que
entre el punt d’accés i el client, que es el que inicia la connexió, fem una negociació o generació
de claus. Quan fem el primer pas, hi ha:
- Una autenticació del client, es a dir, el que vol demostrar es que té dret al recurs (xarxa).
- I acte seguit acabem tenint unes claus de sessió (canvien durant el temps), que ens
serviran per:
o El xifratge.
o Una clau per a la part d’integritat / autenticitat.
Aqui tindrem una comunicació segura, que serà el xifratge i una part de integritat i autenticitat,
amb un intercanvi de missatges entre els clients. Cada estació acaba tenint unes claus diferents,
tots hauran fet el pas de generació de claus, i cadascú tindrà una clau diferent, totes elles tenen
el mateix password inicial, però quan acabem de fer la negociació, tenim claus diferents, per a
no permetre desxifrar els missatges, no com el WEP.
1. CHARACTERISTICS
Sobre la integritat, abans usàvem un CRC, ara usem MIC o message Integrity code, es la prova,
que es calcula usant una clau secreta de 64 bits, aquesta clau només la té l’emissor i el receptor.
Si tenim un missatge i calculem la clau k, si tenim algun atacant que vulgui modificar o injectar
missatges, necessita la clau d’integritat que usem, perquè si no no pot calcular el MIC correcte.
Abans al CRC, com no hi ha cap clau, qualsevol podia calcular-ho. Usem una sequencia de 48
bits, i per cada frame usem un password o una clau diferent.
Tenim el client i el punt d’accés, els dos coneixen la contrasenya per accedir. Per tant, el primer
que es fa:
Client AP o router
Coneixen la contrasenya
PMK -> pairwise master key, que es calcula amb: PMK = PBKDF(contrasenya, SSID, ssidlength,
4096, 256), es una funció que a partir d’una contrasenya genera una master key de la mida
que vulguem.
Si ens volem connectar al canal Primer comença el servidor, ens fa el connect,
d’autenticació, sol·licitem connexió. genera el A-NONCE, que es un valor aleatori
El client crea un altre S-NONCE, aquí es fa una de gran mida i l’envia.
derivació de les claus.
Calcula la PTK amb una HMAC basada en SHA-
1, aquí que posem?
PTK=HMAC de SHA1 (A-NONCE, S-NONCE,
PMK, @MAC_client, @MAC_AP)
Ara calculem:
-
KCK: per temes d’integritat i
autenticitat.
- KEK: temes de confidencialitat de
configuració.
- TK: temes de confidencialitat de les
dades.
Calculem el MIC amb una HMAC: MIC = Un cop tenim tots els elements, el punt
HMAC(KCK, payload). Li hem de passar el S- d’accés ha de calcular la PTK, i ho fa:
NONCE i el MIC cap al servidor. PTK=HMACsha1(A-NONCE, S-NONCE, PMK,
@MAC_client, @MAC_PA)
Aqui obté la KCK, la KEK i la TK a partir
d’aquesta, amb tota la informació ja pot
verificar el MIC, pot veure si la HMAC(KCK,
payload) =? MIC que ha rebut.
- Si es igual perfecte, sabem que no ha estat modificat un cop enviat el emissor, i que
aquest valor ha estat enviat per l’emissor perquè ningú més pot calcular aquest MIC de
forma correcta, perquè l’emissor és l’únic que coneix la KCK. Respon amb un missatge
de OK amb la operació i calcula el MIC corresponent, calculat amb la KCK, instal·la la key.
- Si no, malament.
El client el que fa es verificar el MIC, calcula la HMAC(KCK, dades enviades) ?= MIC, correcte, si
no malament. El client respon el mateix, clau instal·lada, i això seria el missatge, llavors calcula
el MIC=HMAC(KCK, key installed).
Ara ja podem enviar els missatges xifrats, xifrem la informació. Els passos importants es la
importància del A-NONCE i S-NONCE, que fan que la clau sigui sempre diferent, que sempre
derivem d’aquestes, volem demostrar que tant un com l’altre coneixen la contrasenya, per
calcular la PMK.
Al enviar paquets, per cada paquet que envio, uso una clau diferent. Quan envio un paquet, com
el numero de seuqencia es diferent, la clau es diferent, sempre tindré que la @MAC origen no
canvia, la TK es diferent per cada connexió, i la TKIP amb el numero de sequencia canvia a cada
trama que enviem, per tant, com que TKIP canvia en cada trama, la Per-Frame key canvia en cada
trama.
Què més tenim? Alhora de desxifrar, teníem el nostre missatge i nosaltres calculàvem el MIC,
llavors, aquest MIC, que al final diem que son les dades i la clau d’integritat, tenim: MIC =
HMAC(missatge, KCK). Amb això es suficient. A partir del missatge i el MIC:
DATA MIC
Tot això es el que s’ha de xifrar, amb el WEP s’usa el RC4, o li passem la clau del RC4 unica per a
cada trama, podem dir que el que fem es que a partir d’això, tenim una mida ‘x’, amb el RC4(Per-
Frame key)=S, generem una sequencia de mida x, fem: S XOR m’ = criptograma.
Què he de fer per obtenir la contrasenya? Trenca la confidencialitat, per tant, passem al WPA2.
Aqui, fem servir el CCMP o Counter-Mode-CBC-MAC, aquí tenim una combinació, quan hem fet
els modes de xifratge, ens preocupa la part de proporcionar confidencialitat, aquí ho
complementem. En el xifratge tenim missatges m1 m2... al fer el xifratge obtenim c1, c2... ara
volem afegir integritat, i per explicar això xifrem els modes CBC amb el IV, i si el modifiquem,...
Com podem protegir això, informar de que el IV s’ha modificat, doncs enviant la prova, es la
etiqueta, indiquen que ningú ho ha manipulat, fem el xifratge i enviem el paquet, que fa la
integritat si tot està ben calculat perfecte, sinó dona problema. Si tot va bé, ofereix autenticitat,
que nomes la pot calcular l’emissor, si la verificació es correcta, el receptor pot estar tranqui de
que no hi ha modificacions.
El mode CCMP es basa en el counter mode, i usa el CBC per anar encadenant les dades per a
tindre un codi d’autenticació, llença a la brossa el RC4 i es basa en el criptosistema AES. No es
compatible amb dispositius vells.
Ja hem vist el WEP i els dos tipus de WPA. Ara toca WPA3, però per entendre’l, hem de saber
quins atacs es produïen al WPA2:
El que estem mantenint en tot cas es el AES i el TK, el que fa variar es el InitCounter, hem de
tornar a reiniciar el comptador, si aconseguim els missatges, si fem tornar el comptador a l’inici,
podrem obtenir les sequencies. Si tornem de t a 0, podrem fer inicialització, repetint les s, per
tant, podríem fer un bucle on nomes tenim les t sequencies, si sabem el missatge en clar, podem
agafar i trobar les s i tornar a tindre una sequencia entre el numero de trama i la sequencia
associada, cada t trames torno a iniciar, que vagi de 1 a t, on controlem el subconjunt. Aquest es
un possible atac.
- La clau PMK = PBKDF(password (contrasenya del wifi), ssid, ssidlength, 4096, 2048).
- A partir d’aqui fem interaccions per aconseguir el A-NONCE i S_NONCE.
- Ara obtenim una PTK = PRFHMAC_SHA1(PMK, A_NONCE, S_NONCE, @MAC_CLIENT,
@MAC_AP)
- De la PTK deriven un seguit de claus, KCK, KEK, i TK.
- Si volem un MIC, es una part de integritat i autenticitat, perquè si es correcte no està
modificat i si es correcte vol dir que l’altre part coneix la contrasenya. Ens autentiquem.
MIC=HMAC(KCK, payload).
Si volem capturar la contrasenya, hi ha una part inicial de negociació i després una altra part de
transferència de dades xifrades.
- Negociació: es on negociem i tenim les claus: KEK, KCK, TK. Si hi ha dos estacions que
s’estan comunicant i arribem mes tard i ens afegim, si hem fet la fase de negociació l’únic
que veiem es dos entitats intercanviant missatges xifrats. Per trobar la TK necessitem fer
un atac de força bruta, el necessari com atacant es poder obtenir els missatges que
s’intercanvien a la fase de negociació.
- Per tant, fem una connexió, com a atacant, entre les dos entitats, A i B, que s’estan
comunicant, quan arriba C emet un senyal de forma que interromp la connexió, de forma
que les estacions A i B han de tornar a negociar, en aquest punt, l’atacant captura el
A_NONCE, calcula el S_NONCE, sap la @MAC_client i la @MAC_AP, payload, ssid, i
calcula el MIC=HMAC(KCK, payload). Quan tenim la informació, amb el hashcat o
qualsevol programa podem fer un atac de diccionari.
Sobre el WPA3, tenim un password, usat amb el SAE, on fem la autenticació del punt d’accés. La
resistència s’aconsegueix amb el DH o dragonfly handshake. El resultat del DH genera una PMK,
que s’usa en un handshake de 4 vies usat en l’esquema del WPA2.
PMK = PBKDF(password, ssid, ssidlength, 4096, 256), això es el que teníem, ara en WPA3, en lloc
de la contrasenya, fem servir un DH:
DH -> (password), l’atacant no pot obtindre el password fent un atac de força bruta. Es l’únic
canvi, per altra banda, es igual que el WPA 2.
DH o diffie hellman permet crear una clau de sessió, hi ha dos parts A i B, que tenen una
comunicació en un canal insegur, no comparteixen cap contrasenya, i al acabar poden establir
una clau de sessió o clau secreta. El problema està relacionat amb el logaritme discret.
Las redes inalámbricas transmiten datos a través de ondas de radio, que se pueden interceptar
rápidamente a menos que haya seguridad. WEP fue el primer intento de protección inalámbrica.
WEP cifra el tráfico con una clave hexadecimal de 64 o 128 bits, estatica, por lo que todo el trafico
se cifra con la misma clave, sin importar el dispositivo. El objetivo del WEP era evitar los ataques
de MiM, aunque aun aumentando el tamaño de clave, se acabaron detectando deficiencias.
WPA para reemplazar WEP, ofrece mejoras en gestión de claves de seguridad y autorización de
usuarios, aquí tenemos un protocolo de integridad de clave temporal TKIP, que cambia
dinámicamente la clave que usan los sistemas. Posteriormente se cambió TKIP por AES. Ahora,
las claves eran de 256 bits, pero no, aun habían vulnerabilidades.
WPA2 en 2004 como versión mejorada, este funciona de dos modos, personal o PSK, que se basa
en un código de acceso compartido y generalmente en entornos domésticos, y modo
empresarial o EAP que es mas adecuado en empresas, usan CCMP, que es un protocolo de
encadenamiento de bloques cifrado en modo contador, se basa en AES, que proporciona
autenticidad e integridad. Pero es vulnerable a ataques de reinstalación de claves KRACK,
obligando a conectarse a una red maliciosa.
Hem vist protocols a nivell d’enllaç, anem constantment modificant protocols, ara veurem els
que son a nivell de xarxa, tenim el protocol d’autenticació AH, afegim una capçalera per garantir
que una vegada enviat no es pugui modificar, i si s’ha modificat, que ho detectem. Amb el ESP
tenim confidencialitat, i a més, integritat i autenticitat.
Els Operating modes tenim dos, mode transport de maquina a maquina i el mode túnel es per a
fixar dos punts, s’encapsula la informació en un costat, i s’envia, la part difícil es saber en quins
casos ens convé usar un o un altre protocol.
Hi ha dos protocols:
DADES PROVA
HEADER AH DATA
- En el cas de ESP, tenim confidencialitat, i les que teníem abans, integritat i autenticitat.
Aqui amb les nostres dades, aquí ja fem un xifratge, tenim dades xifrades, i hi haurà una
prova amb les dades xifrades, la prova dona integritat i autenticitat, i el xifratge
confidencialitat.
Tindrem unes claus per enviar de A a B, i unes claus diferents per a fer-ho de B a A, una per cada
sentit.
i. AUTHENTICATION HEADER AH
El AH esta en el nivell 3, afegeix una capçalera entre les dades i la IP. El que fem es agafar una
nova capçalera que afegim, primer tenim:
- El seguent headers.
- El payload, la longitud.
- El SPI, cada sentit de comunicació ha de tindre la seva clau.
- MAC: parlem de hash, el que fa es autenticar i garantir la integritat. Fa una HASH amb
la clau. Quan fem la HMAC amb les capçaleres IP:
o MAC=HMAC(Header fields, dataIP, K).
- L’atacant sap el headers i el dataIP, l’únic que no sap es la k, que nomes el coneix l’emissor
i el receptor de la claus simètrica.
La part de integritat i autenticitat, la primera vol dir no alteració, i la autenticitat demostra qui
ho ha calculat.
El que fa, a més de lo anterior, es encriptar les dades del datagrama IP, per assolir
confidencialitat. La part de la IP la hem de mantindré, i després tenim una capçalera ESP que
indica el SPI i el numero de sequencia. I una part de la prova (Authentication ESP).
Quins modes hi ha, hi ha dos modes possibles, en el cas del transport, la capçalera no està
modificada.
Transport Túnel
Dos maquines es comuniquen.
Usem clau simètrica
1. TRANSPORT
Tenim les nostres trames i li afegim una capçalera, que el que farà serà afegir integritat i
autenticitat. Pero podem mantenir la part del headers i les dades en sí. Envoliquem la caixa.
2. TUNNEL
Aqui el que tinc es una nova capçalera on col·locarem tota la part de dades
HEADER DATA
Tenim una nova trama que tindrà la capçalera i la part de dades, que té l’anterior i la part del AH.
Si fem la del ESP, hi haurà un nou headers:
Aqui hi ha un exemple, si tenim una seu a Tarragona i una altra seu a Reus, llavors, a Tarragona
hi ha moltes maquines, a Reus també, hi ha dos routers, i establim una comunicació entre Reus
i Tarragona, quan un paquet A el vol enviar a una maquina B, el paquet arriba al router, tenim un
paquet:
En WEP i WPA, si la contrasenya es patètica, podem trencar amb atacs de força bruta alPMK,
degrada la connexió i fa atacs de força bruta.
A nivell d’enllaç, el protocol s’aplica a les maquines a nivell de subxarxa, quan tenim diferents
dispositius o maquines, el protocol es comunica amb les maquines que son dins el rang que ens
permet el protocol de comunicació.
Quan parlem del protocol de xarxa, hem comentat que hi ha varies subxarxes i maquines, amb
routers, i que teníem una connexió segura d’extrem a extrem, i establim una connexió
seguritzada d’una maquina a l’altra, qualsevol que escolta no ha de ser capaç de obtindre la
informació que compartim. Si a la maquina B hi ha varis serveis, un cop hi ha comunicació segura,
una seguritzacio a nivell de xarxa, si la maquina B té serveis, ens dona igual, qualsevol paquet és
segur. Nivell 3, ja podem estar a nivell 4 o 5, que estem segurs.
Si parlem del nivell de transport o TLS, o també conegut com a transport layer Secure, això té
una mica d’història. La web va ser desenvolupada sobre el 1990 i a partir del 1994 vam tindre
correus electrònics... doncs el NetScape, que era el navegador, volia connexió segura, van fer el
SSL, el predecessor del TLS, a partir de la tercera versió, arribem al TLS.
i. CHARACTERISTICS
Hi ha una primera part, el handshake, on hi ha una negociació o establiment de claus, que es fan
amb criptosistemes de clau publica, obtenint un seguit de claus que s’usen per xifrar informació:
confidencialitat, i després unes claus que ens proporcionen autenticitat i integritat. També hi
ha una part d’autenticació, per part del servidor i el client. Es basa en criptografia asimètrica.
L’objectiu principal es poder establir un canal de comunicació segur entre dos parts,
proporcionant les tres propietats anteriors, entre client i servidor. Assumim que les capes
anteriors ja ens proporcionen un servei fiable, ja que el TLS es basa en TCP, es a dir, orientat a la
connexió.
Totes les versions del TLS incorporen un mecanisme que permet als clients i als servidors
negociar la versió de protocol que es vol usar, i també els algoritmes. Hi ha diferents tipus de
clients, PCs, tablets, mòbils, sensors, la potença de càlcul de cadascun es diferent, i els factors
son la potencia, la versió de sistema operatiu... per lo que cada element suporta diferents
criptosistemes o primitives criptogràfiques, per tant, hem de negociar. El servidor haurà de
tindre una amplia disponibilitat de primitives o criptosistemes, i al client, hem d’assumir que
tingui un ventall més reduït de primitives criptogràfiques, de forma que a la negociació, es el
servidor el que s’amolla.
En el cas del TLS, sempre s’autentica el servidor, i el client es opcional. La part de confidencialitat,
tenim un canal segur una vegada establerta la connexió, tenim extrem a extrem. Finalment, la
part d’integritat, un cop tenim establerta la connexió, a les dades afegim una prova, si es correcta
dona garanties de integritat i autenticitat, ja que la prova es calcula amb una clau k.
Al handshake, negociem paràmetres com mode de clau simètrica, asimètrica, compressió, mida
de claus, funció de hash...
Quan el client envia els 32 octets, envia el NONCEcs, i el servidor emet al client els 32 octets,
NONCEsc, el client al servidor, xifra la clau publica, el secret_pre_mestre. El xifratge del client al
servidor, pel xifratge del servidor al client.
Verifiquem: KDF(NONCEcs, NONCEsc, pre-mestre) -> claus, el KDF pot calcular-ho el client
perquè ho coneix tot, però el servidor pot? Si coneix la clau privada pot desxifrar el client key
Exchange i obtindre el secret premestre, per tant, calcular el KDF. Si el servidor obté les claus, si
el servidor pot respondre correctament els missatges del client, vol dir que ha pogut desxifrar el
paquet “Client Key Exchange”, per tant, disposa de la clau privada corresponent a la publica que
conté el certificat, es a dir, es qui diu ser.
Els modes que no son segurs els eliminem, i tornem a posar el DH. La part d’autenticar-me es fa
amb signatura digital.
Hi ha menys missatges.
Sempre que volem una connexió segura entre dos serveis, es molt còmode el TLS, autenticació
via login i password, es TLS. El concepte de end to end es molt important, assegura entre dos
serveis, usant TCP amb el 443 port. Hi ha sistemes de tallafocs que comproven si la informació
es correcta i està ben construïda, si això ho fes el servidor, hi hauria més cost. Hi ha dos xifrats,
de vegades es trenca la connexió TLS.
Amb el diffie hellman del client i el del servidor, i els dos NONCEs, podem obtindre les claus, que
son sempre diferents. La part del certificat i la signatura em serveixen per l’autenticitat.
Hem usat SSH, podem fer transaccions segures, es pot obrir una consola, intercanviar arxius,
podem fer túnels... Es fa entre maquina i maquina o entre servei i servei. Estem securitzant un
servei. Quan usem SSH? Per establir una connexió segura en una consola, per a fer
transferències, i per a crear túnels.
- Establiment de la connexió en el port 22, amb els tres primers passos SYN, SYN+ACK, i
ACK.
- Fase de negociació amb pas de paràmetres, versió, paràmetres, funcions de hash. Aqui
hi ha una part de negociació de primitives i autenticació, demostro que som usuaris
legítims.
- Podem enviar les dades, al servidor, a la consola, o al túnel.
Negociació: enviem el paquet que indica la versió i paràmetres com a servidor, el client respon
amb les versions que suporta i escull la més alta possible, i s’acorda. Obtenim les claus.
- Els 16 octets que s’envien ara son equivalents al NONCE, son els valors pseudoaleatoris
que s’usen en cada connexió i que s’usen per calcular les claus simètriques, i s’usen en
comunicació segura. Integritat i autenticitat.
- Algoritmes MAC, que son els que asseguren integritat i autenticitat.
- Algoritme de compressió.
- Llista d’algoritmes per a la comunicació del servidor al client.
El servidor al client, fa el mateix, tenim una cookies amb el NONCEsc, amb 16 octets
pseudoaleatoris... la llista de algoritmes que van en algun sentit i amb el sentit invers. I els hi
passem els valors d’aquí, els NONCEs, que son les cookies. Intercanvi de NONCEs.
La negociació de paràmetres, la part dèbil es la part del client, el que fem es servir algoritmes
que estan mes alts a la llista de preferències, escollim la que ell té com a prioritària. La part
d’intercanvi de la clau publica depèn de la implementació.
Un cop ens hem connectat, hem negociat, tenim els NONCEs, ens hem autenticat, ara ja podem
enviar les dades.
i. HOW IT WORKS
ii. EXAMPLE OF THE CREATION OF A TUNNEL
f. APPLICATION SECURITY: SECURE E-MAIL IN APPLICATION LAYER
Correu electronic segur amb el SMIME. En el cas del correu electronic segur volem propietats de
confidencialitat extrem a extrem, quan enviem un missatge amb un correu es com enviar una
postal, hi ha punts on el missatge es guarda i l’administrador el pot llegir, i si el podem posar amb
un sobre tancat, hem de xifrar-lo per aconseguir una confiencialitat extrem a extrem.
La clau del missatge amb simètric, i les claus de cadascun amb asimètric. Sempre que signem,
adjuntem el certificat i la cadena de certificació, de forma que obtenim el certificat, el validem a
partir de la cadena, i obtenim la clau publica.
Podem tenir casos que permeten als usuaris llegir sense descarregar, mitjançant una web.
i. CONFIDENTIALITY
No es suficient protegir només els enviaments amb IPSec o SSL/TLS, necessitem xifrar des del
moment que s’envia fins que es rep. Necessitem confidencialitat end-to-end.
Necessitem que la informació sigui integra perquè si esta en clar pot ser manipulada o
modificada. Un transmissor deshonest pot introduir informació falsa, hem de signar un missatge
digitalment per a assolir autenticitat i no repudi, i a més, xifrem. Han de ser signats digitalment.
La solució es escriure el correu, signar-lo digitalment i xifrar-lo, amb un sobre digital, per a
garantir-ho tot.
Si volem diferents receptors, no necessitem xifrar n-cops la informació, sinó que xifrem la clau
simètrica amb la publica dels destinataris. Tambe es bona pràctica que nosaltres ens posem al
CC o carbon copy, perquè sinó, aquest missatge i més tard, el volem llegir, no ho podrem, com
ho podem obrir, necessitem les claus.
Mètode alternatiu, els certificats digitals estan signats per altres usuaris, genera més confiança,
es mes distribuït.
Sobre digital:
- Hash(m)=h
- RSA(PrvI,h)=s
- M’=m||s;
- Obtenim una clau de sessió k d’un criptosistema simètric, xifrem m amb la clau k.
AES(m)=c.
Los pasos como antes, ahroa, si queremos enviar un criptosistema distinto a cada persona, no
hace falta que cifremos dos veces, hacemos para obtenir c2 con publica Judit y c3 para enviar
con clave publica a Ines. Se envia c1, c2 y c3, con la clave publica de Ismael. HI ha metainformacio
que indica el que esta xifrat amb que. Para abrirlo, cada uno abre su propio sobre.
Funcions de hash que podem fer servir: SHA256, SHA224, SHA1, SHA512.
Criptografia asimètrica
• El càlcul del CRC s’ha substituït per la sortida d’una funció de resum criptogràfica
coneguda (SHA256) que es calcula a partir de les dades que es volen enviar “M” i una
clau KI.
• Les dades es xifren amb el criptosistema AES amb el mode OFB i una clau K C de 256
bits.
o W: adreça MAC estació origen || adreça MAC estació destí. Concatenem les
adreces MAC de les estacions origen i destí.
No millora la integritat perquè utilitzem una clau K I que pot ser calculada per un atacant. La
confidencialitat ha estat millorada perquè el IV és de 128 bits.
Millora la integritat perquè utilitzem una clau KI que només coneix l'emissor i el receptor del
missatge. No millorem la confidencialitat perquè IV es calcula a partir de la funció criptogràfica
MD5 que no és segura.
No millora la integritat perquè utilitzem una clau K I que pot ser calculada per un atacant. No
millorem la confidencialitat perquè el nombre de seqüències de xifratge diferents al llarg del
dia no és prou gran.
Millora la integritat perquè utilitzem una clau KI que només coneix l'emissor i el receptor del
missatge. També es millora la confidencialitat perquè ara la mida del IV és de 128 bits.
Una empresa especialitzada en la instal·lació i recollida de dades de sensors ofereix els seus
serveis a ciutats i grans complexos industrials. Els seus sensors poden mesurar la llum, humitat,
temperatura, contaminants (CO, NO2, O3, etc…), velocitat de l’aire, UV, etc…
Aquest sensors es poden instal·lar agrupats o distribuïts en un zona reduïda. Cada sensor envia
les seves dades a través d’una connexió física a un dispositiu anomenat concentrador de dades.
Aquest, cada cop que rep una dada l’envia mitjançant 5G al Cloud on hi ha diferents servidors.
Per cada entorn i/o dades a enviar els requisits de seguretat són diferents, i per tant les
tecnologies a utilitzar. Per exemple, en un entorn urbà ens pot interessar que les dades siguin
íntegres i autèntiques. En un entorn industrial les dades són sensibles i si una empresa
competidora hi té accés pot deduir informació sobre la producció.
L’empresa té un projecte en un complex industrial on recull dades dels sensors: S1, S2, S3, S4 i
S5. Les dades de S1 i S2 corresponen a dades climàtiques, les de S3 i S5 a producció, i les de S4
són de contaminació. Totes les dades s’envien a un mateix servidor que executa tres
aplicacions. La primera aplicació escolta pel port 47325 i espera rebre dades en clar de S1 i S2.
La segona escolta pel port 35121 i necessita les dades de S1, S4, i S5. Finalment, la tercera
aplicació empra el port 63121 i utilitza les dades de S1 i S3. Les aplicacions reben les dades en
clar (sense cap mena de protecció). Defineix quines són les propietats de seguretat que cal
garantir en aquest projecte i quina tecnologia o tecnologies de comunicació segura empraries
per garantir-les entre el concentrador de dades i el servidor. Detalla la teva resposta
Tenint en compte que hi ha tres aplicacions (serveis) el més eficient és una solució a nivell de
xarxa com és IPSec. El protocol hauria de ser ESP perquè cal garantir la confidencialitat. Cada
concentrador establiria una connexió en mode transport amb el servidor que executa les
aplicacions (serveis). La connexió seria segura des del concentrador fins al servidor de
l'empresa que està al Cloud. No caldria modificar les aplicacions.
Donades les restriccions sobre les aplicacions desenvolupades la millor opció és utilitzar tres
túnels SSH. Al servidor que executa les aplicacions s'instal·larien tres serveis SSH. Cada servei
enviaria les dades que rebi pel túnel a un port tcp (tcp 47325, 35121, 63121) o servei concret.
A cada concentrador s'executaria tres clients SSH. Aquests encapsularien la trama tcp dins un
paquet que enviaria al servidor SSH. El servidor SSH recuperaria el paquet original i el faria
arribar al servei tcp que s'hagi configurat. Les respostes seguirien el camí invers.
Tenint en compte que hi ha tres aplicacions (serveis) el més eficient és una solució a nivell de
xarxa com és IPSec. El protocol hauria de ser ESP perquè cal garantir la confidencialitat. Cada
concentrador establiria una connexió en mode túnel amb el router del Cloud. La connexió seria
segura des del concentrador fins al router de l'empresa que està al Cloud. No caldria modificar
les aplicacions.
Tenint en compte que hi ha tres aplicacions (serveis) el més eficient és una solució a nivell de
xarxa com és IPSec. El protocol hauria de ser AH perquè cal garantir la integritat i l'autenticitat.
Cada concentrador establiria una connexió en mode transport amb el servidor que executa les
aplicacions (serveis). La connexió seria segura des del concentrador fins al servidor de
l'empresa que està al Cloud. No caldria modificar les aplicacions.
Tenint en compte que hi ha tres aplicacions (serveis) el més eficient és una solució a nivell de
xarxa com és IPSec. El protocol hauria de ser AH perquè cal garantir la integritat i autenticitat
de les dades. Cada concentrador establiria una connexió en mode túnel amb el router del
Cloud. La connexió seria segura des del concentrador fins al router de l'empresa que està al
Cloud. No caldria modificar les aplicacions.
Donades les restriccions sobre les aplicacions desenvolupades per l'empresa la millor opció és
utilitzar tres túnels SSH. Al router que està al Cloud s'instal·larien tres serveis SSH. Cada servei
enviaria les dades que rebi pel túnel al servidor i port tcp (tcp 47325, 35121 i, 63121) o servei
que correspongui. A cada concentrador s'executarien tres clients SSH. Aquestes encapsularien
la trama tcp dins un paquet que enviaria al servidor SSH. El servidor SSH recuperaria el paquet
original i el faria arribar al servei tcp corresponent. Les respostes seguirien el camí invers.
Només cal securitzar tres serveis (tcp 47325, 35121 i, 63121) de manera que la millor opció és
incloure el suport TLS (v 1.3) a cada aplicació. El concentrador establirà una connexió segura
(confidencialitat, integritat i autenticitat) amb cada servei. Hi ha moltes llibreries que
implementen el TLS de manera que el cost seria baix.