CRYPTO.MN
Анхан

Хэш функц ба HMAC

Энэ хичээлээр хэш функц, SHA-256 болон HMAC-ийн үндсийг судална. Hash-ийн шинж чанар, файлын бүрэн бүтэн байдлыг шалгах арга, энгийн hash ба HMAC-ийн ялгааг Node.js жишээгээр сурна.

Зохиогч:
Turmandakh
Нийтэлсэн:
5 мин унших
Hash HMAC

Хэш функц гэж юу вэ?

Хэш функц нь ямар ч хэмжээтэй өгөгдлийг тогтмол урттай хэш утга болгон хувиргадаг криптограф алгоритм юм.

Текст
Input
  ↓
Hash Function (SHA-256)
  ↓
256-bit Digest

SHA-256

SHA-256 нь 256 битийн хэш үүсгэдэг криптограф алгоритм юм. Үр дүнг 16-тын тооллын системээр илэрхийлэхэд 64 тэмдэгт гарна.

Java
import crypto from "node:crypto";

const hash = crypto
  .createHash("sha256")
  .update("Hello")
  .digest("hex");

console.log(hash);

Хэш функцийн үндсэн шинж чанарууд

  • Deterministic: Ижил өгөгдөл үргэлж ижил хэш үүсгэнэ.
  • Avalanche effect: Оролт бага зэрэг өөрчлөгдөхөд хэш их өөрчлөгдөнө.
  • Preimage resistance: Хэшээс эх өгөгдлийг олох нь тооцооллын хувьд маш хэцүү.
  • Collision resistance: Ижил хэш үүсгэх хоёр өөр оролтыг олоход маш хэцүү.

Файлын бүрэн бүтэн байдлыг шалгах

Файл татаж авах үед SHA-256 checksum-ийг харьцуулж, өгөгдөл өөрчлөгдсөн эсэхийг шалгаж болно.

Текст
Албан ёсны SHA-256
        ↓
Татсан файлын хэштэй харьцуулах
        ↓
Ижил бол өөрчлөгдөөгүй байх хүчтэй үндэслэл

Гэхдээ checksum-ийн эх сурвалж найдвартай байх шаардлагатай.

HMAC гэж юу вэ?

HMAC (Hash-based Message Authentication Code) нь хэш функц болон нууц түлхүүр ашиглан мессежийн бүрэн бүтэн байдал, баталгаажуулалтыг хангахад хэрэглэгддэг.

Текст
Message + Secret Key
          ↓
      HMAC-SHA-256
          ↓
 Authentication Tag

Node.js жишээ:

Java
const mac = crypto
  .createHmac("sha256", "secret-key")
  .update("Hello")
  .digest("hex");

Энд secret-key нь сургалтын жишээ юм. Бодит системд нууц түлхүүрийг хамгаалалттай хадгална.

Hash ба HMAC-ийн ялгаа

SHA-256

HMAC-SHA-256

Нууц түлхүүр шаардлагагүй

Нууц түлхүүр шаардлагатай

Өгөгдлийг hash болгоно

Өгөгдлийг түлхүүр ашиглан баталгаажуулна

Checksum шалгахад ашиглана

API болон мессежийн баталгаажуулалтад ашиглана

Дүгнэлт: SHA-256 нь өгөгдлийн хэш үүсгэдэг бол HMAC нь нууц түлхүүр ашиглан мессежийн бүрэн бүтэн байдал, баталгаажуулалтыг хангахад тусалдаг.

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

Асуулт 1/3

SHA-256 алгоритм ямар үүрэгтэй вэ?

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