3.3.1. Hàm được sử dụng
Ở đõy chỳng ta xem xột với giỏ trị a và b xem chỳng cú đồng dƣ với nhau qua modulo q hay khụng, với giỏ trị q là một số bớ mật. Để giảm sự tớnh toỏn và trỏch tớnh toỏn trực tiếp với q chỳng ta xem xột một cỏch tiếp cận mới. Giả sử r = 2n + 1 cũng là một số nguyờn tố. Trong đú n đƣợc tạo bởi hai số nguyờn tố p và q: n = pq và β là thành phần của nhúm Gr và bậc của wr(β) = q
Nhƣ vậy chỳng ta cú thể kiểm tra a, b cú đồng dƣ với nhau hay khụng mà khụng cần biết đến giỏ trị bớ mật q mà chỉ cần thụng qua r thụi. Vỡ vậy ta cú thể sử dụng phƣơng trỡnh sau vào sơ đồ chữ kớ số:
Trong đú r = 2n + 1
Và
Trong đú δ là một số nguyờn tố là ƣớc của q-1 và khụng phải là ƣớc của p-1.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Chỳng ta sẽ sử dụng hàm số trờn để sửa đổi phƣơng trỡnh xỏc minh chữ kớ số mới nhƣ sau:
(3.5) Và phƣơng trỡnh
(3.6)
Ở đõy với cỏc khúa cụng khai là (r,β,α) và cỏc khúa bớ mật là (q,δ). Chỳng ta sẽ giả sử độ dài nhỏ nhất của cỏc khúa bớ mật tƣơng ứng là
bit, . Trong sơ đồ chữ kớ số đƣợc mụ tả bằng hai phƣơng trỡnh xỏc minh trờn thỡ giỏ trị g là một số nguyờn tố thuộc nhúm Gδ : g Gδ.
Trong sơ đồ chữ kớ trờn thỡ phƣơng trỡnh xỏc minh (3.5) cú thành phần chữ kớ k và g đƣợc xỏc minh bởi phƣơng trỡnh (3.2), với trƣờng hợp ngoại lệ chỳng ta cú:
Với phƣơng trỡnh xỏc minh (3.6) thỡ thành phần chữ kớ k sẽ đƣợc tớnh theo phƣơng trỡnh sau:
Hai thành phần của chữ kớ sẽ tớnh theo cụng thức (3.4)
Bổ đề 1: Chứng minh sự đỳng đắn của hai phƣơng trỡnh xỏc minh chữ kớ (3.5) và (3.6)
Chứng minh:
Cỏch chứng minh phƣơng trỡnh (3.5) và (3.6) là tƣơng tự nhau. Chỳng ta xem xột trƣờng hợp phƣơng trỡnh xỏc minh chữ kớ (3.6) trƣớc. Với phƣơng trỡnh này cặp chữ kớ số hợp lệ trờn thụng điệp M. Nếu ta tớnh wq(α) =δ, wr(β) =q và mod δ từ phƣơng trỡnh xỏc minh chữ kớ ta cú:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Từ k‟ = k ta thấy phƣơng trinh xỏc minh chữ kớ đó cho kết quả chớnh xỏc. Nhƣ vậy phƣơng trỡnh (3.6) là hoàn toàn đỳng.
Với phƣơng trỡnh xỏc minh chữ kớ (3.5), cặp chữ kớ (k, g) với thụng điệp M kết hợp với phƣơng trỡnh (3.2) chỳng ta cú:
k-g = H
Và
Nhƣ vậy H‟ = H phƣơng trỡnh xỏc minh chữ kớ của sơ đồ (3.5) cũng đỳng.
3.3.3. Thảo luận về độ an toàn sơ đồ chữ kớ số
Với giỏ trị β của sơ đồ chữ kớ số trờn phải đỏp ứng đƣợc những yờu cầu về bảo mật sau: Giỏ trị wn(α) phải đủ lớn, >160 bit. Cỏc cuộc tấn cụng vào sơ đồ (3.5) và sơ đồ (3.6) là nhƣ nhau. Sau đõy ta sẽ xem ba bƣớc tấn cụng vào sơ đồ (3.6):
Bước 1: Tớnh giỏ trị y = αkg (mod n)
Bước 2: Tớnh giỏ trị x = logαy (mod n)
Bước 3: Tớnh giỏ trị δ là ƣớc số của kg-x
Nếu wn(α) > 160 bit (điều kiện này đủ để đảm bảo tớnh bảo mật, từ phƣơng trỡnh sau wn(α) = δ(q-1). Nhƣ vậy việc tớnh toỏn ở bƣớc 2 là khụng khả thi, vỡ với phần từ n khụng thể phõn tớch ra thừa số nguyờn tố của giỏ trị wn(α). Đồng thời chỳng ta cũng sử dụng hai cặp số nguyờn tố mạnh q và p để tạo ra n. Với q là số nguyờn tố mạnh đồng nghĩa với việc q-1 chứa một lƣợng lớn số nguyờn tố là ƣớc số của nú, nhƣ vậy việc giải logarit rời rạc để tỡm x = logαy (mod n) khú cú thể làm đƣợc ngay cả khi chỳng ta biết giỏ trị wn(α).
Ta sẽ xem xột một cuộc tấn cụng khỏc vào sơ đồ chữ kớ trờn là cố gắng tỡm giỏ trị x‟ = logβK (mod p), với K = và tớnh giỏ trị q là ƣớc của giỏ trị
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
(αkg
mod n) – x‟. Sau đú sẽ tỡm khúa bớ mật δ bằng việc tỡm ƣớc của giỏ trị q-1. Do giỏ trị và đủ lớn nờn việc tấn cụng vào sơ đồ trờn là khụng khả thi.
Nhƣ vậy việc tấn cụng vào sơ đồ chữ kớ số mới là khú cú thể xảy ra. Ta sẽ chứng minh cỏc cuộc tấn cụng vào sơ đồ trờn đều dựa trờn độ khú của bài toỏn phõn tớch một số nguyờn lớn ra thừa số nguyờn tố.
Bộ đề 2: Cuộc tấn cụng vào khúa bớ mật δ cũng khú khăn nhƣ việc phõn tớch n
ra thừa số nguyờn tố.
Chứng minh:
Giả sử cú cuộc tấn cụng vào giỏ trị δ. Khi đú ta cú
Thỡ
Vỡ vậy độ khú của việc tấn cụng vào sơ đồ chữ kớ mới chớnh là độ khú của việc phõn tớch n ra cỏc thừa số nguyờn tố.
Ở sơ đồ chữ kớ mới (phần 3.2) thỡ hàm băm đƣợc tớnh toỏn sau khi tớnh đƣợc giỏ trị . Vỡ vậy ngƣời giả mạo chữ kớ phải tớnh giỏ trị U trƣớc khi xỏc định hàm băm (Ở đõy hàm băm đƣợc sử dụng là đạt tiờu chuẩn an toàn, hay FH là hàm một chiều). Vỡ vậy, chỳng ta cú thể ỏp dụng đối số tƣơng tự nhƣ sử dụng trong sơ đồ chữ kớ của phần 2. Việc kẻ giả mạo chữ kớ tỡm ra đƣợc δ thỡ sau đú sẽ tỡm ra đƣợc n. Nhƣ vậy sơ đồ chữ kớ mới đƣợc trỡnh bày bởi cụng thức (3.5) và (3.6) độ an toàn của chỳng dựa trờn độ khú của việc phõn tớch n ra thừa số nguyờn tố.
3.3.4. Đỏnh giỏ về độ an toàn của sơ đồ chữ kớ số mới.
Ở phần này chỳng ta sẽ đỏnh giỏ độ an toàn của sơ đồ chữ kớ số mới đƣợc trỡnh bày ở cụng thức (3.5) và (3.6). Sự phức tạp nhất của thuật toỏn là việc tớnh toỏn giỏ trị δ đƣợc cho bởi hàm . Nhƣ vậy việc xõy dựng „cặp đụi lũy thừa‟ của hàm này dựa trờn việc tớnh toỏn logarit rời rạc là khụng hiệu quả, tƣơng đối mất nhiều thời gian. Sau đõy sẽ trỡnh bày một phƣơng phỏp hiệu quả hơn.
Cỏc bƣớc của thuật toỏn
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Bước 2:For i = 0 to N
Tớnh z‟(i) = , trong đú số nguyờn N =
Bước 3: Sắp xếp cỏc cặp (I, z‟(i)) theo z‟(i) và đặt j = 0
Bước 4: Tớnh z‟‟(j) =
Bước 5: Tỡm z‟(i0) sao cho z‟(i0) = z‟‟(j) For i = 0 to N
If z‟‟(j) = z‟(i) then chuyển sang bƣớc 6 J = j + 1 quay lại bƣớc 4
Bước 6: Tớnh giỏ trị U‟ = i0N + j
và phõn tớch ra thừa số nguyờn tố của U – U‟
Bước 7: Chọn ƣớc số δ sao cho = β
Chứng minh thuật toỏn
Thuật toỏn tớnh giỏ trị U‟ = i0N + j sao cho y = . Thật vậy, giả sử ta cú i0 và j0 sao cho
Do đú U U‟ mod δ => δ
Độ khú của bƣớc 2 bằng phộp toỏn lũy thừa 2N = 2 . Độ khú của bƣớc 3 bằng Nlog2N trờn bit giỏ trị. Độ khú của bƣớc 4 và 5 là lũy thừa dƣơng với phộp so sỏnh toỏn 2-1Nlog2N. Độ khú của bƣớc 1, 6, 7 và độ khú của tất cả phộp so sỏnh là khụng đỏng kể với độ khú của phộp toỏn lũy thừa. Nhƣ vậy tổng tất cả độ khú của thuật toỏn sẽ là W = 3 . Với 160 bit chỳng ta cú W phộp toỏn lũy thừa. Thuật toỏn cần một lƣợng lớn bộ nhớ để lƣu trữ bit số. Nhƣ vậy thuật toỏn tiết kiệm đƣợc thời gian tớnh toỏn nhƣng tốn bộ nhớ lƣu trữ.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Theo thuật toỏn Floyd về yờu cầu lƣu trữ tối thiểu và hiệu quả về thời gian tớnh toỏn ỏp dụng cho {x0, x1, …, xi…, xj…} là một chuỗi 1024 bit thu bởi cụng thức đệ quy sau
xi+1 =
Trong đú xi đƣợc tựy chọn tựy ý. Những dóy ngẫu nhiờn này biểu diễn một phần khụng cú chu kỡ (phần đuụi) theo sau đú bởi phần cú chu kỡ (lặp lại của chu kỡ một số). Độ dài trung bỡnh của phần khụng chu kỡ . Độ dài trung bỡnh của phần chu kỡ là . Theo thuật toỏn Folyd cho phộp tỡm i và j sao cho xi ≠xj và xi+1 = xj+2, khi đú
(xi+1, xj+2) = )
Nhƣ vậy phộp tớnh số mũ và sử dụng rất nhỏ bộ nhớ lƣu trữ. Nhƣ vậy δ là ƣớc số của giỏ trị xi – xj sẽ cú thể dễ dàng tỡm thấy. Do đú số nguyờn tố bớ mật δ cần phải cú độ dài tối thiểu là ≥ 156 160 bit. Nhƣ thế chỳng ta cú độ dài tối thiểu của chữ kớ là 320 bớt cho phƣơng phỏp rỳt gọn chữ kớ số đƣợc cho bởi phƣơng trỡnh (3.5) và (3.6)
3.4. Xõy dựng chƣơng trỡnh demo
3.4.1. Thư viện hàm cỏc phộp tớnh trờn số lớn
Ta xõy dựng lại thƣ viện cỏc hàm và cỏc thủ tục xử lớ tớnh toỏn cộng trừ nhõn chia… cỏc số lớn:
public statuc BigInteger operator + (Biginteger bi1, BigInteger bi2)
Kết quả trả về là tổng của 2 số lớn x, y
public statuc BigInteger operator - (Biginteger bi1, BigInteger bi2)
Kết quả trả về là hiệu của 2 số lớn x, y
public statuc BigInteger operator * (Biginteger bi1, BigInteger bi2)
Kết quả trả về là tớch của 2 số lớn x, y
public statuc BigInteger operator / (Biginteger bi1, BigInteger bi2)
Kết quả trả về là phần nguyờn của phộp chia số lớn x cho y
public statuc BigInteger operator ^(Biginteger bi1, BigInteger bi2)
Kết quả trả về là một số lũy thừa
public BigInteger gcd(Biginteger bi)
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.4.2. Thuật toỏn kiểm tra một số lớn là nguyờn tố
Trong cỏc phƣơng phỏp kiểm tra cỏc số nguyờn dƣơng lẻ là nguyờn tố trƣớc đõy, một cỏch thụng thƣờng là việc kiểm tra xem cỏc số lẻ khụng quỏ căn bậc 2 của số nguyờn ấy cú là ƣớc thực sự của số nguyờn ấy khụng và kết luận về tớnh nguyờn tố của nú. Với cỏc phƣơng phỏp trờn ta cú một khẳng định chớnh xỏc về tớnh nguyờn tố nhƣng tốc độ kiểm tra khụng thể ỏp dụng với những số nguyờn lớn. Việc kiểm tra tớnh nguyờn tố của cỏc số nguyờn lớn tới cỡ vài trăm chữ số thỡ ta khụng thể ấp trờn đƣợc, đũi hỏi phải cú những phƣơng phỏp. Dƣới đõy là một phƣơng phỏp mới cú thể ỏp dụng cho việc kiểm tra tớnh nguyờn tố trờn cỏc số nguyờn lớn. Áp dụng cỏc phƣơng phỏp
Kiểm tra Miller – Rabin là một thuật toỏn xỏc suất để kiểm tra tớnh nguyờn tố cũng nhƣ cỏc thuật toỏn kiểm tra tớnh nguyờn tố: Kiểm tra Fermat và Kiểm tra Solovay – Strassen. Nú đƣợc đề xuất đầu tiờn bởi Gary L. Miller nhƣ một thuật toỏn tất định, dựa trờn giả thiết Riemann tổng quỏt; Micheal O. Rabin đó sửa chữa nú thành một thuật toỏn xỏc suất.
3.4.3. Thuật toỏn Gordon sinh số nguyờn tố mạnh
Số nguyờn tố mạnh thƣờng dựng trong việc sinh khúa mó RSA để đảm bảo tớnh an toàn cho hệ mó.
Định nghĩa 4.1
Số p là số nguyờn tố mạnh nếu tồn tại r, s, t thỏa món:
Thứ nhất: p-1 cú ƣớc là số nguyờn tố lớn r
Thứ hai: p+1 cú ƣớc là số nguyờn tố lớn s
Thứ 3:r-1 cú ƣớc là số nguyờn tố lớn t.
Thuật toỏn Gordon gồm cỏc bước sau:
Bước 1: Phỏt sinh 2 số nguyờn tố siờu lớn s, t.
Bước 2: Chọn i* thuộc N* và tỡm r = 2*i*t + 1 với i = i*, i = i*+1… đầu tiờn làm cho r vượt qua Miller_Rabin_Test.
Bước 3: z:=s^(r-1) mod s*r Bước 4: p*:=2*z-1
Bước 5: Chọn k* thuộc N và tỡm p = p* + 2*k*r*s với k = k*, k = k*+1… đầu tiờn làm cho p vượt qua Miller_Rabin_Test.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Bước 6: p là kết quả.
3.4.4. Hàm băm
public byte[] HashByte(byte[] bytes) {
byte[] HashBytes = null;
// Convert the encrypted bytes back to a string (base 16) SHA1CryptoServiceProvider SHS = new
SHA1CryptoServiceProvider SHS(); hashBytes = SHS.ComputeHash(bytes); return hashBytes;
3.4.5. Sơ đồ khối cỏc thủ tục kớ và xỏc nhận chữ kớ
Thủ tục của cỏc sơ đồ chữ kớ số mới là nhƣ nhau, tỏc giả xin đƣa ra thủ tục của phƣơng trỡnh xỏc minh sau:
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
a. Thủ tục sinh khúa
Hỡnh 3.1. Sơ đồ thủ tục tạo một bộ khúa
Temp:=temp+1 r:=temp δ’+1 Output (δ, n) r nguyờn tố r-1 chia hết δ’’ Yes No Temp1:=temp1+1 p:=temp δ’’+1 p nguyờn tố p-1 chia hết δ’ Yes No Tớnh n:=r*p tớnh δ:=δ’* δ’’
Input: 2 số nguyờn tố ngẫu nhiờn δ’, δ’’(80 bit). Temp =0
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
b. Thủ tục kớ
Hỡnh 3.2. Sơ đồ thủ tục kớ Input: Điện văn M;
cỏc khúa bớ mật
Chọn số ngẫu nhiờn U
Tớnh giỏ trị hàm băm của M
Tớnh giỏ trị: g, k theo cụng thức
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/ c. Thủ tục kiểm tra chữ kớ Hỡnh 3.3. Sơ đồ thủ tục xỏc minh một chữ kớ Output: 2 số nguyờn tố ngẫu nhiờn δ’, δ’’ (80 bit). Temp =0 Temp1 =0 cỏc khúa bớ mật
Input: Điện văn, chữ
kớ(M, g, k) Khúa cụng khai cỏc khúa bớ mật Tớnh giỏ trị : Output: (S khụng đỳng là chữ kớ của M) Output: (S đỳng là chữ kớ của M) T = k Yes T F No
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.4.6. Cỏc chức năng chớnh của chương trỡnh ứng dụng
a. Giao diện chớnh của chƣơng trỡnh
Với giao diện dễ sử dụng, đối với cỏc sơ đồ chữ kớ số mới thỡ đều cú chức năng tạo khúa, kớ văn bản và xỏc nhận chữ kớ.
Hỡnh 3.4. Giao diện chớnh của chƣơng trỡnh ứng dụng b. Chức năng tạo bộ khúa
Trƣớc khi tạo khúa, chƣơng trỡnh sẽ tạo một mật khẩu cho ngƣời dựng. Mỗi ngƣời dựng cú một mật khẩu của riờng mỡnh cho từng cặp khúa. Nhƣ thế để khi ngƣời dựng cú bị mất file chứa khúa thỡ cũng khụng bị lộ khúa bớ mật. Tiếp theo đú chƣơng trỡnh sẽ tự động tạo cặp khúa và lƣu vào 2 file khỏc nhau.
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
Hỡnh 3.5. Chức năng tạo bộ khoỏ c. Chức năng kớ văn bản
Đầu tiờn ngƣời dựng phải chọn file cần kớ và phải chọn file privakey của mỡnh. Ở đõy để load đƣợc file privakey ngƣời của mỡnh, ngƣời dựng phải đỏnh đỳng mật khẩu mà mỡnh đó tạo ra privakey. Lỳc đấy chƣơng trỡnh sẽ tạo ra cặp khúa tƣơng ứng và lƣu vào 1 file
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
d. Chức năng xỏc thực chữ kớ
Với thụng tin đầu vào gồm một văn bản đó đƣợc chọn là để xỏc thực chữ kớ. Ngƣời dựng chọn file chứa publickey của ngƣời kớ văn bản. Và cặp khúa tƣơng ứng mà ngƣời kớ gửi sang. Chƣơng trỡnh sẽ tự động kiểm tra xem chữ kớ đấy cú phải của ngƣời đú kớ khụng.
Hỡnh 3.7. Chức năng xỏc thực chữ kớ – kiểm tra chữ kớ là sai
Số húa bởi Trung tõm Học liệu http://www.lrc-tnu.edu.vn/
3.5. Túm tắt chƣơng
Sử dụng một kĩ thuật mới trong phƣơng phỏp rỳt gọn chữ kớ số dựa vào độ khú của bài toỏn phõn tớch một số nguyờn lớn thành thừa số nguyờn tố, ở đõy chỳng ta đó giảm đƣợc độ dài chữ kớ ở mức bảo mật tối thiểu xuống cũn 320 bit (280 phộp tớnh). Để cú đƣợc khả năng nhƣ vậy chỳng ta dó sử dụng số nguyờn tố δ làm thành phần khúa bớ mật và đề xuất phƣơng phỏp rỳt gọn chữ kớ số thụng qua phƣơng trỡnh xỏc minh chữ kớ “ba cấp”. Kết hợp tớnh toỏn bốn nhúm khỏc nhau Gδ, Gq, Gn, và Gr. Trong đú, ở bờn tạo chữ kớ số chỉ tớnh toỏn trờn ba nhúm Gδ, Gq, và Gr. Cũn bờn xỏc nhận chữ kớ số thỡ cỏc phộp tớnh đƣợc thực hiện trong hai nhúm Gn, và Gr. Trong việc thực hiện rỳt gọn chữ kớ số dựa vào phƣơng trỡnh xỏc minh “ba cấp” với cỏc giỏ trị r = 2pq + 1 để sinh ra khúa cụng khai thỡ độ phức tạp hơn trong tiờu chuẩn DSA và trong RSA, tuy nhiờn nú cú thể đơn giản hơn bằng cỏch sử dụng giỏ trị r sao cho r