Tổng quan về nhận thực và thoả thuận khoá

Một phần của tài liệu Bảo mật dữ liệu đầu vào cho mạng 3G (Trang 61)

Nhận thực và thoả thuận khoá (AKA) là một trong những tính năng quan trọng của hệ thống UMTS. Tất cả các dịch vụ khác đều phụ thuộc vào AKA vì không thể sử dụng được bất kỳ dịch vụ nào ở lớp cao hơn mà không phải nhận thực.

Để thực hiện các quá trình này trong UMTS AuC phải tạo ra các véc-tơ nhận thực (AV), dựa trên 4 thông số: RAND - số ngẫu nhiên, K - khoá dùng chung được quy định trước (Pre-shared Secret Key), SQN - số trình tự (Sequence Number) và AMF - trường quản lý khoá (Authentication Management Field). AV nhận được sẽ bao gồm các thông số MAC-A (mã nhận thực để USIM nhận thực mạng), XRES (mã nhận thực để mạng nhận thực ngưởi sử dụng - USIM), CK (khoá mật mã dùng để mã hoá cuộc truyền thông giữa người dùng và mạng), IK (khoá toàn vẹn dùng để bảo vệ

tính toàn vẹn của bản tin), AK (khoá dấu tên được sử dụng để chống phát lại). Mạng cũng sẽ phát các thông số RAND cùng với thẻ nhận thực AUTN gồm: SQN  AK, AMF và MAC-A đến USIM trong MS để nó tạo ra AV nhận thực tương ứng: XMAC (mã nhận thực để nhận thực mạng), RES (chữ ký để nhận thực USIM với mạng), IK, AK và SQN.

Hình 3.1: Tổng quan quá trình nhận thực và thoả thuận khoá

Các thủ tục nhận thực và thoả thuận khoá xảy ra tại USIM, SGSN/VLR và HLR/AuC. Vì mạng phục vụ được chia thành các miền PS và CS, SGSN có nghĩa là miền PS, còn VLR/SGSN là miền CS. Các thủ tục nhận thực được thực hiện giống nhau trong cả hai miền. Vì không có cơ sở thông tin chung giữa SGSN và MSC/VLR trừ HE nên các thủ tục AKA xảy ra độc lập ở miền CS và PS. Vì trong quá trình AKA, vai trò của VLR/MSC trong dữ liệu thoại và VLR/SGSN trong dữ liệu gói là như nhau với mỗi dạng dữ liệu nên ta chỉ đề cập đến AKA với VLR/SGSN, việc AKA trong dữ liệu thoại với VLR/MSC là tương tự.

3.7.2. Thủ tục AKA thông thƣờng

Nhận thực và thoả thuận khoá được quản lý bởi VLR/SGSN khi trao đổi dữ liệu mà thuê bao nối tới. Biểu đồ trao đổi trong chuỗi thông tin trong AKA được cho trong hình:

1) VLR/SGSN phụ trách máy di động gửi “yêu cầu số liệu nhận thực (trong đó có IMSI)” đến AuC.

2) AuC trả lời bằng “Trả lời số liệu nhận thực”, đó là các AV (AV1, AV2... AVn). 3) VLR/SGSN lưu các AV trong cơ sở dữ liệu của nó.

Hình 3.2: Biểu diễn chuỗi báo hiệu AKA

4) VLR/SGSN chọn một trong số các AV nhận được và phát: “Yêu cầu nhận thực người sử dụng” gồm có RAND, AUTN đến USIM thông qua RNC, node B và đầu cuối.

5) USIM kiểm tra AUTN (số MAC-A) và tính toán trả lời của ngưởi sử dụng RES.

6) VLR/SGSN so sánh RES và XRES để nhận thực người sử dụng.

7) Nếu quá trình nhận thực thành công, VLR/SGSN gửi CK/IK đến RNC. Các bản tin sẽ trao đổi giữa MS và mạng phục vụ sẽ được mã hoá và giải mã tại MS và RNC.

3.7.3. Thủ tục AKA trong HLR/AuC

HLR nhận bản tin “Yêu cầu số liệu nhận thực” trong đó có IMSI của thuê bao yêu cầu từ VLR/SGSN và định vị AuC nơi chứa số liệu thuê bao và yêu cầu AV từ trung tâm này.

Nếu AuC đã lưu các AV cho thuê bao, nó sẽ gửi trả lời bằng một hay nhiều Avm bằng không nó sẽ tạo ra chúng. Thông thường nhiều AV được gửi đi một lần. Nhờ vậy giảm bớt số lượng yêu cầu AuC và giảm thiểu lưu lượng mạng. Nếu tải AuC cao, nó có thể chỉ gửi đi một AV, nếu tải AuC giảm nó sẽ tạo ra nhiều AV hơn cho các yêu cầu mới.

3.7.4. Thủ tục AKA trong USIM

Hình 3.3: Nhận thực mạng tại USIM

Khi thu được “Yêu cầu nhận thực” gồm có RAND, AUTN từ VLR/SGSN, USIM kiểm tra thẻ nhận thực MAC-A để nhận thực mạng. MAC-A có độ dài 64 bit. Dựa trên các đầu vào (RAND, K, SQN, AMF), USIM sẽ dùng hàm f1 tương tự như khi AuC tạo ra MAC-A để tính ra XMAC-A. Sau đó USIM sẽ so sánh MAC-A và XMAC-A, nếu chúng giống nhau thì USIM sẽ biết rằng mạng mà nó đang kết nối tới đúng là mạng mong muốn bởi vì chỉ có có HLR của mạng thật mới biết khoá bí mật K đang được lưu tại AuC và USIM.

3.7.5. Thủ tục AKA trong VLR/SGSN

Hình 3.4: Thủ tục AKA trong VLR/SGSN

SGSN chịu trách nhiệm nhận thực và thoả thuận khoá. Nó bắt đầu các thủ tục này bằng cách gửi đi “Yêu cầu nhận thực” đến HLR. Khi nhận được các AV, nó lưu lại, chọn một trong số các AV đó và gửi 2 thông số RAND và AUTN trong AV đến USIM. Khi nhận được kết quả trả lời (RES) từ USIM, nó so sánh với kết quả này của XRES trong AV. Nếu chúng giống nhau, mạng đã nhận thực xong thuê bao. Như vậy hai nửa của nhận thực hai chiều đã hoàn tất. Sau đó, VLR/SGSN sẽ gửi các thông số còn lại từ AV mà nó chọn, đó là các khoá mật mã CK, IK đến RNC hiện đang quản lý

thuê bao. Các khoá này được sử dụng để mã hoá truyền thông và kiểm tra sự toàn vẹn của bản tin.

3.7.6. USIM từ chối trả lời

Nếu nhận thực mạng thất bại, USIM sẽ từ chối trả lời. Lý do ở đây là USIM sẽ biết rằng hô lệnh nhận được không khởi nguồn từ HE của mạng mà nó đang muốn kết nối.

USIM nhận được RAND, AUTN, mở AUTN và so sánh MAC-A nhận được từ AUTN này với X-MAC do nó tạo ra từ hàm f1 với các thông số đầu vào giống như khi AuC tạo ra MAC-A. Nếu các MAC này không trùng nhau, nhận thực bị từ chối. Điều này có nghĩa là khoá bí mật K không như nhau ở 2 miền, vì thế bản tin này không bắt nguồn tại HE của mạng của thuê bao. Khi đó nó huỷ bỏ thủ tục nhận thực và gửi đi bản tin “Từ chối nhận thực của người sử dụng (lý do)” về phía VLR/SGSN. Nhận được bản tin này, VLR/SGSN gửi “Báo cáo nhận thực thất bại” đến HLR cùng với nhận dạng thuê bao và lý do sự cố. Nó cũng có thể khởi nguồn lại các thủ tục nhận thực và thoả thuận khoá đến người sử dụng.

3.8. Thủ tục đồng bộ lại

Thủ tục đồng bộ lại xảy ra khi các chuỗi trình tự trong USIM và AuC không trùng nhau trong một dải quy định. Sự khác nhau này được phát hiện trong USIM khi nó so sánh SQN từ HE và SQN lưu tại chính nó.

1) VLR/SGSN gửi đi “Yêu cầu nhận thực người sử dụng” đến USIM.

2) USIM nhận thấy số trình tự SQN của AuC nằm ngoài dải, nó gửi bản tin “Sự cố đồng bộ AUTS” trở lại VLR/SGSN.

3) Nút VLR/SGSN theo dõi chuỗi AV được gửi đến USIM và khi nó nhận được bản tin yêu cầu đồng bộ lại AUTS, nó gắn thêm RAND đã được gửi đi và gửi

bản tin “Yêu cầu số liệu nhận thực gồm RAND, AUTS” đến HLR/AuC của thuê bao.

Hình 3.6: Thủ tục đồng bộ lại

4) AuC gửi vector “Trả lời số liệu nhận thực AV” đến VLR/SGSN để chỉ ra rằng đây là AV mới, thông số Qi được sử dụng.

5) USIM kiểm tra rằng SQNHE nằm trong dải SQNMS. Nếu SQNHE nằm ngoài dải, USIM tạo ra thẻ đồng bộ lại AUTS.

6) Khi HE nhận được AUTS, nó so sánh 2 số trình tự. Nếu nó nhận thấy AV được tạo ra sau này sẽ được USIM tiếp nhận, nó nhận AV với số trình tự mới này. Trái lại, AuC mở AUTS để nhận thực người sử dụng và đặt lại SQNHE vào giá trị SQNMS. Sau đó nó xoá các AV cũ và tạo ra các AV mới dựa trên SQN được đặt lại.

7) Khi VLR/SGSN nhận được các AV trong trả lời “Yêu cầu số liệu nhận thực” có chỉ thị sự cố đồng bộ, nó xoá toàn bộ các AV được lưu trước đây.

8) VLR/SGSN tiếp tục thủ tục AKA để hỏi hộ lệnh USIM.

3.8.1. Thủ tục đồng bộ lại trong USIM

Khi USIM nhận được bản tin “Yêu cầu nhận thực người sử dụng” từ VLR/SGSN, nó bắt đầu kiểm tra tính xác thực của bản tin. Nếu đây là bản tin được tạo

ra tại HE, nó tiến hành kiểm tra số trình tự của AuC bằng cách so sánh số này với số trình tự của nó. Nếu số trình tự này nằm ngoài dải, thủ tục đồng bộ lại được tiến hành, USIM tạo ra một thẻ đồng bộ lại AUTS để gửi nó trở lại VLR/SGSN.

3.8.2. Thủ tục đồng bộ lại trong AuC

AuC nhận bản tin “Yêu cầu số liệu nhận thực” bao gồm RAND và AUTS từ VLR/SGSN. Nó so sánh hai số trình tự. Nếu thấy rằng AV được tạo ra tiếp theo có thể tiếp nhận được, nó sẽ gửi AV này đến VLR/SGSN. Nếu không có AV nào trong số được lưu nằm trong dải được USIM tiếp nhận, AuC thực hiện kiểm tra sự toàn vẹn của bản tin. Quá trình này để đảm bảo rằng chính USIM muốn thủ tục đồng bộ lại. Nếu nhận thực này thành công, chuỗi trình tự của AuC được đặt lại, AuC sẽ tạo ra một tập các AV mới. Vì việc tạo nhiều AV trong thời gian thực sẽ chiếm tải lớn đối với AuC nên có thể chỉ 1 AV được trả lời trong lần trả lời đầu tiên.

3.8.3. Thủ tục đồng bộ lại trong VLR/SGSN

Khi nhận được sự cố đồng bộ, VLR/SGSN tìm một hô lệnh ngẫu nhiên thích hợp RAND từ bộ nhớ của mình và bổ sung nó đến bản tin trước khi gửi bản tin này đến HLR của thuê bao. Khi nhận được AV từ AuC, nó sẽ xoá tất cả các AV cũ để đảm bảo rằng các AV này sẽ không dẫn đến sự cố đồng bộ lại khác. Sau khi nhận được các AV mới, VLR/SGSN có thể tiếp tục AKA đến USIM.

3.8.4. Sử dụng lại các AV

Việc sử dụng lại các AV bị USIM từ chối do kiểm tra số trình tự. Điều này cản trở mạng thực hiện AKA với sử dụng lặp lại một AV.

Tuy nhiên đôi khi việc sử dụng lại AV là cần thiết. Chẳng hạn khi VLR/SGSN gửi đi bản tin “yêu cầu nhận thực người sử dụng” đến USIM, nhưng lại không nhận được câu trả lời (do mạng bị sự cố, ắc quy bị cạn...). Khi vượt quá thời hạn tạm dừng để chờ trả lời, nó sẽ tìm cách gửi lại USIM cặp RAND, AUTN một lần nữa. Nếu thực chất USIM đã nhận được AV này lần đầu, nó sẽ coi số trình tự nhận được nằm ngoài dải. Trong trường hợp này, khởi nguồn thủ tục đồng bộ lại bằng cách sử dụng hô lệnh nhẫu nhiên vừa nhận được với hô lệnh ngẫu nhiên trước đó, nếu chúng trùng nhau sẽ chỉ cần gửi đi trả lời của người sử dụng được lưu lại lần cuối cùng. Vì thế tất cả các thông số được đặt ra tại USIM cần được lưu lại.

3.8.5. Xử lý các cuộc gọi khẩn

Ngay cả khi thực hiện các cuộc gọi khẩn, nhận thực vẫn được thực hiện. Nhưng nếu nhận thực bị sự cố, hoặc do không có USIM hoặc do không có thoả thuận chuyển mạng, kết nối vẫn sẽ được thiết lập. Cuộc gọi sẽ chỉ bị huỷ nếu bảo mật và bảo vệ toàn vẹn thất bại.

3.9. Các hàm mật mã

3.9.1. Yêu cầu đối với các thuật toán và các hàm mật mã

Các hàm và các thuật toán mật mã phải đáp ứng các yêu cầu chặt chẽ và phải được thiết kế để có thể tiếp tục được sử dụng ít nhất là 20 năm. Các UE chứa các hàm này không bị giới hạn về xuất khẩu và sử dụng. Thiết bị mạng như RNC và AuC có thể phải chịu các hạn chế. Việc xuất khẩu các nút này phải tuân thủ thỏa thuận Wasenaar. Như vậy mỗi nhà khai thác có thể thiết lập thiết bị và giải thuật theo luật và giấy phép địa phương và người sử dụng có thể Roaming bằng thiết bị của mình mỗi khi chuyển đến một hãng hoặc nước mới. Khi không biết các khoá đầu vào, ta không thể phân biệt các hàm này với các hàm ngẫu nhiên độc lập của các đầu vào của chúng. Thay đổi một thông số đầu vào mỗi lần không thể phát hiện bất kỳ thông tin nào về khoá bí mật K hay trường cấu hình của nhà khai thác dịch vụ.

3.9.2. Các hàm mật mã

Các tính năng an ninh của UMTS được thực hiện bởi tập các hàm và các giải thuật mật mã. Có tất cả 10 hàm mật mã để thực hiện các tính năng: f0-f5, f1*, f5*, f8 và f9.

f0 là hàm tạo ra hô lệnh ngẫu nhiên, 7 hàm tiếp theo là các hàm tạo khoá vì thế chúng đều là đặc thù của nhà khai thác. Các khoá được sử dụng để nhận thực chỉ được tạo ra ở USIM và AuC, đây là hai miền mà một nhà khai thác đồng thời phải chịu trách nhiệm.

Các hàm để tạo ra các thông số AKA là: f1, f2, f3, f4, f5 và việc lựa chọn các hàm này về nguyên tắc là tuỳ thuộc vào nhà khai thác dịch vụ. Do việc thiết kế thuật toán mã hoá mạnh cho các hàm này rất khó nên 3GPP đã cung cấp một tập mẫu các thuật toán AKA với tên gọi là MILENAGE. Việc cấu trúc các giải thuật này dựa trên một giải thuật mật mã mạnh 128 bit được gọi là hàm lõi cùng với các trường cấu trúc bổ sung do nhà khai thác lựa chọn. AES (Advance Encrypt Standard) được khuyến nghị sử dụng cho hàm lõi của các hàm f1, f2, f3, f4 và f5. Các hàm f8 và f9 sử dụng hàm lõi là bộ mã hoá khối KASUMI.

Các hàm f8 và f9 được sử dụng trong USIM và RNC và vì hai miền này có thể thuộc các nhà khai thác khác nhau, nên chúng không thể đặc thù cho nhà khai thác. Các hàm này sử dụng khoá bí mật chung quy định trước - K. Lý do là để tránh phân phối K trên mạng và để giữ nó an toàn trong USIM và AuC.

Hàm Chức năng Đầu ra

f0 Hàm tạo số ngẫu nhiên RAND

f1 Hàm nhận thực mạng MAC-A/XMAC-A

f1* Hàm nhận thực bản tin đồng bộ lại MAC-S/XMAC-S

f2 Hàm nhận thực ngưởi sử dụng RES/XRES

f3 Hàm tạo ra khoá mật mã CK

f4 Hàm tạo ra khoá toàn vẹn IK

f5 Hàm tạo ra khoá dấu tên AK

f5* Hàm tạo ra khoá dấu tên cho bản tin

đồng bộ lại

AK

f8 Hàm mã hoá bản tin Bản tin đã được mã hoá

f9 Hàm tạo dấu ấn từ khoá toàn vẹn MAC-I/XMAC-I

Các hàm f1, f2, f3, f4, f5, f1*, f5* được thiết kế để có thể thực hiện trên IC sử dụng CPU 8 bit, hoạt động tại xung nhịp 3,25 Mhz, 8 kB ROM và 300 kB RAM. Các hàm này tạo ra AK, XMAC-A, RES và IK trong thời gian không quá 500 ms. Các hàm f1, f2, f3, f4, f5, f5* được gọi là các hàm tạo khoá, chúng được sử dụng trong các thủ tục AKA khởi đầu.

3.9.3. Sử dụng các hàm bình thƣờng để tạo ra AV trong AuC

Hình 3.7: Tạo ra AV trong AuC

Khi tạo một AV mới, AuC đọc giá trị của số trình tự được lưu, sau đó nó tạo ra một SQN mới và số ngẫu nhiên RAND mới. Cùng với AMF và khoá bí mật dùng chung quy định trước được lưu, bốn thông số đầu vào đã được chuẩn bị để sử dụng.

Các hàm sử dụng đầu vào và tạo ra các giá trị cho mã nhận thực bản tin, MAC-A kết quả kỳ vọng nhận thực người sử dụng, X-RES. Khoá mật mã CK, khoá toàn vẹn IK, khoá nặc danh AK. Sau khi SQN  AK, ta được thẻ nhận thực AUTN gồm: SQN  AK, AMF và MAC

3.9.4. Sử dụng các hàm bình thƣờng để tạo ra các thông số an ninh trong USIM

Để tạo ra các khoá đầu ra trong USIM, chỉ có một trong số bốn thông số mà AuC lấy làm đầu vào đó là khoá bí mật chia sẻ quy định trước K. Các thông số đầu vào còn lại phải được nhận từ AuC.

Khi USIM nhận được cặp RAND và AUTN nó bắt đầu tạo ra khoá dấu tên AK

Một phần của tài liệu Bảo mật dữ liệu đầu vào cho mạng 3G (Trang 61)