390 likes | 519 Views
COE2010-28. การแบ่งปันความลับเหนือ อาร์เอ็ส เอ (Secret Sharing over RSA). อาจารย์ที่ปรึกษา ผศ. พิเชษฐ เชี่ยวธ นะกุล อาจารย์ผู้ร่วมประเมิน ดร. กิตติ์ เธียรธโนปจัย ดร. ภัทร วิทย์ พลพินิจ. โดย นางสาว นัฐยาณี ดาราช รหัส 503040774-5
E N D
COE2010-28 การแบ่งปันความลับเหนืออาร์เอ็สเอ (Secret Sharing over RSA) อาจารย์ที่ปรึกษา ผศ. พิเชษฐเชี่ยวธนะกุล อาจารย์ผู้ร่วมประเมิน ดร. กิตติ์เธียรธโนปจัย ดร. ภัทรวิทย์ พลพินิจ โดย นางสาวนัฐยาณี ดาราช รหัส 503040774-5 นางสาวสุภาวดี วนพงศ์ทิพากร รหัส 503040790-7
รายละเอียดการนำเสนอ • ที่มาของโครงการ • วัตถุประสงค์ของโครงการ • เป้าหมายและขอบเขตของโครงการ • แผนการดำเนินงาน • ออกแบบระบบเบื้องต้น • ส่วนประกอบของระบบ • ปัญหาและอุปสรรค • บทสรุป
ที่มาของโครงการ • การแบ่งปันความลับหมายถึงการกระจายความลับท่ามกลางกลุ่มผู้ซึ่งได้รับการจัดสรรกุญแจลับในการเข้าถึงข้อมูล • สามารถสร้างข้อมูลลับนั้นขึ้นมาใหม่ได้ หากมีจำนวนคนที่ได้สิทธิเพียงพอกับจำนวนที่ตั้งไว้ให้สามารถสร้างข้อมูลกลับได้ • การแบ่งปันความลับดังกล่าวข้างต้นไม่เหมาะกับข่าวสารปริมาณมากเพราะต้องใช้จำนวนเต็มขนาดใหญ่คำนวณ • เกิดความล่าช้าและไม่สะดวกต่อการส่งข้อมูลหาบุคคลที่อยู่ไกล • โครงการการแบ่งปันความลับเหนืออาร์เอสเอนี้ มีเป้าหมายที่จะทำให้การจัดสรรกุญแจทำได้รวดเร็วและปลอดภัยยิ่งขึ้น
วัตถุประสงค์ของโครงการวัตถุประสงค์ของโครงการ • ศึกษาการเข้ารหัสลับแบบสมมาตร (Secret-Key Encryption) • ศึกษาการเข้ารหัสลับแบบอสมมาตร (Public-Key Encryption) • ศึกษาทฤษฎีจำนวนเบื้องต้น (Elementary Number Theory) พีชคณิตเชิงเส้น (Linear Algebra) และอัลกอริทึมที่เกี่ยวข้องกับการออกแบบ • พัฒนาอัลกอริทึมสำหรับแบ่งปันข้อมูลลับ • พัฒนาโปรแกรมสำหรับแบ่งปันข้อมูลลับ
เป้าหมายและขอบเขตของโครงการเป้าหมายและขอบเขตของโครงการ • เป้าหมายของโครงการ • สามารถพัฒนาอัลกอริทึมในการแบ่งปันข้อมูลลับและพัฒนาโปรแกรมในการแบ่งปันข้อมูลลับที่มีประสิทธิผล • ขอบเขตของโครงการ • พัฒนาโปรแกรมที่ใช้ในการแบ่งปันข้อมูลลับด้วยภาษา Python
ออกแบบระบบเบื้องต้น Insecure Channel . . . . . . . . . . . . PK แทน Public Key iแทน กุญแจของคนที่ i j แทน กุญแจของคนที่ j t แทน กุญแจที่เท่ากับค่าตั้งต้นของจำนวนกุญแจที่ต้องใช้ในการถอดรหัส
ส่วนของการเข้ารหัสลับ(Encryption)ส่วนของการเข้ารหัสลับ(Encryption) ส่วนของการเข้ารหัสลับประกอบด้วย 3 ส่วนคือ • การเข้ารหัสแบบ DES (Data Encryption Standard) • การเข้ารหัสแบบ Shared Secret • การเข้ารหัสด้วย RSA
การเข้ารหัสลับแบบ DES การเข้ารหัสแบบ DES จะมี 2 ขั้นตอนคือ ขั้นตอนที่ 1การสร้าง 16 Sub key และขั้นตอนที่ 2 คือ เข้ารหัสข้อมูล
การเข้ารหัสลับแบบ DES (ต่อ)
การเข้ารหัสลับแบบ DES (ต่อ)
การเข้ารหัสลับแบบ DES (ต่อ)
การเข้ารหัสลับแบบ DES (ต่อ)
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม สมมติให้ข้อความลับ คือ “Computer Engineering” และ กุญแจDES คือ “DESCRYPT” ขนาด 64 บิต จากอัลกอริทึม 1 INPUT = “DESCRYPT” OUTPUT =Subkey 16 ตัว
ตัวอย่างการใช้อัลกอริทึม (ต่อ) จากอัลกอริทึม 2 • INPUT = “Computer Engineering” • OUTPUT = Cipertextคือ “eJ/6\xec&\xb5<\x7f\xfc\x92\xe5\x00l\x91{\\\xa7\xef)\x99\xa77&&”
การเข้ารหัสลับด้วย Secret Shared
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 3 • INPUT = กุญแจ DES คือ “DESCRYPT” • OUTPUT = Share Secret Key (x , s(x)) S(1)= 1009321899649083164 S(2) = 2193098815567127072 S(3) = 3551330747754131715 S(4) = 164587979628462952
การเข้ารหัสลับด้วย RSA (ต่อ)
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 4 • INPUT = กุญแจที่ได้จากอัลกอริทึมที่ 3 , จำนวนเฉพาะ p ,q • OUTPUT = กุญแจสาธารณะ (n,e) และกุญแจส่วนตัว (d) • สำหรับคนที่ 1public key คือ (n,e) = (1404780382555410211573212 800314984147533524,12220267637248332538893804014586207700115777) private key คือ (d) = (3566286965996627543718422315542494148210793) • สำหรับคนที่ 2public key คือ (n,e) = (14047803825554102115732128003149841475335249,13216014447769141623307166925940279816200449) private key คือ (d) = (5442802657397180321999724593118190336887329)
สำหรับคนที่ 3 public key คือ (n,e) = (14047803825554102115732128003149841475335249,10766299734076561112851014226213282696152451) private key คือ (d) = (4678674176990049723477338370549654703442911) • สำหรับคนที่ 4 public key คือ (n,e) = (14047803825554102115732128003149841475335249, 22412700265863215470143559354608740827577) private key คือ (d) = (2771848198962884278493357915119666764813473)
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 5 • INPUT = กุญแจสาธารณะ (n,e) , share secret key (m) • OUTPUT = ข้อมูลที่ถูกแทนที่ด้วยรหัส C • สำหรับคนที่ 1Share Secret Key : S(1) = 1009321899649083164 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C1 = 14460063728267560007293850056085333172699831 • สำหรับคนที่ 2Share Secret Key : S(2) = 2193098815567127072 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C2 = 13647575093285580931460899622879951851645147 • สำหรับคนที่ 3Share Secret Key : S(3) = 3551330747754131715 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C3 = 18424464772023598908605815937380707041311291 • สำหรับคนที่ 4Share Secret Key : S(4) = 164587979628462952 • ข้อมูลที่ถูกแทนที่ด้วยรหัส : C4 = 6492523397710926517660108682329509437313162
ส่วนของการถอดรหัสลับ • การถอดรหัสลับด้วย RSA • การถอดรหัสลับด้วย Secret Shared • การถอดรหัสด้วย DES
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 6 • INPUT: กุญแจส่วนตัว dข้อความที่มีการแทนที่ด้วยรหัส c • OUTPUT: shared secret key (m) • สำหรับคนที่ 1 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C1 = 5803900687440274198305130563180173018200205 เมื่อถอดข้อความที่มีการแทนที่ด้วยรหัส : C1ออกมาจะได้ Share Secret Key : S(1) = 1009321899649083164
สำหรับคนที่ 2 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C2 = 12186579697069037573910028012871871725684448 เมื่อถอดข้อความที่มีการแทนที่ด้วยรหัส : C2ออกมาจะได้ Share Secret Key : S(2) = 2193098815567127072 • สำหรับคนที่ 3 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C3 = 9683212823453152439871567723114354646858801 เมื่อถอดข้อความที่มีการแทนที่ด้วยรหัส : C3ออกมาจะได้ Share Secret Key : S(3) = 3551330747754131715 • สำหรับคนที่ 4 ข้อมูลที่ถูกแทนที่ด้วยรหัส : C4 = 2213047424031495660614889436920262820068454 เมื่อถอดข้อความที่มีการแทนที่ด้วยรหัส : C4ออกมาจะได้ Share Secret Key : S(4) = 164587979628462952
การถอดรหัสลับด้วย Secret Shared
การถอดรหัสลับด้วย Secret Shared (ต่อ)
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 7 • INPUT: Share Secret Key S(X) จำนวนเท่ากับค่าตั้งต้นที่ได้กำหนดไว้ • OUTPUT = กุญแจ DES (m) M= 4919429716581634132
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 8 • INPUT: Share Secret Key S(X) จำนวนเท่ากับค่าตั้งต้นที่ได้กำหนดไว้ • OUTPUT = กุญแจ DES (m) M= 4919429716581634132
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม
การถอดรหัสลับด้วย DES (ต่อ)
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 9 • INPUT: กุญแจขนาด 64 บิต • OUTPUT: 16 Sub key โดยที่ในแต่ล่ะ Sub key มีขนาด 48 Bit จากอัลกอริทึม 10 • INPUT: กุญแจขนาด 64 บิต • OUTPUT: ข้อความที่ยังไม่ถูกเข้ารหัส
ตัวอย่างการใช้อัลกอริทึมตัวอย่างการใช้อัลกอริทึม จากอัลกอริทึม 10 • DES Key = DESCRYPT • Plaintext = Computer Engineering
ปัญหาและอุปสรรค • ความซับซ้อนทางด้านการคำนวณสูง • เอกสารที่เผยแพร่ยังมีน้อย
บทสรุป • โครงการนี้จัดทำขึ้นเพื่อพัฒนาอัลกอริทึมและพัฒนาโปรแกรมในการแบ่งปันข้อมูลลับด้วย RSA เพื่อให้ได้วิธีในการแบ่งปันข้อมูลลับที่มีความปลอดภัยสูงและเหมาะกับการใช้กับข้อมูลขนาดใหญ่ • ระบบที่ออกแบบมีสองส่วนคือส่วนของการเข้ารหัสลับและส่วนของการถอดรหัสลับ • ส่วนของการเข้ารหัสลับประกอบด้วยสามส่วนคือส่วนของการเข้ารหัสลับด้วย DES ส่วนของการเข้ารหัสลับด้วย Secret Sharing Scheme และส่วนของการเข้ารหัสลับด้วย RSA • ส่วนของการถอดรหัสลับประกอบด้วยสามส่วนคือ ส่วนของการถอดรหัสลับด้วย RSA ส่วนของการถอดรหัสลับด้วย Secret Sharing Scheme และส่วนของการถอดรหัสลับด้วย DES • จากการทดสอบอัลกอริทึมและระบบที่ออกแบบด้วยโปรแกรม SAGE พบว่าสามารถเข้ารหัสข้อความและถอดรหัสแล้วได้ข้อความที่ไม่ถูกเข้ารหัสที่ถูกต้องกลับมา
สิ่งที่จะพัฒนาต่อ • การนำอัลกอริทึมที่ออกแบบไว้มาพัฒนาโปรแกรมแบ่งปันข้อมูลลับด้วยภาษา Python • ทดสอบประสิทธิผลเชิงเวลาของการเข้าและถอดรหัส สำหรับแบ่งปันความลับระหว่างบุคคล ณ ค่าตั้งต้นของการแบ่งปันความลับร่วมต่างๆ