Uploaded by davronovazuhra58

Xesh funksiya

advertisement
O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA
KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
SAMARQAND FILIALI
“TASDIQLAYMAN”
O‘quv va tarbiyaviy ishlar
bo‘yicha direktor o‘rinbosari
dots. Z.A. Qarshiyev
_______________
“__” _________ 2020-yil
“AXBOROT XAVFSIZLIGI” KAFEDRASI
OpenSSL kutubxonasidan foydalangan holda ma’lumotlarni xesh
qiymatini hisoblash
«Kriptografiya 1» fanidan amaliy mashg‘ulotlari uchun
Uslubiy ko‘rsatma
(5330300-Axborot xavfsizligi ta’lim yo‘nalishi talabalari uchun)
Samarqand-2020
Zaynalov
N.R.,
Aliyev
N.A.,
Achilov
S.S.,
Qilichev
D.
OpenSSL
kutubxonasidan foydalangan holda ma’lumotlarni xesh qiymatini hisoblash. Uslubiy
ko‘rsatma. Samarqand: TATU SF nashri, 2020, 27 bet.
Mazkur uslubiy ko‘rsatmada “Kriptografiya 1” fani bo‘yicha amaliy
mashg‘ulotlarni o‘tkazish bo‘yicha to‘liq va batafsil tavsiyalar berilgan. Keltirilgan
mavzu bo‘yicha talabalar tomonidan o‘zlashtirishni aniqlashda
yangi pedagogik
texnologiyalardan keng foydalanilgan.
Uslubiy ko‘rsatma Axborot xavfsizligi ta’lim yo‘nalishi uchun mo‘ljallangan
bo‘lib, undan talabalar o‘zlarining bilimlarini mustaqil ravishda ham oshirishlari
mumkin.
Tuzuvchilar:
Zaynalov N.R. – TATU SF, «Axborot xavfsizligi» kafedrasi mudiri, dotsent, f.-m.f.n.
Aliyev N.A. – TATU SF, «Axborot xavfsizligi» kafedrasi dotsent, f.-m.f.n.
Achilov S.S. – TATU SF, «Axborot xavfsizligi» kafedrasi k.o‘q., i.f.n.
Qilichev D. – TATU SF, «Axborot xavfsizligi» kafedrasi assistenti.
Taqrizchilar:
Yakubjanova D. – TATU SF, «Axborot ta’lim texnologiyalari» kafedrasi mudiri.
Urunbayev E. – SamDU, «Modellashtirish» kafedrasi dotsenti, f.-m.f.n.
Uslubiy ko‘rsatma "Axborot xavfsizligi" kafedrasi majlisining 2020-yil 28avgust № 1 bayonnomasi bilan tasdiqlangan.
Uslubiy ko‘rsatma TATU SF o‘quv-uslubiy kengash tomonidan tavsiya
qilingan 29 - avgust 2020-yil №1-bayonnoma.
MUNDARIJA
Kirish ............................................................................................................................. 4
1. Xesh funksiya haqida ................................................................................................ 4
2. MD5 xesh funksiyasi................................................................................................. 7
3. Qisqartirilgan MD5 algoritmini amaliy qo‘llashga misol....................................... 11
4. SHA xeshlash algoritmi .......................................................................................... 18
Amaliy mashg‘ulot ..................................................................................................... 21
Amaliy mashg‘ulot ishini bajarish tartibi................................................................... 26
Hisobotni rasmiylashtirish tartibi ................................................................................ 28
Amaliy mashg‘ulotlari uchun variantlar .................................................................... 28
Foydalanilgan adabiyotlar ........................................................................................... 30
1-ilova. ASCII jadvali ................................................................................................. 31
2-ilova.Sanoq tizimlari ............................................................................................... 33
3-ilova. Mantiqiy amallarni yagona jadvali ................................................................ 34
Sadaqaning afzali musulmon kishining ilm
o‘rganib, so‘ng boshqa musulmon birodarlariga
ham o‘rgatishidir.
Xadis
Kirish
Zamonaviy MD5 algoritmi ХХ asrning 90-yillarida yaratilgan bo‘lib, bevosita
xesh-funksiyani
shakllantiruvchi
MD4
algoritmining
yaxshilangan
varianti
hisoblanadi. Bunda MD quyidagi so‘zlardan Message Digest tashkil topgan. Ushbu
MD4 va MD5 algoritmlarining muallifi R.Rivest hisoblanadi. MD5 algoritmining
natijasi 128-bitli xesh-kod bo‘ladi. Kiruvchi ma’lumotlar
512 bitli
bloklarga
taqsimlanadi va qayta ishlanadi. Algoritmda arifmetik amallar bilan birgalikda oddiy
mantiqiy operatsiyalar ham qo‘llaniladi, masalan, mantiqiy qo‘shish, ko‘paytirish,
inkor etish va boshqalar. Ushbu operatsiyalarning har xil shaklda qo‘llash orqali
ma’lumotlarni aralashtirishga imkon beradi.
MD5 algoritmi parollarni shifrlash, fayllarni butunligini nazorat qilish, elektron
raqamli imzoda va kriptografiyaning boshqa sohalarida qo‘llaniladi.
1. Xesh funksiya haqida
Kriptografiyada, xesh-funksiya deb ixtiyoriy uzunlikdagi (bitlar yoki baytlar
birliklarida) ma’lumotni biror fiksirlangan (belgilangan) uzunlikdagi (bitlar yoki
baytlar
birliklariga)
qiymatga o‘tkazib
beruvchi
funksiyaga
aytiladi.
Xesh
funksiyalardan amalda statistik tajribalar o‘tkazishda, mantiqiy qurilmalarni
tekshirishda, ma’lumotlar bazasida tez qidirib topish algoritmlarini yaratishda va
ma’lumotlar bazasidagi ma’lumotlarning butunligini tekshirishda foydalaniladi.
Xesh funksiya (ingl. hash function) deb, ixtiyoriy uzunlikdagi M ma’lumotni
fiksirlangan uzunlikdagi h(M)=H qiymatga akslantirib beruvchi, oson hisoblanadigan
bir tomonlama funksiyaga aytiladi.
Xesh funksiya: “xesh qiymat”, “daydjest”, “barmoq izlari” deb ham ataladi.
Xesh funksiyaga nisbatan quyidagi talablar qo‘yiladi:
1.
Ixtiyoriy uzunlikdagi matn uchun qo‘llab bo‘lishlik.
2.
Chiqishda belgilangan uzunlikdagi qiymatni berishlik.
3.
Ixtiyoriy berilgan x bo‘yicha h(x) oson hisoblanishlik.
4.
Ixtiyoriy berilgan H bo‘yicha h (x)= N tenglikdan x ni hisoblab topib
bo‘lmaslik. (Bir tomonlamalik xususiyati).
5.
Olingan x va y ≠ x matnlar uchun h(x) ≠ h(y) munosabat o‘rinli bo‘lishi.
(Kolliziyaga bardoshlilik xususiyati).
Demak, xabar daydjesti (ingl. message digest) – bu muayyan usul yordamida
beriladigan bir tomonloma xesh-funksiya yordamida ma’lumotlarni qayta ishlash
natijasi hisoblangan qayd etilgan uzunlikdagi simvollarning noyob ketma-ketligi.
Xeshlash algoritmi (ingl. Hashing algorithm) – chekli uzunlikdagi dastlabki
ketma-ketligini qayd qilingan uzunlikdagi bitlarning ketma-ketligiga almashtiruvchi
kriptografik algoritm.
Agar kolliziyalarni aniqlash murakkab bo‘lsa, xesh-funksiya ziddiyatsiz
hisoblanadi.
Bu yerda kolliziya – bu ikki turli dastlabki ma’lumotlar uchun bir tomonlama
funksiyaning qiymatlari teng bo‘lgan voqea.
Bir tomonlama funksiya – bu berilgan x argument bo‘yicha f(x) funksiyaning
qiymatini hisoblash oson, lekin f(x) dan x ni aniqlash qiyin bo‘lgan funksiya.
Xesh, xesh qiymat (ingl. hash, hash value) – bu ma’lumotlar ketma-ketligidan
ishlab chiqariladigan va boshqa kirish ma’lumotlaridan xuddi shunday qiymatini hosil
qilish ehtimoli kamayadigan tarzda generatsiyalanadigan son.
Xesh-kod – bu xesh-funksiyaning chiqish natijasi bo‘lgan bitlar satri.
Xeshlash – bu xesh-funksiya qiymatini hisoblash jarayoni.
Xesh-funksiya (ingl. Hash function) – bu chekli uzunlikdagi bitlar satrini qayd
qilingan uzunlikdagi bitlar satriga o‘zgartirish funksiyasi. Asosan ushbu qiymat 64
yoki 128 bitdan tashkil topgan bo‘ladi.
Xesh-funksiyaning mazmun-mohiyati bevosita xesh kodga asoslangan ushbu
kodni hosil qiluvchi funksiya argumetni haqida qandaydir xulosa qilish. Masalan,
ikkita massivning xesh-kodlari har xil bo‘lsa, demak ushbu massivlar bir-biriga teng
bo‘lmaydi. Ammo,
xesh-kodlari teng bo‘lsa, massivlar ham teng ekanligini
bildirmaydi. Chunki, umumiy holda xesh-kodlarning soni kiruvchi qiymatlar sonidan
ancha kam bo‘ladi. Demak ikkita har xil kiruvchi qiymat bitta xesh-kodga ega bo‘ladi,
ya’ni kolliziya sodir bo‘ladi. Ushbu holatning sodir bo‘lish ehtimoli bevosita xeshfunksiyani tahlil qilishda juda muhim ahamiyatga ega.
Eng oddiy xesh-funksiya sifatida quyidagini taklif qilish mumkin, masalan,
berilgan belgilar qatoridagi har bir baytni Xor operatsiyasi bilan qo‘shib chiqsak,
natijada bir bayt olinadi. Ushbu natija 8 bitli xesh-kod bo‘ladi va kirish qatorining
uzunligi qanday bo‘lishidan qat’iy nazar doimo bir bayt bo‘ladi.Masalan, quyidagi o‘n
oltilik qator berilgan bo‘lsin: 3E 54 A0 1F B4. Ushbu qatorni ikkilik ko‘rinishga
o‘tkazib, Xor bilan qo‘shamiz:
0011
0101
1010
0001
1011
0110
1110
0100
0000
1111
0100
0001
Bu yerdagi natija 0110 00012 yoki 6116 xesh-kod bo‘ladi. Ammo bunday oddiy xeshfunksiyani kriptografiyada qo‘llash tavsiya etilmaydi.
Shu bois xesh-funksiyaga
quyidagi talablar qo‘yiladi:
• har qanday uzunlikdagi xabarga xesh-funksiyani qo‘llash mumkin bo‘lishi kerak;
• xesh-funksiyani hisoblash oz vaqt talab qilishi kerak;
• xesh-funksiya f(M) ma’lum bo‘lsa, uning argumentini M aniqlash murakkab bo‘lishi
kerak;
• agar M ma’lum bo‘lsa, unda f(M) ga teng bo‘lgan boshqa M* xabarni aniqlash
murakkab masala bo‘lishi kerak;
• xesh-funksiyalari teng bo‘lgan tasodifiy ikki xabarning mavjudligini aniqlash
murakkab masala bo‘lishi kerak.
Ushbu talablarga javob beradigan xesh-funksiyani yaratish murakkab masala
hisoblanadi.
Hozirgi kunda xabarni bloklarga taqsimlab, so‘ng bloklar bo‘yicha
xesh-
funksiyani hisoblash amalyotda taklif qilingan. Bunda har bir xabar uchun Mi xeshfunksiya hi quyidagicha hisoblanadi hi=H(Mi,hi-1). Natijada olingan hn qiymati barcha
bloklarga bog‘liq bo‘ladi.
2. MD5 xesh funksiyasi
MD5 algoritmda kiruvchi ma’lumot uzunligi ixtiyoriy bo‘lib, xesh qiymat
uzunligi 128 bit bo‘ladi. MD5 xesh funksiyasi algoritmida kiruvchi ma’lumot 512
bitlik bloklarga ajratilib, ular 16 ta 32 bitlik qism bloklarga ajratiladi va bular ustida
amallar bajariladi.
Ushbu algoritmda "so‘z" tushunchasi sifatida 32 bitli ma’lumot deb qabul
qilinadi.
Algoritm boshiga kirish ma’lumotlar oqimi N bitdan iborat bo‘lib, ularni qadambaqadam qayta ishlab xesh-kod tashkil qilinadi. Ushbu qadamlar bilan tanishamiz.
1-qadam: oqimni to‘ldirish.
Oqimni to‘ldirishda bevosita oqim oxirida 1 va nollar qo‘shiladi. Bunda hosil
qilingan oqim uzunligi 512*n+448 ga, ya’ni 512 moduli bo‘yicha 448 ga teng bo‘lishi
kerak. Oqim uzunligi ushbu shartni bajargan holda ham, oqimni to‘ldirish baribir
amalga oshiriladi.
2-qadam: uzunlikni oshirish.
Boshlang‘ich qator uzunligining ikkilik ko‘rinishi qator oxiridan qo‘shiladi.
Ushbu uzunlik 64 bitli son shaklida yoziladi. Bunda 64 bitli son ikki 32 bitli “so‘z” ga
ajratiladi va ular o‘rinlari bilan almashtiriladi. Natijada tashkil qilingan bitlar oqimi
uzunligi 32 bitli “so‘z” lardan tashkil etilgan bo‘ladi va ular 16 soniga karrali bo‘ladi,
Keyinchalik bajariladigan hisoblashlar uchun N ta so‘zdan tashkil topgan A[0…N-1]
massivi qo‘llaniladi.
3-qadam: MD buferini to‘ldirish.
Keyingi hisoblashlarda ma’lumotlarni buferda vaqtinchalik saqlash uchun 4 ta
so‘zlik uzunlikdagi o‘zgaruvchilar kiritiladi: A, B, C, D. Ushbu o‘zgaruvchilarning
boshlang‘ich qiymatlari quyidagicha qabul qilingan:
A = 0x67452301
B = 0xEFCDAB89
C = 0x98BADCFE
D = 0x10325476
4-qadam: 16 ta so‘zdan iborat blokni qayta ishlash.
Keyingi hisoblashlarda 3 ta so‘zli argumentdan iborat quyidagi funksiyalar
kiritiladi va natija ham so‘z bo‘ladi:
F(x, y, z) = (x ˄ y) ˅ (¬x ˄ z)
G(x, y, z) = (x ˄ z) ˅ (y ˄ ¬z)
H(x, y, z) = x ⊕ y ⊕ z
I(x, y, z) = y ⊕ x ˅ ¬z)
Bu yerda «˄» belgisi bit operatsiyasi AND , «˅» belgisi bit operatsiyasi OR, «⊕»
belgisi bit operatsiyasi XOR, «¬» belgisi bit operatsiyasi NOT.
Ushbu funksiyalarning haqiqiylk jadvali quyidaicha bo‘ladi:
1-jadval
F, G, H, I funksiyalari uchun haqiqiylik jadvali
X
0
0
0
0
1
1
y
0
0
1
1
0
0
z
0
1
0
1
0
1
F
0
1
0
1
0
0
x
0
0
0
0
1
1
y
0
0
1
1
0
0
z
0
1
0
1
0
1
G
0
0
1
0
0
1
x
0
0
0
0
1
1
y
0
0
1
1
0
0
z
0
1
0
1
0
1
H
0
1
1
0
1
0
x
0
0
0
0
1
1
y
0
0
1
1
0
0
z
0
1
0
1
0
1
I
1
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
0
1
0
0
Ushbu qadamda quyidagi o‘zgarmas qiymatlar T[1...64] kerak bo‘ladi va ular
T[i] = [4294967296 * abs(sin(i))]
formula asosida hisoblanadi, bu yerda [x] – bu x qiymatining butun qismi. Shu bilan
birga X va Y so‘zlari uchun siklik surish X<<<Y operatsiyasi kiritiladi.
Keyingi bajariladigan jarayonlarni psevdokod shaklida keltiramiz:
// oqimni 16 ta so‘zdan iborat bloklarga taqsimlaymiz:
for i = 0 to N/16 - 1 do {
// i-blokni X[] massiviga kiritamiz
for j = 0 to 15 do
X[j] = M[i * 16 + j]
// A, B, C, D qiymatlarini saqlaymiz
AA = A
BB = B
CC = C
DD = D
// 1-raund
// yozuv [abcd k s i] quyidagini anglatadi:
//
a = b + ((a + F(b, c, d) + X[k] + T[i]) <<< s)
// 16 ta operatsiya bajariladi:
[ABCD 0 7 1]
[DABC 1 12 2]
[CDAB 2 17 3]
[BCDA 3 22 4]
[ABCD 4 7 5]
[DABC 5 12 6]
[CDAB 6 17 7]
[BCDA 7 22 8]
[ABCD 8 7 9]
[DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
// 2- raund
// yozuv [abcd k s i] quyidagini anglatadi
//
a = b + ((a + G(b, c, d) + X[k] + T[i]) <<<s)
// 16 ta operatsiya bajariladi:
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
// 3- raund
// yozuv [abcd k s i] quyidagini anglatadi
//
a = b + ((a + H(b, c, d) + X[k] + T[i]) <<< s)
// 16 ta operatsiya bajariladi:
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
// 4-raund
// yozuv [abcd k s i] quyidagini anglatadi
//
a = b + ((a + I(b, c, d) + X[k] + T[i]) <<< s)
// 16 ta operatsiya bajariladi:
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
A = AA + A
B = BB + B
C = CC + C
D = DD + D
}
4-qadam: MD5 natijasi chop etiladi.
Ushbu natija ABCD buferida saqlanadi, faqatgina teskari chiqarish talab etiladi,
ya’ni md5hash=DCBA.
MD5 algoritmiga asoslangan on-line kalkulyatorlar quyidagi veb-saytlarda
keltirilgan:
http://crypt-online.ru/crypts/md5/
http://sitespy.ru/md5/
https://pr-cy.ru/md5/
Ushbu jarayonga quyidagi misollarni keltirish mumkin:
1)MD5("md5") = 1bc29b36f623ba82aaf6724fd3b16718
2) Bitta bitga farq qiladigan natijalarga e’tibor bering:
MD5(abc) = 900150983CD24FB0D6963F7D28E17F72
MD5(acc) = 1673448EE7064C989D02579C534F6B66
3. Qisqartirilgan MD5 algoritmini amaliy qo‘llashga misol
Yuqorida keltirilgan jarayonni aniq misolda ko‘rib chiqamiz va quyidagi ‘Ota’
qatorini kirish ma’lumotlari sifatida olamiz. ASCII jadvali asosida str=‘Ota’ qatorni
ikkilik sanoq tizimida 0100111101110100011000012 va o‘n oltilik sanoq tizimidagi
shaklida yozamiz, ya’ni str= 4f 74 61. Umuman, keyingi yozuvlarni ixcham yozish
uchun o‘n oltilik sanoq tizimidan foydalanamiz, ammo hisoblashlar bitlar bilan amalga
oshiriladi. Ushbu xabarning uzunligi Length = 24 ga teng. Ushbu sonni ikkilik sanoq
tizimiga o‘tkazamiz, Length2= 110002. Ushbu bitlarni 64 gacha uzaytiramiz (ixcham
shakli-000000000000001816):
0000000000000000000000000000000000000000000000000000000000011000
Birinchi va ikkinchi so‘zlarni o‘rni bilan almashtiramiz va Length-1
deb
belgilaymiz:
0000000000000000000000000001100000000000000000000000000000000000
Endi dasturda qayta ishlanadigan 512 bitdan iborat M[] massivini shakllantiramiz va shu bilan X[] massivini aniqlaymiz, ya’ni str & 10…0 & Length-1 :
X
X[0] =
X[1] =
M[]
01001111011101000110000110000000
00000000000000000000000000000000
X[2] =
X[3] =
X[4] =
X[5] =
X[6] =
X[7] =
X[8] =
X[9] =
X[10] =
X[11] =
X[12] =
X[13] =
X[14] =
X[15] =
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000011000
00000000000000000000000000000000
A, B, C, D qiymatlarini ikkilik tizimida yozamiz, bunda kalkulyatorning dasturlovchi
(1-rasm) bandidan foydalanish mumkin:
AA = A = 0x67452301 = 01100111010001010010001100000001
BB = B = 0xEFCDAB89 = 11101111110011011010101110001001
CC = C = 0x98BADCFE = 10011000101110101101110011111110
DD = D = 0x10325476 = 00010000001100100101010001110110
1-rasm. Kalkulyator
Hisoblashlarda zarur bo‘lgan T[i] massiv elementlarini MS Excel dasturidan
foydalanib aniqlaymiz:
I
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
T[i]
3614090360
3905402710
606105819
3250441966
4118548399
1200080426
2821735955
4249261313
1770035416
2336552879
4294925233
2304563134
1804603682
4254626195
2792965006
1236535329
i
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
T[i]
4129170786
3225465664
643717713
3921069994
3593408605
38016083
3634488961
3889429448
568446438
3275163606
4107603335
1163531501
2850285829
4243563512
1735328473
2368359562
i
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
T[i]
4294588738
2272392833
1839030562
4259657740
2763975236
1272893353
4139469664
3200236656
681279174
3936430074
3572445317
76029189
3654602809
3873151461
530742520
3299628645
i
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
T[i]
4096336452
1126891415
2878612391
4237533241
1700485571
2399980690
4293915773
2240044497
1873313359
4264355552
2734768916
1309151649
4149444226
3174756917
718787259
3951481745
Endi 1-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi
qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini
anglatadi:
a = b + ((a + F(b, c, d) + X[k] + T[i]) <<< s)
(1*)
Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni
[ABCD 0 7 1]
Yuqoridagi (1*) formula bo‘yicha [ABCD 0 7 1] yozuvi quyidagi ko‘rinishga ega
bo‘ladi:
a = b + ((a + F(b, c, d) + X[0] + T[3]) <<< 17)
(1**)
Bu yerdagi F(b, c, d) funksiya qiymatini F, G, H, I funksiyalari uchun
haqiqiylik jadvaliga asoslanib hisoblaymiz:
Jarayon
B
C
D
F(b, c, d)
Qiymat
11101111110011011010101110001001
11101111110011011010101110001001
00010000001100100101010001110110
11111111111111111111111111111111
Ushbu (1**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va
qavsdan boshlaymiz:
Jarayon
Qiymat
A
01100111010001010010001100000001
F(b, c, d)
11111111111111111111111111111111
X[0]
01001111011101000110000110000000
T[3]
00100100001000000111000011011011
a+F(b,c,d)+X[0]+T[3]
11110011111011101100110010110101
(a+F(b,c,d)+X[0]+T[3])<<<17
01100110010110101111100111110111
B
11101111110011011010101110001001
b+((a+F(b,c,d)+X[0]+T[3])<<<17) 10001001100101110101001001111110
Izoh. 1) T[3]= 606105819 soni ikkilik sanoq tizimiga o‘tkazilgan (1-rasm).
2) Qo‘shish amali Xor orqali amalga oshiriladi.
Demak, A = 10001001100101110101001001111110 ga teng bo‘ladi.
Endi 2-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi
qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini
anglatadi:
a = b + ((a + G(b, c, d) + X[k] + T[i]) <<< s)
(2*)
Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni
[DABC 6 9 18].
Yuqoridagi (2*) formula bo‘yicha [DABC 6 9 18] yozuvi quyidagi ko‘rinishga ega
bo‘ladi:
d = a + ((d + G(a, b, c) + X[6] + T[18]) <<< 9)
(2**)
Bu yerdagi G(a, b, c) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik
jadvaliga asoslanib hisoblaymiz:
Jarayon
A
B
C
G(a, b, c)
Qiymat
10001001100101110101001001111110
11101111110011011010101110001001
11101111110011011010101110001001
10001001100001010000001000001000
Ushbu (2**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan
boshlaymiz:
Jarayon
Qiymat
D
00010000001100100101010001110110
G(a, b, c)
10001001100001010000001000001000
X[6]
00000000000000000000000000000000
T[18]
00010011001110011010101110000110
d +G(a, b, c)+X[6]+T[18]
10001010100011101111110111111000
(d+G(a, b, c)+X[6]+T[18]) <<< 9
11111100010001010100011101111110
A
10001001100101110101001001111110
a+((d+G(a,b,c)+X[6]+T[18])<<<9) 01110101110100100001010100000000
Izoh. 1) T[18]= 3225465664 soni ikkilik sanoq tizimiga o‘tkazilgan.
2) Qo‘shish amali Xor orqali amalga oshiriladi.
Demak, D = 01110101110100100001010100000000 ga teng bo‘ladi.
Keyingi 3-raundda o‘tamiz va unda keltirilgan hisoblashlarni bajaramiz. Bunda
faqatgina birinchi qatorga to‘xtalamiz. Yuqorida e’tirof etilganidek,
[abcd k s i] yozuvi quyidagini anglatadi:
a = b + ((a + H(b, c, d) + X[k] + T[i]) <<< s)
(3*)
Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni
[CDAB 11 16 35].
Yuqoridagi (3*) formula bo‘yicha [CDAB 11 16 35] yozuvi quyidagi ko‘rinishga ega
bo‘ladi:
c = d + ((c + H(d, a, b) + X[11] + T[35]) <<< 16)
(3**)
Bu yerdagi H(d, a, b) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik
jadvaliga asoslanib hisoblaymiz:
Jarayon
D
A
B
H(d, a, b)
Qiymat
01110101110100100001010100000000
10001001100101110101001001111110
11101111110011011010101110001001
00010011101010001110110011110111
Ushbu (3**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan
boshlaymiz:
Jarayon
Qiymat
C
11101111110011011010101110001001
H(d, a, b)
00010011101010001110110011110111
X[11]
00000000000000000000000000000000
T[35]
01101101100111010110000100100010
c + H(d, a, b) + X[11] + T[35]
10010001111111000010011001011100
(c+H(d,a,b)+X[11]+T[35])<<<16
00100110010111001001000111111100
D
01110101110100100001010100000000
d+((c+H(d,a,b)+X[11]+T[35])<<<16) 01010011100011101000010011111100
Izoh. 1) T[35]= 1839030562 soni ikkilik sanoq tizimiga o‘tkazilgan. 2) Qo‘shish
amali Xor orqali amalga oshiriladi.
Demak, C = 01010011100011101000010011111100 ga teng bo‘ladi.
Endi
4-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi
qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini
anglatadi:
a = b + ((a + I(b, c, d) + X[k] + T[i]) <<< s)
(4*)
Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni
[BCDA 5 21 52].
Yuqoridagi (4*) formula bo‘yicha [BCDA 5 21 52] yozuvi quyidagi ko‘rinishga
ega bo‘ladi:
b = c + ((b + I(c, d, a) + X[5] + T[52]) <<< 21)
(4**)
Bu yerdagi I(c, d, a) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik
jadvaliga asoslanib hisoblaymiz:
Jarayon
C
D
A
I(c, d, a)
Qiymat
01010011100011101000010011111100
01110101110100100001010100000000
10001001100101110101001001111110
00000010001111001011100011111101
Ushbu (4**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va
qavsdan boshlaymiz:
Jarayon
B
I(c, d, a)
X[5]
T[52]
b + I(c, d, a) + X[5] + T[52]
(b + I(c, d, a)+X[5]+ T[52])<<<21
C
c+((b+I(c,d,a)+X[5]+T[52])<<<21)
Qiymat
11101111110011011010101110001001
00000010001111001011100011111101
00000000000000000000000000000000
11111100100100111010000000111001
00010001011000101011001101001101
00010101100110100110100010001011
01010011100011101000010011111100
01000110000101001110110001110111
Izoh. 1) T[52]= 4237533241 soni ikkilik sanoq tizimiga o‘tkazilgan. 2) Qo‘shish
amali Xor orqali amalga oshiriladi.
Demak, B = 01000110000101001110110001110111 ga teng bo‘ladi.
Shunday qilib, quyidagilarni hisoblash qoldi:
A = AA + A
B = BB + B
C = CC + C
D = DD + D
Jarayonni jadval shaklida bajaramiz:
Jarayon
Qiymat
AA
A
A=AA+A
BB
B
B=BB+B
CC
C
C = CC + C
DD
D
D = DD + D
01100111010001010010001100000001
10001001100101110101001001111110
11101110110100100111000101111111
11101111110011011010101110001001
01000110000101001110110001110111
10101001110110010100011111111110
10011000101110101101110011111110
01010011100011101000010011111100
11001011001101000101100000000010
00010000001100100101010001110110
01110101110100100001010100000000
01100101111000000100000101111110
a,b,c,d
16 lik tizimda
EED2717F
A9D947FE
CB345802
65E0417E
Ushbu natijaviy ABCD qiymatlarini teskari chiqarish orqali xesh-kod
aniqlanadi: md5hash = DCBA = 65E0417ECB345802A9D947FEEED2717F.
E’tibor bering, hisoblashlarda hattoki bitta bitda adashish barcha natijalarini
chalkashtirib yuboradi.
4. SHA xeshlash algoritmi
SHA algoritmi
(Secure Hash Algorithm – xavfsiz xesh algoritmi) AQSh
davlatining milliy standartlar va texnologiyalar instituti (NIST) tomonidan ishlab
chiqilgan va 1993-yilda e’lon qilingan. SHA-1 algoritmining asosini MD4 tashkil
qiladi. Algoritm SHA-1 natijasi 160 bitli xesh-kod bo‘lib, 512 bitli bloklarni qayta
ishlashga asoslangan. SHA-1 algoritmi MD5 algoritmiga nisbatan 32 bitga uzunroq
xesh-kod yaratadi. SHA-1 algoritmi kriptomustahkam hisoblanadi.
2001-yilda AQSh davlatida 3 ta standart qabul qilindi. Bular SHA-2 yoki SHA256, SHA-384 va SHA-512 (bu yerdagi sonlar xesh-kod uzunligini bildiradi). Ushbu
algoritmlar bloklar uzunligi bilan ham farq qiladi.
SHA algoritmda kirnvchi ma’lumotning uzunligi 2 64 bitdan kichik bo‘lib, xesh
qiymat uzunligi 160 bit bo‘ladi. Kiritilayotgan ma’lumot 512 bitlik bloklarga ajratilib
qayta ishlanadi.
Xesh qiymatni hisoblash jarayoni quyidagi bosqichlardan iborat:
1-bosqich. To‘ldiruvchi bitlarini qo‘shish.
Berilgan ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan
(ma’lumot uzunligi 448 mod 512) qilib to‘ldiriladi. To‘ldirish hamma vaqt, hattoki
ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan bo‘lsa ham
bajariladi. To‘ldirish quyidagi tartibda amalga oshiriladi: ma’lumotga 1 ga teng
bo‘lgan bitta bit qo‘shiladi, qolgan bitlar esa 0 lar bilan to‘ldiriladi. Shuning uchun
qo‘shilgan bitlar soni 1 dan 512 tagacha bo‘ladi.
2-bosqich. Ma ’lumotning uzunligini qo ‘shish.
1-bosqichning natijasiga berilgan ma’lumot uzunligining 64 bitlik qiymati
qo‘shiladi.
3-bosqich. Xesh qiymat uchun bufer initsializatsiya qilish.
Xesh funksiyaning oraliq va oxirgi natijalarini saqlash uchun 160 bitlik
buferdan foydalaniladi. Bu buferni beshta 32 bitlik A, B, C, D, E registrlar
ko‘rinishida tasvirlash mumkin. Bu registrlarga 16 lik sanoq sistemasida quyidagi
boshlang‘ich qiymatlar beriladi:
A=0x67452301,
B=0xEFCDAB89,
C=0x98BADCFE,
D=0x10325476,
E=0xC3D2E1F0.
Keyinchalik bu o‘zgaruvchilar mos ravishda yangi a, b, c, d va e o‘zgaruvchilarga yozib olinadi.
4-bosqich. Ma’lumotni 512 bitlik bloklarga ajratib qayta ishlash.
Bu xesh funksiyaning asosiy sikli quyidagicha bo‘ladi:
for (t = 0; t < 80; t++)
{
temp = (a <<< 5) + ft(b, c, d) + e + Wt + Kt ;
e = d; d = c; c = b <<< 30; b = a; a = temp;
}
Bu yerda <<< belgisi chapga siklik surish amali. Kt lar 16 lik sanoq sistemasida
yozilgan quyidagi sonlardan iborat:
5A827999, agar t=0,…,19
6ED9EBA1, agar t=20,…,39
Kt =
8F1BBCDC, agar t=40,…,59
CA62C1D6, agar t=60,…,79
ft(x, y, z) funksiyalar esa quyidagi ifodalar bilan aniqlanadi:
(x ˄ y) ˅ (¬x ˄ z), agar t=0,…,19
ft(x, y, z) =
x ⊕ y ⊕ z, agar t=20,…,39, 60,…,79
(x ˄ y) ˅ (x ˄ z) ˅ (y ˄ z) , agar t=40,…,59
Wt lar kengaytirilgan ma’lumotning 512 bitlik blokining 32 bitlik qism bloklaridan
quyidagi qoida bo‘yicha hosil qilinadi:
Wt =
Mt, agar t=0,…,15,
(Wt-3 ⊕ Wt-8 ⊕ Wt-14 ⊕ Wt-16) <<< 1, agar t=16,…,79.
Asosiy sikl tugagandan keyin a, b, c, d va e laming qiymatlari mos ravishda A,
B, C, D va E registrlardagi qiymatlarga qo‘shiladi hamda shu registrlarga yozib
qo‘yiladi va kengaytirilgan ma’lumotning keyingi 512 bitlik blokini qayta ishlashga
o‘tiladi.
5-bosqich. Natija.
Ma’lumotning xesh qiymati A, B, C, D va E registrlardagi qiymatlarni
birlashtirish natijasida hosil qilinadi.
Amaliy mashg‘ulot
Mavzu: OpenSSL kutubxonasidan foydalangan holda ma’lumotlarni xesh
qiymatini hisoblash.
Ishdan maqsad: Xesh-funksiyalarni o‘rganish orqali har xil shakldagi xeshkodlarni tashkil qilish jarayonlarini o‘rganish:
1) MD5 algoritmini o‘rganish va bloklarda qo‘llaaniladigan funksiyalarni
tushunib olish;
2) Qisqartirilgan MD5 algoritmi bo‘yicha hisob ishlarini bajarishni o‘rganish;
3) SHA algoritmini tushunib olish;
4)Bajarilgan ishlar asosida hisobotni shakllantirishni o‘rganish.
5) OpenSSL kutubxonasidan foydalangan holda MD5 algoritmini qo‘llash
buyruqlarini o‘rganish.
Amaliy qism
OpenSSL buyruqlaridan foydalanish uchun OpenSSL kutubxonasini cmd
buyruqlar satriga bog‘lash zarur bo‘ladi. Birinchi OpenSLL kutubxonasi fayllari
jamlanmasini ko‘chirib olamiz va “Поиск в Windows” da “Переменные среды”
ko‘rinishida izlaymiz va “Переменные среды” oynasiga o‘tamiz. U oynada
“Изменитъ” buyrug‘i orqali OpenSSL kutubxonasi fayllari jamlanmasi yo‘li
ko‘rsatiladi.
1-rasm. OpenSSL kutubxonasini cmd buyrug‘i bilan bog‘lash
OpenSSL kutubxonasidan foydalanish uchun cmd buyrug‘idan foydalaniladi
(Windows va R birgalikda bosiladi):
2-rasm. Cmd buyrug’ini ishga tushirish
Cmd buyruqlar satriga OpenSSL buyrug‘i kiritiladi. Bunda OpenSSL buyruqlar
satriga o‘tiladi. “OpenSSL version” buyrug‘ini kiritish orqali OpenSSL versiyasini
bilish mumkin. OpenSSL buyruqlarini ko‘rish uchun esa “help” buyrug‘ini kiritish
mumkin.
3-rasm. OpenSSL buyrug‘ini ishga tushirish
Cmd buyruqlar satri rangini ham o‘zgartirish mumkin. Cmd buyruqlar satri
“Свойтсва” siga kirilib “Цвета” bo‘limidan o‘zgartiriladi:
4-rasm. Cmd buyruqlar satri rangini o‘zgartirish
Shundan sung cmd oynasidagi joriy yorlig‘i(papkasi)dan chiqish uchun cd..
buyrug‘idan foydalaniladi:
5-rasm. cd.. buyrug‘idan foydalanish
OpenSSL kutubxonasi uchun foydalananiladigan openssl_shifrlash papkasida
quyidagi buyruq orqali ochiq ma’lumotni hosil qilib olamiz:
6-rasm. Ochiq ma’lumotni yaratish
Openssl_shifrlash papkasida hosil bo‘lgan shifr.txt fayli:
7-rasm. Ochiq ma’lumot
OpenSSL kutubxonasini aktiv holatga o‘tkazishimiz uchun quydagi buyruqdan
foydalanamiz:
8-rasm. OpenSSLni aktiv holati
Help buyrug‘i orqali kerakli bo‘lgan shifrlash algoritmlarini va ulardan
foydalanish tartibini ko‘rish mumkin bo‘ladi:
9-rasm. OpenSSLda help buyrug‘i
Ochiq ma’lumotni shifrlash uchun AES shifrlash algoritmidan foydalanish
aes-256-cbc -e -in shifr.txt -out shifrlangan.txt.enc
buyrug‘i orqali amalga oshiriladi. Bu yerda –e = encryption(shifrlash), -in = faylni
nomi va formati, -out = shifr fayl. Shiflash davomida parol qo‘yish talab etiladi va
ko‘rinmagan holda kiritamiz:
10-rasm. OpenSSLda ma’lumotni shifrlash
Shifrlangan ma’lumotni ko‘rish quydagicha:
11-rasm. AES-256 algoritmida shifrlash
Shifr ma’lumotni deshifrlash uchun
aes-256-cbc -d -in shifrlangan.txt.enc -out shifr.txt.dec
buyrug‘i orqali amalga oshiriladi. Bu yerda -d = decryption (deshifrlash), -in = faylni
nomi va formati, -out = ochiq matn fayl. Deshiflash davomida parolga biz tanlagan
parolni kiritamiz:
12-rasm. AES-256 algoritmida deshifrlash
Amaliy mashg‘ulot ishini bajarish tartibi
1. Nazariy ma’lumotlar bilan tarnishing.
2. Kompyuterni ishga tushiring.
3. Topshiriqlar ro‘yxatidan variantni tanlang.
4. Eng oddiy xesh-funksiya bilan ishlash.
5. MD5 algoritmi bilan tanishing.
6. Qisqartirilgan MD5 algoritmi asosida hisoblarni amalga ohsiring.
7. Internetga kiring.
8. MD5 kalkulyatorlari bilan tarnishing.
9. SHA kalkulyatorlari bilan tarnishing.
10.Xesh-funksiyalarni amaliy dasturlarini tuzing.
11.Asosiy matn shifrlash usullaridan birida shifrlansin va qadamma – qadam
izohlansin. Shuningdek OpenSSL kutibxonasidan foydalangan holda shifrlash
va deshifrlash amalga oshirilsin.
12.Bajarilgan ishlar bo‘yicha hisobotlarni tayyorlang.
13.Hisobotni himoyaga tayyorlang.
14.Ishni tugating.
Hisobotni rasmiylashtirish tartibi
1. Akademik jurnal bo‘yicha variant tanlansin.
2. Hisobotning matn qismi standart o‘lchamdagi varaqlarga (A4 hajmida 210-297
mm) 1,5 intervalda Times New Roman 14 shriftida yozilishi lozim. Fayl formati
MS Office 2003 bo‘lsin.
3. Hisobotdagi jadvallar va rasmlar tartib bilan raqamlashtirilsin va nomlansin.
4. Matnda rasm va jadvalga izoh berilishi kerak.
5. Matn rasm va jadval bilan boshlanmasin.
6. Matn qismi titul varaqasi bilan boshlanadi va betlar ketma-ket sonlar bilan
raqamlashtiriladi.
7. Hisobot o‘qituvchining elekton manziliga «Kriptografiya I –№-AX 1-lab»
mavzusi bilan jo‘natilsin.
8. Hisobot yakuniy nazoratdan 5 kun oldin jo‘natilishi kerak.
9. O‘z vaqtida taqdim etilmagan hisobot baholanmaydi.
Amaliy mashg‘ulotlari uchun variantlar
1-topshiriq
Eng oddiy xesh-funksiya orqali, ASCII jadvalidan foydalanib, berilgan belgilar
qatorining 8 bitli xesh-kodini aniqlang.
Variantlar
№
1
2
3
4
5
6
7
8
9
10
№
DASTUR
11
SINF
12
QORA
13
VOSITA
14
TAQINCHOQ 15
INSTITUT
16
UNIVER
17
JAMLANMA 18
AXBOROT
19
BUTUN
20
Qator
Qator
XONA
TEST
SAHIFA
TARMOQ
SAHIFA
ASKAR
RAQAM
TIZIM
STEGO
BETLAR
№
21
22
23
24
25
26
27
28
29
30
№
BILIMLAR
31
DIREKTOR
32
TIZIMLAR
33
QIZIQCHI
34
RAQAMLAR 35
SHAFTOLI
36
APPARAT
37
AYIRMA
38
MATN
39
QATOR
40
Qator
Qator
AYIRMASI
BOSHQAR
MUHARRIR
TESTLASH
TARMOQLI
SAHIFASI
ASKARLAR
BILIM
KODLAR
KRIPTO
2-topshiriq
Oldingi 1-topshiriqda bajarilgan algoritm asosida eng oddiy xesh-funksiya
dasturini tuzing va olingan natijalarni taqqoslang.
3-topshiriq
Qisqartirilgan MD5 algoritmidan foydalanib xesh-funksiya qiymatini aniqlang.
Belgilarni kodlashda ASCII jadvalini qo‘llang.
Variantlar
№
1
2
3
4
5
6
7
8
9
10
Qator
Kompyuter
Maxfiy
Shifrlash
Sinfdosh
Axborotnoma
Virus
Antivirus
Windows
Photoshop
Microsoft
№
11
12
13
14
15
16
17
18
19
20
Qator
Adobe
Opera
Internet
Monitor
Printer
Skaner
Tarmoq
Auditoriya
Sinfxona
Daftar
№
21
22
23
24
25
26
27
28
29
30
Qator
Kitob
Jadval
Vektor
Matritsa
Muammo
Fizika
Matematika
Biologiya
Adabiyot
Nashriyot
№
31
32
33
34
35
36
37
38
39
40
Qator
Dasturlash
Python
Kitobxon
Pascal
Samarqand
Toshkent
Baxmal
Buxoro
Guliston
Andijon
4-topshiriq
Oldingi 3-topshiriqda bajarilgan algoritm asosida qisqartirilgan MD5 algoritmi
asosida dastur tuzing va natijalarni taqqoslan.
Foydalanilgan adabiyotlar
1.
O‘z DSt 1106:2009. Ўзбекистон Давлат стандарти. Ахборот технологияси.
Ахборот криптографик муҳофазаси. Хэшлаш функцияси. Тошкент.
2.
O‘z DSt 1109:2013. Ўзбекистон Давлат стандарти. Ахборот технологияси.
Ахборот криптографик муҳофазаси. Атамалар ва таърифлар. Тошкент.
3.
Бабаш А.В., Шанкин Г.П. Криптография / Под ред. В.П. Шерстюка, Э.А.
Применко. - М.: СОЛОН-3, 2002. - 512 с.
4.
Иванов М.А. Криптографические методы защиты информации в компь-
ютерных системах и сетях. - М.: КУДИЦ-ОБРАЗ, 2001. - 368 с.
5.
Введение в криптографию / Под общ. ред. В.В. Ященко. 2-е изд., испр. -
М.: МЦНМО «ЧеРо», 1999.
6.
Menezes A.J., Van Oorschot P., Vanstone S. Handbook of Applied Cryptog-
raphy. - N.Y.: CRC Press, 1996. - 780 p.
7.
Саломатин С.Б. Защита информации: Метод, пособие к лаб. работе
«Криптоанализ алгоритмов защиты информации». - Мн.: БГУИР, 2003. - 20 с.
8.
О. Н. Жданов, И. А. Куденкова. Криптоанализ классических шифров.
Метод, пособие. Красноярск 2008.-107 с.
9.
Худойқулов З.Т. Криптография усуллари фанидан услубий кўрсатма. –
Тошкент : ТАТУ. 2016. – 112 б.
1-ilova. ASCII jadvali
1-qismi
2-qismi
2-ilova.Sanoq tizimlari
O‘nlik
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sakkizlik
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
Ikkilik
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
O’n oltilik
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
3-ilova. Mantiqiy amallarni yagona jadvali
A
B
A OR B
A AND B
A XOR B
NOT A
0
0
0
0
0
1
1
0
1
0
1
0
0
1
1
0
1
1
1
1
1
1
0
0
Download