Pam mae codau TOTP yn methu pan fydd cloc y ddyfais yn drifftio
Mae’r cod yn hash o’r gyfrinach a’r cam amser cyfredol. Cymharwch y gwrthbwyso ar y ddau ben, yna trwsiwch y cloc yn lle lledu’r ffenestr.
Gall codau untro fod yn hollol gywir ar eich ffôn a chael eu gwrthod gan y gweinydd yn yr un eiliad. Mae’r ddwy ochr yn cyfrif yr un ffwythiant o gyfrinach a rennir a’r cam amser cyfredol, felly mae anghytundeb am yr amser yn cynhyrchu anghytundeb am y cod. Mae hynny’n gwneud drifft cloc yn fai sy’n berthnasol i ddiogelwch yn hytrach na bod yn boen yn unig.
Mae dau gloc yn bwysig yma, a thrwsio’r un gweladwy yw’r rhan mae pobl yn ei wneud gyntaf. Yr un sydd fel arfer angen sylw yw’r llall.
Mae’r cod yn ffwythiant o amser, nid cyfrinair
Mae TOTP yn cymryd y gyfrinach a rennir a chyfrifydd sy’n deillio o’r amser cyfredol, yn rhoi’r ddau drwy hash ag allwedd, ac yn cwtogi’r canlyniad i linyn degol byr, fel y pennir yn RFC 6238. Mae’r cyfrifydd yn symud ymlaen gyda phob cam amser, tri deg eiliad fel arfer, felly mae’r un gyfrinach yn cynhyrchu gwerth newydd pan fydd y cam yn newid. Mae’r gwiriedydd yn ailgyfrifo’r gwerth disgwyliedig ar gyfer y cam cyfredol ac yn cymharu, sy’n gofyn am yr un gyfrinach a’r un syniad o nawr. Mae cyfrinair yn parhau i fod yn ailddefnyddiadwy nes iddo gael ei newid, tra bo’r gwerth hwn yn dod i ben ar ffin na all y cleient ei gweld.
Dyna pam mae un cod yn gweithio ac mae’r nesaf yn methu eiliadau’n ddiweddarach. Mae hefyd yn esbonio pam mae copïo cod o neges sgwrs yn arfer mor annibynadwy.
Rhaid i ddau gloc gytuno, nid un
Deunydd ymrestru yw’r peth cyntaf a rennir, ac amser yw’r ail. Os yw’r gyfrinach yn gywir tra bo’r clociau’n gwahaniaethu mwy na’r ffenestr a oddefir, mae pob gwerth a gynhyrchir yn glanio yn y cam anghywir ac yn cael ei wrthod. Os yw’r clociau’n cytuno tra bo’r gyfrinach yn anghywir, mae pob gwerth yn cael ei wrthod hefyd, a mae’r ddau fethiant yn edrych yn unfath o’r sgrin fewngofnodi. Mae eu gwahanu yn golygu gwirio cofnod y cyfrif a’r amser ar wahân, yn y drefn honno.
Mae cloc y gwiriedydd yn haeddu’r un archwiliad â chloc y ddyfais. Mae gweinydd y mae ei ffynhonnell amser wedi torri yn gwrthod codau cywir gan bob defnyddiwr ar unwaith, a bydd yr adroddiadau’n disgrifio methiant sydyn yn hytrach na drifft. Mae’r patrwm hwnnw’n werth ei gydnabod, oherwydd mae ei atgyweiriad yn perthyn i’r gweinydd ac nid i gant o ffonau.
Beth mae lledu’r ffenestr yn ei gostio
Gall gweithrediadau dderbyn cod o gam cyfagos i amsugno gwahaniaethau bach, ac mae’r goddefgarwch hwnnw’n benderfyniad dylunio yn hytrach nag yn addasiad am ddim. Mae pob cam ychwanegol yn lluosi nifer y gwerthoedd sy’n ddilys ar unrhyw adeg, sef yn union yr hyn y mae ymosodwr sy’n dyfalu yn ei ffafrio. Mae’r rheol ailchwarae yn bwysig am yr un rheswm, gan fod cod a dderbynnir ddwywaith yn god sydd wedi gollwng yn ddefnyddiol. Mae gweinyddwr sy’n lledu’r ffenestr i dawelu cwynion yn cyfnewid eiddo go iawn am welliant cosmig.
Trwsio’r cloc yw’r atgyweiriad, tra bo lledu’r ffenestr yn dawelydd. Mae’r cyntaf yn tynnu’r achos a’r ail yn ei guddio.
Gwiriwch y ddau gloc cyn i chi geisio eto
Darllenwch yr amser ar y ddyfais ac ar y gweinydd, a chymharwch y gwrthbwyso yn hytrach na’r amseroedd lleol a ddangosir. Mae’r gorchmynion isod yn dangos cyflwr cysoni a’r eiliad UTC crai ar westeiwr neu weinydd Linux. Rhedwch nhw ar y ddau ben cyn newid unrhyw osodiad dilysu.
timedatectl
date -u +'%Y-%m-%dT%H:%M:%SZ'
chronyc tracking
timedatectl timesync-status
Mae gwrthbwyso a fesurir mewn eiliadau yn ddiniwed, un a fesurir mewn munudau yn esbonio gwrthodiad, ac mae system sy’n adrodd dim ffynhonnell gysoni yn ymgeisydd ar gyfer y ddau. Cymharwch y ddau stamp amser UTC yn uniongyrchol, gan fod amser lleol yn cynnwys cylchfa amser nad yw’r algorithm byth yn ei gweld. Os yw’r gwrthbwyso yn fach ac mae’r codau’n dal i fethu, stopiwch addasu clociau ac archwiliwch y cofnod ymrestru yn lle hynny. Mae ymdrechion ailadroddus yn erbyn cyfrif wedi’i gloi yn gwneud y bai gwreiddiol yn anoddach i’w arsylwi.
Cofnodwch amser y gwrthodiad, y gwrthbwyso a thestun y gwall, a gadewch y gyfrinach a rennir allan o hynny. Gall cymorth weithio gyda’r tri cyntaf ac ni ddylai byth weld y pedwerydd.