2.2.1. Giới thiệu.
Ngày nay trong mạng GSM đã cài dặt sẵn các thuật toán xác thực, thuật toán mã hóa để giải quyết vấn đề an toàn cho người dùng thông thường.
A3 là giải thuật chứng thực trong mô hình bảo mật GSM. Giải thuật lấy RAND từ MSC và khóa bảo mật Ki từ trong SIM như là các dữ liệu đầu vào và tạo ra 32 bit ngõ ra gọi là các đá ứng ngõ ra. Cả RAND và i đều có chiều dài là 128 bit. Giải thuật A3 có thể xem như là giải thuật Hash một chiều. Nói chung, hàm Hash là hàm xuất ra chuỗi bit có chiều dài cố định từ các ngõ vào ngẫu nhiên. Hàm Hash một chiều được thiết kế để mã hóa dữ liệu sao cho không cách nào có thể phát hiện ra được các giá trị đầu vào đã tạo ra giá trị Hash và không có hai giá trị đầu vào lại tạo ra cùng một giá trị Hash.
Hầu hết, các nhà vận hành mạng GSM đều sử dụng giải thuật COMP 128 cho cả hai thuật toán A3 và A8. COMP 128 lấy RAND và i làm ngõ vào để tạo ra 128 bit ngõ ra, thay vì 32 bit SRES và 64 bit Kc. Chuỗi 32 bit đầu tiên trong kết quả 128 bit đầu ra đ ng vai trò là đá ứng SRES. Chuỗi 54 bit cuối của chuỗi COMP 128 tạo thành key phiên giao dịch c cho đến hi MS được xác thực lại. Chiều dài của key Kc là 54 bit chứ không phải 64 bit chiều dài của key nhập vào giải thuật A5. Để tạo ra key với 64 bit thì 10 bit 0 được chèn vào cuối của chuỗi 54 bit được tạo ra bởi thuật toán COMP 128. Cả giải thuật A3 và A8 được lưu trong SIM để ngăn chặn mọi người làm giả chúng.
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 46
2.2.2. Mô tả thuật toán COMP 128.
Nhận thực thường được sử dụng trong mạng GSM cung cấp các khả năng nhận thực trạm di động và các trạm truyền dẫn gốc. Ngày nay, các thuật toán A3 và A8 đều được tích hợp bên trong một thuật toán gọi là COMP 128. Với thuật toán COMP 128 này, đầu vào bao gồm 32 bytes (256 bit) của RAND và Ki, đầu ra là 12 bytes (96 bit) trong đ 32 bit SRES và 64 bit c. Thuật toán này hông được đưa ra công hai nhưng điều đ đã bị làm trái lại bởi Marc Briceno, Ian Goldberg, và David Wagner vào năm 1998.
COMP 128 128 bit RAND
128 bit Ki
96 bit đầu ra
32 bit SRES || 64 bit Kc
Hình 2.2: Mô tả thuật toán COMP 128.
2.2.2.1. Chức năng cơ bản của COMP 128.
Thuật toán COMP128 với các thông số như sau: Đầu vào: 32 bytes trong đ c :
16 byte (128 bit) RAND. 16 byte (128 bit) Ki. Đầu ra: 12 byte trong đ c :
32 bit SRES sử dụng cho việc chứng thực.
54 + 10 bit 0 (thêm vào) Kc sử dụng cho thuật toán A5.
Thuật toán COMP 128 có chức năng của hàm Hash một chiều. Hàm Hash là một hàm bao gồm có 5 vòng trong mỗi vòng có 16 cặp của 2 byte được chuyển đổi. Trong mỗi vòng một số S- box hác nhau được sử dụng. Vòng đầu tiên chỉ chuyển đổi 2 octets bằng 2 octets, vòng thứ 2 giảm 2 octets thành 1 cặp có giá trị 7 bit. Vòng thứ 3 giảm 16 cặp có giá tri 7 bit thành 16 cặp có giá trị 6 bit và cứ thế cho đến hết 5 vòng. Vì vậy, nguyên lý cơ bản của hàm Hash là một cấu trúc Butterfly.
Thuật toán COMP 128 được thực hiện với một mảng 32 bytes x[]. Quá trình đ diễn ra như sau:
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 47 Bước 1: Tải RAND vào trong x[16…31].
Bước 2: Thực hiện lặp 8 lần. Trong đ , mỗi lần lặp diễn ra như sau: Tải i đến x[1…15].
Compression (nén). Tạo bit từ bytes. Hoán vị.
Bước 3: Nén 16 bytes thành 12 bytes và lưu trữ ở trong Simoutput []. Bước 4: Trở về Simoutput [].
2.2.2.2. Thuật toán Nén – Cấu trúc Butterfly.
0 15 16 17 31 0 15 16 17 31 0 15 16 17 31 0 15 16 17 31 . . . . . . . . . . . .
Hình 2.3: Quá trình nén trong COMP 128.
Cấu trúc như trên được gọi là cấu trúc Butterfly. Theo cấu trúc này quá trình nén được thực hiện trong 5 mức. Trong mỗi mức đ , nén được thực hiện trên 2 phần bằng nhau ví dụ như ở mức 0 nó thực hiện trên 2 phần 16 bytes, mức 1 thực hiện trên 4 phần 8 bytes…. Kết quả là một byte được sinh ra từ 2 bytes đầu vào. Hai bytes đầu vào được sử dụng để xác định chỉ số của bảng tìm kiếm (lookup table). Bảng tìm kiếm mức i được xác định bởi Ti và nó bao gồm 29 – i giá trị của 8 bits. Ví dụ:
Mức Tên bảng Số mục Giá trị
0 T0 512 8
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 48 Như vậy, sau khi nén chỉ có giá trị 4 bit được đưa vào x [].
Tạo bit từ byte: mỗi đầu vào của x [] bao gồm một giá trị 4 bit sau khi nén. Ngoại trừ, ở vòng lặp cuối các bit được đưa vào ngẫu nhiên và được lưu trữ trong x [16…31].
2.2.2.3. Hoán vị.
Sau mỗi vòng lặp của thuật toán COMP 128 trừ vòng lặp cuối, hoán vị sẽ được thực hiện như sau:
Sau khi giảm thì 4 bit MSB mang giá trị là 0.
Vị trí mới của tất cả các bit được xác định theo biểu thức: Bit [i] = bit [(17. i)(mod 128)]
Sau đ , dãy bit được sử dụng để đưa vào 4 bytes cao nhất trong x []. Vì vậy, các bit từ bit [i] đến bit [i + 7] được sử dụng như là bytes x [i], nhưng bị đảo ngược lại. Vì thế, bit [i] là MSB của byte [i].
2.2.2.4. Đầu ra của thuật toán COMP 128.
Thuật toán COMP 128 cung cấp một chuỗi 128 bit nhưng chỉ sử dụng 86 bit: 32 bit đầu trong 86 bit được sử dụng cho việc trả lời chứng thực SRES:
Hình 2.4: 32 bit SRES.
54 bit sau được sử dụng để làm đầu vào cho thuật toán A5. Tuy nhiên, thuật toán A5 cần 64 bit c đầu vào vì vậy 10 bit 0 đuợc thêm vào h a c để làm đầu vào.
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 49
Hình 2.5: 64 bit Kc.
2.3. THUẬT TOÁN MÃ HÓA. 2.3.1. Giới thiệu. 2.3.1. Giới thiệu.
Thuật toán A5/1 là một thuật toán mã hóa và giải mã sử dụng trong hệ thống thông tin di động GSM để bảo vệ thông tin thoại của thuê bao di động gửi qua đường vô tuyến, tránh các trường hợp nghe lén.
Hiện tại trên thế giới đang triển khai các phiên bản của thuật toán A5 như sau:
A5/0 là một phiên bản của thuật toán A5 nhưng n yếu hiện hông được sử dụng.
A5/1 là một thuật toán mạnh nhất hiện nay, đang được triển khai tại Đông Âu và Mỹ.
A5/2 là một phiên bản của A5, yếu hơn A5/1 và được triển khai chủ yếu ở các nước Châu Á.
A5/3 đang trong giai đoạn nghiên cứu và hiện nay được sử dụng trên mạng 3G.
Cùng với các thuật toán A3 và A8, thuật toán này được phát triển phục vụ cho việc bảo mật trong mạng GSM, n hông được công bố rộng rãi. Nhưng hiện nay các thuật toán này đã bị bẻ khóa và có thể dễ dàng tìm thấy chúng ở trên mạng Internet. Ở đây chúng ta chỉ tìm hiểu thuật toán A5/1 đang được sử dụng rộng rãi ở Việt Nam cũng như nhiều nước khác.
Hai thông số vào của thuật toán A5 là session key Kc (64bit) và số khung (22 bit), và bộ mã hóa sẽ thực hiện sinh ra keystream sau mỗi lần khung mang dữ liệu thay đổi. Cùng một c được sử dụng xuyên suốt cuộc gọi, nhưng số thứ tự khung Frame Number (một số 22 bit) thay đổi trong suốt chu kỳ cuộc gọi. Do vậy,
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 50 thuật toán sinh ra chuỗi khóa 228 bit duy nhất tương ứng với mỗi khung. Chi tiết bộ mã h a như sau:
Hình 2.6: Chi tiết bộ mã hóa.
Mục đích của thuật toán A5 là sinh ra 228 bit Cipher Stream từ Kc và Fn (số khung), sau đ dùng Ci her Stream này để mã hóa dữ liệu của thuê bao. Tại BTS, 114 bit đầu dùng để giải mã luồng dữ liệu từ MS đến BTS còn 114 bit sau được dùng để mã hóa luồng dữ liệu từ BTS đến MS. Tại MS, 114 bit đầu được dùng để mã hóa luồng dữ liệu từ BTS đến MS và 114 bit sau được dùng để mã hóa luồng dữ liệu từ MS đến BTS.
2.3.2. Mô tả thuật toán A5.
Thuật toán A5/1 bao gồm 3 thanh ghi dịch LSFR c độ dài khác nhau R1 = 19, R2 = 22, R3 = 23, các bit đầu tiên bên phải đều là các bit 0. Trên thanh ghi R1 các bit 13, 16, 17, 18 được gọi là các bit vị trí. Tương tự trên thanh ghi R2 là các bit 20, 21 và thanh ghi R3 là 7, 20, 21, 22. Các thanh ghi này đều được đặc trưng bởi các hàm f(x) như sau:
LSFR 1: f(x) = x19 + x5 + x2 + x + 1 LSFR 2: f(x) = x22 + x + 1
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 51
Hình 2.7: Cấu trúc của 3 thanh ghi dịch LSFR.
Trong các vị trí d = 11, d = 12, d = 13 từ trái qua hay các bit mang số thứ tự là 8 trong thanh ghi R1 và 10 ở thanh ghi R2, R3 được gọi là các “ta cloc ings”.
Các thanh ghi được “cloc ” theo luật sto /go đặc trưng bởi hàm Majority. Ta định nghĩa hàm Majority như sau:
f{a(t + 11), b(t + 12), c(t + 13)} = (y1, y2, y3)
Bảng 1: Giá trị của hàm Majority.
f (a(t + 11), b(t + 12), c(t + 13)) = (y1, y2, y3) a(t+11) b(t+12) c(t+13) (1, 1, 1) (1, 1, 0) (0, 1, 1) (1, 0, 1) 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0
Mỗi thanh ghi dịch bit định thời ‘ta cloc ing’, bit 8 trong R1, bit 10 trong R2 và R3. Hàm Majority được tính toán với đầu vào là các bit định thời của mỗi thanh ghi và đầu ra là các bit dùng để ‘cloc ’ vào các bit vị trí ‘ta ossision’. Giá trị của hàm này tương ứng với các trường hợp khác nhau của bit định thời. Thanh ghi dịch chỉ được định thời hi bit ‘cloc ’ thỏa mãn với hàm. Hàm điều khiển
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 52 ‘cloc ’ này là hi tuyến trong thuật toán A5/1. Theo bảng trên, mỗi lần ‘cloc s’ thì sẽ có 2 hoặc là 3 thanh ghi dịch nhận được xung clock và dịch bit. Ví dụ, trong trường hợ các bit định thời trong 3 thanh ghi dịch lần lượt là (0, 0, 1), kết quả hàm ‘Majority’ = (1, 1, 0) c nghĩa là thanh ghi R1, R2 sẽ nhận được xung clock và dịch (go), R3 không nhận được xung clock và không dịch (stop).
Chuỗi tuần tự đầu ra:
U = {U(t)} = a(I1) + b(I2) + c(I3)
Trong đ , t = 0, 1... ... . . và Ii được xác định bởi tín hiệu đồng bộ ‘sto /go’, cloc điều khiển bởi hàm Majority.
10 7 0 21 20 22 10 0 21 20 18 17 16 13 8 0 f y1 y2 y3
Hình 2.8: Hàm Majority điều khiển clock.
Các bước hoạt động của A5/1 như sau:
Input Kc: các thanh ghi được cloc nhưng hông sử dụng luật stop/go trong 64 chu kỳ xung. Trong mỗi chu kỳ đưa một bit từ chuỗi khóa Kc vào cả 3 thanh ghi, từ bit c ý nghĩ thấp nhất đến bit c ý nghĩ lớn nhất. Mỗi bit này được XOR với bit zero trong mỗi thanh ghi. Khi tới chu kỳ xung mới, các bit trong thanh ghi được dịch trái, và bit mới được đưa vào lặp lại qúa trình như trên. Thuật toán đạt trạng thái S64.
Input Fn: tương tự như bước 2, nhưng với chu kỳ là 22 chu kỳ xung clock và 22 bit Fn được nạp vào thay vì Kc. Thuật toán đạt trạng thái S86
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 53 Mixing: các thanh ghi được clock 100 chu kỳ. Ở bước này ta dùng thuật toán
stop/go, các bit out ut được sinh ra ta bỏ qua và thuật toán đạt trạng thái S186 Output generation: các thanh ghi tiếp tục được clock 228 lần nữa vẫn dùng
thuật toán stop/go. Lúc này, chuỗi bit sinh ra được chia làm 2 phần, mỗi phần dài 114 bit. Phần đầu tiên được XOR với chuỗi Ci hertext thu được để giải mã, trong hi đ hần thứ 2 được XOR với chuỗi Plaintext để mã hóa chuỗi này. Chuỗi 228 bit được gọi là chuỗi mã h a “ci her stream”. Thuật toán đạt trạng thái S414 tại cuối bước này.
Các bước từ 1 đến 5 được lặp lại với mỗi khung dữ liệu mới. Mỗi lần như vậy thông số Fn thay đổi trong khi Kc vẫn được giữ nguyên cho đến lần nhận thực kế tiếp.
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 54 S186 Input COUNT S414 100 clocks 228 clocks S64 S86 S0 64 clocks 22 clocks
Input KC Mixing Output generation
Hình 2.9: Các trạng thái của thuật toán A5.
2.4. QUÁ TRÌNH NHẬN THỰC VÀ MÃ HÓA. 2.4.1. Nhậnthực. 2.4.1. Nhậnthực.
Hình 2.10: Quá trình nhận thực và mã hóa trong mạng GSM.
2.4.2. Mã hóa.
Bước 1: hi người sử dụng cấp nguồn đầy đủ cho máy di động MS, máy di động MS này được gắn Card SIM sẽ tìm mạng GSM và gửi thông báo đăng ý IMSI vào mạng để khởi tạo quá trình nhận thực.
Bước 2: Hệ thống trạm gốc BS sẽ chuyển bản tin IMSI vừa nhận được từ MS đến HLR/AuC để hỏi Triplet có hợp pháp hay không.
Bước 3: Trên IMSI nhận được, bộ HLR/AuC có thể tìm i tương ứng đến thuê bao. Bằng thuật toán A3 và A8 bộ HLR/AuC tạo ra nhiều Triplet thị thực và gửi trả lại trạm gốc.
Bước 4: Sau khi nhận được các Triplet nhận thực, BS chọn một Triplet và gửi RAND đến MS thông qua đường truyến vô tuyến.
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 55 Bước 5: Với Ki trong SIM và bằng thuật toán A3, A8 thiết bị di động MS có thể tính ra SRES và c tương ứng với RAND mà nó vừa nhận được từ BS. Máy MS gửi SRES trở lại trạm BS và cho biết rằng thuê bao đã ghép với IMSI Bước 6: Trạm BS kiểm tra, so sánh giữa SRES vừa nhận và SRES trong
Tri let đã chọn, nếu chúng bằng nhau thì quá trình nhận thực thành công. Các bước từ 4 đến 6 được biểu diễn theo hình dưới.
Thuật toán A3 Thuật toán A8 SRES Kc RAND, SRES, Kc So sánh SRES(MS) và SRES(AuC) RAND SRES Ki T h à n h c ô n g / H ỏn g Trạm gốc Di động Hình 2.11: Các bước từ 4 đến 6.
2.4.2.1. Tạo key mã hóa Kc.
GSM sử dụng ey mã h a để bảo vệ dữ liệu người dùng và báo hiệu trên các giao tiếp vô tuyến. Mỗi hi người dùng được xác thực, RAND được phát từ mạng cùng với Ki từ SIM được gửi qua giải thuật tạo ey mã h a A8 để tạo ra key mã hóa Kc. Giải thuật A8 được lưu trên SIM. c được tạo bởi giải thuật A8 sau đ được sử dụng trong giải thuật A5 để mã hóa và giải mã dữ liệu.
Nghiên cứu giải pháp an toàn tín hiệu thoại theo công nghệ GSM. Page 56
A8
Ki (128 bit), RAND (128 bit)
Kc (64 bit)
Hình 2.12: Tạo khóa phiên Kc.
ey hiên c được tạo ra trong SIM của máy di động. Mạng có thể sử dụng cùng tập Ki, RAND và cùng giải thuật để tạo cùng ey để giải mã dữ liệu.
Phần lớn các nhà khai thác GSM sử dụng một giải thuật (gọi là COMP128) cho cả xác thực và tạo key Kc.
2.4.2.2. Mã hóa dữ liệu.
Giao tiế được mã h a được khởi động bởi lệnh yêu cầu chế độ mã hóa từ mạng GSM. Khi nhận lệnh này, máy di động bắt đầu mã hóa và giải mã dữ liệu. Mỗi khung trong dữ liệu vô tuyến được mã hóa với một chuỗi key khác nhau. Giải thuật A5 sử dụng để mã hóa dữ liệu với Kc và số hung được mã hóa, vì vậy tạo ra