Kriptografik usulda yaratilgan manzil - Cryptographically Generated Address

A Kriptografik usulda yaratilgan manzil (CGA) an Internet protokoli 6-versiyasi Dan hisoblangan xost identifikatoriga ega bo'lgan (IPv6) manzil kriptografik xash funktsiyasi.[1] Ushbu protsedura a ni bog'lash usuli hisoblanadi ommaviy imzo kaliti ga IPv6 manzili ichida Xavfsiz qo'shni kashf etish protokoli (YUBORISH).[2]

Metodika

Kriptografik tarzda yaratilgan manzil 128 bitli IPv6 manzilning eng ahamiyatsiz 64 bitini manzil egasining ochiq kalitining kriptografik xashiga almashtirish orqali hosil bo'ladi. Xabarlar tegishli shaxsiy kalit bilan imzolanadi. Faqat manba manzili va ochiq kalit ma'lum bo'lgan taqdirdagina, tekshiruvchi ushbu jo'natuvchidan kelgan xabarni tasdiqlashi mumkin. Ushbu usul "yo'q" ni talab qiladi ochiq kalitli infratuzilma. Haqiqiy CGAlar har qanday jo'natuvchi, shu jumladan potentsial tajovuzkor tomonidan yaratilishi mumkin, ammo ular mavjud CGA-lardan foydalana olmaydi.

Xususiyatlari

Kriptografik tarzda yaratilgan manzil - bu IPv6 manzili, uning interfeys identifikatori CGA ishlab chiqarish usuli bo'yicha yaratilgan. Interfeys identifikatori IPv6-manzilning eng kam ahamiyatli 64 biti tomonidan shakllanadi va uning ichki tarmog'idagi xostning tarmoq interfeysini aniqlash uchun ishlatiladi. Ichki tarmoq eng muhim 64 bit, pastki tarmoq prefiksi bilan aniqlanadi.

IPv6 manzil formati
bitlar6464
maydonsubnet prefiksiinterfeys identifikatori

CGA bilan bog'lanishi kerak bo'lgan ochiq kalitdan tashqari, CGA ishlab chiqarish usuli bir nechta boshqa kirish parametrlarini, shu jumladan oldindan belgilangan pastki tarmoq prefiksini oladi. Ushbu parametrlar, CGA generatsiyalash usulini bajarish jarayonida hosil bo'lgan boshqa parametrlar bilan bir qatorda, CGA Parameters ma'lumotlar tuzilishi deb nomlangan parametrlar to'plamini tashkil qiladi. Tegishli CGA-ni tekshirish uchun CGA parametrlarining to'liq to'plami ma'lum bo'lishi kerak.

CGA Parameters ma'lumotlar tarkibi quyidagilardan iborat.

  • modifikator: tasodifiy 128-bit imzosiz tamsayı;
  • subnetPrefix: CGA qaysi subnetga tegishli ekanligini belgilaydigan 64-bitli prefiks;
  • collCount: 0, 1 yoki 2 bo'lishi kerak bo'lgan 8-bit imzosiz butun son;
  • publicKey: a sifatida ochiq kalit DER - kodlangan ASN.1 SubjectPublicKeyInfo turining tuzilishi;
  • extFields: ixtiyoriy o'zgaruvchan uzunlik maydoni (standart uzunlik 0).

Bundan tashqari, xavfsizlik parametri Sek CGA ning kuchini belgilaydi qo'pol hujumlar. Bu 0 dan 7 gacha (va shu jumladan) har qanday qiymatga ega bo'lishi mumkin bo'lgan va CGA interfeysi identifikatorining eng chap uchta qismida kodlangan 3-bit imzosiz tamsayı. Ning qiymati qanchalik baland bo'lsa Sek, xavfsizlik darajasi qanchalik baland bo'lsa, lekin odatda CGA hosil qilish uchun qancha vaqt kerak bo'ladi. Qulaylik uchun oraliq Sek Quyidagi psevdokoddagi qiymatlar 7 dan katta qiymatga ega bo'lmagan 8-bit imzosiz tamsayılar sifatida saqlanadi deb taxmin qilinadi.

CGA ishlab chiqarish usuli

Quyidagi psevdokod qismi yangi Kriptografik tarzda ishlab chiqarilgan manzilni yaratish uchun ishlatiladigan CGA ishlab chiqarish usulini aks ettiradi.

 1  protsedura generateCGA (Sek, subnetPrefix, publicKey, extFields): 2      modifikator : = tasodifiy (0x00000000000000000000000000000000, // 16 oktet (128 bit) 3 0xffffffffffffffffffffffffffffffffff) 4 5 yorliq1: 6      konkret : = birlashtirish (modifikator, 0x000000000000000000, // 9 nol oktetalar 7 publicKey, extFields) 8 9      hazm qilish : = SHA1 (konkret)10      Hash2 := hazm qilish[0:14] // 14 * 8 = 112 chapdagi bit1112 agar Sek ≠ 0 va Hash2[0:2*Sek] ≠ 0: // 2 * sek * 8 = 16 * sek chapdagi bitlar 13 modifikator := modifikator + 114          bordi 115 tugatish agar1617      collCount : = 0x00 // 8-bit to'qnashuv soni1819 2. yorliq:20      konkret : = birlashtirish (modifikator, subnetPrefix, collCount,21                            publicKey, extFields)2223      hazm qilish : = SHA1 (konkret)24      Hash1 := hazm qilish[0: 8] // 8 * 8 = 64 eng chap bit2526 intID := Hash1                                             // Hash1 interfeys identifikatoriga aylanadi ... 27 intID[0] := intID[0] ikkilik va 0x1c ikkilik yoki (Sek << 5) // ... sek va u / g bitlarni yozgandan keyin2829 CGA : = birlashtirish (subnetPrefix, intID) // birlashtirilib CGA3031 hosil bo'ladi agar dublikat (CGA):32          collCount := collCount + 13334          agar collCount = 3:35              bekor qilish36          tugatish agar3738          bordi yorliq239 tugatish agar4041      qaytish [CGA, [modifikator, subnetPrefix, collCount, publicKey, extFields]]42  tugatish tartibi

CGA interfeysi identifikatori asosan tomonidan tashkil etilgan Hash1, bu hazm qilingan CGA Parameters ma'lumotlar strukturasining dastlabki 64 bitidan olingan (20 dan 24 gacha chiziqlar). 27-qatorda birinchi uchta bit ustiga yoziladi Sek qiymati va ajratilgan "u" va "g" bitlari (ettinchi va sakkizinchi bit) 0 ga o'rnatiladi.

The Sek parametr birinchi 16 marta bajarish orqali xash kengaytmasini amalga oshiradi Sek boshqa xash bitlari, Hash2, bo'lishi 0. Bu xash hazm qilingan CGA Parameters ma'lumotlar tuzilmasi natijasidir subnetPrefix va collCount asosan 0. A ga o'rnatilgan qo'pol kuch bilan qidirish mos topish uchun amalga oshiriladi Hash2, ni oshirib modifikator har bir takrorlash 1 dan (6 dan 15 gacha chiziqlar). Chunki ko'proq bitlar 0 bilan yuqoriroq bo'lishi kerak Sek qiymati, qidiruvni amalga oshirish uchun zarur bo'lgan o'rtacha vaqt qiymati bilan keskin o'sib boradi Sek.

CGA yaratish uchun pastki tarmoq prefiksi va yaratilgan interfeys identifikatorini birlashtirgandan so'ng, takroriy manzilni aniqlash amalga oshirilishi mumkin. Agar manzil allaqachon ishlatilgan bo'lsa, to'qnashuv hisoblagichi collCount 1 ga ko'paytiriladi va yangi interfeys identifikatori hosil bo'ladi (20 dan 39 gacha chiziqlar). Chunki collCount hisoblashda ishlatilmaydi Hash2, yangisini izlash shart emas Hash2 manzil to'qnashuvi sodir bo'lganda. Xuddi shunday sababga ko'ra, subnetPrefix ham foydalanilmaydi, shuning uchun agar manzilning pastki tarmog'i prefiksi o'zgarsa, lekin xostning ochiq kaliti o'zgarmasa, u holda o'sha modifikator qayta ishlatilishi mumkin va yangisini qidirishga hojat yo'q Hash2.

41-satrda CGA parametrlari bilan bir qatorda CGA parametrlari qaytariladi.

CGA-ni tekshirish usuli

Kriptografik tarzda yaratilgan manzil ushbu manzil tayinlangan xost tomonidan qabul qilingan imzolangan xabarlarning yuborilganligini tekshirish uchun ishlatiladi. Bu imzo uchun ishlatiladigan kalit juftligi CGA bilan bog'langanligini tekshirish orqali amalga oshiriladi. Ochiq kalitning haqiqiyligi shu tarzda tekshirilishi mumkinligi sababli, ochiq kalit infratuzilmasiga ehtiyoj qolmaydi. Agar xostning o'zi ham autentifikatsiya qilinishi kerak bo'lsa, unda CGA-ning o'zi oldindan tasdiqlanishi kerak, chunki agar bunday holatda manzilga ishonch bo'lmasa (agar boshqa tomonidan tasdiqlanmagan bo'lsa), bog'langan ochiq kalitga ishonib bo'lmaydi. CGA ga nisbatan usullar).

Ochiq kalitning CGA bilan bog'langanligi tasdiqlangan CGA tekshirish usuli, kirish uchun tegishli CGA Parameters ma'lumotlar tuzilishini talab qiladi va quyidagicha amalga oshirilishi mumkin.

 1  protsedura verifyCGA (CGA, [modifikator, subnetPrefix, collCount, publicKey, extFields]): 2      agar collCount > 2 yoki CGA[0:8] ≠ subnetPrefix: 3          qaytish yolg'on 4 tugatish agar 5 6      konkret : = birlashtirish (modifikator, subnetPrefix, collCount, 7                            publicKey, extFields) 8 9      hazm qilish : = SHA1 (konkret)10      Hash1 := hazm qilish[0: 8] // 8 * 8 = 64 ta eng chap bit11 Hash1[0] := Hash1[0] ikkilik va 0x1c // Sec va u / g bit1213 ni e'tiborsiz qoldiring intID := CGA[8:16] // interfeys identifikatori (eng o'ngdagi 64 bit) 14 intID[0] := intID[0] ikkilik va 0x1c // Sec va u / g bitlarini e'tiborsiz qoldiring1516 agar Hash1intID:17          qaytish yolg'on18 tugatish agar1920      Sek := CGA[8] >> 5 // interfeys identifikatoridan Sec ajratib oling 2122 konkret : = birlashtirish (modifikator, 0x000000000000000000, // 9 nol sekizli23 publicKey, extFields)2425      hazm qilish : = SHA1 (konkret)26      Hash2 := hazm qilish[0:14] // 14 * 8 = 112 chapdagi bit2728 agar Sek ≠ 0 va Hash2[0:2*Sek] ≠ 0: // 2 * sek * 8 = 16 * sek chapdagi bitlar29 qaytish yolg'on30 tugatish agar3132      qaytish haqiqiy // tekshiruv muvaffaqiyatli o'tdi33 tugatish tartibi

Usul tekshirish bilan boshlanadi collCount CGA Parameters-dan ma'lumotlar strukturasi haqiqiy qiymatga ega va agar subnetPrefix xuddi shu ma'lumotlar strukturasidan CGA subnet prefiksiga mos keladi (2-qatorda). Bu uchun qilingan xavfsizlik sabablari.

6-dan 18-qatorgacha, Hash1 CGA Parameters ma'lumotlar tuzilmasidan (ochiq kalit va pastki tarmoq prefiksini o'z ichiga olgan) hisoblab chiqiladi va tegishli bitlar CGA interfeysi identifikatori bilan taqqoslanadi. Bunday holda, bu birinchi uchta bitni o'rnatish orqali amalga oshiriladi (Sek) va ikkalasining ettinchi va sakkizinchi bitlari ("u" va "g" bitlari) Hash1 va oson taqqoslash uchun 11 va 14-qatorlarda interfeys identifikatori 0 ga teng.

Ekstraktsiyadan so'ng Sek CGA interfeysi identifikatoridan, Hash2 hisoblangan va birinchi 16 marta Sek xash bitlari 0 bilan taqqoslanadi (22 dan 30 gacha chiziqlar). Agar barcha tekshiruvlar yaxshi chiqsa, ochiq kalit ushbu CGA bilan bog'langanligi (ya'ni amal qilishi uchun) tasdiqlangan.

Xavfsizlik

Uchun tajovuzkor qilish mijoz tajovuzkorga tegishli bo'lmagan ma'lum bir CGA-dan haqiqiy xabarni olganiga ishonsangiz, tajovuzkor a ni topishi kerak xash to'qnashuvi ning tegishli bitlari uchun Hash1 va Hash2 bajarish orqali qo'pol hujum. Agar tajovuzkor maqsadli CGA bilan bir xil CGA hosil qilish uchun ishlatilishi mumkin bo'lgan CGA parametrlari to'plamini topsa (tajovuzkor shaxsiy kalitni biladigan ochiq kalitni ham o'z ichiga oladigan bo'lsa), tajovuzkor aslida CGA-ga egalik qiladigan uy egasini taqlid qilishi mumkin. aniqlanmoqda (ehtimol, mijoz ilgari uy egasi bilan bog'lanib, ochiq kalit o'zgarganligini sezgan bo'lsa, lekin CGA o'zgarmagan bo'lsa).

64 bitdan Hash1, interfeys identifikatorida faqat 59 ishlatiladi, chunki 5 bit ustiga yoziladi. Bilan CGA uchun Sek 0 ga teng bo'lsa, demak kerakli 59 bitni beradigan CGA parametrlari to'plamini topish qiymati taxminan (ichida.) katta O yozuvlari ). Ning katta qiymati Sekammo, bu xarajatlarni bir martaga oshiradi ga chunki birinchi 16 marta Sek bit Hash2 keyin dolzarb bo'lib qoladi (ya'ni, bu bitlarni 0 ga teng bo'lishini talab qilib, xash kengaytmasini amalga oshiradi). CGA ishlab chiqarish jarayonida manzilni yaratish qiymati qiymatiga qarab bir xil faktor bilan oshiriladi Sek, ammo CGA-dan foydalanish va uni tekshirish qiymati doimiy bo'lib qolmoqda.

Chunki Sek CGA Parameters ma'lumotlar tarkibiga kirmaydi, lekin manzilning o'zi, tajovuzkor a dan foydalana olmaydi Sek qo'pol kuch hujumini o'tkazib yuborish (yoki pastga tushirish) uchun maqsad manzildan kichikroq qiymat (masalan, 0) Hash2. Bu maqsadli CGA-dan boshqacha CGA hosil qiladi, chunki interfeys identifikatorining eng chap uchta bitidan bittasi mos kelmaydi. Agar maqsad bo'lsa Sek qiymat interfeys identifikatoriga baribir yoziladi, keyin Hash2 tekshirish jarayonida (deyarli aniq) kerakli miqdordagi chap bitlarning etishmasligi aniqlanadi.

CGA ishlab chiqarish jarayonida uchta manzil to'qnashuvi yuzaga kelishi ehtimoldan yiroq emas. Agar takroriy manzil uchinchi marta aniqlansa, bu, ehtimol, konfiguratsiya yoki amalga oshirishda xato yoki xizmatni rad etish hujumi. Shu sababli, uchun tegishli qiymatlar soni collCount 0 dan 2 gacha bo'lgan oraliq bilan cheklangan bo'lib, ushbu parametr CGA-ni tekshirish jarayonida tajovuzkor tomonidan ekspluatatsiya qilinishini va har xil qiymatlarni sinab ko'rishni oldini olish uchun ushbu diapazonda ekanligi tekshirilishi kerak. Hash2 har safar har xil qiymat sinab ko'riladi.

Natijada bo'lgan subnet prefiksini hazm qilish jarayoniga qo'shish orqali Hash1, tajovuzkor turli xil ichki tarmoq prefikslari bilan manzillarga hujum qilish uchun oldindan hisoblangan bitta ma'lumotlar bazasidan foydalanishi mumkin. Tekshiruvchi, shuningdek, ochiq kalit ushbu manzilga bog'langanligiga va ehtimol bir xil interfeys identifikatoriga ega bo'lgan manzilga emas, balki boshqa subnet prefiksiga bog'langanligiga amin bo'lishi mumkin. CGA spetsifikatsiyasidan foydalanishni buyurganligi sababli subnetPrefix hazm qilish operatsiyalari uchun CGA Parameters ma'lumotlar tuzilmasidan, CGA tekshirish jarayonida CGA subnet prefiksiga mos kelishini tekshirish kerak.

Shuningdek qarang

Adabiyotlar

  1. ^ RFC 3972, Kriptografik tarzda yaratilgan manzillar (CGA), T. Aura (2005 yil mart)
  2. ^ RFC 3971, Xavfsiz qo'shni kashfiyoti (YUBORISH), J. Arkko (tahr.), J. Kempf, B. Zill, P. Nikander (2005 yil mart)