Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wlasny ssl
squid
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

Ostrzeżenie: (0%)
-----


Witam!
w obliczu pewnego problemu (braku SSL) na darmowych serwerach wartoby pomyslec nad obejsciem tego problemu.

Otoz mznaby za pomoca javascriptu generowac zhaszowany (md5) ciag zawierajacy login haslo itd. i porownywac go na serwerze z tam zhaszowanym. Tyleko jak do haszowania doda sie czas (dla wikszego bezpieczenstwa) to taki pakiet informacji musialby docierac do serwera natychmiast, wiec mazna to z kolei obejsc poprzez wygenerowanie na serwerze kilku(nastu) md5 i kilejno je porownujemy z tym co przegladarka wslala do serwera. Ale to tez daje wznoosc na kilka sekund i w dodatu obarcza serwer obliczeniami.

plik index.php:
[php:1:10ee9802fc]<?php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Logowanie</title>
<script type="text/javascript" src="login.js"></script>
<script type="text/javascript">
var czas=<?php print(time()."rn")?>
setInterval('czas++',1000)
</script>
</head>
<body>
<form onsubmit="return send(this.login.value, this.pwd.value, czas, 'frm')">
Login: <input type="text" name="login"><br>
Hasło: <input type="password" name="pwd"><br>
<input type="submit" value="Zaloguj">
</form>
<form action="login.php" method="post" name="frm">
<input type="hidden" name="s">
</form>
</body>
</html>
?>[/php:1:10ee9802fc]

plik login.php
[php:1:10ee9802fc]<?php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Logowanie</title>
</head>
<body>
<?php
// definiujemy poprawny login i hasło
$login='test';
$haslo='xyz123';

// pobieramy aktualny znacznik czasu
$czas=time();

// wykonujemy pętlę sprawdzającą poprawność przesłanej sumy MD5
for($i=0; $i<15; $i++){
if(md5($login.$haslo.($czas-$i)) == $_POST['s']){
print("Podany login i hasło są poprawne !");break;
}
}

// jeżeli przesłana suma MD5 jest niepoprawna, wyświetlamy stosowną informację
if($i==15)print("Brak autoryzacji !<br><a href='java script:history.go(-1)'>Spróbuj jeszcze raz</a>");
?>
</body>
</html>
?>[/php:1:10ee9802fc]

plik login.js
Kod
// SecureLogin 1.1 by Michal Grzechowiak (C) 2003

function y(n){var s='',h='0123456789abcdef',i=0

for(i;i<4;)s+=h.charAt((n>>(i*8+4))&15)+h.charAt((n>>(i++*8))&15);return s}

function k(s){var l=s.length,n=((l+8)>>6)+1,b=[],i=0

  for(i;i<n*16;)b[i++]=0;for(i=0;i<l;i++)b[i>>2]|=s.charCodeAt(i)<<((i%4)*8)

  b[i>>2]|=128<<((i%4)*8);b[n*16-2]=l*8;return b}

function u(x,y){var l=(x&0xFFFF)+(y&0xFFFF),m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF)}

function r(n,c){return (n<<c)|(n>>>(32-c))}

function m(q,a,b,x,s,t){return u(r(u(u(a,q),u(x,t)),s),b)}

function f(a,b,c,d,x,s,t){return m((b&c)|((~b)&d),a,b,x,s,t)}

function g(a,b,c,d,x,s,t){return m((b&d)|(c&(~d)),a,b,x,s,t)}

function h(a,b,c,d,x,s,t){return m(b^c^d,a,b,x,s,t)}

function i(a,b,c,d,x,s,t){return m(c^(b|(~d)),a,b,x,s,t)}

function md5(s){

var x=k(s),a=1732584193,b=-271733879,c=-1732584194,d=271733878,j,o

for(j=0;j<x.length;j+=16){

  o=[a,b,c,d]

  a=f(a,b,c,d,x[j+0],7,-680876936)

  d=f(d,a,b,c,x[j+1],12,-389564586)

  c=f(c,d,a,b,x[j+2],17,606105819)

  b=f(b,c,d,a,x[j+3],22,-1044525330)

  a=f(a,b,c,d,x[j+4],7,-176418897)

  d=f(d,a,b,c,x[j+5],12,1200080426)

  c=f(c,d,a,b,x[j+6],17,-1473231341)

  b=f(b,c,d,a,x[j+7],22,-45705983)

  a=f(a,b,c,d,x[j+8],7,1770035416)

  d=f(d,a,b,c,x[j+9],12,-1958414417)

  c=f(c,d,a,b,x[j+10],17,-42063)

  b=f(b,c,d,a,x[j+11],22,-1990404162)

  a=f(a,b,c,d,x[j+12],7,1804603682)

  d=f(d,a,b,c,x[j+13],12,-40341101)

  c=f(c,d,a,b,x[j+14],17,-1502002290)

  b=f(b,c,d,a,x[j+15],22,1236535329)

  a=g(a,b,c,d,x[j+1],5,-165796510)

  d=g(d,a,b,c,x[j+6],9,-1069501632)

  c=g(c,d,a,b,x[j+11],14,643717713)

  b=g(b,c,d,a,x[j+0],20,-373897302)

  a=g(a,b,c,d,x[j+5],5,-701558691)

  d=g(d,a,b,c,x[j+10],9,38016083)

  c=g(c,d,a,b,x[j+15],14,-660478335)

  b=g(b,c,d,a,x[j+4],20,-405537848)

  a=g(a,b,c,d,x[j+9],5,568446438)

  d=g(d,a,b,c,x[j+14],9,-1019803690)

  c=g(c,d,a,b,x[j+3],14,-187363961)

  b=g(b,c,d,a,x[j+8],20,1163531501)

  a=g(a,b,c,d,x[j+13],5,-1444681467)

  d=g(d,a,b,c,x[j+2],9,-51403784)

  c=g(c,d,a,b,x[j+7],14,1735328473)

  b=g(b,c,d,a,x[j+12],20,-1926607734)

  a=h(a,b,c,d,x[j+5],4,-378558)

  d=h(d,a,b,c,x[j+8],11,-2022574463)

  c=h(c,d,a,b,x[j+11],16,1839030562)

  b=h(b,c,d,a,x[j+14],23,-35309556)

  a=h(a,b,c,d,x[j+1],4,-1530992060)

  d=h(d,a,b,c,x[j+4],11,1272893353)

  c=h(c,d,a,b,x[j+7],16,-155497632)

  b=h(b,c,d,a,x[j+10],23,-1094730640)

  a=h(a,b,c,d,x[j+13],4,681279174)

  d=h(d,a,b,c,x[j+0],11,-358537222)

  c=h(c,d,a,b,x[j+3],16,-722521979)

  b=h(b,c,d,a,x[j+6],23,76029189)

  a=h(a,b,c,d,x[j+9],4,-640364487)

  d=h(d,a,b,c,x[j+12],11,-421815835)

  c=h(c,d,a,b,x[j+15],16,530742520)

  b=h(b,c,d,a,x[j+2],23,-995338651)

  a=i(a,b,c,d,x[j+0],6,-198630844)

  d=i(d,a,b,c,x[j+7],10,1126891415)

  c=i(c,d,a,b,x[j+14],15,-1416354905)

  b=i(b,c,d,a,x[j+5],21,-57434055)

  a=i(a,b,c,d,x[j+12],6,1700485571)

  d=i(d,a,b,c,x[j+3],10,-1894986606)

  c=i(c,d,a,b,x[j+10],15,-1051523)

  b=i(b,c,d,a,x[j+1],21,-2054922799)

  a=i(a,b,c,d,x[j+8],6,1873313359)

  d=i(d,a,b,c,x[j+15],10,-30611744)

  c=i(c,d,a,b,x[j+6],15,-1560198380)

  b=i(b,c,d,a,x[j+13],21,1309151649)

  a=i(a,b,c,d,x[j+4],6,-145523070)

  d=i(d,a,b,c,x[j+11],10,-1120210379)

  c=i(c,d,a,b,x[j+2],15,718787259)

  b=i(b,c,d,a,x[j+9],21,-343485551)

  a=u(a,o[0]);b=u(b,o[1]);c=u(c,o[2]);d=u(d,o[3])}return y(a)+y(b)+y(c)+y(d)}

function send(q,w,x,v){with(document.forms[v])s.value=md5(q+w+x),submit();return!1}


Moje pytanie czy jest jakis sposob by ominac te niedogodnosc generowania wielu md5 na serwerze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
enceladus
post
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 19.11.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Wątek dotyczył tego, jak dokonać autoryzacji po HTTP bez SSL nie przesyłając hasła przy każdym logowaniu.  

Zgadza się sam taki algorytm przedstawiłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Cytat
[*]jeśli włamywacz przechwyci ciąg znaków zakodowany MD5 i login, to nic nie zdziała, bowiem ciąg znaków wygenerowany po stronie serwera będzie inny ze względu na inny adres IP włamywacza
[*]jeśli włamywacz będzie chciał sam wygenerować ciąg znaków, to też nic nie zdziała, bowiem musiałby znać hasło użytkownika

Pamiętaj że zna funkcję przy pomocy której zaciemniany jest ciąg (jak sam piszesz jest w JS), zna też dane wejściowe (hasło i obecność jego własnego IP w formularzu jest jednoznaczna). Ja po przeanalizowaniu takiego algorytmu i posiadaniu danych testowych (np. z podsłuchu) zabrałbym się za złamanie hasła metodą brutal force, podstawiając kolejne hasła do algorytmu obliczającego MD5 z IP i hasła. Zauważ, że wystarczy mieć podsłuchane dane przesyłane w relacji klient -> serwer. W mojej wersji z liczbą losową przesyłaną z serwera do klienta atakujący ma ciut trudniej bo musi najpier podsłuchać transmisję serwer -> klient a potem odpowiadającą jej klient -> serwer (jeśli zmienna losowa zostanie usunięta z formularza, bo jeśli będzie w formularzu to wystarczy tylko 2-gi etap). Mając te dane też może przeprowadzić atak brutal force. Jedyny zysk jest taki, że nie ułatwia im się życia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W wersji z IP atakujący może jeszcze ustawić świadomie takie samo IP jak ofiara i wtedy wystarczy że wyśle takiego samego POST-a z formularza. (o tym pisałeś). Nie potrzebuje wtedy nawet brutal force.
Cytat
Warto jednak pamiętać, że SSL umożliwia nie tylko kodowanie transmisji, ale także weryfikację czy dany serwis jest rzeczywiście tym serwisem, za który się podaje. Bez SSL łatwo wprowadzić użytkownika w błąd, na przykład z pomocą wykrytego niedawno błędu w Internet Explorerze.

Z SSL-em też swego czasu dało się przeprowadzić atak MiM na IE.
Cytat
Nie rozumiem jednak co mają do tego liczby losowe i w jaki sposób ich brak niszczy ten algorytm :?

PIsałem to w nocy - miałem na myśli osłabia.
Go to the top of the page
+Quote Post

Posty w temacie
- squid   Wlasny ssl   5.12.2003, 17:12:36
- - adwol   http://forum.php.pl/viewtopic.php?p=48068#48068 Mo...   5.12.2003, 19:52:36
- - squid   calkiem ciekawe, dziekuje, narazie mi to wystarczy...   5.12.2003, 21:05:35
- - pat_   Nie wiem czy rozumiem, ale gdybyś do zakodowanej i...   3.01.2004, 22:58:34
- - squid   jesli zrezygnuje z dodawania czasu to spadnie bezp...   8.01.2004, 22:18:41
- - enceladus   Nie wiem czy ktoś to proponował, ale co myślicie o...   8.01.2004, 22:38:26
- - squid   na pierwszy rzut oka pomysl niezly ale mam jedno '...   8.01.2004, 22:45:51
- - enceladus   Cytatna pierwszy rzut oka pomysl niezly ale mam je...   8.01.2004, 23:07:33
- - adwol   Cytat1. hasło na serwerze nie jest jawne Ale to ni...   8.01.2004, 23:36:23
- - enceladus   CytatCytat1. hasło na serwerze nie jest jawne Ale ...   8.01.2004, 23:50:10
- - adwol   CytatZmienia i to dużo - kłania się ludzkie lenist...   9.01.2004, 00:08:21
- - enceladus   CytatCytatZmienia i to dużo - kłania się ludzkie l...   9.01.2004, 00:09:18
- - enceladus   CytatJest to mój przykład i nie widzę na jakiej po...   9.01.2004, 00:27:17
- - adwol   Przyjrzałem się teraz temu kodowi i faktycznie nie...   9.01.2004, 00:43:08
- - enceladus   CytatPrzyjrzałem się teraz temu kodowi i faktyczni...   9.01.2004, 00:57:24
- - a1internet   Cytat5. Atakujący przerabia stronę logowania, wsta...   11.01.2004, 23:00:37
- - squid   pod warunkiem ze ip sie nie zmieni czyli mowimy tu...   11.01.2004, 23:16:00
- - enceladus   CytatWarto generować MD5 nie tylko w oparciu o has...   11.01.2004, 23:24:38
- - a1internet   Cytatpod warunkiem ze ip sie nie zmieni czyli mowi...   12.01.2004, 02:38:06
- - Bora   Ja chcąc zebezpieczyć kod wziąłem sie za sesje. I...   12.01.2004, 02:51:04
- - a1internet   CytatKtóre MD5 - bo nie bardzo rozumiem ?   A...   12.01.2004, 03:19:24
- - Bora   CytatWątek dotyczył tego, jak dokonać autoryzacji ...   12.01.2004, 03:35:33
- - enceladus   CytatWątek dotyczył tego, jak dokonać autoryzacji ...   12.01.2004, 09:22:49
- - Bora   mój poprzedni komentarz pisałem w nocy i choziło p...   13.01.2004, 11:23:14


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 21:02