Часовыя атакі - гэта складаны клас пабочных атак, якія выкарыстоўваюць варыяцыі часу, які патрабуецца сістэме для выканання крыптаграфічных алгарытмаў або іншых адчувальных аперацый. Гэтыя варыяцыі можна вымераць і аналізаваць, каб атрымаць канфідэнцыяльную інфармацыю, такую як крыптаграфічныя ключы, паролі або іншыя канфідэнцыйныя даныя. Фундаментальны прынцып атак па часе заключаецца ў тым, што розныя ўваходныя дадзеныя або станы сістэмы могуць прывесці да рознага часу выканання, нават калі адрозненні нязначныя. Уважліва вымяраючы гэты час выканання, зламыснік можа сабраць дастатковую колькасць інфармацыі, каб аднавіць канфідэнцыяльныя даныя.
У кантэксце крыптаграфічных сістэм атакі па часе асабліва магутныя, таму што многія крыптаграфічныя алгарытмы ўключаюць аперацыі, час выканання якіх можа залежаць ад сакрэтнага ключа або адкрытага тэксту, які апрацоўваецца. Напрыклад, разгледзім простую крыптаграфічную аперацыю, такую як модульнае ўзвядзенне ў ступень, якая звычайна выкарыстоўваецца ў крыптаграфіі з адкрытым ключом (напрыклад, RSA). Час, неабходны для модульнага ўзвядзення ў ступень, можа вар'іравацца ў залежнасці ад колькасці бітаў, устаноўленых у 1 у ступені. Калі зламыснік можа вымераць час, затрачаны на выкананне некалькіх модульных узвядзенняў у ступень з рознымі ўваходнымі дадзенымі, ён патэнцыйна можа зрабіць выснову аб бітах сакрэтнага паказчыка.
Адна з самых ранніх і найбольш вядомых атак па часе была прадэманстравана Полам Кохерам у 1996 годзе супраць рэалізацый RSA і Diffie-Hellman. Кохер паказаў, што, вымяраючы час, неабходны гэтым алгарытмам для выканання аперацый з прыватным ключом, можна было вывесці прыватны ключ. Атака выкарыстала той факт, што пэўныя аперацыі ў алгарытмах, такія як модульнае множанне, займалі розны час у залежнасці ад уваходных значэнняў.
Іншым класічным прыкладам атакі па часе з'яўляецца атака на алгарытм AES (Advanced Encryption Standard). AES - гэта сіметрычны алгарытм шыфравання ключа, які ўключае ў сябе некалькі этапаў аперацый замены, перастаноўкі і змешвання. У некаторых рэалізацыях час доступу да памяці або выканання пэўных аперацый можа залежаць ад значэнняў сакрэтнага ключа і адкрытага тэксту. Уважліва вымяраючы час, затрачаны на шыфраванне розных адкрытых тэкстаў, зламыснік можа атрымаць інфармацыю аб сакрэтным ключы.
Каб дэталёва зразумець, як працуюць атакі па часе, разгледзім наступныя этапы, якія звычайна ўваходзяць у выкананне атакі па часе:
1. Фаза вымярэння: Зламыснік неаднаразова адпраўляе розныя ўваходныя дадзеныя ў мэтавую сістэму і вымярае час, неабходны сістэме для адказу. Гэтыя вымярэнні павінны быць дакладнымі і для дасягнення неабходнай дакладнасці могуць спатрэбіцца таймеры з высокім дазволам або спецыяльнае абсталяванне.
2. Collecte de données : Зламыснік збірае вялікую колькасць вымярэнняў часу, якія адпавядаюць розным уводам. Чым больш вымярэнняў сабрана, тым дакладней зламыснік можа атрымаць канфідэнцыйную інфармацыю.
3. Статыстычны аналіз: Зламыснік аналізуе сабраныя даныя пра час з дапамогай статыстычных метадаў для выяўлення заканамернасцей або карэляцыі паміж уведзенымі значэннямі і часам выканання. Гэты аналіз можа выявіць інфармацыю аб унутраным стане сістэмы, напрыклад, значэнні сакрэтных ключоў або іншыя канфідэнцыяльныя дадзеныя.
4. Выманне ключа: На аснове статыстычнага аналізу зламыснік аднаўляе канфідэнцыйную інфармацыю. Гэты крок можа ўключаць у сябе рашэнне матэматычных ураўненняў або выкарыстанне метадаў машыннага навучання для вываду сакрэтных даных.
Каб праілюстраваць гэтыя крокі на канкрэтным прыкладзе, разгледзім атаку па часе на функцыю параўнання пароляў. У многіх сістэмах для аўтэнтыфікацыі карыстальнікаў выкарыстоўваюцца функцыі, якія параўноўваюць уведзеныя карыстальнікам паролі з захаванымі паролямі. Наіўная рэалізацыя такой функцыі можа параўноўваць паролі сімвал за сімвалам і вяртацца, як толькі выяўляецца неадпаведнасць. Гэта азначае, што час, неабходны для параўнання двух пароляў, можа адрознівацца ў залежнасці ад колькасці супадаючых сімвалаў у пачатку пароляў. Зламыснік можа выкарыстаць гэтую змену часу, каб вывесці правільны пароль па адным сімвале за раз.
Напрыклад, выкажам здагадку, што захаваны пароль - "securepassword". Зламыснік можа пачаць з адпраўкі пароля "a" і вымярэння часу, затрачанага на параўнанне. Калі параўнанне адбываецца хутка, зламыснік ведае, што першы сімвал не з'яўляецца "а". Затым зламыснік спрабуе "b", "c" і г.д., пакуль не знойдзе сімвал, параўнанне якога займае крыху больш часу, паказваючы супадзенне. Затым зламыснік пераходзіць да другога сімвала і паўтарае працэс, у канчатковым выніку аднаўляючы ўвесь пароль.
Каб змякчыць атакі па часе, можна выкарыстоўваць некалькі контрмер:
1. Алгарытмы з пастаянным часам: Рэалізаваць крыптаграфічныя алгарытмы і іншыя адчувальныя аперацыі такім чынам, каб забяспечыць пастаянны час выканання незалежна ад уваходных значэнняў. Гэта можа быць складана, але вельмі важна для прадухілення атак па часе.
2. Выпадковыя затрымкі: Увесці выпадковыя затрымкі ў выкананні канфідэнцыйных аперацый, каб схаваць інфармацыю аб часе. Аднак гэты падыход можа быць менш эфектыўным супраць зламыснікаў, якія могуць усярэдніць выпадковыя затрымкі па многіх вымярэннях.
3. Тэхніка асляплення: Выкарыстоўвайце метады асляплення для рандомизации ўваходных дадзеных для крыптаграфічных аперацый, што ўскладняе для зламыснікаў суаднясенне часу выканання з пэўнымі ўваходнымі значэннямі.
4. Апаратныя сродкі процідзеяння: Ужывайце апаратныя меры супрацьдзеяння, такія як спецыяльныя крыптаграфічныя супрацэсары, якія прызначаны для супрацьстаяння атакам па часе шляхам забеспячэння пастаяннага выканання або іншых ахоўных мер.
5. Аўдыт і тэставанне кода: Рэгулярна правярайце і тэстуйце код на наяўнасць уразлівасцей у часе, асабліва ў крыптаграфічных рэалізацыях. Аўтаматызаваныя інструменты і метады могуць дапамагчы вызначыць магчымыя ўцечкі часу.
Часовыя атакі падкрэсліваюць важнасць разгляду ўразлівасцяў бакавых каналаў пры распрацоўцы і ўкараненні бяспечных сістэм. У той час як крыптаграфічныя алгарытмы часта аналізуюцца на прадмет іх матэматычнай трываласці, іх практычная бяспека таксама залежыць ад дэталяў рэалізацыі і магчымасці атак па бакавых каналах. Распрацоўшчыкі і спецыялісты па бяспецы павінны быць пільнымі пры ліквідацыі гэтых уразлівасцяў, каб забяспечыць надзейнасць крыптаграфічных сістэм.
Іншыя апошнія пытанні і адказы адносна Атакі па часе працэсара:
- Якія некаторыя праблемы і кампрамісы звязаны з укараненнем апаратнага і праграмнага забеспячэння для змякчэння наступстваў па часе пры захаванні прадукцыйнасці сістэмы?
- Якую ролю адыгрывае прадказальнік разгалінаванняў у атаках на працэсар, і як зламыснікі могуць маніпуляваць ім для ўцечкі канфідэнцыйнай інфармацыі?
- Як праграмаванне з пастаянным часам можа дапамагчы знізіць рызыку атак па часе ў крыптаграфічных алгарытмах?
- Што такое спекулятыўнае выкананне і як яно спрыяе ўразлівасці сучасных працэсараў да такіх атак, як Spectre?
- Што такое таймінгавая атака?