CRYPTO.MN
Анхан

Тоон гарын үсэг

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

Зохиогч:
Turmandakh
Нийтэлсэн:
6 мин унших
Digital_signature

Тоон гарын үсэг гэж юу вэ?

Digital Signature буюу тоон гарын үсэг нь цахим мэдээллийг хэн илгээснийг баталгаажуулах, мөн мэдээлэл өөрчлөгдсөн эсэхийг шалгахад ашигладаг криптографын арга юм.

Үндсэн хоёр зорилготой:

  • Authentication: Гарын үсэг үүсгэсэн түлхүүрийг эзэмшигчтэй холбон баталгаажуулах.
  • Integrity: Мэдээлэл гарын үсэг зурсан үеэс хойш өөрчлөгдсөн эсэхийг шалгах.

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

2. Гарын үсгийг хэрхэн үүсгэж, шалгадаг вэ?

Бат Болорт 100,000₮ гэсэн мэдээлэл илгээх гэж байна гэж бодъё.

Текст
      1. Мэдээлэл бэлтгэх

            100,000₮
               ▼

  Бат хувийн түлхүүрээ ашиглана

     2. Гарын үсэг үүсгэх

Message + Private Key → Signature
               ▼

       3. Болор шалгах

Message + Signature + Батын Public Key


Зөв гарын үсэг, өөрчлөгдөөгүй мэдээлэл бол шалгалт амжилттай.

Батын хувийн түлхүүр (Private Key) зөвхөн гарын үсэг үүсгэхэд ашиглагдана. Харин Болор Батын нийтийн түлхүүр (Public Key)-ээр гарын үсгийг шалгана.

Гэхдээ Public Key үнэхээр Батынх мөн гэдгийг найдвартай эх сурвалж эсвэл сертификатаар баталгаажуулах шаардлагатай.

3. Мэдээлэл өөрчлөгдвөл яах вэ?

Бат дараах мэдээлэлд гарын үсэг зурсан гэж үзье.

Текст
100,000₮

Халдагч үүнийг:

Текст
900,000₮

гэж өөрчилбөл анхны гарын үсэг шинэ мэдээлэлтэй тохирохгүй. Иймээс гарын үсгийн шалгалт амжилтгүй болно.

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

4. Node.js жишээ

Доорх код нь RSA түлхүүр үүсгэж, мэдээлэлд гарын үсэг зураад шалгана.

JavaScript
import crypto from "node:crypto";

const { publicKey, privateKey } =
  crypto.generateKeyPairSync("rsa", {
    modulusLength: 2048
  });

const message = Buffer.from("100,000₮");

const signature = crypto.sign(
  "sha256", message, privateKey
);

const valid = crypto.verify(
  "sha256", message, publicKey, signature
);

console.log(valid); // true

Кодын тайлбар:

  • generateKeyPairSync() — хувийн болон нийтийн түлхүүр үүсгэнэ.
  • crypto.sign() — хувийн түлхүүрээр гарын үсэг үүсгэнэ.
  • crypto.verify() — нийтийн түлхүүрээр гарын үсгийг шалгана.
  • true гарвал тухайн мэдээлэлд гарын үсэг хүчинтэй байна. Энэ нь түлхүүрийн эзэмшигчийг дангаараа бодит хүнтэй холбон батлахгүй.

5. Encryption ба Digital Signature-ийн ялгаа

Бататгах асуулт

Асуулт 1/3

Тоон гарын үсгийн үндсэн зорилго юу вэ?

Энэ нийтлэл танд таалагдсан уу?