พื้นฐาน
ในการเข้ารหัสแบบสมมาตร การเข้ารหัสและการถอดรหัสของข้อความล้วนทำได้โดยใช้คีย์เดียวกัน (ไม่เหมือนกับการเข้ารหัสคีย์สาธารณะ)Trivium เป็นรหัสแบบสมมาตรและโดยเฉพาะอย่างยิ่งรหัสแบบสตรีม หมายความว่าสตรีมของบิตที่ดูสุ่ม (หลอกแบบสุ่ม) ใช้สำหรับการเข้ารหัส/ถอดรหัส ในระหว่างขั้นตอนการเข้ารหัส ข้อความธรรมดาจะถูก XORed กับสิ่งที่เรียกว่า คีย์สตรีม / เอาท์พุตสตรีม เพื่อให้ไซเฟอร์เท็กซ์ การถอดรหัสจะทำแบบอะนาล็อก เช่น ข้อความเข้ารหัสถูก XORed กับคีย์สตรีมเพื่อให้ข้อความธรรมดาดั้งเดิม
เอ็นแอลเอฟเอสอาร์.
โครงสร้างหลักของ Trivium เรียกว่า รีจิสเตอร์กะการตอบสนองแบบไม่เชิงเส้น (NLFSRs) ซึ่งมีประสิทธิภาพอย่างมากในการนำไปใช้ในฮาร์ดแวร์
NLFSR ประกอบด้วยอาร์เรย์ของรีจิสเตอร์ ซึ่งขนาดของอาร์เรย์เรียกว่า ระดับ ของ NLFSR นอกจากนี้ ลูปป้อนกลับยังระบุโดยชุดของบูลีน ค่าสัมประสิทธิ์การตอบกลับ.
สถานะของ NLFSR ได้รับการอัปเดตในแต่ละ "เข็มนาฬิกา" โดยเลื่อนค่าในรีจิสเตอร์ทั้งหมดไปทางขวาและตั้งค่าใหม่ของรีจิสเตอร์ซ้ายสุดให้เท่ากับบางส่วน ไม่เชิงเส้น ฟังก์ชันของชุดย่อยของรีจิสเตอร์ปัจจุบันที่กำหนดโดยค่าสัมประสิทธิ์การป้อนกลับ ในแต่ละเข็มนาฬิกา NLFSR จะแสดงค่าของรีจิสเตอร์ขวาสุด หาก NLFSR มีระดับ $n$, แล้วอย่างแรก $n$ บิตของเอาต์พุตสตรีมเป็นสถานะเริ่มต้นทุกประการ
พื้นหลัง.
Trivium stream cipher ได้รับเลือกให้เป็นส่วนหนึ่งของพอร์ตโฟลิโอของโครงการ eSTREAM ซึ่งเป็นความพยายามของยุโรปที่เสร็จสิ้นในปี 2008 ซึ่งมีเป้าหมายเพื่อพัฒนา stream cipher ใหม่ การออกแบบมีจุดประสงค์เพื่อให้มีคำอธิบายที่เรียบง่ายและคำอธิบายฮาร์ดแวร์ที่มีขนาดกะทัดรัด
สิ่งเล็กน้อย
Trivium ใช้ NLFSR คู่กันสามตัว เรียกพวกมันว่า $A$, $B$, และ $C$มีองศา $93$, $84$, และ $111$ตามลำดับ สถานะของ Trivium เป็นเพียง $288$ บิตที่ประกอบด้วยค่าในรีจิสเตอร์ทั้งหมดของ NLFSR ทั้งสามที่นาฬิกาแต่ละอัน เอาต์พุตของ NLFSR แต่ละตัวจะเป็น XORed โดยมีรีจิสเตอร์ขวาสุดและรีจิสเตอร์เพิ่มเติมหนึ่งตัว เอาต์พุตของ Trivium คือ XOR ของบิตเอาต์พุตของ NLFSR ทั้งสามตัว
ที่นาฬิกาแต่ละอัน ค่าใหม่ของรีจิสเตอร์ซ้ายสุดของแต่ละ NLFSR จะถูกคำนวณเป็นฟังก์ชันของรีจิสเตอร์ตัวใดตัวหนึ่งใน NLFSR เดียวกันและชุดย่อยของรีจิสเตอร์จาก NLFSR ตัวที่สอง
Trivium ใช้ไฟล์ $80$คีย์ -bit และ a $80$-นิดหน่อย เวกเตอร์เริ่มต้น (IV). คีย์ถูกโหลดลงใน $80$ ทะเบียนซ้ายสุดของ $A$และ IV ถูกโหลดลงใน $80$ ทะเบียนซ้ายสุดของ $B$. รีจิสเตอร์ที่เหลือถูกตั้งค่าเป็น $0$ยกเว้นสามทะเบียนสิทธิของ $C$ซึ่งตั้งค่าเป็น $1$. จากนั้น NLFSR จะถูกเรียกใช้งาน $4\cdot 288$ ขีดนาฬิกา (โดยทิ้งเอาต์พุต) และสถานะผลลัพธ์จะถือเป็นสถานะเริ่มต้น ข้อกำหนดการเข้ารหัสระบุว่ามากที่สุด $2^{64}$ สามารถสร้างบิตสตรีมคีย์ได้จากแต่ละคู่คีย์ / IV
อ้างอิง
โจนาธาน แคตซ์ และเยฮูดา ลินเดลล์ 2021. รู้เบื้องต้นเกี่ยวกับการเข้ารหัสสมัยใหม่ ฉบับพิมพ์ครั้งที่สอง (แก้ไขครั้งที่ 3). แชปแมนแอนด์ฮอลล์/ซีอาร์ซี