Tải bản đầy đủ - 34 (trang)
1 Thám mã và phân tích số nguyên

1 Thám mã và phân tích số nguyên

Tải bản đầy đủ - 34trang

9

• Loại đã được nghiên cứu nhưng chưa bị phá (RSA, IDEA, các hệ mã

sử dụng logarit rời rạc, đường cong elliptic, . . . ).

Có ba cách thông dụng trong việc chuyển hóa văn bản mã thành văn

bản gốc:

• Ăn trộm, hối lộ, hoặc mua (với giá rất cao) để có được chìa khóa;

• Khai thác tính cẩu thả hoặc lỏng lẻo của người dùng khóa (ví dụ : có

người hay dùng tên người thân để làm mật khẩu hoặc chìa khóa);

• Phân tích mã (tức là thám mã).

Bây giờ, ta sẽ thảo luận về một số phương pháp thám mã. Thực tế, thám

mã sẽ phức tạp hơn nếu người ta không biết hệ mật mã đã được sử dụng.

chúng ta giả sử người thám mã đã biết rõ hệ mật mã được sử dụng khi tiến

hành phân tích mã. Mục đích là thiết kế được một hệ mật mã an toàn bảo

mật.

Dưới đây ta sẽ liệt kê các loại tấn công vào hệ mật mã. Mức độ tấn công

sẽ phụ thuộc vào hiểu biết của người thám mã đối với hệ mật mã được sử

dụng :

• Tấn công chỉ biết bản mã (ciphertext-only): người thám mã chỉ có

bản tin mã hóa.

• Tấn công biết bản tin rõ (known plaintext): người thám mã có bản

tin rõ và bản mã.



10

• Tấn công chọn bản tin rõ (chosen plaintext): người thám mã tạm

thời có quyền truy xuất tới bộ mã hóa, do đó người thám mã có khả

năng chọn bản tin rõ và xây dựng bản mã tương ứng.

• Tấn công chọn bản mã (chosen ciphertext): người thám mã tạm thời

có quyền truy xuất tới bộ giải mã, do đó anh ta có khả năng chọn bản

mã và xây dựng lại bản tin rõ tương ứng.



Bây giờ ta sẽ liệt kê các phương pháp thám mã



1. Thám mã tích cực là việc thám mã sau đó tìm cách làm sai lạc các dữ

liệu truyền, nhận hoặc các dữ liệu lưu trữ phục vụ mục đích của người

thám mã.

2. Thám mã thụ động là việc thám mã để có được thông tin về bản tin rõ

phục vụ mục đích của người thám mã.

3. Thám mã affine. Trong mật mã affine, đầu tiên bảng chữ cái của thông

điệp cần mã hóa có kích thước m sẽ được chuyển thành các con số

tự nhiên từ 0, . . . , m − 1. Sau đó dùng một hàm modulo để mã hóa và

chuyển thành bản mã. Hàm mã hóa cho một ký tự như sau:

e(x) = (ax + b) (mod m)

với m là kích thước của bảng chữ cái, a và b là khóa mã. Giá trị a được

chọn sao cho a và m là nguyên tố cùng nhau.

Giả sử Trudy đã lấy được bản mã sau đây:



11

FMXVEDKAPHFERBNDKRXRSREFMORUD

SDKDVSHVUFEDKAPRKDLYEVLRHHRH

Trudy thống kê tần suất xuất hiện của 26 chữ cái như trong bảng sau:

A 2 N 1

B 1 O 1

C 0



P



3



D 6 Q 0

E 5 R 8

F



4



S



3



G 0



T



0



H 5 U 2

I



0 V 4



J



0 W 0



K 5 X 2

L 2 Y 1

M 2



Z



0



Các chữ cái trong bản mã xuất hiện tổng là 57 lần, nhưng phương pháp

này tỏ ra hiệu quả để thám mã affine. Ta thấy tần suất xuất hiện các

chữ cái theo thứ tự là: R là 8, D là 6, E, H, K là 5 và F, S, V là 4. Vì

vậy dự đoán đầu tiên của ta có thể là R là mã của e, D là mã của t.

Theo đó, eK (4) = 17 và eK (19) = 3. Mà ta có eK (x) = ax + b. Để tìm



12

K = (a, b) ta giải hệ phương trình:







4a + b ≡ 17 (mod 26)





19a + b ≡ 3 (mod 26) .

Giải hệ phương trình này ta được a = 6, b = 19. Đây không phải là

khóa vì gcd(a, 26) = 2 > 1. Ta lại tiếp tục phỏng đoán rằng R là mã

của e, E là mã của t. Ta nhận được a = 13, chưa thỏa mãn. Tiếp tục với

H, ta có a = 8. Cuối cùng, với K ta tìm được K = (3, 5). Sử dụng khóa

mã này ta có được bản tin rõ là

algorithmsrequiregeneraldefinitionsofarithmeticprocesses

(algorithms require general definitions of arithmetic processes)



1.2



Phân tích Fermat



Trước khi thảo luận về các thuật toán phân tích số nguyên, ta sẽ giới thiệu

một số quy ước về thuật ngữ và khái niệm cơ sở.

Ta sẽ bắt đầu với các thuật ngữ của sẽ được dùng trong trình bày:



• Kí hiệu O lớn (big O notation). Hàm f (x) là O(g(x)) khi x → ∞ nếu

và chỉ nếu có các số dương c và k sao cho với mọi x > k, ta có

0 < f (n) ≤ cg(n).

Ta xét ví dụ f (x) = 2x2 + x + 1 là O(x2 ) khi x → ∞ với c = 2, k = 0.



13

Kí hiệu O lớn được áp dụng trong thời gian chạy (running time) hoặc

trong yêu cầu lưu trữ (storage requirements) của một thuật toán. Trong

trình bày, để ngắn gọn ta cũng có thể chỉ cần viết O(g(x)), và được giả

thiết là ta xét với x → ∞. Khi ta xét hàm nhiều biến, thì biến mà dần tới

vô hạn sẽ được chỉ ra. Như một phần trong định nghĩa của O(g(x)), tất

cả các sự kiện xảy ra sẽ được xét với x → ∞.

• Phân tích tầm thường (trivial factor). Phân tích tầm thường là phân

tích mà nhân tử là s = 1 hoặc s = N.

• Phân tích không tầm thường (nontrivial factor). Phân tích không tầm

thường là phân tích một số nguyên mà trong phép phân tích có nhân tử

s thỏa mãn 1 < s < N.

• Số nguyên tố (prime number). Một số nguyên dương lớn hơn 1 được

gọi là nguyên tố nếu nó chỉ chia hết cho 1 và chính nó.



Với các khái niệm trên, ta có Định lý cơ bản của số học đó là : Mọi số tự

nhiên lớn hơn 1 có thể viết một cách duy nhất (không kể sự sai khác về thứ

tự các thừa số) thành tích các thừa số nguyên tố.

Luận văn này có mục đích trình bày về thuật toán phân tích số nguyên.

Ta hãy xem xét một lý do dẫn đến việc làm này.

Định lý cơ bản của số học kéo theo nhận xét rằng mọi số nguyên đều

có thể được phân tích thành tích .



14

Xét số

N = 25195908475657893494027183240048398571429282126204

03202777713783604366202070759555626401852588078440

69182906412495150821892985591491761845028084891200

72844992687392807287776735971418347270261896375014

97182469116507761337985909570009733045974880842840

17974291006424586918171951187461215151726546322822

16869987549182422433637259085141865462043576798423

38718477444792073993423658482382428119816381501067

48104516603773060562016196762561338441436038339044

14952634432190114657544454178424020924616515723350

77870774981712577246796292638635637328991215483143

81678998850404453640235273819513786365643912120103

97122822120720357.

Số nguyên này được biết như là RSA-2048. Vào tháng 3/1991, Phòng thí

nghiệm RSA (RSA Laboratories) đã thông báo giải thưởng USD 200.000

cho sự phân tích thành công số nguyên này. Tính đến tháng 11/2004, số

này vẫn chưa được phân tích.

Nếu biết trước hai số nguyên tố lớn thì ta sẽ có một thuật toán nhanh

để nhân chúng với nhau. Tuy nhiên, trong tình huống ngược lại, nếu cho

tích của hai số nguyên tố, rất khó phân tích ngược lại để tìm ra hai số như

vậy. Thuật toán nhanh nhất được biết đến hiện nay có tên gọi Sàng trường



15

số tổng quát (General Number Field Sieve (GNFS)), mà nếu lấy trung bình

thì sẽ cần

S = O exp



64

n

9



1/3



(log n)2/3



bước để phân tích một số nguyên với n chữ số thập phân.

Thời gian chạy thuật toán bị chặn dưới bởi hàm đa thức, và bị chặn trên

bởi hàm mũ theo n. Chính sự khó khăn của việc phân tích các số nguyên

lớn sẽ là cơ sở cho một số thuật toán mật mã hiện đại.

Bây giờ ta sẽ trình bày về phân tích Fermat. Thuật toán này được phát

minh bởi nhà toán học Pierre de Fermat trong những năm 1600 (xem Weisstein E.W. [5]). Để làm phân tích Fermat, ta viết một hợp số N thành hiệu

của hai bình phương,

N = x2 − y2 .

Hiệu này của các bình phương dẫn đến sự phân tích của N

N = (x + y)(x − y).

Giả sử rằng s và t là các nhân tử không tầm thường lẻ của N thỏa mãn

st = N và s ≤ t. Ta tìm x và y sao cho s = (x − y) và t = (x + y). Giải

phương trình này, ta tìm x = (s + t)/2 và y = (t − s)/2. Ở đây, x và y là các

số tự nhiên, do hiệu số giữa hai số lẻ là chẵn, và một số chẵn là bội của 2.

Do s > 1 và t ≥ s, ta tìm x ≥ 1 và y ≥ 0. Trong trường hợp riêng, các số x, y



thỏa mãn s = (x − y) và t = (x + y), vì vậy x = N + y2 , và do đó x ≥ N.

Cũng vậy, x = (s + t)/2 ≤ 2t/2 ≤ N.

Đối với thuật toán này, ta chọn x1 =





N, và xi+1 = xi + 1. Với mỗi i, ta



16

kiểm tra khi nào thì yi =



xi2 − N là một số nguyên và khi nào thì (xi + yi ),



(xi − yi ) là các nhân tử không tầm thường N. Nếu cả hai điều kiện đó xảy

ra, ta có được một phân tích không tầm thường. Nếu không, ta tiếp tục với

i tiếp theo.

Dưới đây là thuật toán.



function fermatFactor(N)

for x from ceil(sqrt(N)) to N

ySquared := x * x - N

if isSquare(ySquared) then

y := sqrt(ySquared)

s := (x - y)

t := (x + y)

if s <> 1 and s <> N then

return s, t

end if

end if

end for

end function



trong đó hàm isSquare(z) đúng nếu z là một số chính phương và sai nếu

ngược lại.



17



1.3



Phân tích Pollard p − 1



Phương pháp phân tích Pollard p − 1 được giới thiệu bởi Pollard J.M. năm

1974 (xem Weisstein E.W. [8]). Nó dựa trên Định lí Fermat nhỏ được phát

biểu như sau:

Định lí 1.3.1 (Định lí Fermat nhỏ). Nếu p là một số nguyên tố, a là một số

tự nhiên và p | a thì a p−1 ≡ 1 (mod p).

Giả sử chúng ta có một số nguyên dương k ≥ 1 và một số nguyên tố

p > 2 sao cho (p − 1) | k!. Bây giờ ta áp dụng Định lí Fermat nhỏ với a = 2,

2 p−1 ≡ 1 (mod p).

Nhưng do (p − 1) | k! nên ta có thể viết k! = (p − 1)q với một số nguyên

dương q nào đó. Ta có

2k! ≡ (2 p−1 )q ≡ 1q ≡ 1 (mod p).

Do vậy p | 2k! − 1. Nếu N là một số nguyên có nhân tử nguyên tố không

tầm thường p, thì p là ước của 2k! − 1 + Nt với mọi số nguyên t. Ta có thể

tính xk ≡ 2k! − 1 (mod N) với k = 1, 2, 3, . . . , và với mỗi xk kiểm tra xem

có tồn tại một số nguyên rk = gcd(xk , N) mà là ước của cả xk và N. Nếu

(p − 1) | k! thì p | xk và do đó rk là một nhân tử không tầm thường của N.

Nếu rk không phải là một nhân tử không tầm thường của N, thì nó là một

nhân tử tầm thường của N, tức là rk = 1 hoặc rk = N. Thuật toán như sau:

• Tính rk = gcd(2k! − 1, N) với k = 1, 2, 3 . . .. Nếu rk ∈

/ {1, N} thì rk là

một nhân tử không tầm thường và ta hoàn thành công việc cần làm.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

1 Thám mã và phân tích số nguyên

Tải bản đầy đủ ngay(34 tr)

×