Xác thực và khóa thỏa thuận (key agreement) là một kỹ thuật bảo mật được sử dụng để đạt các yêu cầu về xác thực. Kỹ thuật này dựa trên cơ sở giao thức xác thực thách thức/đáp ứng hình thành tương thích với giao thức xác thực thuê bao và xác lập khóa ở GSM, mục đích để chuyển đổi dễ dàng từ GSM lên UMTS.
Giao thức thách thức/đáp ứng là một biện pháp bảo mật dành cho một thực thể xác nhận danh tính của một thực thể khác mà không để lộ mật khẩu bí mật giữa 2 thực thể đó. Có nghĩa là mỗi thực hể phải chứng minh cho bên kia biết nó biết mật khẩu mà không cần phải truyền mật khẩu đó.
Xác thực hai chiều giữa thuê bao và mạng sử dụng khóa mật K có kết hợp sử dụng thuật toán và đảm bảo sự phù hợp giữa GSM/GPRS và UMTS. Thêm vào đó, USIM và lưu trữ chuỗi SQNMS và HE lưu chuỗi SQNHE tương ứng [3, 4].
Hình 2.5 Thủ tục xác thực và khóa thỏa thuận
VLR/SGSN yêu cầu HE/AuC gửi các vector xác thực (Authentication Vectors). Mỗi vector xác thực chứa XRES, CK, IK, RAND và AUTN.
HE/AuC khởi tạo một chuỗi SQN và dãy ngẫu nhiên RAND. Theo đó, nó tính toán theo các hàm:
- Mã xác thực bản tin (Message Authentication Code) MAC = f1 (SQN || RAND || AMF).
Với f1 là hàm xác thực thông báo, và trường AMF sử dụng để điều chỉnh hiệu suất hay để chọn một khóa xác thực mới từ USIM.
- Dãy đáp ứng mong muốn XRES = f2(RAND), với f2 hàm xác thực thông báo. - Khóa mã hóa (Cipher Key) CK=f3 (RAND), Khóa toàn vẹn (Integrity Key) IK = f4 (RAND), Khóa nặc danh (Anonymity Key) AK = f5 (RAND).
Với f3, f4 và f5 là các hàm tạo khóa.
- Cuối cùng, HE/AuC kết hợp token xác thực AUTN = SQN⨁AK || AMF || MAC. VLR/SGSN bắt đầu quá trình xác thực khóa bằng cách chọn một vector xác thực mới từ mảng đã chọn, và gửi RAND và AUTN tới thuê bao. USIM sẽ tính toán AK = f5 (RAND), và trích chuỗi SQN = (SQN ⨁ AK) ⨁ AK.
Sau đó, nó tạo XMAC = f1 (SQN || RAND || AMF), và đảm bảo rằng AUTN nhận được và chuỗi SQN vừa trích là dãy đầy đủ.
Nếu điều kiện trên được thỏa mãn, thì USIM tính RES = f2 (RAND), và gửi lại đáp ứng xác thực thuê bao. USIM tính CK = f3 (RAND) và IK = f4 (RAND). [3, 4]
VLR/SGSN kiểm tra RES nhận được với XRES của vector xác thực. Nếu trùng nhau, thì quá trình xác thực thành công. Cuối cùng, USIM và VLR/SGSN gửi CK và IK đến máy điện thoại và RNC để máy điện thoại và RNC thực hiện việc mã hóa thông tin.