Pse kodet TOTP dështojnë kur ora e pajisjes devijon
Kodi është një hash i sekretit dhe i hapit aktual të kohës. Krahasoni devijimet në të dy skajet, pastaj rregulloni orën në vend që të zgjeroni dritaren.
Kodet njëpërdorimshme mund të jenë plotësisht të sakta në telefonin tuaj dhe megjithatë serveri t'i refuzojë në të njëjtën sekondë. Të dyja palët llogarisin të njëjtin funksion nga një sekret i përbashkët dhe hapi aktual i kohës, kështu që një mospajtim për kohën prodhon një mospajtim për kodin. Kjo e bën devijimin e orës një defekt me rëndësi sigurie dhe jo thjesht një shqetësim.
Këtu kanë rëndësi dy orë, dhe rregullimi i asaj të dukshme është pjesa që njerëzit bëjnë së pari. Ajo që zakonisht kërkon vëmendje është tjetra.
Kodi është funksion i kohës, jo fjalëkalim
TOTP merr sekretin e përbashkët dhe një numërues të nxjerrë nga koha aktuale, i kalon të dyja nëpër një hash me çelës dhe e shkurton rezultatin në një varg dhjetor të shkurtër, siç përcaktohet në RFC 6238. Numëruesi përparon në çdo hap kohe, zakonisht tridhjetë sekonda, kështu që i njëjti sekret prodhon një vlerë të re kur ndryshon hapi. Verifikuesi rillogarit vlerën e pritur për hapin aktual dhe krahason, gjë që kërkon të njëjtin sekret dhe të njëjtin kuptim të tanishmes. Fjalëkalimi mbetet i ripërdorshëm derisa të ndryshohet, ndërsa kjo vlerë skadon në një kufi që klienti nuk e sheh.
Prandaj një kod funksionon dhe ai tjetri dështon disa çaste më vonë. Kjo shpjegon gjithashtu pse kopjimi i një kodi nga një mesazh bisede është zakon kaq i pabesueshëm.
Dy orë duhet të përputhen, jo një
Materiali i regjistrimit është gjëja e parë e përbashkët, dhe koha është e dyta. Nëse sekreti është i saktë ndërsa orët ndryshojnë më shumë se dritarja e toleruar, çdo vlerë e gjeneruar bie në hapin e gabuar dhe refuzohet. Nëse orët përputhen ndërsa sekreti është i gabuar, çdo vlerë refuzohet gjithashtu, dhe të dyja dështimet duken identike nga ekrani i hyrjes. Ndarija e tyre kërkon kontrollimin e shënimit të llogarisë dhe të kohës veçmas, në atë rend.
Ora e verifikuesit meriton të njëjtin shqyrtim si ajo e pajisjes. Një server, burimi i kohës së të cilit është prishur, i refuzon kodet e sakta të të gjithë përdoruesve njëherësh, dhe raportet do të përshkruajnë një ndërprerje të papritur dhe jo një devijim. Vlen ta njohësh këtë model, sepse rregullimi i tij i takon serverit dhe jo njëqind telefonave.
Sa kushton zgjerimi i dritares
Zbatimet mund të pranojnë një kod nga një hap fqinj për të absorbuar dallime të vogla, dhe ai tolerim është vendim dizajni, jo rregullim falas. Çdo hap shtesë shumëfishon numrin e vlerave të vlefshme në çdo çast, gjë që është pikërisht ajo që preferon një sulmues që hamendëson. Rregulli kundër ripërsëritjes ka rëndësi për të njëjtën arsye, pasi një kod i pranuar dy herë është një kod që ka rrjedhur në mënyrë të dobishme. Një administrator që zgjeron dritaren për të heshtur ankesat shkëmben një veti reale për një përmirësim kozmetik.
Rregullimi i orës është riparimi, ndërsa zgjerimi i dritares është qetësues. I pari heq shkakun dhe i dyti e fsheh atë.
Kontrolloni të dyja orët përpara se të provoni përsëri
Lexoni kohën në pajisje dhe në server, dhe krahasoni devijimet në vend të orëve lokale të shfaqura. Komandat më poshtë tregojnë gjendjen e sinkronizimit dhe çastin e papërpunuar UTC në një host ose server Linux. Ekzekutoni ato në të dy skajet përpara se të ndryshoni çdo cilësim vërtetimi.
timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status
Një devijim i matur në sekonda është i pafajshëm, një i matur në minuta shpjegon një refuzim, dhe një sistem që nuk raporton asnjë burim sinkronizimi është kandidat për të dyja. Krahasoni dy vulat kohore UTC drejtpërdrejt, pasi ora lokale përfshin një zonë kohore që algoritmi nuk e sheh kurrë. Nëse devijimet janë të vogla dhe kodet ende dështojnë, ndaloni rregullimin e orëve dhe në vend të kësaj shqyrtoni shënimin e regjistrimit. Përpjekjet e përsëritura kundër një llogarie të bllokuar e bëjnë defektin origjinal më të vështirë për t’u vëzhguar.
Regjistroni kohën e refuzimit, devijimin dhe tekstin e gabimit, dhe lini sekretin e përbashkët jashtë kësaj. Mbështetja mund të punojë me tre të parat dhe nuk duhet të shohë kurrë të katërtin.