Download - các giao thức xác thực
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 1...................................................................................10
HÀM BĂM,CHỮ KÝ SỐ........................................................10
I.Hàm băm...............................................................................................................10
1.Khái niệm..........................................................................................................10
2.Phân loại hàm băm...........................................................................................11
II.Chữ ký số.............................................................................................................14
2.1.Khái niệm chữ ký số......................................................................................14
2.2.Các phương pháp tạo chữ ký số...................................................................14
2.3.Một số lược đồ chữ ký số..............................................................................15
Chương 2...................................................................................21
GIAO THỨC XÁC THỰC......................................................21
I.Khái niệm xác thực...............................................................................................21
1.Xác thực nguồn gốc dữ liệu.............................................................................21
2.Xác thực thực thể.............................................................................................22
3.Trao đổi khóa dựa trên xác thực....................................................................23
4.Tấn công trên giao thức xác thực....................................................................23
II.Những kỹ thuật xác thực cơ bản :.....................................................................24
1 Tính tươi của thông báo và tính sống của thực thể :.....................................24
2.Xác thực lẫn nhau.............................................................................................28
3 Xác thực liên quan đến bên thứ ba tin cậy :..................................................30
4.Xác thực dựa trên mật khẩu :.........................................................................32
5.Tấn công trên giao thức xác thực....................................................................37
Chương 3...................................................................................50
THIẾT LẬP KHÓA.................................................................50
1.Lý thuyết cơ bản...................................................................................................50
1.1.Khái niệm.......................................................................................................50
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
1.2.Độ tươi của khóa và sinh khóa(key freshness và key derivation).............50
1.3.Vấn đề n2........................................................................................................52
II.Một số lược đồ thiết lạp khóa dùng chung.......................................................53
1.Dựa trên hệ mật khóa bí mật..........................................................................53
2.Dựa trên hệ mật khóa công khai.....................................................................59
Chương 4...................................................................................65
TRAO ĐỔI KHÓA DỰA TRÊN MẬT KHẨU.....................65
I.Tổng quan về trao đổi khóa ba bên....................................................................65
II.Giao thức trao đổi khóa dựa trên mật khẩu đơn giản.....................................66
1.Lược đồ S-PAKE..............................................................................................66
2.Ví dụ..................................................................................................................68
III.Giao thức trao đổi khóa ba bên........................................................................69
1.Lược đồ trao đổi khóa ba bên của Lu và Cao................................................69
2.Tấn công trên giao thức S-3PAKE.................................................................71
Chương 5...................................................................................80
MINH HỌA TRÊN MAPLE...................................................80
I.Giới thiệu về Maple..............................................................................................80
II.Minh họa trên maple..........................................................................................80
1.Giao thức trao đổi khóa ba bên dựa trên mật khẩu S-3PAKE....................80
2.Tấn công dò mật khẩu trên giao thức S-3PAKE.........................................100
KẾT LUẬN.............................................................................105
TÀI LIỆU THAM KHẢO.....................................................106
Danh mục các ký hiệu viết tắt2
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
Ký hiệu Ý nghĩa
Chương 1
h Hàm một chiều
AES Advanced Encryption Standard-Chuẩn mã hóa
tiên tiến
MD4,MD5 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
Chương 2
Alice,Bob,.. Tên thực thể
MK 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
Mã hóa bằng khóa KAB
|| Nối bit
U User
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 function3
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
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
Mã hóa sử dụng KA
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
Chương 4
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
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
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
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
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
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
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
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
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
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
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.
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:
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
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
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
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:
1. 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.
2. 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).
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
Giả sử h là một hàm băm, x và là các đầu vào và y và 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:
1. 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 sao cho
với y cho trước và không biết đầu vào tương ứng).
2. 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
) sao cho
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à để .
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
là 264 . MD5 đã trở thành thuật toán được sử dụng cực kỳ rộng rãi, ví dụ như,
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
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: .
Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV).
2. Đầu ra là được xác định như sau:
Hình 1.1. Thuật toán băm Matyas - Meyer - Oseas.
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
Trong thuật toán này,thông điệp x được chia thành các khối x i,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 x i
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.
1. Đầ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
đã độn thành t khối k bit: . Xác định trước một giá trị ban đầu n
bit (ký hiệu IV).
2. Đầu ra là được xác định như sau:
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
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
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.
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:
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ạ.
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
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ý.
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:
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.4.Mô hình tạo chữ ký số RSA
Hình 1.5.Các bước kiểm tra chữ ký số
2.3.1.Sơ đồ chữ ký RSA
Giả sử , trong đó p và q là các số nguyên tố lớn có kích thước
tương đương.
Với ta có là khoá bí mật, là khoá công khai,
m là bản tin cần ký.
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
Tạo chữ ký :
Kiểm tra chữ ký: = đúng .
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
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ố
Sau đó A gửi cho B bộ đôi . B nhận được và kiểm tra xem
điều kiện có thoả mãn không. Nếu thoả mãn, thì khi đó B
khẳng định rằng nhận giá trị Đúng và chấp nhận chữ ký củ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
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
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
=163 mod 33 = 4
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ý . Sau đó A dùng khoá mã công khai
của B để lập bản mã rồi gửi đến B. Khi nhận được bản mã
M, B dùng khoá bí mật của mình để giải mã cho M và thu được .
Tiếp đó dùng thuật toán kiểm tra để xác nhận chữ ký của A.
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
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
2.Tính nA=pA*qA= 1373429 Tính nB=pB*qB=1781257
3.Tính A(n)=(pA-1)(qA-1)=
1371084
Tính B(n)=(pB-1)(qB-1)=
1778580
4.Chọn eA = 1919 Chọn eB= 5999
5.Tìm dA= 545147 Tìm dB= 1152119
6.Public key:
(nA,eA)=(1373429,1919)
Public key:
(nB,eB)=(1781257,5999)
7.Private key:
(nB,dB)=(1373429,545147)
Private key: (nB,dB)=(1781257,
1152119)
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 ;
3. =1599029||279545
Và gửi M cho B,khi B nhận được M,B sẽ tính
1. =240988||500724
2. .
3. m’= 240988.
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
của các số nguyên .
b) Chọn một số nguyên ngẫu nhiên , và tính
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
c) Khoá công khai là bộ 3 số , khoá bí mật là .
Chữ ký số:
a) Chọn KE ngẫu nhiên sau cho UCLN(KE,p-1)=1.
b) Tính .
c) Tính .
d) Chữ ký số là (r,s)
Kiểm tra chữ ký số
a) Tính .
b) Nếu t =gx thì chữ ký hợp lệ.
c) Nếu t gx thì chữ ký không hợp lệ.
Hình 1.8. Sơ đồ chữ ký số Elgamal
Chương 2
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
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
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 đó
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
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.
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.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
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.
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.
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
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 :
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 KAB 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)
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
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ử NB
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
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 đố .
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
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.
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
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
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
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 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.
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
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
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.
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
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.
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.
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
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.
2 Alice nhận được thông điệp,gửi lại cho Malice : CertA, RA || RB || B ||
sigA(RA || RB || B ).
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
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
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
“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.
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
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 : .
4 Bob gửi bản mã bao gồm định danh Alice và 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.
5 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.
6 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à :
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 :
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..
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
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.
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.
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
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ó
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)) ở đó
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
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.
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
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
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.
Trong bước một bản mã PU( ) 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 sử dụng khoá PU. Trong bước hai nội
dung được lập mã hai lần trong bản mã PU ( (K)) với K là khóa phiên.
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
Tính ngẫu nhiên một lần của đó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.
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
Hình 2.12.Mô tả giao thức xác thực khoá đối xứng Needham-Schroeder.
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.13. Tấn công lên giao thức xác thực khoá đối xứng Needham-
Schroeder
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
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
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 : để yêu cầu khóa công khai của Bob .
2) Trent-->Alice : , 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 : ; 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 : : 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 Alice40
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 : ;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 : ; 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 : ;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 Needhan-
Schroeder,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
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
Hình 2.15.Tấn công lên giao thức xác thực khóa công khai Needhan-
Schroeder
Mô tả
1) Alice --> Malice : ;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 : ;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 : ; 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 : ;Malice đơn giản gửi nguyên
thông điệp của Bob về cho Alice.
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
5) Alice --> Malice : ; 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 : ;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 " }
Để 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 :
Khi đó gói tin tấn công sẽ trở thành 2.6 : ;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
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
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)
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
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
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
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
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 ,
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 , , NB cho Alice
4.Alice giải mã bằng khóa KAT để thu được KAB,xác
minh lại NA và gửi , 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
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
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.
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, ;
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,
5.7.Tấn công do sử dụng sai các dịch vụ mật mã :
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
Đó 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 :
i) Tấn công do không có bảo vệ nguyên vẹn dữ liệu :
ii) Tính bí mật không đạt được do vắng mặt sự bảo vệ “an toàn ngữ
nghĩa”.
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à :
.
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, ;
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
2. Bob Malice(“Trent”) : M, Alice, Bob, ,
, ;
2'. Malice(“Bob”) Trent : M, Malice, Bob,
, , : Trong đó
là bản mã Malice gửi cho Bob trước đó;
3. Trent Bob : M, , ;
4. Bob Malice(“Alice”) : M, .
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 bằng bản mã cũ 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.
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
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
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
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” KAB
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
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
Hoặc thực hiện HMAC với cnt
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.
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
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
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
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.
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 Center-
KDC)
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
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
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
2 KDC sinh ngẫu nhiên một khóa phiên KSES
3 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
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
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
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 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à YB.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 n2/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
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
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
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
mạng máy tính.Kerberos ngày nay được sử dụng vô cùng rộng rãi.KDC ở đây
đượ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
1 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.
2 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
Và gửi YA,YB cho Alice.
3 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
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
lệ hay không.Sau đó,nếu tất cả hợp lệ,Alice sinh ra một tem thời gian TS và
tính toán và gửi YAB,YB tới Bob
4 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ố
1 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.
2 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.
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 NA bằng khóa KA hay
không.Nếu giá trị trả về của KDC trùng với khá trị NA 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ả YA 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
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
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
3 Đ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
4 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 YA 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
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:
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.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
. Các giá trị p và g được công khai.
A gửi cho B giá trị . (2.1)
B gửi cho A giá trị . (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: và gửi cho B thông
báo (2.1).
b) B chọn một số nguyên bí mật y: và gửi cho A thông
báo (2.2).
c) B thu được và tính khoá chung K:
d) A thu được và tính khoá chung K:
Ví dụ: Giả sử A và B chọn p = 11 và g=2
Nhóm nhân xyclic sinh bởi g:
(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.
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
Giả sử B chọn giá trị ngẫu nhiên y = 7 và gửi cho A giá trị 27 mod 11 =7.
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 : .
Khóa của Bob : .
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
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
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ỉ
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:
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
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.
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.
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
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:
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).
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
Chương 4.
TRAO ĐỔI KHÓA 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à Diffie-
Hellman 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ớ password-
mộ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
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
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.
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 Diffie-
Hellman(CCDH) và giao thức trao đổi khóa dựa trên mật khẩu được mã hóa-
Simple 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
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
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
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
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
2.Tính Y=gy mod p
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
1.
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
1.
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 A68
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.Tính mod 11 = 84.5(-24) mod 11 4.5 mod 11 9
Phía B
1.Tính mod 11 = 49.3(-54) mod 11 3.3 mod 11 = 9
Như vậy ta có thấy ,khi đó A và B lập khóa phiên và
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
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
Các bước trong mô hình này như sau
Bước 1
A 1.1.chọn một số ngẫu nhiên x sao cho x
1.2.Tính
1.3,Gửi A||X cho B
B 1.4.Chọn một số ngẫu nhiên y sao cho y
1.5.Tính
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.
2.2.
Sau đó S chọn một số ngẫu nhiên z và tính
2.3.
2.4.
2.5.
2.6.
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
3.1.
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
3.2.
3.3.
Cuối cùng B gửi X’|| cho A
Bước 4
Khi A nhận đc X’|| ,A sẽ tính
4.1.
4.2.
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 là đúng và tính toán session key
bằng công thức
4.3.
Cuối cùng A tính 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.
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
key: .
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,S-
3PAKE vẫn không thể chống được những tấn công như dò mật khẩu hay giả
mạo
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
2.1.Tấn công dò mật khẩu ngoại tuyến (Off-Line Password Guessing
Attack)
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
1.2.Tính
1.3,Gửi A||X cho B
B 1.5.Tính
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
72
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.
2.2.
Sau đó S chọn một số ngẫu nhiên z và tính
2.3.
2.4.
2.5.
2.6.
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
và .Các bước dò password như sau:
3.1)B giả sử password của A là pw.
3.2)Tính dựa vào thông tin thu được từ bước 1.
3.3)Tính dựa vào giá trị T vừa tính.
3.4)So sánh với thu được từ S.
3.5)Nếu và có cùng giá trị thì pw=pw1 hay password của A là pw.
3.6)Nếu và khác nhau thì qua lại bước 3.1.
B sẽ thực hiện dò password cho đến khi nào = 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, Zhi-
Hui Wang mô tả trong bài viết “A Secure Protocol for Three-Party
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
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
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
1.2.Tính
1.3,Gửi A||X cho B
B 1.4.Chọn một số ngẫu nhiên y sao cho y .
1.5.Thay đổi X thành .
1.6.Tính .
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
1.7.Gửi A|| ||B||Y cho S.
Bước 2:
S dựa vào thông tin A|| ||B||Y và pw1,pw2,tính:
2.1. .
2.2. .
Sau đó S chọn một số ngẫu nhiên z và tính:
2.3. .
2.4. .
2.5. .
2.6. .
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:
3.1. .
3.2. B bắt đầu đoán password của A,giả sử B đoán là pw.
3.2.1. Tính .
3.2.2. Tính .
3.2.3. So sánh và ,nếu hai giá trị là như nhau thì
pw=pw1.Ngược lại quay về bước 2.
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
Có thể thấy rõ rằng tương đương với
.
Khi = thì:
=
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 Three-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
Party 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:
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
1.2.Tính
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
1.6.Tính
1.7.Gửi A||X||O||Y cho S
Bước 2
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
S dựa vào trông tin A||X||O||Y và pw1,pw3,tính
2.1.
2.2.
Sau đó S chọn một số ngẫu nhiên z và tính
2.3.
2.4.
2.5.
2.6.
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
3.1.
3.2.
3.3.
Cuối cùng O gửi X’|| cho A
Bước 4
Khi A nhận đc X’|| ,A sẽ tính
4.1.
4.2.
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
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 là đúng và tính toán session key
bằng công thức
4.3.
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.
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
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,
đã 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
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
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
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 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
`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)
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
end do;
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
return(x);
end proc;
g:=TimG(p);
- Tạo file
with(Maplets[Elements]);
mapletSendp := Maplet(["Đã tạo file thongso.txt",
[Button("OK", Shutdown("true"))]]);
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
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
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 Bob84
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
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));
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
noi1:=65*(2^l)+X;
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));
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
fclose(axdir);
- 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
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’
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.5.Server tính X’||Y’
- Tách giá trị X và Y
axbydir:="C:/Server/AXBY.txt";
l:=length(convert(p,binary));
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
if (FileTools[Exists](axbydir)) then
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
g1:=(X/power(M,pw1)) mod p;
- Tính
g2:=(Y/power(N,pw2)) mod p;
- Tính
g13:=power(g1,z) mod p;
- Tính
g23:=power(g2,z) mod p;
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
- Tính sử dụng hàm băm sha1
read `sha1.m`;
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 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à
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
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);
- Tính sử dụng hàm băm SHA-1
read `sha1.m`;
b:=op(1,convert("B",bytes));
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
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
g123:=power(g13,y) mod p;
- Tính 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
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.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);
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
X_phay:=(noi4-alpha)/(2^l);
- Tính 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
g123:=power(g23,x) mod p;
- Tính 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
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
with(Maplets[Elements]);
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
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
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ị 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"))]]);
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
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"))]]);
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";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
FileTools[Text][WriteLine](keydir,skb);
fclose(keydir);
restart;
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;
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
pad:=16-irem(len,16);
for i from 1 to fin do
q[i]:=substring(mess,16*(i-1)+1..16*i);
end do;
- 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
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.11.Giải mã thông điệp.
Code thực hiện
- Nhận file bản mã
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;
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
- 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;
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
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
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";
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);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
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
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
103
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
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);
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);
104
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
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;
end do;
if(result) then
Maplets[Display](mapletPassFound);
SetProperty(TextPassA,'value',pw3);
else
Maplets[Display](mapletPassFalse);
SetProperty(TextPassA,'value',"");
end if;
105
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
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.
`
106
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
107