Hübsches Logo, schlechte Crypto

aSSL - Ajax Se­cu­re Ser­vice Layer soll nach ei­ge­ner Dar­stel­lung "eine Tech­no­lo­gie ähn­lich wie SSL, nur ohne HTTPS" sein. Nette Idee, denke ich, mal einen Blick dar­auf wer­fen...

Ver­wen­de­te Ver­fah­ren

Ein ers­ter Blick auf die Web­sei­te macht schnell klar, daß Skep­sis an­ge­sagt ist - wel­che Ver­fah­ren wer­den ver­wen­det?
RC4 - über­holt, von man­chen als "bro­ken" be­zeich­net. Wieso über­haupt RC4? Das sieht man schnell, wenn man die Be­schrei­bung des Ver­fah­rens an­sieht (siehe unten)...
Block­TEA, eine DES-Va­ri­an­te - Wieso Va­ri­an­te? Fin­ger weg von Al­go­rith­men, es sei denn, man weiß, was man tut!
Dou­ble Key Qua­drup­le DES, eine selbst­ge­mach­ter 3DES-Mo­dus - ich be­kom­me Gän­se­haut.
Aber gut, mal wei­ter­le­sen, viel­leicht kann man ja ein­fach die Ver­fah­ren gegen ver­nünf­ti­ge Al­go­rith­men aus­tau­schen.

Der Schlüs­sel­aus­tausch

Der Cli­ent er­zeugt einen Sit­zungs­schlüs­sel s und einen Cli­ent­schlüs­sel c. s wird mit c ver­schlüs­selt und an den Ser­ver ge­schickt. Die­ser wählt einen zu­fäl­li­gen Ser­ver­schlüs­sel s, ver­schlüs­selt damit das emp­fan­ge­ne Paket und sen­det dies an den Cli­ent. c ist also nun dop­pelt ver­schlüs­selt. Der Cli­ent ent­schlüs­selt nun die Daten, und sen­det das Er­geb­nis an den Ser­ver - wel­ches laut Be­schrei­bung nun nur noch mit dem Ser­ver­schlüs­sel ver­schlüs­selt ist. Das kann na­tür­lich der Ser­ver ent­schlüs­seln, und: Tadaa, Cli­ent und Ser­ver haben einen ge­mein­sa­men Schlüs­sel.
Die Dop­pelt­ver­schlüs­se­lung ist ein be­kann­ter An­satz; er funk­tio­niert aber nur bei kom­mu­ta­ti­ven Chif­fren - in die­sem Fall RC4.
RC4 ist eine Strom­chif­fre, d.h. es wer­den Zu­falls­zah­len mit­tels XOR mit dem Klar­text ver­knüpft. Ja, XOR ist kom­mu­ta­tiv... wenn man die drei Nach­rich­ten ab­hört, er­hält man:
m1 = s XOR RC4(c)
m2 = s XOR RC4(c) XOR RC4(s)
m3 = s XOR RC(s)
Nun be­rech­net der An­grei­fer:
m1 XOR m2 = RC4(s)
...​und kann damit m3 ent­schlüs­seln:
m3 XOR RC4(s) = s
Oh weh...

Fazit

Ganz ab­ge­se­hen von der Tat­sa­che, daß der Ver­gleich mit SSL schon fast an­ma­ßend ist - SSL kann be­deu­tend mehr, an­ge­fan­gen bei Zer­ti­fi­ka­ten zum Ver­hin­dern von Man-in-the-Midd­le-An­grif­fen (hier­über wird hier nicht ein­mal ge­spro­chen)...
Im Or­gi­nal wurde das Ver­fah­ren mit dem dis­kre­ten Lo­ga­rith­mus­pro­blem for­mu­liert. Die Ab­bil­dung auf XOR funk­tio­niert ganz of­fen­sicht­lich nicht. Es zeigt ein­mal mehr, daß man nicht "ir­gend­ein" Kryp­to-Ver­fah­ren neh­men darf, um dann "ir­gend­wie" durch Tri­al-and-Er­ror sein Pro­to­koll zu­sam­men­zu­stöp­seln.
Wie war noch­mal die Poin­te eines Wit­zes (ohne damit einem Be­rufs­stand zu nahe tre­ten zu wol­len)? "Die In­ge­nieu­re haben schon öf­ters aus der Phy­sik Me­tho­den über­nom­men, ohne kom­plett durch­schaut zu haben, wie es ei­gent­lich funk­tio­niert" ;-)

(Ent­deckt via Fefe's Blog)