Newsgroup: it.scienza.informatica
Titolo: Dubbio su sicurezza...

Salve a tutti!!!
Sono un studente di informatica ma non mi sono mai occupato di
problemi di sicurezza (l'area di mio interesse è il Data
Mining). Leggendo un thread su it.comp.java mi è sorto un dubbio
riguardo la sicurezza delle comunicazioni, in particolare
l'autenticazione dell'utente.
Supponiamo che la macchina A voglia autenticarsi fornendo una password
alla macchina B:
1) A cripta la password
2) A trasmette la password criptata a B
3) B la decritta e la verifica
Il mio dubbio è: ma tutto cio' aumenta effettivamente la sicurezza?
Supponiamo che il malintenzionato C ascolti la comunicazione al punto
2), ottenendo cosi' la password *criptata* che A trasmette a B.
A questo punto, non potrebbe accadere che:
1) C in possesso della password crittata
2) C trasmette la password criptata a B
3) B la decritta e la verifica
Voglio dire, la conoscenza della password crittata è equivalente, ai
fini pratici, alla conoscenza della password in chiaro, o mi sbaglio?
-- 
__/\__ * this mail has been written by Talpa Stellare
\ TS / * che da piccolo una volta e' morto.
 |/\|  * icq# 78630739 - togli i caratteri maiuscoli x e-mail

 fini pratici, alla conoscenza della password in chiaro, o mi sbaglio?
no, solitamente la password viene crittata assieme ad informazione random
utilizzata una sola volta (nonce) rendendo non riutilizzabile il traffico
ascoltato. Ricordo vagamente schemi piu' complicati ma la sostanza e' tutta
nel nonce.
Un link tra i tanti per farti entrare nell'ottica corretta:
http://knight.cis.temple.edu/~ingargio/cis307/readings/security.html
Cerca nonce e leggi il paragrafo, che comunque riporto.
Principal A wants to authenticate itself to other principals. Let Kp(A) be
the public key of A, Ks(A) the secret key of A. A will append E(A_id, Ks(A))
to its messages. Any principal B that receives this information will use
Kp(A) to decode the signature, if it succeeds and finds "A_id", it will
"know" that only A could have sent the message. In the following we use "+"
to express "concatenation".
  A  -->  A_id + E(A_id, Ks(A))  -->  B
Note that this authentication, as it stands, is dangerous: somebody could
capture and save that message (A_id+E(A_id,Ks(A))), and then use it to
impersonate A by playing back a previous authentication message. We can
solve the problem as follows: when A wants to authenticate itself to B, it
asks B to send first to A a string x which is likely being sent for the
first time to A (choose x at random as a 100 digits number! such a number is
usually called a nonce). Then A sends to B
  A_id + E(A_id + x, Ks(A))
now nobody can have memorized the authentication message and play it back.
Note that also this authentication is dangerous if anybody, not just B,
could have sent to A the nonce x. Because then C could impersonate A in
interacting with B. It gets in the middle between A and B. Waits for A to
make a request to B and intercepts the communication.
  A  --> A_id --> C  -->  A_id  --> B
  A  <--  x  <--  C  <--  x  <-- B
   A  --> E(A_id + x, Ks(A)) --> C  --> E(A_id + x, Ks(A)) --> B
and now B believes that C is really A, while A just thinks the communication
was lost. If the communication from now on is in plaintext (or B sent a
session key .. ) then C will be able to talk with B impersonating A. We get
back to this later. This is a form of man-in-the-middle. attack. Later we
will see another form.
L.


Per ovviare a questo problema esistono i sistemi di autenticazione di tipo 
challenge-response, e altri piu' complessi
-- 

 Un link tra i tanti per farti entrare nell'ottica corretta:
dimenticavo, in molti casi far passare password in rete non e' necessario
quando enrambe le parti hanno copia della chiave (la situazione che descrivi
tu) si usano tecniche tipo  CHAP  come suggerisce ss.(Challenge-Handshake
Authentication Protocol )
http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?Challenge-Handshake+Authenticat
ion+Protocol
 
http://www.faqs.org/rfcs/rfc1994.html
se poi vuoi divertirti con certi temi guarda questo algoritmino per
scambiare chiavi : 
http://www.netip.com/articles/keith/diffie-helman.htm
L.

 
Si in certe circostanze, per un intruder la pasword crittata e' equivalente
alla password in chiaro.
Ovviamente cio' dipende dalle circostanze. In altri post si parla di nonce e
cmq di informazioni ridondanti etc.
Altre possibilita' per ridrre le vulnerabilita' sono quelle di far passare
la password su canali particolari e protetti, creare un token di sessione
(legato all'indirizzo della macchina) e da quel monento usare quello. In
questo caso avresti sempre la possibilita' di intrusione con un sistema
"man in the middle". 
Una altra possibilta' sarebbe quella di far svolgere tutta la transazione su
canali "sicuri" 
p.es
 SSL.
Spero di esserti stato di aiuto.
Ciao