từ de1(mod((n))). việc tớnh d trực tiếp theo nghịch đảo của e theo modulo n
gặp nhiều khoa khăn. Một cỏch thuận lợi hơn cả để tớnh d, ta sử dụng thuật toỏn Euclide mở rộng. Khi đú de1(mod((n))) đƣợc biến đổi thành dạng
1 . )
(
n X eY . Nhƣ vậy, bài toỏn tỡm d đƣợc thực hiện giỏn tiếp thụng qua tỡm cỏc giỏ trị X,Y thoả món điều kiện (n)Xe.Y 1 và GCD((n),e) = 1 Thuật toỏn Euclide mở rộng dựng để tớnh nghịch đảo của e (ký hiệu e-1) theo mod n đƣợc mụ tả nhƣ sau:
Đầu vào: Hai số nguyờn khụng õm e và f
Đầu ra: Ƣớc số chung lớn nhất GCD (e,f) và d = e-1 mod f
1. (X1,X2,X3) (1,0,f); (Y1,Y2,Y3)(0,1,e)
2. If Y3 = 0 return X3 = GCD(e,f); khụng cú tớnh nghịch đảo của e
3. If Y3 = 1 return X3 = GCD(e,f); Y2= e-1 mod f
4. k=X3/Y3 5. (T1,T2,T3) (X1 - kY1,X2 - kY2,X3 - kY3) 6. (X1,X2,X3)(Y1,Y2,Y3) 7. (Y1,Y2,Y3)(T1,T2,T3) 8. goto 2 Chỳ ý: Khi Y2 < 0 thỡ d (Y2(n))mod(n). Vớ dụ: GCD (e,f) = GCD (550,1769) và tớnh d= 550-1 mod 1769 Vỡ Y2 <0 nờn d(Y2(n))mod(n)(21436469)mo64694353 b. Phƣơng phỏp nhị phõn tớnh số mũ lớn theo modulo n:
Trong hệ mật mó RSA ta thƣờng sử dụng tớnh toỏn dạng ae mod n. Việc tớnh toỏn trực tiếp ae mod n sẽ cho kết quả trung gian rất lớn và khú thực hiện đối với việc tớnh toỏn thụng thƣờng, vớ dụ: tớnh luỹ thừa của một số theo modulo một số lớn nhƣ a8 mod n ta khụng nờn tớnh nhõn 7 lần a và thực hiện
theo modulo một số lớn mà thay vào đú là việc thực hiện rỳt gọn theo modulo 3 số nhỏ hơn và thực hiện nhõn 3 số nhỏ hơn theo cỏch sau:
a8 mod n = ((a2 mod n)2 mod n)2 mod n
Nếu cho a = 49 ta cú: 498 mod 55 = ((492 mod 55)2 mod 55)2 mod 55 (492) mod 55 = 2401 mod 55 = 36
(362) mod 55 = 1269 mod 55 = 31 (312) mod 55 = 961 mod 55 = 26
Việc thực hiện tớnh một số lớn n theo modulo bằng việc phõn tớch số n
thành cỏc số nhỏ và thực hiện tớnh và rỳt gọn theo modulo của cỏc số nhỏ để cú đƣợc kết quả tớnh. Cỏch tớnh này tỏ ra rất hữu hiệu trong tớnh toỏn của cỏc hệ mật sử dụng lý thuyết số.
Vớ dụ: Tỡm kết quả của 4927 mod 55.
Nếu tớnh toỏn trực tiếp thỡ tớnh luỹ thừa của 4927 sau đú lấy mod 55 thỡ: 4927 = 4.318115673964365640352930977077 E+45
Đõy là một kết quả trung gian rất lớn. Để giảm kết quả trung gian lớn ta tớnh nhƣ sau:
Phõn tớch 4927 = 49(16+8+2+1) = 4916498492491 (491) mod 55 = 19
(492) mod 55 = 2401 mod 55=36
(494) mod 55 = 36*36 mod 55 = 1269 mod 55 = 31 (498) mod 55 = 31*31 mod 55 = 961 mod 55 = 26 (4916) mod 55 = 26*26 mod 55 = 676 mod 55 = 16 (491492) mod 55 = 19*36 mod 55= 1764 mod 55 = 4 (491492)498) mod 55 = 4*26 mod 55 = 104 mod 55 = 49 (491492498)4916) mod 55 = 26*26 mod 55 = 676 mod 55 = 16
Để giảm kết quả trung gian lớn cú nhiều phƣơng phỏp khỏc nhau, nhƣng phƣơng phỏp nhị phõn tỏ ra hiệu quả nhất, khi thực hiện tớnh toỏn với số mũ lớn.
Phƣơng phỏp nhị phõn cũn cú tờn goị là phƣơng phỏp bỡnh phƣơng và nhõn dựng để tớnh số nguyờn dƣơng cú số mũ e lớn theo modulo n một cỏch cú hiệu quả. Lỳc này số mũ e đƣợc biểu diễn dƣới dạng nhị phõn nhƣ sau:
E= ek-1ek-2….e1e0 = 1 0 2 k i i i e với ei {0,1}.
Phƣơng phỏp nhị phõn dựng để tớnh C = me (mod n) đƣợc mụ tả theo thuật toỏn nhƣ sau:
Đầu vào: m,e,n.
Đầu ra: C = me (mod n) 1. If ek-1 = 1 thỡ Cm Else C1 2. For I = k-2 tới 0 2a. CC.C(modn) 2b. If ei=1 thỡ CC.m(modn) Return C Vớ dụ: cho e = 250 = (11111010) cú nghĩa là k = 8, ek-1 = e7 = 1. Phƣơng phỏp nhị phõn đƣợc thực hiện nhƣ sau:
L ei Bƣớc 2a Bƣớc 2b 6 1 (m)2 = m2 m2. m = m3 5 1 (m3)2 = m6 m6. m = m7 4 1 (m7)2 = m14 m14. m = m15 3 1 (m15)2 = m30 m30. m = m31 2 0 (m31)2 = m62 m62 1 1 (m62)2 = m124 m124. m = m125 0 0 (m125)2 = m250 m250
c. Thực hiện mó hoỏ bản tin:
(đoàn quõn Việt Nam đi)
DDOANF QUAAN VIEET NAM DDI Chuyển đổi ký tự số thập phõn theo bảng 3.1
Khi đú bản tin M trở thành bản tin m:
0404 1501 1406 0017 2101 0114 0022 0905 0520 0014 0113 0004 0409
Giả sử chọn hai số nguyờn tố p = 59, q = 113, khi đú n = p.q = 59.113 = 6667 và (6667) = 58.112 = 6496. chọn e = 23 và dung thuật toỏn Euclide mở rộng tỡm đƣợc d = 4519. Nhƣ vậy khoỏ cụng khai là (23,6667), khoỏ riờng (4519,6667).
Thực hiện mó hoỏ với khối tin đầu tiờn (m1 = 404) của bản tin ta cú bản tin mó C1:
C1 = 40423 (mod 6667) = 4819.
Tớnh toỏn tƣơng tự cho đến C13 kết quả nhận đƣợc mó C là:
4819 1929 1757 5903 4388 3278 5435 6216 6348 1471 5198 3035 1390
Thực hiện giải mó với khối C1 ta cú m1= 4819 4519 (mod 6667) = 404 Tiếp tục thực hiện tƣơng tự cho đến C13 sẽ nhận đƣợc bản tin m.
d. Phƣơng phỏp tạo số nguyờn tố p và q:
Nhƣ đó trỡnh bày ở trờn, số n đƣợc cụng khai nờn ngƣời săn tin trộm
cú thể sử dụng n để tớnh (n)và từ đú tớnh ra d. Vấn đề đạt ra là phải chọn n Bảng 3.1 chuyển đổi ký tự sang số thập phõn
A B C D E F G H I I K L M
01 02 03 04 05 06 07 08 09 10 11 12 13
N O P Q R S T U V W X Y Z
nhƣ thế nào để hệ mật RSA khụng bị phỏ. Cỏc tớnh toỏn cho việc chọn số n
đƣợc trỡnh bày [22] với kết quả nhƣ sau:
Bảng 3.2 số liệu tớnh toỏn cho việc phỏ khoỏ RSA TT Chiều dài số n (Tớnh theo số thập phõn) Số phộp tớnh thực hiện trong s
Thời gian phỏ khoỏ
1 50 1,4 x 1010 3,9 giờ 2 75 9,0 x 1012 104 ngày 3 100 2,3 x 1015 74 năm 4 200 1,2 x 1023 3,8 x 109 năm 5 300 1,5 x 1029 4,9 x 1015 năm 6 500 1,3 x 1039 4,2 x 1025 năm
Nhƣ vậy, với tốc độ mỏy tớnh hiện nay thỡ việc chọn n khoảng 200 chữ số thập phõn thỡ hệ RSA đƣợc coi là an toàn. Khi đú chọn p và q khoảng
chừng 100 chữ số thập phõn.
Hệ RSA khụng bị phỏ (mất an toàn) khi sử dụng cỏc số nguyờn tố p và q dài 100 số khi đú n cú chiều dài 200 số. Để tạo số nguyờn tố ngóu nhiờn
p và q ngƣời ta sử dụng bộ giả ngóu nhiờn tạo ra cỏc số ngẫu nhiờn, sau đú sử
dụng thuật túan kiểm tra tớnh nguyờn tố của số đƣợc tạo ra từ bộ tạo giả ngẫu nhiờn cho đến khi tỡm đƣợc sụ nguyờn tố. theo [18] thỡ cần phải kiểm tra khoảng ln10100.1/2 = 115 số thỡ mới tỡm ra đƣợc một số nguyờn tố.
Bộ tạo bớt giả ngẫu nhiờn RSA:
Để tạo ra chuổi bớt giả ngẫu nhiờn RSA đƣợc thục hiện theo cỏc bƣớc sau: 1. Tạo ra 2 số nguyờn tố p và q. Thực hiện tớnh n = p.q và
). 1 )( 1 ( ) (
n p q chọn ngẫu nhiờn số nguyờn số e sao cho GCD e,(n)1
2. Chọn ngẫu nhiờn số nguyờn xo (gọi là “mầm”) trong khoảng [1,n-1]. 3. Cho i=1 đến l thực hiện:
3.2 zi bớt cú trọng số nhỏ nhất của xi
4. Đầu ra mỗi chuỗi bớt ngẫu nhiờn cú chiều dài l : z1,z2,….,zl
e. Phƣơng phỏp kiểm tra tớnh nguyờn tố Solova - Strasen:
Để tạo ra khoỏ cho hệ mật RSA thỡ trƣớc hết phải tạo ra cỏc số nguyờn tố ngẫu nhiờn lớn cỡ 100 chữ số. Phƣơng phỏp thực hiện là dựng bộ tạo giả ngẫu nhiờn bất kỳ. sau đú, thực hiện kiểm tra xem số ngẫu nhiờn đƣợc tạo ra cú phải số nguyờn tố hay khụng. Việc kiểm tra tớnh nguyờn tố của số ngẫu nhiờn này đƣợc thực hiện bởi cỏc thuật toỏn Solova - Strasen, Miller - Rabin. Đõy là cỏc thuật toỏn cho phộp kiểm tra xỏc định số đƣợc kiểm tra cú phải là số nguyờn tố hay khụng với xỏc suất sai tƣơng đối nhỏ. Độ phức tạp của hai thuật toỏn này rất lớn. Tuy nhiờn, trờn thực tế thuật toỏn Miller - Rabin thực hiện cho kết quả tốt hơn thuật toỏn Solova - Strassen. Thuật toỏn Solova - Strasen dựng để kiểm tra một số bất kỳ đƣợc tạo từ bộ tạo giả ngẫu nhiờn xem cú phải là số nguyờn tố hay khụng theo cỏch nhƣ sau:
Đầu vào: Số nguyờn lẻ n3và tham số an toàn t1
Đầu ra: Cho trả lời “nlà số nguyờn tố” hoặc “n là hợp số” 1. For i từ 1 đến t do
Chọn số nguyờn ngẫu nhiờn a với 2an2 Tớnh y = a(n-1)/2 mod n If y1vàyn1 return (“n là hợp số”) Tớnh dấu Jacobi s = n a If ys(modn)return (“n là hợp số”) 2. Return (“n là số nguyờn tố”)
Việc kiểm tra một số bất kỳ đƣợc tạo từ bộ tạo giả ngẫu nhiờn theo thuật toỏn Miller – Rabin đƣợc mụ tả nhƣ sau:
Đầu vào: Số nguyờn lẻ n3 và tham số an toàn t1
Đầu ra: Cho trả lời “n là số nguyờn tố” hoặc “n là hợp số”
1. Cho n-1 = 2sr, trong đú r là một số lẻ.
2. For i từ 1 đến n do
2.1. Chọn số ngẫu nhiờn a với 1an1. 2.2 Tớnh y = ar mod n 2.3 If y1vàyn1 do 1 j While js1và yn1do Tớnh 2 y y mod n If y=1 return (“n là hợp số”) 1 j j If yn1 return (“n là hợp số ”) 3. Return (“ n là số nguyờn tố ”) 3.2 Chữ ký số điện tử RSA
3.2.1 Tổng quỏt hoỏ về chữ ký số điện tử RSA
Mật mó khoỏ cụng khai RSA đảm bảo an toàn thụng tin nhờ việc đƣa ra kỹ thuật chữ ký số điện tử (gọi tắt là chữ ký số). Việc sử dụng chữ ký số điện tử cho phộp phỏt hiện và chống việc giả mạo (ngụy tạo) bản tin gửi đi. Do đú đảm bảo đƣợc tớnh trọn vẹn của bản tin khi truyền tin trờn mạng viễn thụng.
Thực chất của chữ ký sụ điện tử RSA là một khối ký tự gắn kốm theo bản tin cần gửi đi. Nhờ cú chữ ký số điện tử, ngƣời nhận sẽ biết và cú thể chứng minh đƣợc bản tin đú do ai gửi đi và anh ta cú thể chắc chắn về tớnh toàn vẹn của bản tin song anh ta khụng thể làm giả đƣợc bản tin bản tin đó ký
bằng chữ ký số điện tử. Với khả năng này, chữ ký số điện tử (khi đƣợc phỏp luật thừa nhận) sẽ là phƣơng tiện hữu hiệu đảm bảo về mặt phỏp lý cho cỏc hợp đồng, cỏc giao dịch trờn mạng. Để tạo ra chữ ký số, bản tin ban đầu đƣợc mó hoỏ bằng khoỏ riờng của ngƣời gửi và ngƣời nhận thu đƣợc bản tin ban đầu bằng cỏch giải mó bản tin đó ký bằng khoỏ cụng khai của ngƣời gửi.
Giả sử A muốn ký bản tin và B muốn cú đƣợc bằng chứng, chứng tỏ bản tin đƣợc ký bởi A. A sẽ thực hiện cỏc bƣớc nhƣ sau:
1. A lấy bản tin m và thực hiện tớnh S = mda (mod na). 2. A gửi bản tin cú chữ ký số điện tử tới B.
Khi nhận đƣợc bản tin và chữ ký số điện tử của A gửi tới, B thực hiện kiểm tra chữ ký số điện tử S trờn bản tin nhƣ sau:
B xỏc định tờn của A trong danh bạ và lấy khoỏ cụng khai của A. B thực hiện tớnh m’ = ea
S (mod na).
Nếu m’ = m thỡ chứng tỏ bản tin m là do A gửi và nội dung của nú khụng bị thay đổi hoặc giả mạo bởi một kẻ khỏc. Bởi vỡ chỉ cú A mới cú khoỏ bớ mật (khoỏ riờng) để tạo ra chữ ký số. Hỡnh 3.6 mụ tả việc tạo ra chữ ký số và kiểm tra chữ ký số.
Để đảm bảo an toàn cho chữ ký số điện tử khi bị tấn cụng, ngƣời ta đó sử dụng sơ đồ tạo chữ ký số và kiểm tra chữ ký số cú sử dụng hàm Hash. Hàm Hash cú tớnh chất là khụng thể thực hiện đƣợc về mặt tớnh toỏn để xỏc định một bản tin thứ hai cú cựng giỏ trị Hash nhƣ của bản tin gốc. Đầu ra của hàm Hash là bản tin túm lƣợc bản tin, đƣợc mó hoỏ bởi khoỏ bớ mật của ngƣời tạo ra chữ ký số điện tử và gắn vào bản tin gốc để truyền đi.
Trong trƣờng hợp này A:
- Sử dụng hàm Hash để tạo ra H(m)
- Mó hoỏ H(m) bằng khoỏ RSA bớ mật để tạo ra khối chữ ký eks(H(m)) - Gửi m, eks(H(m)) cho B
- B khi nhận đƣợc bản tin m’ dựng hàm Hash tạo ra H(m’)
- Sau đú B truy lục khoỏ cụng khai Kp của A, tớnh toỏn điều kiện
(eks(H(m))) và so sỏnh kết qủa với H(m’)
- Nếu chỳng bằng nhau thỡ B chấp nhận bản tin nhƣng vẫn giữ lại nú cung với khối chữ ký, trong trƣờng hợp cần sự phỏn xột để phõn xử tranh chấp về sau. Hỡnh 3.7 mụ tả quỏ trỡnh tạo chữ ký theo nguyờn tắc nờu trờn.
Bản tin Chữ kýsố Bản tin Chữ kýsố Mó hoỏ cụng khai Mó hoỏ cụng khai So sỏnh Đỳng Sai Kp cụng khai của A Ks bớ mật của A
Hỡnh 3.7 Sơ đồ chữ ký số và kiểm tra chữ ký số
3.2.2 Thuật toỏn tạo chữ ký số điện tử RSA
- Thuật toỏn tạo ra chữ ký số điện tử RSA:
Chữ ký số điện tử RSA đƣợc tạo ra bằng việc sử dụng khoỏ riờng K mó hoỏ bản tin m (ký hiệu RSASP1 (K,m)) đƣợc thực hiện nhƣ sau:
Đầu vào: K là khoỏ riờng RSA
m là bản tin viết dƣới dạng số nguyờn tố cú giỏ trị từ 0 đến n-1. Đầu ra: S là chữ ký viết dƣới dạng nguyờn cú giỏ trị từ 0 đến n-1. Lỗi: “Bản tin vƣợt qua giới hạn cho phộp”.
Giả sử: Khoỏ riờng K RSA cú hiệu lực.
Cỏc bƣớc thực hiện:
1. Nếu bản tin m khụng nằm trong giỏ trị từ 0 đến n-1, đầu ra “bản tin vƣợt quỏ giỏ trị cho phộp” và dừng.
2. Chữ ký số s đƣợc tớnh nhƣ sau: Bản tin Chữ ký số Bản tin Chữ ký số Mó hoỏ cụng khai Mó hoỏ cụng khai So sỏnh Đỳng Sai Kp cụng khai của A Ks bớ mật của A
Hỡnh 3.8 Sơ đồ chữ ký số và kiểm tra chữ ký số sử dụng hàmHash
A B
Với khoỏ K là (n,d) thỡ s = md mod n. 3. Đầu ra là s.
- Thuật toỏn kiểm tra chữ ký số điện tử RSA:
Việc kiểm tra chữ ký số điện tử RSA đƣợc tạo ra bằng việc sử dụng khoỏ cụng khai (n,e) để giải mó s (ký hiệu RSAVP1((n,e),s)) đƣợc thực hiện nhƣ sau:
Đầu vào: (n,e) là khoỏ cụng khai RSA
s là chữ ký số điện tử viết dƣới dạng số nguyờn cú giỏ trị từ 0 đến n-1
Đầu ra: m là bản tin viết dƣới dạng số nguyờn cú giỏ trị từ 0 đến n-1. Lỗi: “Chữ ký số điện tử vƣợt quỏ giới hạn cho phộp”
Giả sử: Khoỏ cụng khai (n,e) hiệu lực.
Cỏc bƣớc thực hiện:
1. Nếu chữ ký số điện tử s khụng nằm trong giỏ trị từ 0 đến n-1, đầu ra “Chữ ký số điện tử vƣợt quỏ giới hạn cho phộp” và dừng.
2. Cho m = se mod n. 3. Đầu ra là m.
3.3 Triển khai giải phỏp xỏc thực ngƣời dựng SecurID
Authentication của RSA tại cơ quan xớ nghiệp vừa và nhỏ
3.3.1 Internet và mụ hỡnh thƣơng mại điện tử
Với sự phỏt triển của mạng Internet hiện nay, cỏc doanh nghiệp nhanh chúng nhận thấy lợi ớch của việc sử dụng mạng Internet để mở rộng thờm mạng doanh nghiệp bao gồm cả cỏc đối tỏc là thụng qua Internet cỏc doanh nghiệp cú thể cung cấp cỏc dịch vụ của mỡnh đến với khỏch hàng thụng qua cỏc ứng dụng web.
Tuy nhiờn, với việc mở rộng doanh nghiệp đến nhiều đối tƣợng, doanh nghiệp bắt buộc phải cung cấp dữ liệu thụng tin của mỡnh cho cỏc đối tƣợng
đú. Do vậy, vấn đề đặt ra ở đõy là khả năng đảm bảo an ninh mạng là một trong những yếu tố sống cũn cho một doanh nghiệp khi ỏp dụng mụ hỡnh thƣơng mại điện tử. An ninh mạng bao gồm rất nhiều cỏc khớa cạnh khỏc nhau. Một trong những khớa cạnh đƣợc quan tõm nhất khi xem xột một hệ