Archivio

Archive for giugno 2011

Eclipse Phase: tradotto Lack in italiano

27/06/2011 6 commenti

Per tutti coloro che come me seguono questo interessante RPG, pubblico (il link è qua sotto) la traduzione, un po’ sgangherata, causa poco tempo a disposizione, del racconto che introduce il libro delle regole: LACK.

In questi giorni sto leggendo Altered Carbon di Richard Morgan. Mi ha deluso vedere come, sia in LACK, che nel regolamento e nell’ambientazione del gioco, gli autori abbiano scopiazzato pesantemente dalle opere di questo scrittore di fantascienza (che consiglio vivamente). Ciò nonostante, LACK è un racconto la cui lettura è essenziale per immergersi pienamente nelle ambientazioni di Eclipse Phase. Ecco perché ho deciso di tradurlo.

Bene, spero di ricevere incoraggianti commenti, come è avvenuto con le QSR. A presto EP fans!!!

Lack_ITAv1

Categorie:GdR: Eclipse Phase

SIP Digest authentication: come funziona.

14/06/2011 3 commenti

Mi viene spesso chiesto come fa un client sip (softphone, ip-phone o IPPBX)  a comunicare le proprie credenziali di autenticazione al sip proxy server. In  effetti, facendo un tracciamento, si vedono solo lunghe stringhe esadecimali.

Quasi tutti gli apparati mandano un REGISTER al SIP Proxy Server, a cui viene risposto con un “401Unauthorized”. In questo pacchetto di risposta vi è una riga (header field) così fatta:

WWW-Authenticate: Digest realm=”voip.eutelia.it”, nonce=”447165da1af55bfd20e7e55d8d2bb81eba54e377″, qop=”auth”

L’apparato che vuole registrarsi ne trae non poche informazioni

  • il realm di riferimento (simile al concetto di dominio, gruppo logico degli account SIP)
  • il tipo di autenticazione (auth=determinato algoritmo di encryption)
  • una chiave randomica necessaria all’encryption detta nonce (abbrevia “number used once“)

A questo punto l’apparato rimanda il REGISTER ma con un nuovo campo dove è contenuta la password criptata:

Authorization: Digest

username=”0575123456″,realm=”voip.eutelia.it”,

nonce=”447165da1af55bfd20e7e55e8d2bb81eba54e377″,

response=”6f00b8e7c79455475750da9a8c044ecd”,

uri=”sip:voip.eutelia.it”,qop=auth,

cnonce=”B18606FEE42246E39B068D3210CCC691″,

algorithm=MD5, qop=auth, nc=00000001

La password dell’account è contenuta in response: il server ha tutte le informazioni (conoscendo a sua volta la password) per calcolare la response e confrontarla con quella mandata dal client. Quindi la vera domanda è: come si calcola la response?

Response è la somma MD5 della sequenza :

response = MD5 (HA1:nonce:nonceCount:clientNonce:qop:HA2)

Non è l’unica formula, ma siccome il SIP Proxy Server ha detto nel “401 Unauthorized” che il tipo di encyption è “qop=auth”, questa è la formula da applicare. I due parametri HA1 e HA2 si calcolano rispettivamente come segue:

HA1 = MD5 (username:realm:password)
HA2 = MD5 (method:digest uri)

Quindi con i parametri ricevuti nel “401 Unauthorized” il client (softphone, ip-phone o IPPBX,etc) si calcola HA1 e HA2 e quindi la response.  Il server può farlo solo dopo aver ricevuto il secondo REGISTER con il campo Authorization, fa il confronto e se coincidono da il 200 OK.

Facciamo un esempio con il numero VoIP 0575123456 avente password=SEgreTo .

HA1 = MD5 (0575123456:voip.eutelia.it:SEgreTo) =0e98fe2ed9acca9550cbde26dae69bef
HA2 = MD5 (REGISTER:sip:voip.eutelia.it) = b5bb07b61124a06d3490325b07f33528

Facendo riferimento alla risposta riportata sopra come esempio avremo:

nonce=”447165da1af55bfd20e7e55e8d2bb81eba54e377″
cnonce=”B18606FEE42246E39B068D3210CCC691″
nc=00000001

Di conseguenza la response sarà:

response = MD5 (0e98fe2ed9acca9550cbde26dae69bef:

447165da1af55bfd20e7e55e8d2bb81eba54e377:

00000001:

B18606FEE42246E39B068D3210CCC691

:auth

:b5bb07b61124a06d3490325b07f33528)

= bf6e05dc1df729023428bd9ddfa4442c

Se coincide con quella inviata, l’apparato sarà registrato.

Categorie:VoIP:Info