Tải bản đầy đủ (.pdf) (58 trang)

Giáo trình mật mã và ứng dụng chương 4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (384.34 KB, 58 trang )

Chơng 4


Hệ mật RSA và vấn đề phân tích thừa số


4.1. Giới thiệu về hệ mật khoá công khai

Trong mô hình mật m cổ điển trớc đây mà hiện nay đang đợc nghiên
cứu Alice (ngời gửi) và Bob (ngời nhận) chọn một cách bí mật khoá K. Sau
đó dùng K để tạo luật m hoá e
k
và luật giải m d
k
. Trong hệ mật này d
k
hoặc
giống nh e
k
hoặc dễ dàng nhận đợc từ nó (ví dụ trong hệ DES quá trình giải
m hoàn toàn tơng tự nh quá trình m nhng thủ tục khoá ngợc lại). Các
hệ mật thuộc loại này đợc gọi là hệ mật khoá bí mật, nếu để lộ e
k
thì làm cho
hệ thống mất an toàn.

Nhợc điểm của hệ mật này là nó yêu cầu phải có thông tin trớc về
khoá K giữa Alice và Bob qua một kênh an toàn trớc khi gửi một bản m bất
kỳ. Trên thực tế điều này rất khó đảm bảo. Chẳng hạn khi Alice và Bob ở cách
xa nhau và họ chỉ có thể liên lạc với nhau bằng th tín điện tử (Email). Trong
tình huống đó Alice và Bob không thể tạo một kênh bảo mật với giá phải


chăng.

ý tởng xây dựng một hệ mật khoá công khai (hay khoá dùng chung) là
tìm một hệ mật không có khả năng tính toán để xác định d
k
khi biết e
k
. Nếu
thực hiện đợc nh vậy thì quy tắc m e
k
có thể đợc công khai bằng cách
công bố nó trong một danh bạ (bởi vậy nên có thuật ngữ hệ mật khoá công
khai). Ưu điểm của hệ mật khoá công khai là ở chỗ Alice (hoặc bất kì một ai)
có thể gửi một bản tin đ m cho Bob (mà không cần thông tin trớc về khoá
mật) bằng cách dùng luật m công khai e
k
. Ngời nhận A sẽ là ngời duy nhất
có thể giải đợc bản m này bằng cách sử dụng luật giải m bí mật d
k
của
mình.

Có thể hình dung hệ mật này tơng tự nh sau. Alice đặt một vật vào
một hộp kim loại và rồi khoá nó lại bằng một khoá số do Bob để lại. Chỉ có
Bob là ngời duy nhất có thể mở đợc hộp vì chỉ có anh ta mới biết tổ hợp m
của khoá số của mình.

ý tởng về một hệ mật khoá công khai đ đựoc Diffie và Hellman đa
ra vào năm 1976. Còn việc hiện thực hoá nó thì do Rivesrt, Shamir và
Adleman đa ra đầu tiên vào năm 1977, họ đ tạo nên hệ mật nổi tiếng RSA

(sẽ đợc nghiên cứu trong chơng này). Kể từ đó một số hệ đợc công bố, độ
mật của chúng dựa trên các bài toán tính toán khác nhau. Sau đây là các hệ
mật khoá công khai quan trọng :

+ Hệ mật RSA:
Độ bảo mật của hệ RSA dựa trên độ khó của việc phân tích ra thừa số
nguyên tố các số nguyên lớn. Hệ này sẽ đợc mô tả trong phần 4.3.

+ Hệ mật xếp ba lô Merkle - Hellman:
Hệ này và các hệ liên quan dựa trên tính khó giải của bài toán tổng các
tập con (bài toán này là bài toán NP đầy đủ là một lớp khá lớn các bài toán
không có thuật giải đợc biết trong thời gian đa thức). Tuy nhiên tất cả các hệ
mật xếp ba lô khác nhau đều đ bị chứng tỏ là không mật (ngoại trừ hệ mật
Chor Rivest sẽ đợc nêu dới đây). Hệ mật này đợc xét ở chơng 5.

+ Hệ mật McEliece:
Hệ này dựa trên lý thuyết m đại số và vẫn còn đợc coi là an toàn. Hệ
mật McEliece dựa trên bài toán giải m cho các m tuyến tính (cũng là một bài
toán NP đầy đủ). Hệ mật McEliece đợc trình bày ở chơng 5.

+ Hệ mật Elgamal:
Hệ mật Elgamal dựa trên tính khó giải của bài toán logarithm rời rạc
trên các trờng hữu hạn (xem trong chơng 5).

+ Hệ mật Chor - Rivest:
Hệ mật Chor - Rivest cũng đợc xem nh một loại hệ mật xếp ba lô.
Tuy nhiên nó vẫn đợc coi là an toàn.

+ Hệ mật trên các đờng cong Elliptic
Các hệ mật này là biến tớng cảu các hệ mật khác (chẳng hạn nh hệ

mật Elgamal) , chúng làm việc trên các đờng cong Elliptic chứ không phải là
trên các trờng hữu hạn. Hệ mật này đảm bảo độ mật với khoá số nhỏ hơn các
hệ mật khoá công khai khác (xem chơng 5).

Một chú ý quan trọng là một hệ mật khoá công khai không bao giờ có
thể đảm bảo đợc độ mật tuyệt đối (an toàn vô điều kiện). Sở dĩ nh vậy vì đối
phơng khi nghiên cứu một bản m y có thể m lần lợt các bản rõ bằng luật
m công khai e
k
cho tới khi anh ta tìm đợc bản rõ duy nhất x đảm bảo y = e
k
(x). Bản rõ này chính là kết quả giải m của y. Bởi vậy ta chỉ nghiên cứu độ
mật về mặt tính toán của các hệ mật này.

Một khái niệm có ích khi nghiên cứu hệ mật khoá công khai là khái
niệm về hàm cửa sập một chiều. Ta định nghĩa khái niệm này một cách không
hình thức.

Hàm m khoá công khai e
k
của Bob phải là một hàm dễ tính toán. Song
việc tìm hàm ngợc (hàm giải m) phải rất khó khăn (đối với bất kỳ ai không
phải là Bob). Đặc tính dễ tính toán nhng khó tính toán hàm ngợc thờng
đợc gọi là đặc tính một chiều. Bởi vậy điều kiện cân thiết là e
k
phải là hàm
một chiều.

Các hàm một chiều đóng vai trò quan trọng trong mật m học: chúng rất
quan trong các hệ mật khoá công khai và trong nhiều lĩnh vực khác. Đáng tiếc

là mặc dù có rts nhiều hàm đợc coi là hàm một chiều nhng cho tới nay vẫn
không tồn tại một hàm nào có thể chứng minh đợc là hàm một chiều.

Sau đây là một ví dụ về một hàm đợc coi là hàm một chiều. Giả sử n là
tích của hai số nguyên tố lớn p và q, giả sử b là một số nguyên dơng. Khi đó
ta xác định ánh xạ f : Z
n
Z
n


f(x) = x
b
mod n

(với b và n đ đợc chọn thích hợp thì đây chính là hàm m RSA, sau này sẽ
còn nói nhiều về nó).

Để xây dựng một hệ mật khoá công khai thì việc tìm đợc một hàm một
chiều vẫn cha đủ. Ta không muốn e
k
là hàm một chiều đối với Bob vì anh ta
phải có khả năng giải m các bản tin nhận đợc một cách hiệu quả. Điều cần
thiết là Bob phải có một cửa sập chứa thông tin bí mật cho phép dễ dàng tìm
hàm ngợc của e
k
. Nh vậy Bob có thể giải m một cách hữu hiệu vì anh ta có
một hiểu biết tuyệt mật nào đó về K. Bởi vậy một hàm đợc gọi là cửa sập một
chiều nếu nó là hàm một chiều và nó trở nên dễ tính ngợc nếu biết một cửa
sập mhất định.


Ta sẽ xét cách tìm một cửa sập đối với hàm f nêu ở trên trong phần 4.3.
Các tìm này sẽ dẫn đến hệ mật RSA.

4.2. một số vấn đề sâu hơn về lý thuyết số

Trớc khi mô tả hệ mật RSA làm việc ra sao cần phải xem xét một số
yếu tố liên quan đến lý thuyết số và số học modulo. Hai kết quả cần biết là
thuật toán Euclide và định lý phần d China.

4.2.1 Thuật toán Euclide

Trong chơng 1 đ xét Z
n
là một vành với số nguyên dơng bất kỳ n. Ta
cũng đ chứng tỏ rằng phần tử b Z
n
có phần tử nghịch đảo (phần tử ngợc
của phép nhân) khi và chỉ khi CLN(b,n) = 1 và các số nguyên dơng nhỏ hơn
n và nguyên tố cùng nhau với n bằng (n).

Tập các thặng d theo modulo n và nguyên tố cùng nhau với n đợc ký
hiệu là Z
n
*
.Không khó khăn có thể thấy rằng Z
n
*
sẽ tạo nên một nhóm Abel
đối với phép nhân. Ta cũng biết rằng, phép nhân theo modulo n là giao hoán và

kết hợp và phần tử đơn vị là 1. Một phần tử bất kỳ trong Z
n
*
đều có nghịch đảo
bội (cũng nằm trong Z
n
*
). Cuối cùng Z
n
*
là đóng đối với phép nhân vì xy là
nguyên tố cùng nhau với n khi x và y nguyên tố cùng nhau với n. (Hy chứng
minh điều này!)

Cho tới bây giờ ta chỉ biết rằng một phần tử b bất kì Z
n
*
đều có nghịch
đảo b
-1
song việc tính nó vẫn cha nói đến. Một thuật toán nh vậy đợc gọi là
thuật toán Euclide mở rộng.

Trớc tiên ta sẽ mô tả thuật toán Euclide, thông thờng thuật toán này
đợc dùng để tính ớc số chung lớn nhất (CLN) của hai số nguyên dơng r
0

và r
1
với r

0
> r
1
.Thuật toán Euclide bao gồm việc thực hiện các phép toán nh
sau:

r
0
= q
1
r
1
+r
2
0 < r
2
< r
1

r
1
= q
2
r
2
+r
3
0 < r
3
< r

2

.
.
r
m -2
= q
m -1
r
m -1
+r
m
0 < r
m -1
< r
m

r
m -1
= q
m
r
m


Khi đó dễ dàng chứng tỏ đợc rằng

CLN(r
0
, r

1
) = CLN(r
1
, r
2
) = . . . CLN(r
m-1
, r
m
) = r
m


Bởi vậy CLN(r
0
, r
1
) = r
m


Vì thuật toán Euclide tính các CLN nên có thể áp dụng nó để xác định
xem liệu một số nguyên dơng b < n có nghịch đảo theo modulo n không bằng
cách bắt đầu với r
0
= n và r
1
= b. Tuy nhiên thuật toán này không cho phép tính
giá trị của phần tử nghịch đảo (nếu nó tồn tại).


Bây giờ giả sử định nghĩa một dy số t
0
, t
1
, ,t
m
theo các công thức
truy toán sau (trong đó các giá trị q
j
đ đợc xác định ở trên)
t
0
= 0
t
1
= 1
t
j
= t
j-2
- q
j-1
t
j-1
mod r
0
nếu j 2

Ta có kết quả quan trọng sau


Định lý 4.1.
Với 0

j

m, ta có r
j


t
j
r
1
(mod r
0
), trong đó các giá trị q
j
và r
j
đợc
xác định theo thuật toán Euclide còn các giá trị t
j
đợc xác định theo công
thức truy toán ở trên.

Chứng minh:
Ta chứng minh bằng cách quy nạp theo j. Định lý hiển nhiên đúng với j
= 0 và j = 1. Giả sử định lý cũng đúng với j = i-1 và j = i-2, trong đó i 2; sau
đây ta sẽ chứng tỏ định lý đúng với j = i. Theo quy nạp ta có


r
i-2
t
i-2
r
1
(mod r
0
)
và r
i-1
t
i-1
r
1
(mod r
0
)
Bây giờ ta tính

r
i
= r
i-2
- q
i-1
r
i-1

t

i-2
r
1
- q
i-1
t
i-1
r
1
(mod r
0
)
(t
i-2
- q
i-1
t
i-1
)r
1
(mod r
0
)
t
i
r
1
(mod r
0
)


Bởi vậy theo quy nạp định lý là đúng.

Hệ quả rút ra trực tiếp từ định lý trên.

Hệ quả 4.2:
Giả sử CLN (r
0
,r
1
) = 1, khi đó t
m
= r
1
-1
mod r
0
.

Hìn 2.1 Thuật toán Euclide mở rộng:



Xét thấy dy các số t
0
, t
1
, . . . , t
m
có thể đợc tính toán trong thuật toán

Euclide đồng thời nh các giá trị q
j
và r
j
. Hình 4.1 trình bày thuật toán Euclide
mở rộng để tính nghịch đảo của b theo modulo n (nếu nó tồn tại). Trong thuật
toán này không phải dùng mảng (array) để ghi các giá trị q
j
, r
j
và t
j
vì chỉ cần
nhớ hai giá trị cuối cùng trong mỗi dy này ở một điểm bất kì trong thuật toán.

Trong bớc 10 của thuật toán ta đ viết biểu thức cho biến temp theo
cách để phép rút gọn theo modulo n đợc thực hiện đối với số dơng. (Trớc
đây đ biết rằng việc rút gọn theo modulo của các số âm sẽ dẫn đến các kết
quả âm ở nhiêù ngôn ngữ máy tính; còn ở đây ta muốn kết thúc với kết quả
dơng). ở bớc 12 luôn có tb r (mod n) (kết quả này đ đợc chứng minh ở
định lý 4.1).

1.

n
0
= n
2. b
0
= b

3. t
0
= 0
4. t = 1
5. q = n
0
/b
0

6. r = n
0
- qìb
0

7. While r > 0 do
8. temp = t
0
-qìt
9. if temp 0 then temp = temp mod n
10. if temp < 0 then temp = n - ((- temp) mod n)
11. t
0
= t
12. t = temp
13. n
0
= b
0

14. b

0
= r
15. q = n
0
/b
0

16. r = n
0
- qìb
0

17. if b
0
1 then b không có nghịch đảo theo
modulo n
else b
-1
= t mod n .



Sau đây là một ví dụ nhỏ để minh hoạ

Ví dụ 4.1.
Giả sử ta cần tính 28
-1
mod 75. Thuật toán Euclide mở rộng thực hiện
nh sau:



75 = 2 ì 28 +29 bớc 6
73 ì 28 mod 75 = 19 bớc 12
28 = 1 ì 19 + 9 bớc 16
3 ì 28 mod 75 = 9 bớc 12
19 = 2 ì 9 + 1 bớc 16
67 ì 28 mod 75 = 1 bớc 12
9 = 9 ì 1 bớc 16


Vì thế 28
-1
mod 75 = 67.


4.2.2. Định lý phần d China
Định lý này thực sự là một phơng pháp giải các hệ phơng trình
đồng d. Giả sử m
1
, . . . , m
r
là các số nguyên tố cùng nhau từng đôi một (tức
CLN(m
i
,m
j
)=1 nếu ji). Giả sử a
1
,. . ., a
r

là các số nguyên xét hệ phơng trình
đồng d sau:

x a
1
(mod m
1
)
x a
2
(mod m
2
)
.
.
x a
r
(mod m
r
)

Định lý phần d China khẳng định rằng hệ này có nghiệm duy nhất
theo modulo M = m
1
ì
ìì
ì
m
2
ì

ìì
ì
. . .
ì
ìì
ì
m
r
. Ta sẽ chứng minh kết quả đó trong phần
này và cũng mô tả một thuật toán hữu hiệu để giải hệ đồng d thức dạng trên.

Để thuận tiện, xét hàm : Z
M
Zm
1
ì . . .ìZm
r
. Hàm này đợc định
nghĩa nh sau:

(x) = (x mod m
1
, . . . , x mod m
r
)

Ví dụ 4.2
Giả sử r = 2, m
1
= 5 và m

2
= 3, bởi vậy M = 15. Khi đó hàm có giá trị
sau

(0) = (0,0) (1) = (1,1) (2) = (2,2)
(3) = (3,0) (4) = (4,1) (5) = (0,2)
(6) = (1,0) (7) = (2,1) (8) = (3,2)
(9) = (4,0) (10) =(0,1) (11) =(1,2)
(12) =(2,0) (13) =(3,1) (14) =(4,2)

Việc chứng minh định lý phần d China tơng đơng với việc chứng
minh rằng hàm là một song ánh. Điều này có thể dễ dàng thấy đợc ở ví dụ
4.2. Trong thực tế có thể đa ra một công thức tờng minh tổng quát cho hàm
ngợc
-1
.

Với 1 i r, định nghĩa:

M
i
= M/m
i


Khi đó, dễ dàng thấy rằng
CLN(M
i
,m
i

) = 1
với 1 i r. Tiếp theo, với 1 i r, định nghĩa
y
i
= M
i
-1
mod m
i

(phần tử nghịch đảo này tồn tại do CLN(M
i
,m
i
) = 1 và có thể tìm đợc bằng
thuật toán Euclide). Cần để ý rằng
M
i
y
i
1 (mod m
i
)
với 1 i r.

Bây giờ ta định nghĩa hàm : Zm
1
ì . . . ì Zm
r
Z

M
nh sau

Ta sẽ chứng tỏ rằng =
-1
, tức là nó cho một công thức tờng minh để giải
hệ đồng d thức ban đầu.

Kí hiệu X = (a
1
, . . . ,a
r
) và cho 1 j r. Xét số hạng a
i
M
i
y
i
trong tổng
trên khi rút gọn theo modulo m
j
. Nếu i = j thì
a
i
M
i
y
i
a
i

(mod m
i
)
(
)
M mod
i
y
i
M
r
1
i
i
a
r
, a
1
a

=
=
vì M
i
y
i
1 (mod m
i
)


Mặt khác, nếu i j thì
a
i
M
i
y
i
0(mod m
j
)
do m
i
M
i
trong trờng hợp này. Bởi vậy chúng ta có


Do điều này đúng đối với mọi j, 1 j r, nên X là nghiệm của hệ phơng trình
đồng d.

Tới lúc này cần phải chứng tỏ rằng nghiệm X là duy nhất theo modulo
M và điều này có thể đợc chứng tỏ bằng cách tính toán đơn giản. là hàm
từ một miền có lực lợng M sang một miền có lực lợng M. Ta vừa mới chứng
tỏ rằng là một toàn ánh. Bởi vậy phải cũng là một đơn ánh (tức là phép
tơng ứng 1 - 1) do miền xác định và miền giá trị có cùng lực lợng. Điều đó
kéo theo là một song ánh và
-1
= p. Cũng cần chú ý là
-1
là một hàm tuyến

tính của các biến a
1
,. . ., a
r
.

Sau đây là một ví dụ lớn hơn để minh hoạ

Ví dụ 4.3
Giả sử r = 3, m
1
= 7, m
2
= 11 và m
3
= 13. Khi đó M = 1001. Ta tính M
1

= 143, M
2
= 91 và M
3
= 77 và sau đó tính y
1
= 5, y
2
= 4 và y
3
= 12. Khi đó hàm


-1
: Z
7
ìZ
11
ìZ
13
Z
1001
có dạng:


-1
(a
1
,a
2
,a
3
) = 715a
1
+364a
2
+ 924a
3
mod 1001
Ví dụ, nếu x 5 (mod 7), x 3 (mod 11) và x 10 (mod 13) thì công thức
trên sẽ cho ta biết rằng
x = 715 ì 5 + 364 ì 3 + 924 ì 10 mod 1001
= 13907 mod 1001

= 894 mod 1001
Điều này có thể kiểm tra đợc bằng cách rút gọn 894 theo modulo 7, 11
và 13.

Để tham khảo sau này, ta sẽ ghi các kết quả ở phần này dới dạng một
định lý
)
ji
ii
m (mod a
)m (mod a X



ji
yM

Định lý 4.3 (Định lý phần d China)
Giả sử m
1
, . . . ,m
r
là các số nguyên dơng nguyên tố cùng nhau từng đôi
một và cho a
1
, . . ., a
r
là các số nguyên. Khi đó, hệ r đồng d thức x

a

i
(mod
m
i
) (1

i

r ) sẽ có một nghiệm duy nhất theo modulo M = m
1
ì
. . .
ì
m
r
đợc
cho theo công thức
trong đó M
i
= M/m
i
và y
i
= M
i
-1
mod m
i
, với 1


i

r.

4.2.3. Các kiến thức cần thiết khác

Sau đây sẽ nhắc tới một kết quả khác trong lý thuyết nhóm sơ cấp: định
lý Lagrange. Định lý này có liên quan đến cách đề cập về hệ mật RSA. Với
một nhóm nhân hữu hạn G, ta định nghĩa cấp của một phần tử g G là số
nguyên dơng m bé nhất sao cho g
m
= 1. Ta có kết quả sau đây (không chứng
minh ).

Định lý 4.4 (Lagrange )
Giả sử G là một nhóm cấp n và g G. Khi đó cấp của g là ớc của n.

Với mục đích đa ra, hệ quả sau rất quan trọng.

Hệ quả 4.5
Nếu b

Z
n
*
thì b

(n)



1 (mod n)

Chứng minh: Z
n
*
là nhóm nhân cấp (n).

Hệ quả 4.6 (Ferma)
Giả sử p là số nguyên tố và b

Z
p
. Khi đó b
p


b (mod p).
Chứng minh:





Cho tới giờ ta đ biết rằng, nếu p là số nguyên tố thì Z
p
*
là một nhóm
cấp p-1 và một phần tử bất kì trong Z
p
*

sẽ có bậc là ớc của p-1. Tuy nhiên,
nếu p là số nguyên tố thì nhóm Z
p
*
là nhóm cyclic: tồn tại một phần tử Z
p
*

M mod yMa x
ii
r
1i
i

=
=
Nếu p là số nguyên tố thì

(n) = p-1. Bởi vậy, với b

0(mod p),
kết quả trên đợc rút ra từ hệ quả 4.5. Với b 0 (mod p), kết quả trên
vẫn đúng do 0
p


0 (mod 0).

có cấp bằng p-1. Ta không chứng minh kết quả quan trọng này nhng sẽ ghi
lại để tham khảo sau này.


Định lý 4.7.
Nếu p là số nguyên tố thì Z
p
*
là nhóm cyclic.

Một phần tử có cấp p-1 đợc gọi là phần tử nguyên thuỷ modulo p.
Xét thấy là phần tử nguyên thuỷ khi và chỉ khi:

{
i
: 0 i p-2} = Z
p
*

Bây giờ giả sử p nguyên tố và - phần tử nguyên thuỷ modulo p. Một phần
tử bất kì Z
p
*
có thể đợc viết nh sau: =
i
, trong đó 0 i p-2 (theo
một cách duy nhất ). Không khó khăn có thể chứng tỏ rằng cấp của =
i
là:

Nh vậy bản thân là phần tử nguyên thuỷ khi và chỉ khi CLN (p-1,i) = 1.
Điều đó dẫn đến là số các phần tử nguyên thuỷ theo modulo p = (p-1).


Ví dụ 4.4:
Giả sử p=13. Bằng cách tính các luỹ thừa liên tiếp của 2 ta có thể thấy
rằng 2 là phần tử nguyên thuỷ theo modulo 13:

2
0
mod 13 =1 2
1
mod 13 =2 2
2
mod 13 =4
2
3
mod 13 =8 2
4
mod 13 =3 2
5
mod 13 =6
2
6
mod 13 =12 2
7
mod 13 =11 2
8
mod 13 =9
2
9
mod 13 =5 2
10
mod 13 =10 2

11
mod 13 =7

Phần tử 2
i
là nguyên thuỷ khi và chỉ khi CLN(i,12) = 1; nghĩa là khi và chỉ
khi i = 1, 5, 7 hoặc 11. Bởi vậy các phần tử nguyên thuỷ theo modulo 13 là 2,
6, 7 và 11.


4.3. hệ mật RSA

Bây giờ chúng ta có thể mô tả hệ mật RSA. Hệ mật này sử dụng các tính
toán trong Z
n
, trong đó n là tích của 2 số nguyên tố phân biệt p và q. Ta nhận
thấy rằng (n) = (p-1)(q-1).
i)1,-UCLN(p
1-p

Mô tả hình thức của hệ mật đợc cho trong hình 4.2 . Ta hy kiểm tra
xem các phép m và giải m có phải là các phép toán nghịch đảo của nhau hay
không. Vì
ab 1 (mod (n))
nên ta có ab = t (n) + 1
với một số nguyên t 1 nào đó. Giả sử x Z
p
*
; khi đó ta có:
(x

b
)
a
x
t

(n)+1
(mod n)
(x

(n)
)
t
x (mod n)
1
t
x (mod n)
x (mod n)

Hình 4.2: Hệ mật RSA


đúng nh mong muốn. Xem nh một bài tập, bạn đọc hy chứng tỏ rằng (x
b
)
a

x (mod n) nếu x Z
n
\ Z

p
*
.

Sau đây là một ví dụ nhỏ (tất nhiên là không mật ) về hệ mật RSA.

Ví dụ 4.5:
Giả sử Bob chọn p = 101 và q = 113. Khi đó n = 11413 và (n) =
100ì112 = 11200. Vì 11200 = 2
6
5
2
7, nên có thể dùng một số nguyên b nh
một số mũ m hoá khi và chỉ khi b không chia hết cho 2, 5 hoặc 7. (Vì thế
trong thực tế Bob sẽ không phân tích (n), anh ta sẽ kiểm tra điều kiện
CLN((n),b) = 1 bằng thuật toán Euclide. Giả sử Bob chọn b = 3533, khi đó
theo thuật toán Euclide mở rộng:
b
-1
= 6597 mod 11200
Cho n = p.q trong đó p và q là các số nguyên tố. Đặt P = C = Zn
và định nghĩa

K = {(n,p,q,a,b): n = p.q, p,q là các số nguyên tố, ab 1(mod (n))}
Với K = (n,p,q,a,b) ta xác định

e
K
(x) = x
b

mod n
và d
K
(y) = y
a
mod n
(x,y) Z
n
. Các giá trị n và b đợc công khai , các giá trị p,q,a đợc giữ
bí mật.
Bởi vậy số mũ mật để giải m của Bob là a = 6597.

Bob sẽ công bố n = 11413 và b = 3533 trong một danh bạ. Bây giờ, giả
sử Alice muốn gửi bản rõ 9726 tới Bob. Cô ta tính
9726
3533
mod 11413 = 5761
rồi gửi bản m 5761 trên kênh. Khi đó Bob nhận đợc bản m 5761, anh ta sử
dụng số mũ a mật để tính:
5761
6597
mod 11413 = 9762
(cho tới lúc này, các phép m và giải m cho hệ mật đ khá phức tạp, tuy nhiên
ta sẽ thảo luận về các thuật toán hữu hiệu cho các phép toán này ở phần sau).

Độ mật của hệ RSA đợc dựa trên giả thiết là hàm m e
k
(x)= x
b
mod n

là hàm một chiều. Bởi vậy thám m sẽ không có khả năng về mặt tính toán để
giải m một bản m. Cửa sập cho phép Bob giải m đợc chính là thông tin về
phép phân tích thừa số n (n = pq). Vì Bob biết phân tích này, anh ta có thể tính
(n) = (p-1)(q-1) và rồi tính số mũ giải m a bằng cách sử dụng thuật toán
Euclide mở rộng. Sau này chúng ta sẽ còn tiếp tục nói thêm về vấn dề này.


4.4. Thực hiện hệ mật RSA

Có nhiều khía cạnh cần thảo luận về hệ mật RSA bao gồm các chi tiết
về việc thiết lập hệ mật, tính hiệu quả của phép m và giải m và độ mật của
hệ. Để thiết lập hệ thống, Bob sẽ tuân theo các bớc đợc nêu trong hình 4.3.

Hình 4.3 Thiết lập hệ mật RSA

1.

Bob tạo hai số nguyên tố lớn p và q
2. Bob tính n = p.q và (n) = (p-1)(q-1)
3. Bob chọn một số ngẫu nhiên b (0< b < (n)) sao cho
CLN(b,(n)) = 1
4. Bob tính a = b
-1
mod (n) bằng cách dùng thuật toán Euclide
5. Bob công bố n và b trong một danh bạ và chúng làm khoá công
khai.

Việc Bob tiến hành các bớc này nh thế nào sẽ còn đợc tiếp tục thảo luận
trong chơng này.


Cách tấn công dễ thấy nhất hệ mật này là thám m cố gắng phân tích n
ra các thừa số nguyên tố. Nếu thực hiện đợc việc này thì có thể dễ dàng tính
đợc (n) = (p-1)(q-1) rồi tính số mũ a từ b nh Bob làm (ngời ta phỏng đoán
rằng, việc phá hệ mật RSA là tơng đơng đa thức với việc phân tích n, tuy
nhiên điều này vẫn còn cha đợc chứng minh. Hai bài toán đợc gọi là tơng
đơng đa thức nếu tồn tại một thuật toán thời gian đa thức cho bài toán này sẽ
suy ra đợc sự tồn tại một thuật toán thời gian đa thức cho bài toán kia).

Vì thế hệ mật RSA đợc coi là mật thì nhất thiết n = pq phải là một số
đủ lớn để việc phân tích nó không có khả năng về mặt tính toán. Các thuật toán
phân tích hiện thời có khả năng phân tích các số có 130 chữ số thập phân (chi
tiết hơn về bài toán phân tích thừa số nguyên tố xem trong phần 4.8). Vì vậy
để đảm bảo an toàn nên chọn các số p và q chừng 100 chữ số, khi đó n sẽ có
tới 200 chữ số. Một vài áp dụng phần cứng của RSA sử dụng mô đun có độ dài
512 bit. Tuy nhiên một mô đun 512 bit tơng ứng với một số có 154 chữ số
thập phân (vì số các bit trong biểu diễn nhị phân của một số nguyên băng
log
2
10 lần của các chữ số thập phân) vì vậy không đủ đảm bảo an toàn lâu dài.
Bây giờ tạm thời gác lại vấn đề tìm các số nguyên tố có 100 chữ số để xem xét
việc thực hiện các phép toán số học trong m và giải m. Phép m (hoặc giải
m ) sẽ xoay quanh phép lấy luỹ thừa theo modulo n. Vì n là một số rất lớn
nên ta phải sử dụng số học lấy chính xác nhiều lần (multi precision) để thực
hiện các tính toán trong Z
n
và thời gian tính toán cần thiết sẽ phụ thuộc vào số
các bít trong biểu diễn nhị phân của n.

Giả sử n có k bit trong biểu diễn nhị phân, tức là k = log
2

n + 1. Sử
dụng kĩ thuật số học ở bậc trung học, dễ dàng thấy rằng một phép cộng hai số
nguyên k bit có thể thực hiện trong thời gian O(k) và một phép nhân có thể
thực hiện trong thời gian O(k
2
). Cũng vậy, phép rút gọn một số nguyên theo
modulo n (số này có nhiều nhất là 2K bít )có thể thực hiện trong thời gian
O(k
2
) (để thực hiện phép chia và phép tìm phần d). Bây giờ giả sử rằng
x,yZ
n
(ở đây xem rằng 0 x,y n-1). Khi đó có thể tính xy mod n trớc tiên
bằng việc tính tích xy (là một số nguyên 2k bít), rồi rút gọn cho modulo n. Hai
bớc này có thể thực hiện trong thời gian O(k
2
). Ta gọi phép tính này là nhân
modulo.

Bây giờ xét phép lấy luỹ thừa theo modulo (tức là tính hàm dạng x
c
mod
n). Nh nhận xét ở trên, cả hai phép m và giải m trong RSA đều là các phép
luỹ thừa theo modulo. Việc tính x
c
mod n có thể thực hiện bằng c-1 phép nhân
modulo, tuy nhiên khi c lớn thì cách tính này rất cồng kềnh. Chú ý rằng c lớn
cỡ nh (n) -1 (là một số lớn cấp luỹ thừa so với k).

Sử dụng biện pháp "bình phơng và nhân" đ biết sẽ làm giảm số phép

nhân modulo cần thiết, để tính x mod n nhiều nhất là 2l, trong đó l là số các
bit trong biễu diễn nhị phân của c. Vì l k nên có thể coi x
c
mod n đợc thực
hiện trong thời gian O(k
3
). Vì thế các phép m và giải m đợc thực hiện theo
thời gian đa thức (nh một hàm của k là số các bít trong một bản rõ (hoặc bản
m).

Trong thuật toán bình phơng và nhân, ta coi rằng số mũ b đợc biểu
thị ở dạng nhị phân nh sau:


Trong đó b
i
= 0 hoặc 1, 0 i l-1. Thuật toán để tính z = x
b
mod n đợc mô tả
ở hình 4.4.

Hình 2.5 Thuật toán bình phơng và nhân để tính x
b
mod n








Dễ dàng tính đợc số các phép nhân modulo thực hiện bởi thuật toán
trên. Luôn luôn phải thực hiện l phép bình phơng (ở bớc 3). Số phép nhân
trong bớc 4 bằng số các bit "1" trong biểu diễn nhị phân của b (số này thuộc
khoảng từ 0 tới l). Bởi vậy tổng số phép nhân modulo cần thực hiện nằm trong
khoảng từ l tới 2l.

Ta sẽ minh hoạ cách sử dụng thuật toán trên bằng cách quay trở lại ví dụ
4.5.

Ví dụ 4.5 (tiếp):
2
i
-1l
0i
i
2b b

=
=
1.

z = 1
2. for i = l-1 down to 0 do
3. z = z
2
mod n
4. if b
i
= 1 then z = z.x mod n


Ta có n = 11413 và số mũ m hoá công khai b = 3533. Alice sẽ m hoá bản rõ
9726 bằng cách tính 9726
3533
mod 11413 theo thuật toán bình phơng và
nhân nh sau:

i b
i
z
11
10
9
8
7
6
5
4
3
2
1
0

1

1

0

1


1

1

0

0

1

1

0

1

1
2
ì 9726 = 9726
9726
2
ì 9726 = 2659
2659
2
= 5634
5634
2
ì 9726 = 9167
9167

2
ì 9726 = 4958
4958
2
ì 9726 = 7783
7783
2
= 6298
6298
2
= 4629
4629
2
ì 9726 = 10185
10185
2
ì 9726 = 105
105
2
= 11025
11025
2
ì 9726 = 5761


Nh vậy bản m là 5761.

Cần phải nhấn mạnh rằng, những ứng dụng phần cứng hiệu quả nhất
hiện thời của RSA chỉ đạt đợc tốc độ m hoá chừng 600Kb/s (sử dụng các mô
đun 512 bít) so với DES có tốc độ 1 Gb/s. Nói cách khác RSA chậm hơn

khoảng 1500 lần so với DES.

Đến đây, ta chỉ mới xét đợc các phép m hoá và giải m cho RSA. Để
thiết lập hệ mật RSA, ta còn phải xét việc tạo các số nguyên tố p và q (bớc 1),
bớc này sẽ đợc nghiên cứu ở phần sau. Bớc 2 khá đơn giản và đợc thực
hiện trong thời gian O((log n)
2
). Các bớc 3 và 4 xoay quanh thuật toán
Euclide, vì thế sẽ xét qua về độ phức tạp của thuật toán này.

Giả sử ta phải tính CLN của r
0
và r
1
, trong đó r
0
> r
1
. Trong mỗi bớc
lặp đều phải tính thơng và phần d, điều này có thể thực hiện đợc trong thời
gian O((log r
0
)
2
). Nếu tìm đợc giới hạn trên cho số phép lặp thì ta sẽ có đợc
giới hạn cho độ phức tạp của thuật toán. Kết quả này đ đợc nêu trong định lý
Lamé. Định lý khẳng định rằng nếu s là số các phép lặp thì f
3+2
r
0

, trong đó
f
i
là số Fibonacci thứ i . Vì
Nên điều đó kéo theo s là O(log r
0
).

Điều này chứng tỏ rằng thời gian chạy của thuật toán Euclide là O((log
n)
3
) (trên thực tế, bằng các phân tích chi tiết hơn, có thể chứng tỏ rằng thời
gian chạy chỉ là O((log n)
2
).

4.5. Kiểm tra tính nguyên tố xác suất

Để thiết lập hệ mật RSA, ta phải tạo ra các số nguyên tố ngẫu nhiên lớn
(chẳng hạn có 80 chữ số). Trong thực tế, phơng cách thực hiện điều này là:
trớc hết phải tạo ra các số ngẩu nhiên lớn, sau đó kiểm tra tính nguyên thuỷ
của chúng bằng cách dùng thuật toán xác suất Monte- Carlo thời gian đa thức
(chẳng hạn nh thuật toán Miller- Rabin hoặc là thuật toán Solovay- Strasen).
Cả hai thuật toán trên đều đợc trình bày trong phần này. Chúng là các thuật
toán nhanh (tức là một số nguyên n đợc kiểm tra trong thời đa thức theo
log
2
n, là số các bít trong biểu diện nhị phân của n). Tuy nhiên, vẫn có khả
năng là thuật toán cho rằng n là số nguyên tố trong khi thực tế n là hợp số. Bởi
vậy, bằng cách thay đổi thuật toán nhiều lần, có thể giảm xác suất sai số dới

một mức ngỡng cho phép (sau này sẽ thảo luận kỹ hơn một chút về vấn đề
này).

Một vấn đề quan trọng khác: là cần phải kiểm tra bao nhiêu số nguyên
ngẫu nhiên (với kích thớc xác định) cho tới khi tìm đợc một số nguyên tố.
Một kết quả nỗi tiếng trong lý thuyết số (đợc gọi là định lý số nguyên tố)
phát biểu rằng: số các số nguyên tố không lớn hơn N xấp xỉ bằng N/ln N. Bởi
vậy, nếu p đợc chọn ngẫu nhiên thì xác suất p là một số nguyên tố sẽ vào
khoảng 1/ln p. Với một mođun 512 bít, ta có 1/ln p 1/77. Điều này có nghĩa
là tính trung bình, cứ 177 số nguyên ngẫu nhiên p với kích thớc tơng ứng sẽ
có một số là số nguyên tố. Dĩ nhiên, nếu chĩ hạn chế xét các số nguyên lẻ thì
xác suất sẽ tăng gấp đôi tới khoảng 2/177). Bỡi vậy trên thực tế, hoàn toàn có
khả năng tạo đợc các nguyên tố đủ lớn và do đó về mặt thực thể ta có thể thiết
lập đợc một hệ mật RSA. Sau đây sẽ tiếp tục xem xét điều này đợc thực hiện
nh thế nào.

Một bài toán quyết định là một bài toán trong đó một câu hỏi cần đợc
trả lời có hoặc không. Một thuật toán xác suất là một thuật toán bất kỳ có
sử dụng các số ngẫu nhiên (ngợc lại, thuật toán không sử dụng các số ngẫu








+
=
2

5 1
f
i
nhiên sẽ đợc gọi là một thuật toán tất định). Các định nghĩa sau có liên quan
tới các thuật toán xác suất cho các bài toán quyết định.

Định nghĩa 4.1
Thuật toán Monte Carlo định hớng có là một thuật toán xác suất cho
một bài toán quyết định, trong đó câu trả lời có luôn luôn là đúng còn câu
trả lời không có thể là sai. Thuật toán Monte Carlo định hớng không
cũng đợc định nghĩa theo cách tơng tự. Chúng ta nói rằng, một thuật toán
Monte Carlo định hớng có có xác suất sai bằng

nếu với bất kỳ mổt trờng
hợp nào mà câu trả lời là có thì thuật toán có câu trả lời sai không với
xác suất không lớn hơn

(xác suất này đợc tính trên mọi phép chon ngẫu
nhiên, có thể thực hiên bởi thuật toán với một câu vào đ cho).

Bài toán quyết định ở đây là bài toán hợp lệ số mô tả ở hình 4.5.
Cần chú ý rằng một thuật toán quyết định chỉ có câu trả lời có hoặc
không đặc biệt trong bài toán hợp lệ số là ta không yêu cầu thuật toán tính
tích thừa số khi n là hợp lệ số.

Trớc tiên ta sẽ mô tả thuật toán Soloway- Strasson. Đây là một thuật
toán Monte- Carlo định hớng có cho bài toán hợp số có
Trớc tiên ta sẽ mô tả thuật toán Soloway- Strasson. Đây là một thuật toán
Monte-Carlo định hớng có cho bài toán hợp số và xác xuất sai 1/2. Bởi vậy,
nếu thuật toán trả lời có thì n là hợp số; ngợc lại nếu n là hợp số thì thuật

toán trả lời có với xác xuất tối thiểu 1/2.

Hình 4.5. Bài toán hợp số.








Hình 4.6. Bài toán về các thặng d bậc hai.






Đặc trng của bài toán: một số nguyên dơng n 2
Câu hỏi: n có phải là hợp số không ?

Đặc trng của bài toán: cho p là một số nguyên tố lẻ và
một số nguyên x sao cho 0 x p-1
Câu hỏi: x có phải là thặng d bậc hai phép modulo p ?



Mặc dù thuật toán Miller-Rabin (ta sẽ xét sau) nhanh hơn thuật toán
Soloway-Strasson (S-S) nhng ta sẽ xét thuật toán S-S trớc vì nó dễ hiểu hơn
về khái niệm, đồng thời lại liên quan tới một số vấn đề của lý thuyết số (mà ta

sẽ còn dùng trong các chơng trình sau). Ta sẽ xây dựng một số nền tảng sâu
sắc hơn trong lý thuyết số trớc khi mô tả thuật toán.

Định nghĩa 4.2.
Giả sử p là một số nguyên tố lẻ và x là một số nguyên, 1

x

p-1. x
đợc gọi là thặng d bậc hai theo modulo p nếu phơng trình đồng d y
2


x
(modulo p) có một nghiệm y

Z
p
x đợc gọi là thặng d không bậc hai theo
modulo p nếu x ??? 0 (mod p) và x không phải là thặng d bậc hai theo
modulo p.

Ví dụ 4.6.
Các thặng d bậc hai theo modulo 11 là 1,3,4,5 và 9. Cần để ý rằng,
(1)
2
=1, (5)
2
=3, (2)
2

=4, (4)
2
=5, (3)
2
=9 (ở đây tất cả các phép số học đều
thực hiện trong Z
11
).

Bài toán quyết định thặng d bậc hai đợc trình bày trên hình 4.6 sẽ
đợc thấy một cách tơnngf minh nh sau:

Trớc hết, ta sẽ chứng minh một kết quả- tiêu chuẩn Euler tạo nên
thuật toán tất định theo thời gian đa thức cho bài toán về các thặng d bậc hai.

Định lý 4.8. (Tiêu chuẩn Euler)
Giả sử p là một số nguyên tố, khi đó x là một thặng d bậc hai theo
modulo p khi và chỉ khi:
x
(p-1)/2


1 (mod p)

Chứng minh:
Trớc hết giả sử rằng, xy
2
(mod p). Theo hệ quả 4.6, nếu p là số nguyên
tố thì x
p-1

1 (mod p) với mọi x 0 (mod p). Bởi vậy ta có :
x
(p-1)/2
(y
2
)
(p-1)/2
(mod p)
y
p-1
(mod p)
1 (mod p)

Ngợc lại, giả sử rằng x
(p-1)/2
1 (mod p). Cho p là một phần tử nguyên
thuỷ theo modulo p. Khi đó xb
i
(mod p) với giá trị i nào đó. Ta có
x
(p-1)/2
(b
i
)
(p-1)/2
(mod p)
b
i(p-1)/2
(mod p)
Vì b có bậc bằng p-1 nên p-1 phải là ớc của i(p-1)/2. Bởi vậy i là số chẵn và

nh vậy căn bậc hai của x là b
i/2
.

Định lý 4.8 sẽ dẫn tới một thuật toán thời gian đa thức cho các thặng d
bậc hai nhờ sử dụng kỹ thuật bình phơng và nhân cho phép lấy luỹ thừa
theo modulo p. Độ phức tạp của thuật toán khoảng O((log p)
3
).

Sau đây tiếp tục đa ra một số định nghĩa từ lý thuyết số:




Ta đ biết là a
(p-1)/2
1 (mod p) khi và chỉ khi a là một thặng d bậc hai
theo modulo p. Nếu a là bội của p thì rõ ràng a
(p-1)/2
0(mod p). Cuối cùng, nếu
a là một thặng d không bậc hai theo modulo p thì a
(p-1)
-1 (mod p) vì a
p-
1
1(mod p). Bởi vậy, ta có kết quả cho phép xây dựng một thuật toán hữu hiệu
để đánh giá các ký hiệu Legendre nh sau

Định Lý 4.9.



Giả sử p là một số nguyên tố. Khi đó

a
(p-1)/2
(mod p).

Sau đây là một định nghĩa tổng quát hoá cho ký hiệu Legendre.

Định nghĩa 4.4.
Giả sử n là một số nguyên dơng lẻ và phân tích theo các luỹ thừa
nguyên tố của n là p
1
e1
p
K
ek
. Giả sử a

0 là một số nguyên.










p
a







r
a


p modulo theohai bậckhông thặng d là a nếu 1-
p modulo theohai bậc thặng d là a nếu 1
p) (mod 0 a nếu 0

p
a

:sau nh
p
a
Legendre hiệu ký nghĩa dịnhta
, 0a kỳ bất nnguyê số mộtVới lẻ. tố nnguyê số một là p sử Giả
4.3

nghĩa

ịnh

Đ

=













Ký hiệu Jacobi đợc định nghĩa nh sau:






Ví dụ 4.7.

với a bất kì. Mặt khác nếu n là một hợp số thì đồng d thức trên có thể đúng
hoặc không. Nếu phơng trình đó vẫn đúng thì a đợc gọi
là số giả nguyên tố Euler theo cơ số n. Ví dụ: 10 là số giả nguyên tố Euler theo
cơ số 91 vì :




Tuy nhiên có thể chứng tỏ rằng, với một hợp số lẻ n bất kỳ, sẽ có nhiều
nhất một nửa các số nguyên a (sao cho 1 a n-1) là các số giả nguyên tố
Euler cơ số n (xem các bài tập). Điều đó chứng tỏ rằng, việc kiểm tra tính
nguyên tố theo thuật toán Soloway-Strasson đợc nêu ở hình 4.7 là thuật toán
Monte-Carlo định hớng cóvới xác xuất sai tối đa là 1/2.
Đến đây vẫn cha xác định rõ thuật toán ttrên có theo thời gian đa thức hay
không.

Ta đ biết cách đánh giá a
(n-1)/2
(mod n) trong thời gian đa thức
O((log n)
3
), tuy nhiên cần phải làm thế nào để tính các ký hiệu Jacobi một
cách có hiệu quả. Vì ký hiệu Jacobi đợc xác định theo các thừa số trong phân
ei
K
1i
i
p
a
n
a

=









=













n
a

( )( ) ( )( )
)(mod
1111
19
8
7
6
5

3
19
6278
7
6278
5
6278
2
2
2
n
1)/2-(n
2
a
n
a
thi tố nlà nguyê n Nếulẻ. sốmột là 1 nsửGiả
1
3
2

3
6278

9975
6278

:cóta vậyBởi 19. 7 5 3 9975 :là
9975của tố nthừa nguyê luỹ tích Phan.
9975

6278
Jacobi hiệuXét ký







>
=
=

























=

























=






ììì=






91mod101
45
==






9
10
tích của n. Tuy nhiên nếu có thể phân tích đợc n thì ta đ biết nó có phải là số
nguyên tố hay không, bởi vậy cách làm này sẽ dẫn tới một vòng luẩn quẩn.



Hình 4.7. Thuật toán kiểm tra tính nguyên tố Solova-Strassen với số
nguyên lẻ n.


1. Chọn một số nguyên ngẫu nhiên a, 1 a n-1

2. Nếu a
(n-1)/2
(mod n) thì

Trả lời n là số nguyên tố
Nếu không

Trả lời n là một hợp số



Rất may là có thể đánh giá ký hiệu Jacobi mà không cần phải phân tích
n nhờ sử dụng một số kết quả của lý thuyết số, trong đó kết quả quan trọng
nhất là tính chất 4 (tổng quát hoá luật tơng hỗ bậc hai ).
Ta sẽ liệt kê mà không chứng minh các tính chất này.
1. Nếu n là một số nguyên tố lẻ và m
1
m
2
(mod n) thì:


= =


2. Nếu n là một số nguyên lẻ thì
1 nếu n 1 (mod 8)
= -1 nếu n 3 (mod 8)

3. Nếu n là một số nguyên lẻ thì





Đặc biệt nếu m=2
k
t với t là một số lẻ thì:








n
a










n
1
m








n
2
m






n
2














=






n
m
n
m
n
mm
2121




4. Giả sử m và n là các số nguyên lẻ, khi đó:



=





Ví dụ

Để minh hoạ cho việc áp dụng các tính chất trên , ta sẽ đánh

giá kíhiệu Jacobi nh trong bảng dới đây. Cần chú ý là

trong ví dụ này, ta đ sử dụng liên tiếp các tính chất4, 1,3 ,và 2.

Nói chung, bằng cách áp dụng 4 tính chất trên, có thể tính

toánkí hiệu Jacobi trong thời gian đa thức. Các phép tính số

học dùng ở đây chỉ là rút gọn theo modulo và phân tích ra các luỹ thừa của
thuật toán đợc biểu diễn dới dạng nhị phân thì việc phân tích ra các luỹ thừa
của hai số chính là việc xác định số các số 0 tiếp sau. Bởi vậy, độ phức tạp của
thuật toán đợc xác định bởi số các phép rút gọn theo modulo cần tiến hành.
Không khó khăn lắm có thể chứng tỏ rằng, cần thực hiện nhiều nhất là.
























=






n
t
n
2
n
m
k








n
2






















lại còn hợp trờng các trong

m
n

4) (mod 3nm nếu
m
n







9283
7411








n
m










=






7411
9283
9283
7411
theo tính chất 4

=







7411
1872
theo tính chất 1
. =














7411
117
4
7411
2
theo tính chất 3
=







7411
117
theo tính chất 2
=








117
7411
theo tính chất 4
=







177
40
theo tính chất 1
=














117
5
3
117
2
theo tính chất 3




















O(log n) phép rút gọn theo modulo. Mỗi phép có thể thực hiện trong thời gian
O((log n)
2
). Điều đó chứng tỏ rằng, độ phức tạp là O((log n)
3
) là đa thức theo
log n. Thực ra bằng các phân tích chính xác hơn, có thể chứng tỏ răng, độ phức
tạp chỉ cỡ O((log n)
2
).

Giả sử ta đ tạo đợc một số ngẫu nhiên n và đ kiểm tra tính nguyên tố
của nó theo thuật toán Soloway- Strasen. Nếu chạy thuật toán m lần thì câu trả
lời n là một số nguyên tố sẽ có mức độ tin cậy nh thế nào? Quả là liều lĩnh
nếu coi răng, xác suất này là 1-2
-m
. Kết luận này thờng đợc nêu trong các
giáo trình và bài báo kĩ thuật, tuy nhiên ta không thể dẫn ra theo các số liệu
cho trớc.

Cần phải thận trọng hơn khi sự dụng các tính toán xác suất. Ta sẽ định
nghĩa các biến ngẫu nhiên sau:

a- Chỉ sự kiện số nguyên lẻ n có kích thớc đ định là một hợp số.
b- Chỉ sự kiện thuật toán trả lời n là số nguyên tố m lần liên tiếp .

Điều chắc chắn là prob(b| a)2
-m
. Tuy nhiên xác suất mà ta thực sự quan tâm là
prob(a/b), xác suất này thờng không giống nh prob(b/a).

Có thể tính prob(a/b) bằng định lý Bayes (định lý2.1). Trớc hết cần phải biết
prob(a). Giả sử N n 2N. áp dụng định lý về số nguyên tố: các số nguyên
tố(lẻ) giửa N và 2N xấp xỉ bằng:

2N/ln 2N N/ln N N/ ln N
` n/ln n

Vì có N/2 n/2 số nguyên tố lẻ giửa N và 2N, ta sẽ dùng ớc lợng

Prob(a) 1 2/ln n

Sau đó có thể tính toán nh sau:

Chú ý rằng trong tính toán trên chỉ sự kiện số nguyên lẻ ngẫu nhiên n là
một số nguyên tố.

Khá thú vị nếu so sánh hai hàm sau của m

Giả sự n 2
256
e
177
(đây là kích thớc của các số nguyên tố sự dụng
1m
m-
2


2
-

n

ln
2- n ln

2

22)-n a)(ln|prob(b
2)-n a)(ln|prob(b

n ln
2
-a)(1|prob(b
n ln
2
-a)(1|prob(b

)aa)prob(|prob(ba)prob(a)|prob(b
a)prob(a)|prob(b

prob(b)
a)prob(a)|prob(b
b)|prob(a
+

+
=
+



+
=
+

+
=
=
2)2(ln2
)2(ln
ln
2
)
)
n
n
n
m
a

1
2
2
ln
)2(ln
+
+

m
n
n

×