การเข้ารหัสคีย์สาธารณะ

การเข้ารหัสคีย์สาธารณะ

ซึ่งแตกต่างจากการเข้ารหัสคีย์สมมาตรเราไม่พบการใช้การเข้ารหัสคีย์สาธารณะในอดีต เป็นแนวคิดที่ค่อนข้างใหม่

การเข้ารหัสแบบสมมาตรเหมาะอย่างยิ่งสำหรับองค์กรต่างๆเช่นรัฐบาลทหารและ บริษัท การเงินขนาดใหญ่ที่เกี่ยวข้องกับการสื่อสารประเภทต่างๆ

ด้วยการแพร่กระจายของเครือข่ายคอมพิวเตอร์ที่ไม่ปลอดภัยมากขึ้นในช่วงไม่กี่ทศวรรษที่ผ่านมาจึงมีความจำเป็นอย่างยิ่งที่จะต้องใช้การเข้ารหัสในระดับที่ใหญ่ขึ้น พบว่าคีย์สมมาตรไม่สามารถใช้งานได้จริงเนื่องจากความท้าทายที่ต้องเผชิญในการจัดการคีย์ สิ่งนี้ก่อให้เกิดระบบรหัสลับสาธารณะ

กระบวนการเข้ารหัสและถอดรหัสมีดังภาพต่อไปนี้ -

คุณสมบัติที่สำคัญที่สุดของรูปแบบการเข้ารหัสคีย์สาธารณะคือ -

  • ใช้คีย์ที่แตกต่างกันสำหรับการเข้ารหัสและถอดรหัส นี่คือคุณสมบัติที่กำหนดโครงร่างนี้แตกต่างจากโครงร่างการเข้ารหัสแบบสมมาตร

  • ผู้รับแต่ละคนมีคีย์การถอดรหัสที่ไม่ซ้ำกันโดยทั่วไปเรียกว่าคีย์ส่วนตัวของเขา

  • ผู้รับจำเป็นต้องเผยแพร่คีย์การเข้ารหัสซึ่งเรียกว่าคีย์สาธารณะของเขา

  • จำเป็นต้องมีการรับรองความถูกต้องของคีย์สาธารณะในโครงการนี้เพื่อหลีกเลี่ยงการปลอมแปลงโดยฝ่ายตรงข้ามเป็นผู้รับ โดยทั่วไป cryptosystem ประเภทนี้เกี่ยวข้องกับบุคคลที่สามที่เชื่อถือได้ซึ่งรับรองว่าคีย์สาธารณะนั้นเป็นของบุคคลหรือนิติบุคคลที่ระบุเท่านั้น

  • อัลกอริทึมการเข้ารหัสมีความซับซ้อนเพียงพอที่จะห้ามไม่ให้ผู้โจมตีอนุมานข้อความธรรมดาจากไซเฟอร์เท็กซ์และคีย์การเข้ารหัส (สาธารณะ)

  • แม้ว่าคีย์ส่วนตัวและคีย์สาธารณะจะเกี่ยวข้องกันทางคณิตศาสตร์ แต่ก็ไม่สามารถคำนวณคีย์ส่วนตัวจากคีย์สาธารณะได้ ในความเป็นจริงส่วนที่ชาญฉลาดของระบบเข้ารหัสคีย์สาธารณะคือการออกแบบความสัมพันธ์ระหว่างสองคีย์

แผนการเข้ารหัสคีย์สาธารณะมีสามประเภท เราจะพูดถึงพวกเขาในส่วนต่อไปนี้ -

RSA Cryptosystem

ระบบเข้ารหัสนี้เป็นระบบเริ่มต้นระบบหนึ่ง ยังคงเป็นระบบเข้ารหัสที่มีการใช้งานมากที่สุดจนถึงทุกวันนี้ ระบบนี้คิดค้นโดยนักวิชาการสามคนRon Rivest, Adi Shamir, และ Len Adleman และด้วยเหตุนี้จึงเรียกว่า RSA cryptosystem

เราจะเห็นสองแง่มุมของ RSA cryptosystem การสร้างคู่คีย์ประการแรกและอัลกอริธึมการถอดรหัสการเข้ารหัสที่สอง

การสร้างคู่คีย์ RSA

แต่ละคนหรือฝ่ายที่ต้องการมีส่วนร่วมในการสื่อสารโดยใช้การเข้ารหัสจำเป็นต้องสร้างคีย์คู่หนึ่ง ได้แก่ คีย์สาธารณะและคีย์ส่วนตัว กระบวนการที่ตามมาในการสร้างคีย์อธิบายไว้ด้านล่าง -

  • Generate the RSA modulus (n)

    • เลือกสองช่วงเวลาขนาดใหญ่ p และ q

    • คำนวณ n = p * q สำหรับการเข้ารหัสที่แข็งแกร่งแบบไม่แตกหักให้ n เป็นจำนวนมากโดยทั่วไปต้องมีอย่างน้อย 512 บิต

  • Find Derived Number (e)

    • จำนวน e ต้องมากกว่า 1 และน้อยกว่า (p - 1) (q - 1)

    • ต้องไม่มีปัจจัยร่วมสำหรับ e และ (p - 1) (q - 1) ยกเว้น 1 ในคำอื่น ๆ สองตัวเลข e และ (p - 1) (q - 1) เป็น coprime

  • Form the public key

    • คู่ของตัวเลข (n, e) สร้างคีย์สาธารณะ RSA และเปิดเผยต่อสาธารณะ

    • สิ่งที่น่าสนใจคือแม้ว่า n จะเป็นส่วนหนึ่งของคีย์สาธารณะ แต่ความยากลำบากในการแยกตัวประกอบจำนวนเฉพาะจำนวนมากทำให้มั่นใจได้ว่าผู้โจมตีไม่สามารถค้นหาได้ในเวลา จำกัด ที่สอง primes (p & q) ที่ใช้เพื่อรับ n นี่คือจุดแข็งของ RSA

  • Generate the private key

    • คีย์ส่วนตัว d คำนวณจาก p, q และ e สำหรับ n และ e ที่กำหนดจะมีหมายเลขเฉพาะ d

    • ตัวเลข d คือค่าผกผันของ e modulo (p - 1) (q - 1) ซึ่งหมายความว่า d เป็นจำนวนที่น้อยกว่า (p - 1) (q - 1) ซึ่งเมื่อคูณด้วย e จะเท่ากับ 1 โมดูโล (p - 1) (q - 1)

    • ความสัมพันธ์นี้เขียนในเชิงคณิตศาสตร์ดังนี้ -

ed = 1 mod (p − 1)(q − 1)

อัลกอริทึมแบบยุคลิดแบบขยายใช้ p, q และ e เป็นอินพุตและให้ d เป็นเอาต์พุต

ตัวอย่าง

ตัวอย่างการสร้างคู่คีย์ RSA แสดงไว้ด้านล่าง (เพื่อความง่ายในการทำความเข้าใจ primes p & q ที่นำมานี้เป็นค่าเล็กน้อยในทางปฏิบัติแล้วค่าเหล่านี้สูงมาก)

  • ให้สองไพรม์คือ p = 7 และ q = 13 ดังนั้นโมดูลัส n = pq = 7 x 13 = 91

  • เลือก e = 5 ซึ่งเป็นตัวเลือกที่ถูกต้องเนื่องจากไม่มีตัวเลขที่เป็นปัจจัยร่วมของ 5 และ (p - 1) (q - 1) = 6 × 12 = 72 ยกเว้น 1

  • คู่ของตัวเลข (n, e) = (91, 5) เป็นกุญแจสาธารณะและสามารถให้ใครก็ได้ที่เราต้องการให้สามารถส่งข้อความเข้ารหัสถึงเราได้

  • อินพุต p = 7, q = 13 และ e = 5 ไปยังอัลกอริทึมแบบยุคลิดขยาย ผลลัพธ์จะเป็น d = 29

  • ตรวจสอบว่า d ที่คำนวณถูกต้องโดยการคำนวณ -

de = 29 × 5 = 145 = 1 mod 72
  • ดังนั้นคีย์สาธารณะคือ (91, 5) และคีย์ส่วนตัวคือ (91, 29)

การเข้ารหัสและการถอดรหัส

เมื่อสร้างคู่คีย์แล้วกระบวนการเข้ารหัสและถอดรหัสจะค่อนข้างตรงไปตรงมาและง่ายต่อการคำนวณ

ที่น่าสนใจคือ RSA ไม่ได้ทำงานโดยตรงกับสตริงของบิตเช่นเดียวกับการเข้ารหัสคีย์สมมาตร ทำงานกับตัวเลข modulo n ดังนั้นจึงจำเป็นต้องแสดงข้อความธรรมดาเป็นชุดของตัวเลขที่น้อยกว่า n

การเข้ารหัส RSA

  • สมมติว่าผู้ส่งต้องการส่งข้อความถึงคนที่มีคีย์สาธารณะคือ (n, e)

  • จากนั้นผู้ส่งจะแสดงข้อความธรรมดาเป็นชุดของตัวเลขที่น้อยกว่า n

  • ในการเข้ารหัสข้อความธรรมดา P ตัวแรกซึ่งเป็นตัวเลขโมดูโล n กระบวนการเข้ารหัสเป็นขั้นตอนทางคณิตศาสตร์ง่ายๆเช่น -

C = Pe mod n
  • กล่าวอีกนัยหนึ่งไซเฟอร์เท็กซ์ C เท่ากับข้อความธรรมดา P คูณด้วยตัวมันเอง e คูณแล้วลดโมดูโล n ซึ่งหมายความว่า C เป็นตัวเลขที่น้อยกว่า n ด้วย

  • กลับไปที่ตัวอย่างการสร้างคีย์ของเราด้วยข้อความธรรมดา P = 10 เราจะได้รับการเข้ารหัส C -

C = 105 mod 91

การถอดรหัส RSA

  • กระบวนการถอดรหัสสำหรับ RSA นั้นตรงไปตรงมามากเช่นกัน สมมติว่าผู้รับของ public-key pair (n, e) ได้รับ ciphertext C

  • ตัวรับยก C ให้เป็นพลังของคีย์ส่วนตัว d โมดูโล n ผลลัพธ์จะเป็นข้อความธรรมดา P

Plaintext = Cd mod n
  • กลับไปที่ตัวอย่างตัวเลขของเราอีกครั้งการเข้ารหัส C = 82 จะถูกถอดรหัสเป็นหมายเลข 10 โดยใช้คีย์ส่วนตัว 29 -

Plaintext = 8229 mod 91 = 10

การวิเคราะห์ RSA

ความปลอดภัยของ RSA ขึ้นอยู่กับจุดแข็งของสองฟังก์ชันที่แยกจากกัน RSA cryptosystem เป็นจุดแข็งของระบบเข้ารหัสคีย์สาธารณะที่ได้รับความนิยมมากที่สุดซึ่งขึ้นอยู่กับความยากลำบากในทางปฏิบัติในการแยกตัวเลขจำนวนมาก

  • Encryption Function - ถือเป็นฟังก์ชันทางเดียวในการแปลงข้อความธรรมดาเป็นไซเฟอร์เท็กซ์และสามารถย้อนกลับได้เฉพาะเมื่อมีความรู้เกี่ยวกับคีย์ส่วนตัว d

  • Key Generation- ความยากในการกำหนดคีย์ส่วนตัวจากคีย์สาธารณะ RSA นั้นเทียบเท่ากับการแยกตัวประกอบโมดูลัส n ดังนั้นผู้โจมตีจึงไม่สามารถใช้ความรู้เกี่ยวกับคีย์สาธารณะ RSA เพื่อกำหนดคีย์ส่วนตัวของ RSA ได้เว้นแต่เขาจะแยกตัวประกอบ n ได้ นอกจากนี้ยังเป็นฟังก์ชันทางเดียวการเปลี่ยนจากค่า p & q ไปเป็นโมดูลัส n นั้นง่าย แต่ไม่สามารถย้อนกลับได้

หากฟังก์ชันทั้งสองนี้พิสูจน์แล้วว่าไม่ใช่ทางเดียว RSA ก็จะเสีย ในความเป็นจริงหากมีการพัฒนาเทคนิคการแยกตัวประกอบอย่างมีประสิทธิภาพแล้ว RSA ก็จะไม่ปลอดภัยอีกต่อไป

ความแข็งแกร่งของการเข้ารหัส RSA ลดลงอย่างมากในการต่อต้านการโจมตีหากหมายเลข p และ q ไม่ใช่จำนวนครั้งใหญ่และ / หรือคีย์สาธารณะที่เลือก e เป็นตัวเลขที่น้อย

ElGamal Cryptosystem

นอกจาก RSA แล้วยังมีระบบเข้ารหัสคีย์สาธารณะอื่น ๆ ที่เสนอ หลายคนอ้างอิงจากปัญหาลอการิทึมแบบไม่ต่อเนื่องในเวอร์ชันต่างๆ

ElGamal cryptosystem เรียกว่า Elliptic Curve Variant มีพื้นฐานมาจากปัญหาลอการิทึมแบบไม่ต่อเนื่อง ได้รับความแข็งแกร่งจากสมมติฐานที่ว่าไม่พบลอการิทึมแบบไม่ต่อเนื่องในกรอบเวลาที่ใช้งานได้จริงสำหรับจำนวนที่กำหนดในขณะที่การดำเนินการผกผันของกำลังสามารถคำนวณได้อย่างมีประสิทธิภาพ

ให้เราดู ElGamal เวอร์ชันง่ายๆที่ใช้งานได้กับตัวเลข modulo p ในกรณีของรูปแบบของเส้นโค้งรูปไข่จะขึ้นอยู่กับระบบตัวเลขที่แตกต่างกันมาก

การสร้างคู่คีย์ ElGamal

ผู้ใช้ ElGamal cryptosystem แต่ละคนจะสร้างคู่คีย์ผ่านดังนี้ -

  • Choosing a large prime p. โดยทั่วไปจะเลือกจำนวนเฉพาะที่มีความยาว 1024 ถึง 2048 บิต

  • Choosing a generator element g.

    • ตัวเลขนี้ต้องอยู่ระหว่าง 1 ถึง p - 1 แต่ต้องไม่เป็นตัวเลขใด ๆ

    • มันเป็นเครื่องกำเนิดของกลุ่มจำนวนเต็มแบบทวีคูณโมดูโลพี ซึ่งหมายความว่าสำหรับทุกจำนวนเต็ม m co-prime ถึง p จะมีจำนวนเต็ม k เช่นนั้น g k = a mod n

      ตัวอย่างเช่น 3 คือตัวสร้างของกลุ่ม 5 (Z 5 = {1, 2, 3, 4})

3 n 3 n mod 5
1 3 3
2 9 4
3 27 2
4 81 1
  • Choosing the private key. คีย์ส่วนตัว x คือตัวเลขใด ๆ ที่ใหญ่กว่า 1 และเล็กกว่า p − 1

  • Computing part of the public key. ค่า y คำนวณจากพารามิเตอร์ p, g และคีย์ส่วนตัว x ดังนี้ -

y = gx mod p
  • Obtaining Public key. คีย์สาธารณะ ElGamal ประกอบด้วยพารามิเตอร์สามตัว (p, g, y)

    ตัวอย่างเช่นสมมติว่า p = 17 และ g = 6 (ยืนยันได้ว่า 6 เป็นตัวกำเนิดของกลุ่ม Z 17 ) คีย์ส่วนตัว x สามารถเป็นตัวเลขใดก็ได้ที่ใหญ่กว่า 1 และเล็กกว่า 71 ดังนั้นเราจึงเลือก x = 5 จากนั้นค่า y จะถูกคำนวณดังนี้ -

y = 65 mod 17 = 7
  • ดังนั้นคีย์ส่วนตัวคือ 62 และคีย์สาธารณะคือ (17, 6, 7)

การเข้ารหัสและการถอดรหัส

การสร้างคู่คีย์ ElGamal ค่อนข้างง่ายกว่ากระบวนการเทียบเท่าสำหรับ RSA แต่การเข้ารหัสและถอดรหัสนั้นซับซ้อนกว่า RSA เล็กน้อย

การเข้ารหัส ElGamal

สมมติว่าผู้ส่งต้องการส่งข้อความธรรมดาถึงคนที่มีคีย์สาธารณะ ElGamal คือ (p, g, y) แล้ว -

  • ผู้ส่งแทนข้อความธรรมดาเป็นอนุกรมของตัวเลขโมดูโลพี

  • ในการเข้ารหัสข้อความธรรมดา P ตัวแรกซึ่งแสดงเป็นตัวเลขโมดูโล p กระบวนการเข้ารหัสเพื่อรับ ciphertext C มีดังต่อไปนี้ -

    • สุ่มสร้างตัวเลข k;
    • คำนวณสองค่า C1 และ C2 โดยที่ -
C1 = gk mod p
C2 = (P*yk) mod p
  • ส่ง ciphertext C ซึ่งประกอบด้วยสองค่าที่แยกจากกัน (C1, C2) ส่งถึงกัน

  • อ้างอิงถึงตัวอย่างการสร้างคีย์ ElGamal ที่ให้ไว้ข้างต้นข้อความธรรมดา P = 13 จะถูกเข้ารหัสดังนี้ -

    • สร้างตัวเลขแบบสุ่มพูดว่า k = 10
    • คำนวณค่าสองค่า C1 และ C2 โดยที่ -
C1 = 610 mod 17
C2 = (13*710) mod 17 = 9
  • ส่ง ciphertext C = (C1, C2) = (15, 9)

การถอดรหัส ElGamal

  • ในการถอดรหัสรหัสลับ (C1, C2) โดยใช้คีย์ส่วนตัว x ให้ดำเนินการสองขั้นตอนต่อไปนี้ -

    • คำนวณค่าผกผันโมดูลาร์ของ (C1) xโมดูโล p ซึ่งก็คือ (C1) -xโดยทั่วไปเรียกว่าปัจจัยการถอดรหัส

    • รับข้อความธรรมดาโดยใช้สูตรต่อไปนี้ -

C2 × (C1)-x  mod p = Plaintext
  • ในตัวอย่างของเราในการถอดรหัสรหัสลับ C = (C1, C2) = (15, 9) โดยใช้คีย์ส่วนตัว x = 5 ปัจจัยการถอดรหัสคือ

15-5  mod 17 = 9
  • แยกข้อความธรรมดา P = (9 × 9) mod 17 = 13

การวิเคราะห์ ElGamal

ในระบบ ElGamal ผู้ใช้แต่ละคนมีคีย์ส่วนตัว x และมีthree components ของคีย์สาธารณะ - prime modulus p, generator g, and public Y = gx mod p. จุดแข็งของ ElGamal ขึ้นอยู่กับความยากของปัญหาลอการิทึมแบบไม่ต่อเนื่อง

ขนาดคีย์ที่ปลอดภัยโดยทั่วไปคือ> 1024 บิต ทุกวันนี้ยังใช้คีย์แบบยาว 2048 บิต ในส่วนหน้าความเร็วในการประมวลผล Elgamal ค่อนข้างช้าซึ่งส่วนใหญ่ใช้สำหรับโปรโตคอลการตรวจสอบสิทธิ์ที่สำคัญ เนื่องจากประสิทธิภาพในการประมวลผลที่สูงขึ้นรูปแบบ Elliptic Curve ของ ElGamal จึงได้รับความนิยมมากขึ้นเรื่อย ๆ

การเข้ารหัส Elliptic Curve (ECC)

Elliptic Curve Cryptography (ECC) เป็นคำที่ใช้อธิบายชุดเครื่องมือและโปรโตคอลการเข้ารหัสที่มีการรักษาความปลอดภัยตามเวอร์ชันพิเศษของปัญหาลอการิทึมแบบไม่ต่อเนื่อง ไม่ใช้ตัวเลขโมดูโลพี

ECC ขึ้นอยู่กับชุดของตัวเลขที่เกี่ยวข้องกับวัตถุทางคณิตศาสตร์ที่เรียกว่าเส้นโค้งวงรี มีกฎสำหรับการเพิ่มและคำนวณทวีคูณของตัวเลขเหล่านี้เช่นเดียวกับที่มีสำหรับตัวเลขโมดูโลพี

ECC ประกอบด้วยรูปแบบของรูปแบบการเข้ารหัสจำนวนมากที่ได้รับการออกแบบมาสำหรับหมายเลขแบบแยกส่วนเช่นการเข้ารหัส ElGamal และอัลกอริทึมลายเซ็นดิจิทัล

เชื่อกันว่าปัญหาลอการิทึมแบบไม่ต่อเนื่องนั้นยากกว่ามากเมื่อนำไปใช้กับจุดบนเส้นโค้งวงรี สิ่งนี้แจ้งให้เปลี่ยนจากตัวเลขโมดูโล p เป็นจุดบนเส้นโค้งวงรี นอกจากนี้ยังสามารถรับระดับการรักษาความปลอดภัยที่เทียบเท่าได้ด้วยคีย์ที่สั้นกว่าหากเราใช้ตัวแปรตามเส้นโค้งรูปไข่

คีย์ที่สั้นกว่าส่งผลให้เกิดประโยชน์สองประการ -

  • ง่ายต่อการจัดการที่สำคัญ
  • การคำนวณที่มีประสิทธิภาพ

ประโยชน์เหล่านี้ทำให้รูปแบบการเข้ารหัสรูปไข่โค้งตามรูปแบบที่น่าสนใจอย่างมากสำหรับแอปพลิเคชันที่ทรัพยากรคอมพิวเตอร์มีข้อ จำกัด

RSA และ ElGamal Schemes - การเปรียบเทียบ

ให้เราเปรียบเทียบโครงร่าง RSA และ ElGamal สั้น ๆ ในแง่มุมต่างๆ

RSA ElGamal
มีประสิทธิภาพมากขึ้นสำหรับการเข้ารหัส มีประสิทธิภาพมากขึ้นสำหรับการถอดรหัส
มีประสิทธิภาพน้อยกว่าสำหรับการถอดรหัส มีประสิทธิภาพมากขึ้นสำหรับการถอดรหัส
สำหรับระดับความปลอดภัยเฉพาะต้องใช้คีย์ยาวใน RSA เพื่อความปลอดภัยในระดับเดียวกันจำเป็นต้องใช้คีย์ที่สั้นมาก
เป็นที่ยอมรับและใช้กันอย่างแพร่หลาย เป็นสินค้าใหม่และไม่เป็นที่นิยมในตลาด