[ overdose @ 06.09.2004. 17:32 ] @
Pozdravljam sve clanove foruma.
Ne bavim se kriptografijom,ali me je nesto zaintrigiralo prilikom pisanja jednog programa u Pascal-u.
U pitanju je veoma jednostavan program (koder) za koji sam odmah napisao i dekoder. Kodovi slede:

Code:

program Koder;
  var
    f,g:text;
    ch:char;
  begin
    assign(f,'plain.txt'); reset(f);
    assign(g,'kodiran.txt'); rewrite(g);
    while not eof(f) do
      begin
        while not eoln(f) do
      begin
        read(f,ch);
        ch:=succ(ch);
        write(g,ch);
      end;
    readln(f); writeln(g);
      end;
    close(f); close(g)
  end.


Code:

program Dekoder;
  var
    f,g:text;
    ch:char;
  begin
    assign(f,'kodiran.txt'); reset(f);
    assign(g,'dekodiran.txt'); rewrite(g);
    while not eof(f) do
      begin
        while not eoln(f) do
      begin
        read(f,ch);
        ch:=pred(ch);
        write(g,ch)
      end;
    readln(f); writeln(g)
      end;
    close(f); close(g)
  end.


Ako je sada,na primer,plain.txt:

Code:

Clear fruit nectar. Produced from concentrated sour cherry and apple juice.

Fruit contents: minimum 52%.

Ingredients: concentrated sour cherry and apple juice, water, sugar and citric acid.

Pasteurized, without preservatives.


EGO


Posle pokretanja kodera se dobija kodirani.txt:

Code:

Dmfbs!gsvju!ofdubs/!Qspevdfe!gspn!dpodfousbufe!tpvs!difssz!boe!bqqmf!kvjdf/

Gsvju!dpoufout;!njojnvn!63&/

Johsfejfout;!dpodfousbufe!tpvs!difssz!boe!bqqmf!kvjdf-!xbufs-!tvhbs!boe!djusjd!bdje/

Qbtufvsj{fe-!xjuipvu!qsftfswbujwft/


FHP


Voleo bih da mi neko,kao laiku,objasni kako je uopste moguce da neko dekodira,gore kriptovanu,poruku ako ne zna algoritam (nema kod).

OvErDoSe
[ Lord_Sauron @ 06.09.2004. 19:20 ] @

Koliko sam ja shvatio, ti zamjenjuješ neko slovo prvim sledećim po abecedi.

Ovo je jedan od najjednostavnijih algoritama, našao sam ga u nekim knjigama o kriptografiji koje su stare i po 30 godina (vojne) a sam algoritam je mnogo mnogo stariji (koliko sam pročitao da se koristio i u antičkoj grčkoj i starom rimu ;).

U toj knjizi su takođe navedeni i znatno napredniji algoritmi, a u zadnjih 30 godina se znatno uznapredovalo. Tako da ako je moglo tada i to ručno, može i sada uz pomoć računara i do dosta lako. Da ne napominjem da su se u drugom svjetskom ratu koristile znatno znatno komplikovanije šeme kriptovanja (Enigma naprijer) ali pošto se ja ne razumijem u istoriju kriptografije, to će ti neko drugi detaljnije objasnit.

Najjednostavniji način za dešifrovanje tvog algoritma je brute force. Iako se možda čini da se neko ne bi sjetio tako starog algoritma, veoma ej jednostavno zaključit da si se zadržao na zamjeni slovo za slovo (bez obzira na odabranu šemu) jer je i očigledno da je sintaksa rečenica ista i u plaintextu i u kriptovanom.

To se najlakše radi nalaženjem najčešćeg sloga (postoje tablice najčešće korišćenih rječi za svaki jezik) i testiranjem na njemu svih algoritama. Kasnije se na cijeli tekst primjene oni algoritmi koji su prošli selekciju.

Ovo je sve ručno dešifrovanje što sam opisao, a sa kompom možeš direktno da testiraš cijeli tekst sa svim algoritmima i koristiš neku ditionary provjeru, da vidiš jesi li na dobrom putu, i koje šeme obećavaju.

Ovo obično svima padne na pamet kad počinju da razmišljaju na temu kriptovanja ;)
[ Lord_Sauron @ 06.09.2004. 19:23 ] @
P.S. Zar stvarno misliš da bi se matematičari širom svjeta ubijali od posla da dođu do što sigurnijeg algoritma ;)

Ukoliko te već interesuje ova tema, onda malo potraži po internetu, imaš dosta referenci pogodnih i z početnike, pa uzmi i vježbaj.

Naravno za pomoć možeš uvjek da se obratiš na forumu, ali pokušaj prvo malo i sam.

Pohvalno je makar to što si se potrudio, tako da ... samo nastavi, ne može da škodi ;)
[ Dundjerski Nemanja @ 06.09.2004. 19:46 ] @
Sve algoritme ovog tipa najlakse je resiti tako sto izdvojis neku rec, na primer, od tri slova: uzmimo za primer rec "boe: iz tvog teksta.
B - prethodno slovo je A
O - prethodno slovo je N
E - prethodno slovo je D

Rec je validna : and. - odatle bih zakljucio da si umesto znaka koristio sledeci znak.
Takodje lako je uociti da su spaceovi zamenjeni sa "!". Eto vec odatle je lako videti koja se formula koristi za enkodovanje.

Dakle, najlakse je traziti rec od recimo tri slova, ako je Engleski jezik u pitanju trazimo samo za "the".

Ako bas i ne moze da se provali tako, onda bih napisao program koji bi uzimao tekst sa standardnog ulaza (tstatura ili datoteka) i dekodirao ga prvo sa +1 pa +2 pa +3 itd. Znaci dodavao bi na brojcanu reprezentaciju znaka u ascii formatu +1, i tako bi recimo za slovo "A" koje je u ascii kodu 65 decimalno dodavanjem jedinice dobio ascii kod 66 i to bi bilo "B" slovo.

Uradio bih da snima rezultat dekriptovanja u datoteke sa imenima "plus_1.txt", "plus_2.txt" ... i onda bih redom citao koji tekst moze da se procita.

Pozdrav.
[ Lord_Sauron @ 06.09.2004. 22:10 ] @
Citat:
Dundjerski Nemanja: Sve algoritme ovog tipa najlakse je resiti tako sto izdvojis neku rec, na primer, od tri slova


Pa to sam i ja rekao, šta se tu razlikuje?

Citat:
Dundjerski Nemanja: Ako bas i ne moze da se provali tako, onda bih napisao program koji bi uzimao tekst sa standardnog ulaza (tstatura ili datoteka) i dekodirao ga prvo sa +1 pa +2 pa +3 itd. Znaci dodavao bi na brojcanu reprezentaciju znaka u ascii formatu +1, i tako bi recimo za slovo "A" koje je u ascii kodu 65 decimalno dodavanjem jedinice dobio ascii kod 66 i to bi bilo "B" slovo.

Uradio bih da snima rezultat dekriptovanja u datoteke sa imenima "plus_1.txt", "plus_2.txt" ... i onda bih redom citao koji tekst moze da se procita.


Osim što bi morao da pročitaš svaki od tih fajlova (ako ne koristiš neku provjeru po rječniku, kao što sam naveo), javlja se još jedan problem. Kod direktne zamjene znak za znak, algoritam ne mora da bude samo pomak za + nekoliko. Isto tako (a u staroj praksi i češće) je i zamjena za obrnutu abecedu. Naprimjer imaš slovo određenog redoslijeda i zamjeniš ga za slovo negovog redoslijeda od pozadi (sa kraja niza, tj. abecede). Ili i takva zamjena plus određeni pomak.

Ovi algoritmi su jednostavni i u praksi se odavno ne koriste. Ukoliko tražite neki primjer za vježbanje probajte sa matricama (vertikalno, spiralno, ja sam koristio i serpentine od jednog ćoška, ma kakvo god već hoćeš).

Prost primjer vertikalne matrice

Kako
si mi
over
dose

i to kasnije bude:

"Ksod#aivo#k#es#omre##i###"

( taraba # znači prazno mjesto, pošto ES jede prazninu, proždrljivac mali ;)

Ukoliko ovo nije jasno, oglasite se pa ću da pomognem;)

Nađite onu temu na kojoj smo diskutovali direktno u hex kodu, brcha je objašnjavao neke osnovne algoritme.
[ Dundjerski Nemanja @ 08.09.2004. 18:20 ] @
Citat:
Pa to sam i ja rekao, šta se tu razlikuje?

Sorry nisam citao ;).
Super za matrice. Vidi, ne bavim se ni ja kriptografijom, nego sam nedavno uzeo neke tekstove da citam i zainteresovao se.

Pozdrav.
[ overdose @ 08.09.2004. 18:38 ] @
Svestan sam da je gornji algoritam prost,ali sam ga naveo kao primer kako bi se malo prodiskutovalo o ovome.Medjutim i dalje mi nije kristalno jasno koji su to 'provereni' principi za dekriptovanje.Verovatno i ne postoje.Kao sto si i sam rekao,matematicari se ubijaju oko sigurnijeg algoritma.Uzmimo na primer algoritam koji si ti naveo.On je dosta slozeniji.Kako bi nekom palo na pamet da to dekriptuje? Svakako cu morati malo vise da procitam ako zelim neke odgovore.

over
[ Shadowed @ 08.09.2004. 22:37 ] @
Pazi, ako imas zamenu jednog karaktera drugim, sve jedno da li je +1 ili skroz izmesano (npr. m menjas sa a, n sa j, k sa z...) na racunaru mozes da izdvojis neku rec od 3 slova i probas sa svim mogucim kombinacijama. Kad naidjes da neka kombinacija daje rec koja postoji u recniku probas jos neku rec. Ako se slaze imas 3 dobijena slova pa probas sa jos nekima itd.
To je u principu isto sto su ti vec rekli samo sto je opstije jer vazi za bilo koju zamenu slova.

E sad pitanje je kako ces ti da desifrujes ako neko sifruje fajl tako sto prvom bajtu doda 1, drugom 2, trecem 3 itd. Kad stigne do 255, krene od pocetka. Naravno ako je zbir veci od 255 od njega se oduzima 255. Takve stvari nisu uopste jednostavne ako trebas da provalis algoritam (znaci, uopste ne znas o cemu se radi).