กลับไปหน้าบทความ

อ่าน 8 นาที

พีชคณิตฟิลด์จำกัด

ในทางคณิตศาสตร์เลขคณิตในฟิลด์จำกัดคือเลขคณิตในฟิลด์จำกัด ( ฟิลด์ที่มีจำนวนสมาชิก จำกัด) ซึ่งตรงข้ามกับเลขคณิตในฟิลด์ที่มีจำนวน สมาชิก อนันต์ เช่น ฟิลด์ของจำนวนตรรกยะ

พีชคณิตฟิลด์จำกัด

ในทางคณิตศาสตร์เลขคณิตในฟิลด์จำกัดคือเลขคณิตในฟิลด์จำกัด ( ฟิลด์ที่มีจำนวนสมาชิก จำกัด) ซึ่งตรงข้ามกับเลขคณิตในฟิลด์ที่มีจำนวน สมาชิก อนันต์ เช่น ฟิลด์ของจำนวนตรรกยะ

มีฟิลด์จำกัดที่แตกต่างกันมากมายนับไม่ ถ้วน จำนวนสมาชิกของฟิลด์ เหล่านี้ จะต้องอยู่ในรูปแบบp nโดยที่pเป็นจำนวนเฉพาะและnเป็นจำนวนเต็มบวกและฟิลด์จำกัดสองฟิลด์ที่มีขนาดเท่ากันจะสมสัณฐานกันจำนวนเฉพาะpเรียกว่าลักษณะเฉพาะของฟิลด์ และจำนวนเต็มบวกnเรียกว่ามิติของฟิลด์เหนือฟิลด์เฉพาะ ของ มัน

ฟิลด์จำกัดถูกนำไปใช้ในแอปพลิเคชันที่หลากหลาย รวมถึงในทฤษฎีการเข้ารหัส แบบคลาสสิก ในรหัสบล็อกเชิงเส้นเช่นรหัส BCHและการแก้ไขข้อผิดพลาดของรีด-โซโลมอนใน อัลกอริธึมการ เข้ารหัสลับเช่น อัลกอริธึมการเข้ารหัส Rijndael ( AES ) ในการจัดตารางการแข่งขัน และในการออกแบบการทดลอง

การแสดงผลพหุนามที่มีประสิทธิภาพ

ฟิลด์จำกัดที่มี สมาชิก p nตัว จะใช้สัญลักษณ์ GF( p n ) และเรียกอีกอย่างว่าฟิลด์กาโลอิสอันดับp nเพื่อเป็นเกียรติแก่ผู้ก่อตั้งทฤษฎีฟิลด์จำกัดเอวาริสต์ กาโลอิส GF( p ) โดยที่pเป็นจำนวนเฉพาะ คือวงแหวนของจำนวนเต็มมอดูล pนั่นเอง กล่าวคือ เราสามารถดำเนินการ (การบวก การลบ การคูณ) โดยใช้การดำเนินการปกติกับจำนวนเต็ม ตามด้วยการลดทอนมอดูล pตัวอย่างเช่น ใน GF(5) 4 + 3 = 7จะลดทอนเป็น 2 มอดูล 5 การหารคือการคูณด้วยตัวผกผันมอดูลpซึ่งสามารถคำนวณได้โดยใช้อัลกอริทึมยุคลิดแบบขยาย

กรณีพิเศษคือGF(2)ซึ่งการบวกเป็นการดำเนินการเอกซ์คลูซีฟ OR (XOR) และการคูณเป็นการดำเนินการANDเนื่องจากองค์ประกอบที่ผกผันได้เพียงอย่างเดียวคือ 1 การหารจึงเป็นฟังก์ชัน เอกลักษณ์

องค์ประกอบของ GF( p n ) อาจแสดงเป็นพหุนามที่มีดีกรีน้อยกว่าn อย่างเคร่งครัด เหนือ GF( p ) จากนั้นจึงดำเนินการโมดูลัสm(x)โดยที่m(x)เป็นพหุนามที่ไม่สามารถแยกตัวประกอบได้ที่มีดีกรีnเหนือ GF( p ) ตัวอย่างเช่น การใช้การหารพหุนามแบบยาวการบวกเป็นการบวกพหุนามตามปกติ แต่สัมประสิทธิ์จะถูกลดทอนโมดูลัสpการคูณก็เป็นการคูณพหุนามตามปกติเช่นกัน แต่สัมประสิทธิ์จะถูกคูณโมดูลัสpและพหุนามจะถูกคูณโมดูลัสพหุนามm(x) [ 1 ] การแสดงในรูปของสัมประสิทธิ์พหุนามนี้เรียกว่าฐานเอกนาม (หรือเรียกอีกอย่างว่า 'ฐานพหุนาม')

มีการแสดงองค์ประกอบของ GF( p n ) ในรูปแบบอื่น ๆ อีก บางรูปแบบมีลักษณะเหมือนกับการแสดงพหุนามข้างต้น และบางรูปแบบก็แตกต่างออกไปอย่างสิ้นเชิง (เช่น การใช้เมทริกซ์) การใช้ฐานปกติอาจมีข้อดีในบางบริบท

เมื่อจำนวนเฉพาะคือ 2 เป็นเรื่องปกติที่จะแสดงองค์ประกอบของ GF( p n ) ในรูปเลขฐานสองโดยที่สัมประสิทธิ์ของแต่ละพจน์ในพหุนามจะถูกแทนด้วยบิตหนึ่งบิตในนิพจน์เลขฐานสองขององค์ประกอบที่สอดคล้องกัน วงเล็บปีกกา ("{" และ "}") หรือตัวคั่นที่คล้ายกันมักจะถูกเพิ่มเข้าไปในเลขฐานสอง หรือในเลขฐานสิบหกที่เทียบเท่ากัน เพื่อระบุว่าค่าดังกล่าวเป็นสัมประสิทธิ์ของฐานของฟิลด์ ซึ่งแสดงถึงองค์ประกอบของฟิลด์นั้น ตัวอย่างเช่น ต่อไปนี้คือการแสดงค่าเดียวกันที่เทียบเท่ากันในฟิลด์จำกัดลักษณะเฉพาะ 2:

พหุนาม x 6 + x 4 + x + 1
ไบนารี {01010011}
เลขฐานสิบหก {53}

พหุนามดั้งเดิม

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

พหุนามเอกลักษณ์ที่ไม่สามารถแยกตัวประกอบได้ที่ มีดีกรี nซึ่งมีสัมประสิทธิ์อยู่ในฟิลด์จำกัด GF( q ) โดยที่q = p tสำหรับจำนวนเฉพาะp บางตัว และจำนวนเต็มบวกtเรียกว่าพหุนามดั้งเดิมถ้าทุกรากของพหุนามนั้นเป็นองค์ประกอบดั้งเดิมของ GF( q n ) [ 2 ] [ 3 ]ในการแสดงพหุนามของฟิลด์จำกัด สิ่งนี้หมายความว่าxเป็นองค์ประกอบดั้งเดิม มีพหุนามที่ไม่สามารถแยกตัวประกอบได้อย่างน้อยหนึ่งตัวที่xเป็นองค์ประกอบดั้งเดิม[ 4 ]กล่าวอีกนัยหนึ่ง สำหรับพหุนามดั้งเดิม กำลังของxจะสร้างค่าที่ไม่เป็นศูนย์ทุกค่าในฟิลด์

ในตัวอย่างต่อไปนี้ ควรหลีกเลี่ยงการใช้การแสดงพหุนาม เนื่องจากความหมายของxเปลี่ยนไปในแต่ละตัวอย่าง พหุนามเอกลักษณ์ที่ไม่สามารถแยกตัวประกอบได้x 8 + x 4 + x 3 + x + 1เหนือGF(2)ไม่ใช่พหุนามดั้งเดิม ให้λเป็นรากของพหุนามนี้ (ในการแสดงพหุนามจะเป็นx ) นั่นคือλ 8 + λ 4 + λ 3 + λ + 1 = 0ตอนนี้λ 51 = 1ดังนั้นλไม่ใช่องค์ประกอบดั้งเดิมของ GF(2 8 ) และสร้างกลุ่มย่อยแบบคูณที่มีอันดับ 51 [ 5 ]พหุนามเอกลักษณ์ที่ไม่สามารถแยกตัวประกอบได้x 8 + x 4 + x 3 + x 2 + 1เหนือGF(2)เป็นพหุนามดั้งเดิม และรากทั้ง 8 รากเป็นตัวสร้างของGF( 2 8 )

GF(2 8 ) ทั้งหมดมีตัวสร้างทั้งหมด 128 ตัว (ดูจำนวนองค์ประกอบดั้งเดิม ) และสำหรับพหุนามดั้งเดิม 8 ตัวเป็นรากของพหุนามลดรูป การมีxเป็นตัวสร้างสำหรับฟิลด์จำกัดนั้นเป็นประโยชน์ต่อการดำเนินการทางคณิตศาสตร์เชิงคำนวณหลายอย่าง

การบวกและการลบ

การบวกและการลบทำได้โดยการบวกหรือลบพหุนามสองตัวเข้าด้วยกัน แล้วลดทอนผลลัพธ์ด้วยโมดูลัสของลักษณะเฉพาะ

ในฟิลด์จำกัดที่มีลักษณะเฉพาะเท่ากับ 2 การบวกมอดูล 2 การลบมอดูล 2 และ XOR นั้นเหมือนกัน ดังนั้น

พหุนาม ( x 6 + x 4 + x + 1) + ( x 7 + x 6 + x 3 + x ) = x 7 + x 4 + x 3 + 1
ไบนารี {01010011} + {11001010} = {10011001}
เลขฐานสิบหก {53} + {CA} = {99}

ในการบวกพหุนามแบบปกติ ผลรวมจะมีพจน์ 2 x 6พจน์นี้จะกลายเป็น 0 x 6และจะถูกตัดทิ้งเมื่อลดทอนคำตอบด้วยโมดูลัส 2

ต่อไปนี้เป็นตารางที่แสดงผลรวมพีชคณิตปกติและผลรวมฟิลด์จำกัดลักษณะเฉพาะ 2 ของพหุนามบางส่วน:

หน้า1หน้า2หน้า1 + หน้า2ใต้...
K[ x ]GF(2 n )
x 3 + x + 1 x 3 + x 22 x 3 + x 2 + x + 1 x 2 + x + 1
x 4 + x 2x 6 + x 2x 6 + x 4 + 2 x 2x 6 + x 4
x + 1 x 2 + 1 x 2 + x + 2 x 2 + x
x 3 + xx 2 + 1 x 3 + x 2 + x + 1 x 3 + x 2 + x + 1
x 2 + xx 2 + x2 x 2 + 2 x0

ในการประยุกต์ใช้ในวิทยาศาสตร์คอมพิวเตอร์ การดำเนินการต่างๆ จะง่ายขึ้นสำหรับฟิลด์จำกัดที่มีลักษณะเฉพาะเท่ากับ 2 หรือที่เรียกว่าฟิลด์กาโลอิส GF(2 n ) ทำให้ฟิลด์เหล่านี้เป็นที่นิยมอย่างยิ่งสำหรับการประยุกต์ใช้

การคูณ

การคูณในฟิลด์จำกัด คือการคูณแบบมอดู ลั ส ของพหุนามลดรูป ที่ไม่สามารถแยก ตัวประกอบได้ ซึ่งใช้ในการกำหนดฟิลด์จำกัดนั้น (กล่าวคือ เป็นการคูณตามด้วยการหารโดยใช้พหุนามลดรูปเป็นตัวหาร—เศษที่เหลือคือผลคูณ) สามารถใช้สัญลักษณ์ "•" เพื่อแสดงการคูณในฟิลด์จำกัดได้

ฟิลด์จำกัดของ Rijndael (AES)

Rijndael (มาตรฐาน AES) ใช้ฟิลด์จำกัดลักษณะเฉพาะ 2 ที่มี 256 องค์ประกอบ ซึ่งอาจเรียกว่าฟิลด์ Galois GF(2 8 ) ก็ได้ โดยใช้พหุนามลดรูปต่อไปนี้สำหรับการคูณ:

x 8 + x 4 + x 3 + x + 1.

ตัวอย่างเช่น {53} • {CA} = {01} ในฟิลด์ของ Rijndael เนื่องจาก

( x 6 + x 4 + x + 1)( x 7 + x 6 + x 3 + x )
=( x 13 + x 12 + x 9 + x 7 ) + ( x 11 + x 10 + x 7 + x 5 ) + ( x 8 + x 7 + x 4 + x 2 ) + ( x 7 + x 6 + x 3 + x )
=x 13 + x 12 + x 9 + x 11 + x 10 + x 5 + x 8 + x 4 + x 2 + x 6 + x 3 + x
=x 13 + x 12 + x 11 + x 10 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + x 2 + x

และ

x 13 + x 12 + x 11 + x 10 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + x 2 + x mod x 8 + x 4 + x 3 + x 1 + 1
=(11111101111110 สมัย 100011011)
={3F7E mod 11B} = {01}
=1 (ทศนิยม)

สามารถสาธิตข้อหลังได้โดยใช้การหารยาว (แสดงโดยใช้สัญกรณ์เลขฐานสอง เนื่องจากเหมาะสมกับงานนี้ โปรดสังเกตว่า ในตัวอย่างนี้ใช้การดำเนินการ แบบ Exclusive ORไม่ใช่การลบเลขคณิตแบบที่อาจใช้ในการหารยาวระดับประถมศึกษา):

 11111101111110 (ดัดแปลง) 100011011 ^100011011  01110000011110 ^ 100011011  0110110101110 ^100011011  010101110110 ^100011011  00100011010 ^100011011  000000001 

(องค์ประกอบ {53} และ {CA} เป็นตัวผกผันการคูณซึ่งกันและกัน เนื่องจากผลคูณของทั้งสองคือ1 )

การคูณในฟิลด์จำกัดเฉพาะนี้สามารถทำได้โดยใช้ " อัลกอริทึมของชาวนา " เวอร์ชันดัดแปลง แต่ละพหุนามจะถูกแทนด้วยสัญลักษณ์เลขฐานสองแบบเดียวกับข้างต้น แปดบิตก็เพียงพอแล้ว เพราะมีเพียงดีกรี 0 ถึง 7 เท่านั้นที่เป็นไปได้ในแต่ละพหุนาม (ที่ลดรูปแล้ว)

อัลกอริทึมนี้ใช้ตัวแปร สามตัว (ในแง่ของการเขียนโปรแกรมคอมพิวเตอร์) โดยแต่ละตัวเก็บค่าแบบแปดบิต ตัวแปรaและbจะถูกกำหนดค่าเริ่มต้นด้วยตัวคูณ ส่วนตัวแปรpจะสะสมผลคูณและต้องกำหนดค่าเริ่มต้นเป็น 0

ในตอนเริ่มต้นและตอนสิ้นสุดของอัลกอริทึม และในตอนเริ่มต้นและตอนสิ้นสุดของการวนซ้ำแต่ละครั้งเงื่อนไข นี้ จะเป็นจริงเสมอ: a b + pคือผลคูณ ซึ่งเห็นได้ชัดว่าเป็นจริงเมื่ออัลกอริทึมเริ่มต้น เมื่ออัลกอริทึมสิ้นสุดลงaหรือbจะเป็นศูนย์ ดังนั้นpจะมีค่าเป็นผลคูณ

  • เรียกใช้ลูปต่อไปนี้แปดครั้ง (ครั้งละหนึ่งบิต) สามารถหยุดได้เมื่อค่าaหรือbเป็นศูนย์ก่อนการวนซ้ำ:
    1. ถ้าบิตขวาสุดของbถูกตั้งค่าไว้ ให้ทำการดำเนินการ Exclusive OR ระหว่างผลคูณpกับค่าของaนี่คือการบวกพหุนาม
    2. เลื่อน บิต bไปทางขวาหนึ่งบิต โดยทิ้งบิตขวาสุด และกำหนดให้บิตซ้ายสุดมีค่าเป็นศูนย์ การทำเช่นนี้จะหารพหุนามด้วยx โดยทิ้งพจน์x₀
    3. ตรวจสอบว่าบิตซ้ายสุดของค่าaถูกตั้งค่าเป็นหนึ่งหรือไม่ และเรียกค่านี้ว่าcarry
    4. เลื่อน บิตไปทางซ้าย หนึ่งบิต ทิ้งบิตซ้ายสุด และกำหนดให้บิตขวาสุดใหม่เป็นศูนย์ การทำเช่นนี้จะคูณพหุนามด้วยxแต่เรายังต้องคำนึงถึงตัวทดซึ่งแทนสัมประสิทธิ์ของx 7ด้วย
    5. ถ้า ค่า carryเท่ากับหนึ่ง ค่า exclusive or จะเท่ากับเลขฐานสิบหก0x1b(00011011 ในเลขฐานสอง) 0x1bซึ่งสอดคล้องกับพหุนามที่ไม่สามารถแยกตัวประกอบได้ โดยที่พจน์สูงสุดถูกตัดออกไปแล้ว ตามหลักการแล้ว พจน์สูงสุดของพหุนามที่ไม่สามารถแยกตัวประกอบได้และค่า carryจะบวกกันแบบโมดูลัส 2 แล้วได้ 0
  • ตอนนี้ pมีผลิตภัณฑ์แล้ว

อัลกอริทึมนี้สามารถขยายไปสู่การคูณในฟิลด์อื่นๆ ที่มีลักษณะเฉพาะเท่ากับ 2 ได้อย่างง่ายดาย โดยการเปลี่ยนความยาวของa , bและpและค่า0x1bให้เหมาะสม

ตัวผกผันการคูณ

ตัวผกผันการคูณสำหรับองค์ประกอบaของฟิลด์จำกัด สามารถคำนวณได้หลายวิธี:

เทคนิคการใช้งาน

ตารางแบบใช้ตัวสร้าง

ในการพัฒนาอัลกอริธึมสำหรับการคำนวณฟิลด์กาโลอิสบนฟิลด์กาโลอิสขนาดเล็ก วิธีการเพิ่มประสิทธิภาพที่ใช้กันทั่วไปคือการค้นหาตัวสร้างgและใช้เอกลักษณ์:

เพื่อนำการคูณมาใช้เป็นลำดับของการค้นหาในตารางสำหรับฟังก์ชัน log g ( a ) และg yและการดำเนินการบวกจำนวนเต็ม วิธีนี้ใช้ประโยชน์จากคุณสมบัติที่ว่าฟิลด์จำกัดทุกฟิลด์มีตัวสร้าง ในตัวอย่างฟิลด์ Rijndael พหุนามx + 1 (หรือ {03}) เป็นตัวสร้างตัวหนึ่ง เงื่อนไขที่จำเป็นแต่ไม่เพียงพอสำหรับพหุนามที่จะเป็นตัวสร้าง คือ ต้องเป็นพหุนามที่ไม่สามารถแยก ตัวประกอบได้

การใช้งานจะต้องทดสอบกรณีพิเศษที่aหรือbเป็นศูนย์ เนื่องจากผลคูณก็จะเป็นศูนย์เช่นกัน

สามารถใช้กลยุทธ์เดียวกันนี้ในการหาตัวผกผันการคูณด้วยเอกลักษณ์ได้เช่นกัน:

ในที่นี้ลำดับของตัวสร้าง | g | คือจำนวนขององค์ประกอบที่ไม่เป็นศูนย์ของฟิลด์ ในกรณีของ GF(2 8 ) คือ2 8 − 1 = 255นั่นคือ สำหรับตัวอย่างของ Rijndael: ( x + 1) 255 = 1ดังนั้นจึงสามารถดำเนินการได้โดยใช้ตารางค้นหาสองตารางและการลบจำนวนเต็ม การใช้แนวคิดนี้สำหรับการยกกำลังก็ให้ประโยชน์เช่นกัน:

ขั้นตอนนี้ต้องใช้การค้นหาในตารางสองครั้ง การคูณจำนวนเต็ม และการดำเนินการโมดูลัสจำนวนเต็ม และ ต้องทำการ ทดสอบกรณีพิเศษที่a = 0 อีกครั้ง

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

การคูณแบบไม่ทด

สำหรับฟิลด์ไบนารี GF(2 n ) การคูณฟิลด์สามารถดำเนินการได้โดยใช้การคูณแบบไม่มีตัวทด เช่นชุดคำสั่ง CLMULซึ่งเหมาะสำหรับn ≤ 64 การคูณจะใช้การคูณแบบไม่มีตัวทดหนึ่งครั้งเพื่อสร้างผลคูณ (สูงสุด 2 n − 1 บิต) การคูณแบบไม่มีตัวทดอีกครั้งของตัวผกผันที่คำนวณไว้ล่วงหน้าของพหุนามฟิลด์เพื่อสร้างผลหาร = ⌊ผลคูณ / (พหุนามฟิลด์)⌋ การคูณผลหารด้วยพหุนามฟิลด์ จากนั้นทำการ xor: ผลลัพธ์ = ผลคูณ ⊕ ((พหุนามฟิลด์) ⌊ผลคูณ / (พหุนามฟิลด์)⌋) 3 ขั้นตอนสุดท้าย (pclmulqdq, pclmulqdq, xor) ใช้ใน ขั้นตอน การลด Barrettสำหรับการคำนวณ CRC อย่างรวดเร็วโดยใช้ คำสั่ง x86 pclmulqdq [ 8 ]

เลขชี้กำลังประกอบ

เมื่อkเป็นจำนวนประกอบจะมีไอโซมอร์ฟิซึมจากฟิลด์ไบนารี GF(2 k ) ไปยังฟิลด์ส่วนขยายของฟิลด์ย่อยหนึ่งฟิลด์ นั่นคือ GF((2 m ) n ) โดยที่k = m nการใช้ไอโซมอร์ฟิซึมเหล่านี้สามารถลดความซับซ้อนของการพิจารณาทางคณิตศาสตร์ได้ เนื่องจากระดับของส่วนขยายมีขนาดเล็กกว่า โดยมีข้อแลกเปลี่ยนคือองค์ประกอบต่างๆ จะถูกแทนด้วยฟิลด์ย่อยที่ใหญ่กว่า[ 9 ]เพื่อลดจำนวนเกตสำหรับการใช้งานฮาร์ดแวร์ กระบวนการนี้อาจเกี่ยวข้องกับการซ้อนหลายชั้น เช่น การแมปจาก GF(2 8 ) ไปยัง GF(((2 2 ) 2 ) 2 ) [ 10 ]

ตัวอย่างโปรแกรม

ตัวอย่างการเขียนโปรแกรมภาษา C

นี่คือ โค้ดภาษา ซี บางส่วน ที่จะบวกและคูณตัวเลขในฟิลด์จำกัดลักษณะเฉพาะ 2 ที่มีอันดับ 2 8ซึ่งใช้โดยอัลกอริทึม Rijndael หรือ Reed–Solomon โดยใช้อัลกอริทึมการคูณแบบชาวนาของรัสเซีย เป็นต้น :

/* บวกเลขสองจำนวนในฟิลด์จำกัด GF(2^8) */ uint8_t gadd ( uint8_t a , uint8_t b ) { return a ^ b ; }/* คูณจำนวนสองจำนวนในฟิลด์จำกัด GF(2^8) ที่กำหนดโดยความสัมพันธ์พหุนามโมดูลัส x^8 + x^4 + x^3 + x + 1 = 0 * (อีกวิธีหนึ่งคือการคูณแบบไม่มีตัวทดตามด้วยการลดรูปโมดูลัส) */ uint8_t gmul ( uint8_t a , uint8_t b ) { uint8_t p = 0 ; /* ตัวสะสมสำหรับผลคูณของการคูณ */ while ( a != 0 && b != 0 ) { if ( b & 1 ) /* ถ้าพหุนามสำหรับ b มีพจน์คงที่ ให้บวก a ที่สอดคล้องกันกับ p */ p ^= a ; /* การบวกใน GF(2^m) คือการ XOR ของสัมประสิทธิ์พหุนาม */ถ้า( a & 0x80 ) /* GF modulo: ถ้า a มีพจน์ที่ไม่เป็นศูนย์ x^7 จะต้องลดรูปเมื่อกลายเป็น x^8 */ a = ( a << 1 ) ^ 0x11b ; /* ลบ (XOR) พหุนามดั้งเดิม x^8 + x^4 + x^3 + x + 1 (0b1_0001_1011) – คุณสามารถเปลี่ยนได้ แต่ต้องเป็นพหุนามที่ไม่สามารถแยกตัวประกอบได้ */ มิฉะนั้นa <<= 1 ; /* เทียบเท่ากับ a*x */ b >>= 1 ; } return p ; }

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

ตัวอย่างการเขียนโปรแกรมภาษา D

โปรแกรม ภาษา Dนี้จะคูณตัวเลขในฟิลด์จำกัดของ Rijndael และสร้าง ภาพ PGM :

/** คูณจำนวนสองจำนวนในฟิลด์จำกัด GF(2^8) ที่กำหนดโดยพหุนาม x^8 + x^4 + x^3 + x + 1 */ ubyte gMul ( ubyte a , ubyte b ) pure nothrow { ubyte p = 0 ;foreach ( immutable ubyte counter ; 0 .. 8 ) { p ^= -( b & 1 ) &a a ; auto mask = -(( a >> 7 ) & 1 ); // 0b1_0001_1011 คือ x^8 + x^4 + x^3 + x + 1. a = cast ( ubyte )(( a << 1 ) ^ ( 0b1_0001_1011 & mask )); b >>= 1 ; }คืนค่าp ; }void main ( ) { import std.stdio , std.conv ; enum width = ubyte.max + 1 , height = width ;auto f = File ( " rijndael_finite_field_multiplication.pgm" , " wb " ) ; f.writefln ( " P5 \ n%d %d\ n255 " , width , height ) ; foreach ( immutable y ; 0..height ) foreach ( immutable x ; 0..width ) { immutable char c = gMul ( x.to ! ubyte , y.to ! ubyte ) ; f.write ( c ) ; } }

ตัวอย่างนี้ไม่ได้ใช้เงื่อนไขหรือการค้นหาในตารางใดๆ เพื่อหลีกเลี่ยงช่องโหว่ด้านข้าง จึงเหมาะสำหรับการใช้งานในด้านการเข้ารหัสลับ

ดูเพิ่มเติม

แหล่งที่มา

  • ลิดล์, รูดอล์ฟ; Niederreiter, Harald (1983), Finite Fields , แอดดิสัน-เวสลีย์, ISBN 0-201-13519-1(พิมพ์ซ้ำในปี 1984 โดยสำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ISBN) 0-521-30240-4)
  • Mullen, Gary L.; Panario, Daniel (2013), Handbook of Finite Fields , CRC Press, ISBN 978-1-4398-7378-6
  • Hankerson, Darrel; Vanstone, Scott; Menezes, Alfred (2004), คู่มือการเข้ารหัสด้วยเส้นโค้งวงรี , Springer, ISBN 978-0-387-21846-5
  • Gordon, G. (1976). "วิธีการง่ายๆ ในการหาพหุนามขั้นต่ำขององค์ประกอบที่ไม่เป็นศูนย์ใดๆ ของฟิลด์จำกัด" Electronics Letters . 12 (25): 663– 664. Bibcode : 1976ElL....12..663G . doi : 10.1049/el:19760508 .
  • da Rocha, VC; Markarian, G. (2006). "วิธีง่ายๆ ในการหาร่องรอยขององค์ประกอบใดๆ ในฟิลด์จำกัด" Electronics Letters . 42 (7): 423– 325. Bibcode : 2006ElL....42..423D . doi : 10.1049/el:20060473 .
  • เทรนโฮล์ม, แซม. “สนามกาโลอิสของเออี” .
  • Planck, James S. (2007). "ไลบรารีการคำนวณเลขคณิตฟิลด์กาโลอิสแบบเร็วในภาษา C/C++ "
  • Wikiversity: Reed–Solomon สำหรับนักเขียนโปรแกรม – การคำนวณเลขคณิตบนฟิลด์จำกัด
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Finite_field_arithmetic&oldid=1339837800 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ พีชคณิตฟิลด์จำกัด

ในทางคณิตศาสตร์เลขคณิตในฟิลด์จำกัดคือเลขคณิตในฟิลด์จำกัด ( ฟิลด์ที่มีจำนวนสมาชิก จำกัด) ซึ่งตรงข้ามกับเลขคณิตในฟิลด์ที่มีจำนวน สมาชิก อนันต์ เช่น ฟิลด์ของจำนวนตรรกยะ

การแสดงผลพหุนามที่มีประสิทธิภาพ

ฟิลด์จำกัดที่มี สมาชิก p n ตัว จะใช้สัญลักษณ์ GF( p n ) และเรียกอีกอย่างว่า ฟิลด์กาโลอิส อันดับ p n เพื่อเป็นเกียรติแก่ผู้ก่อตั้งทฤษฎีฟิลด์จำกัด เอวาริสต์ กาโลอิส GF( p ) โดยที่ p เป็นจำนวนเฉพาะ คือ วงแหวน ของจำนวนเต็ม มอดู ล p นั่นเอง กล่าวคือ...

พหุนามดั้งเดิม

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

การบวกและการลบ

การบวกและการลบทำได้โดยการบวกหรือลบพหุนามสองตัวเข้าด้วยกัน แล้วลดทอนผลลัพธ์ด้วยโมดูลัสของลักษณะเฉพาะ