Tài liệu Kỹ thuật lập trình - Chương 10: Sơ đồ định danh
lượt xem 4
download
Chương 10: Sơ đồ định danh, trong chương này chúng ta sẽ tìm hiểu tổng quan về sơ đồ định danh, sơ đồ định danh trên cơ sỡ mật mã đối xứng, sơ đồ chữ ký và sơ đồ định danh Feige-Fiat-Shamir, Sơ đồ định danh và sơ đồ chữ ký Guillou-Quisquater, Sơ đồ định danh Schnorr, Sơ đồ định danh và chữ ký Okamoto
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Tài liệu Kỹ thuật lập trình - Chương 10: Sơ đồ định danh
- Chương 10 SƠ ĐỒ ĐỊNH DANH 10.1 Tổng quan về sơ đồ định danh Trong thực tế có những trường hợp cần chứng minh bằng phương tiện điện tử danh tính của ai đó. Tức là Alice và Bob liên lạc với nhau, Bob muốn biết người đang liên lạc với mình có chính là Alice hay là không? Alice muốn cho Bob biết chính Alice chứ không phải ai khác, cô ta chứng minh bằng phương tiện điện tử mà không cần đ ưa ra bất c ứ thông tin nào về bản thân Alice. Đó là mục đích của bài toán s ơ đ ồ đ ịnh danh. S ơ đ ồ định danh thường phục vụ cho các loại thẻ thông minh. Ví dụ thẻ rút tiền tự động ATM, thẻ này dùng số định danh PIN với 4 số nhằm để biết ai là chủ thẻ. Vì thế mà khi thiết kế các sơ đồ nên tính đến khối lượng tính toán và bộ nhớ đ ể tương thích với các loại thẻ thông minh. 10.2 Sơ đồ định danh trên cơ sỡ mật mã đối xứng Đây là bài toán đảm bảo được tính chân thực của phiên giao dịch, nó bao gồm là chứng thực được các đối tượng tham gia giao dịch. Kiểm tra tính chân thực của các bên tham gia của phiên giao dịch có thể thực hiện bằng cách sử dụng cơ chế “ hỏi-trả lời”. Cơ chế “hỏi – trả lời” được thực hiện như sau. Các bên liên quan với nhau s ở hửu một khóa mật K. Bây giờ bên Alice và bên Bob muốn liên kết với với nhau. Alice tạo ra số R với chiều dài n bít và gởi R cho Bob. Bob nhận được R và dùng khóa K để mã hóa R thành C=EK(R). Bob cũng tạo ra số ngẫu nhiên R’ dài n bít và gởi (C,R’) cho Alice. Alice cũng mã hóa R của mình, C*=EK(R), nếu như C*=C thì chứng nhận bên Bob. Alice thực hiện mã hóa R’: C’=EK(R’) và gởi C’ cho bên Bob. Bên Bob tương tự cũng mã hóa R’ của mình, C”=EK(R’), bên Bob so sánh nếu như C’=C” thì chứng thực bên Alice. 10.3 Sơ đồ chữ ký và sơ đồ định danh Feige-Fiat-Shamir Sơ đồ do Adi Shamir, Uriel Feige và Amos Fiat tạo ra và đến 09/07/1986 nhóm tác giả được nhận bằng sáng chế của Mỹ. 10.3.1 Sơ đồ đơn giản Feige-Fiat-Shamir Trước khi đưa ra các tham số mật, người có uy tín chọn modulo n, n là tích c ủa hai số nguyên tố lớn. Trong thực tế cần phải chọn n không nhỏ hơn 512 bit và tốt nhất là chọn cở 1024 bít. n là tham số công khai.
- Để tạo ra khóa mở và khóa mật, thì Alice thỏa thuận với người uy tín hay tổ chức chứng nhận (TA) để chọn số v, sao cho v là thặng dư bậc hai theo modulo n. Hay nói cách khác, chọn v sao cho v thỏa mãn phương trình: x 2 ≡ v(mod n) có nghiệm và tồn tại v −1 (mod n) . v là tham số mở của Alice. Sau đó tính giá trị nhỏ nhất s, sao cho s ≡ v −1 (mod n) . Số s là tham số mật của Alice. Sơ đồ định danh đ ược miêu t ả b ằng giao thức sau. Những tham số của Alice được TA và những thông tin riêng tư của Alice (ID) được ký bằng chữ ký của TA(signTA) và thuật toán kiểm tra chữ ký của TA (verifyTA) và đưa ra dấu xác nhận cho Alice: C(Alice)=(ID(Alice),v,signTA(ID,v)). Sơ đồ định danh được miêu tả như sau. 1. Alice chọn số ngẫu nhiên r, nhỏ hơn n. Sau đó cô ta tính x = −r (mod n) và gởi x 2 và dấu xác thực C(Alice) cho Bob. 2. Bob xác minh chữ ký của TA bằng cách kiểm tra điều kiện sau có đúng hay không: verifyTA(ID(Alice),v,signTA(ID,v))=true? 3. Bob gởi cho Alice một bít ngẫu nhiên b. 4. Nếu nhu b=0 thì Alice gởi cho Bob r. Nếu b=1 thì Alice gởi cho Bob y=r*s (mod n). 5. Nếu b=0, Bob kiểm tra đẳng thức: x = −r 2 (mod n) , vì tin tưởng rằng chỉ Alice biết gía trị của s ≡ v (mod n) . Tương tự nếu b=1 thì Bob kiểm tra đẳng thức: x = y 2 * v(mod n) vì chỉ có Alice mới biết giá trị s ≡ v −1 (mod n) . Giao thức trên được Alice và Bob lặp lại t lần, đến khi nào Bob tin t ưởng r ằng người liên hệ với mình chính là Alice. Nếu như Alice không biết s, cô ta có thể lựa chọn số r sao cho có thể lừa được Bob, khi Bob gởi đến bít 0, và cũng có thể l ựa ch ọn r đ ể lừa Bob khi Bob gởi đến bit 1. Xác suất để Alice lừa Bob thành công là ½. Xác suất đ ể cô ta thành công trong t lần là (1 / 2)t . Để giao thức hoạt động, thì Alice không bao giờ sử dụng lại giá trị r, nếu không Bob sẽ tính được gía trị s. Và từ đây sơ đồ hoàn toàn bị phá vỡ. 10.3.2 Sơ đồ nâng cao Feige-Fiat-Shamir Để nâng cao tính an toàn của sơ đồ, giảm sự liên quan giữa Alice và Bob, Feige-Fiat- Shamir đã nâng cấp sơ đồ đơn giản ở trên. Sơ đồ được miêu tả như sau:
- Giống như sơ đồ trước,TA tạo ra số n, là tích của hai số nguyên tố lớn. Để tạo ra khóa mở và khóa mật, Alice thỏa thuận với TA để tạo k giá trị khác nhau: v1 , v2 ,..., vk , ở đây vi là thặng dư bậc hai theo modulo n. Hay nói cách khác vi được chọn sao cho thỏa −1 mãn phương trình: x 2 ≡ vi (mod n) có nghiệm và tồn tại vi (mod n) . Các giá trị v1 , v2 ,..., vk là công khai của Alice. Sau đó tính giá trị nhỏ nhất si thỏa mãn si ≡ vi−1 (mod n) . Dãy giá trị s1 , s2 ,..., sk là khóa mật của Alice. Tương tự những tham số của Alice được TA và những thông tin riêng tư của Alice (ID) được ký bằng chữ ký của TA(sign TA) và thuật toán kiểm tra chữ ký của TA (verifyTA) và đưa ra dấu xác nhận cho Alice: C(Alice)=(ID(Alice), v1 , v2 ,..., vk ,signTA(ID, v1 , v2 ,..., vk )). Giao thức được thực hiện như sau: 1. Alice chọn số ngẫu nhiên r, nhỏ hơn n. Sau đó cô tính x = −r 2 (mod n) và gởi x và dấu xác thực C(Alice) cho Bob. 2. Bob xác minh chữ ký của TA bằng cách kiểm tra điều kiện sau có đúng hay không: verifyTA(ID(Alice), v1 , v2 ,..., vk ,signTA(ID, v1 , v2 ,..., vk ))=true? 3. Bob gởi cho Alice một dãy k bít: b1 , b2 ,..., bk . 4. Alice tính y = r * ( s1 1 * s2 2 * ... * sk k )(mod n) và gởi y cho Bob. b b b 5. Bob kiểm tra x = y * (v1 1 * v2 2 * ... * vk k )(mod n) 2 b b b Alice và Bob lặp lại giao thức trên t lần, đến khi nào Bob tin tưởng được rằng Alice biết dãy số s1 , s2 ,..., sk . Xác suất để Alice không biết day số s1 , s2 ,..., sk mà lừa thành công Bob qua t lần là 1 / 2kt . Tác giả khuyến cáo nên chọn k=5 và t=4. Ví dụ: Nhà tín nhiệm chọn n=35=5*7. Alice thỏa với nhà tín nhiệm để tạo ra 4 giá trị (k=4),v1=4,v2=11,v3=16,v4=29. Các giá trị si tương ứng là {3,4,9,8}. 1. Alice chọn r = 16 , và tính 162 mod 35=11, và gởi 11 cho Bob. 2. Bob gởi cho Alice dãy bít:{1,1,0,1}. 3. Alice tính 16*(31*41*90*81) mod 35 =31 và gởi 31 cho Bob. 4. Bob kiểm tra 312*(41*111*160*291) mod 35 =11.
- Alice và Bob lặp lại giao thức trên t lần, mỗi lần Alice chọn lại giá trị r mới, đến khi Bob tin Alice. Cải tiến sơ đồ Ở sơ đồ trên cần có dấu xác nhận của TA, ở đây ta không dùng dấu xác nhân nũa mà tạo các giá trị v1 , v2 ,..., vk từ chính giá trị đinh danh của Alice (ID), cụ thể thực hiện như sau. Giả sử ID là định danh của Alice: tên, địa chỉ, số chứng minh nhân dân và một số thông tin cá nhân khác. Sử dụng hàm băm H(x) để tính giá trị H(ID,j), ở đây j là số không lớn. Chúng ta tìm các số j sao cho giá trị của H(ID,j) là thặng dư bậc hai của modulo n, tức là tạo ra dãy số v1 , v2 ,..., vk từ H(ID,j). Và Alice gởi ID và j cho Bob trước khi tiến hành bước 1 của giao thức, Bob cũng tự tính ra các số v1 , v2 ,..., vk từ H(ID,j). 10.3.3 Chuyển sơ đồ định danh Feige-Fiat-Shamir thành sơ đồ chữ ký Fiat-Shamir Yêu điểm chính của sơ đồ chữ ký này so với RSA là về tốc độ: đối với Fiat-Shamir sử dụng modulo của phép nhân nhỏ hơn nhiều lần so với RSA. Các biến khởi tạo, giống như trong sơ đồ định danh. Tức là chọn số n là tích của hai số nguyên tố lớn. Tạo ra khóa mở v1 , v2 ,..., vk và tính khóa mật s1 , s2 ,..., sk , ở đây si ≡ vi−1 (mod n) . Sơ đồ chữ ký được miêu tả như sau: 1. Alice chọn t số nguyên trong khoảng từ 1 đến n: r1 , r2 ,..., rt và tính các giá trị x1 , x2 ,..., xt , với xi ≡ ri 2 (mod n) . 2. Alice tính giá trị hàm băm, đối số của nó là liên kết x i và bản tin m, để tạo thành dòng bít: H(m, x1 , x2 ,..., xt ). Alice sử dụng k*t bít đầu tiên của dòng bít này, tạo thành mảng bít bij, i=1,t còn j=1,k. 3. Alice tính các giá trị y1 , y2 ,..., yt , ở đây yi = ri * ( s1 i1 * s2 i 2 * ... * sk ik )(mod n) . b b b 4. Alice gởi cho Bob m, tất cả các bít b ij và tất cả giá trị yi. Và Bob có được các khóa mở của Alice v1 , v2 ,..., vk . 5. Bob tính các giá trị z1 , z2 ,..., zt , ở đây zi = yi * (v1 i1 * v2 i 2 * ... * vk ik )(mod n) . Chú ý rằng 2 b b b zi cần phải bằng xi. 6. Bob tính giá trị của dong bít: H(m, z1 , z2 ,..., zt )- và lấy k*t bít đầu tiên của dòng này để so sánh với với giá trị bij mà Alice gởi cho Bob.
- Tương tự như sơ đồ định danh. Sơ đồ này cũng có độ an toàn tỉ lệ với 1 / 2kt . Và độ an toàn cũng phụ thuộc vào sự phân tích n thành nhân tử. Tác giả khuyến cáo tăng k*t từ 20 (như khuyến cáo trong sơ đồ định danh) lên 72, tức là k=9 và t=8. Họ khuy ến cáo chọn các số v1 , v2 ,..., vk là k số nguyên tố đầu tiên. 10.4 Sơ đồ định danh và sơ đồ chữ ký Guillou-Quisquater 10.6.1 Sơ đồ định danh Guillou-Quisquater Độ an toàn sơ đồ này dựa trên cơ sở độ an tòan của hệ mật RSA. TA hình thành số công khai n từ tích của hai số nguyên tố mật đủ lớn, để bài toán phân tích thành nhân tử là không thực hiện được. Khóa mật B được Alice chọn và tính giá tr ị khóa công khai v theo công thức: v = ( B −1 ) J (mod n) . J là một số nguyên tố dài 40 bít là một tham số công khai. Các thông tin cá nhân của Alice (ID) và các tham số công khai được TA ký xác nhận và hình thành dấu xác nhận: C(Alice)=(ID(Alice), v,signTA(ID, v)). Giao thức được miêu tả như sau: 1. Alice chọn số nguyên ngẫu nhiên r, nằm trong khoảng 1 đến n-1. Alice tính T = r J (mod n) và gởi T và dấu xác nhận C(Alice) cho Bob. 2. Bob xác minh chữ ký của TA bằng cách kiểm tra điều kiện sau có đúng hay không: verifyTA(ID(Alice), v,signTA(ID, v))=true? 3. Bob chọn số nguyên ngẫu nhiên d nằm trong khoảng 0 đến v-1. Và Bob gởi d cho Alice. 4. Alice tính D = rB d (mod n) và gởi cho Bob. 5. Bob tính T ' = D v (mod n) . Nếu như T ≡ T ' (mod n) thì sự chân thực của Alice J d được chứng minh. Ví dụ: Giả sử TA chọn p=467, q=479, nên n=pq=223693. Giả sử chọn J=503 và số mật B=101575. Khi đó Alice tính khóa công khai: v = ( B −1 ) J (mod n) = (101575−1 )503 (mod 223693) = 89888 Giả sử Alice chọn r=187485, sau đó Alice tính giá trị: T = r J (mod n) = 187485503 (mod 223693) = 24412
- Alice gởi T cho Bob. Giả sử Bob chọn d=375 và gởi cho Alice. Lúc này Alice tính: D = rB d (mod n) = 187485.101576375 (mod 223693) = 93725 và đưa D cho Bob. Bob xác minh: 24412 ≡ 8988837593725503 (mod 223693) Nếu đúng thì Bob tin người liên hệ với mình chính là Bob. 10.6.2 Sơ đồ chữ ký Guillou-Quisquater Sơ đồ định danh có thể biến thanh sơ đồ chữ ký, nên rất thuận lợi để thực hiện trong thẻ thông minh. Khóa mật và khóa công khai không thay đổi. Sơ đ ồ chữ ký đ ược miểu tả như sau: 1. Alice chọn số ngẫu nhiên r, trong khoảng 1 đến n-1. Cô ta tính T = r (mod n) . J 2. Alice tính d = H ( M , T ) , ở đây M là bức điện, còn H(x) là hàm băm. Giá trị d nhận được với sự hổ trợ của hàm băm cần phải nằm trong khoảng từ 0 đến v-1. Nếu như đầu ra của hàm băm vượt quá khoảng đó, thì cần phải thực hiện phép tính modulo v. 3. Alice tính D = rB (mod n) . Chữ ký bao gồm bức điện M, hai giá trị d và D và các d thuộc tính của Alice J. Alice gởi chữ ký cho Bob. 4. Bob tính T ' = D J v d (mod n) . Sau đó Bob tính d ' = H ( M , T ' ) . Nếu như d=d’ thì chữ ký là hợp lệ. Phương trình kiểm tra chữ ký là đúng: T ' = D J v d = (rB d ) J v d = r J ( B J v) d = r J = r ' ≡ T (mod n) 10.6.3 Sơ đồ chữ ký tập thể Guillou-Quisquater Nếu như một số người muốn ký lên một bức điện. Chúng ta xem trường hợp đơn giản là Alice và Bob là hai người ký lên bức điện, còn Davic là người kiểm tra ch ữ ký, còn trong thực tế có thể có sự tham gia của nhiều người. Giống như sơ đồ ký đơn, ở đây Alice và Bob có cặp khóa công khai và mật v và B: (v A,BA) và (vB,BB). Giá trị n và J là chung cho cả hệ thống. 1. Alice chọn ngẫu nhiên số nguyên rA nằm trong đoạn 1 đến n-1. Cô tính TA = rAJ (mod n) và gởi TA cho Bob.
- 2. Bob chọn ngẫu nhiên số rB nằm trong đoạn 1 đến n-1. Anh ta tính TB = rB (mod n) J và gởi TB cho Alice. 3. Alice và Bob mỗi người tính T = (TA * TB )(mod n) . 4. Alice và Bob mỗi người tính d=H(M,T), ở đây M là bức điện, còn H(x) là hàm băm. Giá trị d nhận được từ hàm băm, cần phải nằm trong khoảng từ 0 đến v-1. Nếu như giá trị hàm băm vượt quá khoảng trên thì cần thực hiện phép tính cho modulo v. 5. Alice tính DA = rA BA (mod n) và gởi DA cho Bob. d 6. Bob tính DB = rB BB (mod n) và gởi cho DB cho Alice. d 7. Alice và Bob mỗi người tính D = DA DB (mod n) . Chữ ký bao gồm bức điện M và hai giá trị d và D và giá trị J của Alice và Bob. 8. Davic tính v = v AvB (mod n) . 9. Davic tính T ' = D v (mod n) . Sau đó tính d ' = H ( M , T ' ) . Nếu như d=d’, thì chữ ký J d là hợp lệ. Sơ đồ này có thể mở rộng ra số lượng người ký bất kỳ. Đối với bức điện cần phải nhân các giá trị Ti ở bước 3 và các gía trị Di ở bước 7. Để kiểm tra tập chữ ký, trên tầng 8 cần nhân các giá trị vi. Chữ ký hợp lệ khi tất cả các chữ ký thành phần đúng, và không hợp lệ nếu tồn tại một chữ ký thành phần không hợp lệ. 10.6.4 Biến đổi sơ đồ định danh và chữ ký Guillou-Quisquater Trong sơ đồ định danh Guillou- Quisquater tham số công cộng được tính theo công thức: v = ( B −1 ) J (mod n) , với J là số nguyên tố. Thì ở đây chúng ta chọn J là những thông tin định danh của Alice (ID) (thường thì họ dùng giá trị hàm băm của ID) và TA chọn khóa công khai v, sau đó tính khóa mật B được tính thỏa mãn phương trình: JB v ≡ 1(mod n) . Chú ý chỉ có TA mới có thể tính được khóa mật B. Giao thức được miêu tả như sau: 1. Alice chọn số nguyên ngẫu nhiên r, nằm trong khoảng 1 đến n-1. Alice tính T = r v (mod n) và gởi T và dấu xác nhận C(Alice) cho Bob. 2. Bob xác minh chữ ký của TA bằng cách kiểm tra điều kiện sau có đúng hay không: verifyTA(ID(Alice), v,signTA(ID, v))=true? 3. Bob chọn số nguyên ngẫu nhiên d nằm trong khoảng 0 đến v-1. Và Bob gởi d cho Alice.
- 4. Alice tính D = rB (mod n) và gởi cho Bob. d 5. Bob tính T ' = D v J d (mod n) . Nếu như T ≡ T ' (mod n) thì sự chân thực của Alice được chứng minh. Sơ đồ chữ ký: 1. Alice chọn số ngẫu nhiên r, trong khoảng 1 đến n-1. Cô ta tính T = r (mod n) . v 2. Alice tính d = H ( M , T ) , ở đây M là bức điện, còn H(x) là hàm băm. Giá trị d nhận được với sự hổ trợ của hàm băm cần phải nằm trong khoảng từ 0 đến v-1. Nếu như đầu ra của hàm băm vượt quá khoảng đó, thì cần phải thực hiện phép tính modulo v. 3. Alice tính D = rB (mod n) . Chữ ký bao gồm bức điện M, hai giá trị d và D và d các thuộc tính của Alice J. Alice gởi chữ ký cho Bob. 4. Bob tính T ' = D v J d (mod n) . Sau đó Bob tính d ' = H ( M , T ' ) . Nếu như d=d’ thì chữ ký là hợp lệ. Sơ đồ chữ ký tập thể, tương tự như trên chúng ta xem trường hợp đơn giản đối với tập thể có hai người. 1. Alice chọn ngẫu nhiên số nguyên rA nằm trong đoạn 1 đến n-1. Cô tính TA = rA (mod n) và gởi TA cho Bob. v 2. Bob chọn ngẫu nhiên số rB nằm trong đoạn 1 đến n-1. Anh ta tính TB = rB (mod n) và gởi TB cho Alice. v 3. Alice và Bob mỗi người tính T = (TA * TB )(mod n) . 4. Alice và Bob mỗi người tính d=H(M,T), ở đây M là bức điện, còn H(x) là hàm băm. Giá trị d nhận được từ hàm băm, cần phải nằm trong khoảng từ 0 đ ến v-1. Nếu như giá trị hàm băm vượt quá khoảng trên thì cần thực hiện phép tính cho modulo v. 5. Alice tính DA = rA BA (mod n) và gởi DA cho Bob. d 6. Bob tính DB = rB BB (mod n) và gởi cho DB cho Alice. d 7. Alice và Bob mỗi người tính D = DA DB (mod n) . Chữ ký bao gồm bức điện M và hai giá trị d và D và giá trị J của Alice và Bob. 8. Davic tính v = v AvB (mod n) .
- 9. Davic tính T ' = D J (mod n) . Sau đó tính d ' = H ( M , T ' ) . Nếu như d=d’, thì chữ v d ký là hợp lệ. 10.5 Sơ đồ định danh Schnorr Độ an toàn của sơ đồ định danh và sơ đồ chữ ký Schnorr dựa vào độ khó tính toán logarith rời rạc. Để tạo ra cặp khóa đầu tiên chọn 2 số nguyên tố p và q là ước số c ủa p-1. Sau đó chọn a, sao cho: a ≠ 1 và a q ≡ 1(mod p ) . Tất cả các số này đều công khai. Để tạo cặp khóa, thì chọn số ngẫu nhiên s làm khóa mật, s nhỏ hơn q. Và từ đây tính ra khóa công khai v: v = a − s (mod p ) . Thông tin định danh và khóa công khai của Alice được TA chứng nhận và đưa vào dấu xác nhận: C(Alice)=(ID(Alice), v,signTA(ID, v)). Sơ đồ định danh được miêu tả như sau: 1. Alice chọn ngẫu nhiên số r, nhỏ hơn q và tính x = a r (mod p ) và gởi x và dấu xác nhận C(Alice) cho Bob. 2. Bob kiểm tra dấu xác thực nhờ thuật toán của TA: verify TA(ID(Alice), v,signTA(ID, v))=true? 3. Bob gởi cho Alice số ngẫu nhiên e nằm trong khoảng từ 0 đến 2t −1 . Gởi e cho Alice. 4. Alice tính y = (r + se)(mod q ) và gởi y cho Bob. 5. Bob kiểm tra đẳng thức sau có đúng không: x = a y v e (mod p ) . Độ an toàn của thuật toán phụ thuộc vào tham số t. Độ phức tạp để phá thực toán bằng 2t . Schnorr khuyến cáo chọn p khoảng 512 bít còn q khoảng 140 bít còn t=72. * Ví dụ: Giả sử p=88667, q=1031, t=10. Phần tử a=70322 có bậc q thuộc Z P . Giả sử số mật s của Alice là 755. Khi đó: v = a − s (mod p ) = 703221031− 755 mod 88667 = 13136 Giả sử Alice chọn r=543, sau đó cô ta tính: x = a r (mod p ) = 70322543 (mod 88667) = 84109 Và Alice gởi x cho Bob. Giả sử Bob chọn số e=1000 và gởi cho Alice. Khi đó Alice tính:
- y = (r + se)(mod q ) = (543 + 755.1000) mod1031 = 851 Alice gởi y cho Bob. Bob xem đẳng thức sau có đúng không 84109 ≡ 70322851131361000 (mod 88667) Nếu đẳng thức trên đúng thì Bob tin rằng người liên lạc với mình chính là Alice. Chú ý: Biến sơ đồ định danh Schnorr thành chữ ký, sơ đồ chữ ký Schnorr đã được trình bày trong chương chữ ký số. 10.6 Sơ đồ định danh và chữ ký Okamoto 10.6.1 Sơ đồ định danh Okamoto Độ an toàn của sơ đồ định danh và sơ đồ chữ ký Schnorr dựa vào độ khó tính toán logarith rời rạc. Để tạo ra cặp khóa đầu tiên chọn 2 số nguyên tố p và q là ước số c ủa p-1. Sau đó chọn a, sao cho: a ≠ 1 và a q ≡ 1(mod p ) . Tất cả các số này đều công khai. Để tạo cặp khóa, thì chọn số ngẫu nhiên s làm khóa mật, s nhỏ hơn q. Và từ đây tính ra khóa công khai v: v = a − s (mod p ) . Thông tin định danh và khóa công khai của Alice được TA chứng nhận và đưa vào dấu xác nhận: C(Alice)=(ID(Alice), v,signTA(ID, v)). Sơ đồ định danh được miêu tả như sau: 6. Alice chọn ngẫu nhiên số r, nhỏ hơn q và tính x = a r (mod p ) và gởi x và dấu xác nhận C(Alice) cho Bob. 7. Bob kiểm tra dấu xác thực nhờ thuật toán của TA: verify TA(ID(Alice), v,signTA(ID, v))=true? 8. Bob gởi cho Alice số ngẫu nhiên e nằm trong khoảng từ 0 đến 2t −1 . Gởi e cho Alice. 9. Alice tính y = (r + se)(mod q ) và gởi y cho Bob. 10. Bob kiểm tra đẳng thức sau có đúng không: x = a y v e (mod p ) . Độ an toàn của thuật toán phụ thuộc vào tham số t. Độ phức tạp để phá thực toán bằng 2t . Schnorr khuyến cáo chọn p khoảng 512 bít còn q khoảng 140 bít còn t=72. * Ví dụ: Giả sử p=88667, q=1031, t=10. Phần tử a=70322 có bậc q thuộc Z P . Giả sử số mật s của Alice là 755. Khi đó:
- v = a − s (mod p ) = 703221031− 755 mod 88667 = 13136 Giả sử Alice chọn r=543, sau đó cô ta tính: x = a r (mod p ) = 70322543 (mod 88667) = 84109 Và Alice gởi x cho Bob. Giả sử Bob chọn số e=1000 và gởi cho Alice. Khi đó Alice tính: y = (r + se)(mod q ) = (543 + 755.1000) mod1031 = 851 Alice gởi y cho Bob. Bob xem đẳng thức sau có đúng không 84109 ≡ 70322851131361000 (mod 88667) Nếu đẳng thức trên đúng thì Bob tin rằng người liên lạc với mình chính là Alice. Nên Bob tin rằng người giao tiếp với mình là Alice. Định lý: Nếu Davic biết được giá trị γ . Thì Alice và Davic kết hợp để tính logα α 2 1 trong thơi gian đa thức với xác suất thành công là 1-1/q. 10.6.2 Sơ đồ chữ ký Okamoto Các tham số chọn tương tự như sơ đồ định danh Okamoto. Sơ đồ chữ ký được miêu tả như sau: 1. Alice chọn hai số ngẫu nhiên k1 , k 2 ,0 ≤ k1 , k 2 ≤ q − 1 và tính: γ = α1 1α 2 2 (mod p) . k k 2. Alice tính giá trị hàm băm H(x) với đối số là γ và bức điện M: r=H(M, γ ). 3. Alice tính: y1 = k1 + a1r (mod q ) y2 = k2 + a2 r (mod q) và chữ ký bao gồm r và y1 , y2 . Alice chuyển chữ ký cho Bob. 4. Bob tính: γ ' ≡ α1 1α 2 2 v r (mod p ) và giá trị hàm băm H(x):r’=H(M, γ ' ). Nếu như r=r’ y y thì chữ ký hợp lệ.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình: Bài Tập Kỹ Thuật Lập Trình
152 p | 6027 | 3208
-
Kỹ thuật lập trình
114 p | 797 | 323
-
Giáo trình kỹ thuật lập trình C part 1
22 p | 446 | 156
-
Giáo trình kỹ thuật lập trình C part 2
22 p | 357 | 112
-
Giáo trình kỹ thuật lập trình C part 3
22 p | 325 | 101
-
Giáo trình kỹ thuật lập trình C part 4
22 p | 286 | 96
-
Giáo trình kỹ thuật lập trình C part 7
22 p | 260 | 85
-
Giáo trình kỹ thuật lập trình C part 5
22 p | 264 | 84
-
Giáo trình kỹ thuật lập trình C part 8
22 p | 267 | 78
-
Giáo trình kỹ thuật lập trình C part 6
22 p | 252 | 78
-
Giáo trình kỹ thuật lập trình C part 9
22 p | 234 | 66
-
Tài liệu Kỹ thuật lập trình đệ quy
0 p | 235 | 49
-
Đề thi học kỳ I môn Kỹ thuật lập trình cơ bản
14 p | 498 | 47
-
Giáo trình kỹ thuật lập trình C part 10
19 p | 194 | 44
-
Kỹ thuật lập trình C/C++-Chương: Cơ bản về C++
23 p | 209 | 33
-
Kỹ thuật lập trình C/C++-Chương: Hàm
21 p | 176 | 23
-
Đề thi học kỳ 1 môn Kỹ thuật lập trình cơ bản
14 p | 199 | 18
-
Kỹ thuật lập trình C/C++-Chương: Định nghĩa chồng hàm
21 p | 140 | 14
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn