[ premier @ 31.03.2011. 19:47 ] @
Radi se o tome da moram neke otvorene tekstove da zašifriram koristeći DES i belaj je kada sve to završim, dobijem šifrat , kako znati da je tačno xD..
Da razjasnim, radim sve ručno :)...

E sad me zanima, da li ima kakav programčić, preko kojeg bi mogao da provjerim dali mi je to tačno što sam uradio. Pokušavao sam sa Cryptool-om ali čini mi se da ne radi ispravno. Pa ako ko ima kakav prijedlog ili ga još šta zanima , pitajte da ne objašnjavam u detalje :)
[ Blaise De Vigenere @ 31.03.2011. 21:54 ] @
Ima sajt na kojem možeš proveriti jel dobro enkriptovano (bez ikakvog programa i downloada, sve on-line). Uneseš ključ, izabereš algoritam i čekaš da dekriptuje.

www.tools4noobs.com
[ premier @ 31.03.2011. 22:37 ] @
Evo primjer. Preko njega provjeravam da li radi ispravno. Nemogu se snaci ovdje xD... Treba recimo 760134EA15C41A89 (zapisano heksadecimalno) šifrirati s DES-om s ključem FE38AB682573C489 ...

Trebao bih da dobijem šifrat zapisan heksadecimalno E62AD1DD41C58C1F ali neide :S
[ Blaise De Vigenere @ 31.03.2011. 23:11 ] @
Citat:
premier: Da razjasnim, radim sve ručno...

Da li si siguran da si ručno dobro uradio enkripciju? Možda nije problem u crypttool-u...
www.di-mgt.com.au/cryptopad.html
______________________________________________________________________________________________
DES kriptovanje/dekriptovanje se sprovodi u nekoliko koraka . Prvo se bitovi ulaznog bloka dužine 64 bita permutiraju nekom permutacijom IP. Tada se ulazni blok podeli na dva dela po 32 bita, levi L0 i desni deo R0. Nad desnim blokom se obavlja funkcija F(Ri,Ki), odnosno F(Ri,K16 − i + 1) kod dekriptovanja, gde je Ri desnih 32 bita, a Ki je 48 bitni ključ koji se generiše iz zadanog tajnog ključa kriptovanja. Vrednost dobijena operacijom XOR između vrednosti funkcije F i levih 32 bita podataka, postaje Ri + 1, tj. desnih 32 bita za sledeći korak iteracije. Li + 1 za sledeći korak je Ri. Nakon 16 takvih koraka blokovi se zamenjuju te se spajaju i obavlja se konačna permutacija koja je inverzna početnoj, tj. IP − 1. Dobijenih 64 bita su kriptovani blokovi. Budući da se nakon dve uzastopne operacije XOR sa istim brojem dobija početna vrednost, tj. a = (aĹ b)Ĺ b , postupak dekriptovanja može se sprovesti tako da se operacije obavljaju obrnutim redosledom. Zbog simetričnosti algoritma to se postiže tako da se kriptovani blok pusti kroz isti algoritam sa tom razlikom da se umesto ključa Ki u i-tom koraku upotrijebi ključ K16 − i + 1. Postupak generisanja šestnaest 48 bitnih ključeva od zadanog, tajnog ključa sprovodi se u nekoliko koraka. Prvo se pomoću zadane tablice permutacije iz ključa generišu dva bloka po 28 bita. Zatim sledi 16 sledećih koraka: svaki se blok rotira u levo za određeni broj bita (u zavisnosti o kojem je koraku reč) te se iz nastalih blokova (2x28) pomoću tablicom zadate permutacije generše ključ Ki, gde je i broj koraka. Funkcija enkripcije F jeste zapravo najkritičniji deo algoritma. Vrednost funkcije dobija se u nekoliko koraka. Najpre se od ulaznih 32 bita (Ri) proširenjem zadanom tablicom dobija 48 bita. Ta se vrednost zbraja logičkom operacijom XOR sa ključem Ki paralelno nad svakim bitom. Dobijena se 48 bitna vrednost deli na osam delova od po šest bita. Prvi i zadnji bit svakog dela predstavlja adresu reda, a srednja četiri adresu kolone u tablici selekcije, odnosno, pomoću šest određena su četiri bita. Istim postupkom nad svakom šestorkom od ulaznih 48 bita selekcijom dobijamo 32 bita. Tih se 32 bita još permutira zadatom tablicom te se dobija konačna vrednost funkcije F.
[ premier @ 31.03.2011. 23:20 ] @
Phuh... Ne kontam. Ova enkripcija koju imam uradjenu, znaci prethodni primjer sam dobio urađenu od ass na faxu, tako da je to ono što bih trebao dobiti, pa sam preko toga pokušao da testiram cryptool ali ne dobijam isti šifrat. Sada imam neku zadaću za odraditi pa mi treba testirano dobar program preko kojeg mogu provjeriti rjesenje kada odradim zadatak.

P.S. Dobar nick ;)
[ Blaise De Vigenere @ 31.03.2011. 23:29 ] @
DES je previše komplikovan da bi se ručno radio. Crypttool je proveren program. Preko njega sve radi i preko njega ćeš moći i dešifrovati a to će biti ispravna enkripcija. Ja isto volim raditi ručno (ne DES, već osnovne oblike enkripcije - pre računarskog doba) ali crypttool se više puta pokazao kao zaista koristan i redovno ga koristim (za e-mail komunikaciju sa određenim ljudima). Radi preko njega i biće sve ok (možda nisi nešto dobro prepisao...).
[ premier @ 31.03.2011. 23:43 ] @
Belaj je što moram raditi ručno jer treba sve objasniti, svaki korak, šta i kako sam radio (bolonja tako nalaže :D)..Nije mi to bio problem kod Cezara, Vigenera, Afine i drugih metoda ali DES je stvarno "uvrnut". Sve kada završim ne znam da li sam dobro uradio, to mi je frka. Jel možete Vi provjeriti da li kod Vas ovako šifrira . Otvoreni tekst je: 760134EA15C41A89,a ključ je FE38AB682573C489. Veli na kraju, poslije 16.rundi dobijemo: E62AD1DD41C58C1F. Pokušajte, ako kod Vas prolazi ovako, vjerojatno ja nešto griješim u Cryptool-u :-S...

[Ovu poruku je menjao premier dana 01.04.2011. u 00:54 GMT+1]
[ Blaise De Vigenere @ 01.04.2011. 08:47 ] @
Preko računara ne dobijem taj rezultat. Jel ti asistent dao ispisan ceo postupak kako je došao do tog rezultata? Ako jeste okači da vidimo. Možda ima negde greška. Koji je mod koristio? Ajd videću ako stignem za vikend pa da odradim ručno pa ću videti koji ću rezultat dobiti.
[ premier @ 01.04.2011. 10:02 ] @
Jel mi se mozete javiti na [email protected] pa cu Vam preko e-maila poslati dokument jer ima na dokumentu njegovo ime pa nesmijem javno da objavljujem...
[ premier @ 01.04.2011. 18:11 ] @
Evo slike :
[ EArthquake @ 01.04.2011. 20:04 ] @
cekaj bre malo, el moras napamet da znas kako se radi enkripcija? :D

to mi je van pameti, van pameti mi je i "rucno" kriptovanje uz opis algoritma
[ premier @ 03.04.2011. 20:31 ] @
Nov sam u ovome , pa nemojte pitati teska pitanja :)...Ovdje na ovom LINKU imaju informacije kako su nas ucili da to radimo i tako radimo... Neznam zasto se tolika frka dize oko toga. Interesuje me jednostavno dali je to rjesenje tacno i nacin na koji da provjerim rjesenje kada sifriram neki drugi otvoreni tekst.
[ Blaise De Vigenere @ 03.04.2011. 21:03 ] @
Pretpostavio sam da pratite web.math.hr, ali ima i bolje objašnjenih sajtova (doduše na engleskom). Ja nisam stigao to ručno da odradim (a i treba malo napregnuti mozak). I dalje mislim da je previše što traže da to ručno radite. Evo ti još par korisnih linkova o DES enkripciji/dekripciji:
Link 1
Link 2

Ajd baš javi da li je to bilo tačno rešenje ili je u pravu bio Crypttool i on-line encryption sajt.

I napiši nam ovde kad završiš postupak (ako ti nije problem) da vidimo kako to taj tvoj asistent radi. Ok? Da i mi nešto naučimo... :)
[ EArthquake @ 04.04.2011. 08:06 ] @

$ python
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = file('plain',"w")
>>> f.write("\x76\x01\x34\xEA\x15\xC4\x1A\x89")
>>> f.close()
>>>
[[email protected] ~]
$ openssl enc -des-ecb -K FE38AB682573C489 < plain > enc
[[email protected] ~]
$ xxd enc
0000000: e62a d1dd 41e5 8c1f 47ca 250f c64f ddec .*..A...G.%..O..
[[email protected] ~]
$ openssl enc -d -des-ecb -K FE38AB682573C489 < enc > dec
[[email protected] ~]
$ xxd dex
xxd: dex: No such file or directory
[[email protected] ~]
$ xxd dec
0000000: 7601 34ea 15c4 1a89 v.4.....
[[email protected] ~]
$


znaci , kriptovano je e62a d1dd 41e5 8c1f 47ca 250f c64f ddec sto i ti treba da dobijes koliko vidim

[ EArthquake @ 04.04.2011. 08:21 ] @
obrati paznju da plaintext unosis/kriptujes kao bajtove a ne ascii karaktere
[ premier @ 08.04.2011. 20:18 ] @
Nisam bio odavno. Sad za vikend cu odraditi pa cu staviti nacin na koji mi radimo, tj na nacin na koji smo nauceni da radimo.

Što se tiče ove enkripcije, nije tačno ona koja treba, približno jeste ali nije to to (ako jest neka neko objasni-ja ne kontam :) ). Da li mi mozes objasniti kako da unosim kao bajtove. Gdje kad unosim da pazim?
[ EArthquake @ 10.04.2011. 16:06 ] @
fajl plain sadrzi

760134EA15C41A89


ali sadrzi te bajtove a ne taj string, to je ono "\x76\x01\x34\xEA\x15\xC4\x1A\x89"
sto i pise u tvom zadatku

zatim , openssl je program u linuxu koji ima veliki broj cipher-a implementiranih
izmedju ostalog i DES


[[email protected] ~]
$ openssl enc -des-ecb -K FE38AB682573C489 < plain > enc


ovime mu kazem da enkriptuje fajl plain DESom (u ecb modu posto je samo jedan blok , a ti ne pominjes IV ili bilo sta, pa predpotavljam da je ECB ...) koristeci FE38AB682573C489
kao kljuc , gde FE38AB682573C489 predstavlja heksadecimalno zapisane bajtove , a ne
direktno taj string (-K oznacava da ucitava kljuc u hex... zapisu)

nakon enkripcije , ako pogledamo fajl enc :

[[email protected] ~]
$ xxd enc
0000000: e62a d1dd 41e5 8c1f 47ca 250f c64f ddec .*..A...G.%..O..


e sad, DES dodaje padding
pa ako dodas -nopad opciju
dobijes sledece


[[email protected] ~]
$ openssl enc -des-ecb -K FE38AB682573C489 -nopad < plain > enc
[[email protected] ~]
$ xxd enc
0000000: e62a d1dd 41e5 8c1f .*..A...
[[email protected] ~]
$


sto onda daje razliku od resenja u jednom jedinom bitu

>>> bin(0xc5 ^ 0xe5)
'0b100000'
>>>

rekao bih da je mozda greska u resenju ?
[ premier @ 11.04.2011. 17:26 ] @
Jeste, ima greska u jednom bitu, sada kad si mi stavio ovako da vidim primjetio sam. Ja imam instalirano i Ubuntu ali sam doomie sto se tice toga, procackat cu da vidim sta moze openssl...Ako bude trebala pomoc znam gdje cu je treziti.

Evo kako smo mi nauceni da radimo:

1.Zadani kljuc pretvorimo u binarni zapis.
2.Kljuc permutiramo tablicom PC1.
3. Sada dobiveni permutirani kljuc rastavimo na 2 jednaka dijela i dobijamo C0 i D0 te vrsimo permutacije tako da u 1,2,9,16 koraku vrsimo pomjeranje za jedan, a u svim ostalim koracima vrsimo pomjeranje po 2 bita i dobivamo (C0,D0), (C1,D1), ..., (C16,D16)
4.Zatim racunamo međukljuceve (Ki=PC2(CiDi)) i dobijamo K1,K2, ..., K16
5. Sada otvoreni tekst napisemo binarno i zatim ga permutiramo tablicom IP.
6. Dobiveni tekst podijelimo na dva dijela i dobijemo L0 i R0.

Sada racunamo prvu rundu:
Imamo L0 i R0. Na R0 primjenimo tablicu E. Dobijemo E(R0). Uzmemo kljuc K1 i uradimo E(R0)XILI K1 (eksluzivno ili, kada su isti onda je 1 a razliciti onda je nula).
To nam je sada B. Taj B podijelimo u 8 parova po 6 bitova a zatim primjenimo tablicu S-kutija DES algoritma. Prva i zadnja cifra određuju red, a unutrasnje 4 cifre određuju kolonu u kojoj se trazeni broj nalazi, a zatim sve dobivene brojeve zapisemo u binarnom sistemu, redom onako kako dolaze.
Dobjemo sada C i permutiramo ga sa tablicom P. Oznacimo to kao f(R0, K1) i nađemo sada R1 a on nam je R1= L0 XILI f(R0,K1)

Sada na analogan nacin radimo jos 2.,3.,....15.,16. rundu.

Nakon zadnje runde spojimo R16 i L16 u 64 bita. Permutiramo sa IP(-1) i dobijemo šifrat binarno. Pretvorimo ga u heksadecimalno i to je to :D

Ako neko bude zainteresovan mogu mu na e-mail poslati primjer kako se to radi, imam cini mi se u wordu...


Napomena:

Sve ove tablice, P, E, IP, ...se nalaze u knjizi A. Dujelle...