Seguretat I Xarxes Magistral

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 51

SEGURETAT DE XARXES MAGISTRAL:

1. Avaluació

Tenim dos blocs, el 1 i el 2, de criptografia, pesa un 60%, i la segona part es de ciberseguretat,


cadascuna de les parts. Per poder seguir necessitem un 4. Fem la primera part, un 5, ens ho
treiem, si ens va malament la segona part, nomes recuperem la part suspesa.

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

La criptografia es l’estudi de les tècniques matemàtiques relacionades a l’aspecte de la seguretat,


la integritat, la confidencialitat, la autenticació i l’autenticació de les dades d’origen.

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:

- Confidencialidad: es a dir, que nomes l’emissor i el receptor puguin agafar i accedir a la


Información. A l’examen surt un enunciat amb una situació.
o Una farmàcia desenvolupa un nou fàrmac, l’equip de recerca comparteix els
avenços per correu electrònic, es important la confidencialitat? El correu
electrònic la proporciona? Quan enviem el correu sabem que nomes el llegeix el
receptor? Quan enviem un correu, es com si enviem una postal. Si el configurem
be i la connexió es xifrada fins el servidor de correu vale, però un cop la
comunicació es al servidor de correu, si algú talla, el pot llegir. Típicament un
correu no assegura una confidencialitat end-to-end, si estem canviant
informació, aquesta té valor? Si, doncs hauria d’anar xifrat.
- Integritat: Ningú es capaç de modificar la informació sense que una de les parts se
n’adoni. Volem que cap de les parts modifiqui la informació, hem de verificar-ho. Si envio
un correu i la Montse es capaç de modificar-lo malament.
o Anem al supermercat a comprar una caixa de galetes, a vegades va coberta de
paper, per a que ningú agafi.
o En l’exemple de la farmàcia, es molt important la integritat, no podem modificar
informació important.
- Autenticació: volem saber d’aquest missatge qui l’ha enviat, l’emissor.
o En l’exemple de la farmàcia, es important, ve algú de fora i envia un missatge i
ens ho creiem.
- No-repuding: si una de les parts s’ha compromès amb una cosa, no se’n pot enpanadir.
Si ens han de pujar la nota, s’ha de complir. Hi ha un compromís.

La confidencialitat s’aconsegueix amb el xifratge, i la resta típicament s’aconsegueix amb la


signatura digital.

La esteganografia, si transformem un missatge de forma que un atacant no es capaç de veure el


contingut de la informació, aquesta acció l’amaga dins d’un altre missatge, passa desapercebut.
Intenta amagar el contingut d’informació per a amagar la existència de les dades.

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.

ii. Fundamentals of cryptography

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...

Plaintext o missatge original, despres parlem de la clau k i farem processos de xifratge on


obtenim un criptograma. Missatge en clar -> xifratge -> criptograma. El proces invers es el
desxifratge, haurem de fer el desxifratge. Es com encriptar o desencriptar.

El principi de Kerckhoff’s, si ningú sap el mètode de xifratge, es completament segur? A la


historia cada cop que algu ha fet el seu mètode de xifratge, sempre l’han trencat. Aqui hi ha el
mètode de xifratge, s’ha d’examinar, si ningú troba cap debilitat es segur, sinó, l’hem de deixar
estar. L’únic que ha de ser secret es la clau o contrasenya.

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.

Seguretat del criptosistema:

- La incondicional es, malgrat les limitacions de poder de càlcul, allò no ho podrem


trencar. La sèrie de Bernal, tenim una clau que te la mida igual o mes gran que lo que he
de desxifrar, fem un missatge amb la clau, la clau es igual o mes gran que el missatge,
trencar això es segur, pot ser qualsevol cosa la clau, pot ser aleatòria, construïda... Si
cada missatge ha de generar una clau... no es molt rendible. Al final acafem mètodes
que no son tan segurs però mes eficients.
- Condicional: la seguretat depèn en el temps per les restriccions o el poder del
criptoanalista. La seguretat es computacional, arriba un dia que deixaran de ser segurs.

Els atacs, coneixem:

- Attack using only ciphertext: Text xifrat: intentem trencar el codi.


- Attack using known plaintext: trenquem el text en pla també. Un pdf, alguna vegada
hem obert dins el pdf? Sol tindre una capçalera que es igual, per tant, si jo intercepto un
missatge de pdf xifrat, sabem que la primera part es aquest missatge. La primera part es
suficient per trencar, tenim el criptograma, el text en pla, i intentem buscar la clau.
- Attack using chosen plaintext: agafem i escollim quin criptograma usar. Escollim.
- Attack using chosen ciphertext: agafem i coneixem el text en clar, enviem per xifrar un
missatge, escollim el criptograma que volem desxifrar.

Amb la clau publica o asimètrics, la clau es diferent.

- Xifratge de bloc: tinc un missatge m1m2m3m4 i llavors tenim el criptosistema, li passem


la clau, i aquí obtinc. Tenim un missatge, que l’acabo partint en mida de bloc unitats, si
un missatge no es proporcional a la mida de bloc, no el podré xifrar. Nosaltres en el
nostre sistema fem un seguit d’anotacions, substitucions, necessitem que hi hagi un bit
d’informació en cada posició. Si no tenim el bit, que posem, no podem processar-ho. Els
de bloc, necessitem que sempre hi hagi un missatge múltiple de la mida del bloc.
Guardem dades al núvol... enviem un correu electronic. Es algo constant. Agafem els
sistemes de bloc per a convertir-los en de flux. ICE es de bloc, amb CTR el convertim en
flux.
o El DES té una mida de bloc de 64 bits, el AES de 128 bits, al xifrar tenim una mida
de 64, 128, 192...
o El farciment, quan un missatge la mida no es múltiple es un farciment, aquest
ha de ser aleatori o deterministic? Si volem xifrar un pdf... quan xifrem posem
els bits, quan desxifrem hem de saber adivinar que es missatge de que no es, si
afegim bits aleatoris no es compleix, si es deterministic, si que podríem desxifrar.
o La mida del missatge ha de ser multiple de la mida de bloc.
o Quan no ho es, usem el farciment, que es deterministic, per a ser capaç
d’identificar que es missatge de que no es.
- Xifratge de flux: es tan difícil com que tenim una clau, usem un criptosistema, el que
sigui, i obtenim una sequencia de xifratge, fem missatge ... un criptograma. Ens importa
si el missatge es 1 bit, o un tera... no, tenim informació, la xifrem i la enviem.
o En telecomunicacions, usem de bloc o flux. A mesura que tenim, a mesura que
enviem enviem, es de flux, no sabem quant tarda el missatge. Un telèfon movil...
o Amb flux usem la clau per obtenir una sequencia, amb la sequencia usem la xor.
o Per desxifrar, missatge xor i obtenim la sequencia.

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:

𝑚 𝑒 𝑚𝑜𝑑 𝑝 = 𝑒 ∗ 𝑑 𝑚𝑜𝑑 ∅(𝑛) = 1; ∅(𝑛) = (𝑝 − 1)(𝑞 − 1) → 𝑛 = 𝑝 ∗ 𝑞


Si coneguem la p y la q es molt fàcil, però si no ho tenim, es molt complicat.

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.

Si la sequencia es imprevisible, i cada 16 bits es repeteix, es dolenta depenent el missatge, si es


de 2^k bits? Està be la sequencia? Es imprevisible, però no es tan gran.

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.

𝐴𝐸𝑆𝐾 (𝑚1) = 𝑐1 (...) així es representa realment.

El receptor, fàcilment, agafa i els desxifra.

- 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.

També es pot fer una XOR entre el missatge i el salt.

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:

- Propagacio d’error -> els encadeno.

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.

I amb la clau k, xifrem per obtindré c1.

Agafem m2 i fem ...

Comença per m1’.

Per enviar, que s’envia? Enviem el IV, el c1, el c2 i el c3.

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

𝐴𝐸𝑆𝐾−1 (𝐶′′ ) = 𝑔𝑎𝑟𝑏𝑎𝑔𝑒; 𝑔𝑎𝑟𝑏𝑎𝑔𝑒 𝑥𝑜𝑟 𝐼𝑉 = 𝑔𝑎𝑟𝑏𝑎𝑔𝑒

De forma que farem una xor amb IV = garbage.

Si fem el mateix amb c2:

𝐴𝐸𝑆𝐾−1 (𝐶2′ ) = 𝑚 ′ 2 = 𝑚2 𝑋𝑂𝑅 𝑐1 𝑋𝑂𝑅 𝑐 ′ 1 = ?


Que es ?, la resposta es que tindrem un bit erroni, perquè el c1 prima te un bit erroni, tinc m2 i
c1 perfectes, però al fer la XOR hi ha un bit d’error a c1, que equival a un bit d’error a m2.

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

L’AES amb la clau k i l’IV, per xifrar, i per desxifrar:

𝐶1 𝑋𝑂𝑅 𝑆1 = 𝑚1

I la resta es igualment el mateix:

𝐴𝐸𝑆𝐾 (𝐶1) = 𝑆2
𝐶2 𝑋𝑂𝑅 𝑆2 = 𝑚2
𝐴𝐸𝑆𝐾 (𝐶2) = 𝑆3

𝐶3 𝑋𝑂𝑅 𝑆3 = 𝑚3

OCB es bo però si un bit mal ens caguem.

TCB si perdem un bit ens recuperem-

Molts errors però no perdem bits OCB

TCB si perdem bits.

CTR es senzill.

d. Public key encryption

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.

Dintre de la criptografia trobem dos tipus:

- 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.

Si agafem qualsevol dels sencers, tindrem que a = qb + r, on q es quocient, i r es residu. Una


operació que usarem moltíssim es a mod b = r, per indicar la divisió és a div b = q.

Parlem de que un sencer c es un comú divisor de a i b si aquesta c divideix tant a com b.

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:

62/24 -> q=14; r=2; diem que el mcd(62,24) = mcd(24,14); Iterem:

24/14 -> q=10; r=1; diem que el mcd(24/14) = mcd(14,10); Iterem:

10/4 -> (...); diem que el mcd(10/4) = mcd(4/2);

Aixi es calcula de forma molt fàcil i ràpida.

Exercici 1: Computar la factorització dels següents integers:

- 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

Al 1976 es va comentar el concepte de clau publica, tenim problemes:

- 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

Comencem la base de matemàtica, si tenim un conjunt de sencers, seran el conjunt Z, i un


numero a es divisor de b si existeix c que b = ac. Si a divideix b, llavors s’escriu a|b.

També, si a i b son enters on b > 1, a = bq + r.

C es un divisor comú de a i b si c|a i c|b.

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

El criptoanalista no pot computacionalment factible desxifrar la clau privada amb la publica. Si


algun usuari vol enviar un missatge xifrat, ha de agafar la clau publica i enviar el missatge xifrat
amb la clau publica a l’usuari B. El criptograma usa la clau privada per a veure el missatge.

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.

Que es un probable primer, que ha passat el test de probabilitat, i un pseudoprimer si es la


composició de primers. La probabilitat de que un numero sigui primer es de 1/log n.

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.

Tenim tres propietats:

- Si es primer, phi(n)=n-1-> 11 = {1,2,3,4,5,6,7,8,9,10}


- Si n = p*q, es resultat de dos primers multiplicats, doncs phi(n)=phi(p)*phi(q)
- Si n es un exponent, es el resultat de la potencia d’un primer: phi(p^k)=p^(k-1)(p-1)

Phi(80)=2^4*5=phi(2^4)*phi(5)=2^4-1*1*4.

Per calcular la phi de n necessitem calcular la factorització de n, si la tenim, es fàcil calcular-la.

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.

Como calculamos modulos mas facilmente?

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

Si g pertenece a un conjunto Zn, si el orden de g es phi(n), es generador o elemento primitivo. Si


Z tiene un generador, decimos que es cíclico.

Para un problema de generadores en Z23, primero calculamos el phi(23)=(n-1)=22 elementos.

- 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

𝛼 𝑥 𝑚𝑜𝑑 𝑝

El nombre d’iteracions = nombre de bits, el valor s marca el punt de partida.

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.

Fem pas a pas:

𝛼 = 37073
𝑥 = 19
𝑝 = 45887
𝛼 𝑥 𝑚𝑜𝑑 𝑝
3707319 𝑚𝑜𝑑 45887

X=19 Primer descomposem la x


X=1*2^0+1*2^1+0*2^2+0*2^3+1*2^4
X=x0 x1 x2 x3 x4
S=4, que es el màxim exponent
TOT = 1
i=4 Comencem les iteracions
x4=1 Si la xi=1, llavors fem TOT de alpha mod p
1*37037 mod 45887 = 37073 Com x4 = 1, calculem:
(TOT)^2 mod p = Si i != 0 llavors fem
(37073)^2 mod 45887 = 45792
i=3 No entrem al bucle, nomes s’entra si xi=1
x3=0 No fem el condicional, però si el segon si i !=
(TOT)^2 mod p = (45792)^2 mod 45887 = 0
9025
I=2 No entrem al primer condicional, si al segon
X2=0
9025^2 mod 45887 = 1200
I=1 Entrem al primer condicional, si xi = 1 llavors
X1=1 calculem (TOT * alpha) mod p
(1200 * 37073) mod 45887 = 23097 1r condicional
(23097)^2 mod 45887 = 35034 2n condicional
I=0 Ultima iteració
X0=1
(35034*37073) mod 45887 = 29834
(TOT)^2 mod p, però la i = 0.
37073^19 mod 45887 = 29834 si ho hem fet bé -> COMPROBACIÓ
En resum:

- Si xi = 1 llavors (TOT*alpha) mod p


- Si i != 1 llavors (TOT)^2 mod p

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ó.

EJERCICIO RESUELTO EN LIBRETA

12. ALGORITHM: Chinese remainder theorem

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.

Donades les a, podem trobar les x. Per a que ens serveix?

Si fem 𝑎𝑏 𝑚𝑜𝑑 𝑚, 𝑜𝑛 𝑛 = 𝑝 ∗ 𝑞, 𝑜𝑛 𝑝 𝑖 𝑞 𝑠𝑜𝑛 𝑛𝑜𝑚𝑏𝑟𝑒𝑠 𝑝𝑟𝑖𝑚𝑒𝑟𝑠, el nombre d’iteracions depèn


del nombre de bits de l’exponent, b. El valor de b va del 0, 1, ... fins a phi(n). Ja que:

𝑎𝑏 𝑚𝑜𝑑 𝑛 → 𝑎𝑝ℎ𝑖(𝑛)+1 𝑚𝑜𝑑 𝑛 = 𝑎


Qualsevol exponent, al final dona phi(n), el rang de valors va de 0 fins a phi(n).

𝑏𝑝ℎ𝑖(𝑛)+5 𝑚𝑜𝑑 𝑛 = 𝑏5 𝑚𝑜𝑑 𝑛

Ja que hem fet tota la volta. Si 𝑥 = 𝑎𝑏 𝑚𝑜𝑑 𝑛 i volem aplicar el teorema xinès: 𝑎𝑏 𝑚𝑜𝑑 𝑝 →
𝑎 𝑏 𝑚𝑜𝑑 𝑞, on b es un nombre molt gran:

𝑎 𝑏 𝑚𝑜𝑑 𝑝 𝑎𝑏 𝑚𝑜𝑑 𝑝ℎ𝑖(𝑝) 𝑚𝑜𝑑 𝑝 = 𝑧1, on p = 𝑥 = 𝑝 ∗ 𝑦 + 𝑧1 𝑝 ∗ 𝑦 + 𝑧1 = 𝑞𝑡 + 𝑧2


𝑎 𝑏 𝑚𝑜𝑑 𝑞 0, 1, ..., phi(p) 𝑥 = 𝑞 ∗ 𝑡 + 𝑧2 (𝑝 ∗ 𝑦 + 𝑧1)𝑚𝑜𝑑 𝑞
𝑎𝑏 𝑚𝑜𝑑 𝑝ℎ𝑖(𝑞) 𝑚𝑜𝑑 𝑞 = 𝑧2, on q = = (𝑞 ∗ 𝑡 + 𝑧2)𝑚𝑜𝑑 𝑞
|| || ((𝑞 ∗ 𝑡)𝑚𝑜𝑑 𝑞
+ (𝑍2)𝑚𝑜𝑑 𝑞)𝑚𝑜𝑑 𝑞
Sabent que 𝑝ℎ𝑖(𝑛) = (𝑝 − 1)(𝑞 − 1), sent p i q dos primers grans:

𝑝ℎ𝑖(𝑛) > 𝑝ℎ𝑖(𝑝) => (𝑝 − 1)(𝑞 − 1) ≥ (𝑝 − 1)


𝑝ℎ𝑖(𝑛) > 𝑝ℎ𝑖(𝑞) => (𝑝 − 1)(𝑞 − 1) ≥ (𝑞 − 1)
Assumim que el exponent a^b, el nombre de iteracions ha de ser > que el nombre de iteracions
de b mod phi(p/q). Fem càlculs d’algoritme d’exponenciació rapida amb b mod phi(p/q).

Donde z es izquierda superior, p divisor, z residuo, e y quociente. El valor multiple dona 0.


(𝑝 ∗ 𝑦 + 𝑧1)𝑚𝑜𝑑 𝑞 = 𝑧2 𝑚𝑜𝑑 𝑞 → (𝑝 ∗ 𝑦)𝑚𝑜𝑑 𝑞 = (𝑧2 − 𝑧1)𝑚𝑜𝑑 𝑞 → 𝑦
= (𝑧2 − 𝑧1) ∗ 𝑝−1 𝑚𝑜𝑑 𝑞.

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.

13. COMPUTATION OF INVERSES: INVERS MULTIPLICATIU

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.

𝑎𝑝ℎ𝑖(𝑛) 𝑚𝑜𝑑 𝑛 = 1, 𝑠𝑖 𝑓𝑒𝑚 𝑎𝑝ℎ𝑖(𝑛)−1 ∗ 𝑎 𝑚𝑜𝑑 𝑛 → 𝑡𝑒𝑛𝑖𝑚 𝑞𝑢𝑒 𝑎𝑝ℎ𝑖(𝑛)−1 ∗ 𝑎 = 𝑥 ∗ 𝑎 𝑚𝑜𝑑 𝑛


= 1; 𝑎−1 = 𝑎𝑝ℎ𝑖(𝑛)−1 𝑚𝑜𝑑 𝑛, 𝑜𝑛 𝑙𝑎 𝑚𝑖𝑑𝑎𝑑′ exp = # 𝑖𝑡𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑠.

Com que phi(11)=10, sabem 2 ∗ 2−1 𝑚𝑜𝑑 11 = 1 → 2−1 = 2𝑝ℎ𝑖(11)−1 𝑚𝑜𝑑 11 =


210−1 𝑚𝑜𝑑 11 = 𝟐𝟗 𝒎𝒐𝒅 𝟏𝟏 = 6, 2 ∗ 6 𝑚𝑜𝑑 11 = 12 𝑚𝑜𝑑 11 = 1
Per a la expressió en negreta, es pot calcular amb el multiply-squaring o TOT.

Si de un nombre x mod n, donde x es el conjunto Zn de este, por ejemplo, de 11 =


{1,2,3,4,5,6,7,8,9,10}, ya que phi(n)=phi(11)=10 valores, vamos probando xi, por cada valor, mod
n, nos dara un conjunto, si vamos haciendo sobre 11 ->
1^2 mod 11 = 1, 2^2 mod 11 = 4, 3^2 mod 11 = 9, 4^2 mod 11 = 5, 5^2 mod 11 = 3 ... y así hasta
el 10^2, y vemos que de los resultados, se compone de {1,3,4,5,9}, ese es el residuo cuadrático,
y los que faltan -> {2,6,7,8,10} son p-1/2=11-1/2=10/2=5 elementos cuadráticos y otros 5 no
cuadráticos. X^2 mod p = 3, si tenemos el 3 podemos encontrar la x, que puede ser el 5, o el 6,
esa sería la ecuación.

ii. Complexity Theory

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.

La teoría de complejidad analiza cuán difícil es un algoritmo, es un algoritmo de coste polinomial


si existe un entero d donde el nombre de operaciones para resolver el algoritmo es de orden
O(n^d), donde n es el tamaño total en bits de los datos del problema.

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.

Para medir, podemos usar una máquina.

- Una funcio es unidireccional si:


o Per cada elemento x, f(x) es fácil de calcular, y hay un algoritmo E que nos da el
resultado de f(x) al usar x, en un tiempo polinomial. Si tenemos la X -> f(x) = y -
> tiempo polinomial rápido.
o O cuando para los valores de y, no es factible encontrar la inversa de f(y), no hay
algoritmo con tiempo polinomial para encontrar la y. Pero si tenemos la y,
calcular la inversa f^-1(y) -> no hay ningún algoritmo.

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.

- Una función es puerta trampa unidireccional:


o Si conocemos una k, para las x, es fácil encontrar f(x).
o Pero sin saber la clave k, debe ser muy difícil encontrar 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.

- Clave publica: cifrar y firmar.


- Clave privada: Descifrar y verificar fácil si tenemos la clave.
1. Exponenciación
Té complexitat polinomial. La computació és de 𝑎 𝑥 𝑚𝑜𝑑 𝑝 = 𝑦, ens donen y, a i p -> 𝑦 =
𝑎 𝑥 𝑚𝑜𝑑 𝑝 → 𝑙𝑜𝑔𝑎 𝑦 𝑚𝑜𝑑 𝑝 → log 𝑎 𝑎 𝑥 𝑚𝑜𝑑 𝑝. El logaritme discret, calcular el valor de la x té un
cost subexponencial.

PROD: n = p*q, temps polinomial´.

FACTORITZAR valors molt grans, se basa en ElGamal, ∝𝑑 𝑚𝑜𝑑 𝑝 → 𝑙𝑜𝑔∝ ∝ 𝑚𝑜𝑑 𝑝 -> cost
subexponencial.

SQR cost polinomial.

iii. RSA Cryptosystem

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.

Per trencar hem de saber factoritzar la n, que es la multiplicació de p*q.

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?

- Escollim 2 primers grans i computem n = p*q.


- Agafem un valor aleatori e, que sigui major que 1 i menor que phi(n).
- Computem el valor de d, de forma que e*d=1 mod (phi(n)), on d=e^-1.
iv. ElGamal cryptosystem

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.

El segon pas es seleccionar un generador, que es aquell

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:

Calculem phi(p) = p-1 = t

El valor es descomposa en diferents valors, exemple:

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.

En el ejemplo del moodle:

El unico p que es possible es 9839, que es el unico primero.

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:

- != 0 porque el 0 no hace bien de clave secreta


- != 1
- != (p-1)
- Tiene que ser un numero aleatorio que esté en Zp però no sea esos tres casos.

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.

D -> 𝑙𝑜𝑔𝑥 ∝𝑑 𝑚𝑜𝑑 𝑝 = 𝑑, si el atacante resuelve esto facilmente encontrarà la d, calcular el


logaritme discret amb una d bastant gran es intractable, ens movem en 2048 bits
aproximadament.

En resumen:

- Escogemos un valor de p gran primer (2048b), donde p=2q+1.


- Escollir un generador Alpha, que pertany a Zp.
o Calculem phi(p)=(p-1), on obtenim els primers de p-1.
o Obtenim els primers, p1, p2, p3… de Zp.
o Escollim un valor Alpha que pertanyi i que no sigui 1 o 0.
𝑝ℎ𝑖(𝑝)
o Per cada pi mirem si es generador: ∝ 𝑝𝑖 𝑚𝑜𝑑 𝑝 ! = 1, si es compleix, es un
generador.
- Escollim la clau privada secreta d, el valor no es 0, no 1, ni p-1, i es valor gran de Zp,
nomes l’ha de saber el propietari de la parella de Claus.
- Calculem la clau publica, que es 𝑔𝑑 𝑚𝑜𝑑 𝑝 = 𝑦, 𝑜 ∝𝑑 𝑚𝑜𝑑 𝑝 = 𝑦.
2. Encryption and Decryption

Cifrar un valor con ElGamal


- Per escollir m: ha de ser mes gran que 0 i mes petit que p-1. El únic que ho compleix es
2025. 0<m<=p-1, 0<m<=9742.
- Escollim un valor k, que pertany a Zp, però que no es ni 0, ni 1, ni p-1, de forma
pseudoaleatoria, no es pot intuir de forma senzilla. Hem escollit el 4017.

Cada vegada que xifrem la k es diferent.

- Fem: ∝𝑘 𝑚𝑜𝑑 𝑝 = 𝑐1 -> 264017 𝑚𝑜𝑑 9743 = 8831


- Fem: 𝑚 ∗ 𝑦 𝑘 𝑚𝑜𝑑 𝑝 = 𝑐2 -> 2025 ∗ 87434017 𝑚𝑜𝑑 9743=1969
- Escribim el criptograma, que es (c1, c2) = c.

Hacemos ahora el problema de descifrage:


𝑘
Nos dan c1 y c2, però como c2 es 𝑚 ∗ (∝𝑑 ) , necesitamos el alpha. Nosaltres volem la m:
𝑑 𝑘
- 𝑐1𝑑 𝑚𝑜𝑑 𝑝 = 69966046 𝑚𝑜𝑑 7559 = 1654, que es (∝𝑘 ) 𝑚𝑜𝑑 𝑝 = (∝𝑑 ) 𝑚𝑜𝑑 𝑝
𝑘 𝑘
- 𝑚 ∗ (∝𝑑 ) 𝑚𝑜𝑑 𝑝 = 𝐶𝑎𝑙𝑐𝑢𝑙𝑒𝑚 𝑙 ′ 𝑖𝑛𝑣𝑒𝑟𝑠 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑡𝑖𝑢 → ((∝𝑑 ) )^ − 1 𝑚𝑜𝑑 𝑝, =
(𝑐1^𝑑)^ − 1 𝑚𝑜𝑑 𝑝 , 𝑓𝑒𝑚 𝑑𝑖𝑣𝑖𝑠𝑖𝑜𝑛𝑠 𝑐𝑜𝑛𝑠𝑒𝑐𝑢𝑡𝑖𝑣𝑒𝑠 𝑎𝑚𝑏 𝑙𝑎 𝑡𝑎𝑢𝑙𝑎. = 1010

- Calculamos m: m*y^k... ->

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.

Firma digital i verificarla: Si

, 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.

2. Cryptographic hash functions

En el caso de las funciones criptográficas de hash, queremos que sean funciones


unidireccionales, vamos de un conjunto hacia a otro, con los parámetros m y t. Tenemos un
conjunto de elementos posibles infinito y vamos a parar a un conjunto fijo. Asociamos una
cadena x de tamaño m a otra cadena con la funcion aplicada con tamaño t fijo.

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.

3. The birthday paradox

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.

t->dias del año.

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.

4. ADDITIONAL PROPERTIES OF HASH FUNCTIONS


Queremos la no correlación, que quiere decir que los bits de entrada y salida no deben tenir
ningun tipo de relacion. En DES o AES, solo que cambiemos un bit, lo que tiene que pasar es que
la salida es muy distinta, se puede comprobar, el valor hace iteraciones por lo que al cambiar un
bit cambia todo. Si con el m modificamos un bit y lo ciframos, c1 y c2 eran muy distintos.

Si hacemos un hash de m da h, y cuando hacemos hash de m’ con un bit de diferencia, da un


resultado totalmente distinto.

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.

vii. DES-Based Matyas Meyer Oseas hash

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ó

viii. USING HASH FUNCTIONS

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’.

ix. USUAL APPLICATIONS OF HASH FUNCTIONS


- Data integrity: para detector que los datos no han sido alterados. Algunos ejemplos
serian si tenemos un archivo, calculamos el hash y lo imprimimos o lo guardamos,
volvemos al cabo de una semana, si el hash es diferente, nos la están pegando, debe ser
igual. Nos tenemos que fiar de nuestro hash inicial.
- Data origin authentication: por el origen de los datos, es un tipo de autenticación, un
ejemplo seria coger y tenemos un mensaje y calculamos su hash correspondiente, el
hash si lo guardamos mas tarde lo podríamos guardar.
- Transaction authentication: en este caso, lo que queremos es proporcionar unicitat y
garantizar los datos. Un problema típico es que en un hash que cojo y envio, le ponemos
una fecha, en el hash ponemos el mensaje y un valor aleatorio. Nos interesan los casos
donde tenemos o usamos una clave k.
x. Data Integrity

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:

1- Para firmar, tenemos la clave publica (e,n), y la clave privada d.


a. Hacemos el hash de m -> h
b. H^d mod n = s
c. (m,s)
2- Para verificar, tenemos la clave publica (e,n). la signatura s, y el mensaje m.
a. Calculamos el hash(m), y nos da h’.
b. s^e mod n=h.
c. H es igual que h’?
i. Si lo es, la firma es correcta.
ii. Si no lo es, mal firmado, invalido.

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.

f. The digital envelopes

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:

- En RSA: m<n no.


- En ElGamal, con m < phi(p) no

Con la funcion de hash se soluciona, y con DSA tambien.

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.

Vemos los escenarios:


Escenario de confidencialidad
XIFRATGE
Ismael quiere enviar un mensaje a Judit, un mensaje de 12MBytes y solo queremos garantizar
que en el medio nadie pueda adivinar el mensaje, para hacerlo necesita tener la clave publica
de la Judit.
Tenemos el mensaje y la clave publica, que hará:
- Generamos una clave de sesión k de un criptosistema simétrico, como AES, de 128
bits.
- Ciframos el mensaje ‘m’ con la clave k, con el criptosistema y clave escogida.
AESk(m)=c1
- Ciframos la clave k con la clave publica de la Judit.
RSA (KpubJudit, m)=c2
- Envia c1 i c2 a la Judit
No ens importa la mida, es una operacio rápida sense limitacions del missatge m.
Com fem arribar la clau k, en verd, amb criptografía asimétrica. Finalment, enviem un paquet
amb c1 i c2 que conté la clau simétrica, segur que la clau k que el modul n, que es de 2048
actualment.
DESXIFRATGE
La Judit quan rep la información, com ho fa per desxifrar? La Judit té:
- La seva clau publica PubJudit
- La seva clau privada.
- Rep c1 i c2
Quins pasos farà?
1. Obtenim la k amb desxifratge de RSA.
- 𝐶1 = 𝐴𝐸𝑆 𝑘(𝑚)
- 𝐶2 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐽𝑢𝑑𝑖𝑡, 𝑘)
Per desxifrar c1 fa falta k, que es a dins de c2, com està xifrat amb la clau publica, necessitem
la clau privada, que la tenim, obrim c2 amb la clau privada i obtenim k, amb aixo podem
dexifrar c1 i obtindre el missatge.
Desxifrem amb RSA(PrivJudit, c2)=k -> on 𝒄𝟐 = 𝒌𝒆 𝒎𝒐𝒅 𝒏
Si xifro amb publica, desxifro amb privada.
2. 𝐴𝐸𝑆𝐾−1 (𝑐1) = 𝑚, per tant, al desxifrar obtenim el m. Aconseguim el missatge de forma
confidencial. Criptografia simétrica i asimétrica.
CIFRADO DE ISMAEL FIRMANDO
Que passa si l’Ismael vol mes coses, que tingui:
- Confidencialitat: ho aconseguim al xifratge clau publica privada.
- Autenticitat, Integritat, No repudi: lo conseguimos con la signatura digital.
Por lo que tenemos un mensaje de 12MB, Ismael se lo envia a Judit, Ismael conoce la clave
publica de la Judit (𝑃𝑢𝑏𝐽𝑢𝑑𝑖𝑡 ), Ismael o emisor vol que el receptor o Judit tingui la certeza de
que ha sigut ell qui ha enviat el missatge, per tant, el emisor ha de signar el missatge: per
signar, usem la clau privada del Emisor, usamos 𝑃𝑟𝑖𝑣𝐼𝑠𝑚𝑎𝑒𝑙 .
Qué hacemos? Teniendo en cuenta que usamos RSA tanto para Ismael como para Judit.
1. hash(m)=h.
2. RSA(𝑃𝑟𝑖𝑣𝐼𝑠𝑚𝑎𝑒𝑙 , h)=s. -> FIRMA
3. m’=m||s, m concatenado con s, usando XML…
4. Obtenir una clau de sessió k d’un criptosistema simètric.
5. 𝐴𝐸𝑆𝐾 (𝑚 ′ ) = 𝑐1
6. Ciframos con la clave publica receptor 𝐶2 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐽𝑢𝑑𝑖𝑡, 𝑘)
Ya tenemos c1 y c2, por lo que le enviamos c1 y c2 a la destinación.
RECEPCION DE JUDIT Y DESCIFRADO
Tenemos la clave publica y la privada y recibe c1 y c2. Pero cuando nos lo envían, como Ismael
ha hecho firma digital, no tenemos suficiente, Ismael debe enviar con el mensaje c1 c2 su
clave publica y su certificado digital. Sabiendo que:
- 𝐶1 = 𝐴𝐸𝑆 𝑘(𝑚)
- 𝐶2 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐽𝑢𝑑𝑖𝑡, 𝑘)

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?

CIFRADO CON DOS PERSONAS DESCIFRADO CON DOS PERSONAS


1. hash(m)=h La Ines, como no tiene la privada de Judit, no
2. RSA(𝑃𝑟𝑖𝑣𝐼𝑠𝑚𝑎𝑒𝑙 , h)=s. -> FIRMA podrá abrir c2,… es por eso que todo es
3. m’=m||s, m concatenado con s correcto, cada uno únicamente puede abrir el
4. Obtenemos una clave de sesión k de un suyo.
criptosistema simétrico como AES. 1. RSA(𝑃𝑟𝑖𝑣𝐼𝑛𝑒𝑠 , c3)=k
5. Ciframos el mensaje “m” con la clave k: 2. 𝐴𝐸𝑆𝐾−1 (𝑐1) = 𝑚′
AESk(m)=c1. 3. m’ = m|| s
6. Para Judit, ciframos: 4. hash(m)=h
𝐶2 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐽𝑢𝑑𝑖𝑡, 𝑘) 5. RSA(PubIsmael, s) = h’
7. Para Inés, no hace falta cifrar c1. 6. Verificamos si la h = h’, si si, es una firma
𝐶3 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐼𝑛𝑒𝑠, 𝑘) correcta, si no, es una firma inválida.

𝐶3 = 𝑅𝑆𝐴(𝑃𝑢𝑏𝐼𝑠𝑚𝑎𝑒𝑙, 𝑘)
8. Lo que hace Ismael es enviar c1, c2 y c3 y
su clave pública. Por ultimo tambien se envia
c4.

g. Public key infrastructure – PKI

Man In The Middle

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.

El es un intermediario que está aprovechándose de la informacion para desencriptar los


mensajes, porque el tiene la informacion correcta. El mensaje que se supone que nadie puede
leer, lo ha cogido el Ian y lo ha obtenido. Ha hecho creer al Alex que la clave publica fake es la de
la Laia.

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.

La simétrica es muy costosa, típicamente, la criptografía asimétrica no se usa en grandes


volúmenes de informacion, la asimétrica es para enviar la clave.

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.

Que encontramos en un certificado?

- Version: hi ha diferents versions de certificat, aquí parlem de x509 versió 3, es el que


bàsicament trobarem a la majoria.
- Serial Number: numero de sèrie per a identificar-lo. Ha de ser unic, es molt important.
Cada CA quan fa la emissió d’un certificat assigna un numero de sèrie unic.
- Algorithm and Parameters of the signature. Identificador de la signatura.
- Sending CA: el emissor.
- Not Before i Not after: períodes o temps de validació. Comentem que al 2022 els RSA
han de ser de 2048 bits, per motius de seguretat, el certificat es valid per un temps
concret, 1, 2 anys normalment, perquè molt temps perd seguretat.
- Subject: l’identifiquem amb el país, demana la regio, la provincia, la localitat, nom
d’empresa, el nostre nom, informació, si en lloc de demanar el certificat per un usuari,
fos una empresa, a common name hi hauria el domini.
- Algorithm: informació sobre l’algoritme que se usa.
- Parameters: necessitem algun tipus de informacion sobre la clau publica, es informació.
- Public Key: clau publica.
- Signature: va signat per la CA.

Tota la informació va signada.

ii. PKI Components

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.

iii. Trust models: PGP o Pretty Good Privacy

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.

iv. Keys And Certificate life circle

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.

Expliquem cada part millor:

1. Generació de claus:

El que fem es generar una parella 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:

En aquest pas el que fem es la RA:

- Verifiquem la identitat del subject.


- Verifiquem que el owner o propietari disposa de la clau privada corresponent a la clau
publica que hi ah a la petició de certificat.

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

Hi ha situacions on el nostre certificat té problemes:


- Les claus (privada) estan compromeses, virus, robament d’informació... tenim un
problema, no podem confiar en el certificat, es com si perdem les claus del pis, hem de
canviar el pany.
- Les claus les hem perdut, si tenim les claus a l’ordinador i hem perdut el disc dur, s’ha
perdut l’ordinador...
- Un canvi d’empresa, no podem signar en nom de la empresa si canviem.
- Hem promocionat.
- Hem canviat d’unitat.
- ...

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.

5. Passos per verificar una signatura, SUPER IMPORTANT


- A partir del certificat de l’Ismael CertiIsmael, obtenim qui es l’emissor, li preguntem a la
CA.
- Mirem si confiem en l’emissor buscant el CA al repositori.
- Obtenim el certificat de la CA que esta al repositori: certificat CA.
- Extreiem la clau publica de la CA que està al certificat de la CA.
- Validem la signatura del certificat de l’usuari: CertificatIsmael usant la clau publica de la
CA.
- El certificat ha caducat? Mirem el not Before i el not after.
- Mirem si ha estat revocat, la CA es responsable de garantir la validesa del certificat
donant el període. Aixo es mira amb el # de sèrie a la CRL o llista de certificats revocats
assignada per la CA.
- Verifiquem si els usos del signar certificat inclouen la acció e-mail que realitzem.
- Extraiem la clau privada del certificat de l’usuari.
- M->hash(m)=h.
- S -> RSA(PubIsmael,s)=h’ -> s^e mod n=h’
- H?=h’, si ho es, signatura valida.
6. Online Certificate Status Protocol OCSP:

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 peticions del OCSP tindra les seves dades:

- Versió del protocol.


- Peticions del servei.
- Numero de sèrie del certificat
- Extensions opcionals que pot proporcionar.
Un cop ha rebut la petició, el OCSP mira si el missatge està ben format, llavors, el responder agafa
el servei i verifica que hi ha tota la informació necessària, que els camps son correctes, que els
valors son correctes...

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:

- Es de la CA que ha emes el certificat.


- D’algú confiable.
- Delegació de la CA a algú, això s’ha d’indicar.

I la resposta que conté?

- 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.

Les respostes que podem tindre:

- Good: podem confiar.


- Revocat: no podem confiar.
- Unknown: no ho sap.

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.

v. PKCS Public-Key Cryptography Standards

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.

Super important per assegurar compatibilitat entre sistemes.

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.

Aquests dispositius, els anirem comentant.

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.

- En el cas que el xip es manipulat, te mecanismes que s’encarreguen d’esborrar la


informació, podem generar una parella de claus dins de la targeta intel·ligent on la clau
privada no es pot extreure, nomes podem extreure la clau publica, perquè el que fem es
agafar la targeta intel·ligent, fer peticions, es pot signar dins la xarxa i enviar a algú, però
la clau privada no surt mai, i si es manipula, la informació s’elimina, i el cost de trencar
la targeta es força elevat, hi ha mecanismes que fan que sigui molt costos.
- La tarja està connectada amb un lector, la connexió pot ser física o sense contactes,
per lo que hi ha una part de freqüència, hi ha un PC, hi ha un lector, i finalment la targeta.
Si es física, al xip hi ha totes les connexions necessàries, les dades, el voltatge... o pot ser
per de freqüència, on tenim implementat un circuit inductiu de forma que agafem el
lector, emetem les ones, es donen energia i permet enviar com rebre informació. La
targeta opera com si fos un servidor, no inicia mai una connexió, es el lector el que inicia,
es el client el que pregunta al servidor, en aquest cas el lector.
- Amb el microcontrolador, es marcat, pot guardar de forma segura les dades, les
funcions de xifratge, d’autenticació mútua...
- Els estàndards per comunicar son el 7816, la comunicació que tenim es bàsicament amb
un string, son les APDU, on hi ha un seguit de camps, la mida, paràmetres... com hi ha
un camp de longitud, aquí nomes és màxim... el ISO 1443 es la part sense contacte, la
part del ISO 7816 es la part amb contacte. Els smartphones incorporen el NFC, el cas del
DNIe, que hi ha amb android.
ii. Hardware Security Module o HSM

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.

iii. Trusted Platform Module o TPM

Es un microcontrolador que també guarda claus, contrasenyes i certificats digitals. Normalment


es troba a la placa mare del PC, també podria ser usat com un dispositiu de càlcul. I el que volem
es garantir que la informació guardada sigui segura i si hi ha algun tipus de robatori o atac, que
no pugui accedir a la informació que està guardada, que la infromacio s’elimini o lo que sigui.

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.

iv. Security Token

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.

Requereix de sincronització entre el dispositiu i el sistema on ens autentiquem. Es una


autenticació de dos factors. Que supera les debilitats del usuari-contrasenya. El numero es unic,
l’atacant necessita un numero molt gran i aleatori, es prou gran per a no encertar, i també que
no sigui llarg, per a no tindre feina al escriure.

3. NETWORK SECURITY PROTOCOLS


a. INTRODUCTION + RESUM FINS ARA

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:

- Confidencialitat, aconseguit amb el xifratge:


o Amb clau simètrica: la usem per la part del xifratge.
▪ En bloc.
• AES i DES.
o ECB, CBC, OFB, CFB, CTR son els modes de xifratge.
▪ En flux: normalment en comunicacions.
• LFSR.
• Golomb.
• RC4.
o Amb clau asimètrica: per negociar o establir, o per proporcionar o distribuir les
claus de sessió.
▪ RSA
▪ ElGamal
o Combinació dels dos amb el sobre digital
- Autenticitat, integritat, no repudi: tot això s’aconsegueix amb la signatura digital, i aquí
va un pas mes, per a poder signar, usem hash, que tenen un seguit de propietats per
garantir que tot es segur.

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.

b. SECURITY PROTOCOLS OF THE DATA-LINK LAYER

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.

i. WIRED EQUIVALENT PRIVACY WEP

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 que veiem es:

- Un missatge que es vol enviar, es calcula el CRC(m).


- A continuació concatenem el missatge amb el CRC(m)-> m||CRC(m).
- Xifrem amb RC4(k*) = s. Usem un xifratge RC4 amb algun tipus de clau que ens generarà
una sequencia, com es un xifratge de flux, farem una xor amb el missatge:
o S XOR m||CRC(m), i això es el que enviarem.

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

El que envia que ha de fer? Tenim un missatge:

- Tenim un missatge que volem enviar, calculem: CRC(m).


- Concatenem el missatge amb el CRC -> m||CRC(m).
- Generem un vector d’inicialització de 24 bits
- Tenim dos casos, recorda que el IV es la fortalesa de la clau.
o Clau k de 40 bits: K* = K || IV -> Clau tindrà 40 + 24 = 64 bits.
o O de 104 bits: K* = K || IV -> Clau tindrà 128 = 104 + 24 bits.
- Amb el RC4(K*)=S, la mida de la s ha de ser suficient com per a fer la XOR.
- Amb la sequencia que obtenim, fem el xifratge: m||CRC(m) XOR S = Criptograma c
- Enviem el IV i el criptograma que hem calculat.

El receptor què ha de fer? Rep el criptograma i el IV, la contrasenya es la K.

- K || IV, concatena la clau amb el IV.


- RC4 (K||IV) = S, calculo la sequencia.
- C XOR S = m||CRC, obtenim missatge i CRC
- Verifiquem la integritat fent: CRC =? CRC, si ho es, OK, sinó, hi ha algun tipus d’error.

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.

Podem solucionar la vulnerabilitat augmentant la mida de la clau K? No, no es pot, el problema


no es la clau, hem d’incrementar la mida del IV, si fossin 128 bits, una taula de mida 2^128 es
bastant mes gran.

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.

ii. WIFI PROTECTED ACCESS WPA

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.

Com ho fa el c2 per a desxifrar el c1? Hi ha més passos.

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.

Al mode personal, el xifratge es de 128 bits, quins passos fem al TKIP?

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.

iii. WIFI PROTECTED ACCESS II 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.

- CTR per confidencialitat.


- CBC per a autenticació i integritat.

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.

iv. WIFI PROTECTED ACCESS III WPA3

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:

- Al xifratge de informació en WPA2, usem el mode de xifratge CTR, on tenim el


initCounter i la clau TK, que es la entrada al AES, que ens dona la S1, amb la qual obtenim
el criptograma: c1 = s1 XOR Acta.
- Seguim xifrant fins que tenim el initCounter+1 i el TK, fem AES, obtenim s2... obtenim
c2. Al final tenim counter + t i TK.

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.

Ara entrem en la segona part, recordem que teníem:

- 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.

Com funciona el Diffie-Hellman key agreement:

- Tenim dos usuaris A i B que envien missatges en un canal obert o insegur.


- Al acabar el protocol, hi ha una clau compartida K que només la sabem A i B.
- S’escull un valor primer p generador que es seleccionat i publicat. A l’hora d’escollir com
fer el protocol, s’escolleixen valors, un random x, es computa alpha^x mod p...
v. RESUMEN PROTOCOLOS

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.

WPA3 integra un cifrado de datos individualizado, un protocolo de autenticación simultanea de


iguales, protección a ataques de fuerza bruta…
c. NETWORK SECURITY: IPSEC IN NETWORK LAYER

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:

- Authentication Header: proporciona autenticitat i integritat. Tenim unes dades i


adjuntem una prova, si la prova es:
o Correcta tenim una part d’integritat, no ha estat modificat un cop enviat, i una
part d’autenticitat, només el pot calcular l’emissor, per tant, sabem que prové
d’aquest.
o Si no es correcta, diem que ha estat manipulat o que l’emissor no és legítim.

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.

DADES XIFRADES PROVA

HEADER HEADER ESP DATA XIFRAT AUT ESP

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.

ii. ENCAPSULATING SECURITY PAYLOAD o ESP

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).

iii. OPERATING MODES

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

NOU HEADER HEADER DATA AH

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:

NOU HEADER ESP XIFRAT Integritat i


Autenticació ESP
On Xifrat conté tota la part del paquet anterior xifrat.

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:

IPa IPb DATA


Per la mascara veiem que va fora de la subxarxa, va al router ....

Resumidamente, tenemos que:

Protocolo Integridad Confidencialidad Autenticacion


AH SI NO SI
ESP SI SI SI
TUNEL SI SI SI
WEP NO SI però usa RC4 SI
WPA SI (MIC) SI però usa RC4 SI
WPA II SI SI , usa AES SI
WPA III SI SI SI

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.

Cuando usamos el modo túnel y cuando el modo transporte:

- Transporte: se usa en comunicaciones segures cuando solo se necessitan entre dos


dispositives dentro de una misma red. Solo los datos de los paquetes IP son protegides.
- Túnel: cuando las comunicaciones segures tienen que travessar redes no segures o
cuando se establecen conexiones segures entre redes distantes.
o Todo el paquete IP original, incloent l’encapçalament IP, es encapsulat dins un
nou paquet IP segur, tot el paquet original, incloent la IP de origen i destí, es
xifrat i autenticat.
d. SECURITY IN TRANSPORT: SSL/TLS IN TRANSPORT LAYER

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.

La segona part es on tenim la comunicació segura on tenim la part de la confidencialitat,


integritat i autenticitat. Com ho garantim? Amb les dos parts. Es basa en criptografia simètrica,
es rapida però requereix d’un canal segur, que ja el tenim.

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...

Quins son els passos que es realitzen a la comunicació:

- Transmissió de dades en TCP: hi ha tres passos.


o Establiment de connexió amb TCP, que es fa amb les senyals SYN, Syn+ACK, ACK.
o Enviament de les dades xifrades.
o Tancament de connexió.
- Transmissió de dades en SSL/TLS:
o Establim la connexió normalment.
o Negociem les claus, amb una part de autenticació obligatòria en servidor i
opcional al client, obtenim una colla de claus.
o Establim una connexió segura, enviament de dades.
o Tanquem la connexió.
ii. SSL/TLS HANDSHAKE

El handshake es una versió amigable:

- El client inicia la conversació.


o Envia la versió del SSL/TLS.
o Envia el ID de la sessió, perquè quan tanquem una connexió, al final tindrem la
versió, primitives criptogràfiques, funcions de compressió, paràmetres,
informació secreta... i tot això es guarda en un ID, que té tant el client com el
servidor. Si guardem l’id, estalviem l’enviament de missatges i realitzem menys
operacions. Estalvi de còmput i de temps. Encara així, dura un temps, no es
il·limitat.
o Llista de combinacions de paquets criptogràfics.
o 32 random-bye chain.
- El servidor respon:
o Envia la versió més alta possible.
o ID de la sessió.
o Una combinació dels paquets que s’usaran.
o 32 random-byte chain.
- El servidor respon amb el certificat amb unes extensions en concret. Coincideix amb el
CN o common name del certificat.
- I envia un missatge de finalització.
- El client verifica el certificat, encara que no ho especifiqui. Els passos per verificar es
preguntar, qui ha emes el certificat, confio en l’emissor? Si confiem esta al repositori,
obtenim la clau publica de l’emissor, amb això fem verificar la signatura digital del
certificat, veiem si es caducat o revocat, i després els usos. Aixo es lo que fara el client, i
a més verifica que el CN es = domini on estem connectats.
- El client fa un intercanvi de claus.
- Finalment acaben els dos.

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.

- Enviem un missatge m que el signa el servidor amb la clau privada.


- Es verifica la signatura amb tots els passos comentats just a dalt.
- Xifrem un missatge m.
- El servidor el desxifra amb la clau privada.
- Envia un missatge desxifrat.

iii. TLS v 1.3

Els modes que no son segurs els eliminem, i tornem a posar el DH. La part d’autenticar-me es fa
amb signatura digital.

Compacto missatges, enviem menys missatges, es la part inicial.

El servidor agafa i ho envia tot, tot el paquet, dades i certificat, i acabem.

Hi ha menys missatges.

iv. SECURE WEB SERVICE

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.

e. TRANSPORT SECURITY: SECURE SHELL SSH

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.

Com funciona o quines parts pot tindre?

- 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.

Hi ha un intercanvi de claus, on s’envien:

- 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ó.

Al servidor SSH es on tenim un compte on guardem la clau publica. En l’autenticació, el millor es


fer un login password, i amb una clau asimètrica. Podriem usar una signatura digital per
autenticar-nos.

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.

El proces que segueix l’enviament d’un missatge:


- Transmissió del missatge del emissor al receptor. SMTP mitjançant el servidor de correu
del emissor.
- El receptor contacta amb el seu servidor de correu (usa IMAP i POP3) i descarrega el
mail.

Podem tenir casos que permeten als usuaris llegir sense descarregar, mitjançant una web.

i. CONFIDENTIALITY

Un atacant pot llegir el missatge:

- Mentre esta sent enviat al servidor del receptor.


- Mentre es guardat en el servidor del receptor.
- Mentre el receptor l’esta descarregant.

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.

ii. INTEGRITY AND AUTHENTICATION

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.

iii. EMAILS WITH MULTIPLE RECEIVERS

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.

- Creem una clau K amb un criptosistema simètric (AES).


- Xifrem el missatge usant la clau K.
- Xifrem n vegades amb RSA la clau K, usant les claus publiques dels receptors.
- Obtenim n criptogrames.
- El missatge encriptat i la clau encriptada s’envien als receptors.
- Cada receptor ha de desxifrar el missatge del qual sap la clau privada.
- Usant la K pot desxifrar el missatge xifrat obtenint M.
iv. KEY DISTRIBUTION

El enviament es asíncron, no necessitem contactar directament amb els destinataris, necessitem


la clau publica, amb un missatge Hola, ja tenim el certificat i validar-lo.

El format més usat es el S/MIME, amb el certificat x509.

v. PRETTY GOOD PRIVACY PGP

Mètode alternatiu, els certificats digitals estan signats per altres usuaris, genera més confiança,
es mes distribuït.

TIPUS CONFIDENCIALITAT AUTENTICITAT INTEGRITAT NO REPUDI


TLS SI SI SI NO
AH NO SI SI NO
ESP SI SI SI NO
SSH SI SI SI NO
SMIME SI SI SI SI
SIGNATURA NO, viene dada. SI SI SI
DIGITAL
CIFRADO SI NO NO NO
SOBRE DIGITAL SI SI SI SI
Certificado SI SI SI
Digital
HASH - SI SI -

Sobre digital:

- Confidencialidad se consigue con el cifrado: se usa la clave publica del receptor.


o Se cifra el mensaje con la k del emissor (generamos una clave de sesion) y
criptografia simètrica, donde no importa el tamaño del mensaje. AESk(m)=c1.
o Se cifra de nuevo la clave k con la clave publica del destinatario con asimétrico,
RSA(PubJudit,k)=c2.
o En el descifrado obtenemos c1 y c2, y hacemos el proceso inverso para obtenir
k con el RSA descifrado con la clave privada de la judit, y luego
RSA(Privjudit,c2)=k; AES^-1k(c1)=m.
- + Autenticidad, +Integridad, + No repudio con la signatura digital: queremos Seguridad
de que el emissor ha sido el que ha enviado el mensaje, por lo que se tiene que firmar,
usamos la clave privada del emissor.
o El emissor:
▪ Calcula el hash(m)=h.
▪ RSA(PrivIsmael, h)=s
▪ M’=m||s
▪ Obtenim una clau de sessió k d’un criptosistema simétrico: AESk(m’)=c1
▪ RSA(PubJudit, k)=c2
▪ Enviamos (C1,c2) a la destinatària + la clave publica o certificado digital.
o El receptor tiene su clave privada y publica, y recibe c1 y c2, y su clave publica.
▪ RSA(PrivJudit,c2)=k
▪ AES^-1k(c1)=m’
▪ M’=m||s
▪ Verifiquem la signatura: Hash(m)=h
▪ RSA(PubIsmael,s)=h’
▪ H?=h, si es que si, signatura correcta, sinó, es una signatura invalida.

Podem enviar dos missatges separats o enviar un missatge a 2 destinataris.

- 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.

- Si le qeuremos enviar a Judit,

Clau simètrica: IDEA, AES, CBC, OFB, CFB, CTR, GCM.

Funcions de hash que podem fer servir: SHA256, SHA224, SHA1, SHA512.

Criptografia asimètrica

- Xifrar: RSA, ElGamal, Diffie Hellman per intercanviar claus, ECDH.


- Signar: RSA, ElGamal, DSA, ECDSA...
- Mides de claus que podem usar: ...
- Funcions de compressió: ZIP,...

Suposa que l’algorisme WEP s’ha modificat de la manera següent:

• 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.

• El vector d’inicialització es calcula de forma següent, IV=MD5(D,T)

o D: data actual en format dia/mes/any.

o T: número de seqüencia de la trama de 32 bits.

o Nota: la sortida de la funció MD5 és de 128 bits. Coincideix amb la mida de


bloc del AES.

• KI es calcula de la forma següent, KI=SHA256(T,IV)

o IV: vector inicialització.

o T: número de seqüencia de la trama de 32 bits

• KC es calcula de la forma següent, KC=SHA256(C,W)

o C: contrasenya per accedir a la xarxa.

o W: adreça MAC estació origen || adreça MAC estació destí. Concatenem les
adreces MAC de les estacions origen i destí.

Escull quina és l'afirmació correcta en relació a la integritat i la confidencialitat:

Multiple choice 1 Pregunta 1

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

Multiple choice 1 Pregunta 2

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.

OK, però potser millor solució a nivell de transport.

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.

You might also like