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