Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Mục lục LỜI NÓI ĐẦU............................................................................8 Chương 3...................................................................................47 THIẾT LẬP KHÓA.................................................................47 1.Lý thuyết cơ bản...................................................................................47 1.1.Khái niệm.......................................................................................47 1.2.Độ tươi của khóa và dẫn xuất khóa(key freshness và key derivation) ...................................................................................................................47
Danh mục các ký hiệu viết tắt Ký hiệu h
Hàm một chiều
AES
Chương 1
Ý nghĩa
MD4,MD5
Advanced Encryption Standard-Chuẩn mã hóa tiên tiến Message-Digest algorithm : hàm băm mật mã
SHA
Secure Hash Algorithm : thuật giải băm an toàn
IV
Giá trị ban đầu n bit
UCLN
Ước chung lớn nhất
Alice,Bob,.. Tên thực thể {M}K
Bản mã lập từ M bằng khóa K
KXY
Khóa chia sẻ giữa X và Y
N, NA
Nonce-Thời khắc
TX
TX : Tem thời gian được tạo bởi thực thể X.
sigA(M)
Chữ ký số trên M được tạo ra bởi A
εK
Mã hóa bằng khóa KAB
AB
||
Nối bit
U
User 1
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Chương 2
Chương 3
Chương 4
H
Host
ID
Định danh
PU
Mật khẩu của U
f
Hàm một chiều cực kỳ khó nghịch ảnh
DES
Data Encryption Standard : Chuẩn Mã hóa Dữ liệu
KEK
Key Encryption Key
KDC
Key Distribution Center
KDF
Key derivation function
KAB
Khóa chia sẻ giữa A và B
cnt
Count : số đếm
KSES
Khóa phiên
HMAC
Hash-based Message Authentication Code
RQST
Request
eK A
Mã hóa sử dụng KA
e−K1A
Giải mã sử dụng KA
y
Bản mã thông điệp
MiTM
Man in The Middle : tấn công người đứng giữa
PAKE
Password based Authenticated Key Exchange
CCDH
Chosen-base computational Diffie-Hellman
S-PAKE
Simple password based encrypted key exchange protocol
S-3PAKE
Simple three-party key exchange protocol
2
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Danh mục hình vẽ Hình 1.1. Thuật toán băm Matyas - Meyer - Oseas........................................12 Hình 1.2. Thuật toán băm Davies – Meyer.....................................................13 Hình 1.3.Thuật toán băm Miyaguchi- Preneel................................................14 Hình 1.4.Mô hình tạo chữ ký số RSA.............................................................16 Hình 1.5.Các bước kiểm tra chữ ký số...........................................................16 Hình 1.6.Sơ đồ chữ ký số không cần bí mật bản tin.......................................17 Hình 1.7.Sơ đồ chữ ký số có bí mật bản tin....................................................18 Hình 1.8. Sơ đồ chữ ký số Elgamal................................................................20 Hình 2.1. Cơ chế thách đố-giải đố..................................................................25 Hình 2.2. Chuẩn hóa cơ chế thách đố-giải đố.................................................26 Hình 2.3. Cơ chế tem thời gian.......................................................................26 Hình 2.4.Sự chuẩn hóa cơ chế tem thời gian..................................................27 Hình 2.5. Cơ chế phi chuẩn............................................................................28 Hình 2.6. Giao thức xác thực lẫn nhau ba bước sử dụng khoá công khai ISO...........................................................................29 Hình 2.7.Tấn công Wiener..............................................................................30 Hình 2.8. Giao thức Woo-Lam.......................................................................31 Hình 2.9. Xác thực dựa trên mật khẩu............................................................32 Hình 2.10. Giao thức xác thực sử dụng mật khẩu của Needham....................34 Hình 2.11. Trao đổi khoá có lập mã EKE.......................................................36 3
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.12.Mô tả giao thức xác thực khoá đối xứng Needham-Schroeder.......................................................................38 Hình 2.13. Tấn công lên giao thức xác thực khoá đối xứng Needham-Schroeder.......................................................................39 Hình 2.14.Mô tả giao thức xác thực khóa công khai Needhan-Schroeder........................................................................40 Hình 2.15.Tấn công lên giao thức xác thực khóa công khai Needhan-Schroeder........................................................................42 Hình 2.16.Tấn công phiên song song.............................................................44 Hình 2.17.Tấn công phản xạ...........................................................................45 Hình 2.18. Mô tả giao thức được đề xuất bởi Neuman và Stubblebine..........46 Hình 2.19.Tấn công lên khiếm khuyết kiểu....................................................46 Hình 2.20.Mô tả giao thức được đề xuất bởi Denning và Sacco....................47 Hình 2.21..Biến thể của giao thức Otway-Rees..............................................48 Hình 2.22. Tấn công lên biến thể của giao thức Otway-Rees........................48 Hình 3.1.Mô hình dẫn xuất khóa....................................................................51 Hình 3.2.Khóa trong hệ thống mạng với n=4 user.........................................52 Hình 3.3.Sơ đồ thiêt lập khóa sử dụng KDC..................................................53 Hình 3.4.Mô hình thiết lập khóa sử dụng KDC(biến thể)..............................55 Hình 3.5.Key Confirmation Attack................................................................56 Hình 3.6.Sơ đồ trao đổi khóa dựa trên giao thức Kerberos............................57 Hình 3.7.Thuật toán trao đổi khóa Diffie-Hellman........................................60 Hình 3.8.Tấn công MiTM lên thuật toán Diffie-Hellman..............................61 Hình 3.9.User tự sinh khóa,CA cấp chứng chỉ...............................................63 Hình 3.10.CA sinh khóa cho User..................................................................63 Hình 3.11.Thuật toán Diffie-Hellman với chứng chỉ.....................................64 Hình 4.1.Mô hình trao đổi khóa dựa trên mật khẩu S-PAKE.........................67 4
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 4.2.Mô hình S-3PAKE...........................................................................69 Hình 4.3.Tấn công dò mật khẩu ngoại tuyến(kịch bản 1)..............................72 Hình 4.4.Mô hình tấn công dò mật khẩu ngoại tuyến(kịch bản 2).................74 Hình 4.5.Tấn công giả mạo thực thể...............................................................77 Hình 5.1.Chuẩn bị các thông số......................................................................81 Hình 5.2.Các bên tham gia nhận thông số từ file...........................................84 Hình 5.2.Alice tính A||X ................................................................................85 Hình 5.4.Bob tính A||X||B||Y..........................................................................86 Hình 5.5.Server tính X’||Y’.............................................................................88 Hình.5.6.Bob tính gxz và α .............................................................................91 Hình 5.7.Alice tính gxz,kiểm tra α và tính β ................................................93 Hình 5.8. Bob kiểm tra β ...............................................................................95 Hình 5.9.Tạo khóa phiên ................................................................................96 Hình 5.10.Mã hóa thông điệp.........................................................................97 Hình 5.11.Giải mã thông điệp.........................................................................99 Hình 5.12.Lược đồ tấn công doán password ngoại tuyến............................101 Hình 5.13.Thực hiện dò mật khẩu................................................................102
5
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
LỜI NÓI ĐẦU Ngày nay,khi công nghệ thông tin ngày càng phát triển,công nghệ mang đến cho con người rất nhiều lợi ích nhưng cũng không ít những rủi ro.Trong thế giới đó,con người luôn hứng chịu những nguy cơ,rủi ro an toàn với tần suất và mức độ cao. Mật mã học và những ứng dụng mật mã học có đóng góp vô cùng quan trọng cho mọi người trong cuộc chiến với những rủi ro đó, giup cho những liên lạc trở nên an toàn và đúng đắn trước những hiểm nguy khó lường trước của thế giới ảo. Với lý do đó,đồ án này sẽ tập trung nghiên cứu các lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khẩu-những ứng dụng mật mã học quan trọng trong việc đảm bảo an toàn trong thế giới ảo. Nội dung của đồ án bao gồm Chương 1. Hàm băm và chữ ký số : giới thiệu những kiến thức cơ bản tổng quan của hàm băm,chữ ký sô:hai trong số những ứng dụng mật mã học được sử dụng vô cùng rộng rãi. Chương 2.Giao thức xác thực : mô tả từ tổng quan đến chi tiết khái niệm,phân loại và đi sâu vào các loại giao thức xác thực.Bên cạnh đó là những tấn công điển hình lên các giao thức xác thực. Chương 3.Thiết lập khóa : phân tích các phương pháp trao đổi khóa từ mật mã khóa bí mật đến mật mã khóa công khai.Mô tả những rủi ro,nguy cơ mất an toàn lên các giao thức trao đổi khóa. Chương 4.Trao đổi khóa ba bên dựa trên mật khẩu:Đi sâu vào phân tích lược đồ trao đổi khóa ba bên dựa trên mật khẩu,những rủi ro có thể có và những tấn công lên giao thức này.
6
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Chương 5.Minh họa trên Maple:minh họa lược đồ trao đổi khóa ba bên dựa trên mật khẩu và tấn công lên giao thức này thông qua công cụ toán học Maple Mục đích của đồ án: Nghiên cứu những giao thức xác thực từ xa giữa các bên,những tấn công điển hình Nắm rõ lược đồ,ưu nhược điểm,các tấn công của giao thức trao đổi khóa ba bên dựa trên mật khẩu và đưa ra các biện pháp ngăn chặn các tấn công này. Hiểu và minh họa thành công giao thức trao đổi khóa ba bên dựa trên mật khẩu và những tấn công lên giao thức qua công cụ Maple
7
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Chương 1 HÀM BĂM,CHỮ KÝ SỐ I.Hàm băm 1.Khái niệm Các hàm băm đóng vai trò cơ bản trong mật mã hiện đại. Hàm băm sẽ tạo ra một đầu ra từ bản tin đầu vào. Đầu ra này được định nghĩa là mã băm (kết quả băm, giá trị băm). Nói một cách chính xác hơn, hàm băm h là một ánh xạ tính toán hiệu quả các xâu bit có độ dài hữu hạn tuỳ ý thành các xâu bit có độ dài n cố định. Hàm băm h là một ánh xạ với đầu ra có độ dài n cố định h: D →R và | D| >|R| điều này có nghĩa là không thể tránh khỏi các va chạm (tức là cùng một giá trị đầu ra có thể có nhiều bộ giá trị vào khác nhau). Nếu hàm h là ngẫu nhiên theo nghĩa tất cả các đầu ra là đồng xác suất thì có chừng 2 t-n các đầu vào ánh xạ tới mỗi đầu ra (t: số bit đầu vào, n: số bit đầu ra, t > n) và 2 đầu vào được chọn ngẫu nhiên sẽ có cùng đầu ra với xác suất 2 -n (không phụ thuộc vào t). ý tưởng cơ bản của việc sử dụng các hàm băm trong mật mã là sử dụng chúng như một ảnh biểu diễn rút gọn (đôi khi còn được gọi là vết, dấu tay số hay tóm lược thông báo) của một xâu vào và có thể được dùng như thể nó chính là xâu vào đó. Các hàm băm được dùng cho các sơ đồ chữ ký số kết hợp với việc đảm bảo tính toàn vẹn của dữ liệu, khi đó bản tin trước hết được băm và rồi giá trị băm (được xem như đại diện cho bản tin) sẽ được ký thay cho vị trí bản tin gốc. Hàm băm là một hàm h có ít nhất hai tính chất sau: Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ ý tới một đầu ra h(x) có độ dài bit n hữu hạn. 1.
8
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ dàng tính được h(x). 2.
Giả sử h là một hàm băm, x và x ' là các đầu vào và y và y' là các đầu ra. Ngoài hai tính chất cơ bản trên ta còn cần đến ba đặc tính an toàn của hàm băm: Tính khó tính toán nghịch ảnh: Đối với hầu hết các đầu ra được xác định trước, không có khả năng tính toán để tìm một đầu vào bất kỳ mà khi băm sẽ cho ra đầu ra tương ứng (Tức là tìm một nghịch ảnh x ' sao cho 1.
h ( x ') = y với y cho trước và không biết đầu vào tương ứng).
Khó tìm nghịch ảnh thứ hai: Không có khả năng tính toán để tìm một đầu vào khác với đầu vào đã cho trước (Tức là với x cho trước phải tìm x ' ≠ x 2.
) sao cho h ( x ) = h ( x ') 3.
Tính kháng va chạm.Không có khả năng về tính toán để tìm hai đầu
vào khác nhau bất kỳ x và x ' để h ( x ) = h ( x ') . 2.Phân loại hàm băm
Có nhiều cách phân loại hàm băm,nhưng ở đây chỉ đề cập đến 2 loại chủ yếu là : 1.
Hàm băm chuyên dụng(Dedicated hash functions) : Đây là những thuật toán được thiết kế đặc biệt phục vụ mục đích chủ yếu là hàm băm.
2.
Hàm băm dựa trên mã khối (Block cipher-based hash funions):chia thông điệp đầu vào thành các block và sử dụng các thuật toán block cipher như AES để đảm nhận chức năng hàm băm
2.1.Các hàm băm chuyên dụng (MD4 family) Hàm băm chuyên dụng là những hàm được thiết kế có thể tùy chỉnh trong nhiều trường hợp khác nhau.Trong đó nổi bật nhất là MD4,các dòng hàm băm khác như SHA,MD5...đều được phát triển từ MD4.MD4 được phát triển bởi Ronald Rivest,sử dụng các biến 32 bit,các toán tử logic như AND,OR,XOR và NOT. Kế tiếp MD4 là MD5,được Rivest đề xuất năm 1991,cả 2 thuật toán đều cho ra bản tin tóm lược đầu ra dài 128 bits,tức là có khả năng trách xung đột 9
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
là 264 . MD5 đã trở thành thuật toán được sử dụng cực kỳ rộng rãi, ví dụ như, trong bảo mật giao thức, để tính toán checksum các tập tin hoặc để lưu trữ mật khẩu dưới dạng bảng băm. Sau MD5,US NIST công bố hàm băm tiếp theo mang tên Secure Hash Algorithm (SHA) vào năm 1993,tiếp theo đó là SHA-1 vào năm 1995.Cả 2 đều có sản phẩm đầu ra dài 160 bits,khác biệt lớn nhất là thuật toán nén giửa SHA và SHA-1. Năm 1996, một cuộc tấn công MD5 bởi Hans Dobbertin khiến cho càng nhiều các chuyên gia khuyến cáo mọi người sử dụng SHA-1 để thay thế cho MD5. 2.2. Hàm băm dựa trên mã khối (Hash Functions from Block Ciphers). Như đã giới thiệu,hàm băm dựa vào mã khối trước hết chia thông điệp x thành các khối(block) có chiều dài cố định,sau đó tùy thuộc vào lược đồ bằm mà sử dụng chính thông điệp hoặc bản băm của khối trước làm khóa đễ mã hóa cho khối thông điệp sau thông qua các thuật toán mã khối.Ba thuật toán băm sau đây sẽ giải thích rõ ràng hơn vấn đề này. 2.2.1. Thuật toán băm Matyas - Meyer - Oseas. Vào: Xâu bit x. Ra : Mã băm n bit của x. 1.
Đầu vào x được phân chia thành các khối n bit và được độn nếu cần
thiết nhằm tạo khối cuối cùng hoàn chỉnh. Ta được t khối n bit: x1 x 2 x t . Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV). 2.
Đầu ra là H t được xác định như sau:
H 0 = IV , H i = E g ( H ) ( x i ) ⊕ x i , 1 ≤ i ≤ t i −1
Hình 1.1. Thuật toán băm Matyas - Meyer - Oseas. 10
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Trong thuật toán này,thông điệp x được chia thành các khối xi,các khối xi này là những khối được mã hóa qua bộ mã hóa E,bản mã sau đó lại được XOR ( ⊕ ) với chính xi trước đó để tạo ra bản tin tóm lược đầu ra(bản băm) Hi.Hàm băm trước đó Hi-1 được dùng làm khóa trong việc mã hóa bản tin xi bằng việc đi qua một bộ g có tác dụng chuyển đổi/độn thêm để H i-1 có độ dài phù hợp với độ dài khóa của thuật toán mã hóa khối.Đối với block đầu tiên,do chưa có giá trị băm trước đó nên H0 sẽ nhận giá trị hằng số,giá trị này được xác định trước đó. 2.2.2.Thuật toán băm Davies – Meyer. Vào: Xâu bit x. Ra : Mã băm n bit của x. Đầu vào x được phân thành các khối k bit (k là kích thước khoá) và được độn nếu cần thiết để tạo khối cuối cùng hoàn chỉnh. Biểu thị thông báo 1.
đã độn thành t khối k bit: x1 x 2 x t . Xác định trước một giá trị ban đầu n bit (ký hiệu IV). 2.
Đầu ra là H t được xác định như sau:
H0 = IV , H i = E x( H− i) 1 i
⊕H− i 1 , 1 i≤ t≤
Hình 1.2. Thuật toán băm Davies – Meyer. Thuật toán này tương tự với Matyas - Meyer – Oseas tuy nhiên vai trò x và H lại đảo ngược so với Matyas - Meyer - Oseas.Trong thuật toán Davies – Meyer,x được chia làm các khối k bit và đảm nhận vai trò của khóa,trong khi bản tin bẳm trước đó Hi-1 là thông điệp được đưa vào mã hóa,kết quả mã hóa sẽ được XOR với Hi-1 để có bản băm Hi. 11
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
2.2.3.Thuật toán băm Miyaguchi- Preneel. Đây là thuật toán cải tiến từ thuật toán Matyas - Meyer – Oseas,thông điệp x cũng được chia thành các khối và là đầu vào thông điệp được mã hóa,Hi-1 cũng là khóa cho quá trình tạo bản mã Hi.Điều khác biệt là bản mã của thông điệp xi ngoài việc XOR với xi còn XOR một lần nữa với Hi-1.
Hình 1.3.Thuật toán băm Miyaguchi- Preneel. Như vậy: H 0 = IV , H i = E g ( H ) ( x i ) ⊕ x i ⊕ H i −1 , 1 ≤ i ≤ t i −1
II.Chữ ký số 2.1.Khái niệm chữ ký số Chữ ký số là một trong những công cụ mật mã quan trọng nhất và đang ngày càng được sử dụng phổ biến cùng với các phương thức trao đổi khóa trên đường truyền không an toàn. 2.2.Các phương pháp tạo chữ ký số Chúng ta hãy so sánh chữ ký thường và chữ ký số. Khi ký chữ ký thường sẽ diễn ra như sau: • Mỗi cá nhân sử dụng các đặc trưng riêng biệt mà chỉ người đó mới có (nét ký, áp lực đặt lên bút v.v). • Việc giả mạo chữ ký được phát hiện nhờ phép phân tích đồ hoạ. • Chữ ký và tài liệu được ký truyền đi cùng với nhau trên cùng một tờ giấy; truyền chữ ký riêng rẽ khỏi tài liệu tuyệt đối không được; chữ ký không phụ thuộc vào nội dung tài liệu được ký. 12
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
• Các bản sao của các tài liệu đã được ký không có giá trị, nếu như mỗi bản sao không có chữ ký thật (chứ không phải chữ ký sao). Khi ký chữ ký số thì thuật toán như sau: • Mỗi cá nhân sử dụng một khoá bí mật riêng của mình. Bất cứ ý đồ nào muốn ký tài liệu mà không biết khoá mật riêng tương ứng thực tế sẽ thất bại. •
• Chữ ký số của tài liệu là một hàm số của nội dung tài liệu đó và khoá mật; chữ ký số có thể truyền đi tách biệt khỏi tài liệu. • Một bản sao tài liệu với chữ ký số không phân biệt so với tài liệu gốc. 2.3.Một số lược đồ chữ ký số Chữ ký số được xây dựng trên cơ sở kết hợp mã hoá khoá công khai với hàm băm. Tuy nhiên cách sử dụng khóa ở đây khác với trong các hệ mật khóa công khai. Các bước tạo chữ ký và kiểm tra chữ ký được mô tả trên hình sau:
Hình 1.4.Mô hình tạo chữ ký số RSA 13
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 1.5.Các bước kiểm tra chữ ký số 2.3.1.Sơ đồ chữ ký RSA Giả sử n = p.q , trong đó p và q là các số nguyên tố lớn có kích thước tương đương. K = {( n , e , d ) : d ∈ Z n* , ed ≡ 1 mod ( n ) }
Với K = ( n , e , d ) ta có D = d là khoá bí mật, E = ( n , e ) là khoá công khai, m là bản tin cần ký. Tạo chữ ký
: S = sig D ( m ) = m d mod n
Kiểm tra chữ ký: verE ( m , s ) = đúng ⇔ m ≡ Se mod n . Hoạt động của sơ đồ chữ ký RSA có thể mô tả như sau: 2.3.1.1.Trường hợp bản tin rõ m không cần bí mật. A ký bản tin m và gửi cho B. B kiểm tra chữ ký của A.
Hình 1.6.Sơ đồ chữ ký số không cần bí mật bản tin 14
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Giả sử A muốn gửi cho B bản tin rõ m có xác thực bằng chữ ký số của mình. Trước tiên A tính chữ ký số SA = sig D ( m ) = m d mod n A A
A
Sau đó A gửi cho B bộ đôi ( m , SA ) . B nhận được ( m , SA ) và kiểm tra xem e điều kiện m ≡ SA mod n A có thoả mãn không. Nếu thoả mãn, thì khi đó B A
khẳng định rằng verE ( m , SA ) nhận giá trị Đúng và chấp nhận chữ ký của A A
trên m. Ví dụ A muốn gửi bản rõ có chữ ký số m=4 cho B: 1. Chọn p = 3 và q = 11 2. Tính n = p . q = 33 3. Φ (n)=(3-1)(11-1)= 20 4. Chọn e = 3 5. d = e-1 mod 20 = 7 mod 20 Vậy khóa công khai là (n,e)=(33,3) Tính chữ ký số Bản rõ m = 4: SA = md mod n = 47 mod 33= 16 mod 33 Vậy thông điệp cần gửi là (m,SA)=(4,16) B kiểm tra chữ ký số của thông điệp A đã gửi
m ≡ SAe mod nA =163 mod 33 = 4 A
Như vậy chữ ký số hợp lệ 2.3.1.2.Trường hợp bản tin rõ m cần giữ bí mật A ký bản tin rõ m để được chữ ký SA . Sau đó A dùng khoá mã công khai E B của B để lập bản mã M = E B ( m , SA ) rồi gửi đến B. Khi nhận được bản mã
M, B dùng khoá bí mật D B của mình để giải mã cho M và thu được m , SA . Tiếp đó dùng thuật toán kiểm tra verE để xác nhận chữ ký của A. A
15
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 1.7.Sơ đồ chữ ký số có bí mật bản tin Ví dụ Các bước thực hiện mỗi bên Bên A
Bên B
1.Chọn pA=1123;qA=1223
Chọn pB=1231;qB = 1447
2.Tính nA=pA*qA= 1373429
Tính nB=pB*qB=1781257
3.Tính 1371084
Φ A(n)=(pA-1)(qA-1)=
Φ B(n)=(pB-1)(qB-1)=
Tính 1778580
4.Chọn eA = 1919
Chọn eB= 5999
5.Tìm dA= 545147
Tìm dB= 1152119
6.Public (nA,eA)=(1373429,1919)
key:
7.Private (nB,dB)=(1373429,545147)
key:
Public key: (nB,eB)=(1781257,5999) Private 1152119)
key:
(nB,dB)=(1781257,
A và B trao đổi các cặp khóa công khai cho nhau Giả sử thông điệp A cần truyên là m=240988 A sẽ tính 1.SA=mdA mod nA=240988545147 mod 1373429 = 500724 2.Tính X = m SA ; 3. M = X e mod n B =1599029||279545 B
16
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Và gửi M cho B,khi B nhận được M,B sẽ tính 1. X = M
dB
mod n B =240988||500724
2. X = m S A . 3. m ' = S Ae mod nA m’= 240988. A
Kiểm tra thấy m’=m,vậy thông điệp đã được gửi hợp lệ 2.3.2.Sơ đồ chữ ký số Elgamal Thuật toán Elgamal được mô tả như sau Tạo khóa a)
* Tạo 1 số nguyên tố p lớn và một phần tử sinh g của nhóm nhân Z p
của các số nguyên mod p . b)
Chọn một số nguyên ngẫu nhiên a , 1≤ a ≤ p − 2và tính ga mod p
c)
Khoá công khai là bộ 3 số ( p,g,ga) , khoá bí mật là a .
Chữ ký số: a)
Chọn KE ngẫu nhiên sau cho UCLN(KE,p-1)=1.
b)
K Tính r ≡ g mod p .
c)
−1 Tính s ≡ (x − a.r)KE mod p − 1.
E
d) Chữ ký số là (r,s) Kiểm tra chữ ký số a)
Tính t = (ga )r .r s mod p .
b)
Nếu t =gx thì chữ ký hợp lệ.
c)
Nếu t ≠ gx thì chữ ký không hợp lệ.
17
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 1.8. Sơ đồ chữ ký số Elgamal
Chương 2 GIAO THỨC XÁC THỰC I.Khái niệm xác thực Giao thức là tập hợp các quy tắc hoặc thỏa thuận để định rõ định dạng và truyền tải dữ liệu mà làm cho giao tiếp trên mạng hiệu quả hơn Xác thực là một hành động nhằm thiết lập hoặc chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là, những lời khai báo do người đó đưa ra hoặc về vật đó là sự thật Khái niệm giao thức xác thực có thể chia làm 3 khái niệm con : xác thực nguồn gốc dữ liệu,xác thực thực thể và thiết lập khóa 1.Xác thực nguồn gốc dữ liệu
18
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Khái niệm xác thực nguồn gốc dữ liệu dễ bị nhầm lẫn với khái niệm tòan vẹn dữ liệu(data integrity).Hai khái niệm này trong một số trường hợp thường bị cho là một,tuy nhiên trên thực tế đó là hai khái niệm khác nhau: Thứ nhất,xác thực nguồn gốc dữ liệu cần thiết đến kênh liên lạc.Đó là dịch vụ an toàn để bên nhận thông báo có thể kiểm tra xem bên gửi có phải là bên được yêu cầu hay không.Trong khi đó,toàn vẹn dữ liệu không cần đến đặc tính giao tiếp:dịch vụ an toàn có thể được cung cấp trên dữ liệu được lưu trữ. Thứ hai là xác thực nguồn gốc dữ liệu cần phải xác định nguồn gốc của thông điệp được gửi đi trong khi toàn vẹn dữ liệu không cần như vậy. Thứ ba là xác thực nguồn gốc dữ liệu bao gồm sự thiết lập tính tươi của thông báo trong khi đó nguyên vẹn dữ liệu lại không cần làm như vậy vậy : Một đoạn cũ cũng có thể có tính nguyên vẹn hoàn hảo. Để đạt được dịch vụ xác thực nguồn gốc dữ liệu, thực thể nhận thông báo nên kiểm tra xem thông báo đã được gửi đủ hiện thời hay không ( Tức là khoảng thời gian giữa phát và thu thông báo là đủ nhỏ ). Nhận xét rằng vấn đề thông báo có tươi hay không cần được xác định bởi những ứng dụng. Một số ứng dụng đòi hỏi khoảng thời gian ngắn hơn để cho thông báo là tươi là trong khoảng vài giây ( Như trong nhiều thách đố-giải đó dựa trên những ứng dụng liên lạc an toàn thời gian thực ). Một số ứng dụng cho phép chu kỳ tươi dài hơn. Từ những thảo luận trên chúng ta có thể đặc trưng khái niệm xác thực nguồn gốc dữ liệu như sau : a. Bao gồm việc truyền thông báo từ nguồn được yêu cầu ( Thực thể truyền ) đến thực thể nhận nơi sẽ kiểm tra tính hợp lệ của thông báo sau khi nhận được. b. Kiểm tra tính hợp lệ của thông báo được tiến hành bởi thực thể nhận nhằm thiết lập định danh của thực thể truyền thông báo. c. Kiểm tra tính hợp lệ cũng nhằm thiết lập tính nguyên vẹn dữ liệu của thông báo theo sau sự khởi hành của nó từ thực thể truyền.
19
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
d. Kiểm tra tính hợp lệ còn nhằm thiết lập tính sống của thực thể truyền thông báo. 2.Xác thực thực thể Xác thực thực thể là một quá trình liên lạc hay giao thức mà qua nó một thực thể thiết lập sự tương ứng sống với một thực thể khác và chứng minh sự bản thân là hợp lệ. Một số kiểu xác thực thực thể phổ biến trong hệ thống phân tán : Kiểu Host-Host : Những máy tính trong hệ thống phân tán được gọi là node hay platform.Hoạt động tại mức trạm thường yêu cầu sự hợp tác trong chúng. Ví dụ, trong việc “khởi động” từ xa của một node, khi khởi động, node phải nhận biết trạm chủ tin cậy để cung cấp thông tin cần thiết như là bản sao hệ điều hành tin cậy, thiết lập đồng hồ tin cậy hay những thiết lập môi trường tin cậy hiện hành. Sự thiết lập thông tin tin cậy thường đạt được thông qua thực hiện giao thức xác thực. Trường hợp thông thường thuộc kiểu trạm tới trạm trong liên lạc là thiết lập client-server khi một client yêu cầu những dịch vụ nào đó từ server. Kiểu User-Host : Người sử dụng đạt được truy cập đến hệ thống máy tính bằng cách đăng nhập vào hệ thống. Những ví dụ đơn giản nhất là đăng nhập vào máy tính thông qua TELNET hay tiến hành truyền tệp thông qua FTP cả hai có thể đạt được thông qua thực hiện giao thức xác thực mật khẩu. Kiểu Process-Host : Sự phát triển mạnh mẽ của công nghệ đã cho phép thực hiện những công việc mà trước đây chỉ có trong viễn tưởng. Một trạm có thể cấp cho các tiến trình ngoại nhiều kiểu quyền truy cập khác nhau. Ví dụ một đoạn “mã chương trình di động” hay “Java applet” có thể di chuyển đến trạm ở xa và thực hiện trên trạm đó như một tiến trình từ xa. Trong những ứng dụng nhạy cảm cần phải thiết kế những cơ chế xác thực sao cho applet có thể truy cập và cấp quyền thích hợp trên trạm đó. Kiểu Member-Club : Một hội viên chứng minh mình có giữ thẻ hội viên của câu lạc bộ có thể được xem như sự tổng quát hoá của “kiểu người sử dụng tới trạm”. ở đây câu lạc bộ chỉ cần quan tâm đến kiểm tra tính hợp lệ của thẻ hội viên mà không cần thiết phải biết thêm thông tin chẳng hạn như định danh đúng của hội viên. 20
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
3.Trao đổi khóa dựa trên xác thực Thường thì những bên liên lạc thực hiện công việc giao thức xác thực thực thể để làm nền cho những liên lạc an toàn khác tại mức cao hơn hoặc tại mức ứng dụng như việc trao đổi khóa hay thoả thuận khoá. Trong nhiều tài liệu thì những giao thức xác thực thực thể, thiết lập khoá có xác thực, những giao thức thoả thuận khoá, trao đổi khoá, những giao thức an toàn hay đôi khi thậm chí là những giao thức mật mã thường nói đến cùng một tập của những giao thức liên lạc. Chi tiết quá trình trao đổi khóa,trao đổi khóa dựa trên xác thực sẽ được trình bày kỹ hơn trong chương 3 của đồ án. 4.Tấn công trên giao thức xác thực Cho dù mục đích cuối cùng của quá trình xác thực là xác thực nguồn gốc dữ liệu,xác thực thực thể hay để trao đổi khóa, những kỹ thuật mật mã chắc chắn được sử dụng trong quá trình này. Tấn công lên giao thức xác thực bao gồm kẻ tấn công và liên minh của chúng ( gọi chung là Malice ) đạt được mục đích đen tối.Điều này có thể là rất nghiêm trọng chẳng hạn Malice đạt được thông báo bí mật hay khóa hoặc ít nghiêm trọng hơn chẳng hạn như Malice lừa dối thành công đối với một thực thể để thiết lập một niềm tin sai về một tính chất yêu cầu. Chúng ta phải nhấn mạnh rằng những tấn công lên những giao thức xác thực chủ yếu là những tấn công không liên quan với sự phá vỡ những thuật toán mật mã phía dưới. Thường là những giao thức xác thực là không an toàn không phải do những thuật toán mật mã phía dưới mà chúng sử dụng mà do những khiếm khuyết thiết kế giao thức cho phép Malice phá vỡ mục đích xác thực mà không cần phải phá vỡ bất kỳ thuật toán mật mã nào. Vì lý do đó trong phân tích những giao thức xác thực chúng ta thường giả thiết rằng những thuật toán mật mã phía dưới là “hoàn hảo” mà không cần xét đến yếu điểm có thể có của chúng. Những yếu điểm đó thường được xét đến trong những chủ đề khác của mật mã. II.Những kỹ thuật xác thực cơ bản :
21
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Có nhiều kỹ thuật khác nhau dựa trên giao thức để hiện thực hoá xác thực và thiết lập khoá có xác thực nhưng những kiến thiết giao thức cơ bản đặc biệt là những kiến thiết tốt lại là thống nhất. Những kỹ thuật xác thực cơ bản là : 1 Tính tươi của thông báo và tính sống của thực thể : Thông báo có tươi hay không là một phần cần thiết của xác thực nguồn gốc dữ liệu và cả trong trường hợp xác thực thực thể khi thực thể quan tâm đến sự tương ứng sống của bên liên lạc chủ ý. Bởi vậy những cơ chế thiết lập tính tươi của thông báo và tính sống của thực thể là những thành phần cơ bản nhất trong những giao thức xác thực. Mô tả sau đây là những cơ chế chuẩn và cơ bản để đạt được những chức năng này. Trong những mô tả này, Alice đứng trên vị trí của người yêu cầu theo tính chất ( Ví dụ là tính khoẻ của Alice ta hay tính tươi của thông báo ) và Bob đứng trên vị trí của người kiểm tra theo tính chất yêu cầu. Chúng ta giả thuyết rằng Alice và Bob chia sẻ khoá bí mật K AB nếu cơ chế sử dụng những kỹ thuật mật mã đối xứng hoặc Bob biết khoá công khai của Alice thông qua chứng chỉ khoá công khai nếu cơ chế sử dụng những kỹ thuật mật mã phi đối xứng. 1.1.Cơ chế thách đố-giải đố (Challenge-Respone) Dạng thông thường của đầu vào của Bob có thể là số ngẫu nhiên được gọi là nonce được sinh ra bởi Bob và truyền sang cho Alice trước đó. Giả sử N B ký hiệu nonce sinh ra bởi Bob. Cơ chế làm tươi thông báo này có khuôn dạng tương tác sau đây :
Hình 2.1. Cơ chế thách đố-giải đố Thông báo được truyền trong bước một thường gọi là thách đố của Bob đối với Alice và thông báo được truyền trong bước thứ hai gọi là giải đố của 22
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Alice đối với Bob. Bob ở trong vị thế của người khởi xướng trong khi đó Alice ở trong vị thế của người trả lời. Kỹ thuật được sử dụng trong cơ chế này là kỹ thuật mật mã đối xứng. Bởi vậy sau khi nhận được giải đố của Alice,Bob phải giải mã bản mã sử dụng khoá chia sẻ KAB. Nếu sự giải mã lấy ra đúng nonce của anh ta thì Bob có thể kết luận rằng Alice thực ra đã thực hiện biến đổi mật mã được yêu cầu sau hành động gửi thách đố của anh ta : Nếu khoảng thời gian giữa thách đố và giải đố là nhỏ chấp nhận được thì thông báo M được coi là tươi thực sự. Bản chất của cơ chế làm tươi thông báo này là đảm bảo sự biến đổi mật mã của Alice phải được thực hiện sau khi Alice nhận được nonce của Bob. Đó là do nonce của Bob được lấy mẫu ngẫu nhiên từ một không gian đủ lớn và như vậy không ai có thể đoán trước được giá trị của nó trước khi anh ta gửi nó đi. Nếu thuật toán lập mã trong cơ chế xác thực trên không cung cấp dịch vụ nguyên vẹn dữ liệu đúng đắn thì Bob không thể thiết lập được tính tươi của thông báo M. 1.2.Chuẩn hóa cơ chế thách đố-giải đố . ISO và IEC đã chuẩn hoá ba cơ chế thách đố-giải đố được đưa ra hiện nay đối với những cơ chế xác thực thực thể đơn phương. Sự chuẩn hoá đối với cơ chế đã nghiên cứu trên được gọi là “giao thức xác thực đơn phương hai bước” :
Hình 2.2. Chuẩn hóa cơ chế thách đố-giải đố. Sau khi nhận được TokenAB Bob giải mã nó và +Chấp nhận nếu thấy RB là nonce mà Bob gửi cho Alice. +Từ chối trong trường hợp ngược lại. Các ký hiệu của ISO/IEC để đặc tả giao thức bao gồm :Text1, Text2 là những trường tuỳ chọn, dấu || ký hiệu nối xâu bít, còn RB là nonce được sinh ra bởi Bob. 23
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Chuẩn trên là cơ chế xác thực thực thể. Chính vì vậy mà nó đưa vào thông báo B chính là định danh của Bob thay cho thông báo M là cực kỳ quan trọng. Trong giao thức này Bob là chủ thể xác thực và do vậy mà có mục đích thiết lập sự tương ứng sống của Bob. 1.3.Cơ chế tem thời gian(Time Stamp). Trong cơ chế tem thời gian Alice thêm thời gian hiện tại vào thông báo của mình. Giả sử TA là ký hiệu tem thời gian được tạo ra bởi Alice khi Alice tạo ra thông báo của Alice. Cơ chế làm tươi thông báo này có khuôn dạng không tương tác sau đây:
Hình 2.3. Cơ chế tem thời gian. Quá trình giải mã được thực hiện bởi Bob cũng cần được kiểm tra đối với sự đúng đắn của tính nguyên vẹn dữ liệu. Sau khi giải mã Bob có thể so sánh TA nhận được với thời gian của chính anh ta với giả thiết rằng những người tham gia giao thức sử dụng thời gian chuẩn toàn cầu như GMT chẳng hạn. Nếu sự khác nhau về thời gian đử nhỏ cho phép bởi ứng dụng trong suy nghĩ của Bob thì thông báo M dường như là tươi. Tem thời gian tránh được sự cần thiết phải tương tác và vì vậy thích hợp cho những ứng dụng liên quan đến không tương tác ví dụ như trong những ứng dụng thư điện tử. Sự bất tiện của cơ chế tem thời gian là việc đồng bộ hoá đồng hồ thời gian cần được đòi hỏi và phải được duy trì an toàn,trên thực tế điều này rất khó khăn. Trong kiến thiết giao thức cơ bản nonce và tem thời gian là những thành phần đặc biệt của thông báo. Chúng đóng vai trò nhận biết tính tươi của những thông báo khác được tích hợp mật mã với chúng. 1.4.Sự chuẩn hóa cơ chế tem thời gian. ISO/IEC cũng chuẩn hoá những cơ chế tem thời gian đối với những giao thức xác thực. Sự chuẩn hoá ISO/IEC đối với cơ chế nêu trên được gọi 24
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
là “Giao thức xác thực đơn phương một bước ISO khoá đối xứng” và là như sau đây :
Hình 2.4.Sự chuẩn hóa cơ chế tem thời gian ở đây
TA NA
ký hiệu sự lựa chọn giữa sử dụng TA là tem thời gian và NA là số
tuần tự(sequence number) . Cơ chế số tuần tự cũng có hai nhược điểm. Thứ nhất một tập thông tin trạng thái cần phải được duy trì đối với mỗi bên liên lạc. Điều này là khó đối với những ứng dụng trong môi trường mở trong khi mỗi thực thể có thể liên lạc với nhiều thực thể khác. Bởi vậy cơ chế số tuần tự không thể phân tách công việc tốt được. Thứ hai quản lý nơi lưu giữ số tuần tự có thể là rất rắc rối trong sự có mặt của những sai sót liên lạc, hoặc ngẫu nhiên hoặc chủ ý như là tấn công từ chối dịch vụ chẳng hạn. Chúng ta nhớ lại rằng giao thức xác thực nên là phi trạng thái : Một giao thức có trạng thái không thể vận hành đúng đắn trong môi trường “thù địch”. Chính vì vậy mà cơ chế số tuần tự không được khuyên cáo sử dụng mặc dù những cơ chế như vậy đã được chuẩn hoá theo chuẩn ISO/IEC. 1.5.Cơ chế phi chuẩn Từ những cơ chế trên có thể dễ dàng xây dựng một biến thể,ví dụ như
Hình 2.5. Cơ chế phi chuẩn Đây là loại cơ chế lập mã rồi lại giải mã của thực thể nhận biết tính tươi. Thực hiện cơ chế này sẽ cung cấp phương cách để kiểm tra tính hợp lệ của sự tương ứng sống của bên liên lạc có chủ định. Cơ chế này không
25
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
phù hợp để xây dựng những giao thức xác thực. Trong cơ chế này Alice có thể tình cờ làm lộ thông tin cần giữ kín. Malice có thể ghi lại bản mã từ cuộc trao đổi kín giữa Alice và Bob và chèn nó vào trong giao thức sử dụng cơ chế lập mã rồi sau lại giải mã . Do đó cơ chế lập mã rồi lại giải mã không được ISO/IEC xem xét trong quá trình chuẩn hóa. Tuy nhiên đã có nhiều giao thức xác thực được thiết kế để sử dụng cơ chế lập mã rồi lại giải mã. Và việc sử dụng những cơ chế không chuẩn như vậy là nguyên nhân chính của những khiếm khuyết an toàn trong những giao thức này. 2.Xác thực lẫn nhau Những cơ chế cơ bản đối với tính tươi của thông báo và tính sống của thực thể đã đưa ra hiện đạt được cái gọi là “xác thực đơn phương” có nghĩa là chỉ có một trong hai thực thể tham gia vào giao thức là được xác thực. Trong xác thực lẫn nhau cả hai thực thể liên lạc đều được xác thực nhau. Người ta có thể coi xác thực lẫn nhau chỉ đơn giản là hai xác thực đơn phương. Tức là xác thực lẫn nhau có thể đạt được bằng cách áp dụng một trong những giao thức xác thực đơn phương cơ bản hai lần ở hai hướng ngược nhau mà thôi. Nhưng trên thực tế quan niệm này là không chính xác. Quan hệ tinh tế giữa xác thực lẫn nhau và xác thực một phía đã không được hiểu rõ ràng từ trong giai đoạn sớm của quá trình chuẩn hoá ISO/IEC đối với giao thức dưới đây. Giao thức : Giao thức xác thực lẫn nhau ba bước sử dụng khoá công khai ISO. Giả thiết :
A có chứng chỉ khoá công khai CertA;
B có chứng chỉ khoá công khai CertB; Mục đích : Họ đạt được sự xác thực lẫn nhau.
26
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.6. Giao thức xác thực lẫn nhau ba bước sử dụng khoá công khai ISO. Trong đó :
TokenAB = RA || RB || B || sigA(RA || RB || B);
TokenBA = RB || RA || A || sigB(RB || RA || A). Tấn công của Wiener : Tấn công này còn được gọi là tấn công Canada do được khám phá ra bởi cơ quan thành viên Canada của ISO.
Hình 2.7.Tấn công Wiener Các bước tấn công 1
Malice giả mạo Bob gửi cho Alice RB.
27
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Alice nhận được thông điệp,gửi lại cho Malice : CertA, RA || RB || B || sigA(RA || RB || B ). 2
a)
Malice tiến hành tách lấy RA và gửi nó cho Bob.
b)
B nhận được RA tiến hành gửi lại cho Malice CertB, R’ B || RA || A || sigB(R’B || RA || A)
3 Malice chuyển tiếp thông điệp của Bob cho Alice mà không thay đổi thành phần nào trong thông điệp. Kết quả là Alice nghĩ rằng Bob đã khởi tạo phiên liên lạc trong khi người khởi tạo thật sự là Malice Ta có thể thấy giá trị RB do Malice và Bob gửi là khác nhau.Do đó giao thức trên có một cách khắc phục hiệu quả. Đó là A phải duy trì trạng thái phù hợp với nonce RB của B đến khi phiên liên lạc hiện hành kết thúc. 3 Xác thực liên quan đến bên thứ ba tin cậy : Trong quá trình xác thực,chúng ta đã giả thiết rằng hai bên tham gia giao thức hoặc là đã chia sẻ kênh truyền an toàn trong trường hợp những kiến thiết sử dụng những kỹ thuật mật mã đối xứng hoặc biết khoá công khai của bên kia trong trường hợp những kiến thiết sử dụng những kỹ thuật mật mã phi đối xứng.Điều này có mục đích làm tươi kênh an toàn giữa các bên bằng cách khẳng định lại sự tương ứng sống giữa họ với nhau. Nếu hai thực thể không biết nhau muốn tiến hành liên lạc an toàn thì đầu tiên phải thiết lập kênh an toàn. Kênh an toàn được củng cố bởi khoá mật mã. Bởi vậy hai thực thể muốn thiết lập kênh an toàn với nhau thì thực hiện giao được gọi là giao thức thiết lập khoá có xác thực. Sau khi kết thúc phiên liên lạc an toàn hai thực thể sẽ nhanh chóng vứt bỏ kênh này. Tức là họ quên đi khoá sử dụng trong kênh đó và không bao giờ sử dụng nó nữa. Chính vì vậy mà kênh an toàn này gọi là kênh phiên và khoá củng cố nó gọi là khoá phiên. Kiến trúc chuẩn cho các thực thể thực hiện xác thực và những giao thức thiết lập khoá trong hệ thống mở là sử dụng dịch vụ xác thực tập trung từ bên thứ ba tin cậy. Dịch vụ như vậy có thể là trực tuyến hoặc ngoại tuyến. Có hai chuẩn ISO/IEC đối với các giao thức xác thực bên thứ ba tin cậy. Một cái có tên “giao thức xác thực bốn bước ISO” và một cái có tên 28
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
“giao thức xác thực năm bước ISO”. Hai giao thức này đạt được xác thực thực thể hai phía và thiết lập khoá phiên có xác thực. Giao thức Woo-Lam : Mục đích của giao thức này là Alice xác thực mình đối với Bob thậm chí khi hai thực thể ban đầu còn chưa biết nhau.
Hình 2.8. Giao thức Woo-Lam. Mô tả: 1 Alice gửi cho Bob định danh của mình để yêu cầu xác thực với Bob. 2
Bob sinh ra một nonce NB và gửi cho Alice.
3
Alice mã hóa NB bằng khóa KAT chia sẻ với Trent : { N B } K AT .
4
Bob gửi bản mã bao gồm định danh Alice và { N B } K AT Alice gửi cho ở
bước ba cho Trent.Thông điệp được mã hóa bằng khóa KBT chia sẻ với Trent. Trent dựa vào hai khóa KBT và KAT lần lượt giải mã hai lần bản mã để thu được NB.Sau đó mã hóa NB bằng KBT và gửi lại cho Bob. 5
Bob giải mã thông điệp từ Trent,so sánh NB có được từ thông điệp với NB mình sinh ra và : 6
a)
Chấp nhận Alice xác thực đúng nếu NB đúng là mình sinh ra.
b) Từ chối trong trường hợp ngược lại. 4.Xác thực dựa trên mật khẩu :
29
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Xác thực dựa trên mật khẩu là hình thức xác thực phổ biến nhất trong mô hình xác thực từ xa giữa user và host.ở dạng xác thực này user và host chia sẻ mật khẩu. Người sử dụng U muốn sử dụng dịch vụ của trạm H thì đầu tiên phải được khởi hoạt bởi H và được cấp phát mật khẩu. H lưu trữ một kho mật khẩu của tất cả người sử dụng. Mỗi mục của kho lưu trữ mật khẩu là một cặp (IDU,PU) với IDU là định danh của U còn PU là mật khẩu tương ứng của U.
Hình 2.9. Xác thực dựa trên mật khẩu Giao thức dựa trên mật khẩu được trình bày như sau : 1.
Khi User U muốn đăng nhập vào Host H,U gửi cho H bản tin IDU..
2.
H nhận được yêu cầu của U,gửi lại bản tin yêu cầu U cung cấp mật khẩu cho định danh IDU.
3.
U gửi cho H mật khẩu của mình (tương ứng với định danh IDU ).
4.
H tìm cặp (IDU,PU) từ trong kho lưu trữ và : a.
Chấp nhận nếu thấy có cặp trùng với (IDU,PU) trong kho.
b. Từ chối trong trường hợp ngược lại. Cần phải lưu ý rằng giao thức này thật ra không phải là xác thực thực thể cũng không phải là xác thực một phía từ U đến H vì không có phần nào của giao thức đả động đến nhận biết tính tươi đối với nhận biết tương ứng sống của U. Giao thức này gặp phải hai vấn đề nghiêm trọng: 1. Thứ nhất là khả năng tổn thương đối của tệp mật khẩu lưu giữ trong H. Tệp này có thể bị đọc bởi Malice. Với tệp mật khẩu,Malice có thể đạt được tất cả quyền của tất cả những người sử dụng. Anh ta có thể đóng giả bất kỳ người sử dụng nào và dưới vỏ bọc tên người khác,nguy cơ bị phát hiện là rất thấp. 30
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
2. Thứ hai là đối với giao thức truy cập từ xa dựa trên mật khẩu làm cho mật khẩu đi từ U đến H dưới dạng bản rõ bởi vậy nó có thể bị Malice nghe trộm. Đây là kiểu tấn công nghe trộm mật khẩu trực tuyến. 4.1 Giao thức mật khẩu Needham và việc triển khai trong hệ điều hành UNIX: Needham có sáng kiến đưa ra phương pháp hiệu quả và đơn giản đáng ngạc nhiên để khắc phục lưu trữ an toàn mật khẩu tại máy trạm. Trạm H nên sử dụng hàm một chiều để lập mã mật khẩu tức là mục (IDU,PU) nên được thay bằng (IDU, f(PU)) ở đó f là hàm một chiều cực kỳ khó nghịch đảo.
Hình 2.10. Giao thức xác thực sử dụng mật khẩu của Needham. Đây là sơ đồ xác thực sử dụng mật khẩu được cài đặt cho hệ điều hành UNIX. Hàm f được cài đặt sử dụng thuật toán lập mã DES. Bằng cách này biến đổi f(PU) sử dụng DES có thể được coi là hàm băm một chiều có khoá,khoá là PU còn tham số là salt. Nhờ có salt mục mật khẩu lưu trữ trong tệp mật khẩu trong H sẽ là (IDU,salt,f(PU,salt)). Mặc dù tính bí mật của tệp mật khẩu đã được đảm bảo vì đã được lập mã nhưng tính nguyên vẹn dữ liệu vẫn phải được duy trì. Tuy vậy mật khẩu vẫn có thể bị nghe trộm trực tuyến vì vậy mà mật khẩu sử dụng một lần được đề xuất để chống lại tấn công dạng này. 4.2 Sơ đồ mật khẩu sử dụng một lần : Lamport đề xuất ý tưởng đơn giản để cản phá nghe trộm mật khẩu trực tuyến. Kỹ thuật này có thể được coi là sơ đồ mật khẩu một lần. “Một lần” có 31
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
nghĩa là những mật khẩu được truyền từ U đến H không lặp lại tuy nhiên chúng có quan hệ tính toán với nhau. Bây giờ thì một mật khẩu bị nghe trộm sẽ không thể sử dụng lại và vấn đề nghe trộm mật khẩu đã được ngăn ngừa thành công. Trong thời gian khởi hoạt của người sử dụng mục mật khẩu của U được thiết lập là (IDU, fn(PU)) ở đó def
f n (PU ) = f{ (...(f (PU ))...) n
Với n là số nguyên lớn. Người sử dụng U sẽ chỉ phải nhớ PU trong trường hợp giao thức xác thực mật khẩu. Khi U và H thực hiện xác thực mật khẩu lần đầu tiê, sau lời nhắc “Mật khẩu”(tại bước thứ 2 trong mô hình 2.9),một thiết bị tính toán của U sẽ yêu cầu U nhập khoá PU vào và sau đó tính fn-1(PU) bằng cách áp dụng lặp lại f đúng n-1 lần. Điều này có thể hiệu quả khi n lớn chẳng hạn n = 1000. Kết quả sẽ được gửi cho H như thông báo tại bước thứ ba trong mô hình 2.9 Khi nhận được fn-1(PU) thì H chỉ việc áp dụng f một lần nữa trên mật khẩu nhận được để đạt được fn(PU) và thực hiện kiểm tra tính đúng đắn như trong bước tư của mô hình 2.9. Ngoài ra H còn cập nhật mục mật khẩu của U bằng cách thay thế fn(PU) bằng fn-1(PU). Giao thức này là có trạng thái với con đếm giảm dần từ n đến 1. Khi con đếm đạt đến 1 thì U và H phải tái thiết lập mật khẩu mới cho U. Do đó mà đồng bộ con đếm mật khẩu giữa U và H luôn phải được duy trì. 4.3 Thêm Salt vào trong giao thức xác thực : Đa số những hệ thống dựa trên mật khẩu khuyên người sử dụng chọn mật khẩu của họ sao cho chúng nên có 8 ký tự . Mật khẩu có độ dài như vậy có thể nhớ được bởi đa số người sử dụng mà không cần phải viết ra giấy. Vì các ký tự ASCII được biểu diễn bằng một byte gồm 8 bít nên mật khẩu 8 ký tự sẽ tương ứng với xâu 64 bít. Không gian của những xâu 64 bít có 264 khả năng và như vậy là đủ lớn để chống lại được việc đoán mật khẩu hoặc thậm chí những tấn công duyệt tự động. 32
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Mặc dù vậy người sử dụng thường chọn mật khẩu cho dễ nhớ như là tên người thân,người yêu,sinh nhật,những từ trong từ điển, tên người sử dụng tất cả đều là chữ thường,hoặc có thể thêm vào cuối một hai chữ số. Do đó không gian mật khẩu nhỏ hơn 264 rất nhiều và là đối tượng cho tấn công từ điển ngoại tuyến. Malice sẽ sử dụng f(PU),dò tìm trong từ điển để tìm được mật khẩu trùng khớp với PU. Thực hiện ngoại tuyến sẽ tự động và nhanh hơn so với trực tuyến. Sơ đồ mật khẩu một lần của Lamport cũng không thể chống lại được tấn công từ điển ngoại tuyến: Malice có thể nghe trộm giá trị trạng thái hiện hành i và fi(PU) và từ đó có thể tiến hành duyệt tìm từ điển. Bellovin và Merritt đề xuất một giao thức mới có tên là Trao đổi khoá được lập mã (Encrypted Key Exchange- hay viết tắt là EKE ). Giao thức này bảo vệ mật khẩu chống lại cả những tấn công nghe trộm trực tuyến và từ điển ngoại tuyến. Kỹ thuật sử dụng là lập mã xác suất cơ bản.
Hình 2.11. Trao đổi khoá có lập mã EKE. 33
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Trong bước một bản mã PU( εU ) là kết quả của việc lập mã một đoạn thông tin ngẫu nhiên và một lần
εU sử dụng khoá P . Trong bước hai nội U
dung được lập mã hai lần trong bản mã PU ( εU (K)) với K là khóa phiên. Tính ngẫu nhiên một lần của
εU đóng vai trò của mẹo “salt”. Nếu “khoá
công khai” không là một lần thì chức năng duy nhất của giao thức EKE sẽ thất bại hoàn toàn : Thậm chí có thể dễ dàng cho Malice tìm kiếm mật khẩu PU sử dụng yếu điểm của thuật toán mật mã khoá công khai chẳng hạn tấn công “gặp nhau ở giữa”. Nếu những nonce NU, NH được lập mã trong thông báo dòng 3,4,5 được sinh ra ngẫu nhiên và có kích cỡ lớn phù hợp chẳng hạn lớn hơn so với khoá phiên K thì chúng che giấu tiếp được khoá phiên K bằng cùng một cách như đối với mật khẩu PU được che giấu trong hai thông báo đầu. Do đó mà PU vẫn còn là độc lập thống kê đối với bất kỳ thông báo nào đi qua trong giao thức EKE. Sự độc lập thống kê của mật khẩu PU đối với những thông báo đi qua trong chuyến giao thức có nghĩa là mật khẩu được che giấu khỏi kẻ nghe trộm theo nghĩa an toàn lý thuyết thông tin. Về bản chất là “salt” thêm vào mật khẩu đã “khuyếch đại” kích cỡ của không gian mật khẩu từ kích cỡ từ điển lên đến kích cỡ khoá phi đối xứng ngẫu nhiên. Đó chính là mẹo đằng sau giao thức EKE. 5.Tấn công trên giao thức xác thực 5.1.Tấn công phát lại(Replay Attack) Trong tấn công phát lại Malice đã có một thông báo cũ –thông báo này được Malice ghi lại từ phiên liên lạc trước của giao thức.Malice sẽ tiến hành phát lại thông báo này trong phiên liên lạc mới.
34
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.12.Mô tả giao thức xác thực khoá đối xứng Needham-Schroeder.
35
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.13. Tấn công lên giao thức xác thực khoá đối xứng NeedhamSchroeder Trong tấn công trên,Malice thay thế thông điệp mà Alice gửi được trong bước 3 bằng thông điệp cũ mà Malice đã ghi lại khi Alice và Bob trao đổi với nhau rong quá khứ.Thông điệp cũ đó được Malice gửi lại cho Bob tại bước 3’,tất nhiên cùng thông điệp này,Malice cũng đã biết khóa phiên trước đó K’. Tại bước 4,Bob nhận được thông điệp của Malice ,tiến hành giải mã và thu được khóa phiên cũ K’.Bob theo thuật toán,cũng sinh NB,sau đó mã hóa bằng K’,gưi thông điệp cho Malice để thách đố.Tuy nhiên,do sử dụng khóa K’,mà Malice đã biết khóa này nên sự thách đố này trở nên vô dụng,Malice 36
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
hoàn toàn vượt qua được thách đố và thiết lập thành công phiên liên lạc giữa mình và Bob trong khi Bob luôn nghĩ rằng đó là Alice 5.2.Tấn công người đứng giữa(Man-in-The-Middle-MiTM) Tấn công trên giao thức xác thực khóa công khai Needhan-Schroeder : 5.2.1.Mô tả giao thức
Hình 2.14.Mô tả giao thức xác thực khóa công khai Needhan-Schroeder 1)
Alice --> Trent : A, B để yêu cầu khóa công khai của Bob .
2)
Trent-->Alice :{K pubB , B}K
priT
, trong đó có khóa công khai của
Bob được mã hóa bằng khóa bí mật của Trent(chữ ký số) để đảm bảo thông điệp này đúng là của Trent gửi đi . 3)
Alice --> Bob
:{N A , A}K
pubB
; Alice sinh ra một Nonce NA và
gửi cho Bob,thông điệp được mã hóa bằng khóa công khai của Bob. 4)
Bob --> Trent
: B, A :
Sau khi nhận được thông điệp của
Alice,Bob giải mã thông điệp để lấy NA ,đồng thời yêu cầu lên Trent để lấy khóa công khai của Alice 37
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
5)
Trent --> Bob :{K pubA , A} K
priT
;tương tự bước 2,Trent gửi cho
Bob thông điệp chứa khóa công khai của Alice và ký lên thông điệp đó. 6)
Bob --> Alice :{N A , N B }KpubA ; Bob gửi thông điệp bao gồm NA để chứng minh mình với Alice,NB để yêu cầu Alice xác thực ngược lại.Thông điệp được mã hóa bằng khóa công khai của Alice
7)
Alice --> Bob
:{N B } K pubB ;Sau khi nhận được thông điệp ở bước
6,Alice giải mã để thu được NA và NB .Sau đó Alice kiểm tra NA có đúng là NA do mình tạo ra không.Nếu đúng,gửi thông điệp chứa NB cho Bob để xác thực mình với Bob,thông điệp được mã hóa bằng khóa công khai của Bob. Bob nhận được thông điệp ,giải mã nó và kiểm tra.Nếu NB chính xác,quá trình xác thực giữa Bob và Alice hoàn tất.Cả hai sẽ bắt đầu trao đổi dữ liệu với nhau an toàn. 5.2.2.Tấn công lên giao thức Trong kịch bản tấn công lên giao thực xác thực khóa công khai NeedhanSchroeder,ta giả sử kẻ tấn công M(Malice) trong cùng hệ thống với A và B,M có thể thiết lập một phiên hợp lệ với cả A và B(tất nhiên là với định danh của M) và M có giả năng giả dạng A để thiết lập một kênh phi pháp với B.Kịch bản tấn công chia làm hai giai đoạn +Giai đoạn 1: A thiết lập một kênh hợp lệ với M +Giai đoạn 2: M giả dạng A để thiết lập kênh với B Mô hình cuộc tấn công như sau
38
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.15.Tấn công lên giao thức xác thực khóa công khai NeedhanSchroeder Mô tả 1)
Alice --> Malice : {N A , A}K
pubM
;Alice thiết lập một phiên hợp
lệ với Malice,thông điệp của Alice bao gồm Nonce do Alice sinh ra,định danh của Alice.Thông điệp được mã hóa bằng khóa công khai của Malice. 2)
Malie --> Bob :{N A , A}K
pubB
;Malice đóng giả Alice,cố gắng
thiết lập phiên với Bob với định danh A,Nonce của A đã lấy được từ bước 1. 3)
Bob --> Malice :{N A , N B }K pubA ; Bob giải mã thông điệp thứ 2 và nghĩ đó là phiên do Alice khởi tạo.Bob gửi thông điệp gồm NA và NB do Bob sinh ra về “Alice” giả.Thông điệp được mã hóa bằng khóa công khai của Alice.
4)
Malice --> Alice :{N A , N B }K pubA ;Malice đơn giản gửi nguyên thông điệp của Bob về cho Alice.
39
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
5)
Alice --> Malice :{N B }K pubM ; Alice giải mã để thu được NA và NB .Sau đó Alice kiểm tra NA có đúng là NA do mình tạo ra không.Nếu đúng,gửi thông điệp chứa NB để xác thực,thông điệp được mã hóa bằng khóa công khai của Malice
6)
Malice --> Bob : {N B }K pubB ;Malice giải mã thông điệp thứ 5 để
lấy được NB,sau đó lại mã hóa NB bằng khóa công khai của Bob và gửi cho Bob. Sau khi các bước hoàn tất,Bob tưởng rằng mình đang liên lạc với Alice mà không ngờ rằng có kẻ đang giả dạng Alice.Và khi đó hoàn toàn Malice có thể giả dạng Alice send cho Bob một thông điệp như : {NA,NB, " Chuyển cho mình $10.000 " }
K pubB
Để chống lại tấn công dạng này,chỉ cần thao tác đơn giản thêm định danh người gửi trong bước 6 của giao thức : 2.6. Bob --> Alice :{B, N A , N B }KpubA Khi đó gói tin tấn công sẽ trở thành 2.6 : {B, N A , N B }K pubA ;và kẻ tấn công không thể phát lại gói tin này do Alice đang mong chờ gói tin với định danh Malice 5.3.Tấn công phiên song song Tấn công phiên song song là tấn công mà hai hay nhiều yêu cầu thiết lập phiên cùng được gửi đến một thực thể,tuy nhiên tất cả yêu cầu đó đều được "đạo diễn" bởi Malice
40
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 2.16.Tấn công phiên song song Trong mô hình trên Malice tạo ra hai yêu cầu liên kết tới Bob,một yêu cầu với định danh chính bản thân và một yêu cầu với định danh giả mạo Alice.Khi đó tại bước 2 và 2’,Bob sinh ra hai nonce NB và NB’ gửi cho hai yêu cầu,tuy nhiên đích về thực sự chỉ là một người. Điểm mấu chốt của cuộc tấn công là tại bước 3 và 3’,khi Malice thay vì phải mã hóa NB và NB’ thì Malice chỉ mã hóa NB với khóa KMT đã chia sẻ với Trent.Sau đó,Malice gửi thông điệp này hai lần với hai định danh khác nhau(Alice và Malcie) cho Bob.Bob sẽ gửi hai thông điệp cùng nội dung này cho Trent. Điểm tiếp theo cần lưu ý là tại bước 4 và 4’.Tại đây,sau khi giải mã lớp mã hóa đầu tiên của hai thông điệp bằng khóa KBT,Trent thu được hai thông điệp +Alice,{NB}KMT
(1)
+Malice,{NB}KMT (2) 41
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Cho rằng thông điệp (1) của Alice,nên Trent sẽ giải mã bằng khóa KAT khóa được chia sẻ giữa Alice và Trent.Tuy nhiên,thông điệp này lại được mã hóa bởi KMT nên Trent không thể giải mã thông điệp này hoặc giải mã ra giá trị gọi là "rác".Thông điệp thứ (2) được giải mã một cách bình thường và trent có được NB. Trent sẽ mã hóa NB và "rác" trong hai thông điệp khác nhau bằng khóa KBT và gửi lại cho Bob tại bước 5 và 5’. Bob sẽ tiến hành giải mã hai thông điệp để thu được NB và "rác".Nhận thấy chỉ có NB gửi cho Alice mà không có giá trị NB’ đã gửi cho Malice,Bob từ chối phiên liên lạc hợp lệ với Malice và chấp nhận phiên làm việc với Mailice(“Alice”) mà không biết rằng đó thực ra vẫn là Malice. 5.4.Tấn công phản xạ (Reflection Attack) Trong tấn công phản xạ khi một chủ thể A gửi thông điệp yêu cầu thiết lập một liên lạc thì Malice chặn lấy thông báo và đơn giản gửi nó ngược trở lại cho thực thể A.
Hình 2.17.Tấn công phản xạ Trong mô hình trên,Malice đã “phản xạ” gói tin trong bước 2 và bước 4 để truyền lại chi Bob.Điều này làm cho Bob cho rằng Alice đang tham gia vào phiên liên lạc nhưng thực chất,Alice không hề có mặt trong cuộc liên lạc này. 5.5.Tấn công dựa trên khiếm khuyết kiểu Những khiếm khuyết điển hình bao gồm việc thực thể bị lừa để diễn dịch sai một nonce, tem thời gian hay định danh thành khoá chẳng hạn. Chúng ta 42
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
lấy giao thức được đề xuất bởi Neuman và Stubblebine để minh hoạ tấn công khiếm khuyết
Hình 2.18. Mô tả giao thức được đề xuất bởi Neuman và Stubblebine Mô tả giao thức này như sau 1.Alice gửi cho Bob gói tin với định danh của mình và một số nonce NA 2.Bob nhận được gói tin từ Alice,tạo thông điệp thứ 2 { A,N A ,TB} K BT , NB và gửi thông điệp này đến server Trent. 3.Trent giải mã thông điệp của Bob bằng KBT.Tiến hành tạo khóa phiên KAB và gửi { B, N A , K AB , TB} K AT, { A, K AB , TB} K BT , NB cho Alice 4.Alice giải mã { B, N A , K AB , TB} K ATbằng khóa KAT để thu được KAB,xác minh lại NA và gửi { A, K AB ,TB} K BT , { N B } K AB cho Bob. 5.Bob tiến hanh giải mã để thu được KAB và xác minh NB Giao thức này chủ ý cho Alice và Bob đạt được xác thực lẫn nhau và thiết lập khoá có xác thực bằng cách sử dụng dịch vụ tin cậy của Trent. Nếu nonce và khoá KAB là những số ngẫu nhiên có cùng kích cỡ thì giao thức này cho phép Malice dựng lên tấn công khiếm khuyết .
Hình 2.19.Tấn công lên khiếm khuyết kiểu Trong tấn công này Malice sử dụng nonce NA thay cho khoá phiên KAB và Bob có thể bị lừa để chấp thuận nó. Trên thực tế không có cơ chế tốt để ngăn tấn công này xảy ra. 43
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
5.6.Tấn công do bỏ sót tên : Trong những giao thức xác thực thường thì tên liên quan với thông báo có thể được suy ra từ những phần dữ liệu khác. Tuy vậy khi thông tin này không thể suy ra được thì việc bỏ sót tên là sai lầm hậu quả là rất nghiêm trọng. Denning và Sacco đề xuất một giao thức như một phiên bản khóa công khai sửa chữa những nguy cơ của giao thức xác thực khoá đối xứng Needham-Schroeder.
Hình 2.20.Mô tả giao thức được đề xuất bởi Denning và Sacco Trong giao thức này thông báo thứ ba được lập mã cho cả bí mật và xác thực. Thông điệp được mã hóa bởi khóa công khai của Bob và được ký bởi khỏa của Alice.Do đó Bob tin tưởng khóa phiên KAB là khóa chỉ Alice và Bob biết. Tiếc thay không có gì đảm bảo cho tính chất chia sẻ khoá chỉ giữa hai người. Abadi và Needham đã khám phá một tấn công đơn giản nhưng gây ra sốc. Đó là Bob sau khi nhận được thông báo từ Alice có thể lừa thực thể khác tin vào “tính chất” này : 3’. Bob(“Alice”) → Charlie : CertA, CertC, { sig A (K AB , TA )} K C; Charlie sẽ tin rằng thông báo đến từ Alice và có thể tiếp sau gửi thông báo kín cho Alice,thông báo này được mã hóa bằng khoá phiên KAB. Nhưng Bob lại có thể đọc được nó. Vì vậy cách hiển nhiên để đặc tả điều này trong giao thức nên là : 3. Alice → Bob : CertA, CertB, { sig A (A, B, K AB , TA )} K B 5.7.Tấn công do sử dụng sai các dịch vụ mật mã : Đó là thuật toán mật mã được sử dụng trong giao thức cung cấp sự bảo vệ không đúng đến nỗi sự bảo vệ cần thiết lại không có mặt. Có nhiều tấn công khác nhau nhưng điển hình là hai kiểu sau : 44
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
i)
Tấn công do không có bảo vệ nguyên vẹn dữ liệu :
ii) nghĩa”.
Tính bí mật không đạt được do vắng mặt sự bảo vệ “an toàn ngữ
Hình 2.21..Biến thể của giao thức Otway-Rees Biến thể ở đây là tại bước 2 đã có sự tách riêng các khúc bản mã của Bob sử dụng khoá KBT đối với thời khắc NB và thông báo M và định danh Alice, Bob. Bản mã trong giao thức nguyên thuỷ Otway-Rees là :
{N
B
, M, Alice, Bob} K BT.
Hình 2.22. Tấn công lên biến thể của giao thức Otway-Rees 1.
Malice(“Alice”) → Bob : M, Alice, Bob, ;
2.
Bob → Malice(“Trent”) : M, Alice, Bob, { N M , M, Malice, Bob} K MT,
{ N } K , { M, Alice, Bob} B
BT
KBT ;
45
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
2'.
Malice(“Bob”)
→
Trent
:
M,
Malice,
{ N , M, Malice, Bob} K ,{ N } K , { M, Malice, Bob} K { M, Malice, Bob} K là bản mã Malice gửi cho Bob trước đó; M
MT
B
BT
BT
Bob,
: Trong đó
BT
3.
Trent → Bob : M, { N M , K MB} K MT, { N B , K MB} K BT ;
4.
Bob → Malice(“Alice”) : M, { N M , K MB} K MT.
Hậu quả : Bob tin rằng anh ta đang nói chuyện với Alice và chia sẻ khoá phiên với Alice. Tuy nhiên thực ra anh ta đang nói chuyện với malice và chia sẻ khoá phiên với Malice. Trong tấn công này Malice đóng giả làm Alice và khởi hoạt phiên liên lạc với Bob. Malice sau đó cướp lấy thông báo từ Bob đến Trent tại bước 2 và thay định danh của Alice thành định danh của mình : thay bản mã thứ hai của Bob { M, Alice, Bob} KBT bằng bản mã cũ { M, Malice, Bob} KBT mà Malice gủi cho Bob trước đó. Sau khi gửi đi các thông báo đã sửa đổi đến Trent bằng cách đóng giả là Bob tại bước 2’ mọi thứ sẽ hoàn toàn tốt đẹp với Trent và Bob. Trent nghĩ rằng hai khách hàng người sử dụng yêu cầu dịch vụ xác thực là Malice và Bob trong khi Bob lại nghĩ rằng chuyến liên lạc là giữa Alice và anh ta. Bob sẽ sử dụng khoá phiên đã được thiết lập mà anh ta nghĩ là chia sẻ với Alice nhưng thực ra là với Malice và sẽ gủi cho Malice những thông báo cần giữ kín đáng ra được gửi cho Alice. Dịch vụ đúng đắn là nguyên vẹn dữ liệu phải được cung cấp để tích hợp thời khắc và định danh thực thể là NB và Alice, Bob. NB thực ra có thể gửi đi dưới dạng bản rõ nếu bảo vệ tính nguyên vẹn đúng đắn được thực hiện. Không có bảo vệ tính nguyên vẹn mà lại lập mã NB là thiếu sót hoàn toàn.
46
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Chương 3. THIẾT LẬP KHÓA 1.Lý thuyết cơ bản 1.1.Khái niệm Quá trình thiết lập khóa dùng chung giữa các bên tham gia được chia là 2 loại +Key transport(chuyển tải khóa) : một bên thứ 3 tin cậy sẽ làm nhiệm vụ tạo khóa và phân phối khóa cho các bên tham gia +Key aggrement(thỏa thuận khóa): mỗi bên tham gia sẽ phải tạo khóa,trao đổi với nhau 1.2.Độ tươi của khóa và dẫn xuất khóa(key freshness và key derivation) Trong rất nhiều hệ thống an ninh ,khóa mật mã được sử dụng chỉ trong một khoảng thời gian ngắn.Những khóa như vậy được gọi là khóa phiên(session key).Việc sử dụng các khóa phiên như vậy mang lại khá nhiều ưu điểm mà rõ ràng nhất là giảm thiểu tổn thất liên quan đến hệ thống khi khóa bị lộ.Bên cạnh đó là việc hacker sẽ phải mất nhiều công hơn,nhiều chi phí hơn để tìm ra hơn một khóa phiên trong trường hợp muốn giải mã lượng lớn thông điệp vì lý do rõ ràng là khóa phiên thay đổi liên tục.Trong thực tế,khóa phiên được áp dụng thường xuyên trong các dịnh vụ như mã hóa âm thanh trong điện thoại GSM và mã hóa hình ảnh trong hệ thống TV vệ tinh có trả phí;trong cả hai trường hợp,khóa phiên được sinh ra trong khoảng thời gian tính bằng phút,hoặc thậm chí bằng giây. Ưu điểm của độ tươi của khóa đã thấy rõ ràng.Tuy nhiên câu hỏi cần đặt ra là các khóa phiên được cập nhật như thế nào.Có hai hướng tiếp cận vấn đề này,hướng thứ nhất là việc sử dụng các giao thức trao đổi thỏa thuận khóa,tuy nhiên mỗi lần thay đổi lại phát sinh chi phí về thời gian,tiên bạc... để có thể trao đổi thỏa thuận khóa.Hướng tiếp cận thứ hai là sử dụng các kênh chia sẻ khóa bí mật đã được thiếp lập trước để thu được khóa phiên-gọi là chức năng dẫn xuất khóa(key derivation function-KDF).Trong mô hình dưới đây,một tham số r được thêm vào với khóa bí mật chung KAB giữa Alice và Bob 47
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 3.1.Mô hình dẫn xuất khóa Điều quan trọng của chức năng dẫn xuất khóa là việc sử dụng hàm một chiều.Hàm một chiều có thể khăn chặn việc kẻ tấn công “điều chế lại” K AB qua đó có thể tạo ra hoàn toàn các khóa phiên khác. Để có thể hoàn thành việc dẫn xuất khóa,một bên tham gia sẽ gửi một nonce cho bên còn lại.Cả hai sẽ mã hóa nonce sử dụng khóa bí mật chia sẻ trước KAB bằng hệ mật khóa bí mật như AES.... Một cách nữa là mã hóa nonce sử dụng hàm băm với KAB.Cả hai bên sẽ thực hiện tính toán HMAC với nonce như một thông điệp bình thường
K ses = HMAC KAB (r) Thay vì gửi nonce,Alice và Bob có thể mã khóa một số đếm cnt(counter) và mã hóa bằng khóa chia sẻ trước để tạo thành khóa phiên
K ses = e KAB (cnt) Hoặc thực hiện HMAC với cnt
K ses = HMAC K (cnt) AB
Việc sử dụng cnt giúp cho Alice và Bob giảm bớt việc liên lạc do không cần gửi giá trị trên đường truyền.Tuy nhiên,cả hai cần phải xác định chính xác khi nào thì cần sinh khóa mới.Nếu không,một thông điệp đồng bộ cnt cần phải được sử dụng. 1.3.Vấn đề n2.
48
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Giả sử khóa bí mật đã được chia sẻ giữa các bên thông qua kênh an toàn.Tuy nhiên,trong hệ thống có phạm vi tương đối lớn.Việc bắt gặp vấn đề n2 trong trao đổi khóa hoàn toàn có thể diễn ra.Vấn đề đó được mô tả như sau Trong hệ thống có n user,một người có thể liên lạc với tất cả mọi người còn lại trên kênh an toàn.Ví dụ Alice muốn liên lạc với Bob thì cần chia sẻ khóa KAB giữa hai người và chỉ giữa hai người,n-2 người còn lại không được biết khóa này.Mô hình sau đây mô tả ví dụ trên với số lượng user là 4
Hình 3.2.Khóa trong hệ thống mạng với n=4 user Chúng ta có thể ngoại suy một số đặc điêm trong trường hợp n user 1
Mỗi user phải lưu trữ n-1 khóa.
2
Có tổng cộng n(n-1) ≈ n2 khóa trong toàn bộ hệ thống mạng.
3
Có tổng cộng n.(n-1)/2 cặp khóa phiên.
4 Nếu có thêm user mới,kênh an toàn sẽ phải được thiết lập tới tất cả mọi người còn lại để upload khóa mới. Có thể thấy nếu số lượng user tăng lên,hậu quả mà nó mang lại vô cùng “khó chịu”.Trở ngại đầu tiên là số lượng n2 khóa trong hệ thống,số lượng user càng gia tăng thì n2 tăng lên gấp bội.Trở ngại thứ hai và cũng nghiêm trọng hơn là mỗi lần thêm một user vào hệ thống thì cần phải cập nhật với tất cả user khác,mà mỗi cập nhật đều yêu cầu kênh an toàn.Điều này vô cùng phiền toái. Ví dụ:Một công ty kích thước gồm 750 nhân viên muốn trao đổi email an toàn với khóa bí mật.Như vậy có : 750 x 749/2=280.875 cặp khóa bí mật được sinh ra và cần 750 x 749 = 561.750 khóa phải được chia sẻ qua kênh an toàn.Hơn nữa,nếu user thứ 751 tham gia vào công ty,toàn bộ 750 user còn lại phải cập nhật khóa,tức là cần 751 kênh an toàn cần được tiết lập. 49
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Như vật cách tiếp cận này không phù hợp với những công ty lớn.Hợp lý hơn khi áp dụng nó vào những công ty nhỏ với số lượng ổn định,không thay đổi thường xuyên.Ví dụ thực tế là một công ty với số lượng nhỏ các chi nhánh muốn liên lạc an toàn với các chi nhánh còn lại.Việc thêm một chi nhánh thường hiếm khi xảy ra. II.Một số lược đồ thiết lập khóa dùng chung 1.Dựa trên hệ mật khóa bí mật 1.1.Sử dụng trung tâm phân phối khóa (Key Distribution CenterKDC) 1.1.1.Sơ đồ cơ bản Tại lược đồ này,cả bên gửi và bên nhận sẽ phải trao đổi trước với KDC khóa bí mật của mình,gọi là Key Encryption Key (KEK),khóa này được dùng để bảo đảm bảo an toàn cho session key khi KDC gửi cho người gửi và người nhận. Nếu ta gọi kA,kB tương ứng là khóa bí mật của Alice và Bob KSES là khóa phiên trao mỗi lần giao tiếp giữa Alice và Bod,khóa này được tạo bởi KDC ta có lược đồ thiết lập khóa như sau
Hình 3.3.Sơ đồ thiêt lập khóa sử dụng KDC Quá trình bắt đầu bằng thông điệp RQST(IDA, IDB);trong đó IDA và IDB là định danh cho mỗi bên tham gia. 1
Tại KDC có KA và KB do Alice và Bob cung cấp 50
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu 2
KDC sinh ngẫu nhiên một khóa phiên KSES
KDC mã hóa khóa phiên này bằng KA và KB;sau đó gửi cho mỗi bên tương ứng 3
YA = e KA (K SES ) YB = e KB (K SES ) 4 Tại mỗi bên tham gia,quá trình giải mã thông điệp nhận từ KDC diễn ra để thu được khóa phiên. 5 Khóa phiên sau khi được giải mã từ thông điệp sẽ được dùng để mã hóa các thông điệp sau đó giữa Alice và Bob.Lúc này KDC không còn vai trò gì nữa . Trong mô hình trên KEK KA và KB là những khóa không đổi,khóa phiên KSES là khóa thay đổi thường xuyên,lý tưởng nhất là thay đổi theo từng phiên.Nói theo cách hiểu khác đó là KA và KB có tác dụng tạo nên các kênh an toàn,và KSES được KDC send cho mỗi bên theo các kênh tương ứng.Trên thực tế,trong dịch vụ truyền hình trả phí,khóa KEK được dùng với thuật toán mã hóa AES để trao đổi khóa phiên,khóa phiên thông thường được thay đổi theo từng phút và có nhiệm vụ mã hóa thông điệp thực sự(như tín hiệu số...) bằng thuật toán mã dòng với ưu điểm tốc độ mã hóa nhanh,đảm bảo việc giải mã theo thời gian thực,độ trễ ít.Như vậy thuật toán mã hóa dùng với khóa phiên không nhất thiết phải đủ mạnh mẽ,an toàn như thuật toán dùng khi phân phối khóa phiên.Nói cách khác,khi khóa KEK bị lộ,tất cả các traffic sau đó đều bị giải mã và nghe lén. Mô hình trên là mô hình cơ bản,có thể thay đổi một chút để tiết kiệm một phiên liên lạc
51
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 3.4.Mô hình thiết lập khóa sử dụng KDC(biến thể) Trong mô hình này thay vì gửi cho cả hai bên(trong bước 3),KDC sẽ gửi cả KEK YA , YB cho Alice.Alice chỉ có thể giải mã được YA để lấy khóa phiên.Khóa phiên sau đó được dùng để mã hóa thông điệp y gửi cho Bob.Điều thú vị ở đây là Bob sẽ nhận hai bản mã y và Y B.Bob sẽ phải giải mã YB để thu được khóa phiên và dùng khóa phiên để giải mã y. Hai mô hình trên đều có ưu điểm là chỉ cần n cặp khóa đối xứng trong hệ thống.Không giống như lược đồ trong phần 1,khi mà với n user luôn cần n 2/2 cặp khóa.n khóa KEK này chỉ cần lưu trữ tại KDC,trong khi mỗi user chỉ cần lưu KEK của chính mình.Điều quan trọng là khi có một user mới,kênh an toàn chỉ cần thiết lập một lần giữa KDC và user này. 1.1.2.Vấn đề bảo mật Mô hình trên có thể chống lại các cuộc tấn công bị động nhưu nghe nghe lén..nhưng kẻ tấn công vẫn có thể chủ động thao tác trên thông điệp và tạo ra thông điệp giả mạo a.Tấn công replay Điều đáng chú ý là cả Alice và Bob đều không thể chắc chắn rằng khóa phiên mà mình nhận được là mới.Nếu đó là khóa sử dụng lại thì vấn đề độ tươi của khóa đã bị xâm phạm.Vấn đề này càn trở nên nghiêm trọng nếu khóa phiên này đã bị lộ.Trong trường hợp Malice lưu lại khóa phiên trước đó trong
52
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
hệ thống,Malice có thể đóng giả KDC để gửi lại YA và YB cho Alice và Bob.Nêu vậy,Malice có thể giải mã các thông điệp giữa Alice và Bob. b.Key Confirmation Attack Một điểm yếu nữa là Alice không thể đảm bảo rằng khóa phiên mà mình nhận được là khóa phiên dùng để liên lạc với Bob.Trong trường hợp này,Malice có thể là một user hợp lệ có thể thay đổi thông điệp request để lừa KDC và Alice thiết lập phiên với mình .Mô tả tấn công như sau
Hình 3.5. Key Confirmation Attack Điểm chính trong tấn công loại này là KDC nghĩ rằng Alice yêu cầu một khóa phiên để liên lạc với Malice trong khi thực chất người mà Alice muốn liên lạc là Bob.Alice tưởng nhầm rằng YM là YB và không có cách nào để phát hiện được là KDC lại đang chuẩn bị phiên liên lạc giữa mình và Malice(trong trường hợp KDC thêm cả định danh IDM với YM thì Malice cũng có thể sửa đổi header thành IDB).Alice sẽ nghĩ mình đang chuẩn bị liên lạc với Bob,tiếp tục giao thức và mã hóa thông điệp thành y.Nếu Malice chặn được y thì hoàn toàn có thể giải mã thông điệp này. 1.2.Kerberos Giao thức tiên tiến hơn để chống lại cả tấn công replay và key confirmation attacks là Kerberos.Không chỉ là giao thức phân phối khóa,chức năng chính của kerberos là cung cấp khả năng xác thực người dùng trong mạng máy tính.Kerberos ngày nay được sử dụng vô cùng rộng rãi.KDC ở đây 53
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
được gọi là “trung tâm xác thực”(authentication server) trong mô hình kerberos.
Hình 3.6.Sơ đồ trao đổi khóa dựa trên giao thức Kerberos Alice sinh ra một giá trị nonce NA và gửi request tới KDC,request là RQST(IDA,IDB,NA) để yêu cầu KDC tạo khóa phiên liên lạc với Bob. 1
KDC sinh ra một khóa phiên KSES và thời gian tồn tại của khóa phiên T.Tính toán 2
YA = e KA (K SES, N A ,T, ID B)
YB = e KB (K SES , ID A , T) Và gửi YA,YB cho Alice. Alice khi nhận được YA,YB sẽ tiến hành giải mã YA ( YB Alice sẽ không thể giải mã được) để thu được KSES,T,IDB,N’A.Alice tiến hành kiểm tra IDB có phải là Bob hay không,kiểm tra N’A=NA hay không,kiểm tra T có hợp 3
54
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
lệ hay không.Sau đó,nếu tất cả hợp lệ,Alice sinh ra một tem thời gian T S và tính toán YAB = e KSES (ID A , TS ) và gửi YAB,YB tới Bob Bob giải mã YB để thu được KSES,IDA,T;giải mã YAB để thu được ID’A,TS.Sau đó Bob kiểm tra ID’A=IDA hay không,kiểm tra T và TS có hợp lệ hay không.Nếu hợp lệ thì phiên liên lạc giữa Alice và Bob được tạo thành Kerberos đảm bảo tính đúng lúc,”thời sự ” của giao thức thông qua hai thông số 4
KDC xác định khoảng thời gian tồn tại T cho khóa phiên.T được mã hóa trong cả YA và YB.Do đó ,Alice và Bob có thể nhận thức được khoảng thời gian sử dụng khóa phiên này. 1
Alice sử dụng một tem thời gian TS,qua đó Bob có thể đảm bảo rằng thông điệp của Alice là gần đây và không phải là một tấn công phát lại.Để làm được điều này,đồng hồ hệ thống của Alice và Bob cần phải đồng bộ với nhau,nhưng không cần phải chính xác cao,giá trị độ trễ có thể là vài phút. Việc sử dụng T và TS giúp chống lại tấn công replay từ Malice. 2
Một điểm quan trọng nữa là kerberos cung cấp ký tự chứng thực và xác thực người dùng.Tại bước 1,giá trị NA của Alice chính là một “thách thức” gửi cho KDC để kiểm tra KDC có khả năng mã hóa N A bằng khóa KA hay không.Nếu giá trị trả về của KDC trùng với khá trị N A gửi đi,Alice có thể chắc chắn rằng thông điệp YA được gửi đi từ KDC.Đây chính là việc áp dụng giao thức xác thực thách thức-giải đố(challenge-respone) đã được đề cập trong chương trước.Việc đưa IDB vào trong YA là để Alice chắc chắn khóa phiên này là khóa phiên dùng để thiết lập kênh liên lạc với Bob.Cả Y A và YAB đều có IDA để Bob có thể kiểm tra hai điều: 1 KDC gửi khóa phiên thiết lập kênh giữa Alice và Bob. 2 Bob đang thực sự “nói chuyện” với Alice.’ 1.3.Những vấn đề còn tồn tại trong kỹ thuật phân phối khóa bằng hệ mật đối xứng Mặc dù kerberos cung cấp những khả năng mạnh mẽ để đảm bảo tính an toàn của giao thức,tuy nhiên vẫn còn những trở ngại trong giao thức cần nhắc đến 55
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
1 Kênh liên lạc:một vấn đề của KDC luôn cần phải nhắc đến là một phiên an toàn luôn cần được phát sinh mới giữa hai thực thể bất kỳ trong hệ thống.Mặc dù biết cần tiêu tốn hiệu năng để đảm bảo chức năng an toàn.Nhưng rõ ràng nếu hệ thống có số lượng người dùng khổng lồ thì đây là vấn đề cực kỳ nghiêm trọng.Trong Kerberos ,có thể giảm nguy cơ này xuống bằng cách tăng thời gian T của khóa phiên,và trên thực tế,kerberos có thể sử dụng với hàng chục nghìn user 2 Kênh an toàn trong quá trình phát sinh:KDC cần kênh an toàn khi có mộ user mới để phân phối khóa KEK cho user Điểm chết:Trong tất cả các giao thức dựa trên KDC,trong đó có cả kerberos,luôn tồn tại một vấn đề an toàn đói là điểm chết(single point of failure),đó là cơ sở dữ liệu lưu trữ các KEK.Nếu KDC bị kẻ tấn công chiếm dụng,tất cả KEK trong toàn bộ hệ thống sẽ bị lộ hoặc trở thành vô hiệu.Khi đó cần quá trình thiết lập lại sử dụng kênh an toàn giữa KDC và mỗi user 3
Không cung cấp khả năng perfect forward secrecy(PFS):Một giao thức mật mã có tính năng PFS có khả năng ngăn cản kẻ tấn công lấy được khóa phiên trước đó trong trường hợp khóa dài hạn bị lộ.Nếu bất kỳ KEK đều bị kiểm soát(ví dụ như phần mềm Trojan chạy trên máy user),vấn đề sẽ trở nên nghiêm trọng.Trước hết là việc tất cả các thông điệp trong tương lai sẽ bị giải mã.Ví dụ,nếu Malice có KEK KA của Alice,Malice có thể thu được tất cả các khóa phiên từ thông điệp YA gửi từ KDC.Bi kịch hơn,Malice có thể gủau mã những liên lạc trước đón nếu hắn giữ các thông điệp Y A và y cũ.Mặc dù Alice có thể ngay lập tức nhận ra KEK đã bị lộ và không sử dụng nữa nhưng Alice không có cách nào có thể ngăn Malice đọc được những liên lạc trong quá khứ.Cả kerberos và những giao thức trước đó đề không cung cấp PFS.Để có được PFS,cần phải triển khai lược đồ khóa công khai. 2.Dựa trên hệ mật khóa công khai 4
2.1.Trao đổi khóa thông qua thuật toán Diffie-Hellman Để thoả thuận mật khoá K chung cho cả hai bên qua một kênh không an toàn mà không ai khác có thể biết được, A và B có thể dùng thủ tục thoả thuận khoá Diffie -Hellman sau:
56
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 3.7.Thuật toán trao đổi khóa Diffie-Hellman Chọn trước một số nguyên tố p thích hợp và một phần tử sinh g của
Z*p (2 ≤ g ≤ p − 2) . Các giá trị p và g được công khai. A gửi cho B giá trị g x mod p . (2.1) B gửi cho A giá trị g y mod p . (2.2) Thực hiện các bước sau mỗi khi cần có khoá chung: a) A
chọn một số nguyên bí mật x: 1 ≤ x ≤ p − 2 và gửi cho B thông báo
(2.1). b)
B chọn một số nguyên bí mật y: 1 ≤ y ≤ p − 2 và gửi cho A thông báo (2.2).
c)
B thu được g x và tính khoá chung K: K = (g x ) y mod p
d)
A thu được g y và tính khoá chung K: K = (g y ) x mod p
Ví dụ: Giả sử A và B chọn p = 11 và g=2 Nhóm nhân xyclic sinh bởi g: {g i , i = 0,9} = {1, 2, 4,8,5,10,9,7,3,6}
(Các phần tử sinh của nhóm này bao gồm các phần tử sau: g=2,g3=8,g7=7,g9=6) Giả sử A chọn giá trị ngẫu nhiên x = 4 và gửi cho B giá trị 24 mod 11 =5. Giả sử B chọn giá trị ngẫu nhiên y = 7 và gửi cho A giá trị 27 mod 11 =7. 57
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
B nhận được 5 và tính khoá chung K=57 mod 11 =3. A nhận được 7 và tính khoá chung K=74 mod 11 =3. 2.2.Tấn công Man-in-The-Middle Tấn công MiTM là một trong những tấn công nguy hiểm nhất lên các thuật toán khóa công khai.Dưới đây là mô tả tấn công lên thuật toán trao đổi khóa Diffie-Hellman,cần lưu ý rằng,tấn công MiTM có thể xảy ra trên tất cả các thuật toán khóa bất đối xứng trừ khi khóa công khai được bảo vệ(vai trò thuộc cề các chứng chỉ số)
Hình 3.8.Tấn công MiTM lên thuật toán Diffie-Hellman Trong mô hình trên,Malice đóng giả cả Alice và Bob,hay nói cách khác,Malice thay đổi khóa công khai của Alice và Bob bằng chính khóa của mình.Sau khi thành công,khóa của ba người tương ứng là
Khóa của Alice : K AM = (Y ')x mod p = αm.x mod p .
Khóa của Bob : K BM = (X ') y mod p = α m.y mod p .
Khóa của Malice bao gồm cả 2 khóa trên
Trên thực tế khóa công khai của Malice,X’ và Y’ có cùng giá trị.Hậu quả là Alice và Bob không ý thức được rằng mình đang chia sẻ khóa với Malice.Và những thông điệp giữa Alice và Bob sẽ bị đọc lén trên đường truyền bởi Malice 2.3.Chứng chỉ 58
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Vấn đề của tấn công MiTM là khóa công khai không được xác thực.Trong mô hình trên,Bob nhận được khóa công khai được cho là của Alice,nhưng Bob lại không có cách nào chứng mình điều này là đúng hay sai.Lấy ví dụ tình huống này như sau: Giả sử khóa của Alice là KA=(KpubA,IDA); trong đó IDA là thông tin định danh(ví dụ như địa chỉ IP của Alice),khóa công khai KpubA là chuỗi nhị phân(ví dụ 2048 bits).Nếu Malice thực hiện tấn công MiTM,hắn cần thay đổi khóa trên thành KA=(KpubM,IDA).Như vậy ngoài chuỗi bit,mọi thứ đêu không đổi,người nhận thông điệp không thể phát hiện ra rằng thực ra chuối bits là khóa công khai của Malice.Điều đó chứng minh cho mệnh đề:”mặc dù lược đồ khóa công khai không cần kênh an toàn,nhưng chúng cần xác thực các kênh phân phối khóa công khai”. Chúng ta cần nhấn mạnh một lần nữa là tấn công MiTM không chỉ xảy ra trên thuật toán DH,mà còn xảy ra trên tất cả các thuật toán bất đối xứng:kịch bản vẫn không thay đổi,kẻ tấn công chặn khóa công khai của A(và B),thay thế bằng khóa công khai của mình.Có nhiều cách để giải quyết vấn đề này,một trong số đó là sử dụng các chứng chỉ(certificate).ý tưởng đơn giản như sau:bên cạnh thông điệp (KpubA,IDA) có thể bị tấn công bị động,chúng ta có thể áp dụng các thuật toán mật mã để xác thực.Cụ thể hơn,chúng ta sử dụng chữ ký số.Khi đó chứng chỉ của user Alice trong dạng cơ bản nhất là CertA=[(KpubA,IDA),sigKpri(KpubA,IDA)].Khi đó người nhận có thể kiểm tra chữ ký số để đảm bảo thông điệp không bị sửa đổi.Chứng chỉ yêu cầu người nhận phải có khóa kiểm tra chính xác,ở đây là khóa công khai.Chữ ký số cho chứng chỉ được cung cấp bởi trung tâm tin cậy CA(Certificate Authority).CA sinh chứng chỉ và cấp chứng chỉ cho tất cả các user trong hệ thống. Với việc sinh ra chứng chỉ,chúng ta có thể phân biệt được hai trường hợp chủ yếu: 1 Tự người dùng sinh ra cặp khóa bất đối xứng và yêu cầu CA ký lên khóa công khai của mình.
59
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 3.9.User tự sinh khóa,CA cấp chứng chỉ Điểm mấu chốt trong sơ đồ này chính là thông điệp đầu tiên cần phải được gửi trên kênh đã xác thực,nếu không Malice request chữ ký số với IDA. 2 CA sinh ra cặp khóa bất đối xứng cho người dùng,và ký lên khóa công khai của người dùng trước khi phát hành chứng chỉ cho họ:
Hình 3.10.CA sinh khóa cho User Bước đầu tiên trong mô hình cần được thực hiện trong kênh đã xác thực,nghĩa là CA cần phải đảm bảo người xin chứng chỉ là Alice chứ không phải một ai đó giả mạo Alice.Hơn nữa,khi CA gửi chứng chỉ về cho Alice có khả khóa bí mật,vì vậy kênh truyền không những phải được xác thực mà còn phải là kênh an toàn.Trên thực tế,chứng chỉ có thể được gửi qua email hay CD-ROM. Quay lại với thuật toán DH,khi có áp dụng chứng chỉ vào thuật toán,ta có lược đồ sau đây: 60
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 3.11.Thuật toán Diffie-Hellman với chứng chỉ Điều cốt yếu ở đây là việc kiểm tra chứng chỉ.Như trong lược đồ trên,việc kiểm tra các chứng chỉ sử dụng khóa công khai của CA.Khóa công khai của CA phải được truyền trên kênh có xác thực đê tránh việc Malice lại tấn công MiTM.Như vậy cho dù có sử dụng chứng chỉ,kênh có xác thực vẫn là yêu cầu cần thiết.Tuy nhiên,khác với những phương thức khác đã trình bày,việc sử dụng chứng chỉ yêu cầu kênh xác thức chỉ một lần,vào thời điểm thiết lập đầu tiên.Ngày nay,việc kiểm tra chứng chỉ được tích hợp trong các phần mềm như trình duyệt web hay các sản phẩm của Microsoft.Các kênh xác thực ở đây được giả định là được cung cấp trong quá trình cài đặt các phần mềm(tất nhiên là các phần mềm nguyên gốc).Trong thuật DH nguyên thủy,Alice và Bob phải tin tưởng trực tiếp lẫn nhau,còn trong mô hình có chứng chỉ,Alice và Bob cần tin khóa công khai của CA.Và nếu CA có ký lên khóa công khai của một User khác,thì Alice và Bob cũng có thể tin tưởng user này.Điều này tạo thành một chuỗi tin tưởng lẫn nhau và rộng hơn là tạo thành cơ sở hạ tầng khóa công khai PKI(Public Key Infrastructure).
Chương 4. TRAO ĐỔI KHÓA DỰA TRÊN MẬT KHẨU 61
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
I.Tổng quan về trao đổi khóa ba bên Giao thức trao đổi khóa ba bên là một trong những kỹ thuật mật mã quan trọng trong giao tiếp an toàn,với kỹ thuật này, 2 client có thể trao đổi password với server tin cậy,qua đó có thể thỏa thuận session key-dùng để mã hóa và đảm bảo tính toàn vẹn của dữ liệu.Trong nhiều năm qua,rất nhiều mô hình,lược đồ trao đổi khóa ba bên đã được công bố.Tuy nhiên,không phải tất cả đều đảm bảo được yêu cầu an toàn và hiệu quả. Lấy ví dụ về lược đồ kinh điển Diffie-Hellman năm 1976,đây là lược đồ đầu tiên cung cấp khả năng trao đổi khóa.Tuy nhiên,điều đáng tiếc là DiffieHellman không cung cấp khả năng xác thực,dẫn đến việc giao thức này dễ dàng trở thành nạn nhân của tấn công người đứng giữa(Man in the Middle). Để giải quyết vấn đề này,trong nhiều năm qua,rất nhiều các giao thức trao đổi khóa với tính năng xác thực đã được phát triển(như Blake-Wilson năm 1997,Law năm 2003,Zhang năm 2002,Boyd năm 2004,,,,),bên cạnh đó các giao thức trao đổi khóa dựa trên mật khẩu cũng được nhiều các chuyên gia quan tâm. Các giao thức trao đổi khóa dựa trên mật khẩu(Password based Authenticated Key Exchange-PAKE) chỉ yêu cầu người dùng nhớ passwordmột yểu tố an toàn kinh điển.Và việc chỉ phải nhớ password khiển cho giao thức này trở nên đơn giản và hiệu quả hơn rất nhiều.Tuy nhiên,tất cả đều biết rằng,việc chọn password cũng không phải là việc dễ dàng.Nếu chọn password đơn giản,dễ nhớ thì lại rất dễ bị tấn công như password guess,tấn công từ điển hay vét cạn.Còn theo chiều hướng ngược lại,nếu chọn password dài,phức tạp có thể làm khó kẻ tấn công nhưng cũng làm khó người dùng vì họ rất có thể cũng không nhớ nổi password của mình.Kể từ khi Bellovin và Merrit công bố PAKE đầu tiên (năm 1992),nó đã được nghiên cứu rộng rãi,và rất nhiều những giao thức tiến bộ hơn đã được phát triển Trong những năm gần đây,bên cạnh các giao thức trao đổi khóa 2 bên dựa trên mật khẩu(2PAKE),rất nhiều nghiên cứu đã bắt đầu để ý đến các giao thức trao đổi khóa ba bên dựa trên mật khẩu(3PAKE).Trong mô hình này,mỗi client sẽ phải trao đổi password với server trước,sau đó khi client muốn tạo session-key,nó sẽ yêu cầu server xác thực bên phía còn lại. 62
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Mặc dù,các server có thể giúp các client xác thực client còn lại và thiết lập session key,tuy nhiên giao thức 3PAKE vẫn phải chống chịu trước tấn công password guess.Năm 2000,giao thức 3PAKE đã được cải tiến trong việc sử dụng khóa công khai của server.Điều này làm giảm thiểu nguy cơ bị tấn công đoán password.Tuy nhiên,điều gì cũng có tính hai mặt,ngăn chặn được tấn công nhưng lại làm cho client khó khăn hơn vì trước khi sử dụng các client phải kiểm tra các khóa công khai của server trước. Vì lẽ đó,để giảm thiểu công việc cho client,năm 2001,một giao thức khác được công bố,điều đặc biệt là giao thức này không sử dụng khóa công khai của server II.Giao thức trao đổi khóa dựa trên mật khẩu đơn giản 1.Lược đồ S-PAKE Năm 2005,Abdalla và Pointcheval đã đề xuất một biến thể mới của giao thức Diffie-Hellman với tên gọi là chosen-base computational DiffieHellman(CCDH) và giao thức trao đổi khóa dựa trên mật khẩu được mã hóaSimple password based encrypted key exchange protocol(S-PAKE) Thuật toán Diffie-Hellman đã được trình bày trong chương trước,xin được phép không nhắc lại.Thuật toán CCDH có nội dung như sau
63
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 4.1.Mô hình trao đổi khóa dựa trên mật khẩu S-PAKE Trong đó M,N là hai số ngẫu nhiên trong G S: trusted server A,B : hai client pw : khóa bí mật được chia sẻ giữa A và B Bước 1. Phía user A 1.User A chọn số ngẫu nhiên x sao cho x∈ Z p 2.Tính X=gx mod p 3.Tính X* = X.Mpw 4.Gửi X* cho B Phía user B làm tương tự 1.Chọn số ngẫu nhiên y sao cho y ∈ Z p 2.Tính Y=gy mod p 64
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
3.Tính Y*=Y.Npw 4.Gửi Y* cho A Bước 2 Phía A : dựa vào thông tin Y* từ B,user A sẽ tính Y* 1. K A ≡ pw N
x
2.SKA=H(A,B,X*,Y*,KA) Phía B : dựa vào thông tin X* từ A,user B sẽ tính X* K ≡ 1. B pw M
y
2.SKB=H(A,B,X*,Y*,KB) 2.Ví dụ Giả sử A và B chọn p = 11 và g=2 Bước 1 Phía A 1.Chọn số ngẫu nhiên x=4,M=3,pw=6 2.Tính X=24 mod 11 = 5 3.Tính X* = 5.36 mod 11 = 4 4.Gửi 4 cho B Phía B 1.Chọn số ngẫu nhiên y=9,N=5,pw=6 2.Tính Y=29 mod 11 = 6 3.Tính Y*=6.56 mod 11 = 8 4.Gửi 8 cho A Bước 2 Phía A
65
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu 4
8 1.Tính K A = 6 mod 11 = 84.5(-24) mod 11 ≡ 4.5 mod 11 ≡ 9 5
Phía B 9
4 1.Tính K B = 6 mod 11 = 49.3(-54) mod 11 ≡ 3.3 mod 11 = 9 3
Như vậy ta có thấy K A = K B = g x. y ,khi đó A và B lập khóa phiên SK A và SK B có giá trị giống nhau.
III.Giao thức trao đổi khóa ba bên 1.Lược đồ trao đổi khóa ba bên của Lu và Cao Trong trường hợp A và B muốn thiết lập một khóa phiên nhưng trước đó,cả hai chưa có khóa bí mật dùng chung.Khi đó,A và B không thể xác thực trực tiếp lẫn nhau và phải cần đến vai trò của server trung gian S.Đây chính là mô hình trao đổi khóa 3 bên dựa trên mật khẩu S-3PAKE(Simple three-party key exchange protocol) do Lu và Cao đề xuất năm 2007.
Hình 4.2.Mô hình S-3PAKE Các bước trong mô hình này như sau 66
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Bước 1 A 1.1.chọn một số ngẫu nhiên x sao cho x∈ Z p 1.2.Tính X = g x .M pw1 1.3,Gửi A||X cho B B 1.4.Chọn một số ngẫu nhiên y sao cho y∈ Zp 1.5.Tính Y = g y .N pw2 1.6.Gửi A||X||B||Y cho S Bước 2 S dựa vào thông tin A||X||B||Y và pw1,pw2,tính 2.1. g x =
X M pw1
y 2.2. g =
Y N pw2
Sau đó S chọn một số ngẫu nhiên z và tính 2.3. g xz = ( g x )
z
2.4. g yz = ( g y )
z
2.5. X ' = g yz .H ( A,S,g x )
pw1
2.6. Y ' = g xz .H ( B,S,g y )
pw2
Và gửi X’||Y’ cho B Bước 3 Khi B nhận được X’||Y’,B sử dụng pw2 và số bí mật y để tính xz 3.1. g =
Y'
H ( B,S,g y )
3.2. g xyz = ( g xz )
pw 2
y
67
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
3.3. α = H ( A,B,g
xyz
)
Cuối cùng B gửi X’|| α cho A Bước 4 Khi A nhận đc X’|| α ,A sẽ tính yz 4.1. g =
X'
H ( A,S,g x )
4.2. g xyz = ( g yz )
pw1
x
Sau đó A tiến hành kiểm tra α có đúng hay không,nếu không,kết nối sẽ bị chấm dứt.Ngược lại,A sẽ tin tưởng g xyz là đúng và tính toán session key bằng công thức xyz 4.3. SK A = H' ( A,B,g ) xyz Cuối cùng A tính β = H ( B,A,g ) và gửi β cho B
Bước 5 Dựa vào giá trị β nhận được,B sẽ kiểm tra β có đúng hay không.Nếu đúng B sẽ tính toán session key theo công thức 5.1. SK B = H' ( A,B,g
xyz
)
Kết quả của quá trình : Nếu A,B,S thực hiện chính xác các bước nêu trên và cả hai giá trị α , β đều được chấp nhận,A và B sẽ có chung một session xyz key: SK A = SK B = H' ( A,B,g ) .
2.Tấn công trên giao thức S-3PAKE Khi mới công bố lược đồ S-3PAKE,Lu và Cao tuyên bố lược đồ này có thể chống lại những tấn công điển hình.Tuy nhiên,thực tế cho thấy,S3PAKE vẫn không thể chống được những tấn công như dò mật khẩu hay giả mạo 2.1.Tấn công dò mật khẩu ngoại tuyến (Off-Line Password Guessing Attack) 68
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
2.1.1.Kịch bản tấn công thứ nhất
Hình 4.3.Tấn công dò mật khẩu ngoại tuyến(kịch bản 1) Kịch bản tấn công này được He Debiao, Chen Jianhua và Hu Jin đề cập trong tạp chí Informatica năm 2010. Các bước thực hiện tuần tự như sau Bước 1 A 1.1.chọn một số ngẫu nhiên x sao cho x∈ Z p 1.2.Tính X = g x .M pw1 1.3,Gửi A||X cho B B 1.5.Tính Y = 1.N pw2 = N pw2 1.6.Gửi A||X||B||Y cho S Bước 2 S dựa vào thông tin A||X||B||Y và pw1,pw2,tính 2.1. g x = y 2.2. g =
X M pw1
Y =1 N pw2 69
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Sau đó S chọn một số ngẫu nhiên z và tính 2.3. g xz = ( g x )
z
2.4. g yz = ( g y ) = 1z = 1 z
2.5. X ' = g yz .H ( A,S,g x )
pw1
2.6. Y ' = g xz .H ( B,S,g y )
pw2
= H ( A,S,gx )
pw1
Và gửi X’||Y’ cho B Bước 3 Khi nhận được X’||Y’,B tiến hành tấn công đoán password của A dựa vào H ( A,S,g x )
pw1
và X = g x .M pw1 .Các bước dò password như sau:
3.1)B giả sử password của A là pw. X dựa vào thông tin thu được từ bước 1. M pw
3.2) Tính
T = (g x )' =
3.3) Tính
X = H(A,S,T)pw dựa vào giá trị T vừa tính.
3.4) So
?
sánh X = X ' với X ' thu được từ S.
3.5) Nếu 3.6) Nếu
X và X ' có cùng giá trị thì pw=pw1 hay password của A là pw. X và X ' khác nhau thì qua lại bước 3.1.
B sẽ thực hiện dò password cho đến khi nào
X = X ' và thu được
password của A 2.1.2.Kịch bản thứ 2 Kịch bản tấn công này được Ting-Fang Cheng, Chin-Chen Chang, ZhiHui Wang mô tả trong bài viết “A Secure Protocol for Three-Party Authenticated Key Exchange with Provable Belief” trong tạp chí “Information Sciences and Computer Engineering” năm 2010. Mô tả tấn công như sau
70
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 4.4.Mô hình tấn công dò mật khẩu ngoại tuyến(kịch bản 2) Các bước tấn công: Bước 1: A 1.1.chọn một số ngẫu nhiên x sao cho x∈ Z p 1.2.Tính X = g x .M pw1 1.3,Gửi A||X cho B B 1.4.Chọn một số ngẫu nhiên y sao cho y∈ Zp . 1.5.Thay đổi X thành M y . 1.6.Tính Y = M.Npw 2 . 1.7.Gửi A|| M y ||B||Y cho S. Bước 2: S dựa vào thông tin A|| M y ||B||Y và pw1,pw2,tính: 71
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
My 2.1. g = pw1 = M y −pw1 . M x
M.N pw 2 2.2. g = = M. N pw2 y
Sau đó S chọn một số ngẫu nhiên z và tính: 2.3. g xz = M ( y−pw1)z . 2.4. g yz = M z . 2.5. X ' = M z .H ( A,S,M y −pw1 )
pw1
2.6. Y ' = M ( y−pw1)z .H ( B,S,g y )
.
pw2
.
Và gửi X’||Y’ cho B. Bước 3: Khi B nhận được X’||Y’,B ngắt luôn kết nối,sau đó sử dụng pw2 và số bí mật y để tính: xz 3.1. g =
Y'
H ( B,S,g
)
y pw 2
= M( y− pw1)z .
3.2. B bắt đầu đoán password của A,giả sử B đoán là pw. 3.2.1.
Tính δ = M ( y− pw1)z .H ( A,S,M y −pw )
3.2.2.
Tính (X ')( y−pw ) .
3.2.3.
So sánh δ và (X ')( y−pw ) ,nếu hai giá trị là như nhau thì
pw(y-pw)
.
pw=pw1.Ngược lại quay về bước 2. Có
thể
thấy
M ( y−pw )z .H ( A,S,M y−pw1 )
rõ
rằng
pw1(y-pw1)
(X ')( y−pw )
tương
đương
.
Khi δ = (X ')( y−pw ) thì: M ( y−pw1)z .H ( A,S,My−pw )
pw(y-pw)
= M ( y−pw )z .H ( A,S,M y−pw1 ) 72
pw1(y-pw1)
với
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Suy ra pw=pw1. B thực hiện liên tục bước 3.2.1 đến 3.2.3 cho đến khi tìm được pw=pw1.Quá trình này có thể mất thời gian xong hiệu quả gần như chắc chắn. Tóm lại với hai dạng tấn công này,ta có thể thấy độ an toàn của giao thức S-3PAKE tương đương với độ an toàn trước những tấn công dò mật khẩu thông thường Có những biện pháp khắc phục hai dạng tấn công này là Biên pháp đầu tiên và hữu hiệu nhất chính là tăng độ mạnh của mật khẩu:sử dụng mật khẩu dài,có ký tự đặc biệt,khó có thể đoán biết trong từ điển. Một cách khắc phục đối với tấn công dạng một đó là từ việc server tính gy và (gy)z đều bằng 1,nên nếu server có bước kiểm tra ở hai giá trị này(gặp giá trị 1 thì ngắt kết nối) thì tấn công dạng này sẽ không thể thực hiện được. 2.2.Tấn công giả mạo thực thể(Impersonation Attack) Về mặt tổng quan,lược đồ S-3PAKE cho phép hai thực thể có thể liên lạc với nhau trong qua một server tin cậy.Server này nhận trách nhiệm xác thực tính đúng đắn của hai thực thể bất kỳ liên quan và hỗ trợ việc tạo khóa phiên.Server tin cậy đóng vai trò độc lập trong mô hình S-3PAKE.Tuy nhiên,trong lược đồ S-3PAKE,Server lại không kiểm tra tính đúng đắn của các thực thể liên quan và tính chính xác của các thông điệp nhận về.Server trong S-3PAKE chỉ đơn giản nhận thông điệp yêu cầu của Alice và Bob,sau đó tính toán một số công thức giúp Alice và Bob thiết lập khóa phiên.Điều này có thể tạo điều kiện thuật lợi cho những User hợp lệ nhưng bất lương thực hiện tấn công giả mạo.Tấn công này được Ting-Fang Cheng, Chin-Chen Chang, Zhi-Hui Wang mô tả trong bài viết “A Secure Protocol for ThreeParty Authenticated Key Exchange with Provable Belief” trong tạp chí “Information Sciences and Computer Engineering”.Chúng ta giả sử user đó là Oscar,người sẽ đóng giả Bob đề lừa Alice thực hiện những tiến trình sau:
73
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 4.5.Tấn công giả mạo thực thể Bước 1 A 1.1.chọn một số ngẫu nhiên x sao cho x∈ Zp 1.2.Tính X = g x .M pw1 1.3,Gửi A||X cho B O 1.4.Oscar chặn thông điệp gửi tới Bob 1.5.Chọn một số ngẫu nhiên o sao cho o∈ Zp 1.6.Tính Y = g o .N pw3 1.7.Gửi A||X||O||Y cho S Bước 2 S dựa vào trông tin A||X||O||Y và pw1,pw3,tính 2.1. g x =
X M pw1
74
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
O 2.2. g =
Y N pw3
Sau đó S chọn một số ngẫu nhiên z và tính 2.3. g xz = ( g x )
z
2.4. g oz = ( go )
z
2.5. X ' = g oz .H ( A,S,g x )
pw1
2.6. Y ' = g xz .H ( O,S,go )
pw3
Và gửi X’||Y’ cho O Bước 3 Khi O nhận được X’||Y’,O sử dụng pw3 và số bí mật o để tính xz 3.1. g =
Y'
H ( O,S,go )
3.2. g xoz = ( g xz )
pw3
o
3.3. α = H ( A, B,g
xoz
)
Cuối cùng O gửi X’|| α cho A Bước 4 Khi A nhận đc X’|| α ,A sẽ tính oz 4.1. g =
X'
H ( A,S,g x )
4.2. g xoz = ( g oz )
pw1
x
Sau đó A tiến hành kiểm tra α có đúng hay không,nếu không,kết nối sẽ bị chấm dứt.Ngược lại,A sẽ tin tưởng g xoz là đúng và tính toán session key bằng công thức xoz 4.3. SK A = H ' ( A,B,g )
75
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Nếu các bước kiểm tra thành công,giữa Alice và Oscar đã thỏa thuận được chung một khóa phiên.Tuy nhiên Alice lại nghĩ rằng mình đang liên lạc với Bob chứ không phải Oscar. Tấn công theo kịch bản này sẽ không hiệu quả trong môi trường mạng không dây.Vì khi đó Oscar sẽ khó lòng ngăn gói tin đến với Bob.Và nếu vậy Oscar khó lòng giả mạo Bob vì Bob cũng tính toán và trao đổi thông điệp với Alice.Vì vậy việc sử dụng S-3PAKE trong môi trường mạng không dây là có thể được.
Chương 5 MINH HỌA TRÊN MAPLE I.Giới thiệu về Maple Maple là một phần mềm tính toán do hãng Maple Soft, một bộ phận chủ yếu của liên hợp công ty Waterloo Maple phát triển.Maple ra đời năm 1991, 76
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
đã phát triển đến phiên bản 15 (đến 6/2011) và có thể chạy trên tất cả các hệ điều hành. Những tính năng nổi bật của Maple: 1. Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ chính xác cao. 2. Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ thể như: vẽ đồ thị (gói plot), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg),bit(gói Bits)... 3. Thiết kế các đối tượng 3 chiều. 4. Một ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với các ngôn ngữ lập trình khác; II.Minh họa trên maple Với những tính năng mạnh mẽ của mình,Maple là lựa chọn hàng đầu trong việc giảng dạy toán học nói chung và trong mật mã học nói riêng Dưới đây là minh họa đồ án trên Maple. 1.Giao thức trao đổi khóa ba bên dựa trên mật khẩu S-3PAKE. Các bên tham gia bao gồm Alice,Bob và Server.Thông điệp gửi đi và nhận về tại mỗi bên trong bài mô phỏng này được thực hiện thông qua các thư mục chia sẻ tương ứng tại mỗi bên. Alice : D:/Alice/ Bob : C:/Bob/ Server: C:/Server Mô tả dưới đây tập trung chủ yếu vào quá trình các bên tính toán xử lý dữ liệu để đạt được mục đích cuối cùng là tạo khóa phiên chung.Việc thực hiện truyền file qua các thư mục xin phép không trình bày trong mô phỏng này. 1.1.Khởi tạo
77
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.1.Chuẩn bị các thông số Code thực hiện chương trình - Sinh p use DocumentTools in digit:=parse(GetProperty(TextDigit,'value')); p:=nextprime(rand(2^digit...2^(digit+1))()); SetProperty(Textp,'value',p); end use; Độ lớn của p phụ thuộc vào số bits do người dùng nhập,câu lệnh parse(GetProperty(TextDigit,'value')) có tác dụng lấy giá trị người dùng nhập vào truyền cho biến digit,p sẽ được tính là số nguyên tố ngẫu nhiên trong `khoảng 2digit đến 2digti+1.Trong trường hợp này là từ 2250 đến 2251.Giá trị của p sau đó được đưa ra textarea có tên Textp thông qua câu lệnh SetProperty. - Phần tử sinh g: TimG := proc (bignum) 78
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
local k, l, p, q, i, j,x,t,z; k := ifactor(bignum-1); l := nops(k); if l = 2 and type(op(2,k),integer) then l := l-1; end if; for i to l do q[i] := op(i,k); end do; for i to l do if (nops(q[i])>1) then q[i] := op(1,q[i]); end if; p[i] := op(1,q[i]); end do; for i from 2 to (bignum-1) do t:=0; for j from 1 to l do z:=power(i,(bignum-1)/p[j]) mod bignum; if(z<>1) then t:=t+1; else t:=0; end if; end do; if(t=l) then x:=i; break; end if 79
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
end do; return(x); end proc; g:=TimG(p); - Tạo file with(Maplets[Elements]); mapletSendp := Maplet(["Đã [Button("OK", Shutdown("true"))]]);
tạo
file
thongso.txt",
use DocumentTools in sp:=convert(p,string); sg:=convert(g,string); sm:=convert(M,string); sn:=convert(N,string); pdir:="D:/Public/thongso.txt"; FileTools[Text][WriteLine](pdir,sp); FileTools[Text][WriteLine](pdir,sg); FileTools[Text][WriteLine](pdir,sm); FileTools[Text][WriteLine](pdir,sn); fclose(pdir); Maplets[Display](mapletSendp); Đoạn code trên có tác dụng ghi p,g,M,N vào trong file “D:/Public/thongso.txt” và đưa ra thông báo cho người sử dụng. 1.2.Các bên nhận thông số qua file
80
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.2.Các bên tham gia nhận thông số từ file Code thực hiện: with(Maplets[Elements]); mapletFile:= Maplet(["File không tồn tại", [Button("OK", Shutdown("true"))]]); pdir:="D:/Alice/thongso.txt"; if (FileTools[Exists](pdir)) then p:=parse(FileTools[Text][ReadLine](pdir)); g:=parse(FileTools[Text][ReadLine](pdir)); M:=parse(FileTools[Text][ReadLine](pdir)); N:=parse(FileTools[Text][ReadLine](pdir)); fclose(pdir); else Maplets[Display](mapletFile); end if; Đoạn code trên sẽ đọc file “”D:/Alice/thongso.txt” theo thứ tự và gán cho giá trị p,g,M,N.Thuật toán tương tự trên Bob và Server. 1.3.Alice tính A||X và gửi cho Bob 81
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.2.Alice tính A||X Code thực hiện: - Tính x: x ngẫu nhiên trong khoảng 3 đến p-1 x:=rand(3..p-1)(); - Tính pw1 là dạng số của password pwA:="hocvienktmm"; temp:=convert(pwA,bytes); pw1:=parse(cat(seq(temp[i],i=1..nops(temp)))); -
Tính X = g x .M pw1 X1:=power(g,x) mod p; X2:=power(M,pw1) mod p; X:=X1*X2 mod p;
- Tính A||X : sử dụng phép nối với thuật toán như sau: l:=length(convert(p,binary)); noi1:=65*(2^l)+X; 82
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
snoi1:=convert(noi1,string); - Ghi ra file có địa chỉ “D:/Alice/AX.txt” axdir:="D:/Alice/AX.txt"; FileTools[Text][WriteLine](axdir,snoi1); fclose(axdir); 1.4.Bob tính A||X||B||Y và gửi cho Server
Hình 5.4.Bob tính A||X||B||Y Code thực hiện: -Nhận A||X từ Alice:trước tiên kiểm tra xem file có tồn tại hay không,nếu có thì file sẽ được đọc thông qua biến noi1 axdir:="C:/Bob/AX.txt"; if (FileTools[Exists](axdir)) then noi1:=parse(FileTools[Text][ReadLine](axdir)); fclose(axdir); 83
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
- Tính y : y ngẫu nhiên trong khoảng từ 3 đến p-1 y:=rand(3..p-1)(); - Tính pw2 pwB:="at3akma"; temp:=convert(pwB,bytes); pw2:=parse(cat(seq(temp[i],i=1..nops(temp)))); -
Tính Y = g y .N pw2 Y1:=power(g,y) mod p; Y2:=power(N,pw2) mod p; Y:=Y1*Y2 mod p;
- Tính A||X||B||Y l:=length(convert(p,binary)); b:=op(1,convert("B",bytes)); noi2:=b*(2^l)+Y; - Ghi ra file snoi:=convert(noi,string); axbydir:="C:/Bob/AXBY.txt"; FileTools[Text][WriteLine](axbydir,snoi); fclose(axbydir); 1.5.Server tính X’||Y’
84
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.5.Server tính X’||Y’ - Tách giá trị X và Y axbydir:="C:/Server/AXBY.txt"; l:=length(convert(p,binary)); if (FileTools[Exists](axbydir)) then 85
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
noi:=parse(FileTools[Text][ReadLine](axbydir)); fclose(axbydir); Y:=noi mod(2^l); b:=op(1,convert("B",bytes)); noi2:=b*(2^l)+Y; X:=((noi-noi2)/(2^l)) mod (2^l); - Tính z z:=rand(3..p-1)(); - Tính pw1 và pw2 pwA:="hocvienktmm"; pwB:="at3akma"; temp:=convert(pwA,bytes); temp2:=convert(pwB,bytes); pw1:=parse(cat(seq(temp[i],i=1..nops(temp)))); pw2:=parse(cat(seq(temp2[i],i=1..nops(temp2)))); -
Tính g x =
X M pw1
g1:=(X/power(M,pw1)) mod p; -
y Tính g =
Y N pw2
g2:=(Y/power(N,pw2)) mod p; -
Tính g xz = ( g x )
z
g13:=power(g1,z) mod p; -
Tính g yz = ( g y )
z
g23:=power(g2,z) mod p; -
Tính X ' = g yz .H ( A,S,g x )
pw1
sử dụng hàm băm sha1
read `sha1.m`; 86
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
a:=op(1,convert("A",bytes)); s:=op(1,convert("S",bytes)); str1:=hash(convert(cat(a,s,g1),string)); num_str1:=convert(str1,decimal,36); pow_str1:=power(num_str1,pw1) mod p; X_phay:=g23*pow_str1 mod p; -
Tính Y ' = g xz .H ( B,S,g y )
pw2
sử dụng hàm băm sha1
read `sha1.m`; b:=op(1,convert("B",bytes)); s:=op(1,convert("S",bytes)); str2:=hash(convert(cat(b,s,g2),string)); num_str2:=convert(str2,decimal,36); pow_str2:=power(num_str2,pw2) mod p; Y_phay:=g13*pow_str2 mod p; - Tính X’||Y’ l:=length(convert(p,binary)); noiXYPhay:=X_phay*(2^l)+Y_phay; - Ghi ra file sXYPhay:=convert(noiXYPhay,string); xyPhaydir:="C:/Server/XphayYphay.txt"; FileTools[Text][WriteLine](xyPhaydir,sXYPhay); fclose(xyPhaydir); 1.6.Bob tính gxz và α
87
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình.5.6.Bob tính gxz và α Code thực hiện : - Tách X’ và Y’ từ tile XphayYphay.txt đã nhận từ Server XYphaydir:="C:/Bob/XphayYphay.txt"; l:=length(convert(p,binary)); if (FileTools[Exists](XYphaydir)) then noiXYPhay:=parse(FileTools[Text][ReadLine](XYphaydir)); fclose(XYphaydir); Y_phay:=noiXYPhay mod (2^l); X_phay:=(noiXYPhay-Y_phay)/(2^l); -
xz Tính g =
Y'
H ( B,S,g y )
pw 2
sử dụng hàm băm SHA-1
read `sha1.m`; b:=op(1,convert("B",bytes)); 88
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
s:=op(1,convert("S",bytes)); g2:=power(g,y)mod p; str2:=hash(convert(cat(b,s,g2),string)); num_str2:=convert(str2,decimal,36); pow_str2:=power(num_str2,pw2) mod p; g13:=(Y_phay/pow_str2) mod p; -
Tính g xyz = ( g xz )
y
g123:=power(g13,y) mod p; -
xyz Tính α = H ( A,B,g ) sử dụng hàm băm SHA-1
a:=op(1,convert("A",bytes)); str3:=hash(convert(cat(a,b,g123),string)); alpha:=convert(str3,decimal,36); -
Tính X’|| α noi4:=X_phay*(2^l)+alpha;
- Ghi ra file snoi4:=convert(noi4,string); xalpha:="C:/Bob/XphayAlpha.txt"; FileTools[Text][WriteLine](xalpha,snoi4); fclose(xalpha); 1.7. Alice tính gxz,kiểm tra α và tính β
89
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.7.Alice tính gxz,kiểm tra α và tính β Code thực hiện -Tách X’ và α từ file nhận được từ Bob xalphadir:="D:/Alice/XPhayAlpha.txt"; l:=length(convert(p,binary)); if (FileTools[Exists](xalphadir)) then noi4:=parse(FileTools[Text][ReadLine](xalphadir)); fclose(xalphadir); alpha:=noi4 mod (2^l); 90
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
X_phay:=(noi4-alpha)/(2^l); -
yz Tính g =
X'
H ( A,S,g x )
pw1
sử dụng hàm băm SHA-1
read `sha1.m`; g1:=power(g,x) mod p; a:=op(1,convert("A",bytes)); s:=op(1,convert("S",bytes)); str1:=hash(convert(cat(a,s,g1),string)); num_str1:=convert(str1,decimal,36); pow_str1:=power(num_str1,pw1)mod p; g23:=(X_phay/pow_str1)mod p; -Tính g xyz = ( g yz )
x
g123:=power(g23,x) mod p; - Tính α ' = H(A, B,g xyz ) sử dụng hàm băm SHA-1 read `sha1.m`; a:=op(1,convert("A",bytes)); b:=op(1,convert("B",bytes)); alpha2:=hash(convert(cat(a,b,g123),string)); num_alpha2:=convert(alpha2,decimal,36); -
so sánh α ' và α ,nếu hai giá trị giống nhau thì chứng tỏ α nhận được là đúng with(Maplets[Elements]); 91
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
mapletCheckA := Maplet(["Kiểm tra hoàn tất,giá trị alpha nhận được là chính xác", [Button("OK", Shutdown("true"))]]); mapletCheckAFalse := Maplet(["Giá trị alpha nhận về là không chính xác", [Button("OK", Shutdown("true"))]]); if(num_alpha2=alpha)then Maplets[Display](mapletCheckA); else Maplets[Display](mapletCheckAFalse); end if; -
Tính β sử dụng hàm băm SHA-1 read `sha1.m`; beta:=hash(convert(cat(b,a,g123),string));
- Ghi ra file sbeta:=convert(beta,string); betadir:="D:/Alice/beta.txt"; FileTools[Text][WriteLine](betadir,sbeta); fclose(betadir); 1.8. Bob kiểm tra β
92
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình 5.8. Bob kiểm tra β Code thực hiện: -
Lấy giá trị β từ file Alice gửi betadir:="C:/Bob/beta.txt"; if (FileTools[Exists](betadir)) then beta:=FileTools[Text][ReadLine](betadir); fclose(betadir);
-
Tính giá trị β ' = H(A,B,g xyz ) sử dụng hàm băm SHA-1 read `sha1.m`; g123:=power(g13,y)mod p; beta1:=hash(convert(cat(b,a,g123),string));
-
So sánh β và β ' ,nếu hai giá trị trùng khớp thì β nhận được là chính xác with(Maplets[Elements]); mapletCheckB := Maplet(["Kiểm tra hoàn tất,giá trị Beta nhận được là chính xác", [Button("OK", Shutdown("true"))]]); mapletCheckBFalse := Maplet(["Giá trị Beta không chính xác,phiên kết nối sẽ bị ngắt", [Button("OK", Shutdown("true"))]]); 93
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
if(beta=beta1)then Maplets[Display](mapletCheckB); else Maplets[Display](mapletCheckBFalse); end if; 1.9.Tính khóa phiên sử dụng hàm băm MD5
Hình 5.9.Tạo khóa phiên Code thưc hiện - Tính khóa phiên with(StringTools); ska:=Hash(convert(cat(a,b,g123),string)); SetProperty(TextKeyA,'value',ska); -
Ghi khóa phiên vào file(chỉ mình Alice biết) keydir:="D:/Sessionkey/ska.txt"; FileTools[Text][WriteLine](keydir,ska); fclose(keydir);
- Giải phóng các biến sau khi hoàn thành trao đổi khóa restart; - Tương tự với bên Bob skb:=Hash(cat(a,b,g123)); SetProperty(TextKeyB,'value',skb); keydir:="C:/Sessionkey/skb.txt"; FileTools[Text][WriteLine](keydir,skb); fclose(keydir); restart; 94
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
1.10.Alice mã hóa thông điệp sử dụng khóa phiên
Hình 5.10.Mã hóa thông điệp Code thực hiện: - Lấy file thuật toán mã hóa AES read `AES.m`; read `encryptAES.m`; read `decryptAES.m`; - Lấy khóa phiên từ file keydir:="D:/Sessionkey/ska.txt"; ska:=FileTools[Text][ReadLine](keydir); fclose(keydir); - Lấy nội dung thông điệp cần mã hóa mess:=GetProperty(TextMess,'value'); - Cắt thông điệp thành các khối có độ dài 16 ký tự len:=length(mess); fin:=iquo(len,16)+1; pad:=16-irem(len,16); for i from 1 to fin do q[i]:=substring(mess,16*(i-1)+1..16*i); end do; 95
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
- Thêm ký tự đệm vào chuỗi cuối cùng,ký tự được thêm ở đây là “#” for i from 1 to pad do q[fin]:=cat(q[fin],"#"); end do; - Chuyển đổi khóa phiên thành khóa đầu vào thuật toán AES tempkey:=[seq(substring(ska,2*i-1..2*i),i=1..16)]; key:=map(hexTo8Bits,tempkey); - Mã hóa từng khối thông điệp bằng thuật toán AES for i from 1 to fin do c[i]:=encryptAESascii(q[i],key); end do; - Nối các khối mã hóa thành một chuỗi duy nhất cipher:=cat(seq(c[i],i=1..fin)); - Ghi ra file để chuyển cho user scipher:=convert(cipher,string); cipherAdir:="D:/Alice/cipherA.txt"; FileTools[Text][WriteLine](cipherAdir,scipher); fclose(cipherAdir); 1.11.Bob giải mã sử dụng khóa phiên
Hình 5.11.Giải mã thông điệp. Code thực hiện - Nhận file bản mã 96
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
cipherAdir:="C:/Bob/cipherA.txt"; if (FileTools[Exists](cipherAdir)) then cipher2:=FileTools[Text][ReadLine](cipherAdir); fclose(cipherAdir); - Lấy file thuật toán mã hóa AES read `AES.m`; read `encryptAES.m`; read `decryptAES.m`; - Lấy file thuật toán mã hóa AES keydir:="C:/Sessionkey/skb.txt"; skb:=FileTools[Text][ReadLine](keydir); fclose(keydir); - Tách chuỗi mã hóa thành các khối riêng biệt len:=length(cipher2); fin:=len/32; for i from 1 to fin do c[i]:=substring(cipher2,32*(i-1)+1..32*i); end do; - Chuyển đổi khóa phiên thành khóa đầu vào thuật toán AES tempkey:=[seq(substring(skb,2*i-1..2*i),i=1..16)]; key:=map(hexTo8Bits,tempkey); - Giải mã từng khối riêng biệt for i from 1 to fin do q[i]:=decryptAESascii(c[i],key); end do; - Cắt bỏ các ký tự thừa t:=0; 97
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
for i from 1 to 16 do if(q[fin][i]="#") then t:=t+1; end if; end do; - Nối lại thành chuỗi hoàn chỉnh cuối cùng q[fin]:=substring(q[fin],1..16-t); clear:=cat(seq(q[i],i=1..fin)); 2.Tấn công dò mật khẩu trên giao thức S-3PAKE
Hình 5.12.Lược đồ tấn công doán password ngoại tuyến Giả sử các thông số đã được khởi tạo và gửi cho các bên tham gia. Alice đã tính toán A||X và gửi A||X cho Bob.Kịch bản tấn công sẽ tập trung vào những việc mà Bob làm sau đó. 2.1.Bước đầu tính toán Code thực hiện Lấy A||X từ file l:=length(convert(p,binary)); axdir:="C:/Bob/AX.txt"; 98
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
if (FileTools[Exists](axdir)) then noi1:=parse(FileTools[Text][ReadLine](axdir)); fclose(axdir); - Tách lấy X X:=noi1 mod (2^l); -
Tính Y=Npw2 pwB:="at3akma"; temp:=convert(pwB,bytes); pw2:=parse(cat(seq(temp[i],i=1..nops(temp)))); Y:=power(N,pw2) mod p;
- Tính B||Y b:=op(1,convert("B",bytes)); noi2:=b*(2^l)+Y; - Tính A||X||B||Y noi:=noi1*(2^l)+noi2; - Ghi ra file snoi:=convert(noi,string); axbydir:="C:/Bob/AXBY.txt"; FileTools[Text][WriteLine](axbydir,snoi); fclose(axbydir); 2.2.Thực hiện dò mật khẩu
99
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
Hình.5.13.Thực hiện dò mật khẩu Code thực hiện - Tách giá trị X’ và Y’ từ file gửi từ Server XYphaydir:="C:/Bob/XphayYphay.txt"; l:=length(convert(p,binary)); if (FileTools[Exists](XYphaydir)) then noiXYPhay:=parse(FileTools[Text][ReadLine](XYphaydir)); fclose(XYphaydir); Y_phay:=noiXYPhay mod (2^l); X_phay:=(noiXYPhay-Y_phay)/(2^l); - Mở hộp thoại lấy đường dẫn đến file từ điển with(Maplets[Elements]): maplet := Maplet(FileDialog['FD1']( 'filefilter' = "txt", 'filterdescription' = "Text", 'filename'="C:/TuDien/TuDienA.txt",'onapprove'= Shutdown(['FD1']), 'oncancel' = Shutdown() )): dip:=Maplets[Display](maplet); 100
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
passdir:=op(1,dip); - Tiến hành dò Password trên file từ điển with(Maplets[Elements]); mapletPassFound := Maplet(["Đã tìm được password của Alice", [Button("OK", Shutdown("true"))]]); mapletPassFalse := Maplet(["Rất tiếc,không tìm thấy password của Alice trong từ điển", [Button("OK", Shutdown("true"))]]); count:=FileTools[Text][CountLines](passdir); FileTools[Text][Close](passdir); for i from 1 to count do q[i]:=FileTools[Text][ReadLine](passdir); end do; FileTools[Text][Close](passdir); result:=false; for i from 1 to count do temp:=convert(q[i],bytes); pw:=parse(cat(seq(temp[j],j=1..nops(temp)))); T1:=power(M,pw) mod p; T2:=(X/T1) mod p; a:=op(1,convert("A",bytes)); s:=op(1,convert("S",bytes)); Xtemp:=convert(hash(convert(cat(a,s,T2),string)),decimal,36); Xguess:=power(Xtemp,pw) mod p; if(Xguess=X_phay)then result:=true; pw3:=q[i]; break; end if; 101
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
end do; if(result) then Maplets[Display](mapletPassFound); SetProperty(TextPassA,'value',pw3); else Maplets[Display](mapletPassFalse); SetProperty(TextPassA,'value',""); end if;
KẾT LUẬN Sau khoảng thời gian làm đồ án,em có thể rút ra kết luận như sau Đã nắm bắt được một số giao thức xác thực từ xa và những tấn công điển hình lên các giao thức đó Nắm rõ về các giao thức trao đổi khóa,đặc biệt là giao thức trao đổi khóa ba bên dựa trên mật khẩu,với ưu điểm là đơn giản có khả năng triển khai cao.Tuy nhiên vẫn tồn tại những điểm yếu có thể bị kẻ xấu lợi dụng để tấn công,làm hại người dùng. Đã đưa ra được những biện pháp phần nào hạn chế những điểm yếu trong giao thức này. Thành công trong việc minh họa giao thức trao đổi khóa ba bên dựa trên mật khẩu và tấn công dò mật khẩu trên giao thức bằng công cụ Maple. Qua những điều đã nắm được,em xin phép đề xuất hướng phát triển cho đề tài đó là nghiên cứu khắc phục những điểm yếu cố hữu của giao thức trao đổi khóa dựa trên mật khẩu,để giao thức trở nên mạnh mẽ hơn nhưng vẫn không đánh mật ưu điểm của mình.
102
Nghiên cứu một số lược đồ xác thực từ xa và giao thức trao đổi khóa ba bên dựa trên mật khấu
` TÀI LIỆU THAM KHẢO 1.Giáo trình lý thuyết cơ sở mật mã – Học Viện Kỹ Thuật Mật Mã. 2.Giáo trình mật mã học nâng cao- Học Viện Kỹ Thuật Mật Mã. 3.Giáo trình cơ sở an toàn thông tin - Học Viện Kỹ Thuật Mật Mã. 4. Modern Cryptography: Theory and Practice - Wenbo Mao 5. Understanding Cryptography - Bart Preneel 6. Simple three-party key exchange protocol - R. Lu, Z. Cao . 7. Cryptanalysis of simple threeparty key exchange protocol - He Debiao, Chen Jianhua and Hu Jin. 8.A Secure Protocol for Three-Party Authenticated Key Exchange with Provable Belief - Ting-Fang Chenga, Chin-Chen Chang,Zhi-Hui Wang 9. Maple Learning Guide-Maplesoft
103