CRYPTO.MN
Гарын үсэг

Ed25519

Curve25519-ийн Edwards хэлбэрийн муруйд суурилсан, хурдан бөгөөд детерминистик тоон гарын үсгийн алгоритм.

Стандарт
RFC 8032
Түлхүүрийн урт
32 байт
Nonce-ийн урт
32 байт

Чухал анхааруулга

Квант компьютерт тэсвэртэй биш. Хувийн түлхүүрийг найдвартай хадгалах шаардлагатай.

Юу вэ?

Ed25519 нь EdDSA (Edwards-curve Digital Signature Algorithm) схемийн нэг хувилбар бөгөөд Curve25519-ийн Edwards хэлбэр болох edwards25519 муруйг ашигладаг. Энэ нь санамсаргүй nonce шаардахгүйгээр гарын үсгийг детерминистик байдлаар үүсгэдэг тул ECDSA-д тохиолдож болох nonce-ийн санамсаргүй байдалтай холбоотой эрсдэлийг бууруулдаг. Мөн хурдан ажиллагаа, авсаархан түлхүүр болон гарын үсгийн хэмжээгээрээ онцлог.

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

Ed25519 нь хувийн түлхүүр болон мессежийн агуулгад үндэслэн nonce-ийг детерминистик байдлаар тооцоолж, гарын үсэг үүсгэдэг. Үүссэн гарын үсгийг нийтийн түлхүүр ашиглан шалгана. Ингэснээр гарын үсэг үүсгэх бүрд гаднын санамсаргүй тоо үүсгэгчээс хамаарах шаардлагагүй бөгөөд nonce буруу үүссэнээс шалтгаалах түлхүүр алдагдах эрсдэлийг бууруулдаг.

Хаана ашиглагддаг вэ?

  • SSH: OpenSSH-д сервер болон хэрэглэгчийн таних баталгаажуулалтад ашиглагддаг. Signal: Хэрэглэгчийн түлхүүр болон мессежийн аюулгүй байдлыг хангах криптографийн ажиллагаанд ашиглагддаг. Tor: Төхөөрөмж
  • үйлчилгээ болон сүлжээний таних мэдээллийг баталгаажуулахад ашиглагддаг. Программ хангамж: Програмын шинэчлэлт
  • багц болон файлын жинхэнэ эсэхийг тоон гарын үсгээр баталгаажуулахад ашиглаж болно.

Түгээмэл алдаа

  • Квант компьютерт тэсвэртэй биш
  • Хувийн түлхүүр алдагдвал гарын үсэг хуурамчаар үүсгэх боломжтой
  • Хуучин эсвэл буруу хэрэгжүүлэлт нь аюулгүй байдлыг сулруулж болзошгүй

Жишээ код

Python
from cryptography.hazmat.primitives.asymmetric.ed25519 import (
    Ed25519PrivateKey
)

# Түлхүүрийн хос үүсгэх
private_key = Ed25519PrivateKey.generate()
public_key = private_key.public_key()

# Мессеж бэлтгэх
message = b"Hello, Ed25519!"

# Гарын үсэг үүсгэх
signature = private_key.sign(message)

# Гарын үсэг шалгах
public_key.verify(signature, message)

print("Signature verified successfully")

Гарын үсэг ангилалын бусад алгоритм