Vaqt hujumi - Timing attack

Yilda kriptografiya, a vaqtni hujum qilish a yon kanal hujumi bunda tajovuzkor murosaga kelishga urinayotgan a kriptotizim kriptografik algoritmlarni bajarish uchun sarflangan vaqtni tahlil qilish orqali. Kompyuterdagi har qanday mantiqiy operatsiyani bajarish uchun vaqt talab etiladi va vaqt kiritilgan ma'lumotlarga qarab farq qilishi mumkin; har bir operatsiya uchun vaqtni aniq o'lchovlari bilan tajovuzkor kirishga teskari ishlashi mumkin. Vaqt ma'lumotlari orqali sirlarni topish ma'lum bo'lgan oddiy matn, shifrlangan matn juftligini kriptanaliz qilishdan ko'ra ancha osonroq bo'lishi mumkin. Ba'zan vaqtni uzatish tezligi kriptoanaliz bilan birlashtiriladi.[1]

Ma'lumot so'rovlarga javob berish vaqtini o'lchash orqali tizimdan chiqib ketishi mumkin. Ushbu ma'lumot tajovuzkorga qanchalik yordam berishi mumkinligi ko'pgina o'zgaruvchiga bog'liq: kriptografik tizim dizayni, tizimdagi ishlaydigan protsessor, ishlatilgan algoritmlar, amalga oshirilishning batafsil tafsilotlari, hujumga qarshi choralar vaqti, o'lchovlarning aniqligi va boshqalar. Vaqt hujumlari qo'llanilishi mumkin. ma'lumotlarga bog'liq bo'lgan vaqt o'zgarishiga ega bo'lgan har qanday algoritm. Vaqtga bog'liqlikni olib tashlash ba'zi bir algoritmlarda tez-tez turli xil ijro etiladigan vaqtni ko'rsatadigan past darajadagi operatsiyalardan foydalanishda qiyin.

Vaqt hujumlari ko'pincha loyihalash bosqichida e'tibordan chetda qoladi, chunki ular amalga oshirishga juda bog'liq va ular bilan bexosdan kiritilishi mumkin kompilyatorni optimallashtirish. Vaqt hujumlaridan saqlanish doimiy funktsiyalarni ishlab chiqishni va yakuniy bajariladigan kodni sinab ko'rishni o'z ichiga oladi.[1]

Qochish

Ko'pgina kriptografik algoritmlarni ma'lumotlarga bog'liq bo'lgan vaqt ma'lumotlarini kamaytiradigan yoki yo'q qiladigan tarzda amalga oshirish mumkin (yoki proksi-server tomonidan maskalanishi mumkin) doimiy vaqt algoritmi. Dasturga har bir qo'ng'iroq har doim aniq x soniyada qaytadigan dasturni ko'rib chiqing, bu erda x - bu har qanday ruxsat berilgan kirishda ushbu tartibni bajarish uchun eng ko'p vaqt. Bunday amalga oshirishda algoritmni o'tkazish vaqti ushbu chaqiruvga berilgan ma'lumotlar haqida hech qanday ma'lumot bermaydi. Ushbu yondashuvning salbiy tomoni shundaki, barcha ijrolar uchun ishlatiladigan vaqt funktsiyani eng yomon bajaradigan vaqtga aylanadi.

Vaqtning ma'lumotlarga bog'liqligi quyidagilardan biridan kelib chiqishi mumkin:[1]

  • Mahalliy bo'lmagan xotiraga kirish, chunki protsessor ma'lumotlarni keshlashi mumkin. Ma'lumotlar keshi bilan protsessorda ishlaydigan dastur, xotira keshga qarab, ma'lumotlarga bog'liq bo'lgan vaqt o'zgarishini namoyish etadi.
  • Shartli sakrashlar. Zamonaviy protsessorlar bunga harakat qilishadi spekulyativ tarzda qatl etish taxmin qilish orqali o'tmishdagi sakrashlar. Noto'g'ri taxmin qilish (aslida tasodifiy maxfiy ma'lumotlar bilan kamdan-kam hollarda), protsessor orqaga qaytishga harakat qilganda, o'lchovli katta kechikishga olib keladi. Bu yozishni talab qiladi filialsiz kod.
  • Haqiqiy protsessor apparatiga qarab ba'zi "murakkab" matematik operatsiyalar:
    • Butun sonli bo'linish deyarli doimo doimiy vaqt emas. CPU bo'luvchi yoki dividend kichik bo'lganda boshqa kod yo'lidan foydalanadigan mikrokod ko'chadan foydalanadi.
    • A .siz protsessorlar bochka almashtirgich smenada va burilishlarni birma-bir joylashtirib ishlaydi. Natijada, siljish miqdori sir bo'lmasligi kerak.
    • Qadimgi protsessorlar ko'paytmalarni bo'linishga o'xshash tarzda ishlaydi.

Misollar

Uchun ijro vaqti kvadrat va ko'paytirish algoritmi ichida ishlatilgan modulli ko'rsatkich kalitdagi '1' bitlar soniga bog'liq. Kalitni topishni osonlashtiradigan "1" bitlik soni deyarli etarli emasligiga qaramay, bir xil kalit va turli xil ma'lumotlar bilan takroriy ijrolar yordamida kalitni to'liq tiklash uchun vaqt ma'lumotlarining statistik korrelyatsion tahlilini o'tkazish uchun foydalanish mumkin. passiv hujumchi. Kuzatiladigan vaqt o'lchovlari ko'pincha shovqinni o'z ichiga oladi (tarmoqning kechikishi yoki disk haydovchisiga kirishning kirish va kirishdan farqlari va xatolarni tuzatish uzatish xatolarini tiklash uchun ishlatiladigan texnikalar). Shunga qaramay, vaqt hujumlari bir qator shifrlash algoritmlariga qarshi amaliy, shu jumladan RSA, ElGamal, va Raqamli imzo algoritmi.

2003 yilda, Boneh va Brumli amaliy tarmoqqa asoslangan vaqtni hujumini namoyish qildi SSL - RSA-dan foydalanish bilan bog'liq bo'lgan turli xil zaifliklarga asoslangan yoqilgan veb-serverlar Xitoyning qolgan teoremasi optimallashtirish. Ularning tajribalarida tarmoqning haqiqiy masofasi kichik edi, ammo hujum bir necha soat ichida serverning shaxsiy kalitini muvaffaqiyatli qayta tikladi. Ushbu namoyish keng tarqalishi va ishlatilishiga olib keldi ko'r qilish SSLni amalga oshirishda texnikalar. Shu nuqtai nazardan, ko'r-ko'rona kalit va shifrlash vaqti o'rtasidagi bog'liqlikni olib tashlashga qaratilgan.[2]

Ning ba'zi versiyalari Unix ning nisbatan qimmat dasturidan foydalaning crypt 8 ta belgidan iborat parolni 11 ta belgidan iborat qatorga kiritish uchun kutubxona funktsiyasi. Eski qurilmalarda ushbu hisoblash ataylab va o'lchov bilan uzoq davom etdi: ba'zi hollarda ikki yoki uch soniya.[iqtibos kerak ] The tizimga kirish Unix-ning dastlabki versiyalaridagi dastur tizimga kirish nomi tanilgan taqdirdagina kriptovalyutani bajargan. Bu parol noto'g'ri bo'lsa ham, kirish nomining amal qilish muddati haqida vaqtni aniqlash orqali ma'lumot tarqaldi. Hujumkor birinchi bo'lib murojaat qilish orqali bunday qochqinlardan foydalanishi mumkin qo'pol kuch haqiqiy ekanligi ma'lum bo'lgan kirish nomlari ro'yxatini yaratish uchun, faqat ushbu nomlarni tez-tez ishlatib turadigan ma'lum parollar to'plami bilan birlashtirish orqali kirishga harakat qiling. Kirish nomlarining haqiqiyligi to'g'risida hech qanday ma'lumot bo'lmasa, bunday yondashuvni amalga oshirish uchun zarur bo'lgan vaqt kattalik buyurtmalariga ko'payib, uni foydasiz qiladi. Unix-ning keyingi versiyalari ushbu nomuvofiqlikni tizimga kirish nomining haqiqiyligidan qat'i nazar, har doim crypt funktsiyasini bajarib tuzatdi.[iqtibos kerak ]

Bitta tizimda ishlaydigan xavfsiz tarzda ajratilgan ikkita jarayon kesh xotirasi yoki virtual xotira qasddan sabab qilib muloqot qilishi mumkin sahifadagi xatolar va / yoki keshni o'tkazib yuboradi bir jarayonda, so'ngra boshqasidan kirish vaqtidagi o'zgarishlarni kuzatish. Xuddi shu tarzda, agar dastur ishonchli bo'lsa, lekin uning xotira / keshlash tarmoqlanish mantig'iga ta'sir etsa, ikkinchi dastur uchun kirish vaqtidagi o'zgarishlarni kuzatib, ma'lumotlarning filial holatiga nisbatan qiymatlarini aniqlash mumkin bo'lishi mumkin; haddan tashqari misollarda, bu kriptografik kalit bitlarini tiklashga imkon beradi.[3][4]

2017 yil Erish va Spektr CPU ishlab chiqaruvchilarini (shu jumladan Intel, AMD, ARM va IBM) protsessorlarini qayta ishlashga majbur qilgan hujumlar ham vaqt hujumlariga bog'liq.[iqtibos kerak ] 2018 yil boshidan boshlab dunyodagi deyarli barcha kompyuter tizimlari Specter ta'sirida bo'lib, bu tarixdagi xaym hujumining eng kuchli namunasidir.[5][6][7]

Algoritm

Quyidagi C kod odatdagi xavfli simli taqqoslashni namoyish etadi, bu belgi mos kelmasligi bilanoq sinovni to'xtatadi. Masalan, "ABCDE" ni "ABxDE" bilan taqqoslaganda, u 3 ta takroriy takrorlashdan so'ng qaytadi:

bool insecureStringCompare(konst bekor *a, konst bekor *b, hajmi_t uzunlik) {  konst char *taxminan = a, *cb = b;  uchun (hajmi_t men = 0; men < uzunlik; men++)    agar (taxminan[men] != cb[men])      qaytish yolg'on;  qaytish to'g'ri;}

Taqqoslash uchun, quyidagi versiya doimiy ravishda barcha belgilarni sinab ko'rish va a yordamida ishlaydi bitli operatsiya natija to'plash uchun:

bool constantTimeStringCompare(konst bekor *a, konst bekor *b, hajmi_t uzunlik) {  konst char *taxminan = a, *cb = b;  bool natija = to'g'ri;  uchun (hajmi_t men = 0; men < uzunlik; men++)    natija &= taxminan[men] != cb[men];  qaytish natija;}

Izohlar

Agar dushman apparatni amalga oshirishning ichki qismlarini va undan ham ko'proq foydalanilayotgan kriptografik tizimni bilsa, vaqtni belgilash uchun hujumlarni o'rnatish osonroq. Kriptografik xavfsizlik hech qachon ikkalasining ham noaniqligiga bog'liq bo'lmasligi kerak (qarang) qorong'ulik orqali xavfsizlik, xususan ikkala Shannonning Maksim va Kerxofs printsipi ), vaqt hujumlariga qarshilik ham bo'lmasligi kerak. Hech narsa bo'lmasa, namunani sotib olish va teskari muhandislik qilish mumkin. Vaqt hujumlari va boshqa yon kanal hujumlari ba'zi qurilmalar tomonidan ishlatiladigan kriptografik algoritmni aniqlashda yoki ehtimol teskari muhandislikda ham foydali bo'lishi mumkin.

Adabiyotlar

  1. ^ a b v "Doimiy ishlaydigan kripto". BearSSL. Olingan 10 yanvar 2017.
  2. ^ Devid Brumli va Dan Bone. Vaqtni uzoqdan hujum qilish amaliydir. USENIX xavfsizlik simpoziumi, 2003 yil avgust.
  3. ^ Persival, Kolin, Ko'ngil ochish va foyda olish uchun kesh yo'qolgan, 2005.
  4. ^ Bernshteyn, Daniel J., AES-ga qarshi kesh-xujumlar, 2005.
  5. ^ "Spektr tizimlari bo'yicha tez-tez so'raladigan savollar". Meltdown va Spectre.
  6. ^ "Xavfsizlik nuqsonlari deyarli barcha telefonlar va kompyuterlarni xavf ostiga qo'yadi". Reuters. 4 yanvar 2018 yil.
  7. ^ "POWER oilasidagi protsessorlarga mumkin bo'lgan ta'sir". IBM PSIRT blogi. 14 may 2019 yil.

Qo'shimcha o'qish