Probabilistic Asymmetric Cryptosystem ระบบการเข้ารหัสลับแบบอสมมาตรเชิงความน่าจะเป็น โดย นางสาววรรณวนัช โอภาสพันธ์สิน รหัส 503040255-9 นางสาวก้องกิดากร วรสาร รหัส 503040764-8 อาจารย์ที่ปรึกษาโครงการ ผศ.พิเชษฐ เชี่ยวธนะกุล อาจารย์ผู้ร่วมประเมิน อ.ดร. ภัทรวิทย์ พลพินิจ รศ.ดร. วนิดา แก่นอากาศ
รายละเอียดการนำเสนอ ที่มาของโครงการ เป้าหมายและขอบเขตของโครงการ แผนการดำเนินงาน ทฤษฏีที่เกี่ยวข้อง ส่วนประกอบของระบบ ปัญหาและอุปสรรค บทสรุป
ที่มาของโครงการ สร้างพารามิเตอร์ขนาดใหญ่ซึ่งผู้ที่ต้องการโจมตีข้อมูลสามารถทำได้ยากด้านความปลอดภัยในการเข้ารหัสและและถอดรหัส คือ ผู้บุกรุกยากต่อการวิเคราะห์รหัส ใช้หลักการการเข้ารหัสลับแบบอสมมาตรในปัจจุบันซึ่งได้แก่ RSA ในการพัฒนาระบบ ซึ่งการใช้อัลกอริทึม RSA นั้นเป็นอัลกอริทึมที่มีความปลอดภัยและได้รับการยอมรับจากผู้เชี่ยวชาญ
เป้าหมายและขอบเขตของโครงการ เป้าหมายของโครงการ ออกแบบอัลกอริทึมพัฒนาโปรแกรม และ ทดสอบประสิทธิผลเชิงเวลาของการแก้รหัสและถอดรหัสลับ ในระบบที่ออกแบบเปรียบเทียบการเข้ารหัสลับแบบ อสมมาตร RSA ขอบเขตของโครงการ พัฒนาโปรแกรมด้วยภาษาไพทอนและสร้างระบบการเข้ารหัสลับแบบอสมมาตรเชิงความน่าจะเป็นที่มีความปลอดภัยสูงนำไปใช้งานได้จริง
แผนการดำเนินงาน
ทฤษฏีที่เกี่ยวข้อง blum blum shub LFSR มิลเลอร์ – ราบิน RSA
ส่วนประกอบของระบบ ส่วนการเข้ารหัส ส่วนการถอดรหัส การสุ่มค่า (Pseudorandom bit generation) การเข้ารหัสลับด้วยสตรีม ไซเฟอร์ ( Stream Cipher) การเข้ารหัสลับแบบ RSA public-key encryption ส่วนการถอดรหัส การถอดรหัสลับแบบ RSA public-key encryption การถอดรหัสลับแบบสตรีม ไซเฟอร์
ออกแบบระบบ (Conceptual Design)
ส่วนการเข้ารหัสรูปส่วนนี้ ข้อความที่ ยังไม่ได้เข้ารหัส (Plaintext) แปลงให้อยู่ในรูป เลขฐานสอง หมายเหตุ : c แทน Initialization vector m แทนความยาวของข้อมูล(plaintext) ต้องการส่งไปยังปลายทาง K แทน Key vector
การสุ่มค่า (Pseudorandom bit generation) สร้างลำดับตัวเลขสุ่มด้วยวิธี บลัม บลัม ชับ (Blum-Blum-Shub) โดยสร้างเลข จำนวนเฉพาะแล้วนำมาทำตามอัลกอริทึม มีข้อดีคือมีความปลอดภัยสูง
การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON Pseudorandom bit generation การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON sage: !python Python 2.6.4 (r264:75706, Apr 17 2010, 01:17:45) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> from sage.all import* >>> from sage.crypto.stream import blum_blum_shub >>> >>> B1=blum_blum_shub(length=7, seed=3, p=11, q=19);B1 0100101 # K แทน Key vector # c แทน Initialization vector
การเข้ารหัสลับด้วยสตรีม ไซเฟอร์ (Stream Cipher) สตรีม ไซเฟอร์ เป็นขั้นตอนวิธีการเข้ารหัสที่สำคัญ โดยเข้ารหัสในรูปแบบตัวอักษรหรือเลขไบนารี่ของข้อความที่จะเข้ารหัส เมื่อเข้ารหัสในแต่ละครั้งจะได้ข้อความที่ถูกเข้ารหัสที่แตกต่างกันขึ้นอยู่กับค่ากุญแจและค่าเวกเตอร์เริ่มต้นที่ได้จากการสุ่มในแต่ละครั้ง
การเข้ารหัสลับด้วยสตรีม ไซเฟอร์ (Stream Cipher) (ต่อ) อัลกอริทึมที่ 2 การเข้ารหัสแบบสตรีม ไซเฟอร์ INPUT : กุญแจเวกเตอร์ ค่าสัมประสิทธิ์ ความยาวของข้อมูล และข้อความที่จะเข้ารหัส (Plaintext) OUTPUT : ข้อความที่เข้ารหัสแล้ว (Ciphertext) 1. ผลิต Key stream จาก กุญแจเวกเตอร์ และ ค่าสัมประสิทธิ์ ในสมการ 2. นำ Key stream ที่ได้ มาบวกกับข้อความที่จะเข้ารหัสแปลงเป็น เลขฐานสอง ภายใต้การ mod 2 จะได้ข้อความที่ถูกเข้ารหัส
การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON Generate key stream การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON >>> from sage.misc.keystream import* [0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0]
การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON การเข้ารหัสแบบสตรีม ไซเฟอร์(LFSR) การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON >>> from sage.misc.lfsr import* #ciphertext1 [0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] 32
DECRYPTION STREAM CIPHER การใช้อัลกอริทึมโดยโปรแกรม SAGE-PYTHON >>> from sage.misc.decrypcipher1 import* decryp binary message (LOVE) is = [0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1] # แปลงกลับไปเป็น ASCII จะได้ เท่ากับ “LOVE” 32
สิ่งที่จะพัฒนาต่อ ทดสอบประสิทธิผลเชิงเวลาของการแก้รหัสและถอดรหัสลับ ในระบบที่ออกแบบเปรียบเทียบการเข้ารหัสลับแบบอสมมาตร RSA
ปัญหาและอุปสรรค ความซับซ้อนในเชิงคำนวณสูง
บทสรุป ระบบการเข้ารหัสแบบอสมมาตรเชิงความน่าจะเป็นแบ่งออกเป็นสองส่วน คือ ส่วนการเข้ารหัสและส่วนการถอดรหัส ส่วนการเข้ารหัสประกอบไปด้วยการสุ่มค่า (Pseudorandom bit generation)การเข้ารหัสลับด้วยสตรีม ไซเฟอร์ ( Stream Cipher)และการเข้ารหัสลับแบบ RSA public-key encryption