ECC
Эллиптик муруйн криптографи (ECC) нь RSA-тай харьцуулахад богино түлхүүрээр ижил түвшний хамгаалалт хангах боломжтой, орчин үеийн нийтийн түлхүүрийн криптографийн арга юм.
- Стандарт
- NIST P-256, P-384; SEC 2 secp256k1
- Түлхүүрийн урт
- 256-bit, 384-bit
Чухал анхааруулга
- ECC нь сонгодог компьютерт тохирсон криптографийн арга юм.
- Ирээдүйд хангалттай хүчин чадалтай квант компьютер Shor-ийн алгоритмыг хэрэгжүүлж чадвал ECC-ийн аюулгүй байдлын үндэс болсон дискрет логарифмын бодлогыг үр ашигтай шийдэх боломжтой.
- Тиймээс урт хугацааны нууцлал шаарддаг системүүд пост-квант криптографийн шилжилтийг төлөвлөх хэрэгтэй.
Юу вэ?
Elliptic Curve Cryptography (ECC) буюу эллиптик муруйн криптографи нь эллиптик муруйн математик шинж чанарт тулгуурласан нийтийн түлхүүрийн криптографийн арга юм.
ECC нь хоорондоо математик хамааралтай хоёр түлхүүр ашигладаг: нийтэд түгээж болох Public Key болон нууцлах шаардлагатай Private Key. Эдгээр түлхүүрийг түлхүүрийн тохиролцоо, тоон гарын үсэг зэрэг криптографийн үйлдэлд ашиглаж болно.
ECC-ийн аюулгүй байдал нь эллиптик муруйн бүлэг дэх дискрет логарифмын бодлогыг бодит нөхцөлд үр ашигтайгаар шийдэхэд хүндрэлтэй байдагт тулгуурладаг. Өөрөөр хэлбэл, нууц түлхүүр болон түүнд харгалзах муруйн параметрүүдийг мэдэж байвал нийтийн түлхүүрийг тооцоолж болно. Харин нийтийн түлхүүрээс нууц түлхүүрийг олох нь хангалттай том, зөв сонгосон муруйн хувьд тооцооллын хувьд маш хэцүү.
ECC нь нэг алгоритм гэхээсээ илүү олон криптографийн схемд ашиглагддаг математик суурь юм. Жишээлбэл, ECDH нь нууц түлхүүр тохиролцоход, ECDSA нь тоон гарын үсэг үүсгэж шалгахад ашиглагддаг.
Хэрхэн ажилладаг вэ?
ECC нь эллиптик муруйн цэгүүд дээр тодорхойлсон математик үйлдлүүдийг ашигладаг.
Муруй болон параметрүүдийг сонгох
Харилцаж буй талууд тохирох стандарт эллиптик муруй болон түүний параметрүүдийг ашиглана. Практикт эдгээр нь NIST P-256, P-384 зэрэг стандарт муруй байж болно.
Нууц түлхүүр үүсгэх
Систем санамсаргүй тоон генератор ашиглан шаардлага хангасан нууц бүхэл тоо \(d\)-г үүсгэнэ. Энэ тоо нь Private Key болно.
Нийтийн түлхүүр тооцоолох
Муруйн стандарт суурь цэгийг \(G\) гэвэл нийтийн түлхүүрийг дараах үйлдлээр гаргана:
\(Q = dG\)
Энд \(dG\) нь муруйн цэгийг \(d\) дахин нэмэхтэй дүйцэх scalar multiplication үйлдэл юм. Үүнийг үр ашигтайгаар тооцоолж болох боловч \(Q\) болон \(G\)-ээс \(d\)-г олох нь тохирох муруйн хувьд тооцооллын хувьд маш хүндрэлтэй.
Криптографийн үйлдэл хийх
- ECDH: хоёр тал өөрсдийн нууц түлхүүр болон нөгөө талын нийтийн түлхүүрийг ашиглан ижил нууц утга тохиролцоно. - ECDSA: нууц түлхүүрээр тоон гарын үсэг үүсгэж, нийтийн түлхүүрээр шалгана.
ECDH-ийн гаргасан нууц утгыг ихэвчлэн түлхүүр гарган авах функцээр боловсруулж, дараа нь өгөгдөл шифрлэхэд ашиглах түлхүүр үүсгэдэг.
Аюулгүй байдлын үндэс
ECC нь тохирох параметртэй үед богино түлхүүрээр өндөр түвшний хамгаалалт хангах боломжтой. Гэхдээ аюулгүй байдал нь зөвхөн муруйгаас бус, түлхүүр үүсгэлт, хэрэгжүүлэлт, протокол болон нууц түлхүүрийг хамгаалж буй байдлаас хамаарна.
Хаана ашиглагддаг вэ?
- **TLS/HTTPS** ECDHE нь TLS холболтын үед харилцагч болон серверийн хооронд түр зуурын түлхүүрийн тохиролцоо хийхэд өргөн ашиглагддаг. Энэ нь тохирох нөхцөлд өмнөх холболтын түлхүүрүүдийг хамгаалах Forward Secrecy шинжийг хангахад тусална. **Bitcoin болон криптовалютын систем** Bitcoin нь secp256k1 эллиптик муруйг ашигладаг. ECDSA болон Schnorr гарын үсэг зэрэг аргууд нь гүйлгээний зөвшөөрлийг криптографийн аргаар батлахад ашиглагддаг. **Мобайл болон суулгагдсан төхөөрөмж** ECC нь харьцангуй богино түлхүүрээр ижил түвшний хамгаалалт хангах боломжтой тул санах ой
- дамжуулах зурвас болон тооцооллын нөөц хязгаарлагдмал орчинд ашигтай байж болно. **Тоон гарын үсэг ба төхөөрөмжийн баталгаажуулалт** ECDSA зэрэг схемийг программ
- төхөөрөмж
- сертификат болон мессежийн жинхэнэ байдал
- бүрэн бүтэн байдлыг шалгахад ашиглаж болно. **Аюулгүй холболт ба түлхүүрийн удирдлага** ECC-д суурилсан алгоритмууд нь харилцагчдыг баталгаажуулах
- түлхүүр тохиролцох
- криптографийн итгэлцлийг бүрдүүлэх системүүдийн нэг хэсэг болж ажилладаг. Анхаарах зүйл: ECC өөрөө өгөгдлийг шууд шифрлэх зориулалттай нэг алгоритм биш. Ихэнх хэрэглээнд түлхүүр тохиролцоо эсвэл тоон гарын үсэгт ашиглагддаг.
Түгээмэл алдаа
- - ECC нь өгөгдлийг шууд шифрлэдэг нэг алгоритм гэж ойлгох.
- - Public Key-ээс Private Key-г практикт шууд тооцоолж олж болно гэж үзэх.
- - ECC-ийн бүх муруй болон хэрэгжүүлэлт ижил түвшний аюулгүй гэж үзэх.
- - ECDH-ийн гаргасан нууц утгыг шууд өгөгдөл шифрлэх түлхүүр болгон ашиглах. Үүний оронд зориулалтын key derivation function ашиглах хэрэгтэй.
- - ECDSA-д nonce-ийг буруу үүсгэх эсвэл давтан ашиглах. Энэ алдаа Private Key-г ил гаргах эрсдэлтэй.
- - ECC-ийг пост-квант аюулгүй гэж үзэх.
Жишээ код
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import hashes
from cryptography.exceptions import InvalidSignature
# Private Key үүсгэх
private_key = ec.generate_private_key(ec.SECP256R1())
# Public Key гаргаж авах
public_key = private_key.public_key()
# Мессежид гарын үсэг үүсгэх
message = b"Hello, ECC!"
signature = private_key.sign(
message,
ec.ECDSA(hashes.SHA256())
)
# Гарын үсгийг шалгах
try:
public_key.verify(
signature,
message,
ec.ECDSA(hashes.SHA256())
)
print("Signature is valid")
except InvalidSignature:
print("Signature is invalid")