อ่าน 5 นาที
อัลกอริทึมการเข้ารหัสขนาดเล็ก
ในด้านการเข้ารหัสลับ อัลกอริทึมการเข้ารหัสขนาดเล็ก ( TEA )เป็นการเข้ารหัสแบบบล็อกที่โดดเด่นด้วยความเรียบง่ายของคำอธิบายและการใช้งานโดยทั่วไปใช้โค้ดเพียงไม่กี่บรรทัด...
อัลกอริทึมการเข้ารหัสขนาดเล็ก
![]() สองรอบ Feistel (หนึ่งรอบ) ของ TEA [ 1 ] | |
| ทั่วไป | |
|---|---|
| นักออกแบบ | โรเจอร์ นีดแฮม , เดวิด วีลเลอร์ |
| เผยแพร่ครั้งแรก | พ.ศ. 2537 |
| ผู้สืบทอด | เอ็กซ์ทีเอ |
| รายละเอียดรหัสลับ | |
| ขนาดกุญแจ | 128 บิต |
| ขนาดบล็อก | 64 บิต |
| โครงสร้าง | เครือข่ายไฟสเทล |
| รอบ | แปรผันได้; แนะนำให้ใช้ 64 รอบ Feistel (32 รอบ) |
| บริการวิเคราะห์รหัสลับสาธารณะที่ดีที่สุด | |
| TEA ประสบปัญหาจากคีย์ที่เทียบเท่ากัน (ดูข้อความ; Kelsey et al., 1996) และสามารถถูกเจาะได้โดยใช้การโจมตีคีย์ที่เกี่ยวข้อง ซึ่งต้องใช้ ข้อความธรรมดาที่เลือก 2 23 ชุด และความซับซ้อนของเวลา 2 32 [ 2 ] การวิเคราะห์การเข้ารหัสโครงสร้างที่ดีที่สุดของ TEA ในการตั้งค่าคีย์ลับเดี่ยวมาตรฐานคือการวิเคราะห์การเข้ารหัสแบบไม่มีความสัมพันธ์ ซึ่งสามารถเจาะ 21 รอบได้ในเวลา 2 121.5โดยใช้โค้ดบุ๊คน้อยกว่าจำนวนเต็ม[ 3 ] | |
ในด้านการเข้ารหัสลับ อัลกอริทึมการเข้ารหัสขนาดเล็ก ( TEA )เป็นการเข้ารหัสแบบบล็อกที่โดดเด่นด้วยความเรียบง่ายของคำอธิบายและการใช้งานโดยทั่วไปใช้โค้ดเพียงไม่กี่บรรทัด อัลกอริทึมนี้ได้รับการออกแบบโดยDavid WheelerและRoger Needhamจากห้องปฏิบัติการคอมพิวเตอร์เคมบริดจ์ โดย ได้รับการนำเสนอครั้งแรกใน การประชุมเชิงปฏิบัติการ การเข้ารหัสซอฟต์แวร์ที่รวดเร็วในเมืองลูเวนในปี 1994 และตีพิมพ์ครั้งแรกในรายงานการประชุมเชิงปฏิบัติการดังกล่าว[ 4 ]
รหัสลับนี้ไม่ได้รับการคุ้มครองโดยสิทธิบัตร ใด ๆ
คุณสมบัติ
TEA ทำงานกับ จำนวนเต็ม 32 บิตที่ไม่มีเครื่องหมายสองตัว (อาจได้มาจาก บล็อกข้อมูล 64 บิต) และใช้ คีย์ 128 บิต มีโครงสร้าง Feistelพร้อมรอบที่แนะนำ 64 รอบ ซึ่งโดยทั่วไปจะนำไปใช้เป็นคู่ที่เรียกว่าวงจร มี ตารางคีย์ที่ง่ายมากโดยผสมวัสดุคีย์ทั้งหมดในลักษณะเดียวกันสำหรับแต่ละวงจร มีการใช้ ค่าคงที่ วิเศษหลายตัวคูณ เพื่อป้องกันการโจมตีแบบง่ายๆ โดยอาศัยความสมมาตรของรอบ ค่าคงที่วิเศษ 2654435769 หรือ 0x9E3779B9 ถูกเลือกให้เป็น⌊2 32 ⁄ 𝜙⌋โดยที่𝜙คืออัตราส่วนทองคำ (เป็นตัวเลขที่ไม่ได้ซ่อนไว้ ) [ 4 ]
TEA มีจุดอ่อนอยู่บ้าง ที่สำคัญที่สุดคือ มันประสบปัญหาเรื่องคีย์ที่เทียบเท่ากัน—คีย์แต่ละตัวเทียบเท่ากับคีย์อื่นอีกสามตัว ซึ่งหมายความว่าขนาดคีย์ ที่มีประสิทธิภาพ มีเพียง 126 บิตเท่านั้น[ 5 ]ด้วยเหตุนี้ TEA จึงแย่เป็นพิเศษในฐานะฟังก์ชันแฮชเข้ารหัสลับจุดอ่อนนี้ทำให้เกิดวิธีการแฮ็กเครื่องเล่นเกมXboxของMicrosoftซึ่งใช้การเข้ารหัสนี้เป็นฟังก์ชันแฮช[ 6 ] TEA ยังมีความเสี่ยงต่อการโจมตีด้วยคีย์ที่เกี่ยวข้อง ซึ่งต้องใช้ ข้อความธรรมดาที่เลือก 2 23 รายการ ภายใต้คู่คีย์ที่เกี่ยวข้อง โดยมีความซับซ้อนของเวลา 2 32 รายการ [ 2 ] เนื่องจากจุดอ่อนเหล่านี้จึงมีการออกแบบการเข้ารหัส XTEA ขึ้นมา
เวอร์ชัน
TEA เวอร์ชันแรกที่เผยแพร่ได้รับการปรับปรุงเพิ่มเติมด้วยเวอร์ชันที่สองซึ่งรวมส่วนขยายเพื่อให้มีความปลอดภัยมากขึ้นBlock TEA (ซึ่งกำหนดไว้พร้อมกับXTEA ) ทำงานกับบล็อกขนาดใดก็ได้แทนที่บล็อก 64 บิตของเวอร์ชันดั้งเดิม
เวอร์ชันที่สาม ( XXTEA ) ซึ่งเผยแพร่ในปี 1998 ได้อธิบายถึงการปรับปรุงเพิ่มเติมเพื่อเพิ่มความปลอดภัยของอัลกอริทึม Block TEA
รหัสอ้างอิง
ต่อไปนี้เป็นการดัดแปลงรูทีนการเข้ารหัสและการถอดรหัสอ้างอิงใน ภาษา Cซึ่งเผยแพร่สู่สาธารณะโดย David Wheeler และ Roger Needham: [ 4 ]
#include <stdint.h>void encrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0 , i ; /* ตั้งค่า */ uint32_t delta = 0x9E3779B9 ; /* ค่าคงที่กำหนดการคีย์ */ uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /* แคชคีย์ */ for ( i = 0 ; i < 32 ; i ++ ) { /* เริ่มรอบพื้นฐาน */ sum += delta ; v0 += (( v1 << 4 ) + k0 ) ^ ( v1 + sum ) ^ (( v1 >> 5 ) + k1 ); v1 += (( v0 << 4 ) + k2 ) ^ ( v0 + ผลรวม) ^ (( v0 >> 5 ) + k3 ); } /* จบรอบ */ v [ 0 ] = v0 ; โวลต์[ 1 ] = v1 ; }void decrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0xC6EF3720 , i ; /* ตั้งค่า; ผลรวมคือ (delta << 5) & 0xFFFFFFFF */ uint32_t delta = 0x9E3779B9 ; /* ค่าคงที่ตารางคีย์ */ uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /* คีย์แคช */ สำหรับ( i = 0 ; i < 32 ; i ++ ) { /* เริ่มต้นรอบพื้นฐาน */ v1 -= (( v0 << 4 ) + k2 ) ^ ( v0 + ผลรวม) ^ (( v0 >> 5 ) + k3 ); v0 -= (( v1 << 4 ) + k0 ) ^ ( v1 + ผลรวม) ^ (( v1 >> 5 ) + k1 ); ผลรวม-= เดลต้า; } /* จบรอบ */ v [ 0 ] = v0 ; โวลต์[ 1 ] = v1 ; }โปรดทราบว่าการใช้งานอ้างอิงนั้นทำงานกับค่าตัวเลขหลายไบต์ เอกสารต้นฉบับไม่ได้ระบุวิธีการแปลงตัวเลขเหล่านั้นจากเลขฐานสองหรือเนื้อหาอื่นๆ
ดูเพิ่มเติม
- RC4 – การเข้ารหัสแบบสตรีมที่ออกแบบมาให้ใช้งานง่ายมาก เช่นเดียวกับ TEA
- XTEA – เวอร์ชันแรกของผลิตภัณฑ์ต่อจาก Block TEA
- XXTEA – ผลิตภัณฑ์ใหม่ที่มาแทนที่ Corrected Block TEA
- Treyfer – อัลกอริทึมการเข้ารหัสที่เรียบง่ายและกะทัดรัด โดยมีขนาดคีย์และขนาดบล็อก 64 บิต
หมายเหตุ
- ^ Matthew D. Russell (27 กุมภาพันธ์ 2547). "ความเล็กจิ๋ว: ภาพรวมของ TEA และรหัสลับที่เกี่ยวข้อง" . เก็บถาวรจากต้นฉบับเมื่อ 12 สิงหาคม 2550.
- ^ a b Kelsey, John; Schneier, Bruce ; Wagner, David (1997). "การวิเคราะห์การเข้ารหัสแบบคีย์สัมพันธ์ของ 3-WAY, Biham-DES, CAST, DES-X, NewDES, RC2 และ TEA" ความปลอดภัยของข้อมูลและการสื่อสาร บันทึกการบรรยายในวิทยาการคอมพิวเตอร์ เล่มที่ 1334 หน้า 233–246 CiteSeerX 10.1.1.35.8112 doi : 10.1007/BFb0028479 ISBN 978-3-540-63696-0.
- ^ Bogdanov, Andrey; Wang, Meiqin (2012). "การวิเคราะห์การเข้ารหัสเชิงเส้นแบบไม่มีความสัมพันธ์ด้วยความซับซ้อนของข้อมูลที่ลดลง" การเข้ารหัสซอฟต์แวร์ที่รวดเร็ว (PDF) . Lecture Notes in Computer Science. Vol. 7549. pp. 29– 48. doi : 10.1007/978-3-642-34047-5_3 . ISBN 978-3-642-34046-8.
- ^ a b c Wheeler, David J.; Needham, Roger M. (16 ธันวาคม 1994). "TEA, อัลกอริทึมการเข้ารหัสขนาดเล็ก". การเข้ารหัสซอฟต์แวร์ที่รวดเร็ว . บันทึกการบรรยายในวิทยาศาสตร์คอมพิวเตอร์. เล่มที่ 1008. ลูเวน, เบลเยียม. หน้า 363–366 . doi : 10.1007/3-540-60590-8_29 . ISBN 978-3-540-60590-4.
{{cite book}}: CS1 maint: ไม่พบตำแหน่งผู้เผยแพร่ ( ลิงก์ ) - ^ Kelsey, John; Schneier, Bruce ; Wagner, David (1996). "การวิเคราะห์การเข้ารหัสแบบตารางคีย์ของ IDEA, G-DES, GOST, SAFER และ Triple-DES" ความก้าวหน้าในวิทยาการเข้ารหัสลับ — CRYPTO '96 (PDF) . Lecture Notes in Computer Science. Vol. 1109. หน้า 237–251 . doi : 10.1007/3-540-68697-5_19 . ISBN 978-3-540-61512-5เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 8 กุมภาพันธ์ 2555 เรียกดูเมื่อวันที่ 25 กุมภาพันธ์ 2551
- ^ Michael Steil. "17 ข้อผิดพลาดที่ Microsoft ทำในระบบรักษาความปลอดภัยของ Xbox" . เก็บถาวรจากต้นฉบับเมื่อวันที่ 16 เมษายน 2552
ลิงก์ภายนอก
- เวกเตอร์ทดสอบสำหรับ TEA
- การใช้งาน XXTEA ด้วย Base64 ใน JavaScript เก็บถาวรเมื่อวันที่ 28 เมษายน 2549 ที่Wayback Machine
- การใช้งาน XTEA ในรูปแบบ PHP (ภาษาเยอรมัน)
- การใช้งาน XXTEA ในภาษา JavaScript
- การใช้งาน XTEA ในภาษา JavaScript และ PHP (ข้อความภาษาดัตช์)
- การใช้งาน AVR ASM
- SEA (Scalable Encryption Algorithm for Small Embedded Applications) (Standaert, Piret, Gershenfeld, Quisquater - กรกฎาคม 2548 UCL เบลเยียม และ MIT สหรัฐอเมริกา)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึมการเข้ารหัสขนาดเล็ก
ในด้านการเข้ารหัสลับ อัลกอริทึมการเข้ารหัสขนาดเล็ก ( TEA )เป็นการเข้ารหัสแบบบล็อกที่โดดเด่นด้วยความเรียบง่ายของคำอธิบายและการใช้งานโดยทั่วไปใช้โค้ดเพียงไม่กี่บรรทัด...
คุณสมบัติ
TEA ทำงานกับ จำนวนเต็ม 32 บิตที่ไม่มีเครื่องหมายสองตัว (อาจได้มาจาก บล็อก ข้อมูล 64 บิต) และใช้ คีย์ 128 บิต มี โครงสร้าง Feistel พร้อมรอบที่แนะนำ 64 รอบ ซึ่งโดยทั่วไปจะนำไปใช้เป็นคู่ที่เรียกว่า วงจร มี ตารางคีย์...
เวอร์ชัน
TEA เวอร์ชันแรกที่เผยแพร่ได้รับการปรับปรุงเพิ่มเติมด้วยเวอร์ชันที่สองซึ่งรวมส่วนขยายเพื่อให้มีความปลอดภัยมากขึ้น Block TEA (ซึ่งกำหนดไว้พร้อมกับ XTEA ) ทำงานกับบล็อกขนาดใดก็ได้แทนที่บล็อก 64 บิตของเวอร์ชันดั้งเดิม
รหัสอ้างอิง
ต่อไปนี้เป็นการดัดแปลงรูทีนการเข้ารหัสและการถอดรหัสอ้างอิงใน ภาษา C ซึ่งเผยแพร่สู่สาธารณะโดย David Wheeler และ Roger Needham: [ 4 ]
