Hashing гэж юу вэ?

Hashing буюу Хэшлэлтийн талаар товч тайлбар унших бол "Биткойн гэж юу вэ?" нийтлэлийн харгалзах бүлгийг уншаарай. Харин илүү гүнзгийрүүлэн судлахыг хүсвэл уг нийтлэл илүү тохиромжтой.

Ерөнхийдөө бол янз бүрийн хэмжээ бүхий өгөгдлийг, тооцооллын тусгай хэшлэх алгоритмаар боловсруулан, нэгэн жигд хэмжээтэй эцсийн дүнг гаргах ажилбар юм.

Хэшлэлт нь зөвхөн криптографт хамаардаг ойлголт биш.

Криптографт хэрэглэгдэж байгаа хэшлэлт нь түүний чухал хэсэг нь байдаг. Тодруулбал, үүний ачаар л Блокчэйн болон бусад төстэй системүүд мэдээллийн бүрэн бүтэн, аюулгүй байдлыг хангах өндөр чадвартай болсон.

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

Гэхдээ, криптографийн хувьд хэшлэлт нь урвуулан хөөж, анхны өгөгдлийг олох бараг боломжгүйд тооцогддог. Бараг гэсний учир нь тооцоолох хэт өндөр чадвартай машин ажиллуулж, асар их зардал, цаг хугацаа зарж үүнийг олох боломжтой байдаг. Гэхдээ үүнд 1 их санаа зовоод байх шаардлагагүй, учир нь өнөөгийн технологи, криптографийн хэшлэгдсэн мэдээллийг задлаж, анхны өгөгдлийг нь олох оролдлого хийхэд даан ч дэндүү "жулдана".

Хэшлэлт хэрхэн ажилладаг вэ?

Хэшлэлийн арга бүр өөр өөр хэмжээтэй, өөр өөр үр дүнг гаргана. Гэвч тухайн 1 хэшлэх алгоритмын хувьд ямар ч мэдээлэл оруулсан, эцсийн дүнгүүд нь хоорондоо ижил хэмжээтэй байдаг. Жишээ болгон доор SHA-256 болон SHA-1 алгоритмуудын үр дүнг танилцуулъя.

SHA-256

SHA-1


Боловсруулалтын дүн нь, SHA-256-н хувьд нь ямагт 256 бит хэмжээтэй буюу 64 тэмдэгтийн урттай байдаг бол, SHA-1-ийн хувьд үргэлж 160 битийн хэмжээтэй байна.

Эдгээрээс өөр зөндөө хэшлэгч алгоритмууд байгаа ба дээрх жишээнд хамгийн өргөн хэрэглэгддэг алгоритмуудаас сонгон танилцуулсан байгаа. Эдгээр алгоритмуудын нэрний SHA гэсэн тэмдэглэгээ нь Secure Hash Algorithm буюу Найдвартай Хэшлэх Алгоритм гэсэн үгсийн товчлол юм. Зөвхөн SHA төрөл дотроо л гэхэд SHA-0, SHA-1 алгоритмууд, SHA-2, SHA-3 гэсэн алгоритмын бүлгүүдэд хуваагдаж байдаг ба өдгөө тэдгээрээс SHA-2 болон SHA-3 нь л найдвартайд тооцогдож байна. Дээрх жишээнд харуулсан SHA-256 алгоритм нь, SHA-512 болон бусад төстэй алгоритмуудын хамтаар SHA-2 төрөлд хамаардаг.

Ямар хэрэгтэй байдаг вэ?

Уламжлалт хэшлэлтийн аргууд нь маш олон хэлбэрээр, олон зүйлд ашиглагдаж байгаа. Жишээлбэл:

  1. Өгөгдлийн/мэдээллийн сан;
  2. Том файлын шинжилгээ;
  3. Өгөгдлийн зохион байгуулалт;

Харин, криптограф хэшлэлт нь аппуудад мэдээллийн аюулгүй байдалд төлхүү хэрэглэгддэг. Жишээлбэл:

  1. Зурвас нууцлал;
  2. Дижитал гарын үсэг;

Мөн, Биткойнын хувьд шинэ хаяг болон түлхүүрүүд үүсгэхэд чухал үүрэгтэй.

Гэхдээ, хэшлэлтийн жинхэнэ хүч чадлыг нүсэр хэмжээтэй мэдээлэлтэй харьцах үед л бодитоор мэдэрч болдог. Яаж вэ? гэхээр, асар их хэмжээтэй мэдээллийг хэшлээд хадгалсан байхад, түүний хэшлэгдэж гарсан үр дүнгийн тусламжтайгаар л тухайн мэдээллээ гадны нөлөөнд автаж, засвар өөрчлөлт ороогүй болохыг нь шууд таних боломжтой. Ингэж хадгалсан байхад, хөндлөнгийн этгээд хараад таньж чадахгүй, мөн хаа явсан газраа асар их мэдээллийг агуулсан ямар 1 биет төхөөрөмж "чирж" явах шаардлагагүй болно.

Дээр дурьдсанчлан хэшлэлт нь олборлолтонд чухал үүрэгтэй байдаг ба бараг бүх крипто валют үүний тусламжтайгаар л гүйлгээний мэдээллийг боловруулж, блокуудыг холбож байдаг.

Криптографын хэшлэлт

Криптографын хэшлэлтийг "эвдэх" буюу урвуу тооцоолол хийж, анхны өгөгдлийг нь сэргээх гэж оролдох тохиолдолд хамгийн боломж өндөртэй арга нь brute-force буюу хүчээр хэрэглэх арга гэж тооцогддог. Энэ арга нь нууцыг тайлахын тулд түүний хамгаалалтанд хэрэглэгдсэн байж болох боломжит бүх хувилбарыг эхнээс нь туршиж үздэг арга юм. Өөрөөр хэлбэл эвдэхийг завдаж байгаа "этгээд" нь анхны өгөгдөл юу байсан байж болохыг таамаглаж, тухай бүрдээ хэшлэж, эцсийн дүнтэй таарч байгаа эсэхийг нь шалгах хэрэгтэй болно гэсэн үг. Ингээд бодоод үзэхэд л хэр их хүчин чадал, хэр их эрчим хүч, цаг хугацаа хэрэгтэй нь тодорхой болж байгаа биз? Тэгээд дээрээс нь өөр өгөгдөл оруулсан байхад, эцсийн дүн нь яг адилхан гарах боломж бас байгаа гээд төсөөл дөө. Тэгж таарсан үед "зөрчилдөөн" үүсэх нь мэдээж.

Онолын хувьд, криптограф хэшлэлт нь дараах 3 шинжийг бүрдүүлж байж найдвартайд тооцогддог. Үүнд:

  1. Зөрчилдөөн үүсгэхгүй байх;
  2. Таамаглах боломжгүй байх;
  3. Давхар таамаглах боломжгүй байх;

зэрэг бөгөөд эдгээр нь товчхондоо бол:

  1. 2 өөр өгөгдлийн эцсийн дүн адилхан байхаас зайлсхийх;
  2. Үр дүнгээс нь хөөж, анхны өгөгдлийг олохоос сэргийлсэн байх;
  3. Үр дүнгүүдийг тулгах замаар анхны өгөгдлийг олохоос сэргийлсэн байх;

Дээрх товч танилцуулга хангалттай санагдсан бол дараагийн 3 дэд сэдвийг алгасаад, шууд уг нийтлэлийн сүүлийн бүлгийг уншиж болно.

Зөрчилдөөн үүсгэхгүй байх

Зөрчилдөөн үүсэх боломжтой гээд дээр бичсэн дээ? Гэхдээ зөрчил үүсч, үүссэнийг нь хэн нэгэн олох хүртэл систем маань зөрчилдөөн үүсдэггүйд тооцогдсон хэвээр байх болно. Учир нь, ямар ч хэшлэлтийн үед зөрчилдөөн огтоос үүсэхгүй байх ямар ч боломж байдаггүй. Түүний шалтгаан нь оруулж болох өгөгдлийн хэмжээний хязгааргүй байдал, гаргаж болох үр дүнгийн хязгаарлагдмал байдлаас улбаатай.

Арай, энгийнээр тайлбарлая л даа. Зөрчилдөөн үүсэх магадлал маш бага буюу олон сая жил шаардагдах учраас л одоохондоо зөрчилдөөн үүсдэггүй гэж хэлээд байгаа юм.

Жишээлбэл: Алим гэсэн үгний хэш а1в2 байхад, Тангарагтан гэсэн өгөгдлийг хэшлэхэд мөн адил а1в2 гэж гарч байгаа гэж төсөөл. Энэ бол зөрчилдөөн.

Дээр өнгөцхөн дурьдаад өнгөрсөн SHA-0 болон SHA-1 алгоритмд зөрчилдөөн илэрсэн учраас л тэд өнөөдөр найдвартай бус гэж тооцогдоход хүрсэн.

Таамаглах боломжгүй байх

1 чиглэлийн хөрвүүлэлт буюу буцаах боломжгүй байдлыг Таамаглах боломжгүй байдал гэж нэрлэнэ. Хэшлэлт нь ийм шинжийг агуулдаг тул хэшлэлтийн үр дүнгээс нь урвуу боловсруулалт хийж анхны өгөгдлийг олох бараг ямар ч боломжгүй байдаг.

Энэ шинж нь дээрх Зөрчилдөөн үүсгэхгүй байх шинжээс дараах ялгаатай. Зөрчилдөөн үүсгэхгүй байх чанар нь 2 өөр өгөгдлийг боловсруулахад эцсийн дүн нь яг адилхан гарахыг хэлж байгаа бол, Таамаглах боломжгүй байдал нь үүссэн үр дүнгээс хөөж, анхны өгөгдлийг илрүүлэх боломжгүй байхыг хэлж байгаа.

Уг шинж нь нууцлагдсан өгөгдлөө задруулахгүйгээр, түүнд өөрчлөлт ороогүй гэдгийг нотлох давуу талтай. Өдгөө энэ чанарыг ашиглан дийлэнх веб болон аппууд хэрэглэгчдийнхээ нууц үгийг өгөгдлийн сан дээрээ хамгаалж, хадгалж байгаа.

Давхар таамаглах боломжгүй байх

Уг шинж нь дээрх 2 шинжийн завсар оршдог гээд ойлгочихож болно. Өөрөөр хэлбэл Хөөн таамаглах боломжгүй байх гэдэг нь хэн нэгэн 1 өгөгдлөөс үүссэн үр дүнг ажиглаад, түүнтэйгээ адил 1 үр дүнг хайж олох боломж олгохгүй байх зориулалттай шинж чанарыг нэрлэж байгаа юм.

Давхар таамаглах дайралт гэдэг нь зөрчилдөөнийг олж, түүнийгээ ашиглан анхны өгөгдлийг олох оролдлого хийхийг хэлнэ. Гэхдээ дурын 2 өгөгдлийн эцсийн дүнгүүд адил байгаа эсэхийг тулгаж шалгахын оронд, тодорхой 1 өгөгдлийн үр дүнтэй адил үр дүнд хүрч байгаа ямар өгөгдөл байгааг хайдаг.

Эндээс, зөрчилдөөн үүсэх боломжгүйд тооцогдож байгаа системийг, Давхар таамаглалд өртөх боломжгүй гэж дүгнэж болох нь.

Олборлолт

Биткойнын олборлох ажиллагаа хэшлэлтийн хэд хэдэн үе шатыг дамждаг. Үүнд, дүнг тулгах, гүйлгээний илгээлт, хүлээн авалтыг холбох, гүйлгээний мэдээллийг блокруу Merkle Tree буюу Хэшийн мод хэлбэрээр хуулах зэрэг багтана.

Ингэхдээ олборлогч нь "зөв" блок бүтээхийн тулд асар олон удаагын хэшлэлт гүйцэтгэдэг талаар уг цуврал нийтлэлийнхээ өмнөх дугаарууд дээр тайлбарласан байгаа, тэгвэл тэрхүү шаардлага болох хэшийн үр дүн нь олон цуварсан 0-ээр эхлэсэн байх ёстой гэж заагдсан байгаа нь түүний хүндрэлийг илтгэдэг.

Олборлолтын дундаж хугацаа 10 орчим минут байх ёстой ба энэ нь олборлогчдын тоо, хэшлэх чадлаас шууд хамааралтайгаар өөрчлөгдөнө. Жишээ нь олборлогчид цөөн үед, блокын эхний тэмдэгтүүд 00 байхад л шаардлагад нийцнэ. Харин олборлогчид олшроод ирвэл, 000 эсвэл 0000 гэх мэтээр хүндрэл нэмэгдэнэ гэсэн үг. Тэр хэмжээгээр шаардлага хангасан блок үүсгэхэд төвөгтэй болох буюу илүү олон хэшлэлт гүйцэтгэх шаардлагатай тулгарч байгаа юм.


Уг нийтлэл болон манай БЛОГ танд таалагдсан бол манай Fb хуудас болон twitter хуудас дээр биднийг дагаарай!

Баярлалаа!