/ Forside / Teknologi / Internet / Sikkerhed / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Sikkerhed
#NavnPoint
stl_s 37026
arlet 26827
miritdk 20260
o.v.n. 12167
als 8951
refi 8694
tedd 8272
BjarneD 7338
Klaudi 7257
10  molokyle 6481
Hvor sikker er denne kryptering?
Fra : Jimmy


Dato : 15-03-04 21:54

Hej

Mike Schaffer skrev oprindeligt nedenstående funktion i ASP.
Den kan kryptere/dekryptere baseret på RC4.

Jeg har porteret den til PHP (dog har jeg tilføjet md5($Pass) ).
Den er ret ligefrem at læse. ("ord" returnerer ascii-værdien og ^ er xor)

Nogen der kan fortælle hvor lang/kort tid det vil tage at finde
koden/dekryptere en række tekster, hvis man har adgang til en stor mængde
krypteret tekst?

Mvh
Jimmy



function EnDeCrypt_RC4 ($Input, $Pass)
{
$Pass = md5 ($Pass);


for ($a=0; $a<=255; $a++)
{
$key [$a] = ord (substr ($Pass, ($a % strlen ($Pass)), 1));
$sbox[$a] = $a;
}


for ($a=0; $a<=255; $a++)
{
$b = ($b + $sbox [$a] + $key [$a]) % 256;
$Pass_Temp = $sbox [$a];
$sbox [$a] = $sbox [$b];
$sbox [$b] = $Pass_Temp;
}


for ($a=0; $a<strlen ($Input); $a++)
{
$i = ($i + 1) % 256;
$j = ($j + $sbox [$i]) % 256;

$temp = $sbox [$i];
$sbox [$i] = $sbox [$j];
$sbox [$j] = $temp;

$k = $sbox [ (($sbox [$i] + $sbox [$j]) % 256) ];
$Cipher .= chr(((ord (substr ($Input, $a, 1))) ^ $k));
}


return $Cipher;
}



 
 
Kasper Pedersen (16-03-2004)
Kommentar
Fra : Kasper Pedersen


Dato : 16-03-04 00:46


"Jimmy" <nyhedsgruppe2001@FJERN.yahoo.co.uk> wrote in message
news:c3555q$f44$1@sunsite.dk...
> Hej
>
> Mike Schaffer skrev oprindeligt nedenstående funktion i ASP.
> Den kan kryptere/dekryptere baseret på RC4.
....
>Nogen der kan fortælle hvor lang/kort tid det vil tage at finde
>koden/dekryptere en række tekster, hvis man har adgang til en stor mængde
>krypteret tekst?

Ca. den tid det tager at copy-paste dem ind i knækkerværktøjet (selve
knækningen tager nogle millisekunder). 20 minutter for at skrive værktøjet
hvis man ikke kan finde det på nettet.

RC4 er en stream chipher. Det vil sige at hvis jeg har 2+ strenge krypteret
med samme 'pass':

ciphertext1 = EnDeCrypt_RC4(p1,k) = plaintext1 ^ rc4stream
c2 = p2 ^ rc4stream
c3 = p3 ^ rc4stream
...

og xor'er to af dem med hinanden:
c1 ^ c2 = p1^rc4stream^p2^rc4stream = p1^p2
så står jeg med to plaintexts xor'et med hinanden, og krypteringen er
forsvundet (på dette tidspunkt går det nok op for de fleste af det er noget
skidt).
Det betyder igen, at hvis jeg ved/gætter noget om f.eks. p1 og p2 - at det
er tekst for eksempel - eller tiltusker mig anden viden om en tilfældig
plaintext, så kan jeg udlede 'rc4stream' ud fra udtrykket
rc4stream = c1 ^ p1
og dermed læse alle ciphertexts krypteret under samme nøgle. Jeg får ikke
pass eller MD5(pass) at vide, men den skal jeg hellerikke bruge til noget.

Sammenfattet:
At kryptere to forskellige dataklumper med den samme RC4 nøgle er en mægtig
dårlig ide.

Der er andre ting galt med den viste brug af RC4, men ovenstående er den
væsentligste.

/Kasper




Jimmy (16-03-2004)
Kommentar
Fra : Jimmy


Dato : 16-03-04 07:39


"Kasper Pedersen" <ngfilter@kasperkp.dk> wrote in message
news:4056402c$0$67445$edfadb0f@dtext02.news.tele.dk...
>
> "Jimmy" <nyhedsgruppe2001@FJERN.yahoo.co.uk> wrote in message
> news:c3555q$f44$1@sunsite.dk...
> > Hej
> >
> > Mike Schaffer skrev oprindeligt nedenstående funktion i ASP.
> > Den kan kryptere/dekryptere baseret på RC4.
> ...
> >Nogen der kan fortælle hvor lang/kort tid det vil tage at finde
> >koden/dekryptere en række tekster, hvis man har adgang til en stor mængde
> >krypteret tekst?
>
> Ca. den tid det tager at copy-paste dem ind i knækkerværktøjet (selve
> knækningen tager nogle millisekunder). 20 minutter for at skrive
værktøjet
> hvis man ikke kan finde det på nettet.

Nogen der har et link til et værktøj?


> RC4 er en stream chipher. Det vil sige at hvis jeg har 2+ strenge
krypteret
> med samme 'pass':
>
> ciphertext1 = EnDeCrypt_RC4(p1,k) = plaintext1 ^ rc4stream
> c2 = p2 ^ rc4stream
> c3 = p3 ^ rc4stream
> ..
>
> og xor'er to af dem med hinanden:
> c1 ^ c2 = p1^rc4stream^p2^rc4stream = p1^p2
> så står jeg med to plaintexts xor'et med hinanden, og krypteringen er
> forsvundet (på dette tidspunkt går det nok op for de fleste af det er
noget
> skidt).

Lyder ikke så godt :-/


> Sammenfattet:
> At kryptere to forskellige dataklumper med den samme RC4 nøgle er en
mægtig
> dårlig ide.

Ja det forstås nu.
Er RC4 komplet uanvendelig i praksis eller er den nyttig, hvis man på en
eller anden måde anvender forskellige adgangskoder hver gang?

Tak for det udførlige svar"

Mvh
Jimmy




Kasper Pedersen (16-03-2004)
Kommentar
Fra : Kasper Pedersen


Dato : 16-03-04 08:37


"Jimmy" <nyhedsgruppe2001@FJERN.yahoo.co.uk> wrote in message
news:c367cq$j6a$1@sunsite.dk...
>
>
> Ja det forstås nu.
> Er RC4 komplet uanvendelig i praksis eller er den nyttig, hvis man på en
> eller anden måde anvender forskellige adgangskoder hver gang?

Slet ikke uanvendelig.

Hvis du hver gang du skal bruge den finder på en tilfældig s,
s = random_16_karakterer
og derefter krypterer som
c = RC4( plaintext, MD5(pass+s) )
og gemmer c og s så er du ude over det problem.

Dog: før du kører sidste sløjfe af din RC4 rutine skal du køre den uden data
(sidste linje) 256 gange. Mindre statistisk hovsa i RC4 der gør, at de
første par hundrede byte output er risikable at bruge.

Og det er stadig muligt at ændre i en krypteret streng. lægger du 1 til en
karakter, så er den 1 større efter dekryptering. Vigtigt hvis du tror du kan
gemme strengen "UserIsRoot=0, Username=johndoe" krypteret i en cookie på
brugerens maskine, og stole på den når du får den leveret tilbage. I dette
eksempel, givet en krypteret streng, og man lægger 1 til krypteret byte nr.
12, giver det dekrypteret "UserIsRoot=1, Username=johndoe".


... ville have FUT'et den, men dk.kryptering findes ikke.

/Kasper



Jimmy (16-03-2004)
Kommentar
Fra : Jimmy


Dato : 16-03-04 08:54


"Kasper Pedersen" <ngfilter@kasperkp.dk> wrote in message
news:4056ae87$0$67451$edfadb0f@dtext02.news.tele.dk...
>
> "Jimmy" <nyhedsgruppe2001@FJERN.yahoo.co.uk> wrote in message
> news:c367cq$j6a$1@sunsite.dk...
> >
> >
> > Ja det forstås nu.
> > Er RC4 komplet uanvendelig i praksis eller er den nyttig, hvis man på en
> > eller anden måde anvender forskellige adgangskoder hver gang?
>
> Slet ikke uanvendelig.
>
> Hvis du hver gang du skal bruge den finder på en tilfældig s,
> s = random_16_karakterer
> og derefter krypterer som
> c = RC4( plaintext, MD5(pass+s) )
> og gemmer c og s så er du ude over det problem.

Det jeg skal gemme er således den brugervalgte kode samt det tilfældige s
som blev valgt da hans data blev krypteret. c kan jeg vel så finde frem til,
når jeg har de to ting, ikke?


> Dog: før du kører sidste sløjfe af din RC4 rutine skal du køre den uden
data
> (sidste linje) 256 gange.

Det fik jeg ikke fat i.


> Mindre statistisk hovsa i RC4 der gør, at de
> første par hundrede byte output er risikable at bruge.

Hehe - sjovt nok. Må lige søge på Google og få resten af historien.


> Og det er stadig muligt at ændre i en krypteret streng. lægger du 1 til en
> karakter, så er den 1 større efter dekryptering. Vigtigt hvis du tror du
kan
> gemme strengen "UserIsRoot=0, Username=johndoe" krypteret i en cookie på
> brugerens maskine, og stole på den når du får den leveret tilbage. I dette
> eksempel, givet en krypteret streng, og man lægger 1 til krypteret byte
nr.
> 12, giver det dekrypteret "UserIsRoot=1, Username=johndoe".

Ahh - Krypteringen sikrer - i nogen grad - at man ikke kan læse hvad der
står, men ikke at man ikke kan *ændre* i den. Kunne være man skulle tilføje
en note til funktionen

Takker,
Jimmy




Kasper Dupont (16-03-2004)
Kommentar
Fra : Kasper Dupont


Dato : 16-03-04 12:52

Kasper Pedersen wrote:
>
> Og det er stadig muligt at ændre i en krypteret streng.

Ja, hvis man vil forhindre det, skal man bruge noget
helt andet. Enten en MAC eller en signatur.

--
Kasper Dupont -- der bruger for meget tid paa usenet.
For sending spam use mailto:aaarep@daimi.au.dk
/* Would you like fries with that? */

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste