Giáo trình Lý thuyết mật mã và an toàn thông tin - Phan Đình Diệu (Phần 2)
Tóm tắt Giáo trình Lý thuyết mật mã và an toàn thông tin - Phan Đình Diệu (Phần 2): ...84. Một hệ nh− vậy đ−ợc cho bởi một danh sách S = (P , C , K , E , D, R ), trong đó P ={0,1}, C = R = nZ ∗ , n =p.q là tích của hai số nguyên tố lớn, K là tập hợp các bộ khoá K = (K', K''), trong đó khoá công khai K' = (n ,m) với m ∈jn nQ J Qn= − là một giả thặng d− bậc hai modn, và khoá...ng nhau. 5.4. Một số sơ đồ chữ ký khác. 5.4.1. Sơ đồ chữ ký Rabin. T−ơng t− nh− sơ đồ chữ ký RSA, sơ đồ chữ ký Rabin cũng sử dụng số nguyên n là tích của hai số nguyên tố lớn p và q, n =p.q , với hàm một phía ở đây là hàm lấy bình ph−ơng của một số nguyên theo modn, có hàm ng−ợc là hàm ... chọn thêm một số b là số nguyên tố có độ lớn khoảng 240 nh− là một tham số an toàn. Số b cũng đ−ợc xem là số mũ thoả mãn điều kiện RSA, nghĩa là việc tính v =ub modn là dễ, nh−ng việc tính ng−ợc u từ v là rất khó, nếu không biết p,q. Thủ tục cấp chứng chỉ cho một ng−ời tham gia A đ−ợc tiến...
một số nguyên tố p ≥ n, và chọn cho mỗi ng−ời dùng A một số rA∈Zp . Số p và các số rA đ−ợc công bố công khai. Sau đó, TA chọn ba số ngẫu nhiên a,b,c ∈ Zp , và lập đa thức ( , ) ( )f x y a b x y cxy= + + + modp. Với mỗi ng−ời dùng A, TA tính ( ) ( , )A A A Ag x f x r a b x= = + modp, trong đó . TA chuyển bí mật cặp số mod , modA A A Aa a br b b cr= + = +p p ( , )A Aa b cho A; nh− vậy, A biết ( )A A Ag x a b x= + . So với việc TA phải truyền bí mật n (n -1) l−ợt khoá kể trên thì với sơ đồ Blom, TA chỉ phải truyền n l−ợt các cặp số ( , )A Aa b mà thôi. Sau khi đã thực hiện xong các công việc chuẩn bị đó, bây giờ nếu hai ng−ời dùng A và B muốn tạo khoá chung để truyền tin bằng mật mã cho nhau, thì khoá chung K A,B đó sẽ là : , ( ) ( ) ( , ),A B A B B A A BK g r g r f r r= = = mà mỗi ng−ời A và B tính đ−ợc bằng những thông tin mình đã có. 153 Nh− vậy, theo sơ đồ phân phối này, TA phân phối cho mỗi ng−ời dùng một phần bí mật của khoá, hai ng−ời dùng bất kỳ phối hợp phần bí mật của riêng mình với phần công khai của ng−ời kia để cùng tạo nên khoá bí mật chung cho hai ng−ời. Sơ đồ này là an toàn theo nghĩa sau đây: Bất kỳ một ng−ời thứ ba C nào (kể cả C là một ng−ời tham gia trong mạng) có thể phát hiện đ−ợc khoá bí mật riêng của hai ng−ời A và B. Thực vậy, dù C có là ng−ời tham gia trong mạng đi nữa, thì cái mà C biết nhiều lắm là hai số do TA cấp cho. Ta chứng minh rằng với những gì mà C biết thì bất kỳ giá trị l ∈ Z ,C Ca b p nào cũng có thể đ−ợc chấp nhận là K A,B . Những gì mà C biết, kể cả việc chấp nhận l = K A,B , đ−ợc thể hiện thành ( )A B A B C C C C a b r r cr r l a br a b cr b + + + = + = + = Hệ thống ph−ơng trình đó, nếu xem a,b,c là ẩn số, có định thức các hệ số ở vế phải là 1 1 0 ( )( ) 0 1 A B A B C C A C C r r r r r r r r r + Br= − − , theo giả thiết chọn các số r , định thức đó khác 0, do đó hệ ph−ơng trình luôn có nghiệm (a,b,c), tức việc chấp nhận l là giá trị của K A,B là hoàn toàn có thể. Bất kỳ giá trị l ∈ Zp nào cũng có thể đ−ợc C chấp nhận là K A,B , điều đó đồng nghĩa với việc C không biết K A,B là số nào! Tuy nhiên, nếu có hai ng−ời tham gia C và D, khác A,B, liên minh với nhau để phát hiện K A,B , thì lại rất dễ dàng, vì cả C và D biết C C C C D D D D a br a b cr b a br a b cr b + = + = + = + = Bốn ph−ơng trình đó đủ để xác định (a,b,c), từ đó tìm đ−ợc K A,B . Ta có thể mở rộng sơ đồ Blom nói trên để đ−ợc một sơ đồ Blom tổng quát, trong đó mọi khoá chung K A,B của hai ng−ời dùng A và B là bí mật hoàn toàn đối với bất kỳ liên minh nào gồm k ng−ời ngoài A và B, nh−ng không còn là bí mật đối với mọi liên minh gồm k +1 ng−ời tham gia trong mạng. Muốn vậy, ta chỉ cần 154 thay đa thức f (x,y ) nói trên bằng một đa thức đối xứng bậc 2k sau đây : 0 0 ( , ) mod , k k i j ij i j f x y a x y = = =∑∑ p trong đó với mọi i, j. , 0 , ,i p ia Z i j k a a∈ ≤ ≤ =j jij 7.2.2. Hệ phân phối khoá Kerberos. Kerberos là tên của một hệ dịch vụ phân phối (hay cấp phát) khoá phiên (session key) cho từng phiên truyền tin bảo mật theo yêu cầu của ng−ới dùng trong một mạng truyền tin. Hệ mật mã đ−ợc sử dụng th−ờng là hệ có khoá đối xứng, chẳng hạn DES. Để thực hiện hệ này, tr−ớc hết, cơ quan đ−ợc uỷ thác (hay trung tâm điều phối) TA cần chia sẻ một khoá DES bí mật KA với mỗi thành viên A trong mạng. Sau đó, mỗi lần A có nhu cầu truyền tin bảo mật với một thành viên khác B thì yêu cầu TA cấp một khoá phiên cho cả A và B. Việc cấp phát đó sẽ đ−ợc thực hiện bằng một giao thức phân phối khoá nh− sau: 1. TA chọn ngẫu nhiên một khoá phiên K, xác định một tem thời gian T và một thời gian sống L (nh− thế có nghĩa là khoá phiên K có giá trị sử dụng trong khoảng thời gian từ T đến T +L). 2. TA tính 1 2 ( , ( ), , ), ( , ( ), , ). A B K K m e K ID B T L m e K ID A T L = = và gửi ( ) đến A. 1 2,m m 3. A dùng hàm giải mã AK d cho để thu đ−ợc K, T,L,ID(B). Sau đó tính 1m 3 ( ( ),Km e ID A T )= , và gửi cho B. 3 2( ,m m ) 4. B dùng các hàm giải mã BK d cho m2 và dK cho m3 để thu đ−ợc K ,T, L,ID(A) và ID(A),T . Nếu thử thấy hai giá trị của ID(A) và của T trùng nhau, thì B tính tiếp m 4 = eK (T +1) và gửi m4 cho A. 5. A dùng hàm giải mã dK cho m4, và thử xem kết quả thu đ−ợc có đúng là T +1 hay không. 155 Trong giao thức kể trên, các ký hiệu ID(A) và ID(B) là chỉ cho danh tính của A và của B, các thông tin đó là công khai. Hoàn thành giao thức gồm 5 b−ớc nói trên, TA (cùng với A và B) đã thực hiện xong việc cấp phát một khoá phiên K cho hai ng−ời dùng A và B để truyền tin mật mã cho nhau. Tất cả các việc trao đổi thông tin của giao thức đó đều đ−ợc thực hiện trên các kênh công cộng, dù khoá K vẫn là bí mật, chỉ A, B (và TA) là đ−ợc biết mà thôi. Ngoài việc cấp phát khoá, giao thức đó còn thực hiện đ−ợc việc xác nhận khoá: B và A đều tin chắc đ−ợc rằng đối tác của mình đã thực sự có khoá K do kết quả của việc thực hiện các phép thử ở b−ớc 4 và 5; thêm nữa, cả A và B còn biết đ−ợc thời hạn có hiệu lực của khoá. Phân phối khoá bí mật theo giao thức Kerberos là có độ tin cậy cao, tuy nhiên trong thực tế, việc sử dụng nó cũng đòi hỏi tốn nhiều thời gian, nên ngày nay cũng chỉ đ−ợc dùng trong những tr−ờng hợp hạn chế. 7. 2.3. Hệ phân phối khoá Diffie-Hellman. Hệ phân phối khoá Diffie-Hellman không đòi hỏi TA phải biết và chuyển bất kỳ thông tin bí mật nào về khoá của các ng−ời tham gia trong mạng để họ thiết lập đ−ợc khoá chung bí mật cho việc truyền tin với nhau. Trong một hệ phân phối khoá Diffie-Hellman, TA chỉ việc chọn một số nguyên tố lớn p và một phần tử nguyên thuỷ α theo modp, sao cho bài toán tính logα trong pZ ∗ là rất khó. Các số p và α đ−ợc công bố công khai cho mọi ng−ời tham gia trong mạng. Ngoài ra, TA có một sơ đồ chữ ký với thuật toán ký (bí mật) sigTA và thuật toán kiểm thử (công khai) verTA. Một thành viên bất kỳ A với danh tính ID(A) tuỳ ý chọn một số và tính . A giữ bí mật (0 2)A Aa a p≤ ≤ − modAaAb α= p Aa và đăng ký các thông tin (ID(A), Ab ) với TA. TA cấp cho A chứng chỉ C(A) = (ID(A), Ab , sigTA(ID(A), Ab )). Các chứng chỉ của các thành viên trong mạng có thể đ−ợc l−u giữ trong một cơ sở dữ liệu công khai, hoặc uỷ thác cho TA l−u giữ và cung cấp công khai cho các thành viên mỗi khi cần đến. Khi hai thành viên A và B trong mạng cần có một khoá bí mật chung để truyền tin bảo mật cho nhau, thì A dùng thông tin công khai có trong C(B) kết hợp với số bí mật của mình là Bb Aa để tạo nên khoá 156 , mod modA B A a a a A B BK b α= =p p. Khoá chung đó B cũng tạo ra đ−ợc từ các thông tin công khai Ab của A và số bí mật của mình: Ba , mod modB A B a a a A B AK b α= =p p. Để bảo đảm đ−ợc các thông tin về và Bb Ab là chính xác, A và B có thể dùng thuật toán verTA để kiểm thử chữ ký xác nhận của TA trong các chứng chỉ C(B) và C(A) t−ơng ứng. Độ an toàn của hệ phân phối khoá Diffie-Hellman đ−ợc bảo đảm bởi điều sau đây: Biết Ab và để tính KBb A,B chính là bài toán Diffie-Hellman mà ta đã đề cập tới trong mục 4.1, ch−ơng IV: biết moda pα và modb pα , tính modab pα . Đây là một bài toán khó t−ơng đ−ơng bài toán tính lôgarit rời rạc hay bài toán phá mật mã ElGamal. 7.3. Trao đổi khoá và thoả thuận khoá. 7.3.1. Giao thức trao đổi khoá Diffie-Hellman. Hệ phân phối khoá Diffie-Hellman nói trong mục tr−ớc có thể dễ dàng biến đổi thành một giao thức trao đổi (hay thoả thuận) khoá trực tiếp giữa các ng−ời sử dụng mà không cần có sự can thiệp của một TA làm nhiệm vụ điều hành hoặc phân phối khoá. Một nhóm bất kỳ ng−ời sử dụng có thể thoả thuận cùng dùng chung một số nguyên tố lớn p và một phần tử nguyên thuỷ α theo modp , hai ng−ời bất kỳ trong nhóm A và B mỗi khi muốn truyền tin bảo mật cho nhau có thể cùng thực hiện giao thức say đây để trao đổi khoá: 1. A chọn ngẫu nhiên số aA (0≤ aA≤ p -2), giữ bí mật aA, tính và gửi bmodAaAb α= p p p i i i A cho B. 2. T−ơng tự, B chọn ngẫu nhiên số aB (0≤ aB ≤ p -2), giữ bí mật aB , tính và gửi bmodB a Bb α= B cho B. 3. A và B cùng tính đ−ợc khoá chung . , mod mod ( mod )A B A B a a a a A B B AK b p b p α= = = Giao thức trao đổi khoá Diffie-Hellman có các tính chất sau: 1. G ao thức là an toàn đố với v ệc tấn công thụ động, nghĩa là một ng−ời thứ ba, dù biết bA và bB sẽ khó mà biết đ−ợc KA,B . Ta biết rằng bài toán “biết bA và bB tìm KA,B” chính là bài toán Diffie-Hellman, và trong mục 7.2.3 ta có nói rằng bài toán đó t−ơng 157 đ−ơng với bài toán phá mật mã ElGamal. Bây giờ ta chứng minh điều này. Phép mật mã ElGamal với khoá K = (p,α,a ,β ), trong đó moda pβ α= , cho ta từ một bản rõ x và một số ngẫu nhiên 1pk Z −∈ lập đ−ợc mật mã 1 2( , ) ( , ),Ke x k y y= trong đó 1 2mod , mod . k ky p y xα β= = p Và phép giải mã đ−ợc cho bởi 11 2 2 1( , ) ( ) mod . a Kd y y y y p −= Giả sử ta có thuật toán A giải bài toán Diffie-Hellman. Ta sẽ dùng A để phá mã ElGamal nh− sau: Cho mật mã . Tr−ớc hết, dùng A cho và 1 2( , )y y 1 mod ky pα= moda pβ α= , ta đ−ợc A(y1,β) = mod ,ka k pα β= và sau đó ta thu đ−ợc bản rõ x từ βk và y2 nh− sau : 12 ( ) mod k .x y pβ −= Ng−ợc lại, giả sử có thuật toán B phá mã ElGamal, tức B . 11 2 2 1( , , , , ) ( ) modap y y x y yα β −= = p 1áp dụng B cho 1 2, ,A Bb y b yβ = = = , ta đ−ợc B 1 1 1( , , , ,1) (1.( ) ) mod ,A A Ba a aA B Bp b b b pα α− − −= = tức là giải đ−ợc bài toán Diffie-Hellman. 2. Giao thức là không an toàn đối với việc tấn công chủ động bằng cách đánh tráo giữa đ−ờng, nghĩa là một ng−ời thứ ba C có thể đánh tráo các thông tin trao đổi giữa A và B, chẳng hạn, C thay Aaα mà A định gửi cho B bởi Aaα ′ ,và thay Baα mà B định gửi cho A bởi Baα ′ , nh− vậy, sau khi thực hiện giao thức trao đổi khoá, A đã lập một khoá chung A Ba aα ′ với C mà vẫn t−ởng là với B, đồng thời B đã lập một khoá chung A Ba aα ′ với C mà vẫn t−ởng là với A; C có thể giải mã mọi thông báo mà A t−ởng nhầm là mình gửi đến B, cũng nh− mọi thông báo mà B t−ởng nhầm là mình gửi đến A ! Một cách khắc phục kiểu tấn công chủ động nói trên là làm sao để A và B có thể kiểm thử để xác nhận tính đúng đắn của các khoá công khai bA và bB .Đ−a vào giao thức trao đổi khoá Diffie- Hellman thêm vai trò điều phối của một TA để đ−ợc một hệ phân phối khoá Diffie-Hellman nh− ở mục 7.2.3 là một cách khắc phục nh− vậy. Trong hệ phân phối khoá Diffie-Hellman, sự can thiệp của TA là rất yếu, thực ra TA chỉ làm mỗi một việc là cấp chứng chỉ xác nhận khoá công khai cho từng ng−ời dùng chứ không đòi hỏi biết thêm bất cứ một bí mật nào của ng−ời dùng. Tuy nhiên, nếu ch−a 158 thoả mãn với vai trò hạn chế đó của TA, thì có thể cho TA một vai trò xác nhận yếu hơn, không liên quan gì đến khoá, chẳng hạn nh− xác nhận thuật toán kiểm thử chữ kỹ của ng−ời dùng, còn bản thân các thông tin về khoá (cả bí mật và công khai) thì do các ng−ời dùng trao đổi trực tiếp với nhau. Với cách khắc phục có vai trò rất hạn chế đó của TA, ta đ−ợc giao thức sau đây: 7.3.2. Giao thức trao đổi khoá DH có chứng chỉ xác nhận. Mỗi ng−ời dùng A có một danh tính ID(A) và một sơ đồ chữ ký với thuật toán ký sigA và thuật toán kiểm thử verA. TA cũng có một vai trò xác nhận, nh−ng không phải xác nhận bất kỳ thông tin nào liên quan đến việc tạo khoá mật mã của ng−ời dùng (dù là khoá bí mật hay là khoá công khai), mà chỉ là xác nhận một thông tin ít quan hệ khác nh− thuật toán kiểm thử chữ ký của ng−ời dùng. Còn bản thân các thông tin liên quan đến việc tạo khoá mật mã thì các ng−ời dùng sẽ trao đổi trực tiếp với nhau. TA cũng có một sơ đồ chữ ký của mình, gồm một thuật toán ký sigTA và một thuật toán kiểm thử (công khai) verTA. Chứng chỉ mà TA cấp cho mỗi ng−ời dùng A sẽ là C(A) = (ID(A), verA , sigTA(ID(A), verA)). Rõ ràng trong chứng chỉ đó TA không xác nhận bất kỳ điều gì liên quan đến việc tạo khoá của A cả. Việc trao đổi khoá giữa hai ng−ời dùng A và B đ−ợc thực hiện theo giao thức sau đây: 1.A chọn ngẫu nhiên số (0 2),A Aa a p≤ ≤ − tính và gửi b mod ,AaAb pα= A cho B. 2. B chọn ngẫu nhiên số (0 2),B Ba a p≤ ≤ − tính tính tiếp mod ,BaBb pα= mod ,BaAK b p= ( , ),B B B Ay sig b b= và gửi (C(B),bB , yB) cho A. 3. A tính K = mod ,AaBb p dùng verB để kiểm thử yB , dùng verTA để kiểm thử C(B), sau đó tính yA = sigA(bA , bB ), và gửi (C(A), yA) cho B. 4.B dùng verA để kiểm thử yA ,và dùng verTA để kiểm thử C(A). Nếu tất cả các b−ớc đó đ−ợc thực hiện và các phép kiểm thử đều cho kết quả đúng đắn, thì giao thức kết thúc, và cả A và B đều có đ−ợc khoá chung K . Do việc dùng các thuật toán kiểm thử nên A biết chắc giá trị bB là của B và B biết chắc giá trị bA là của A, loại 159 trừ khả năng một ng−ời C nào khác đánh tráo các giá trị đó giữa đ−ờng. 7.3.3. Giao thức trao đổi khoá Matsumoto-Takashima- Imai. Giao thức trình bày trong mục trên cần dùng ba lần chuyển tin qua lại để thiết lập một khoá chung. Các tác giả Nhật Matsumoto, Takashima và Imai đề nghị một cải tiến để chỉ dùng một giao thức gồm hai lần chuyển tin (một từ A đến B và một từ B đến A) để thoả thuận khoá nh− sau: Ta giả thử rằng tr−ớc khi thực hiện giao thức, TA đã ký cấp chứng chỉ cho mỗi ng−ời dùng A theo cách làm ở mục 7.2.3: C(A) = (ID(A), Ab , sigTA(ID(A), Ab )), và thuật toán kiểm thử chữ ký verTA của TA là công khai. Trong giao thức này, các bA không trực tiếp tạo nên các khoá mật mã cho truyền tin, mà với mỗi phiên truyền tin bảo mật, khoá phiên (sesion key) sẽ đ−ợc tạo ra cho từng phiên theo giao thức. Giao thức trao đổi khoá phiên MTI gồm ba b−ớc (trong đó có hai lần chuyển tin) nh− sau: 1. A chọn ngẫu nhiên số (0 2),A Ar r p≤ ≤ − tính và gửi (C(A), s mod ,ArAs pα= A ) cho B. 2. B chọn ngẫu nhiên số (0 2),B Br r p≤ ≤ − tính mod ,BrBs pα= và gửi (C(B),sB ) cho A. 3. A tính . modA Aa rB B ,K s b p= với giá trị bB thu đ−ợc từ C(B), B tính . modB Ba rA A ,K s b p= với giá trị bA thu đ−ợc từ C(A). Hai cách tính đó đều cho cùng một giá trị mod .A B B Ar a r aK pα += Giao thức này cũng có khả năng giữ bí mật khoá K nh− đối với giao thức Diffie-Hellman tr−ớc sự tấn công thụ động. Tuy nhiên, vì không có chứng chỉ đối với các giá trị sA , sB nên vẫn có nguy cơ của sự tấn công tích cực bằng việc đánh tráo giữa đ−ờng bởi một C nào đó theo kiểu sau đây: C(A), Arα C(A), Arα ′ A C(B), Brα ′ C C(B), Brα B Đáng lẽ A gửi đến B (C(A),sA) thì C đánh tráo bằng cách nhận (C(A),sA) và gửi đến B ( ( ), ),AC A s′ với , và ng−ợc lại, modArAs α ′′ = p 160 đáng lẽ B gửi đến A (C(B), sB) thì C đánh tráo bằng cách nhận (C(B), sB) và gửi đến A ( ( ), )BC B s′ , với . Khi đó, A tính đ−ợc khoá modBrBs α ′′ = p 1 modA B B A r a r aK pα ′+= , và B tính đ−ợc khoá 2 mod .A B B A r a r aK pα ′ += Hai giá trị K1 và K2 này khác nhau, nên không giúp A và B truyền tin đ−ợc cho nhau, nh−ng C không có khả năng tính đ−ợc giá trị nào trong hai giá trị đó (vì không biết aA và aB ), nên khác với giao thức Diffie-Hellman ở mục 7.2.3, ở đây C chỉ có thể phá rối, chứ không thể đánh cắp thông tin đ−ợc. 7.3.4. Giao thức Girault trao đổi khoá không chứng chỉ. Giao thức Girault đ−ợc đề xuất năm 1991. Trong giao thức này, ng−ời sử dụng A không cần dùng chứng chỉ C(A), mà thay bằng một khoá công khai tự chứng thực , đ−ợc cấp tr−ớc bởi một TA. Ph−ơng pháp này sử dụng kết hợp các đặc tính của các bài toán RSA và lôgarit rời rạc. Giả thử n là tíc của hai số nguyên tố lớn p và q, n =p.q , p và q có dạng p =2p1+1, q =2q1+1, trong đó p1 và q1 cũng là các số nguyên tố. Nhóm nhân nZ ∗ đẳng cấu với tích p qZ Z ∗ ∗ì . Cấp cao nhất của một phần tử trong nZ ∗ là bội chung bé nhất của p -1 và q -1, tức là bằng 2p1q1. Giả sử α là một phần tử cấp 2p1q1 của nZ ∗ . Nhóm cyclic sinh bởi α đ−ợc ký hiệu là G, bài toán tính lôgarit rời rạc theo cơ số α trong G đ−ợc giả thiết là rất khó. Các số n và α là công khai. Chỉ TA biết p ,q . TA chọn số mũ công khai e , với gcd(e, φ (n ))=1,và giữ bí mật d =e -1modφ (n ). Mỗi ng−ời dùng A có một danh tính ID(A), chọn ngẫu nhiên một số aA ∈ G, giữ bí mật aA và tính bA= , rồi gửi amodAa nα A ,bA cho TA. TA thử lại điều kiện bA= , rồi cấp cho A một khoá công khai tự chứng thực p modAa nα A = (bA- ID(A))d modn . Trong khoá công khai pA không có thông tin về aA , nh−ng TA cần biết aA để thử điều kiện bA= . modAa nα Giao thức Girault trao đổi khoá giữa hai ng−ời dùng A và B đ−ợc thực hiện bởi các b−ớc sau đây: 1. A chọn ngẫu nhiên rA∈G, tính và gửi cho B (ID(A),p mod ,ArAs α= n A , sA). 161 2. B chọn ngẫu nhiên rB ∈G , tính và gửi cho A (ID(B), p mod ,BrBs α= n d , B , sB). 3. A tính khoá ( ( )) moA Aa reB BK s p ID V n= + B tính khoá ( ( )) moB Ba reA A d .K s p ID A n= + Cả hai giá trị đó của K đều bằng nhau và bằng mod .A B B Ar a r aK nα += Bằng các lập luận nh− trong mục tr−ớc, ta dễ thấy rằng một ng−ời thứ ba C khó mà tạo ra các thông tin giả mạo để gửi đến A hoặc B, nếu tấn công bằng cách đánh tráo giữa đ−ờng thì có thể phá rối để ngăn cản A và B tạo lập khoá chung, nh−ng không thể đánh cắp thông tin trao đổi giữa A và B. Còn lại một vấn đề: Tại sao TA cần biết aA và thử điều kiện bA= tr−ớc khi cấp pmodAa nα A cho A? Ta giả thử rằng TA không biết aA và cấp pA= (bA- ID(A))d modn cho A, và thử xem có thể xẩy ra chuyện gì? Một ng−ời thứ ba C có thể chọn một giá trị rởm ,Aa′ và tính rồi tính b bmod ,AaAb α ′′ = n ID A ID C( ) ( ),C A′ ′= − − )và đ−a ( ( ), CID C b′ cho TA. TA sẽ cấp cho C một “khoá công khai tự chứng thực” ( ( )) modC Cp b ID C′ ′= − d .n d .n Vì nên thực tế C đã đ−ợc cấp ( ) ( ),C Ab ID C b ID A′ ′− = − ( ( )) modC A Ap p b ID A′ ′ ′= = − Bây giờ giả sử A và B thực hiện giao thức trao đổi khoá, và C xen vào ở giữa, nh− vậy, A gửi đến B ( ( ), , mod ),ArAID A p nα nh−ng do bị C đánh tráo nên B lại nhận đ−ợc ( ( ), , mod ),ArAID A p nα ′′ do đó B và C tính đ−ợc cùng một khoá mod ( ( )) mod ,A B B A A Ar a r a a reB BK n s p ID B nα ′ ′ ′ ′+′ = = + còn A tính đ−ợc khoá mod .A B B Ar a r aK nα += ID(A), pA, Arα ID(A), Ap′ , Arα ′ A ID(B),pB , Brα C ID(B),pB, Brα B B và C có cùng một khoá khác với khoá của A, nh−ng B vẫn nghĩ rằng mình có chung khoá với A. Vì thế, C có thể giải mã mọi thông báo mà B gửi cho A, tức đánh cắp các thông tin từ B đến A. Việc TA biết aA và thử điều kiện bA= tr−ớc khi cấp pmodAa nα A cho A là để loại trừ khả năng đánh tráo nh− vậy của một kẻ tấn công C. 162 Chú dẫn về sách tham khảo Sách báo về Khoa học mật mã tuy mới đ−ợc công khai xuất bản từ khoảng ba thập niên gần đây, nh−ng do nhu cầu nghiên cứu và ứng dụng rất lớn nên đã phát triển rất nhanh chóng, trong đó có cả những tài liệu giáo khoa do các tr−ờng Đại học xuất bản cũng nh− công trình nghiên cứu đăng tải trên các tạp chí khoa học và các tập công trình của các hội nghị khoa học quốc tế hàng năm về Mật mã. Đó là nguồn tài liệu hết sức phong phú và quí giá cho tất cả những ai quan tâm đến việc học tập và nghiên cứu về khoa học mật mã. Tập giáo trình này đ−ợc biên soạn chủ yếu dựa vào một số sách chuyên khảo đã trở thành giáo khoa cho nhiều tr−ờng Đại học trên thế giới, đ−ợc xuất bản trong những năm gần đây: 1. Douglas R. Stinson. Cryptography. Theory and Practice, CRC Press,1995. 2.A.J. Menezes, P.C. van Oorschot, S.A. Vanstone. Handbook of Applied Cryptography, CRC Press, 1997. 3.Bruce Schneier. Applied Cryptography. Protocols, Algorithms and Source Code in C. John Wiley &Son,Inc, 1996. 4. S. Goldwasser, M. Bellare. Lecture Notes on Cryptography. MIT Laboratory of Computer Science, 2001. 5.J.Seberry, J. Pieprzyk. Cryptography. An introduction to Computer Security. Prentice Hall, 1989. 6.Vitor Shoup. A computational Introduction to Number Theory and Algebra, New York University, 2003. 163
File đính kèm:
- giao_trinh_ly_thuyet_mat_ma_va_an_toan_thong_tin_phan_dinh_d.pdf