Thuật toán nhận thực

Một phần của tài liệu Nghiên cứu các phương pháp bảo mật trong hệ thống gsm (Trang 40 - 92)

2.4.1. Giới thiệu

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 đáp ứng ngõ ra. Cả RAND và Ki đều có chiều dài là 128 bit. Giả 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.

Giải thuật A8 là giải thuật tạo ra key phiên giao dịch trong mô hình bảo mật GSM. Giải thuật lấy 2 tham số nhập 128 bit và tạo ra chuỗi 64 bit từ chúng. Chuỗi này gọi là key Kc.

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à Ki 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à đáp ứng SRES. Chuỗi 54 bit cuối của chuỗi COMP 128 tạo thành key phiên giao dịch Kc cho đến khi 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.

2.4.2. Thủ tục nhận thực

• Khi MS muốn truy nhập mạng, MS sẽ gửi số nhận dạng IMSI kèm Ki tới MSC/VLR. Sau đó, MSC/VLR sẽ gửi IMSI tới HLR và AuC và yêu cầu bộ ba chứng thực

Hình 2.8. MS gửi bản tin IMSI

• Khi HLR nhận được IMSI và yêu cầu chứng thực. Đầu tiên nó kiểm tra cơ sở dữ liệu xem IMSI có hợp lệ hay không. Nếu hợp lệ HLR sẽ gửi IMSI và yêu cầu chứng thực tới trung tâm nhận thực AuC

Hình 2.9. HLR gửi IMSI tới AuC

• AuC sẽ tìm kiếm Ki kết hợp với IMSI. Ki là khóa chứng thực thuê bao cá nhân. Nó là một số gồm 128 bit, tạo thành 1 cặp với IMSI khi SIM card được tạo ra. Ki được lưu trữ ở trên SIM card và trung tâm nhận thực AuC. AuC sẽ tạo ra một số ngẫu nhiên gồm 128 bit gọi là RAND

Hinh 2.10. AuC tạo RAND và Ki

• RAND và Ki là tín hiệu đầu vào của thuật toán A3 và đầu ra là một chuỗi 32 bit gọi là tín hiệu trả lời SRES

Hình 2.11. Tạo ra SRES trong AuC

• RAND và Ki là đầu vào của thuật toán A8 để đầu ra là một chuỗi gồm 64 bit gọi là khóa mã hóa Kc. Kc được sử dụng cho thuật toán A5 để mã hóa dữ liệu truyền

trên giao diện Um. RAND, SRES và Kc được gọi là bộ ba ( Triplets ). AuC có thể tạo ra nhiều bộ ba để gửi đến MSC

Hình 2.12. Tạo Kc và Triplet trong AuC

• Chỉ có AuC là tạo ra bộ ba Triplets và gửi chúng tới HLR. Sau đó, HLR sẽ gửi chúng tới MSC/VLR.

Hình 2.13. AuC gửi Triplet tới MSC

• MSC giữu lại Kc và SRES còn RAND được gửi tới MS và yêu cầu nó chứng thực

Hình 2.14. MSC gửi RAND tới MS

• MS với Ki được lưu ở trên SIM và cùng thuật toán A3, A8. RAND, Ki ở đầu vào của thuật toán A3 và A8 để tạo ra SRES và Kc ở đầu ra.

Hình 2.15. MS tạo SRES và Kc

• Sau khi MS tạo ra SRES nó sẽ gửi SRES tới MSC/VLR. Tại đây MSC/VLR so sánh SRES nó nhận được từ AuC và MS xem có bằng nhau không. Nếu chúng giống nhau thì quá trình nhận thực thành công.

2.4.3. Thuật toán COMP 128

2.4.3.1. 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 Kc. Thuật toán này không được đưa ra công khai 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.

Hình 2.16. Mô tả thuật toán COMP 128

2.4.3.2. 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ó (adsbygoogle = window.adsbygoogle || []).push({});

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 khá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.

Sự giảm nhỏ được thực hiện với một giá trị tạm thời : y = ( x[m] + 2x[n] ) (mod 29 – j) z = ( 2x[m] + x[n] ) (mod 29 - j) Sau đó quá trình nén được thực hiện như sau :

x[m] = tablej [y] x[n] = tablej [z]

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 :

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 Ki đến x[1…15]

• Compression ( nén )

• 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.4.3.2.1. Thuật toán Nén – Cấu trúc Butterfly

Hình 2.17. 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..vv. Kết quả là một byte được sinh ra từ 2 byte đầu vào. Hai bytes đầu vào đựoc 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 bit. Ví dụ :

Level Table name Number of entries Value

0 T0 512 8

4 T4 32 4

Như vậy, sau khi nén chỉ có giá trị 4 bit được đưa vào x [].

Tạo bit từ bytes : 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.4.3.2.2. 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 nghịch lại. Vì thế, bit [i] là MSB của byte [i]

2.4.3.2.3. Đầ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.18. 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 Kc đầu vào vì vậy 10 bit 0 đuợc thêm vào khóa Kc để làm đầu vào. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 2.19. 64 bit Kc

2.4.5. Tấn công COMP 128

Vào tháng 4 năm 1998 Marc Briceno, Ian Goldberg và David Wagner đã công khai tấn công COMP 128 với việc tìm ra khóa bí mật Ki. Marc Briceno đã nghiên cứu tấn công với truy nhập vật lý tới Card trong khoảng 8 h nhưng thật ngạc nhiên là lại tìm ra cách tấn công trên giao diện vô tuyến. GSM đã chống lại điều đó bằng cách tạo ra các phiên bản mới của COMP 128. Như vậy, các chức năng cơ bản đã được đổi tên thành COMP 128 – 1, sau đó phát triển 2 bản khác trong bí mật cho đến bây giờ. Bản thứ 2 dường như tìm ra một cách mới để tạo ra tín hiệu trả lời SRES, trong khi đó COMP 128 – 3 lại chỉ mở rộng độ dài của tín hiệu SRES đưa tới A5. Nhưng hầu hết các cung cấp đó vẫn sử dụng trong COMP 128 – 1. Hai năm sau, một nhóm nghiên

cứu của IBM lần đầu tiên công khai tấn công với công nghệ gọi là Partitioning Attack dựa trên sự phân tích công suất khác nhau ( DPA ). Kết quả của cuộc tấn công này là chỉ cần 8 yêu cầu để gửi đến SIM và truy nhập vật lý chỉ trong vài giây.

Trong thời gian ấy,phiên bản thứ 4 ra đời đây là một phiên bản hoàn toàn mới. Sự cải tiên lớn nhất là GSM đã thay đổi từ các mẫu bảo mật cũ đến các chuẩn công khai, dựa trên AES. Phiên bản COMP 128 – 4 được sử dụng trong mạng UMTS.

2.4.5.1. Narrow Pipe

Sự công kích là một sự đụng độ mà nó là điều đầu tiên trong tất cả điều có thể xảy ra bởi vì 95% sự đụng độ xảy ra ở đầu ra bắt đầu của vòng 2, ngược lại sự đụng độ không xảy ra ở vòng 1 kể từ khi nó được sắp xếp một – một.. Với cách phân tích như vật Briceon đã tìm ra rằng “ riêng bytes i, i + 8 ,i +16, i + 24 đầu ra của vòng thứ 2 phụ thuộc đầu vào của thuật toán COMP 128.” Việc này gọi là Narrow Pipe, một “pipe” có độ rộng là 4 bytes.

Hình 2.20. Narrow Pipe

2.4.5.2. Phân vùng tấn công

Phân vùng tấn công nói chung cho tôc độ chậm trong việc xử lý của Card thông minh, nó thường rất cần thiết để thoát ra khỏi một vài phép tính và tìm kiếm kết quả trong bảng. Bảng tìm kiếm này có thể có một vài đặc điểm giúp cho người tấn công. Trong trường hợp COMP 128 thì thông tin quan trọng đó là bộ xử lý chỉ đề địa chỉ 8 bit nhưng trong s-box đầu tiên bao gồm 512 giá trị nó cần đề địa chỉ của 9 bit. Như vậy, bảng cần chia thành 2 miếng nhỏ. Các kỹ sư IBM đã tạo nên sự giả định rằng bảng đó được chia ở giữa. Với sự giả định đó họ đã có được thông tin kich thước, kết

thúc việc phân vùng tấn công. Kết quả này có thể hoàn thành với một số lớn của một 1000 challenges ngẫu nhiên.

2.5. Thuật toán A5 2.5.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 Voice 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 khô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 Western Europe và America

• 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 Asia.

• A5/3 đang trong giai đoạn nghiên cứu.

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ó khô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.

2.5.2. Thủ tục mã hóa

Trong phần này, chúng ta nghiên cứu phương thức trao đổi, thực hiện việc mã hóa trên đường vô tuyến như thế nào. Các phần tử tham gia vào thủ tục này gồm có : MS, BTS, MSC/VLR.

Như ta đã biết thông qua thủ tục nhật thực, MS lưu khóa Kc trên SIM card. Sau khi nhận được RAND từ mạng, MS dùng thuật toán A8 để tính ra SRES rồi gửi ngược về mạng. Tổng đài MSC nhận SRES từ MS và so sánh với SRES nhận đựoc từ trung tâm nhận thực AuC. Nếu chúng giống nhau thì quá trình nhận thực thành công và MS có thể sử dụng các dịch vụ mạng

Hình 2.21. Quá trình nhận thực

Sau khi MS được nhận thực, MSC sẽ gửi khóa Kc tới hệ thống BSS cụ thể ở đây là BTS và yêu cầu BTS, MS chuyển sang chế độ mã hóa Cipher Mode. Kc sẽ không được truyền qua giao diện Um mà được lưu trữ tại BTS

Hình 2.22. MSC gửi khóa Kc tới BSS

BTS đưa khóa Kc và tải dữ liệu vào thuật toán A5, kết quả ta được chuỗi dữ liệu được mã hóa. MS cũng đưa khóa Kc và tải dữ liệu thuê bao vào thuật toán A5, kết quả ta được chuỗi dữ liệu được mã hóa. Cần chú ý rằng, thuật toán A5 là một chức năng của máy di động ME chứ không phải của SIM card.

Hình 2.23. Quá trình mã hóa

2.5.3. Thuật toán A5

3.5.3.1. Cấu trúc thuật toán A5

Hình 2.24. Cấu trúc thuật toán A5 (adsbygoogle = window.adsbygoogle || []).push({});

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 Kc đượ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, 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.25. Chi tiết bộ mã hóa

Mục đích của thuật tóan A5 là sinh ra 228 bit Cipher Stream từ Kc và Fn ( số khung ), sau đó dùng Cipher 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.5.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

• LSFR 3 : f(x) = x23 + x15 + x2 + x + 1

Hình 2.26. 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 “tap clockings”.

Các thanh ghi được “clock” theo luật stop/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) Gía trị của hàm Majority được thể hiện trong bảng sau :

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

( 1,0,1 ) 1 0 0 1 1 0 Mỗi thanh ghi dịch bit định thời ‘tap clocking’, bit 8 trong R1, bit 10 trong R2 và R3.

Một phần của tài liệu Nghiên cứu các phương pháp bảo mật trong hệ thống gsm (Trang 40 - 92)