En seguretat informàtica, l'autenticació de desafiament-resposta és una família de protocols en què una part presenta una pregunta ("repte") i l'altra part ha de proporcionar una resposta vàlida ("resposta") per ser autenticada.
L'exemple més senzill d'un protocol de desafiament-resposta és l'autenticació amb contrasenya, on el desafiament consisteix a demanar la contrasenya i la resposta vàlida és la contrasenya correcta.
Un adversari que pot espiar una autenticació de contrasenya pot autenticar-se reutilitzant la contrasenya interceptada. Una solució és emetre diverses contrasenyes, cadascuna marcada amb un identificador. El verificador pot presentar un identificador i el provador ha de respondre amb la contrasenya correcta per a aquest identificador. Suposant que les contrasenyes es trien independentment, un adversari que intercepta un parell de missatges de desafiament-resposta no té pistes per ajudar amb un desafiament diferent en un moment diferent.
Per exemple, quan altres mètodes de seguretat de les comunicacions no estan disponibles, l'exèrcit dels EUA utilitza el xifratge numèric TRIAD AKAC-1553 per autenticar i xifrar algunes comunicacions. TRIAD inclou una llista de codis de desafiament de tres lletres, que el verificador ha de triar aleatòriament, i respostes aleatòries de tres lletres. Per a una major seguretat, cada conjunt de codis només és vàlid durant un període de temps determinat que normalment és de 24 hores.
Una altra tècnica bàsica de repte-resposta funciona de la següent manera. En Bob controla l'accés a algun recurs i l'Alícia busca l'entrada. En Bob llança el repte "52w72y". L'Alice ha de respondre amb la cadena de caràcters que "encaixa" amb el repte que en Bob ha llançat. L'"encaix" es determina mitjançant un algorisme definit per endavant i conegut tant per en Bob com per l'Alice. La resposta correcta podria ser tan simple com "63x83z", amb l'algorisme canviant cada caràcter del repte mitjançant un xifratge de Cèsar. En realitat, l'algorisme seria molt més complex. En Bob llança un repte diferent cada vegada i, per tant, conèixer una resposta correcta anterior (fins i tot si no està ofuscada pels mitjans de comunicació) no permet a un adversari determinar la resposta correcta actual.
Altres protocols no criptogràfics Els protocols de desafiament-resposta també s'utilitzen en aplicacions no criptogràfiques. Els CAPTCHA, per exemple, estan pensats per permetre als llocs web i a les aplicacions determinar si una interacció la va dur a terme un usuari genuí en lloc d'un rastrejador web o un bot. En els primers CAPTCHA, el desafiament que s'enviava a l'usuari era una imatge distorsionada d'algun text, i l'usuari responia transcrivint el text. La distorsió estava dissenyada per dificultar el reconeixement òptic de caràcters (OCR) automatitzat i evitar que un programa informàtic passés per humà.
Tècniques criptogràfiques L'autenticació no criptogràfica era generalment adequada en els dies anteriors a Internet, quan l'usuari podia estar segur que el sistema que demanava la contrasenya era realment el sistema al qual intentava accedir, i que probablement ningú no estigués escoltant el canal de comunicació. Per abordar el problema del canal insegur, cal un enfocament més sofisticat. Moltes solucions criptogràfiques impliquen autenticació bidireccional; tant l'usuari com el sistema han de verificar que coneixen el secret compartit (la contrasenya), sense que el secret es transmeti mai en clar pel canal de comunicació.
Una manera de fer-ho implica utilitzar la contrasenya com a clau de xifratge per transmetre informació generada aleatòriament com a repte, i l'altre extrem ha de retornar com a resposta un valor xifrat similar que és una funció predeterminada de la informació oferta originalment, demostrant així que va poder desxifrar el repte. Per exemple, a Kerberos, el repte és un enter xifrat N, mentre que la resposta és l'enter xifrat N + 1, cosa que demostra que l'altre extrem va poder desxifrar l'enter N. També es pot aplicar una funció hash a una contrasenya i un valor de repte aleatori per crear un valor de resposta. Una altra variació utilitza un model probabilístic per proporcionar reptes aleatoris condicionats a l'entrada del model.
Aquests intercanvis xifrats o amb hash no revelen directament la contrasenya a un escolta. Tanmateix, poden proporcionar prou informació per permetre a un escolta deduir quina és la contrasenya, mitjançant un atac de diccionari o un atac de força bruta. L'ús d'informació que es genera aleatòriament a cada intercanvi (i on la resposta és diferent del desafiament) protegeix contra la possibilitat d'un atac de repetició, on un intermediari maliciós simplement registra les dades intercanviades i les retransmet més tard per enganyar un extrem i fer-li creure que ha autenticat un nou intent de connexió de l'altre.
Els protocols d'autenticació solen utilitzar un nonce criptogràfic com a repte per garantir que cada seqüència de repte-resposta sigui única. Això protegeix contra l'espionatge amb un atac de reproducció posterior. Si no és pràctic implementar un nonce veritable, un generador de nombres pseudoaleatoris criptogràficament segur i fort i una funció hash criptogràfica poden generar reptes que és molt poc probable que es produeixin més d'una vegada. De vegades és important no utilitzar nonces basats en el temps, ja que poden debilitar servidors en diferents fusos horaris i servidors amb rellotges inexactes. També pot ser important utilitzar nonces basats en el temps i rellotges sincronitzats si l'aplicació és vulnerable a un atac de missatges retardats. Aquest atac es produeix quan un atacant copia una transmissió mentre la bloqueja perquè no arribi a la destinació, cosa que li permet reproduir la transmissió capturada després d'un retard que triï. Això s'aconsegueix fàcilment en canals sense fil. El nonce basat en el temps es pot utilitzar per limitar l'atacant a tornar a enviar el missatge, però restringit per un temps de caducitat de potser inferior a un segon, probablement sense cap efecte sobre l'aplicació i, per tant, mitigant l'atac.
L'autenticació mútua es realitza mitjançant una protocol·lització de resposta-reacció en ambdues direccions; el servidor s'assegura que el client conegui el secret, i el client també s'assegura que el servidor conegui el secret, cosa que protegeix contra un servidor no autoritzat que suplanti el servidor real.
L'autenticació de desafiament-resposta pot ajudar a resoldre el problema d'intercanviar claus de sessió per al xifratge. Mitjançant una funció de derivació de claus, el valor del desafiament i el secret es poden combinar per generar una clau de xifratge impredictible per a la sessió. Això és particularment eficaç contra un atac man-in-the-middle, perquè l'atacant no podrà derivar la clau de sessió del desafiament sense conèixer el secret i, per tant, no podrà desxifrar el flux de dades.
Exemple senzill de seqüència d'autenticació mútua El servidor envia un valor de desafiament únic sc al client. El client envia un valor de desafiament únic cc al servidor. El servidor calcula sr = hash(cc + secret) i l'envia al client. El client calcula cr = hash(sc + secret) i l'envia al servidor. El servidor calcula el valor esperat de cr i s'assegura que el client hagi respost correctament. El client calcula el valor esperat de sr i s'assegura que el servidor hagi respost correctament.
on
sc és el repte generat pel servidor cc és el repte generat pel client cr és la resposta del client sr és la resposta del servidor
Aquest exemple en particular és vulnerable a un atac de reflexió.
Emmagatzematge de contrasenyes Per evitar l'emmagatzematge de contrasenyes, alguns sistemes operatius (per exemple, de tipus Unix) emmagatzemen un hash de la contrasenya en lloc d'emmagatzemar la contrasenya mateixa. Durant l'autenticació, el sistema només necessita verificar que el hash de la contrasenya introduïda coincideixi amb el hash emmagatzemat a la base de dades de contrasenyes. Això fa que sigui més difícil per a un intrús obtenir les contrasenyes, ja que la contrasenya en si no s'emmagatzema i és molt difícil determinar una contrasenya que coincideixi amb un hash determinat. Tanmateix, això presenta un problema per a molts (però no tots) algorismes de desafiament-resposta, que requereixen que tant el client com el servidor tinguin un secret compartit. Com que la contrasenya en si no s'emmagatzema, un algorisme de desafiament-resposta normalment haurà d'utilitzar el hash de la contrasenya com a secret en lloc de la contrasenya mateixa. En aquest cas, un intrús pot utilitzar el hash real, en lloc de la contrasenya, cosa que fa que els hash emmagatzemats siguin tan sensibles com les contrasenyes reals. SCRAM és un algorisme de desafiament-resposta que evita aquest problema.
Exemples Exemples d'algorismes de resposta a reptes més sofisticats són:
Sistemes de prova de contrasenya de coneixement zero i acord de claus (com ara Secure Remote Password (SRP) ) Protocol d'autenticació per desafiament i encaix de mans (CHAP) (RFC 1994) CRAM-MD5, OCRA: algorisme de desafiament-resposta OATH (RFC 6287) Mecanisme d'autenticació de resposta a desafiaments salats (SCRAM) (RFC 5802) Sistema de resposta a preguntes i respostes de ssh basat en RSA.
Algunes persones consideren un CAPTCHA una mena d'autenticació de resposta a prova que bloqueja els robots de correu brossa."Challenge–Response Authentication" .
Referències
Categoria:Criptografia Categoria:Protocols de xarxa