fbpx

Интернетээр хоорондоо ярилцаж буй хоёр этгээд бусдад мэдэгдэлгүйгээр нууц мэдээлэл солилцох шаардлага тулгардаг. Жишээлбэл, та банкны аппликейшн руугаа нэвтрэх үед таны нууц үг банк руу илгээгдэхдээ шифрлэгдэх ёстой. Хэрвээ түлхүүрээ шууд явуулбал дундаас нь хэн нэгэн “чагнаад” аваад, таны мэдээллийг тайлж унших боломжтой болно.

Энэхүү асуудлыг шийдсэн анхны бөгөөд хамгийн алдартай аргуудын нэг бол Diffie-Hellman түлхүүр солилцооны алгоритм юм. Энэхүү аргыг 1976 онд Уитфилд Диффи (Whitfield Diffie) болон Мартин Хеллман (Martin Hellman) нар нийтэд танилцуулсан бөгөөд орчин үеийн олон нийтийн түлхүүртэй криптографын эхийг тавьсан гэж үздэг.

Сонирхолтой нь, энэ алгоритм нь талууд хоорондоо нууц түлхүүрийг шууд дамжуулдаггүй, харин оронд нь хоёр тал хамтран, нийтийн сүлжээг ашиглан нэгэн ижил нууц түлхүүрийг хамтдаа үүсгэдэг онцлогтой.

Будаг холих зүйрлэлээр тайлбарлая

Diffie-Hellman алгоритмын үндсэн санааг ойлгохын тулд будаг холих энгийн зүйрлэлийг ашиглацгаая.

  1. Нийтийн будаг:
    Намжил, Гонгор хоёр нууц яриа өрнүүлэхээр боллоо гэж төсөөлье. Тэд эхлээд бүх нийтэд ил, хэн ч харж болох нэгэн нийтлэг өнгийн будаг сонгоно. Жишээ нь, шар өнгө.
  2. Хувийн нууц будаг:
    Дараа нь Намжил, Гонгор хоёр тус бүр өөрсдийн гэсэн, хэнд ч хэлэхгүй нууц өнгийн будгаа сонгоно. Намжил улаан, харин Гонгор цэнхэр өнгийг сонгов.
  3. Будгаа холих:
    Намжил өөрийн нууц (улаан) будгаа нийтийн (шар) будагтай хольж, улбар шар өнгө гаргаж авна. Үүнийгээ Гонгор руу ил явуулна. Нөгөө талд Гонгор мөн адил өөрийн нууц (цэнхэр) будгаа нийтийн (шар) будагтай хольж, ногоон өнгө гарган авч, үүнийгээ Намжил руу ил явуулна.
  4. Эцсийн нууц өнгө:
    Одоо Намжил Гонгороос ирсэн ногоон өнгөн дээр өөрийн анхны нууц өнгө болох улааныг нэмж холино. Харин Гонгор Алисаас ирсэн улбар шар өнгөн дээр өөрийн нууц өнгө болох цэнхэрийг нэмж холино. Үр дүнд нь хоёулаа яг ижилхэн бор өнгийг гаргаж авна!

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

Ерөнхий үйл ажиллагаа нь иймэрхүү. Хэрвээ бүх юм будган дээр байдаг байсан бол баригдахаар. Гэхдээ математик! Бүсээ чангалаарай.

Математик ажиллагаа

Бодит байдал дээр будагны оронд маш том тоонууд болон математикийн “нэг чигтээ хийхэд хялбар, харин буцааж бодоход бараг боломжгүй” үйлдлийг ашигладаг. Энэ нь модуляр арифметик ба дискрет логарифмын бодлого юм.

  1. Нийтийн тоонууд: Намжил, Гонгор хоёр нийтэд ил хоёр тоог сонгоно: том анхны тоо p болон суурь тоо g. Жишээ нь: p=23, g=5.
  2. Хувийн нууц тоо:
    • Намжил өөрийн нууц тоог сонгоно: a = 6.
    • Гонгор өөрийн нууц тоог сонгоно: b = 15.
  3. Нийтийн түлхүүр үүсгэж, солилцох:
    • Намжил: A = g^a mod p буюу 5^6 mod 23 = 8 гэсэн тоог бодож олоод Гонгор руу явуулна.
    • Гонгор: B = g^b mod p буюу 5^15 mod 23 = 19 гэсэн тоог бодож олоод Намжил руу явуулна.
  4. Эцсийн нууц түлхүүрийг үүсгэх:
    • Намжил: Гонгороос ирсэн B тоог ашиглан s = B^a mod p буюу 19^6 mod 23 = 2 гэж бодно.
    • Гонгор: Алисаас ирсэн A тоог ашиглан s = A^b mod p буюу 8^15 mod 23 = 2 гэж бодно.

Ингээд Намжил, Гонгор хоёр хоёулаа s = 2 гэсэн ижил нууц түлхүүрийг үүсгэж чадлаа. Энэ түлхүүрээ ашиглан цаашдын харилцаагаа тэгш хэмт шифрлэлтийн аргаар нууцлах боломжтой болно. Дундаас нь мэдээллийг чагнаж байсан этгээд p=23, g=5, A=8, B=19 гэсэн тоонуудыг мэдэх ч a=6, b=15 гэсэн нууц тоонуудыг мэдэхгүй учир эцсийн нууц түлхүүр s=2-г олох нь маш хэцүү (дискрет логарифмын бодлого) юм.

Хязгаарлалт ба Хэрэглээ

Diffie-Hellman алгоритмын үндсэн хэлбэр нь харилцагч талуудын хэн болохыг баталгаажуулдаггүй тул “дундах хүн” (Man-in-the-Middle) халдлагад өртөмтгий байж болзошгүй. Гэсэн хэдий ч энэ нь Transport Layer Security (TLS) зэрэг олон протоколын үндэс болж, дижитал гарын үсэг гэх мэт баталгаажуулалтын аргуудтай хослуулан интернет дэх аюулгүй холболтыг хангахад өргөнөөр ашиглагддаг.

Leave a Reply