Trường hữu hạn

Một phần của tài liệu Nghiên cứu hệ mật đường cong Elliptic và ứng dụng vào chữ ký điện tử trong bảo mật giao dịch thanh toán của Ngân hàng (Trang 35 - 41)

1. Lý thuyết toán học

1.2.Trường hữu hạn

Trường hữu hạn: là khái niệm trừu tượng về hệ thống số có liên quan với nhau (giống như hệ thống số hữu tỷ Q, hệ số thực R, hệ số phức C) và các thuộc tính cơ bản của chúng. Chúng bao gồm tập các phần tử F và 2 toán tử cộng (+) và nhân (.) thoả mãn:

• (F, +) là nhóm abel với phần tử trung hoà 0. • (F\ {0}, .) là nhóm abel với phần tử trung hoà 1.

• Tuân thủ luật: (a+b).c=a.c+b.c với mọi a,b,c thuộc F Nếu tập F là hữu hạn thì trường được gọi là trường hữu hạn.

Các toán tử của trường.

• Phép trừ các phần tử của trường được định nghĩa thông qua phép cộng:cho a, b € F, a-b=a+(-b) trong đó –b là phần tử phủ định của b trong F thoả mãn: b+(-b)=0

• Tương tự, phép chia phần tử của trường được định nghĩa thông qua phép nhân: cho a, b € F, b≠0, a/b=a.b-1 với b-1 là phần tử nghịch đảo của b thoả mãn b.b- 1=1.

Các phép toán và khái niệm liên quan.

Bậc của một trường hữu hạn: là số phần tử của trường. Nếu tồn tại trường hữu hạn F có bậc q nếu và chỉ nếu q là số mũ nguyên tố, tức q=pm với p là số nguyên tố (được gọi là đặc trưng của F, m là số nguyên dương).

Nếu m=1 thì F được gọi là trường nguyên tố.

Nếu m>=2 thì F được gọi là trường mở rộng. Với bất ký số có mũ nguyên tố q nào, về cơ bản chỉ có một trường nguyên tố có bậc q. Một cách hình thức, điều này có nghĩa là bất cứ 2 trường hưu hạn cùng bậc q một cách cấu trúc là khái niệm giống nhau nhưng nhãn được sử dụng để trình bày có thể khác nhau. Chúng ta nói hai trường hữu hạn cú cựng bậc q là đa hình, và đều ký hiệu là Fq.

Trường nguyên tố (Finite fields):

Cho p là số nguyên tố. Các số nguyên modul p, bao gồm tập các số {0,1,2,...,p- 1} với phép cộng và phép nhân được biểu diễn theo modul p, là một trường nguyên tố bậc p. Trường này được ký hiệu là Fp và gọi p là modul của Fp. Với bất kỳ số nguyên a nào,

a mod p =r (r là phần dư thoả mãn 0<=r<=p-1) Toán tử này được gọi là reduction modul p.

Ví dụ: Trường nguyên tố F29={0,1,2,…,28} • Phép cộng: 17+20=8 vì 37 mod 29=8

• Phép trừ: 17-20=26 vì -3 mod 29=26 • Phép nhân: 17.20=21 vì 340 mod 29=21 • Nghịch đảo: 17-1=12 vì 17.12 mod 29=1

Trường nhị phân (Galois fields)

Trường hữu hạn bậc 2m được gọi là trường nhị phân. Theo cách này xây dựng GF(2m) ta dùng đa thức đặc trưng. Ở đây, các phần tử của GF(2m) là các đa thức nhị phân (đa thức có hệ số là phần tử của F2={0,1}) và có bậc ≤ (m-1):

Một đa thức nhị phân bậc bất kỳ được thu nhỏ bởi đa thức thu nhỏ (reduction polynomial f(z)) (giống p trong trường nguyên tố). Phép nhân được biểu diễn theo modul f(z)_ được gọi là reduction modul f(z).

Ví dụ: Trường nhị nhân GF24. Các phần tử của GF24 có 16 đa thức nhị phần có bậc lớn nhất bằng 3:

0z z2 z3 z3+z2

1z z2+1z z3+1z z3+z2+1 zz z2+zz z3+zz z3+z2+z

z+1z z2+z+1z z3+z+1z z3+z2+z+1

Sau đây là ví dụ về cỏc phộp toan trong trường nhị phân GF2m với modul thu nhỏ là f(z)=z4+z+1.

• Phép cộng (z3+z2+1)+(z2+z+1)=z3+z

• Phép trừ: (z3+z2+1)-(z2+z+1)=z3+z (chú ý -1=1 trong F2, vì thế -a=a với mọi a thuộc F2m.)

• Phép nhân: (z3+z2+1)(z2+z+1)=z2+1 Do: (z3+z2+1)(z2+z+1) = z5+z+1

(z5+z+1) mod (z4+z+1) = z2+1

• Nghịch đảo (z3+z2+1)-1=z2 vì (z3+z2+1).z2 mod (z4+z+1)=1.

• Về tính đa hình: với mỗi cách chọn đa thức thu nhỏ f(z) ta sẽ cú cỏc kết quả nhân khác nhau.

Trường mở rộng:

Cách biểu diễn dựa trên đa thức cho trường nhị phân có thể được dùng cho tất cả các trường mở rộng như sau. Cho p là số nguyên tố và m>=2. Fp[z] là ký hiệu cho tập các đa thức biến z với hệ số thuộc Fp. Có f(z) là đa thức thu gọn bậc m thuộc Fp[z]. (adsbygoogle = window.adsbygoogle || []).push({});

Các phân tử của Fp^m là các đa thức trong Fp[z] có bậc <=m-1. Fpm={am-1zm-1+am-2zm-2+…+a2z2+a1z+a0:ai € Fp}.

Phép cộng các phần tử là phép cộng đa thức với các phép toán hệ số được biểu diễn trong trường Fp.Phộp nhõn cỏc phần tử của trường được biểu diễn theo đa thức modul f(z).

Ví dụ: (Trường mở rộng) Cho p=251 và m=5. Đa thức không thể tối giản của F251[z] là f(z)=z5+z4+12z3+9z2+7, được xem như là đa thức rút gọn của F2515, trường hữu hạn bậc F2515. Phần tử của F2515 là đa thức trong F251[z] có bậc lớn nhất là 4.

Các phép toán với a=123z4+76z2+7z+4 và b=196z4+12z3+225z2+76. • Phép cộng: a+b=68z4+12z3+50z2+7z+80.

• Phép nhân : a.b=117z4+151z3+117z2+182z+217. • Nghịch đảo: a-1=109z4+111z3+250z2+98z+85.

Thuật toán :

Phần này tôi trình bày một số thuật toán để biểu diễn các phép toán trên trường nguyên tố.

Bởi vì các trường hữu hạn Fp, và GF(2m) được chọn với p và m rất lớn, nờn cỏc phép tính được thực hiện trên số nguyên lớn.

Cách biểu diễn các số nguyên lớn là mảng các chữ số (w bit), trong đó từ phải qua trái biểu diễn các số w bit có ý nghĩa tăng dần.

Phần tử Fp là các số nguyên thuộc [0, p-1], với m= |log2p| là chiều dài bit của p, và t=m/w là chiều dài của các tử w bit, được biểu diễn như sau:

A[t-1] … A[2] A[1] A[0]

Phép cộng hai số nguyên lớn:

Algorithm 3.1 Phép cộng

INPUT: Hai số nguyên a,b € [0,2Wt).

OUTPUT: (ε, c) với c = a+b mod 2Wt và ε là bit nhớ. 1. (ε,C[0])←A[0]+ B[0].

2. For i from 1 to t −1 do 2.1 (ε,C[i ])←A[i]+ B[i]+ε. 3. Return(ε, c).

Phép trừ hai số nguyên lớn:

Algorithm 3.2 Phép trừ

INPUT: Hai số nguyên a,b € [0,2Wt).

OUTPUT: (ε, c) với c = a−b mod 2Wt and ε bit mượn. 1. (ε,C[0])←A[0]− B[0].

2. For i from 1 to t −1 do 2.1 (ε,C[i ])←A[i]− B[i]−ε. 3. Return (ε, c).

Phép cộng trừ trên trường nguyên tố Fp cũng áp dụng giải thuật trên cùng với việc thêm phép tính modul p. Thuật toán như sau:

Phép cộng trên trường Fp

Algorithm 3.3 Phép cộng trong Fp

INPUT: modul p, hai số nguyên a, b € [0, p−1]. OUTPUT: c = (a+b) mod p.

1. Dùng thuật toán 2. 5 để có (ε, c) với c = a +b mod 2Wt và ε là bit nhớ. 2. If ε = 1, then subtract p from c = (C[t −1], . . .,C[2],C[1],C[0]);

Else if c ≥ p then c←c− p. 3. Return(c).

Phép trừ trên trường Fp

Algorithm 3.4 Phép trừ trong Fp

INPUT: Modul p, and hai số nguyên a, b € [0, p−1]. OUTPUT: c = (a−b) mod p. (adsbygoogle = window.adsbygoogle || []).push({});

1. Dùng thuật toán 2.6 để tính (ε, c) với c = a−b mod 2Wt và ε là mượn. 2. If ε = 1, then add p to c = (C[t −1], . . .,C[2],C[1],C[0]).

3. Return(c).

Phép tính nghịch đảo a-1 của a trong Fp

Thuật toán Euclid mở rộng

Cho A, B là hai số nguyên, D là ước chung lớn nhất của A và B, kí hiệu là: D= GCD (A, B). Khi đó có thể tìm được hai số nguyên X và Y sao cho: D=AX+BY

Cài đặt thuật toán như sau:

Algorithm 3.5 Thuật toán Euclid mở rộng cho số nguyên

INPUT: Hai số nguyên dương a, b với a ≤ b.

1. u←a, v←b.

2. x1←1, y1←0, x2←0, y2←1. 3. While u = 0 do

3.1 q←_v/u_, r←v−qu, x←x2 −qx1, y←y2 −qy1. 3.2 v←u, u←r , x2←x1, x1←x, y2←y1, y1←y. 4. d←v, x←x2, y←y2.

5. Return(d, x, y).

Algorithm 3.6 Nghịch đảo trong Fp dùng thuật toán Euclid mở rộng

INPUT: Số nguyên tố p và a € [1, p−1]. OUTPUT: a−1 mod p.

1. u←a, v←p. 2. x1←1, x2←0. 3. While u = 1 do 3.1 q←_v/u_, r←v−qu, x←x2 −qx1. 3.2 v←u, u←r, x2←x1, x1←x. 4. Return(x1 mod p).

Phép tính modul: Có một số thuật toán được đưa ra để tính c mod p một cách nhanh chóng với p cụ thể.

Theo chuẩn FIPS 186-2 đề xuất 5 số nguyên tố: p192 = 2192 −264−1

p224 = 2224 −296+1

p256 = 2256 −2224+2192 +296 −1 p384 = 2384 −2128−296 +232 −1 p521 = 2521 −1

Trong phạm vi đồ án tôi chọn p=p192 để demo chương trình vì thế tôi chỉ trình bày thuật toán tính c mod p192. Với các số khỏc cú thuật toán tương tự dựa trên cơ chế như sau:

Ví dụ, xét p = p192 = 2192 −264 −1, và cho c là số nguyên thoả mãn 0 ≤ c < p2. Cho

c = c52320 +c42256 +c32192 +c22128 +c1264 +c0 (*) với ci [0∈ ,264 −1]. Chúng ta có thể giảm bậc của 2 trong (*) do:

2256 ≡ 2128 +264 (mod p) 2320 ≡ 2128 +264 +1 (mod p).

Vì vậy:

c ≡ c52128 +c5264 +c5+c42128 +c4264+ c3264 +c3+c22128 +c1264 +c0 (mod p).

Như vậy c modul p có thể được tính bằng cộng 4 số nguyên 192 bits là c52128+c5264+c5, c42128+c4264

, c3264+c3,c22128+c1264+c0, và lặp lại việc trừ p đến tận khi kết quả nhỏ hơn p

Algorithm 3.7 Phép tính modul nhanh cho p192 = 2192 −264 −1

INPUT: Một số nguyên c = (c5, c4, c3, c2, c1, c0) với ci là số 64bits và 0 ≤ c < (p192- )2.

OUTPUT: c mod p192. (adsbygoogle = window.adsbygoogle || []).push({});

1. Xác định số nguyên (biểu diễn bởi 192 bits) s1 = (c2, c1, c0), s2 = (0, c3, c3),

s3 = (c4, c4,0), s4 = (c5, c5, c5). 2. Return(s1 +s2+s3+s4 mod p192).

Một phần của tài liệu Nghiên cứu hệ mật đường cong Elliptic và ứng dụng vào chữ ký điện tử trong bảo mật giao dịch thanh toán của Ngân hàng (Trang 35 - 41)