Нууц үг ба түүнийг хутгах, давслах тухай



Компьютерын нарийн мэргэжлийг эзэмшснээс бусад хүмүүст нууц үгээ давслаад /salt/, хутгачихсан /hash/ гээд яривал бөөн инээдэм болж мэдэх юм. Хэдий нэр томьёо хэдий ч ийм этгээд үгсийг дурын үгээр оноочхоогүй нь тодорхой. Харин яахаараа нууц үгийг хольж, давсалж болоод байдаг билээ?



Ямар ч тохиолдолд нууц үг сонгохдоо өөрийн мэдээллийг /нэр, хаяг, төрсөн өдөр, дуртай зүйлс г.м/ ашиглахгүй байх, ᠌᠌"password", "123456" зэрэг хялбар нууц үг ашиглахгүй байх, нэг төрлийн тэмдэгтээс бүрдсэн нууц үг ашиглахгүй байх хэрэгтэй. Олон төрлийн /Тоо, жижиг үсэг, том үсэг, тэмдэгт, зай/ зэргийг ашиглан урт, утгагүй нууц үг ашиглах нь ямар ч төрлийн халдлагаас таныг сэргийлэх болно. 

Аливаа системд нэвтрэх нууц үг нь зайлшгүй хаа нэгтээ /датабааз, бусад файл/ байршиж байдаг. Харин та хулгайч гэж үзвэл нууц үгийг олохын тулд юу хийх хэрэгтэй болох вэ? Мэдээж нууц үгийг агуулсан тэр бааз эсвэл файлыг хулгайлна. Хэрвээ бааз алдагдсан ч нууц үгээ тусгай аргаар хольж хутгаад, энд нь тэнд нь орлуулаад, ямар аргаар шифрлэсэн /энкриптлэх/ нь мэдэгдэхгүй болгоод хадгалчихсан байвал мань хакер шифрийг тайлж чадахгүй үед эцсийн зорилгодоо хүрч чадахгүй байх юм. Гэвч! Хангалттай хугацаа, хүч байгаа цагт тайлагдахгүй шифр гэж үгүй. Мөн системд нууц үгээ оруулахад хэрхэн шифрлэгдсэн кодтой тулгаж үзэх вэ? Оруулсан нууц үгийг шифрлээд шифртэй нь таарч байгаа эсэхийг тулгаж үздэг байх нь. Тэгэхээр нөхөр шифр өөрөө файл дунд хадгалагдаж байгаа гэсэн үг. 

Энэ бүхний төлөө, шифр олдох, нууц үг тайлагдах магадлалыг бууруулахын тулд л нууц үгийг улам "ихээр" хутгаж, давслах шаардлага. 

Хутгах буюу hash-ын тухай.

Хамгийн энгийн жишээ авахад төдийлөн сайн биш хэш нь нэг иймэрхүү байдлаар ажиллана:

Нууц үгийн тэмдэгт бүрийг харгалзах тоон утгад шилжүүлнэ. Үр дүнг 2-тын тоололд шилжүүлэн x-or /Венийн диаграм стилийн гээд ойлгочхож болно/ ашиглан нэг үр дүн гарган авна. Жишээ нь “ABCD” гэдэг нууц үг байгаад тоон утга руу шилжүүлье. ([65, 66, 67, 68]) боллоо. Үр дүнг 2-тын тооллын системд шилжүүлж x-or ашиглахад 1000001 xor 1000010 xor 1000011 xor 1000100 = 0000100 гэсэн үр дүн гарч байна.  

Бодит байдал дээр гараар ийм хялбар тооцологдохооргүй хэцүү байна гэдгийг санаарай. 

Тэгэхээр энэ хэш гээч нь нууц үгийн утгыг маш хүнд хэцүү аргаар тоон утгад хувиргаад, эргээд нууц үг болгоё гэхээр болохгүй болгочихдог, дараа нь оруулсан нууц үгээ тэр аргаараа шифрлээд шифрлэгдсэн нууц үгтэй тааруулж шалгадаг болгодог эд байх нь. 

Одоо эргээд хулгайч болоод үзье. Энэ шифрийг тайлахын тулд юу хийх вэ?

Ер нь хэш функцийг зохионо гэдэг маш хэцүү зүйл байдаг. Үүний оронд ихэнх нь зүгээр л түгээмэл хэш функцээр шифрлэх нь бий. Энэ нь хулгайчдад хэш функцийг олж мэдэхэд хялбар болгоод байна аа гэсэн үг.

Хэрвээ үгүй бол?

Өөрсдийн олсон хэштэйгээ таартал нь нууц үгсийг тулгаж үзэх болно. Хэрвээ ганц нь л таарчихвал Good Game, Well played гээд л функцийн учрыг олоход амархан болчихно доо.

Rainbow table дээр суурилсан нийтлэг стратеги байдаг. Энэ нь яадаг эд вэ гэхээр хамгийн их ашиглагддаг нууц үг нь хэш утгатай хамт байж байдаг эд байгаа юм.

Нэг иймэрхүү:

Нууц үгХэш утга
pass1b93eb12
passworda4532c47
abc7a2d28fc
Яаж ийж байгаад нууц үгийн хэш агуулагдаж байгаа тэр файлыг олчих л юм бол Rainbow table-ээс тулгаад нууц үг олох боломжтой. Хамгийн сайн үл буцах хэш байсан ч өнөө тэнэг түгээмэл нууц үг оруулснаас болоод Rainbow table-д баригдах нь бий.

Одоо энд salt буюу давс гэдэг ойлголт гарч ирнэ ээ. 



Таны нууц үг дээр ямар нэг нэмэлт мэдээлэл нэмээд дараа нь "хольж хутгаад" тавьчихвал ямар вэ дээ. Ямар нэг утга аваад тэрийг таны нууц үгэнд янз бүрээр хавсаргасны дараа энкриптэлнэ гэсэн үг юм. Давсаа хэрэглэгчийн төрсөн өдөр мэтийн metadata-аас сонгоод өгчихвөл бас их боломжийн. Нууц үг бүр өөр өөр давстай байна гэхээр хакер ганц л нууц үгийг эвдэхийн тулд маш их зүтгэл гаргана. Мөн нэгийг оллоо ч Rainbow table ашиглаад ч бусдыг нь хөөгөөд олох боломжгүй гэдгээрээ гайхалтай л даа. Salt адил үед хэмжээ нь 12 бит байхад Rainbow table-ээр хайхад энгийн хайдгаас 4096 дахин их оролдлого хийнэ. Хэрвээ давс хангалттай их бол Rainbow table-ыг ямар ч үр дүнгүй болгож болох юм. Харин Rainbow table-ээ хаяад зөвхөн нэг хэрэглэгч рүү л чиглэсэн дайралтуудыг хийнэ дээ. 

Comments

Popular posts from this blog

Хэл шинжлэлийн салбар ухаанууд

Монголын нууц товчоо