Phương pháp chứng thực dùng hàm băm mật mã
Giới thiệu
Chương này trình bày các phương pháp phổ biến thông qua việc minh họa một số nghiên cứu gần đây Mặc dù các nghiên cứu này đều tập trung vào việc hạn chế các hình thức tấn công trong giai đoạn chứng thực, nhưng vẫn còn nhiều vấn đề cần được cải thiện để khắc phục những hạn chế hiện có.
Hai hướng tiếp cận phổ biến hiện nay trong bảo mật là sử dụng hàm băm mật mã và các bài toán khó kết hợp với quy trình mã hóa đối xứng/hàm băm Cả hai phương pháp này đều tích hợp thông tin phụ như mật khẩu, đặc trưng sinh trắc, đại lượng ngẫu nhiên hoặc nhãn thời gian để giảm thiểu nguy cơ tấn công Chương này sẽ tập trung vào hướng tiếp cận hàm băm mật mã và các biến thể của nó, trong khi hướng tiếp cận sử dụng các bài toán khó sẽ được trình bày trong chương 3.
Tiếp cận sử dụng hàm băm một chiều có nhiều biến thể nhờ vào tính hiệu quả và an toàn Hàm băm có thể kết hợp với khóa hoặc được lặp lại nhiều lần trên cùng một đầu vào Việc sử dụng nhãn thời gian và đại lượng ngẫu nhiên cũng giúp tăng cường độ an toàn cho quy trình Sự kết hợp giữa hàm băm, nhãn thời gian và cơ chế đồng bộ giữa các bên tham gia tạo ra quy trình chứng thực thông qua kỹ thuật bắt tay hai chiều Do đó, phương pháp này là một lựa chọn bên cạnh quy trình sử dụng kỹ thuật bắt tay ba chiều với lượng ngẫu nhiên.
Phương pháp hàm băm kết hợp với nhãn thời gian
Công trình của Kumari và cộng sự áp dụng phương pháp hàm băm kết hợp với nhãn thời gian, bao gồm bốn giai đoạn chính: đăng ký, đăng nhập, xác thực và thay đổi mật khẩu người dùng Bảng 2.1 liệt kê các ký hiệu được sử dụng trong quy trình này.
Máy chủ, người dùng Định danh của U i
Kẻ tấn công Mật khẩu của U i
Số ngẫu nhiên S i gán cho U i
Khóa (giá trị) bí mật của S i
Hàm băm một chiều Toán tử XOR, nối chuỗi Khóa phiên do U i và S i thiết lập
Bảng 2.1: Ký hiệu dùng trong công trình Saru Kumari [13]
Khi U i đăng kí tại S i và thực hiện các bước sau:
- U i đặt ID i và tạo Pw i cùng số ngẫu nhiên b Sau đó U i gửi {ID i, RPw i = h(b ||
Pw i)} tới S i thông qua kênh an toàn
- Khi nhận {ID i, RPw i} từ U i, S i gán cho U i một giá trị đại diện y i (y i khác nhau ứng với từng người dùng)
- S i lưu {Y i, D i, E i, h(.)} vào SC i và gửi cho U i cặp {SC i, N i} qua kênh an toàn Trong đó N i = h(ID i || x) RPw i, Y i = y i h(ID i || x), D i = h(ID i || y i || RPw i) và E i = y i
- Khi nhận {SC i, N i} từ S i, U i nhập A i và M i vào SC i = {A i, M i, Y i, D i, E i, h(.)}, với A i = (ID i || Pw i) b và M i = N i b
Trong quá trình đăng ký, máy chủ mã hóa đại lượng y của từng người dùng bằng một đại lượng chung h(y || x), điều này tạo ra một hạn chế cho phương pháp Nếu kẻ tấn công là một trong những người dùng hợp lệ, họ có thể lợi dụng điểm yếu này để xác định danh tính người dùng Chi tiết về vấn đề này sẽ được phân tích trong phần tiếp theo.
Khi U i truy cập S i, U i cung cấp SC i, ID i và Pw i tại trạm tiếp nhận Sau đó, SC i thực hiện các bước sau:
- Khôi phục b = A i (ID i || Pw i) và tính RPw i = h(b || Pw i), h(ID i || x) = M i
RPw i b, y i = Y i h(ID i || x) và D i * = h(ID i || y i || RPw i)
SC i kiểm tra điều kiện D i ?= D i * Nếu D i * không bằng D i, SC i sẽ ngắt phiên Nếu tình trạng này lặp lại ba lần, U i sẽ bị chặn Để tái kích hoạt SC i, U i cần thực hiện quy trình Private.
- Nếu D i = D i *, nghĩa là ID i và Pw i hợp lệ Lúc này SC i tính h(y || x) = y i E i, N i
C i = h(N i || y i || B i || T i) và F i = y i (h(y || x) || T i), trong đó T i là nhãn thời gian của U i
- SC i chuyển {CID i, N i ’, C i, F i, T i} cho S i qua kênh thông thường
Trong quá trình đăng nhập, định danh người dùng bị ẩn bằng một đại lượng ngẫu nhiên y i do máy chủ tạo ra trong giai đoạn đăng ký Tuy nhiên, kẻ tấn công có khả năng phát hiện đại lượng y i này, từ đó có thể xác định được định danh thực sự của người dùng đang thực hiện giao dịch với máy chủ.
Khi nhận {CID i, N i ’, C i, F i, T i} từ U i, S i thực hiện các bước sau để chứng thực:
Để đảm bảo tính chính xác trong quá trình kiểm tra, S i cần xác minh rằng khoảng thời gian (T S – T i) không vượt quá T và phát hiện việc trùng lặp thông tin đăng nhập được gửi đến S i trong khoảng thời gian từ (T i - T) đến (T i + T) Nếu cả hai điều kiện này được thỏa mãn, S i sẽ tiếp tục quy trình; nếu không, quy trình sẽ bị dừng lại.
B i * = h(ID i || x) và C i * = h(N i || y i || B i * || T i), và so sánh C i * ?= C i
Nếu C i không bằng C i *, hệ thống S i sẽ ngắt phiên và ghi nhớ ID i cùng số lần đăng nhập thất bại Sau ba lần đăng nhập không thành công của U i, S i sẽ từ chối phục vụ U i trong một khoảng thời gian nhất định Khi C i bằng C i *, U i sẽ được chứng thực thành công và S i sẽ tiếp tục quy trình.
- S i tính a = h(B i * || y i || T SS), với T SS là nhãn thời gian S i gửi {a, T SS} cho SC i
Khi nhận được {a, T SS} từ S i, SC i sẽ kiểm tra tính hợp lệ của T SS Nếu T SS nằm trong khoảng thời gian cho phép, SC i sẽ tính toán a * = h(B i || y i || T SS) Cuối cùng, SC i so sánh a * với a; nếu chúng bằng nhau (a = a *), thì U i/SC i xác nhận S i là hợp lệ.
- Khi chứng thực thành công, U i và S i tính S essk = h(B i || y i || T i || T SS || h(y || x)) và (S essk) * = h(B i * || y i || T i || T SS || h(y || x))
Trong quá trình chứng thực, máy chủ sử dụng nhãn thời gian để ngăn chặn các cuộc tấn công lặp lại Sau khi hoàn tất quá trình này, cả máy chủ và người dùng sẽ cùng nhau tính toán khóa phiên chung.
• Pha thay đổi mật khẩu
Trong quá trình thay đổi mật khẩu, người dùng không cần tương tác trực tiếp với máy chủ, giúp việc chứng thực trở nên thuận tiện hơn Để thay đổi mật khẩu từ (Pw i) thành (Pw i)new, người dùng cần thực hiện các bước sau.
- U i cung cấp ID i, Pw i và SC i tại trạm và yêu cầu thay đổi mật khẩu
- SC i trích b = A i (ID i || Pw i) và RPw i = h(b || Pw i) Sau đó, SC i tính h(ID i || x)
= M i RPw i b, y i = Y i h(ID i || x) và D i * = h(ID i || y i || RPw i)
- SC i kiểm tra điều kiện D i * ?= D i Nếu D i D i * thì SC i ngắt phiên Nếu điều này lặp lại ba lần thì SC i bị chặn U i cần qua PUK để tái kích hoạt SC i
- Khi D i = D i *, có nghĩa ID i và Pw i hợp lệ SC i tiếp tục quy trình
SC i cho phép U i nhập mật khẩu mới (Pw i)new, sau đó tính toán giá trị (RPw i)new bằng hàm băm h(b || (Pw i)new) Tiếp theo, giá trị (A i)new được tạo ra từ (ID i || (Pw i)new) kết hợp với b, trong khi (M i)new được tính bằng cách XOR M i với (RPw i) và (RPw i)new Cuối cùng, SC i cập nhật các giá trị A i, M i và D i mới với (A i)new, (M i)new và (D i)new, trong đó (D i)new được tính bằng hàm băm h(ID i || y i || (RPw i)new).
Trong quy trình, người dùng U a có khả năng thu thập thông tin chứng thực từ người dùng khác thông qua các kênh truyền thông thông thường Từ những thông tin này, U a có thể kết hợp với dữ liệu trong thẻ để tính toán các giá trị quan trọng, từ đó thực hiện các cuộc tấn công đối với người dùng dưới nhiều hình thức khác nhau Dưới đây là các bước mà U a thực hiện để xác định danh tính của U i.
- U a trích các thông tin trong thẻ của U a và thực hiện tính b a = A a (ID a || Pw a),
RPw a = h(b a || Pw a), N a = M a b a, h(ID a || x) = N a RPw a, y a = Y a h(ID i || x) và h(y || x) = E a y a
- Xét U i là nạn nhân, vậy U a có thể bắt được {CID i, N i ’, C i, F i, T i} và {a, T SS} tại một phiên nào đó của U i
- Từ F i và T i, U a tính y i = F i (h(y || x) || T i), N i = N i ’ h(y i || T i) và ID i = CID i h(N i || y i || T i)
Quy trình hiện tại không đảm bảo tính nặc danh của từng người dùng Hơn nữa, nếu thông tin trong SC i của U i bị rò rỉ, U a có khả năng tính toán ra khóa chứng thực h(ID i).
|| x) = Y i y i Như vậy với thông tin này, U a có thể tính CID a = ID i h(ID i || y i || T a),
N a ’ được tính toán bằng công thức N a ’ = N i h(y i || T a), trong khi F a được xác định là F a = y i (h(y || x) || T a) Bên cạnh đó, C a được tạo ra từ C a = h(N a || y i || h(ID i || x) || T a) Cuối cùng, U a gửi gói tin {CID a, N a ’, C a, F a, T a} Gói tin này là chứng thực hợp lệ, giúp quy trình này bảo vệ chống lại các cuộc tấn công hai nhân tố chính.
Mặc dù quy trình sử dụng nhãn thời gian và kỹ thuật bắt tay hai chiều giúp đơn giản hóa và tăng tốc độ chứng thực, nhưng việc dễ dàng lộ thông tin định danh người dùng và nguy cơ tấn công khi mất thẻ khiến cho việc triển khai trong thực tế trở nên khó khăn.
Phương pháp hàm băm kết hợp với lượng ngẫu nhiên
Phương pháp Xiong Li và cộng sự [33] bao gồm bốn pha: đăng ký, đăng nhập, chứng thực và thay đổi mật khẩu, được thiết kế cho môi trường đa máy chủ Trong giai đoạn đầu, trung tâm đăng ký tạo khóa chủ h(x || y) cùng với các khóa phụ cho từng máy chủ dịch vụ h(SID j || h(y)) Các ký hiệu sử dụng trong quy trình này được trình bày trong Bảng 2.2.
1 Tính nặc danh là khả năng ẩn đi định danh người dùng: quy trình chứng thực cần đảm bảo tính nặc danh trên đường truyền
2 Hai nhân tố chính là thẻ và thông tin bí mật (mật khẩu/đặc trưng sinh trắc): mất một trong hai quy trình cần phải an toàn
Người dùng thứ i, máy chủ thứ j Định danh/mật khẩu của U i
Trung tâm đăng ký Định danh của S j, định danh động của U i
Khóa chủ và giá trị bí mật của RC Hàm băm mật mã
Phép XOR, phép nối chuỗi Kênh truyền an toàn/thông thường
Bảng 2.2: Ký hiệu dùng trong công trình Xiong Li [33]
U i đăng ký với RC theo các bước sau:
- U i chọn ID i, PW i, giá trị ngẫu nhiên b và tính A i = h(b PW i) Sau đó, U i gửi
ID i và A i cho RC qua kênh truyền an toàn
- Khi nhận {ID i, A i} từ U i, RC tính các giá trị B i = h(ID i || x), C i = h(ID i || h(y) ||
- RC tạo thẻ, lưu {C i, D i, E i, h(.), h(y)} vào bên trong, và gửi cho U i qua kênh truyền an toàn
Trong quy trình đăng ký, người dùng nhập thông tin vào thẻ, tạo ra dữ liệu cuối cùng là {C i, D i, E i, b, h(.), h(y)} Tương tự như quy trình của Kumari, quá trình này vẫn sử dụng đại lượng khóa chung h(y), điều này tạo ra một hạn chế lớn, vì kẻ tấn công có khả năng lợi dụng để mạo danh người dùng khi thông tin trong thẻ bị rò rỉ.
Khi đăng nhập sử dụng dịch vụ, U i cần thực hiện các bước sau:
- U i cung cấp thẻ tại trạm tiếp nhận và nhập ID i, PW i Sau đó thẻ tính A i = h(b
PW i), C i * = h(ID i || h(y) || A i) và kiểm tra điều kiện C i * ?= C i Nếu điều kiện thỏa thì U i tiếp tục quy trình Ngược lại thẻ sẽ ngắt phiên
- Thẻ chọn ngẫu nhiên N i và tính P ij = E i h(h(SID j || h(y)) || N i), CID i = A i h(D i || SID j || N i), M 1 = h(P ij || CID i || D i || N i), M 2 = h(SID j || h(y)) N i
Trong quá trình gửi {P ij, CID i, M 1, M 2} cho S j qua kênh truyền thông thông thường, đại lượng ngẫu nhiên N i dễ dàng bị tính toán trong pha đăng nhập do chỉ được bảo vệ bằng đại lượng h(y) Điều này làm giảm tính thách thức từ phía người dùng và ảnh hưởng đến sự công bằng trong quá trình chứng thực.
Sau khi S j nhận {P ij, CID i, M 1, M 2} từ U i, S j và U i thực hiện các bước sau để hoàn thành quy trình chứng thực:
- S j tính N i = h(SID j || h(y)) M 2, E i = P ij h(h(SID j || h(y)) || N i), B i = E i h(x || y), D i = h(B i || h(x || y)) và A i = CID i h(D i || SID j || N i)
S j tính giá trị h(P ij || CID i || D i || N i) và so sánh với M 1 Nếu hai giá trị không khớp, S j sẽ từ chối gói tin đăng nhập và ngắt phiên Ngược lại, nếu chúng bằng nhau, S j sẽ chấp nhận gói tin đăng nhập Sau đó, S j khởi tạo giá trị ngẫu nhiên N j và tính M 3 = h(D i || A i).
|| N j || SID j), M 4 = A i N i N j Cuối cùng, S j gửi {M 3, M 4} cho U i qua kênh truyền thông thường
Khi nhận {M 3, M 4} từ S j, U i tính toán N j bằng cách sử dụng công thức N j = A i N i M 4 và h(D i || A i || N j || SID j) Sau đó, U i so sánh giá trị này với M 3; nếu không khớp, U i từ chối thông điệp và thực hiện ngắt phiên Ngược lại, nếu các giá trị bằng nhau, U i xác thực thành công S j.
M 5 = h(D i || A i || N i || SID j) và gửi {M 5} tới S j qua kênh truyền thông thường
- Khi nhận {M 5} từ U i, S j tính h(D i || A i || N i || SID j) và so sánh với M 5 Nếu các giá trị bằng nhau, S j chứng thực thành công U i và quy trình chứng thực hoàn tất
- Sau khi chứng thực thành công, U i và S j tính khóa phiên chung SK = h(D i || A i
|| N i || N j || SID j) dùng cho các giao dịch phía sau
Trong quá trình xác thực, máy chủ dịch vụ sẽ ngẫu nhiên chọn đại lượng N j Chỉ những người dùng hợp lệ, tức là những người có đại lượng quy ước A i, mới có khả năng tính toán được N j Điều này giúp máy chủ gửi phản hồi chính xác.
• Pha thay đổi mật khẩu
Pha này thực hiện khi U i đổi PW i thành PW i new mà không cần tương tác với RC
- U i nhập ID i, PW i và cung cấp thẻ tại trạm tiếp nhận
- Thẻ tính A i = h(b PW i), C i * = h(ID i || h(y) || A i) và kiểm tra C i * ?= C i Nếu biểu thức không thỏa, thì thẻ từ chối yêu cầu thay đổi mật khẩu Ngược lại, U i nhập
PW i new và số ngẫu nhiên b new
- Thẻ tính A i new = h(b new PW i new) và C i new = h(ID i || h(y) || A i new)
- Cuối cùng thẻ thay C i bằng C i new và kết thúc pha thay đổi mật khẩu
Khi U i mất thẻ, nguy cơ bị mạo danh tăng cao, và kẻ tấn công U a có thể lợi dụng S j để đoán mật khẩu thông qua khóa phiên Điều này cho thấy quy trình hiện tại không an toàn trước các cuộc tấn công hai yếu tố Dưới đây là các bước để thực hiện mạo danh U i và đoán mật khẩu, giả định rằng thông tin trong thẻ đã bị rò rỉ.
- U a tính P ij = E i h(h(SID j || h(y)) || N i), trong đó E i là thông tin trích từ thẻ,
SID j, h(y) và N i là các thông tin mà U a tính được dễ dàng do đây là các thông tin dùng chung và công khai
- Tiếp theo U a tính CID i = A i h(D i || SID j || N i), M 1 = h(P ij || CID i || D i || N i), M 2
= h(SID j || h(y)) N i Trong đó, A i = h(b PW i) là giá trị của chính U a và D i trích ra từ thẻ của U i
- U a gửi {P ij, CID i, M 1, M 2} cho S j Khi nhận được S j sẽ lần lượt thực hiện tiếp các bước sau để kiểm tra
- S j nhận thấy M 1 = h(P ij || CID i || D i || N i), nên S j chọn ngẫu nhiên N j, và tính M 3
- Khi nhận {M 3, M 4} từ S j, U a tính M 5 = h(D i || A i || N i || SID j) và gửi cho S j
- S j nhận thấy M 5 = h(D i || A i || N i || SID j) và chấp nhận U a
- Cuối cùng, U a và S j thiết lập khóa phiên SK = h(D i || A i || N i || N j || SID j)
Do E i được lấy từ thẻ U i, nên các giá trị B i và D i cũng liên quan đến U i Tuy nhiên, thiết kế quy trình đã tách A i ra khỏi các giá trị khác, cho phép U a có thể giao dịch với U i và S j trước đó, từ đó có khả năng đoán mật khẩu của U i Nếu U a nắm thông tin M 5 = h(D i || A i || N i || SID j) của U i, thì U a có thể tạo ra điều kiện h(D i || h(b guess) || N i || SID j) ?= M 5 và sử dụng từ điển mật khẩu để thử nghiệm lần lượt.
‘ guess ’ cho tới khi điều kiện thỏa Lưu ý giá trị N i của U i dễ dàng tìm bằng cách tính
N i = M 2 h(SID j || h(y)), trong đó SID j và h(y) là các giá trị dễ dàng thu thập bởi U a Luận án đánh giá quy trình sử dụng hàm băm mật mã nhằm tăng tốc độ xử lý chứng thực Tuy nhiên, quy trình này cũng tiềm ẩn nguy cơ bị tấn công khi mất thẻ hoặc khi người dùng quên mật khẩu Điều này trở nên nghiêm trọng do thói quen sử dụng chung một mật khẩu cho nhiều hệ thống khác nhau, dẫn đến khó khăn trong việc triển khai thực tế.
Phương pháp thực hiện hàm băm nhiều lần
Hướng tiếp cận thực hiện băm nhiều lần trên các đại lượng nhằm gia tăng độ an toàn, tuy nhiên điều này cũng làm tăng chi phí thời gian thực hiện chứng thực Quy trình của Shin và cộng sự bao gồm bốn pha chính: đăng kí, đăng nhập, chứng thực và cập nhật mật khẩu Các kí hiệu được sử dụng trong quy trình này được trình bày trong Bảng 2.3.
Máy chủ/người dùng thứ i Mật khẩu của U i
Khóa bí mật của S Khóa của U i với S Định danh chuyển đi của U i Định danh bị mã của U i Định danh động của U i, S Khóa phiên của U i
Khóa phiên của S Hàm băm một chiều Hàm băm thực hiện k lần Phép XOR, nối chuỗi
A gửi M cho B qua kênh an toàn
A gửi M cho B qua kênh thông thường
Mã hóa thông điệp M bằng khóa SK i
Bảng 2.3: Ký hiệu dùng trong công trình Shin [32]
• Pha đăng kí người dùng
Khi U i truy cập S, U i cần thực hiện các bước sau:
- U i chọn ID i, PW i và gửi {ID i, h(PW i)} cho S qua kênh truyền an toàn
Khi nhận {ID i, h(PW i)} từ U i, S sẽ tính TID i = h(ID i || h(PW i)) Nếu TID i đã tồn tại trong cơ sở dữ liệu, S yêu cầu U i đăng ký tài khoản khác Nếu không, S sẽ lưu thông tin đó.
TID i vào cơ sở dữ liệu Thủ tục này nhằm đảm bảo tính duy nhất của người dùng
Sau đó, S tính A i = h(K U) K S, trong đó K S là khóa bí mật của S và K U là khóa quy ước giữa S và U i Khóa K U được sử dụng để khởi tạo định danh động trong các pha tiếp theo và sẽ được cấp riêng cho từng người dùng bởi phía máy chủ.
- Tiếp theo, S tính B i = (𝑔 𝐴 𝑖 mod p) h(PW i), trong đó g là phần tử sinh của trường ℤp (p ℙ, p là số nguyên tố thuộc tập hợp các số nguyên tố ℙ)
Để tạo thẻ, cần lưu các thông tin TID i, B i, h(.) và K U, sau đó gửi cho U i qua một kênh truyền an toàn Trong quá trình đăng ký, đại lượng B i đóng vai trò quan trọng vì nó sẽ được người dùng sử dụng.
Để chứng thực với máy chủ dịch vụ, việc sử dụng thao tác ‘lũy thừa modulo’ cho đại lượng B i sẽ tăng cường độ an toàn Tuy nhiên, chi phí tính toán sẽ cao hơn so với các phương pháp đơn giản như XOR hoặc nối chuỗi.
U i cung cấp ID i, PW i và thẻ tại trạm tiếp nhận Sau đó, thẻ sẽ thực hiện các bước:
- Tạo hai giá trị ngẫu nhiên n i và k i
- Tính CTID i = TID i n i, C i = h(B i h(PW i)) n i, M i = K U mod k i và DID i ℎ 𝑀 𝑖 (TID i B i h(PW i)) 1
Người dùng gửi thông tin {DID i, CTID i, C i, k i} cho S qua kênh truyền thông thông thường, trong đó thực hiện ẩn định danh TID i bằng một đại lượng ngẫu nhiên n i Tiếp theo, người dùng ẩn n i bằng đại lượng A i do máy chủ cung cấp trong pha đăng ký, đảm bảo chỉ có máy chủ mới có thể hồi đáp lại giá trị ngẫu nhiên này Đặc biệt, thông điệp DID i được thực hiện băm nhiều lần để tăng cường mức độ an toàn.
U i và S thực hiện các bước sau để hoàn thành pha chứng thực:
- Khi nhận {DID i, CTID i, C i, k i} từ U i, S tính A i = h(K U) K S, h(𝑔 𝐴 𝑖 mod p), n i ’
- S tính TID i ’ = CTID i n i ’ và so sánh TID i ’ ?= TID i (TID i lưu trong cơ sở dữ liệu) Nếu điều kiện không thỏa thì S ngắt phiên, ngược lại tiếp tục quy trình
- S tính M i = K U mod k i, DID i ’ = ℎ 𝑀 𝑖 (TID i h(𝑔 𝐴 𝑖 mod p)) và so sánh DID i ’ ? DID i Nếu điều kiện không thỏa, quy trình chứng thực thất bại; ngược lại, U i được S xem là hợp lệ
- S chọn n S và tính DID S = h(DID i n i n S) và CTID S = CTID i n S
- S gửi {DID S, CTID S} cho U i qua kênh truyền thông thường
- Khi nhận {DID S, CTID S} từ S, U i tính n S ’ = CTID S CTID i, DID S ’ = h(DID S
n i n S ’) và so sánh DID S ’ ?= DID S Nếu điều kiện không thỏa, quy trình chứng thực thất bại; ngược lại, U i xem S là hợp lệ
- U i tính DID iS = DID S n i (n S + 1) và gửi {DID iS } cho S qua kênh truyền thông thường
- Khi nhận {DID iS} từ U i, S tính (n S + 1) ’ = DID iS n i DID S và so sánh (n S +
1) ’ ?= (n S + 1) Nếu điều kiện không thỏa, quy trình thất bại; ngược lại, quy trình chứng thực hoàn tất
- Sau khi quy trình chứng thực hoàn tất, U i và S thiết lập khóa phiên SK i = h(B i
h(PW i) n i n S) và SK S = h((𝑔 𝐴 𝑖 mod p) n i n S), với SK i = SK S
Trong pha chứng thực, bước ẩn lượng ngẫu nhiên n S phía máy chủ bằng đại lượng
CTID i là một hạn chế do nó là đại lượng truyền thô qua kênh thông thường, điều này cho phép bất kỳ ai cũng có thể tiếp cận thông tin và từ đó tính toán các đại lượng quan trọng khác.
• Pha thay đổi mật khẩu
Khi U i thay đổi PW i, U i thực hiện các bước sau:
- U i cung cấp thẻ tại trạm tiếp nhận, sau đó gửi {DID i, CTID i, C i, k i,
𝑀𝑟𝑒𝑞𝑢𝑒𝑠𝑡−𝑐ℎ𝑎𝑛𝑔𝑒−𝑃𝑊 𝑖 } cho S qua kênh truyền thông thường
- Sau đó U i và S qua bước chứng thực như trên để đảm bảo U i và S là hợp lệ
- U i khởi tạo PW i *, tính TID i * = h(ID i h(PW i *)) và gửi 𝐸 𝑆𝐾 𝑖 {TID i *} cho S qua kênh truyền thông thường
- S giải mã với khóa SK S, cập nhật TID i = TID i * và gửi hồi đáp cho U i
- Sau khi nhận được thông điệp từ S, U i tính B i * = B i h(PW i) h(PW i *) và lần lượt thay TID i bằng TID i *, B i bằng B i *
Kẻ tấn công U a có khả năng chọn bất kỳ người dùng nào làm nạn nhân, ví dụ như U i trong một phiên cụ thể Để thực hiện tấn công, U a sẽ tiến hành các bước nhất định nhằm khai thác lỗ hổng.
- Thu thập {DID i, CTID i, C i, k i}, {DID S, CTID S} và {DID iS} ở phiên nào đó
- U a tính đại lượng ngẫu nhiên của S: n S = CTID S CTID i và đại lượng ngẫu nhiên của U i: n i = DID iS DID S (n S + 1)
- Với đại lượng ngẫu nhiên, U a tính TID i = CTID i n i và h(𝑔 𝐴 𝑖 mod p)
- Cuối cùng U a tìm M i bằng cách tạo vòng lặp cho tới khi tìm đúng giá trị x để thỏa mãn biểu thức: DID i ?= h x (TID i h(𝑔 𝐴 𝑖 mod p))
Với TID i, h(𝑔 𝐴 𝑖 mod p), n i của U i, U a tấn công lặp lại 1 như sau:
- Gửi lại {DID i, CTID i, C i, k i} cho S Sau khi S tính toán và gửi lại {DID S ’,
CTID S ’} Lưu ý đại lượng ngẫu nhiên của S không còn là n S mà là n S ’ n S
- Khi nhận {DID S ’, CTID S ’} từ S, U a tính n S ’ = CTID i DID S ’, DID iS ’ = DID S ’ n i (n S ’ + 1) và gửi {DID iS ’} cho S
- Cuối cùng U a và S thiết lập khóa phiên SK = h((𝑔 𝐴 𝑖 mod p) n i n S ’)
U a chỉ cần thu thập thông tin một lần từ U i để thực hiện các cuộc tấn công lặp lại, điều này cho thấy quy trình của Shin có những hạn chế Hơn nữa, U a có thể theo dõi âm thầm các gói tin giao dịch sau khi chứng thực giữa hai bên Với các đại lượng ngẫu nhiên từ người dùng và máy chủ, cùng với thông tin h(𝑔 𝐴 𝑖 mod p), việc tìm ra khóa phiên SK trở nên dễ dàng, dẫn đến việc thông tin mã hóa với SK có nguy cơ bị lộ.
Theo đánh giá của luận án, quy trình này không thể triển khai thực tế vì kẻ tấn công có khả năng tính toán từ các gói tin chứng thực trên đường truyền công cộng, dẫn đến việc người dùng và máy chủ dịch vụ sẽ bị lộ toàn bộ giao dịch.
Phương pháp sử dụng hàm băm có khóa
Việc kết hợp khóa với hàm băm nâng cao tính an toàn trong chứng thực người dùng, đặc biệt khi khóa là đặc trưng sinh trắc học Quy trình của Khan và cộng sự minh họa phương pháp này qua bốn pha: đăng ký, đăng nhập, chứng thực hai phía và thống nhất khóa phiên, cũng như thay đổi mật khẩu Bảng 2.4 trình bày các ký hiệu được sử dụng trong quy trình này.
Người dùng thứ i Định danh của U i Mật khẩu của U i
Máy chủ Định danh máy chủ Khóa của máy chủ Hàm băm một chiều Hàm băm một chiều có khóa Lượng ngẫu nhiên
Phép XOR Phép NOR Phép nối chuỗi
Bảng 2.4: Ký hiệu dùng trong công trình Khan [12]
• Pha đăng kí người dùng
U i cung cấp ID i, h(PW i || N) và F i cho S qua kênh truyền an toàn
- Khi nhận được yêu cầu đăng ký, S chọn đại lượng ngẫu nhiên e và tính hpw h(PW i || N) F i, B i = hpw e, C i = hpw h(x || IDS), E i = hpw h(x || e || IDS), R i h(ID i h(x || e || IDS)) hpw và V i = ℎ ℎ(𝐼𝐷 𝑖 ⊕ℎ(𝑥 || 𝑒 || 𝐼𝐷𝑆))(F i)
- S gửi {B i, C i, E i, R i, V i, h(.), h k(.)} cho thiết bị của U i qua kênh truyền an toàn
Trong quá trình đăng ký, U lưu trữ thông tin nhận được từ S và cập nhật ID i cùng với N vào thiết bị di động Ưu điểm của pha này là người dùng có thể ẩn mật khẩu bằng cách gửi cho S giá trị băm h(PW i || N) và kết hợp dấu vân tay để nâng cao tính an toàn Tuy nhiên, một hạn chế lớn là kẻ tấn công có khả năng lợi dụng các thông tin {B i, C i, E i, R i, V i, h(.), h k(.)} mà S chia sẻ cho U i để tính toán ra các đại lượng quan trọng khác.
Sau khi hoàn tất đăng ký, U i sử dụng thông tin bí mật nhận từ S để đăng nhập U i nhập ID i, PW i và F i vào thiết bị thông qua cảm biến Thiết bị sau đó sẽ thực hiện các bước tiếp theo.
- Thiết bị tính N = (ID i N) ID i, hpw = h(PW i || N) F i và A i = R i hpw Nếu ℎ 𝐴 𝑖 (F i) = V i, người dùng tiếp tục quy trình, ngược lại sẽ ngắt phiên làm việc
- Thiết bị chọn ngẫu nhiên N U, và tính e = hpw B i, C 1= N U E i hpw , RCID
- Thiết bị gửi {RCID, C 1, C 2, C 3} cho S qua kênh truyền thông thường Ưu điểm trong pha này là thiết bị chọn ngẫu nhiên N U thách thức S, và thay đổi
Mỗi lần đăng nhập, RCID được sử dụng để đảm bảo tính nặc danh, tuy nhiên, ID i không được liên kết với khóa bí mật của máy chủ, cho phép người dùng có thể thay đổi định danh và mạo danh người khác Để ngăn chặn tình trạng này, luận án đề xuất kết hợp ID i vào hàm băm với giá trị bí mật của S, nhằm tránh mạo danh người dùng (chi tiết được trình bày trong chương 5 và chương 6).
Khi nhận được {RCID, C 1, C 2, C 3} từ U i, S và U i thực hiện các bước sau
- S tính e = C 2 h(x || IDS), N U = C 1 h(x || e || IDS), ID i = RCID h(N U) e và kiểm tra tính hợp lệ của ID i
- S tính h(ID i h(x || e || IDS)) và so sánh C 3 ?= ℎ ℎ(𝐼𝐷 𝑖 ⊕ℎ(𝑥||𝑒|| 𝐼𝐷𝑆))(N U || e) Nếu thỏa điều kiện, S chấp nhận yêu cầu đăng nhập của U i; ngược lại yêu cầu bị từ chối
- Tiếp theo, S tạo lượng ngẫu nhiên N S, tính S 1= h(h(ID i h(x || e || IDS)) || N S ||
- Khi nhận được {D 1, S 1} từ S, U i tính N S = D 1 e và so sánh S 1 ?= h(A i || N S ||
N U || e || ID i) Nếu không thỏa điều kiện, phiên làm việc bị kết thúc Ngược lại, U i tính
S 2 = h((E i hpw) || N S || h(x || IDS)) và gửi {S 2} cho S qua kênh truyền thông thường
- Khi nhận {S 2} từ U i, S so sánh S 2 ?= h(h(x || e || IDS) || N S || h(x || IDS)) Nếu không thỏa điều kiện, S kết thúc phiên; ngược lại, S và U i thiết lập h(h(ID i h(x || e ||
Trong quá trình chứng thực và thiết lập khóa phiên, máy chủ không chỉ xác minh thông tin đăng nhập của người dùng mà còn tạo ra một lượng ngẫu nhiên để thách thức người dùng.
• Pha thay đổi mật khẩu
Khi người dùng thay đổi mật khẩu cũ (PW i) sang mật khẩu mới (PW i *), cần đảm bảo rằng lượng ngẫu nhiên cũ (N) được thay thế bằng lượng ngẫu nhiên mới (N *), và dấu vân tay cũ (F i) được cập nhật thành dấu vân tay mới (F i *) Dưới đây là các bước thực hiện quy trình này.
- U i nhập ID i, PW i, dấu vân tay F i vào thiết bị và yêu cầu đổi mật khẩu
- Thiết bị của U i trích N = (ID i N) ID i, tính hpw = h(PW i || N) F i, kiểm tra
ℎ (𝑅 𝑖 ⊕ℎ𝑝𝑤) (F i) ?= V i Nếu điều kiện không thỏa, thiết bị ngắt phiên làm việc; ngược lại, thiết bị trích h(ID i h(x || e || IDS)) = R i hpw và U i được phép nhập các giá trị mới
- U i chọn mật khẩu mới (PW i *), lượng ngẫu nhiên mới (N * ) và dấu vân tay mới (dùng ngón tay khác) Sau đó, U i nhập {PW i *, N * } và quét vân tay F i * qua cảm biến
- Thiết bị của U i tính hpw * = h(PW i * || N * ) F i *, B i * = B i hpw hpw * , C i * = C i
hpw hpw * , E i * = E i hpw hpw * , R i * = R i hpw hpw * , V i * ℎ ℎ(𝐼𝐷 𝑖 ⊕ℎ(𝑥 || 𝑒 || 𝐼𝐷𝑆))(F i *)
Cuối cùng, thiết bị lưu {B i *, C i *, E i *, R i *, V i *} sẽ thay thế cho {B i, C i, E i, R i, V i} Chỉ người dùng hợp lệ mới có thể đổi mật khẩu, yêu cầu cung cấp ID i, PW i và F i Hơn nữa, người dùng có thể thay đổi mật khẩu mà không cần tương tác với máy chủ Luận án này sẽ kế thừa những ưu điểm này, chi tiết sẽ được trình bày trong chương 5 và chương 6.
Quy trình định danh không được coi là yếu tố bí mật, vì vậy cần đảm bảo rằng người dùng không bị mạo danh khi thông tin ID của họ bị lộ Điều này là rất quan trọng trong việc bảo vệ quyền riêng tư và an ninh thông tin của người dùng.
Khan, U i bị một người dùng hợp lệ (U a) khác mạo danh khi định danh ID i bị lộ Khi U a có được ID i, họ có khả năng trích xuất thông tin từ máy chủ chia sẻ để giả mạo U i U a tiến hành tính toán N A.
= (ID A N) ID A, hpw A = h(PW A || N A) F A, h(x || IDS) = C A hpw A, h(x || e A ||
Trong quá trình xác thực, U_a tạo ngẫu nhiên N_U và tính toán C_1 = N_U ⊕ h(x || e_A || IDS), RCID = ID_i ⊕ h(N_U) ⊕ e_A, C_2 = e_A ⊕ h(x || IDS) và C_3 = h(ID_i ⊕ h(x || e_A || IDS))(N_U || e_A) U_a gửi {RCID, C_1, C_2, C_3} cho S để yêu cầu đăng nhập Khi nhận được yêu cầu, S tính h(ID_i ⊕ h(x || e_A || IDS)) và so sánh với C_3 Nếu biểu thức thỏa mãn, S chấp nhận yêu cầu và tính S_1 = h(h(ID_i ⊕ h(x || e_A || IDS)) || N_S || N_U || e_A || ID_i) và D_1 = N_S ⊕ e S gửi {D_1, S_1} cho U_a U_a sau đó tính N_S = D_1 ⊕ e và S_2 = h(h(x || e_A || IDS) || N_S || h(x || IDS)) Cuối cùng, U_a gửi {S_2} cho S, và S xác nhận S_2 = h(h(x || e_A || IDS) || N_S || h(x || IDS)), từ đó thiết lập khóa bí mật SK.
Quy trình được thiết kế chặt chẽ với nhiều đại lượng ngẫu nhiên, nhưng vẫn có nguy cơ rò rỉ thông tin định danh, dẫn đến việc người dùng U i có thể bị mạo danh mà không cần thiết bị, mật khẩu hay vân tay Để quy trình có thể triển khai thực tế, cần khắc phục hạn chế này.
Kết luận
Chương 2 trình bày các nhóm kỹ thuật thông qua các quy trình minh họa với nhiều phân tích cho thấy rằng các kết quả vẫn chưa thực sự đáp ứng được nhu cầu chứng thực Trong đó có những hình thức tấn công ảnh hưởng đến người dùng và máy chủ dịch vụ như mạo danh, tấn công lặp lại Do tính một chiều của hàm băm nên dù đây là hướng tiếp cận hiệu quả thời gian, tuy nhiên để có được quy trình chứng thực mạnh cần dựa trên các bài toán khó.
Phương pháp chứng thực dùng bài toán khó
ECC và đa thức Chebyshev
Chương này giới thiệu các phương pháp hiện tại nhằm giảm thiểu các hình thức tấn công trong giai đoạn chứng thực, dựa trên các bài toán khó Hướng tiếp cận này không chỉ nâng cao độ an toàn cho quy trình chứng thực mà còn bảo vệ tính bí mật của các giao dịch trước đó và đảm bảo an toàn cho các số ngẫu nhiên được tạo ra.
Chứng thực trong môi trường đa máy chủ đòi hỏi sự nhất quán về khóa giữa các máy chủ dịch vụ và trung tâm đăng ký, điều này có thể trở nên phức tạp nếu không được thiết kế cẩn thận Các quy trình cần phải đảm bảo tính chất chứng thực lẫn nhau và thiết lập khóa phiên Luận án này tập trung vào việc phát triển các quy trình dựa trên lý thuyết ECC và đa thức Chebyshev.
Luận án này trình bày các tính chất cơ bản của đường cong elliptic và xem xét hệ mã ECC, đồng thời đưa ra dạng tổng quát của đường cong elliptic E trên trường.
Trong đó a 1, a 2, a 3, a 4, a 6 K và = -𝑑 2 2 d 8 – 8𝑑 4 3 – 27𝑑 6 2 + 9d 2 d 4 d 6 0 ( 0 đảm bảo đường cong tại mỗi điểm có duy nhất một tiếp tuyến) với d 2 = 𝑎 1 2 + 4a 2, d 4 2a 4 + a 1 a 3, d 6 = 𝑎 3 2 + 4a 6 và d 8 = 𝑎 1 2 a 6 + 4a 2 a 6 – a 1 a 3 a 4 + a 2𝑎 3 2 – 𝑎 4 2 Tập hợp các điểm của đường cong kí hiệu là:
Với là điểm vô cực Hình 3.1 minh họa đường cong E 1: y 2 = x 3 + 1
3 xác định trên trường số thực ℝ Tập hợp điểm trên đường cong E 1 là E 1(ℝ) {}
Hình 3.1: Đường cong elliptic trên trường ℝ
Tùy thuộc vào tính chất của trường K, công thức cho đường cong elliptic có thể thay đổi Cụ thể, khi K = 𝔽p với p là số nguyên tố, công thức trở thành y² = x³ + ax + b, trong đó a và b thuộc 𝔽p Hơn nữa, các quy tắc cộng và nhân điểm trên đường cong cũng khác nhau tùy thuộc vào trường K Để định nghĩa phép cộng và nhân điểm, giả sử P = (x₁, y₁) và Q = (x₂, y₂) là hai điểm thuộc E(K) và P khác Q, các phép toán này sẽ được thực hiện theo các quy tắc cụ thể của trường K.
2𝑦 1 )(x 1 – x 3) – y 1) Ví dụ trường hợp E: y 2 = x 3 + 4x + 20 xác định trên 𝔽29 (a = 4, và b = 20), phép cộng điểm (5, 22) + (20, 3) = (27, 2) và phép nhân điểm 2 (5, 22) = (14, 6) Hình bên dưới mô tả quy luật của hai thao tác nói trên
Hình 3.2: Thao tác cộng và gấp đôi điểm trên đường cong elliptic 1
Số lượng điểm trên đường cong elliptic được xác định theo định lý Hasse, với đường cong E định nghĩa trên trường 𝔽q Số lượng điểm của tập hợp E(𝔽q), ký hiệu là #E(𝔽q), nằm trong khoảng [q + 1 – 2√𝑞, q + 1 + 2√𝑞] Ví dụ, đối với E(𝔽37): y² = x³ + x + 12, ta có #E(𝔽37) = 29, nằm trong khoảng [37 + 1 – 2√37, 37 + 1 + 2√37] Đặc biệt, nếu #E(𝔽q) thuộc tập số nguyên tố ℙ thì
E(𝔽q) là nhóm cyclic và P E(𝔽q) \ {} cũng có thể sinh ra toàn bộ E(𝔽q) Ví dụ với E: y 2 = x 3 + 4x + 20 định nghĩa trên trường 𝔽29, ta có #E(𝔽29) = 37 ℙ Vậy chọn
Hệ mã khóa công ECC được đề xuất dựa trên các tính chất của đường cong elliptic [18] Để xây dựng hệ mã này, cần chọn E: y 2 = x 3 + ax + b (a, b 𝔽p) với
#E(𝔽p), p ℙ và 4a 3 + 27b 2 ≢ 0 (mod p) Dễ thấy (E(𝔽p) {}, +) hình thành nhóm cộng Abelian Ta có các bài toán khó liên quan hệ mã ECC:
3.1.1.1 Bài toán logarit rời rạc (ECDLP)
Xét đường cong E(𝔽q) với q và #E(𝔽q) là số nguyên tố 1, P và Q là các điểm trên đường cong Việc tìm l thuộc khoảng [1, #E(𝔽q) – 1] sao cho Q = l × P là rất khó khăn Ta gọi l là logarit rời rạc của Q với cơ số P, ký hiệu là l = logₚ Q Một cách diễn giải xác suất cho bài toán này là: cho hai điểm (P, Q) thuộc E(𝔽q), kẻ tấn công B có xác suất 𝐴𝑑𝑣 𝐸(𝔽 𝐸𝐶𝐷𝐿𝑃 𝑞)(B) rất nhỏ để xác định l sao cho Q = l × P, với l thuộc khoảng [1, #E(𝔽q) – 1].
3.1.1.2 Bài toán Diffie – Hellman (ECDHP)
Xét E(𝔽q) với q và #E(𝔽q) là các số nguyên tố, ta có các điểm P, A = a × P, B = b × P thuộc đường cong, trong đó (a, b) nằm trong khoảng [1, #E(𝔽q) – 1] Việc tìm C = (a × b × P) thuộc E(𝔽q) là rất khó khăn Một cách diễn giải khác cho bài toán này có thể được xem xét dưới dạng xác suất.
P, q P và s P, trong đó 1 q, s #E(𝔽q) – 1 Kẻ tấn công B có xác suất
𝐴𝑑𝑣 𝐸(𝔽 𝐸𝐶𝐷𝐻𝑃 𝑞 ) (B) rất nhỏ để tìm ra z = q s P
1 ℙ: tập chứa các số nguyên tố Nếu p là số nguyên tố thì p ℙ
2 𝐴𝑑𝑣 𝐴 𝐶 (X): kí hiệu biểu diễn xác suất thành công đối tượng X tấn công đối tượng A theo tiêu chí C nào đó
3.1.1.3 Bài toán quyết định Diffie – Hellman (ECDDHP)
Cho E(𝔽q) với (q, #E(𝔽q)) ℙ và (P, A = a P, B = b P, C = c P) E(𝔽q) với (a, b, c) [1, #E(𝔽q) – 1] Khó xác định c ?= a b (mod #E(𝔽q))
Một cách diễn đạt khác của bài toán dưới dạng xác suất: Với P, Q = q P + s P
E(𝔽q) Kẻ tấn công B có xác suất 𝐴𝑑𝑣 𝐸(𝔽 𝐸𝐶𝐷𝐷𝐻𝑃 𝑞 ) (B) nhỏ tìm ra 2 điểm q P, s P
3.1.2 Đa thức Chebyshev Đa thức Chebyshev [35] là ánh xạ trên trường ℝ: T a : [-1, 1] → [-1, 1] (a ℕ)
Và có thể viết dưới dạng truy hồi như sau:
Tính chất giao hoán của đa thức như sau:
T a (T b (x)) = cos(a arcos(cos(b arcos(x)))) = cos(a b arcos(x))
Năm 2005, Bergamor và các cộng sự đã tiến hành phân tích đa thức trên trường số thực và kết luận rằng tồn tại một giá trị r’ khác với r sao cho 𝑇 𝑟 ′ (𝑥) = T r (x) Kết quả này đã được phát biểu và chứng minh trong nghiên cứu của họ.
Bổ đề: Cho r ℕ và x [-1, 1], ta có T r (x) = cos(r arcos(x)) Đặt ℘ { ±𝑎𝑟𝑐𝑜𝑠(𝑇 𝑟 (𝑥)+ 𝑘2𝜋)
Chứng minh: Cần chứng minh 𝑇 𝑟 ′ (𝑥) = T r (x) r ’ ℕ ℘
′ 𝜋 𝑎𝑟𝑐𝑜𝑠(𝑥) Ta áp dụng công thức:
′ 𝜋 𝑎𝑟𝑐𝑜𝑠(𝑥) 𝑇 𝑟 ′ (𝑥) = T r (x) Áp dụng tương tự cho r ’ = −𝑎𝑟𝑐𝑜𝑠(𝑇 𝑟 (𝑥))+ 2𝑘
- Ta chứng minh tiếp 𝑇 𝑟 ′ (𝑥) = T r (x) r ’ ℕ ℘ Ta có:
𝑇 𝑟 ′ (𝑥) = cos(r ’ arcos(x)) = T r (x) arcos(cos(r ’ arcos(x))) = arcos(T r (x))
3.1.2.1 Đa thức Chebyshev trên trường ℤ p , p nguyên tố
Năm 2008, Zhang đã mở rộng đa thức Chebyshev đến vô cực và chứng minh rằng các tính chất của nó trên trường số thực cũng áp dụng cho trường ℤp, với p là số nguyên tố Kết quả này đã tạo điều kiện cho việc xây dựng các hệ mã khóa công và phát triển các bài toán khó liên quan.
Ví dụ: xét đa thức T n (x) mod p, với x [0, p – 1], p = 11 và n [0, 23] x T n (x) mod 11 Chu kì
Bảng 3.1: Ví dụ về chu kỳ của đa thức Chebyshev Đa thức Chebyshev cũng có thể biểu diễn bằng công thức quy nạp như trong trường ℝ
Từ công thức (3) có thể chứng minh được hai kết quả sau (xem [36, 37]):
- Chu kì k của đa thức là ước số của p – 1 hoặc p + 1 (k | p 1)
3.1.2.2 Hệ mã khóa công trên đa thức Chebyshev
Dựa trên tính chất của đa thức Chebyshev, một hệ thống mã hóa khóa công đã được đề xuất Để xây dựng hệ thống này, cần lựa chọn p thuộc tập số nguyên tố ℙ và x nằm trong khoảng [0, p – 1], sau đó áp dụng công thức tương ứng.
T n (x) mod p, n ℕ Bên cạnh đó cũng có các bài toán khó liên quan tới hệ mã
3.1.2.2.1 Bài toán logarit rời rạc trên ánh xạ hỗn loạn (CMDLP)
Cho p là một số nguyên tố và x, y thuộc đoạn [0, p – 1], việc tìm r trong tập hợp các số tự nhiên sao cho T_r(x) = y mod p là rất khó khăn Dưới góc độ xác suất, kẻ tấn công B có xác suất 𝐴𝑑𝑣 𝐶𝑀 𝐶𝑀𝐷𝐿𝑃 (B) rất nhỏ để tìm ra r thỏa mãn điều kiện T_r(x) = y mod p, trong đó CM là viết tắt của chaotic maps.
3.1.2.2.2 Bài toán Diffie – Hellman trên ánh xạ hỗn loạn (CMDHP)
Cho p ℙ, x [0, p - 1], T a (x) mod p và T b (x) mod p, rất khó tìm T a b (x) mod p, với a, b ℕ
Diễn giải dưới dạng xác suất: Cho p ℙ, x [0, p - 1], T a (x) mod p và T b (x) mod p Kẻ tấn công B có xác suất 𝐴𝑑𝑣 𝐶𝑀 𝐶𝑀𝐷𝐻𝑃 (B) rất nhỏ để tìm ra T a b (x) mod p.
Sử dụng hệ mã ECC với hàm băm mật mã
Việc áp dụng ECC cùng với hàm băm mật mã không chỉ nâng cao mức độ an toàn mà còn tối ưu hóa chi phí cho các phép toán Phương pháp này đã được các tác giả áp dụng trong các tình huống có sự tham gia của hai hoặc ba bên.
3.2.1 Chứng thực có ba bên tham gia
Trong quy trình có ba bên tham gia, bên thứ ba đóng vai trò quan trọng trong việc chứng thực người dùng Công trình của Kalra và Sood [31] mô tả quy trình này qua năm pha: đăng ký, tính sẵn, đăng nhập, chứng thực và thay đổi mật khẩu Trước khi đăng nhập, người dùng sẽ tính toán một điểm và lưu trữ nó trong thẻ để phục vụ cho các giao dịch sau này với máy chủ Bảng 3.2 cung cấp các ký hiệu được sử dụng trong quy trình này.
Người dùng thứ i Máy chủ dịch vụ thứ k Trung tâm kiểm soát Định danh của U i Định danh của S k
Khóa riêng của máy chủ
Số bí mật của máy chủ dành cho U i
Số ngẫu nhiên của thẻ
Số ngẫu nhiên của máy chủ
Số ngẫu nhiên của trung tâm kiểm soát Đường cong elliptic trên ℤp
Số nguyên tố lớn Trường trên p Hàm băm một chiều Phép XOR
Bảng 3.2: Ký hiệu dùng trong công trình Kalra [31]
Giai đoạn đăng ký bao gồm hai loại: người dùng đăng ký với trung tâm để nhận thông tin chứng thực, và máy chủ dịch vụ đăng ký với trung tâm để lấy khóa chủ.
Để đăng ký người dùng, U i gửi ID i qua kênh an toàn tới CS Sau khi nhận ID i, CS kiểm tra và tính F i = H(X | ID i | Y i) G, với G là phần tử sinh tập các điểm trên elliptic Đồng thời, CS lưu ID i và Y i X tương ứng với U i Cuối cùng, CS gửi thông tin {F i,
H(.)} về cho U i Khi nhận được thông tin từ CS, U i kích hoạt thẻ bằng cách nhập P i, sau đó, thẻ sẽ tính E i = H(ID i | P i) P i N i Cuối cùng, thẻ lưu trữ các thông tin {F i,
Việc lưu trữ thông tin Y i của người dùng tại trung tâm đăng ký CS có thể gây ra rủi ro nghiêm trọng nếu hệ thống này bị tấn công, vì các thông tin giao dịch trước đó có thể bị lộ.
• Pha đăng ký máy chủ dịch vụ
Tất cả các S k phải đăng ký với CS để được chứng nhận SK k và SID k S k gửi {SK k,
SID k được truyền qua kênh an toàn, sau đó CS tính toán M k = SK k H(X | SID k) G và lưu trữ SK k H(X | SID k) cùng với SID k tương ứng với S k CS gửi {M k} đến S k qua kênh an toàn Tương tự như trong quá trình đăng ký người dùng, CS cũng lưu trữ các khóa máy chủ dịch vụ, điều này có thể làm tăng nguy cơ cho toàn bộ hệ thống.
Trong pha này, thẻ của người dùng sẽ chọn N 1 và tính P 1 = N 1 G Sau đó lưu lại
P 1 như một tham số dùng cho pha chứng thực
U cung cấp ID i *, P i *, SID k và thẻ tại trạm Thẻ tính E i * = H(ID i * | P i *) P i * N và so sánh với E i (đã được lưu trong thẻ) Sau khi kiểm tra, thẻ tính P 11 = N 1 F i = N 1 (H(X | ID i | Y i) G) và gửi {P 1, P 11, ID i, SID k} cho S k qua kênh truyền thông thường.
Sau khi nhận {P 1, P 11, ID i, SID k} từ U i, S k chọn N 2 và tính P 2 = N 2 G và P 22 = N 2
M k và gửi {P 1, P 11, P 2, P 22, ID i, SID k} cho CS
Sau khi nhận thông tin, CS sẽ trích Y i từ Y i X tương ứng với ID i trong cơ sở dữ liệu người dùng CS tính toán P 11 ’ = P 1 H(X | ID i | Y i) = (N 1 H(X | ID i | Y i) G) và so sánh P 11 với P 11 ’ để kiểm tra tính hợp lệ của thẻ người dùng Nếu điều kiện này được thỏa mãn, điều này chứng tỏ người dùng là hợp lệ; ngược lại, phiên chứng thực sẽ bị ngắt.
Sau khi tính toán, CS xác định P 22 ’ = P 2 SK k H(X | SID k) và so sánh với P 22 để kiểm tra tính hợp lệ của S k Nếu điều kiện này được thỏa mãn, S k được coi là hợp lệ; nếu không, phiên chứng thực sẽ bị ngắt.
Kế tiếp, CS sẽ trích SK k từ SK k H(X | SID k) tương ứng với SID k lưu trong cơ sở dữ liệu Sau đó, CS chọn N 3 và tính P 3 = N 3 G và P 33 = N 3 P 3 và gửi {P 3, D i = SK k
P 2} về cho S k qua kênh truyền thông thường
Khi nhận gói tin từ CS, S tính D i ’ = SK k N 2 P 3 và so sánh với D i Nếu điều kiện này thỏa mãn, CS được coi là hợp lệ; ngược lại, quá trình chứng thực sẽ bị ngắt Sau khi kiểm tra tính hợp lệ, S tính T i = N 2 P 1 và gửi {P 2, T i} cho U i qua kênh truyền thông thông thường Khi U i nhận được gói tin từ S, U i tính T i ’ = N 1 P 2 và so sánh với T i Nếu điều kiện này thỏa mãn, S được xác nhận là hợp lệ; nếu không, quá trình chứng thực sẽ bị ngắt Cuối cùng, nếu tất cả gói tin đều chính xác, U i, S và CS sẽ thiết lập khóa phiên SK = H(H(ID i | ).
Y i | N i) | (N 1 N 2 N 3)) được dùng cho các giao dịch sau này
• Pha thay đổi mật khẩu
Trong pha này, U i thay đổi mật khẩu mà không cần tương tác với CS U i cung cấp
ID i, P i và thẻ tại trạm tiếp nhận được sử dụng để xác thực Thẻ tính E i * = H(ID i * | P i *) P i * N * và so sánh với E i (E i được lưu trong thẻ) Nếu hai giá trị này khớp, U i được xác nhận là chủ thẻ; nếu không, phiên giao dịch sẽ bị ngắt Sau đó, U i sẽ được yêu cầu cung cấp mật khẩu mới.
P i new , sau đó thẻ tính E i new = H(ID i | P i new) P i new N new và cập nhật E i = E i new
Trong giai đoạn CS gửi {P 3, D i} cho S k, D i được tính bằng công thức D i = SK k P 2 = SK k N 2 G Khi S k nhận gói tin, nó sẽ tính D i ’ = SK k N 2 P 3 = SK k N 2 N 3 G và so sánh D i ’ với D i để kiểm tra tính hợp lệ của CS Tuy nhiên, điều kiện này không thỏa mãn, cho thấy quy trình của Kalra không đạt được tính chất chứng thực lẫn nhau.
Trong quá trình quan sát khóa phiên SK = H(H(ID i | Y i | N i) | (N 1 N 2 N 3)), U i, S k và CS không thể tính toán đại lượng này do không thể xác định N 1, N 2 và N 3 của nhau Bên cạnh đó, quy trình này còn tồn tại ba hạn chế cần được làm rõ.
• Thứ nhất, do việc truyền định danh thô nên không thể áp dụng vào các dịch vụ đòi hỏi tính nặc danh người dùng, ví dụ như trong TMIS
• Thứ hai là trong quá trình sử dụng dịch vụ thì cần có thêm CS tham gia, và điều này sẽ làm chậm quá trình chứng thực
Tính chất an toàn của khóa phiên 1 là một yếu tố quan trọng, mặc dù ECC được sử dụng làm nền tảng Tuy nhiên, trong trường hợp xấu nhất, nếu X của CS và toàn bộ khóa chứng thực của U i và S k bị lộ, kẻ tấn công có thể dễ dàng truy vết tất cả các giao dịch trước đó mà U i đã thực hiện.
Chúng ta cần một quy trình đảm bảo tính nặc danh cho người dùng, bảo vệ các giao dịch trong quá khứ và đảm bảo hiệu quả thời gian trong quá trình xác thực.
Sử dụng hệ mã RSA với hàm băm mật mã
RSA kết hợp với hàm băm là một phương pháp đáng chú ý trong bảo mật thông tin Quy trình của Yeh gồm bốn pha: khởi tạo, đăng ký, chứng thực và thay đổi mật khẩu, phù hợp với môi trường đa máy chủ và hai bên tham gia, giúp tối ưu hóa hiệu quả thời gian Bảng 3.4 liệt kê các ký hiệu được sử dụng trong quy trình này.
Trung tâm đăng ký Máy chủ thứ j, người dùng thứ i Định danh của U i
Giá trị bí mật của RC Khóa phiên
Hàm băm mật mã Phép XOR, nối chuỗi
Bảng 3.4: Ký hiệu dùng trong công trình Yeh [39]
RC chọn hai số nguyên tố p và q kích thước 1024-bit: g ℤN * với N = p q, và
ℤN * = {g | g [1, N – 1], gcd(g, N) = 1} RC chọn k số ngẫu nhiên (r 1, r 2, , r k) tương ứng với k máy chủ với lưu ý gcd(r i , r j) = gcd(r i , (N)) = 1, 1 i j k
Pha đăng kí gồm hai giai đoạn: đăng kí người dùng và đăng kí máy chủ
• Pha đăng kí máy chủ
Trong giai đoạn này, máy chủ S j cung cấp định danh SID j cho RC qua kênh truyền an toàn Khi nhận yêu cầu từ S j, RC gán giá trị r j cho S j và tính toán h(r j || y RC), với y RC là giá trị bí mật của RC Tiếp theo, RC gửi {r j, t, h(r j || y RC), g, N, h(.)} cho S j qua kênh an toàn, trong đó t được xác định là 1.
• Pha đăng kí người dùng
Trong giai đoạn này, người dùng U i cung cấp thông tin {UID i, PW i} cho RC, sau đó RC chọn ngẫu nhiên r i và tính toán P = h(UID i || PW i || r i) Tiếp theo, RC gửi một thẻ chứa các tham số {(s 1_i, s 2_i, , s k_i), r i, g, N, P, h(.)} cho U i Lưu ý rằng s j_i được tính theo công thức 𝑔 ℎ(𝑆𝐼𝐷 𝑗 || 𝑈𝐼𝐷 𝑖 ||ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ))×∏ 𝑘 𝑖=1,𝑖≠𝑗 𝑟 𝑗 mod 𝑁, trong đó y RC là giá trị bí mật của RC Thiết kế quy trình này nhằm cung cấp cho người dùng k khóa tương ứng với k máy chủ dịch vụ, giúp phân tán rủi ro thay vì chỉ dựa vào một máy chủ chứng thực tập trung.
Khi người dùng U i đăng nhập vào S j, họ đưa thẻ vào thiết bị tiếp nhận và cung cấp định danh P Nếu định danh này hợp lệ, U i được xác nhận là người dùng hợp lệ Tiếp theo, U i chọn ngẫu nhiên một giá trị a, tính toán M 1 = (s j_i g a ) mod N và gửi {UID i, M 1} đến S j Khi S j nhận được {UID i, M 1}, nó sẽ kiểm tra tính hợp lệ của UID i Nếu UID i hợp lệ, S j sẽ chọn ngẫu nhiên một giá trị b và tiến hành tính toán B.
SKey (i, j) được tính bằng h(K || UID i || SID j) và M2 bằng h(K || UID i || SID j || B || SKey (i, j)) Sau đó, S j gửi {B, M2} cho U i Khi nhận được {B, M2}, U i tính toán K = B^a mod N và SKey (i, j) = h(K || UID i || SID j) U i cũng tính M'2 = h(K || UID i || SID j || B || SKey (i, j)) và kiểm tra xem M'2 có bằng M2 hay không Nếu đúng, S j được chứng thực hợp lệ Cuối cùng, U i tính M3 = h(K || UID i || SID j || A || B || SKey (i, j)) và gửi M3 đi.
S j Khi nhận M 3, S j tính M ’ 3 = h(K || UID i || SID j || A || B || SKey (i, j)) và kiểm tra M ’ 3 ? M 3 Nếu thỏa thì việc chứng thực thành công Cả U i và S j thỏa hiệp thành công khóa phiên SKey (i, j)
• Pha thay đổi mật khẩu
Khi U i thay đổi mật khẩu, U i đưa thẻ vào thiết bị tiếp nhận và cung cấp UID ’ i,
Thẻ tính P’ được xác định bằng công thức P’ = h(UID’i || PW’i || r’i) và được kiểm tra với P Nếu khớp, U i được coi là người dùng hợp lệ Sau đó, U i có thể nhập mật khẩu mới PW inew, thẻ sẽ chọn ngẫu nhiên giá trị r’i, tính toán P new = h(UID i || PW inew || r’i) và lưu trữ (P new, r’i) trở lại trong thẻ.
Quá trình phân tích cho thấy quy trình không đạt được tính chứng thực lẫn nhau và thỏa hiệp khóa phiên Cần làm rõ thông tin về s j_i, trong đó Yeh ghi nhận s j_i = 𝑔 ℎ(𝑆𝐼𝐷 𝑗 ||𝑈𝐼𝐷 𝑖 ||ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ))×∏ 𝑘 𝑖=1,𝑖≠𝑗 𝑟 𝑗 𝑚𝑜𝑑 𝑁, nhưng điều này không chính xác Luận án đề xuất sử dụng biến x thay vì i, cụ thể là s j_i = 𝑔 ℎ(𝑆𝐼𝐷 𝑗 ||𝑈𝐼𝐷 𝑖 ||ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ))×∏ 𝑘 𝑥=1,𝑥≠𝑗 𝑟 𝑥 𝑚𝑜𝑑 𝑁 Tiếp theo, cần phân tích sự không chính xác trong quá trình chứng thực và thỏa hiệp khóa, xem xét thông tin khóa phiên SKey (i, j) = h(K || UID i || SID j) và thông điệp kiểm tra chứng thực như M 2 = h(K || UID i || SID j || B || SKey (i, j)).
M 3 = h(K || UID i || SID j || A || B || SKey (i, j)) Dễ thấy tất cả đều liên quan tới thông tin
K Đặt K S do máy chủ tính, và K U do người dùng tính Các giá trị này cần bằng nhau để quá trình chứng thực chính xác Tuy nhiên điều này không thỏa Bắt đầu với
Dễ thấy r j ∏ 𝑘 𝑥=1,𝑥≠𝑗 𝑟 𝑥 = ∏ 𝑘 𝑥=1 𝑟 𝑥 , tới đây có thể đổi, thay vì dùng x ta sẽ quay lại dùng i để tiện việc theo dõi Và ta có 𝑀 1 𝑟 𝑗 = 𝑔 𝑎×𝑟 𝑗 +ℎ(𝑆𝐼𝐷 𝑗 ||𝑈𝐼𝐷 𝑖 ||ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ))×∏ 𝑘 𝑖=1 𝑟 𝑖 𝑚𝑜𝑑 𝑁 (2)
Lấy (2) và (3) thế vào (1) ta có K S (𝑔 𝑎×𝑟 𝑗 +ℎ(𝑆𝐼𝐷 𝑗 ||𝑈𝐼𝐷 𝑖 ||ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ))×∏ 𝑘 𝑖=1 𝑟 𝑖 𝑚𝑜𝑑 𝑁 × 1
Tiếp theo ta xét K U = B a = (𝑔 𝑏×ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ) ) 𝑎 𝑚𝑜𝑑 𝑁 = 𝑔 𝑎×𝑏×ℎ(𝑟 𝑗 ||𝑦 𝑅𝐶 ) 𝑚𝑜𝑑 𝑁 Dễ thấy
K U K S và từ đó chứng minh được quy trình không đảm bảo tính chứng thực lẫn nhau cũng như không thỏa hiệp được khóa phiên.
Sử dụng hệ mã ECC với quy trình mã hóa đối xứng
Việc áp dụng mã hóa đối xứng với ECC trong quy trình chứng thực, như trong nghiên cứu của Amin và Biswas, kết hợp ECC với bio-hashing để giải quyết vấn đề nhạy cảm đầu vào/đầu ra của hàm băm truyền thống Năm 2004, Jin và cộng sự đã cải tiến phương pháp hàm băm này Quy trình chứng thực của Amin bao gồm bốn giai đoạn: đăng ký, đăng nhập, chứng thực và thay đổi mật khẩu Bảng 3.5 liệt kê các ký hiệu được sử dụng trong nghiên cứu.
Người dùng thứ i, trung tâm y tế Mật khẩu/định danh/đặc trưng sinh trắc của U i
Hai số nguyên tố, trường hữu hạn
Elliptic trên 𝔽 𝑝 : y 2 = x 3 + ax + b, với a, b𝔽 𝑝 và = 4a 3 + 27b 2 0 Nhóm các điểm trên E(𝔽 𝑝 ) Điểm cơ sở của 𝔾 có bậc nguyên tố q Thao tác cộng nhiều lần P
Nhóm nhân Hàm băm: (0, 1) * →ℤ 𝑝 ∗ , (𝔾 𝑝 , 𝔾 𝑝 ) →ℤ 𝑝 ∗ , bio-hashing Thao tác XOR, nối chuỗi, mã hóa/giải mã
Bảng 3.5: Ký hiệu dùng trong công trình Amin [40]
Trong giai đoạn này, người dùng U i chọn ID i, mật khẩu PW i và đặc trưng sinh trắc T i Sau đó, U i tính toán các đại lượng A i = h(ID i || PW i) và F i = H(T i), rồi gửi {ID i, A i, F i} đến máy chủ S qua kênh truyền an toàn Khi máy chủ S nhận được {ID i, A i, F i} từ U i, nó sẽ tính toán lại A i = h(ID i || PW i) và W = h(ID S).
Trong quá trình truyền thông tin, ID i được sử dụng để tạo ra B i thông qua công thức B i = h(ID i || A i) W Đồng thời, CID i được mã hóa bằng ENC x(ID i || R ran) và gửi kèm theo một thẻ chứa các thông tin {F i, A i, B i, CID i, h(.), H(.)} đến U i qua kênh truyền an toàn Trong đó, ID S là định danh của S và R ran là số ngẫu nhiên mà S đã chọn.
Trong tình huống này, cần lưu ý rằng người dùng (U) có thể chọn ID và mật khẩu (PW) dễ bị đoán, điều này tạo ra nguy cơ cao từ các cuộc tấn công đoán mật khẩu hoặc tìm kiếm định danh.
Sau khi U i đăng kí thành công, U i thực hiện các bước sau để đăng nhập S:
Người dùng (U i) cung cấp thẻ cùng với thông tin sinh trắc (T i), sau đó hệ thống tính toán giá trị F i * = H(T i) và so sánh với F i (giá trị lưu trong thẻ) Nếu giá trị so sánh thỏa mãn, người dùng sẽ được yêu cầu cung cấp ID i và mật khẩu (PW i); nếu không, quy trình sẽ bị ngắt.
- Thẻ tính A i * = h(ID i || PW i) và so sánh A i * ?= A i (A i lưu trong thẻ) Nếu điều kiện thỏa thì quy trình được tiếp tục, ngược lại thẻ ngắt quy trình
- U i chọn ngẫu nhiên r i, tính C 1 = r i P, W = B i h(ID i || A i *), C 2 = r i W, C 4 h(ID i || r i || W) và truyền {C 2, C 4, CID i} cho S qua kênh truyền thông thường
Với đặc trưng sinh trắc và hàm băm bio – hashing đã ngăn ngừa việc sử dụng mật khẩu đánh cắp để mạo danh người dùng
Khi S nhận được {C 2, C 4, CID i} từ U i, S và U i thực hiện các bước sau:
- Khi nhận được {C 2, C 4, CID i} từ U i, S sẽ giải mã CID i bằng cách dùng khóa x và S có được (ID i * || R ran) = DEC x (CID i) Sau đó S tính W = h(ID S || x || ID i *), r i * = C 2
W, C 1 * = r i * P, C 4 * = h(ID i || r i * || W) và so sánh C 4 * ?= C 4 (C 4 lưu trong thẻ) Nếu điều kiện thỏa thì S tin U i là người dùng thực sự
- S chọn ngẫu nhiên r j và tính D 1 = r j P, SK = r j C 1 * = r j r i * P, G 1 = D 1 +
C 1 *, L i = h(ID i * || h 1(D 1) || W), CID i ’ = ENC x (ID i * || R ran ’) và gửi {L i, G 1, CID i ’} cho U i thông qua kênh truyền thông thường
- Khi nhận được {L i, G 1, CID i ’} từ S, U i tính D 1 * = G 1 – C 1 *, L i * = h(ID i || h 1(D 1 *)
|| W), SK = r i D 1 * = r i r j P và so sánh L i * ?= L i Nếu điều kiện thỏa thì U i tin rằng
S là máy chủ thực sự, trong khi SK đóng vai trò là khóa phiên giữa U i và S Sau khi quá trình chứng thực hoàn tất, U i sẽ cập nhật giá trị CID i cũ bằng giá trị CID i ’ mới Cuối cùng, U i thực hiện tính toán cần thiết.
Z i = h(ID i || SK) và gửi cho S qua kênh truyền thông thường
- Sau khi nhận được {Z i} từ U i, S tính Z i * = h(ID i * || SK) và so sánh Z i * ?= Z i Nếu điều kiện thỏa thì quy trình chứng thực kết thúc thành công
Việc người dùng liên tục thay đổi đại lượng CID i bằng cách mã hóa định danh với lượng ngẫu nhiên mới sẽ nâng cao tính nặc danh Mỗi giao dịch sẽ có một đại lượng khác nhau, do đó không thể xác định ai đang sử dụng dịch vụ và cũng không thể biết hai giao dịch có cùng nguồn gốc từ một người hay không.
• Pha thay đổi mật khẩu
Trước khi thực hiện pha này, người dùng cần đăng nhập để xác minh tính hợp lệ Sau khi đăng nhập thành công, người dùng sẽ được yêu cầu cung cấp mật khẩu mới.
Khi cập nhật thẻ, A i new được tính bằng h(ID i || PW i new) và B i new bằng h(ID i || A i new) ⊕ W, trong đó W là giá trị cũ lưu trong thẻ Sau đó, thẻ sẽ thay thế A i và B i bằng A i new và B i new.
Khi khóa chủ bị rò rỉ, tất cả thông tin trao đổi giữa người dùng và trung tâm dịch vụ sẽ bị lộ Điều này cho thấy sự quan trọng trong việc đánh giá sức mạnh của quy trình bảo mật Trong tình huống cụ thể, nếu khóa x bị lộ và kẻ tấn công lưu trữ các gói tin như {C 2, CID i, C 4} và {L i, G 1, CID i ’}, họ có thể trích xuất ID i bằng cách sử dụng x để giải mã CID i Tiếp theo, kẻ tấn công tính toán W = h(ID S || x || ID i) và r i = C 2 W, từ đó có thể tiếp tục thực hiện các hành động xâm phạm khác.
C 1 = r i P và D 1 = G 1 – C 1 Cuối cùng, từ r i và D i có được SK = r i D 1 Vậy quy trình Amin không thỏa tính an toàn tiến đối với khóa phiên.
Sử dụng đa thức Chebyshev
So với ECC và RSA, phương pháp sử dụng đa thức Chebyshev là một giải pháp mới trong một số quy trình chứng thực Mặc dù chi phí thực hiện hiện tại còn cao hơn so với các phương pháp truyền thống, nhưng các đa thức này vẫn đang được nghiên cứu và hoàn thiện Một nghiên cứu tiêu biểu của Zhu [42] bao gồm bốn pha: đăng ký, đăng nhập, chứng thực và thay đổi mật khẩu Dưới đây là một số ký hiệu được sử dụng.
Người dùng, máy chủ, thiết bị và kẻ tấn công Định danh của U a và máy chủ B
Mật khẩu/định danh của U a
Khóa công/riêng của máy chủ B Nhãn và ngưỡng thời gian Hàm băm mật mã
Kí hiệu khóa phiên Các lượng ngẫu nhiên Thao tác XOR, nối chuỗi, mã hóa/giải mã
Bảng 3.6: Ký hiệu dùng trong công trình Zhu [42]
Người dùng U chọn mật khẩu PW a, thiết bị ngẫu nhiên chọn t, sau đó tính toán W a = h(PW a || t) và gửi (ID a, W a) đến máy chủ qua kênh truyền an toàn Sau khi nhận (ID a, W a), máy chủ sẽ xử lý thông tin này.
W a) từ U, S tính H a = h(s || ID a), n a = h(W a || ID a) H a, và gửi n a, x, T s (x) cho U qua kênh truyền an toàn Sau khi nhận gói tin từ S, U tính N a = h(ID a || PW a) n a h(W a || ID a) = h(ID a || PW a) H a Cuối cùng, U lưu {N a, x, T s (x)} vào thiết bị.
• Pha đăng nhập và chứng thực
Người dùng U nhập (ID a, PW a) và sau đó thiết bị chọn hai số ngẫu nhiên k, R để tính H a = N a h(ID a || PW a) = h(s || ID a), T k(x), K AS = T k T s (x), H A = h(H a || T k (x) || ID a
|| ID b || R), C = E KAS(H A || ID a || ID b || R) Sau đó U gửi {C, T k (x)} cho S
Sau khi nhận {C, T k (x)} từ U, S tính K SA = T s T k (x) dựa trên T k (x) và khóa bí mật s Sau đó S giải mã C để lấy H A || ID a || ID b || R S tính H a = h(s || ID a) và H A ’ = h(H a ||
T k (x) || ID a || ID b || R) Cuối cùng S kiểm tra biểu thức H A ’ ?= H A Nếu điều kiện thỏa thì S chọn ngẫu nhiên r và tính V 1 = h(h(R || r)), V 2 = H a h(R || r), SK = h(ID a || ID b ||
R || h(R || r)) và gửi {V 1, V 2} cho U Ngược lại thì S ngắt phiên
Khi nhận {V 1, V 2} từ S, thiết bị kiểm tra V 1 ?= h(V 2 H a) Nếu điều kiện không thỏa, thiết bị ngắt phiên; ngược lại, thiết bị thiết lập SK = h(ID a || ID b || R || h(R || r))
• Pha thay đổi mật khẩu
Người dùng U cung cấp thẻ và mật khẩu cũ PW a, mật khẩu mới PW a’ và ID Thiết bị sẽ chọn ngẫu nhiên k’ và tính toán H a = N a h(ID a || PW a) = h(s || ID a) Sau đó, N a’ được tính là N a h(ID a || PW a) h(ID a || PW a’) Tiếp theo, T k’ (x) và K AS’ được tính bằng T k’ T s (x) H A’ được tính bằng h(H a || T k’ (x) || ID a || ID b || h(N a’)), và C’ = EK’AS (H A’ || ID a || ID b || h(N a’)) Cuối cùng, thiết bị gửi C’ và T k’ (x) cho S.
S tính K SA ’ = T s T k’ (x) để giải mã D K’SA(C) = H A’ || ID a || ID b || h(N a ’) S tính tiếp H a
= h(s || ID a) và H ’ A’ = h(H a || T k’ (x) || ID a || ID b || h(N a ’)) S kiểm H ’ A’ ?= H A’ Nếu điều kiện không thỏa, S từ chối thay đổi Ngược lại, việc cập nhật thành công và S tính V 3
= h(K ’ SA || response), với response {update, refuse} Cuối cùng S gửi {V 3} cho U Sau khi thiết bị nhận {V 3, response}, thiết bị kiểm tra V 3 ?= h(K ’ AS || response)
Nếu điều kiện thỏa thiết bị cập nhật N a bằng N ’ a hoặc từ chối nếu response = refuse
Quy trình của Hongfeng Zhu không đảm bảo tính an toàn của khóa phiên, vì nếu khóa chủ s của S bị lộ, khóa phiên của người dùng có thể bị tính toán từ các gói tin trước đó Giả sử kẻ tấn công U a đã lấy được gói tin {C, T k (x)} và {V 1, V 2} của người dùng U và S Kẻ tấn công này sẽ tính K SA = T s T k (x) và giải mã D KSA(C) Tiếp theo, A tính toán H a = h(s || ID a) và trích xuất h(R || r) = V 2 ⊕ H a Cuối cùng, U a thiết lập SK = h(ID a || ID b || R || h(R || r)) Như vậy, quy trình này không đáp ứng yêu cầu về an toàn.
Kết luận
Chương 3 trình bày nhóm kỹ thuật sử dụng các bài toán khó thông qua minh họa các công trình với nhiều phân tích cho thấy rằng các kết quả cũng chưa thực sự đáp ứng được nhu cầu chứng thực Các quy trình chứng thực còn chưa thỏa mãn tính an toàn tiến đối với khóa phiên, hoặc an toàn với hình thức tấn công hai nhân tố chính… Những tiêu chí an toàn cần phải có để nhằm phòng ngừa những tình huống xấu xảy ra với người dùng hoặc máy chủ.