Hiểu thuật toán của Intel để giảm modulo đa thức một đa thức không thể thay đổi


7

Tôi đang đọc cuốn sách trắng này của Intel về phép nhân không mang theo . Nó mô tả phép nhân của đa thức trongGF(2n). Ở mức độ cao, điều này được thực hiện theo hai bước: (1) phép nhân đa thức trênGF(2)và (2) làm giảm modulo kết quả một đa thức bất khả quy. Chúng tôi sử dụng biểu diễn chuỗi bit "chuẩn" của đa thức, nghĩa làx3+x+1=[1011].

Bài viết đưa ra thuật toán để tính đa thức còn lại ở trang 16 trong Thuật toán 3. Tuy nhiên, tôi gặp khó khăn khi hiểu thuật toán rút gọn ở trang 16-17 (Thuật toán 4). Về cơ bản, tôi nghĩ rằng chúng ta cần Thuật toán 4 cho các trường lớn hơn khi kết quả của chúng tôi hoặc một phần không phù hợp với 128 bit nữa. Họ đưa ra một ví dụ cho phép nhân hai đa thức trongGF(2128).

Trường hợp "hằng số ma thuật" 63, 62 và 57 cho ca phải, và "hằng số ma thuật" 1, 2 và 7 cho ca trái phải đến từ đâu?

Ví dụ: làm thế nào để khái quát hóa thuật toán cho các trường nhỏ hơn, giả sử GF(232)? Các giá trị dịch chuyển tương ứng sau đó sẽ là 15, 14, 9 và 1, 2, 7?

Trong bước 4 cuối cùng, thuật toán sẽ cho bạn biết "XOR [E1:E0], [F1:F0][G1:G0] với nhau và [X3:D]".

Tại sao chúng ta làm việc này? Theo như tôi có thể thấy, kết quả của hoạt động XOR này không được lưu trữ ở bất cứ đâu và cũng không được sử dụng ở bất cứ đâu. Có phải nó được sử dụng để tính toán[H1:H0]?

Câu trả lời:


6

Lĩnh vực Galois GF(2128)có nhiều đại diện "cụ thể" khác nhau. Một đại diện phổ biến là sử dụng đa thức trongGF(2)[x] (tức là với các hệ số trong GF(2)) modulo một số đa thức không thể thay đổi của mức độ 128, Nói x128+x7+x2+x1+x0. Các hằng số ma thuật7,2,1,0đến từ đa thức đặc biệt không thể giảm này. Bạn không thấy0 vì không cần phải thay đổi 0. Tương tự, hằng số ma thuật57,62,63,64 là những bổ sung của các hằng số ở trên đối với 64. Một lần nữa, bạn không cần phải thay đổi64 kể từ khi đăng ký 64bit rộng. Nếu chúng ta đã sử dụng một số đa thức bất khả quy khác, các hằng số sẽ khác.

Về bước 4, [H1:H0] kết quả từ XORing [E1:E0],[F1:F0],[G1:G0],[X3:D]. Điều này thực hiện hoạt động của MODing bởix128+x7+x2+x1+x0. Ý tưởng là modulo đa thức này,x128=x7+x2+x1+0; Ngoài ra đây là XOR. Các triệu hồi khác nhau tương ứng với các đơn thức khác nhau này - xem bạn có thể tìm thấy sự tương ứng không.


4

Để hoàn thiện, tôi sẽ đưa ra câu trả lời của Yuval thêm một chút thông qua một ví dụ về phép nhân của hai đa thức AB trong GF(216). Để cho

A=[0001|1100|1110]=x8+x7+x6+x3+x2+x,
B=[0100|0101|0111]=x10+x6+x4+x2+x+1.
Phép nhân của AB kết thúc GF(2) sau đó
C=[0000|0000|0000|0111|0101|0010|0000|1010].

Sau đó chúng tôi tính toán cho GF(216) đa thức

q+=x32+x21+x19+x18+x16+x10+x6+x4+1.
Bây giờ chúng tôi muốn nhân lên q+ với các bit cao của Cvà giữ 32 bit cao nhất của tính toán này để xử lý sau. Với mục đích này, chúng tôi sử dụng Thuật toán 4 (Bước 1-2). Hãy để chúng tôi biểu thịC bởi [X3:X2:X1:X0], nơi mỗi Xidài 8 bit. Chúng tôi sau đó phải thay đổiX3 với 28, 26, 22, 16, 14, 13 và cuối cùng là 11. Vì vậy, chúng tôi có tổng cộng 7 "biến tạm thời" và chúng tôi XOR chúng với X2. Kết quả này trong1112, đó là những gì chúng tôi muốn.

Đối với phần dưới của sản phẩm của bước tiếp theo, hãy lưu ý rằng chúng tôi nhận được các ca trái từ g, được định nghĩa ở trang 16.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.