Kalitni cho'zish - Key stretching

Yilda kriptografiya, tugmachani cho'zish ehtimol kuchsiz qilish uchun texnikadan foydalaniladi kalit, odatda a parol yoki parol, a ga nisbatan xavfsizroq qo'pol hujum resurslarni (vaqtni va ehtimol bo'shliqni) ko'paytirish orqali har bir mumkin bo'lgan kalitni sinab ko'rish kerak. Odamlar tomonidan yaratilgan parollar yoki parollar ko'pincha qisqa yoki oldindan aytib berilishi mumkin parolni buzish, va tugmachalarni cho'zish bitta parol nomzodini sinab ko'rishning asosiy bosqichini murakkablashtirish orqali bunday hujumlarni yanada qiyinlashtirishga qaratilgan. Kalitlarni cho'zish, shuningdek, qo'pol kuch ishlatadigan tajovuzkor nuqtai nazaridan uzunroq uzunlik uzunligini taqlid qilish orqali kalit uzunligi cheklangan ba'zi bir real dasturlarda xavfsizlikni yaxshilaydi.[1]

Tugmachani cho'zishni bajarishning bir necha yo'li mavjud. Buning bir usuli bu kriptografik xash funktsiyasi yoki a blok shifr bir necha marta loopda. Masalan, a uchun kalit ishlatilgan dasturlarda shifr, asosiy jadval shifrda uni bajarish uchun ma'lum vaqt davom etishi uchun o'zgartirish mumkin. Yana bir usul - bu katta xotira talablariga ega bo'lgan kriptografik xash funktsiyalaridan foydalanish - bu xotiraga bog'liq bo'lgan dushmanlarning asabiy hujumlarida samarali bo'lishi mumkin.

Jarayon

Kalitlarni cho'zish algoritmlari kirish kalitini oladigan algoritmga bog'liq va keyin cho'zilgan shifrni yaratish uchun katta kuch sarflaydi ( yaxshilangan kalit[iqtibos kerak ]) tasodifiylikni va uzunroq kalit uzunligini taqlid qilish. Algoritmda ma'lum yorliq bo'lmasligi kerak, shuning uchun kirish va shifrni bog'lashning eng samarali usuli bu kalitni uzaytirish algoritmini o'zi takrorlashdir. Bu shafqatsiz tajovuzkorlarni har bir urinish uchun bir xil kuch sarflashga majbur qiladi. Agar ushbu qo'shimcha harakat ma'lum bir kalit uzunligidagi barcha tugmachalarni qo'pollik bilan qidirish bilan taqqoslansa, u holda kirish tugmasi quyidagicha tavsiflanishi mumkin cho'zilgan shu uzunlik bo'yicha.[1]

Kalitni cho'zish tajovuzkorga ikkita yo'l qo'yadi:

  • Kengaytirilgan kalitning mumkin bo'lgan kombinatsiyalariga urinib ko'ring, ammo agar kengaytirilgan kalit etarlicha uzoq va oldindan aytib bo'lmaydigan bo'lsa, buni amalga oshirish mumkin emas (masalan,algoritm tasodifiylikni etarlicha taqlid qiladi, shuning uchun tajovuzkor barcha kengaytirilgan kalit maydonini sinab ko'rishi kerak)
  • A bilan boshlash mumkin bo'lgan kuchsizroq boshlang'ich kalitning mumkin bo'lgan birikmalariga urinib ko'ring lug'at hujumi agar boshlang'ich kalit parol yoki parol bo'lsa, lekin har bir sinov uchun tajovuzkorning qo'shimcha harakatlari, agar xarajatlarni hisoblash va xotira iste'moli kutilgan foydadan yuqori bo'lsa, hujumni iqtisodiy bo'lmagan holatga keltirishi mumkin.

Agar tajovuzkor foydalanuvchi bilan bir xil uskuna sinfidan foydalansa, har bir taxmin foydalanuvchini olgan vaqtni qayta ishlashga o'xshash vaqtni oladi (masalan, bir soniya). Hatto tajovuzkor foydalanuvchiga qaraganda ancha katta hisoblash manbalariga ega bo'lsa ham, tugmachani uzib qo'yish tajovuzkorni sekinlashtiradi va shu bilan birga tizimning biron bir qonuniy foydalanuvchiga yaroqliligiga ta'sir qilmaydi. Buning sababi shundaki, foydalanuvchi parolini kiritganda foydalanuvchi kompyuterida faqat bir marta cho'zish funktsiyasini hisoblashi kerak, tajovuzkor uni hujumdagi har bir taxmin uchun hisoblashi kerak.

Ushbu jarayon asl bo'shliq entropiyasini o'zgartirmaydi. Asosiy cho'zish algoritmi deterministik, zaif kirish har doim bir xil kengaytirilgan kalitni yaratishga imkon beradi, ammo shuning uchun kengaytirilgan tugmachani kirish tugmachasi maydonidan ko'ra ko'proq mumkin bo'lgan kombinatsiyalar bilan cheklaydi. Binobarin, ushbu hujum ba'zi bir narsalarga qarshi himoya qilinmasa, himoyasiz bo'lib qoladi vaqt xotirasi bilan bog'liq savdo-sotiq rivojlantirish kabi kamalak stollari parallel ravishda kengaytirilgan kalit maydonining bir nechta nusxalarini nishonga olish (samarali a yorliq algoritmni takrorlash uchun). Shu sababli, tugmachani cho'zish ko'pincha birlashtiriladi tuzlash.[1]

Xashga asoslangan

Ko'p kutubxonalar funktsiyalarining bir qismi sifatida tugmachalarni uzatishni amalga oshiradigan funktsiyalarni taqdim etadi; qarang kripto (3) misol uchun. PBKDF2 paroldan shifrlash kalitini yaratish uchun va parolni tasdiqlash uchun shart emas. Chiqish bitlari soni PBKDF2 da ishlatiladigan ichki xeshlash algoritmidan kam yoki unga teng bo'lsa, PBKDF2 ikkalasi uchun ham ishlatilishi mumkin, bu odatda SHA-2 (512 bitgacha), yoki statik ma'lumotlarni shifrlash uchun shifrlash kaliti sifatida ishlatiladi.

Kuch va vaqt

Ushbu misollarda a shaxsiy kompyuter taxminan 65,000 qila oladi SHA-1 bir soniyada xeshlar. Shunday qilib, tugmachani cho'zishdan foydalanadigan dastur 65000 ta xeshdan foydalanishi va foydalanuvchini ko'pi bilan bir soniyaga kechiktirishi mumkin. E'tibor bering a 2019 yil iyul oyidan boshlab 700 dollarlik GPU bir soniyada 10 milliarddan ortiq SHA-1 xeshlarini amalga oshirishi mumkin.[2]

Sinov paroli yoki parolni sinab ko'rish uchun odatda bitta xash operatsiyasi talab qilinadi. Ammo agar tugmachani cho'zish ishlatilgan bo'lsa, tajovuzkor har bir sinab ko'rilgan kalit uchun kuchaytirilgan kalitni hisoblashi kerak, ya'ni har bir test uchun hisoblash uchun 65000 xesh mavjud. Bu tajovuzkorning ish hajmini 65000 marta, taxminan 2 marta oshiradi16Bu shuni anglatadiki, kengaytirilgan kalit kalit kuchi bo'yicha taxminan 16 qo'shimcha bitga teng.

Mur qonuni kompyuter tezligi taxminan 1,5 yilda ikki baravar ko'payishini tasdiqlaydi. Ushbu taxminga ko'ra, har 1,5 yilda bir marta asosiy kuch kuchi shubhasiz majburiydir. Bu shuni anglatadiki, 16 ta qo'shimcha kuch kuchi taxminan 16 × 1,5 = 24 yil o'tgach, yorilishga to'g'ri keladi, ammo bu shuni anglatadiki, tizim bir xil xavfsizlikni saqlab qolish uchun har 1,5 yilda bir marta ishlatadigan kalitlarni ikki baravar ko'paytirish kerak. aksariyat tugmachalar zarur bo'lgandan ko'ra xavfsizroq, kalitlarni izchil ishlab chiqarishni talab qiladigan tizimlar, ehtimol kalitlarni cho'zishda ishlatiladigan takrorlashlar sonini yangilamaydi, bunday holatda dizayner kalitlarni chiqarish tizimining qancha vaqt ishlashini xohlashlarini hisobga olishlari kerak. o'zgartirilmagan va tizimning ishlash muddati uchun tegishli miqdordagi xeshlarni tanlashi kerak).

CPU bilan bog'liq xash funktsiyalari hali ham himoyasiz apparat dasturlari. SHA-1 ning bunday tatbiq etilishi 5000 dan kam eshik va 400 soat tsiklidan foydalangan holda mavjud.[3] Ko'p millionli darvoza bilan FPGA narxi 100 dollardan kam,[4] tajovuzkor to'liq qurishi mumkin ro'yxatdan o'tmagan taxminan 5000 dollar evaziga apparat krakeri.[iqtibos kerak ] 100 MGts chastotada ishlaydigan bunday dizayn sekundiga 300,000 tugmachani sinovdan o'tkazishi mumkin. Tajovuzkor yaxshi narx / tezlik murosasini tanlashda erkindir, masalan, 2500 dollar evaziga 150.000 kalit / soniya dizayni.[iqtibos kerak ] Kalit cho'zilib ketish hujumchini bunday vaziyatda hali ham sekinlashtiradi; to'g'ridan-to'g'ri SHA-1 xashiga hujum qiladigan 5000 dollarlik dizayn 300000 ÷ 2 ni sinab ko'rishi mumkin edi16 78 4,578 tugma / soniya.[iqtibos kerak ]

Uskuna yondashuvidan himoya qilish, xotiraga bog'liq kriptografik funktsiyalar ishlab chiqilgan. Ular xotiraning katta hajmini oldindan aytib bo'lmaydigan tarzda oladi keshlar samarasiz. Katta miqdordagi past kechikish xotirasi qimmat bo'lganligi sababli, tajovuzkorni sezilarli darajada oldini olish kerak.

Tarix

Birinchi ataylab sekin parolga asoslangan kalitlarni chiqarish funktsiyasi "CRYPT" tomonidan 1978 yilda tasvirlangan Robert Morris shifrlash uchun Unix parollar.[5] Unda takrorlanish soni 25, 12 bitli tuz va varianti ishlatilgan DES pastki funktsiya sifatida. (DES standart uskunalari yordamida hujumlarni to'xtatish uchun DES mos kelmasligi kerak edi.) Parollar maksimal sakkiztagacha cheklangan ASCII belgilar. Bu o'z davri uchun katta yutuq bo'lsa-da, CRYPT (3) hozirda etarli emas deb hisoblanadi. Uchun mo'ljallangan takrorlanish soni PDP-11 davri juda past, 12 bit tuz noqulaylik tug'diradi, ammo oldindan tayyorlangan lug'at hujumlarini to'xtatmaydi va 8 ta belgi chegarasi kuchliroq foydalanishni oldini oladi. parollar.

Kabi zamonaviy parolga asoslangan kalitlarni ishlab chiqarish funktsiyalari PBKDF2, kabi kriptografik xashdan foydalaning SHA-2, uzunroq tuz (masalan, 64 bit) va yuqori iteratsiya soni. AQSh Milliy Standartlar va Texnologiyalar Instituti (NIST) minimal takrorlanish sonini 10000 ga tavsiya qiladi.[6]:5.1.1.2 "Ayniqsa, muhim kalitlar uchun yoki juda kuchli tizimlar yoki foydalanuvchi tomonidan qabul qilinadigan ishlash juda muhim bo'lmagan tizimlar uchun 10 000 000 takrorlash soni o'rinli bo'lishi mumkin."[7]:5.2

2009 yilda xotirani zichlashtiradigan kalitlarni mustahkamlash algoritmi, skript, kalit sinovlarini tezlashtirish uchun odatiy, juda parallel qo'shimcha qurilmalardan foydalanishni cheklash niyatida kiritilgan.[8][9]

2013 yilda, a Parollarni aralashtirish bo'yicha musobaqa grafika protsessorlari va maxsus jihozlarning hujumlariga qarshi turadigan yaxshilangan tugmachalarni cho'zish standartini tanlash uchun o'tkazildi. G'olib, Argon2, 2015 yil 1-iyulda tanlangan.[10]

Kalitlarni uzatishni ishlatadigan ba'zi tizimlar

Shuningdek qarang

Adabiyotlar

  1. ^ a b v Kelsi J, Schneier B, Hall C, Vagner D (1998). Okamoto E, Davida G, Mambo M (tahrir). "Past entropiya kalitlarining xavfsiz dasturlari". Kompyuter fanidan ma'ruza matnlari. Springer. 1396 (jild 1936, Axborot xavfsizligi: Birinchi Xalqaro seminar, ISW'97, Yaponiya): 121–134. doi:10.1007 / BFb0030415. ISBN  978-3-540-64382-1.
  2. ^ [1], 1000 ta takrorlanish bilan PBKDF2-HMAC-SHA1 5,164.9 kH / s tezlikda 2 002 SHA-1 xeshga tushadi, bu sekundiga 10 340 129 800 SHA-1 xeshga teng.
  3. ^ http://events.iaik.tugraz.at/RFIDSec08/Papers/Publication/04%20-%20ONeill%20-%20Low%20Cost%20SHA-1%20-%20Slides.pdf
  4. ^ "Arxivlangan nusxa". Arxivlandi asl nusxasi 2011-07-16. Olingan 2010-08-08.CS1 maint: nom sifatida arxivlangan nusxa (havola)
  5. ^ Morris, Robert; Tompson, Ken (1978-04-03). "Parol xavfsizligi: voqea tarixi". Qo'ng'iroq laboratoriyalari. Arxivlandi asl nusxasi 2003-03-22. Olingan 2011-05-09.
  6. ^ Grassi Pol A. (iyun 2017). SP 800-63B-3 - raqamli identifikatsiya qilish bo'yicha ko'rsatmalar, autentifikatsiya va hayot aylanishini boshqarish. NIST. doi:10.6028 / NIST.SP.800-63b.
  7. ^ Meltem Sönmez Turan, Eleyn Barker, Uilyam Burr va Lili Chen (2010 yil dekabr). SP 800-132 - Parolga asoslangan kalitlarni ishlab chiqarish bo'yicha tavsiyalar, 1-qism: Saqlash uchun dasturlar. NIST. doi:10.6028 / NIST.SP.800-132.CS1 maint: bir nechta ism: mualliflar ro'yxati (havola)
  8. ^ Skript
  9. ^ scrypt: Yangi tugmachani chiqarish funktsiyasi, Colin Percival, BSDCan 2009, kirish 2011-2-1
  10. ^ Parollarni aralashtirish bo'yicha musobaqa
  11. ^ Drepper, Ulrich. "SHA-256 va SHA-512 yordamida Unix crypt".