các giao thức xác thực

148
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 1

Transcript of các giao thức xác thực

Page 1: 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

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

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

Page 6: 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

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

Page 7: 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

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

Page 8: 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

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

Page 9: 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

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

Page 10: 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

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

Page 11: 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

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

Page 12: 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

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

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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

Page 20: 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

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

Page 21: 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

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

Page 22: 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

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

Page 23: 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

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

Page 24: 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

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

Page 25: 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

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

Page 26: 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

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

Page 27: 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

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

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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

Page 31: 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

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

Page 32: 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ô 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

Page 33: 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

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

Page 34: 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

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

Page 35: 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

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

Page 36: 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

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

Page 37: 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

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

Page 38: 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

Hình 2.12.Mô tả giao thức xác thực khoá đối xứng Needham-Schroeder.

38

Page 39: 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

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

Page 40: 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

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

Page 41: 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

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

Page 42: 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

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

Page 43: 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

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

Page 44: 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

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

Page 45: 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

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

Page 46: 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

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

Page 47: 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

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

Page 48: 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

Đó 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

Page 49: 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

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

Page 50: 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

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

Page 51: 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

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

Page 52: 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

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

Page 53: 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

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

Page 54: 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

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

Page 55: 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

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

Page 56: 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

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

Page 57: 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ạ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

Page 58: 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

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

Page 59: 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

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

Page 60: 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

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

Page 61: 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

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

Page 62: 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

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

Page 63: 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

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

Page 64: 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

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

Page 65: 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

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

Page 66: 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

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

Page 67: 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

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

Page 68: 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

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

Page 69: 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

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

Page 70: 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

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

Page 71: 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

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

Page 72: 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

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

Page 73: 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

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

Page 74: 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

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

Page 75: 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

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

Page 76: 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

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

Page 77: 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

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

Page 78: 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

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

Page 79: 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

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

Page 80: 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

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

Page 81: 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ô 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

Page 82: 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

`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

Page 83: 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

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

Page 84: 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

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

Page 85: 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

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

Page 86: 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

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

Page 87: 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

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

Page 88: 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

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

Page 89: 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

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

Page 90: 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

- 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

Page 91: 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

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

Page 92: 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

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

Page 93: 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

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

Page 94: 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

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

Page 95: 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

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

Page 96: 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

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

Page 97: 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

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

Page 98: 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

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

Page 99: 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

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

Page 100: 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

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

Page 101: 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

- 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

Page 102: 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

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

Page 103: 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

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

Page 104: 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

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

Page 105: 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

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

Page 106: 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

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

Page 107: 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

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