Түзмөктүн сааты ооп кеткенде TOTP коддору эмнеге иштебейт
Код — жашыруун сыр менен учурдагы убакыт кадамынын хеши. Эки учтагы четтөөлөрдү салыштырыңыз, анан терезени кеңейтүүнүн ордуна саатты оңдоңуз.
Бир жолу колдонулуучу коддор телефонуңузда толук туура болушу мүмкүн, бирок сервер аларды ошол эле секундада четке кагышы мүмкүн. Эки тарап тең жалпы сыр менен учурдагы убакыт кадамынан бирдей функцияны эсептейт, ошондуктан убакыт тууралуу келишпестик код тууралуу келишпестикке алып келет. Бул сааттын четтөөсүн жөн гана ыңгайсыздык эмес, коопсуздукка тиешелүү кемчилик кылат.
Бул жерде эки саат маанилүү, ал эми көрүнүп турган саатты оңдоо — адамдар биринчи жасаган бөлүк. Адатта көңүл бурууну талап кылган саат — экинчиси.
Код — убакыттын функциясы, сырсөз эмес
TOTP жалпы сырды жана учурдагы убакыттан алынган эсептегичти алат, экөөнү тең ачкычтуу хештен өткөрүп, натыйжаны кыска ондук сапка кыскартат, бул RFC 6238 стандартында аныкталган. Эсептегич ар бир убакыт кадамында алдыга жылат, адатта отуз секунд, ошондуктан кадам өзгөргөндө ошол эле сыр жаңы маани жаратат. Текшерүүчү учурдагы кадамдын күтүлгөн маанисин кайра эсептеп салыштырат, бул ошол эле сырды жана азыркы учур тууралуу ошол эле түшүнүктү талап кылат. Сырсөз өзгөртүлгөнгө чейин кайра колдонулат, ал эми бул маани кардар көрбөгөн чекте бүтөт.
Ошондуктан бир код иштейт, ал эми кийинкиси бир нече учурдан кийин иштебей калат. Бул ошондой эле чат билдирүүсүнөн кодду көчүрүү эмнеге ушунчалык ишенимсиз адат экенин түшүндүрөт.
Эки саат дал келиши керек, бирөө эмес
Каттоо материалы — биринчи жалпы нерсе, ал эми убакыт — экинчиси. Эгер сыр туура болсо, ал эми сааттар уруксат берилген терезедегиден көбүрөөк айырмаланса, ар бир жаралган маани туура эмес кадамга түшүп, четке кагылат. Эгер сааттар дал келсе, ал эми сыр туура эмес болсо, ар бир маани да четке кагылат, жана экөө тең кирүү экранынан бирдей көрүнөт. Аларды бөлүү үчүн эсеп жазуусун жана убакытты өз-өзүнчө, ушул тартипте текшерүү керек.
Текшерүүчүнүн сааты да түзмөктүн саатындай эле кылдат текшерүүгө татыктуу. Убакыт булагы бузулган сервер бардык колдонуучулардын туура коддорун бирден четке кагат, ал эми баяндар четтөөнү эмес, күтүлбөгөн токтоп калууну сүрөттөйт. Бул үлгүнү таануу керек, анткени аны оңдоо жүз телефонго эмес, серверге таандык.
Терезени кеңейтүү канча турат
Ишке ашыруулар кичине айырмачылыктарды сиңирүү үчүн коңшу кадамдын кодун кабыл алышы мүмкүн, жана бул чыдамкайлык акысыз жөндөө эмес, дизайн чечими. Ар бир кошумча кадам каалаган учурда жарактуу маанилердин санын көбөйтөт, бул дал ойлоп табуучу кол салуучуга жагат. Кайталоого каршы эреже да ошол эле себептен маанилүү, анткени эки жолу кабыл алынган код пайдалуу түрдө агып кеткен код. Терезени кайгы-капаны басуу үчүн кеңейткен администратор чыныгы касиетти көз боёочу жакшыртууга алмаштырат.
Саатты оңдоо — оңдоо, ал эми терезени кеңейтүү — тынчтандыргыч. Биринчиси себепти жок кылат, экинчиси аны жашырат.
Кайра аракет кылуудан мурун эки саатты тең текшериңиз
Убакытты түзмөктөн жана серверден окуп, көрсөтүлгөн жергиликтүү убакыттарды эмес, четтөөлөрдү салыштырыңыз. Төмөнкү буйруктар Linux хостунда же серверинде синхрондоо абалын жана таза UTC учурун көрсөтөт. Ар кандай аутентификация жөндөөсүн өзгөртүүдөн мурун аларды эки учта тең иштетиңиз.
timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status
Секунд менен өлчөнгөн четтөө зыянсыз, мүнөт менен өлчөнгөн четтөө баш тартууну түшүндүрөт, ал эми синхрондоо булагын такыр билдирбеген система экөөнө тең талапкер. Эки UTC убакыт белгисин түз салыштырыңыз, анткени жергиликтүү убакыт алгоритм эч качан көрбөгөн убакыт алкагын камтыйт. Эгер четтөөлөр аз болсо жана коддор дагы эле иштебесе, сааттарды жөндөөнү токтотуп, анын ордуна каттоо жазуусун текшериңиз. Кулпуланган эсепке каршы кайталанган аракеттер баштапкы кемчиликти байкоону кыйындатат.
Баш тартуу убактысын, четтөөнү жана ката текстин жазып алыңыз, ал эми жалпы сырды андан тышкары калтырыңыз. Колдоо алгачкы үчөө менен иштей алат жана төртүнчүсүн эч качан көрбөшү керек.