Nghiên cứu các phương pháp bảo mật trong hệ thống gsm

MỤC LỤC MỤC LỤC5 LỜI NÓI ĐẦU9 DANH SÁCH CÁC HÌNH VẼ90 THUẬT NGỮ VIẾT TẮT92 TÀI LIỆU THAM KHẢO97 CHƯƠNG I . TỔNG QUAN HỆ THỐNG THÔNG TIN TẾ BÀO 1.1.Hệ thống thông tin di động tế bào. 11 1.1.1. Khái niệm11 1.1.2. Cấu trúc. 11 1.1.2.1. Cấu trúc hệ thống thoại di động trước đây. 11 1.1.2.2. Cấu trúc hệ thống thông tin di động tế bào. 11 1.1.3. Phân loại cell13 1.2. Lịch sử phát triển các hệ thống mạng di động. 14 1.2.1. Hệ thống thông tin di động thế hệ thứ nhất ( 1G ). 14 1.2.2. Hệ thống thông tin di động thế hệ thứ 2 ( 2G ). 15 1.2.3. Hệ thống thông tin di động thế hệ 2,5G16 1.2.4. Hệ thống thông tin di động thế hệ 3G16 1.3. Hệ thống thông tin di động GSM . 16 1.3.1 Mô hình hệ thống thông tin di động GSM . 16 1.3.2. Các thành phần chức năng trong hệ thống. 17 1.3.2.1. Trạm di động ( MS – Mobile Station ). 18 1.3.2.2. Phân hệ trạm gốc ( BSS – Base Station Subsystem ). 18 1.3.2.2.1. Khối TRAU (Transcode/Rate Adapter Unit ). 19 1.3.2.2.2. Khối BTS ( Base Tranceiver Station ). 19 1.3.2.2.3. Khối BSC (Base Station Controller). 19 1.3.2.3. Phân hệ chuyển mạch SS ( SS - Switching Subsystem ). 19 1.3.2.3.1. Trung tâm chuyển mạch di động MSC20 1.3.2.3.2. Bộ ghi định vị thường trú ( HLR – Home Location Register ). 21 1.3.2.3.3. Bộ ghi định vị tạm trú ( VLR – Visitor Location Register ). 22 1.3.2.3.4. Thanh ghi nhận dạng thiết bị ( EIR – Equipment Identity Register ). 22 1.3.2.3.5. Khối chứng thực thuê bao ( AuC – Authetication Center ). 22 1.3.2.4. Phân hệ khai thác và bảo duỡng. 23 1.3.2.4.1. Khai thác. 23 1.3.2.4.2. Bảo dưỡng. 23 1.4. Hệ thống thông tin di động UMTS. 24 1.4.1. Mô hình hệ thống thông tin di động UMTS. 24 1.4.2. Các thành phần chức năng trong hệ thống. 24 1.4.2.1. Trạm di động. 24 1.4.2.2. Phân hệ trạm gốc. 26 1.4.2.2.1. Cấu trúc của UTRAN27 1.4.2.3. Mạng lõi UMTS ( CN – Core Network ). 29 1.4.2.3.1. Máy chủ quản lý thuê bao HSS. 30 1.4.2.3.2. Miền chuyển mạch kênh CS. 31 1.4.2.3.3. Miền chuyển mạch gói PS. 32 CHƯƠNG II : BẢO MẬT TRONG MẠNG GSM 2.1. Mô hình bảo mật trong mạng GMS. 34 2.2. Mục đích của việc bảo mật36 2.3. Một số đặc trưng bảo mật trong GSM . 36 2.3.1. Chứng thực thuê bao. 36 2.3.1.1. Cơ chế chứng thực trong hệ thống GSM . 38 2.3.1.2 Quá trình chứng thực như sau. 38 2.3.2. Mã hóa. 39 2.3.2.1. Tạo key mã hóa Kc. 39 2.3.2.2. Mã hóa dữ liệu. 40 2.2.3. Một số đặc trưng bảo mật khác. 40 2.2.3.1. Bảo vệ nhận dạng thuê bao. 40 2.3.3.2. Card thông minh. 41 2.4. Thuật toán nhận thực. 41 2.4.1. Giới thiệu. 41 2.4.2. Thủ tục nhận thực. 42 2.4.3. Thuật toán COMP 128. 45 2.4.3.1. Mô tả thuật toán COMP 128. 45 2.4.3.2. Chức năng cơ bản của COMP 128. 46 2.4.3.2.1. Thuật toán Nén – Cấu trúc Butterfly. 47 2.4.3.2.2. Hoán vị48 2.4.3.2.3. Đầu ra của thuật toán COMP 128. 48 2.4.5. Tấn công COMP 128. 49 2.4.5.1. Narrow Pipe. 49 2.4.5.2. Phân vùng tấn công. 50 2.5. Thuật toán A5. 50 2.5.1. Giới thiệu. 50 2.5.2. Thủ tục mã hóa. 51 2.5.3. Thuật toán A5. 52 3.5.3.1. Cấu trúc thuật toán A5. 52 2.5.3.2. Mô tả thuật toán A5. 53 2.5.4. Tấn công thuật toán A5/1. 56 2.5.4.1. Hệ thống GSM Interceptor Pro. 58 2.6. Hạn chế của bảo mật trong mạng GSM . 58 2.6.1. Ưu điểm của GSM từ quan điểm UMTS. 58 2.6.2. Nhược điểm của GSM . 59 CHƯƠNG III : MỐI TƯƠNG QUAN GIỮA UMTS VÀ GSM 3.1. Giới thiệu về bảo mật trong mạng UMTS. 61 3.1.1. Đặc điểm bảo mật trong mạng UMTS. 61 3.1.1.1. Bảo mật truy nhập mạng. 62 3.1.1.2. Bảo mật lĩnh vực mạng. 63 3.1.1.3. Bảo mật miền người sử dụng. 63 3.1.1.4. Bảo mật miền ứng dụng. 63 3.1.1.5. Tính định hình và tính rõ ràng của bảo mật64 3.1.2. Cấu trúc bảo mật mạng UMTS. 64 3.2. Nhận thực trong UMTS. 65 3.2.1. Cơ chế nhận thực trong mạng UMTS. 65 3.2.2. Chứng thực dữ liệu từ HE đến SN66 3.2.3. Phát sinh vecto chứng thực AV67 3.2.3. Chứng thực và khóa thỏa thuận. 68 3.2.4. Cơ chế đồng bộ lại70 3.2.5. Thông báo chứng thực thất bại từ SGSN/VLR tới HLR71 3.3. Mã hóa trong UMTS. 71 3.3.1. Giới thiệu. 71 3.3.2. Phương thức mã hóa. 72 3.3.3. Các thông số đầu vào của thuật toán. 72 3.3.3.1. COUNT – C72 3.3.3.2. Ciphering key (CK). 73 3.3.4. Thuật toán nguyên ( Integrity Algorithms ). 74 3.3.5. Các thông số đầu vào. 75 3.3.5.1. COUNT – I75 3.3.5.2. Khóa nguyên (IK). 75 3.3.5.3. Fresh. 75 3.3.6.4. Bit định hướng Direction. 76 3.4. Mối tương quan của UMTS và GSM . 76 CHƯƠNG IV : MÔ PHỎNG THUẬT TOÁN A3, A8 VÀ A5 4.1. Chương trình mô phỏng thuật toán A3, A8. 77 4.2. Chương trình chạy mô phỏng thuật toán A51. 83 CHƯƠNG V : KẾT LUẬN

doc95 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3274 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu các phương pháp bảo mật trong hệ thống gsm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thuật toán này cũng yêu cầu từ 240 đến 245 bước. Các cuộc tấn công thường nhằm vào quá trình tạo ra chuỗi mã hóa “Cipher stream”. Để làm điều này các attacker cần phải biết được Kc và Fn được dùng với mỗi khung dữ liệu cụ thể. Giá trị của Fn có thể đạt được từ số khung Frame Number. Vì vậy vấn đề là làm sao lấy được Kc. Tuy nhiên, thay vì lấy trực tiếp Kc thì các attacker có thể lấy nội dung của các thanh ghi ngay sau giai đoạn Input Kc tức là thuật toán đạt trạng thái S64. Bởi vì giá trị cụ thể của Kc tương ứng với một giá trị nào đó ở trạng thái S64, do đó khi biết S64 ta có thể lấy được Kc. Attacker có thể chạy thuật toán từ trạng thái này để lấy Cipher stream. Sự khác nhau của các kiểu tấn công A5/1 biểu thị qua các thông số sau : Pre – computation complexity : chính là sự phức tạp của giai đoạn đầu ( chuẩn bị ) cho một cuộc tấn công. Known plaintext/ciphertext : số lượng cặp plaintext và ciphertext được yêu cầu bởi cuộc tấn công. Memory complexity : không gian lưu trữ dữ liệu cần thiết cho cuộc tấn công. Time complexity : thời gian cho cuộc tấn công. Sau đây là một số kiểu tấn công A5/1 điển hình và các thông số của chúng 2.5.4.1. Hệ thống GSM Interceptor Pro Đây là một loại thiết bị giám sát thoại trên hệ thống tế bào GSM. Hệ thống khá đơn giản, gồm một 1 anten thu sóng vô tuyến GSM, một hệ thống CPU xử lý thoại và một màn hình để cấu hình hệ thống, giám sát kết quả. Đặc điểm Hệ thống có thể giám sát mọi thuê bao trên đường truyền cô tuyến hoặc một thuê bao cụ thể nào đó Các cuộc đàm thoại được ghi nhận tức thời và dữ liệu được lưu trữ lại Hệ thống làm việc với các số nhận dạng thuê bao IMSI, TMSI, IMEI và MSISDN. 2.6. Hạn chế của bảo mật trong mạng GSM Hệ thống thông tin tế vào hiện nay có một số điểm yếu kém, điều đó đã được xem xét trong các yêu cầu về bảo mật cho mạng GSM. 2.6.1. Ưu điểm của GSM từ quan điểm UMTS Các khả năng thế hệ hai được đưa tới xác định các phần tử hệ thống dưới đây (các đoạn văn bản giải thích được lấy ra từ tài liệu hợp tác 3GPP): Nhận thực thuê bao: “Các vấn đề với các thuật toán không phù hợp sẽ được giải quyết. Những điều kiện chú ý đến sự lựa chọn nhận thực và mối quan hệ của nó với mật mã sẽ được thắt chặt và làm rõ ràng.” Độ tin cậy nhận dạng thuê bao sẽ được thực hiện trên giao diện vô tuyến. SIM (Subscriber Identity Module: Modul nhận dạng thuê bao) sẽ là modul an ninh phần cứng có thể lấy ra được riêng rẽ với máy cầm tay theo tính năng an ninh của nó (nghĩa là SIM là một thẻ thông minh). Các đặc điểm an ninh toolkit phần ứng dụng SIM cung cấp kênh tầng ứng dụng an toàn giữa SIM và server mạng nhà sẽ được tính đến. Hoạt động của các đặc điểm an ninh hệ thống sẽ độc lập với người sử dụng (nghĩa là người sử dụng không phải làm bất cứ điều gì để kích hoạt các đặc tính an ninh). Yêu cầu cho mạng nhà tin cậy các mạng phục vụ để thực hiện một mức tính năng an ninh sẽ được tối thiểu hóa. 2.6.2. Nhược điểm của GSM Một danh sách những khiếm khuyết trong các giao thức an ninh thế hệ thứ hai mà UMTS phải quan tâm cũng là hữu dụng. Những vấn đề đó như sau: Các cuộc tấn công chủ động trong đó trạm gốc bị giả mạo là có khả năng xảy ra (thiếu nhận thực mạng đối với máy cầm tay di động). Khoá phiên và dữ liệu nhận thực trong khi được che đậy trong các tuyến vô tuyến lại được truyền một cách rõ ràng giữa các mạng. Mật mã không mở rộng đủ phức tạp đối với lõi mạng, dẫn đến việc truyền các văn bản rõ ràng của người sử dụng và các thông tin báo hiệu qua các tuyến vi ba. Thiếu chính sách mật mã và nhận thực đồng nhất qua các mạng nhà cung cấp dịch vụ tạo cơ hội cho việc xâm nhập. Cơ chế toàn vẹn dữ liệu cũng đang thiếu. Các cơ chế như thế ngoài việc tăng độ tin cậy còn cung cấp việc bảo vệ chống lại sự mạo nhận trạm gốc. IMEI (International Mobile Equipment Identifier: Bộ nhận dạng thiết bị di động quốc tế) là một sự nhận dạng không an toàn. Sự gian lận và “sự can thiệp hợp pháp” (bị nghe trộm bởi các chính quyền thực thi luật) được xử lý như là một sự giải quyết đến sau hơn là trong pha thiết kế GSM ban đầu. Có một thiết sót về kiến thức mạng nhà và điều khiển mà mạng phục vụ sử dụng các tham số nhận thực cho các thuê bao mạng nhà chuyển vùng trong vùng phục vụ của mạng phục vụ. Độ mềm dẻo nhằm cập nhật và bổ xung các tính năng bảo mật theo thời gian để duy trì tính phổ biến các giao thức an ninh hệ thống là không cần thiết. CHƯƠNG III : MỐI TƯƠNG QUAN GIỮA UMTS VÀ GSM 3.1. Giới thiệu về bảo mật trong mạng UMTS UMTS là hệ thống thông tin di động toàn cầu, là một trong những hệ thống thông tin tế bào thế hệ thứ 3 gọi là mạng 3G. Nó được xây dựng bên trong cấu trúc khung chung được định nghĩa bởi ITU vào năm 1998. Công nghệ GSM đựơc xem là ra đời trước UMTS và tất nhiên nó là công nghệ được sử dụng phổ biến nhất hiện nay, với khoảng 650 triệu thuê bao trên toàn thế giới. Việc xây dựng vấn đề bảo mật trong mạng UMTS được thực hiện dựa trên cơ sở các đặc điểm của mạng GSM. Kế thừa các đặc điểm bảo mật tử GSM là cần thiết và thiết thực,đảm bảo sự tương thích với GSM để dễ dàng kết hợp với nhau và chuyển giao. Bảo mật trong mạng UMTS có một số điểm mới hơn so với GSM là có thêm một số dịch vụ mới, thay đổi địa chỉ trong cấu trúc mạng..vv.. Những đặc điểm bảo mật UMTS kế thừa và phát triển từ GSM : Chứng thực người sử dụng tới mạng Mã hóa dữ liệu người sử dụng và báo hiệu trên liên kết vô tuyến : một thuật toán mới được thiết kê mở và công khai, mã hóa đầu cuối tại bộ điều khiển mạng vô tuyến RNC, chiều dài của khóa là 128 bit, sử dụng nhận dạng trên liên kết truy nhập vô tuyến có cơ chế giống GSM Một số đặc điểm mới trong UMTS Mở rộng cơ chế chứng thực người sử dụng Nâng cao bảo mật chống lại việc giả trạm gốc bằng cách cho phép di động chứng thực mạng. Bảo vệ nguyên vẹn tín hiệu giữa di động và bộ điều khiển mạng vô tuyến RNC. Cung cấp bảo mật nâng cao chống lại làm giả trạm gốc bằng cách cho phép di động kiểm tra chứng thực của bản tin báo hiệu. 3.1.1. Đặc điểm bảo mật trong mạng UMTS Một yêu cầu cao đối với việc thiết kế cấu trúc an ninh cho UMTS là tạo ra một hệ thống co sở mà hệ thống này có thể mở rộng được sau này. Một phương pháp tiếp cận là tạo ra một bộ các lớp cùng với sự thiết kế hệ thống và các mục đích thực hiện đối với những lớp này. Trong bảo mật mạng UMTS chia thành 5 nhóm đặc điểm bảo mật như sau Bảo mật truy nhập mạng : thiết lập các đặc điểm bảo mật cung cấp cho người sử dụng có thể truy nhập được vào mạng 3G và tránh các cuộc tấn công trên liên kết truy nhập vô tuyến. Bảo mật miền mạng : thiết lập các đặc điểm bảo mật cho phép các node trong cơ sở hạ tầng mạng của nhà cung cấp trao đổi dữ liệu với sự đảm bảo an ninh và bảo vệ chống lại sự xâm nhập trái phép cơ sở hạ tầng mạng hữu tuyến. Bảo mật người sử dụng : thiết lập các đặc điểm bảo mật đảm bảo truy nhập tới trạm di động. Bảo mật miền ứng dụng : cho phép trao đổi các bản tin trong lớp ứng dụng giữa người sử dụng và hệ thống các nhà cung cấp dịch vụ. Tính cấu hình và tính rõ rãng của bảo mật : Tập các tính năng qua đó người sử dụng hệ thống có thể biết các đặc điểm an ninh nào đang hoạt động và điều khiển các dịch vụ nào đang được sử dụng đưa ra một tập nhất định các dịch vụ an ninh 3.1.1.1. Bảo mật truy nhập mạng Những đặc trưng an ninh cung cấp cho người sử dụng di động , sự truy nhập an toàn tới cơ sở hạ tầng UMTS và việc bảo vệ người sử dụng khỏi sự tấn công vào liên kết vô tuyến không dây tới mặt đất. Các thành phần bao gồm : Bí mật nhận dạng người dùng : thông tin nhận dạng thường xuyên khác liên hệ với người sử dụng không bị tiết lộ cho kẻ nghe lén Nhận thực chung : cả thiết bị đầu cuối di động và BS của mạng dich vụ được nhận thực với nhau, điều này đã ngăn chặn được kẻ giả dạng tấn công vào cả hai bên trong phiên truyền thông. Tính tin cậy của số liệu người sử dụng và số liệu báo hiệu : cả nội dung của phiên truyền thông của thuê bao và thông tin báo hiệu liên kết được bảo vệ trong việc truyền qua liên kết không dây. Toàn vẹn số liệu và nhận thực khởi đầu : thực thể nhận trong một phiên truyền có thể xác minh rằng bản tin đã nhận không thay đổi trong khi truyền và bản tin đó xuất phát từ bên yêu cầu. 3.1.1.2. Bảo mật lĩnh vực mạng Tập hợp các đặc điểm bảo mật cho phép các node trong cơ sở hạ tầng của nhà cung cấp trao đổi các dữ liệu với sự đảm bảo an ninh và bảo vệ chống lại sự xâm nhập trái phép cơ sở hạ tầng mạng hữu tuyến. Nhận thực phần tử mạng : khả năg của các thành phần cơ sở mạng bao gồm các khả năg thuộc về các nhà cung cấp dịch vụ khác nhau nhận thực nhau và dữ liệu đựoc trao đổi Tính tin cậy của dữ liệu được trao đổi : việc bảo mật dữ liệu trao đổi giữa các phần tử mạng khỏi các cuộc nghe lén. Toàn vẹn dữ liệu và nhận thực ban đầu : điều này song song với khía cạnh toàn vẹn dữ liệu và nhận thực ban đầu của bảo mật truy nhập mạng nhưng áp dụng đối với mối quan hệ giữa các phần tử mạng. Khi một phần tử này truyền dữ lỉệu đến phần tử khác, node nhận có thể xác nhận rằng dữ liệu không bị thay đổi khi truyền. 3.1.1.3. Bảo mật miền người sử dụng Tập các đặc điểm bảo mật gắn vào sự tương tác giữa một người sử dụng và máy cầm tay UMTS của họ. Một mục tiêu quan trọng trong miền này là tối thiểu thiệt hại và gian lận có thể xảy ra khi một máy cầm tay bị đánh cắp. Nhận thực User đến USIM : nhận thực trong miền con này gắn với mối quan hệ giữa một thuê bao riêng và thẻ thông minh SIM trong máy cầm tay UMTS của họ. Để giới hạn sự hoạt động đối với chủ sở hữu hoặc một nhóm cá nhân có quyền, người sử dụng có thể cần cung cấp PIN để khởi tạo một phiên truyền thông. Đoạn nối USIM – Terminal : vì thẻ thông minh trợ giúp USIM có thể di chuyển được nên cũng cần thiết để bảo vệ an toàn mối quan hệ giữa USIM và máy cầm tay UMTS. Đoại nối USIM – Terminal ngăn ngừa thẻ USIM của người sử dụng không bị chèn vào trong máy cầm tay khác và bị sử dụng khi không có quyền. 3.1.1.4. Bảo mật miền ứng dụng Trong kiến trúc UMTS, việc cung cấp được thực hiện cho các nhà vận hành mạng hoặc nhà cung cấp dich vụ khác tạo ra các ứng dụng nằm trong USIM hoặc trong tổ hợp. Nhắn tin an toàn : nhắn tin an toàn sẽ cung cấp một kênh an toàn cho việc truyền các bản tin giữa USIM và server mạng. Tính tin cậy lưu lượng người sử dụng trên toàn mạng : việc bảo mật các bản tin khỏi các cuộc nghe lén ( điển hình là thông qua mật mã ) trên các đoạn mạng hữu tuyến cũng như vô tuyến của toàn bộ kiến trúc hạ tầng mạng. 3.1.1.5. Tính định hình và tính rõ ràng của bảo mật Tính rõ ràng : người sử dụng hệ thống các cơ chế được cung cấp bởi cơ sở hạ tầng UMTS có thể xác định được đặc điểm bảo mật nào đang hoạt động tại bất kỳ thời điểm nào theo thời gian và mức độ an ninh là gì. Tính định hình : người sử dụng thông qua cơ chế được cung cấp bởi cơ sở hạ tầng UMTS có thể yêu cầu tập các dich vụ bảo mật nào phải hoạt động trước khi người sử dụng dịch vụ nhất định. Chẳng hạn, logic này có thể áp dụng cho Enable và Disable việc sử dụng mã PIN cá nhân với USIM trong máy cầm tay của ai đó hoặc áp dụng cho việc chấp nhận cuộc gọi đến mà không được mật mã. Chia toàn bộ lĩnh vực bảo mật thành các miền theo kiểu này có một ưu điểm là : thứ nhất nó sẽ chia nhỏ toàn bộ không gian vấn đề thành các miền con rời rạc. Ngoài ra, bằng việc tạo ra các modul an ninh với các giao diện được biết rõ để có thể cập nhật hoặc thay thế các thành phần của kiến trúc bảo mật mà không phải làm lại toàn bộ việc kinh doanh. 3.1.2. Cấu trúc bảo mật mạng UMTS Hình 3.1. Cấu trúc các miền bảo mật trong mạng UMTS ( I ) Network access security NAS : bảo mật lĩnh vực truy nhập mạng ( II ) Network domain security NDS : bảo mật miền mạng ( III ) User domain security UDS : bảo mật miền người sử dụng ( IV ) Application domain security ADS : bảo mật miền ứng dụng 3.2. Nhận thực trong UMTS Cơ chế nhận thực ở đây thực hiện việc nhận thực chung cho người sử dụng và mạng thông qua một khóa bí mật Ki được lưu giữ trong USIM và trung tâm nhận thực AuC trong môi trường thường trú của người sử dụng. Thêm nữa, USIM và HE sẽ theo dõi bộ đếm SQNMS và SQNHE để hỗ trợ cho quá trình nhận thực. Phương thức được chọn để đạt được sự thích nghi lớn nhất với cấu trúc bảo mật mạng GSM và thuận tiện cho việc di chuyển từ GSM đến UMTS. Phương thức này bao gồm giao thức challenges / response giống với nhận thực và tạo key trong GSM. 3.2.1. Cơ chế nhận thực trong mạng UMTS Hình 3.2. Cơ chế nhận thực và tạo khóa phiên trong UMTS Node phục vụ (SN: Serving Node): Bộ ghi định vị tạm trú VLR (Visitor Location Register) gửi yêu cầu dữ liệu nhận thực đến môi trường thường trú (HE) mà hỗ trợ bộ ghi định vị thường trú (HLR) và trung tâm nhận thực (AuC). Môi trường thường trú gửi một mảng các véctơ nhận thực (AV) tới SN. Mỗi véctơ như thế có thể được sử dụng để thực hiện thoả thuận khoá phiên và nhận thực giữa SN và USIM trong trạm di động. Mỗi AV (tương ứng với bộ ba của GSM) bao gồm: (1) một số ngẫu nhiên challenge RAND; (2) một response mong muốn XRES; (3) một khoá phiên mật mã CK; (4) một khoá toàn vẹn dữ liệu IK; và (5) một thẻ nhận thực AUTN bao gồm : một chuỗi số SQN được XOR với khóa “nặc danh” AK; một trường quản lý nhận thực và khóa; một mã chứng thực bản tin MAC. Mạng phục vụ gửi challenge ngẫu nhiên RAND và thẻ nhận thực AUTN tới trạm di động qua đoạn nối vô tuyến. USIM trong trạm di động xác nhận rằng AUTN là có thể chấp nhận được. Khi đó trạm di động tạo một RES truyền trở lại SN. USIM tính toán khóa mật mã CK và khóa toàn vẹn IK riêng của nó bằng cách sử dụng RAND, số chuỗi (được nhúng trong AUTN) và khoá bí mật của nó. Mạng phục vụ so sánh RES mà nó đã nhận được từ trạm di động với XRES. Nếu hai giá trị trùng nhau thì trạm di động được nhận thực. USIM và SN truyền CK tới các thành phần của hệ thống chịu trách nhiệm về mật mã dữ liệu được truyền, và IK tới các thành phần của hệ thống chịu trách nhiệm về kiểm tra tính toàn vẹn dữ liệu. 3.2.2. Chứng thực dữ liệu từ HE đến SN Mục đích của việc chứng thực này là cung cấp cho SN các chuỗi vecto chứng thực mới từ môi trường thường trú HE của người sử dụng để thực hiện một số chứng thực người sử dụng. Hình 3.3. Quá trình chứng thực dữ liệu giữa SN và HE SN/VLR yêu cầu thủ tục bằng cách gửi vecto chứng thực đến HE/AuC. Yêu cầu dữ liệu chứng thực sẽ bao gồm một số nhận dạng người dùng và thông số MODE. Thông số MODE cho biết node yêu cầu là node PS hay là node CS. Nếu người sử dụng biết SN/VLR bằng IMUI thì yêu cầu dữ liệu chứng thực sẽ bao gồm IMUI. Nếu người sử dụng được nhận biết bằng một mã hóa thông số nhận dạng thì bản tin HLR sẽ thay thế cho IMUI. Trong trường hợp này,thủ tục này và thủ tục yêu cầu nhận dạng người dùng đến HLR được kết hợp với nhau. Khi HE nhận được yêu cầu dữ liệu chứng thực từ SN/VLR, HE có thể tính toán trước số yêu cầu của vecto chứng thực và lấy chúng từ cơ sở dữ liệu của HLR. HE/AuC gửi trả lời chứng thực trở lại SN/VLR, nó bao gồm một mảng n vecto chứng thực AV (1..n). 3.2.3. Phát sinh vecto chứng thực AV Hình 3.4. Quá trình phát sinh vecto AV HE/AuC bắt đầu với việc phát ra một chuỗi số SQN và chuỗi ngẫu nhiên RAND. Đối với mỗi người sử dụng, HE/AuC theo dõi 2 bộ đếm : SQNHE/CS cho việc chứng thực bắt đầu từ CS CN node và SQNHE/PS cho chứng thực bắt đầu bởi node PS CN. Để tạo ra một chuỗi số, bộ đếm của chế độ thích hợp được tăng lên và sau đó SQN thiết lặp tới một giá trị mới. Những giá trị được tính toán như sau : Mã chứng thực bản tin : MAC = f1k (SQN || RAND || MODE || Ki). Ở đây, f1 có chức năng chứng thực bản tin XRES = f2k (RAND || Ki). Ở đây, f2 có chức năng chứng thực bản tin Khóa mật mã : CK = f3k ( RAND || Ki). Ở đây, f3 có chức năng phát sinh khóa Khóa toàn vẹn dữ liệu : IK = f4k (RAND || Ki). Ở đây, f4 có chức năng phát sinh khóa Khóa nặc danh : AK = f5k (RAND || Ki). Ở đây, f5 có chức năng phát sinh khóa Cuối cùng thẻ chứng thực được tạo: AUTN = (SQN XOR AK) || MODE || MAC 3.2.3. Chứng thực và khóa thỏa thuận Mục đích của thủ tục này là để chứng thực người sử dụng và thu được một cặp khóa mới là khóa mật mã và khóa toàn vẹn dữ liệu giữa SN/VLR và MS. Trong suốt quá trình chứng thực, người sử dụng kiểm tra độ tươi của vecto chứng thực đó để sử dụng. Hình 3.5. Quá trình chứng thực và thiết lập khóa SN/VLR yêu cầu thủ tục bằng cách chọn tiếp một vecto chứng thực không sử dụng từ chuỗi vecto chứng thực trong cơ sở dữ liệu của VLR. SN/VLR gửi đến người sử dụng RAND và một thẻ chứng thực cho việc chứng thực mạng AUTN. Quá trình xử lý trên USIM như sau: Hình 3.6. Quá trình chứng thực người sử dụng trên USIM Theo như hình trên, đầu tiên USIM tính ra khóa nặc danh AK = f5 (RAND || Ki) sau đó là chuỗi số SQN = (SQN xor AK) xor AK Tiếp đó, USIM tính toán XMAC = f1k ( SQN || RAND || MODE || Ki ) và so sánh với MAC có trong AUTN. Nếu chúng khác nhau, người sử dụng gửi bản tin từ chối chứng thực tới VLR/SGSN. Trong trường hợp này VLR/SGSN sẽ khởi tạo một thông báo chứng thực thất bại tới HLR. VLR/SGSN có thể quyết định bắt đầu một thủ tục nhận dạng và chứng thực người sử dụng mới Tiếp đó, USIM kiểm tra chuỗi số SQN nhận được xem có đúng trong phạm vi không. Nếu USIM thấy chuỗi số không đúng phạm vi, nó sẽ gửi bản tin báo đồng bộ thất bại tới VLR/SGSN bao gồm một thông số thích hợp và từ chối thủ tục. Bản tin đồng bộ thất bại bao gồm thông số AUTS = Cons (SQNMS) || MAC – S. Trong đó, Cons(SQNMS) = SQNMS xor f5*k(RAND) là giá trị ẩn của bộ đếm SQNMS và MAC-S = f1*k(SQNMS || RAND || AMF) ở đây RAND là một giá trị ngẫu nhiên đuợc nhận trong bản tin yêu cầu chứng thực nguời sử dụng.. f1* là một hàm mã hóa chứng thực bản tin (MAC) với các thuộc tính có thể được tính từ giá trị hàm của f1* khaỏng của f1…f5, f5*. f5* là hàm phát sinh key thường sủ dụng để tính toán AK trong thủ tục đồng bộ lại với thuộc tính có thể được tính từ giá trị hàm f5* khoảng f1,f1*,f2 và f5. 3.2.4. Cơ chế đồng bộ lại Hình 3.7. Cơ chế đồng bộ lại Sau khi nhận được bản tin đồng bộ thất bại từ người sử dụng, VLR/SGSN sẽ gửi bản tin yêu cầu dữ liệu chứng thực với chỉ số đồng bộ thất bại tới HE cùng vói các thông số RAND gửi tới MS trong bản tin yêu cầu dữ liệu chứng thực AUTS được nhận bởi VLR/SGSN. VLR/SGSN sẽ không gửi bản tin yêu cầu dữ liệu chứng thực mới tới HLR/AuC cho đến khi nhận được trả lời từ HE/AuC. Khi nhận được bản tin yêu cầu dữ liệu chứng thực với chỉ số đồng bộ thất bại thì HE sẽ hoạt động như sau HE/AuC lấy SQNMS từ Cons(SQNMS) bằng cách tính Cons(SQNMS) xor f5*k(RAND). HE kiểm tra SQNHE xem có nằm trong phạm vi hay không Nếu SQNHE nằm trong phạm vi thì nó tiếp tục với bước 6 còn khác thì nó bắt đầu với bước 4 HE/AuC kiểm tra AUTS Nếu việc kiểm tra thành công, HE/AuC thiết lập lại giá trị của bộ đếm SQNHE đến SQNMS. HE/AuC gửi bản tin trả lời dữ liệu chứng thực với một vecto chứng thực mới tới VLR/SGSN. Nếu bộ đếm SQNHE không được thiết lập lại, những vecto chứng thực có thể được lấy từ bộ nhớ hoặc được tạo mới sau khi thiết lập lại SQNHE. Khi VLR/SGSN nhận được một vecto chứng thực mới từ HE/AuC trong bản tin trả lời dữ liệu chứng thực, nó sẽ xóa bản tin cũ cho người sử dụng trong VLR/SGSN. 3.2.5. Thông báo chứng thực thất bại từ SGSN/VLR tới HLR Mục đích của thủ tục này là cung cấp một cơ chế cho việc thông báo chứng thực thất bại từ môi trường dịch vụ tới môi trường thường trú. Hình 3.8. Thông báo chứng thực thất bại Thủ tục này được yêu cầu bởi VLR/SGSN khi thủ tục chứng thực thất bại. Thông báo chứng thực thất bại bao gồm có : số nhận dạng thuê bao, loại truy nhập, địa chỉ VLR/SGSN, RAND. 3.3. Mã hóa trong UMTS 3.3.1. Giới thiệu Dữ liệu nguời sử dụng và một vài thông tin báo hiệu có thể bị hư hỏng nên cần phải được bảo vệ. Chế độ bảo vệ cho việc truyền tin được đặt trên kênh giữa ME và RNC. Chức năng bảo mật được thực hiện ở trên lớp con RLC hoặc là lớp con MAC : Nếu kênh mang vô tuyến sử dụng chế độ RLC không trong suốt (AM hoặc UM), quá trình mã hóa được thực hiện trên lớp con RLC Nếu kênh mang vô tuyến sử dụng chế độ RLS trong suốt, quá trình mã hóa được thực hiện trên lớp con MAC. Mã hóa được thực hiện trong S – RNC và ME, các thông số cần cho việc mật mã là CK, HFN… 3.3.2. Phương thức mã hóa Hình 3.9. Dữ liệu người sử dụng và báo hiệu được mã hóa trên liên kết truy nhập vô tuyến. Hình trên mô tả cách sử dụng thuật toán f8 để mã hóa plaintext bằng cách đặt một Keystream sử dụng một bit/bit nhị phân cộng với plaintext. Plaintext có thể được khôi phục bằng cách phát sinh cùng một Keystream sử dụng cùng thông số đầu vào và đặt một bit/bit nhị phân vào Cipheringtext. Các thông số đầu vào của thuật toán là khóa mật mã CK, COUNT – C, BEARER, định hướng truyền DIRECTION và chiều dài của Keystream yêu cầu LENGTH. Trên cơ sở các thông số đầu vào đó, thuật toán phát sinh ra khối Keystream đầu ra (Keystream Block) để mã hóa khối Plaintext (Plaintext Block) để được đầu ra là khối Cipheringtext (Ciphering Block ). Thông số đầu vào LENGTH sẽ quyết định đến chiều dài của Keystream Block. 3.3.3. Các thông số đầu vào của thuật toán 3.3.3.1. COUNT – C Chuỗi số COUNT – C dài 32 bit. Có một giá trị COUNT – C trên đường lên sóng mang vô tuyến và một COUNT – C trên đuờng xuống sóng mang vô tuyến. Đối với tất cả chế độ RLC trong suốt, sóng mang của cùng miền CN COUNT – C là giống nhau và vì thế COUNT – C của đường lên và xuống cũng giống nhau. COUNT – C được tạo bởi 2 phần : một chuỗi số ngắn và một chuỗi số dài. Chuỗi số ngắn có dạng các bit ít quan trọng của COUNT – C trong khi chuỗi số dài chứa các bit quan trọng nhất của COUNT – C. Hình 3.10. Cấu trúc của COUNT – C ở tất cả các chế độ Đối với chế độ RLC TM trên DHC, chuỗi số ngắn có 8 bit kết nối số khung CFN của COUNT – C. Chuỗi số dài có 24 bit MAC – d HFN và nó được tăng lên sau mỗi vòng CFN. Đối với chế độ RLC UM, chuỗi số ngắn có 7 bit RLC SN và đây là một phần của phần đầu RLC UM PDU. Chuỗi số dài có 225 bit RLC UM HFN và nó tăng lên sau mỗi vòng RLC SN Đối với chế độ RLC AM, bản tin ngắn có 12 bit RLC SN và đây là phần của phần đầu RLC AM PDU. Chuỗi số dài có 20 bit RLC AM HFN và nó tăng lên sau mỗi vòng RLC SN. Số siêu khung HFN được bắt đầu bởi thông số Start. ME và RNC bắt đầu với 20 bit quan trọng của RLC AM HFN, RLC UM HFN và MAC – d HFN để Start. Các bit còn lại của RLC AM HFN, RLC UM HFN và MAC – d HFN bắt đầu với 0. Khi một sóng mang vô tuyến mới được tạo ra trong suốt một kết nối RRC trong chế độ mã hóa, HFN được bắt đầu bới giá trị Start hiện tại. 3.3.3.2. Ciphering key (CK) Khóa mật mã CK có chiều dài 128 bit. Có thể có một CK cho kết nối CS giữa miền phục vụ CS và người sử dụng, một CK cho kết nối PS giữa miền phục vụ PS và người sử dụng. CK được lưu trữ trên USIM và một bản copy được lưu trữ trong ME. CK gửi từ USIM tới ME trên yêu cầu của ME. USIM sẽ gửi CK dưới vai trò là một giá trị CK có sẵn. ME sẽ bắt đầu một thủ tục nhận thực mới nếu giá trị hiện tại của StartCS hoặc StartPS trong USIM đạt tới ngưỡng Threshold. ME sẽ xóa CK từ bộ nhớ sau khi tắt nguồn hay là tháo bỏ USIM. CK gửi từ HLR/AuC tới VLR/SGSN và được lưu trữ tại VLR/SGSN như một phần của bộ năm (quintet). Lúc chuyển vùng, CK được truyền bên trong các thành phần mạng từ RNC cũ tới RNC mới. Khóa mật mã CK còn lại không thay đổi. Thông số Bearer có chiều dài là 5bit. Có một thông số Bearer trên sóng mang vô tuyến kết hợp với cùng một người sử dụng và đa thành phần trên một khung đơn 10ms Thông số Direction có chiều dài là 1 bit. Giá trị của Direction là 0 cho các bản tin từ UE đến RNC và 1 cho các bản tin từ RNC đến UE Thông số Length có chiều dài 16 bit. Length xác định chiều dài của khối Keystream và nó chỉ ảnh hưởng tới chiều dài của khối này không ảnh hưởng tới các bit bên trong nó. Nhận dạng UEA được chỉ định 4 bit nhận dạng và nó được định nghĩa như sau : 0000 : UEA0, không mã hóa 0001 : UEA1, mã hóa Kasumi Các giá trị còn lại không được định nghĩa. 3.3.4. Thuật toán nguyên ( Integrity Algorithms ) Hình sau mô tả cách sử dụng thuật toán f9 để chứng thực tính toàn vẹn của dữ liệu Hình 3.11. Nguồn gốc của MAC-I (XMAC – I) Các thông số đầu vào của thuật toán là IK,COUNT – I, FRESH, DIRECTION, MESSAGE. Trên cơ sở các thông số đầu vào, người sử dụng tính toán mã chứng thựuc bản tin cho dữ liệu nguyên thủy MAC – I sử dụng thuật toán f9. MAC – I sau đó được gắn vào bản tin khi gửi đi trên liên kết truy nhập vô tuyến. Phía bên nhận sẽ tính toán XMAC – I với quá trình tương tự như bên gửi và kiểm tra tính toàn vẹn của dữ liệu bằng cách so sánh nó với MAC – I nhận được. 3.3.5. Các thông số đầu vào 3.3.5.1. COUNT – I Có chiều dài 32 bit. Đối với tín hiệu sóng mang vô tuyến (RB 0-4) có một giá trị COUNT – I cho tín hiệu sóng mang đường lên và một giá trị cho tín hiệu sóng mang đường xuống. COUNT – I bao gồm có 2 phần : một chuỗi số ngắn và một chuỗi số dài. Chuỗi số ngắn có dạng các bit ít quan trọng của COUNT – I trong khi đó chuỗi số dài có dạng các bit quan trọng nhất của COUNT – I. Chuỗi số ngắn có 4 bit RRC số chuỗi SN (RRC SN)và nó có sẵn trong mỗi RRC PDU. Chuỗi số dài có 28 bit RRC số siêu khung (RRC HFN) và nó được tăng lên sau mỗi vòng RRC HFN. Hình 3.12. Cấu trúc của COUNT – I 3.3.5.2. Khóa nguyên (IK) Khóa nguyên có chiều dài 128 bit. Có thể có một IK cho kết nối CS giữa miền phục vụ CS và người sử dụngvà một IK cho kết nối PS giữa miền phục vụ PS và người sử dụng. IK được lưu trữ trên USIM và một bản copy được lưu trữ trong ME. IK gửi từ USIM tới ME trên yêu cầu của ME. USIM sẽ gửi IK dưới vai trò là một giá trị IK có sẵn. ME sẽ bắt đầu một thủ tục nhận thực mới nếu giá trị hiện tại của StartCS hoặc StartPS trong USIM đạt tới ngưỡng Threshold. ME sẽ xóa IK từ bộ nhớ sau khi tắt nguồn hay là tháo bỏ USIM. Ck gửi từ HLR/AuC tới VLR/SGSN và đựoc lưu trữ tại VLR/SGSN như một phần của bộ năm (quintet). Lúc chuyển vùng, IK được truyền bên trong các thành phần mạng từ RNC cũ tới RNC mới. Khóa mật mã IK còn lại không thay đổi. 3.3.5.3. Fresh Fresh là một thông số có chiều dài 32 bit. Có một Fresh cho mỗi gười sử dụng. Thông số Fresh bảo vệ mạng chống lặp lại của bản tin báo hiệu bởi người sử dụng. Một kết nối được thiết lập, RNC phát ra một số ngẫu nhiên Fresh và gửi nó đến người sử dụng trong chế độ bảo mật RRC. Giá trị của Fresh sau đó được sử dụng bởi cả mạng lẫn người sử dụng thông qua một kết nối đơn. 3.3.6.4. Bit định hướng Direction Nhận dạng định hướng Direction có chiều dài 1 bit. Bit này có nhiệm vụ là tránh cho thuật toán nguyên sử dụng để tính mã chứng thực bản tin muốn sử dụng một nhận dạng thiết lập của giá trị thông số đầu vào cho đường lên bản tin và đường xuống bản tin. Nhận dạng UIA Mỗi thuật toán nguyên UMTS (UIA) sẽ được nhận dạng bởi 4 bit và nó được định nghĩa như sau 0001 : UIA1, thuật toán Kasumi Các giá trị còn lại không được định nghĩa 3.4. Mối tương quan của UMTS và GSM UMTS được xây dựng dựa trên cơ sở mạng GSM. Nó kế thừa các đặc điểm bảo mật của mạng GSM, điều đó thực sự cần thiết và thiết thực. Mạng UMTS còn đảm bảo tính tương thích với mạng GSM trong việc liên kết làm việc và chuyển giao. Ngoài việc kế thừa và phát huy những đặc điểm bảo mật của GSM thì UMTS còn có thêm một số đặc điểm bảo mật mới. Những đặc điểm đó là Sẽ có những nhà cung cấp dịch vụ mới và khác nhau ngoài các nhà cung cấp các dịch vụ viễn thông vô tuyến. Sẽ bao gồm các nhà cung cấp nội dung và các nhà cung cấp dịch vụ số liệu. Các hệ thống di động sẽ được định vị như một phương tiện truyền thông yêu thích cho người dùng – ưa chuộng hơn các hệ thống đường dây cố định. Sẽ có nhiều dịch vụ trả trước và pay-as-you-go. Việc thuê bao dài hạn giữa người sử dụng và người vận hành mạng có thể không phải là một mô hình quen thuộc. Người sử dụng sẽ có quyền điều khiển nhiều hơn đối với các profile dịch vụ của họ và đối với các khả năng đầu cuối của họ. Sẽ có các cuộc tấn công chủ động vào người sử dụng; Các dịch vụ phi thoại sẽ quan trọng như các dịch vụ thoại hoặc quan trọng hơn. Các máy cầm tay di động sẽ được sử dụng như một nền tảng cho thương mại điện tử. Nhiều thẻ thông minh đa ứng dụng sẽ được sử dụng để trợ giúp nền tảng này. CHƯƠNG IV : MÔ PHỎNG THUẬT TOÁN A3, A8 VÀ A5 Chương trình mô tả việc thực hiện của thuật toán A3,A8. Bản quyền thuộc về Marc Briceno, Ian Goldberg, and David Wagner năm 1998. Phần nguồn mã này được viết bằng ngôn ngữ C 4.1. Chương trình mô phỏng thuật toán A3, A8 typedef unsigned char Byte; #include #include #include #include #include #include /* #define TEST */ /* * rand[0..15]: chuỗi RAND truy vấn từ trạm gốc * key[0..15]: độ dài khóa Ki của thuật toán A3/A8 trong SIM * simoutput[0..11]: cái bạn đưa trở lại nếu bạn nhận RAND và khóa tới một SIM thực SIM. * Trạng thái đầu simoutput[0..3] là SRES, * và simoutput[4..11] là Kc (the A5 session key). * Chú ý rằng Kc là bít thứ 74…127 của đầu ra thuật toán COMP 128 thêm vào bởi 10 bit 0 * Marc Briceno , Ian Goldberg , and David Wagner */ void A3A8(/* in */ Byte rand[16], /* in */ Byte key[16], /* out */ Byte simoutput[12]); /* The compression tables. */ static const Byte table_0[512] = { 102,177,186,162, 2,156,112, 75, 55, 25, 8, 12,251,193,246,188, 109,213,151, 53, 42, 79,191,115,233,242,164,223,209,148,108,161, 252, 37,244, 47, 64,211, 6,237,185,160,139,113, 76,138, 59, 70, 67, 26, 13,157, 63,179,221, 30,214, 36,166, 69,152,124,207,116, 247,194, 41, 84, 71, 1, 49, 14, 95, 35,169, 21, 96, 78,215,225, 182,243, 28, 92,201,118, 4, 74,248,128, 17, 11,146,132,245, 48, 149, 90,120, 39, 87,230,106,232,175, 19,126,190,202,141,137,176, 250, 27,101, 40,219,227, 58, 20, 51,178, 98,216,140, 22, 32,121, 61,103,203, 72, 29,110, 85,212,180,204,150,183, 15, 66,172,196, 56,197,158, 0,100, 45,153, 7,144,222,163,167, 60,135,210,231, 174,165, 38,249,224, 34,220,229,217,208,241, 68,206,189,125,255, 239, 54,168, 89,123,122, 73,145,117,234,143, 99,129,200,192, 82, 104,170,136,235, 93, 81,205,173,236, 94,105, 52, 46,228,198, 5, 57,254, 97,155,142,133,199,171,187, 50, 65,181,127,107,147,226, 184,218,131, 33, 77, 86, 31, 44, 88, 62,238, 18, 24, 43,154, 23, 80,159,134,111, 9,114, 3, 91, 16,130, 83, 10,195,240,253,119, 177,102,162,186,156, 2, 75,112, 25, 55, 12, 8,193,251,188,246, 213,109, 53,151, 79, 42,115,191,242,233,223,164,148,209,161,108, 37,252, 47,244,211, 64,237, 6,160,185,113,139,138, 76, 70, 59, 26, 67,157, 13,179, 63, 30,221, 36,214, 69,166,124,152,116,207, 194,247, 84, 41, 1, 71, 14, 49, 35, 95, 21,169, 78, 96,225,215, 243,182, 92, 28,118,201, 74, 4,128,248, 11, 17,132,146, 48,245, 90,149, 39,120,230, 87,232,106, 19,175,190,126,141,202,176,137, 27,250, 40,101,227,219, 20, 58,178, 51,216, 98, 22,140,121, 32, 103, 61, 72,203,110, 29,212, 85,204,180,183,150, 66, 15,196,172, 197, 56, 0,158, 45,100, 7,153,222,144,167,163,135, 60,231,210, 165,174,249, 38, 34,224,229,220,208,217, 68,241,189,206,255,125, 54,239, 89,168,122,123,145, 73,234,117, 99,143,200,129, 82,192, 170,104,235,136, 81, 93,173,205, 94,236, 52,105,228, 46, 5,198, 254, 57,155, 97,133,142,171,199, 50,187,181, 65,107,127,226,147, 218,184, 33,131, 86, 77, 44, 31, 62, 88, 18,238, 43, 24, 23,154, 159, 80,111,134,114, 9, 91, 3,130, 16, 10, 83,240,195,119,253 }, table_1[256] = { 19, 11, 80,114, 43, 1, 69, 94, 39, 18,127,117, 97, 3, 85, 43, 27,124, 70, 83, 47, 71, 63, 10, 47, 89, 79, 4, 14, 59, 11, 5, 35,107,103, 68, 21, 86, 36, 91, 85,126, 32, 50,109, 94,120, 6, 53, 79, 28, 45, 99, 95, 41, 34, 88, 68, 93, 55,110,125,105, 20, 90, 80, 76, 96, 23, 60, 89, 64,121, 56, 14, 74,101, 8, 19, 78, 76, 66,104, 46,111, 50, 32, 3, 39, 0, 58, 25, 92, 22, 18, 51, 57, 65,119,116, 22,109, 7, 86, 59, 93, 62,110, 78, 99, 77, 67, 12,113, 87, 98,102, 5, 88, 33, 38, 56, 23, 8, 75, 45, 13, 75, 95, 63, 28, 49,123,120, 20,112, 44, 30, 15, 98,106, 2,103, 29, 82,107, 42,124, 24, 30, 41, 16,108,100,117, 40, 73, 40, 7,114, 82,115, 36,112, 12,102,100, 84, 92, 48, 72, 97, 9, 54, 55, 74, 113,123, 17, 26, 53, 58, 4, 9, 69,122, 21,118, 42, 60, 27, 73, 118,125, 34, 15, 65,115, 84, 64, 62, 81, 70, 1, 24,111,121, 83, 104, 81, 49,127, 48,105, 31, 10, 6, 91, 87, 37, 16, 54,116,126, 31, 38, 13, 0, 72,106, 77, 61, 26, 67, 46, 29, 96, 37, 61, 52, 101, 17, 44,108, 71, 52, 66, 57, 33, 51, 25, 90, 2,119,122, 35 }, table_2[128] = { 52, 50, 44, 6, 21, 49, 41, 59, 39, 51, 25, 32, 51, 47, 52, 43, 37, 4, 40, 34, 61, 12, 28, 4, 58, 23, 8, 15, 12, 22, 9, 18, 55, 10, 33, 35, 50, 1, 43, 3, 57, 13, 62, 14, 7, 42, 44, 59, 62, 57, 27, 6, 8, 31, 26, 54, 41, 22, 45, 20, 39, 3, 16, 56, 48, 2, 21, 28, 36, 42, 60, 33, 34, 18, 0, 11, 24, 10, 17, 61, 29, 14, 45, 26, 55, 46, 11, 17, 54, 46, 9, 24, 30, 60, 32, 0, 20, 38, 2, 30, 58, 35, 1, 16, 56, 40, 23, 48, 13, 19, 19, 27, 31, 53, 47, 38, 63, 15, 49, 5, 37, 53, 25, 36, 63, 29, 5, 7 }, table_3[64] = { 1, 5, 29, 6, 25, 1, 18, 23, 17, 19, 0, 9, 24, 25, 6, 31, 28, 20, 24, 30, 4, 27, 3, 13, 15, 16, 14, 18, 4, 3, 8, 9, 20, 0, 12, 26, 21, 8, 28, 2, 29, 2, 15, 7, 11, 22, 14, 10, 17, 21, 12, 30, 26, 27, 16, 31, 11, 7, 13, 23, 10, 5, 22, 19 }, table_4[32] = { 15, 12, 10, 4, 1, 14, 11, 7, 5, 0, 14, 7, 1, 2, 13, 8, 10, 3, 4, 9, 6, 0, 3, 2, 5, 6, 8, 9, 11, 13, 15, 12 }, *table[5] = { table_0, table_1, table_2, table_3, table_4 }; void A3A8(/* in */ Byte rand[16], /* in */ Byte key[16], /* out */ Byte simoutput[12]) { Byte x[32], bit[128]; int i, j, k, l, m, n, y, z, next_bit; /* ( Load RAND into last 16 bytes of input ) */ for (i=16; i<32; i++) x[i] = rand[i-16]; /* ( Loop eight times ) */ for (i=1; i<9; i++) { /* ( Load key into first 16 bytes of input ) */ for (j=0; j<16; j++) x[j] = key[j]; /* ( Perform substitutions ) */ for (j=0; j<5; j++) for (k=0; k<(1<<j); k++) for (l=0; l<(1<<(4-j)); l++) { m = l + k*(1<<(5-j)); n = m + (1<<(4-j)); y = (x[m]+2*x[n]) % (1<<(9-j)); z = (2*x[m]+x[n]) % (1<<(9-j)); x[m] = table[j][y]; x[n] = table[j][z]; } /* ( Form bits from bytes ) */ for (j=0; j<32; j++) for (k=0; k<4; k++) bit[4*j+k] = (x[j]>>(3-k)) & 1; /* ( Permutation but not on the last loop ) */ if (i < 8) for (j=0; j<16; j++) { x[j+16] = 0; for (k=0; k<8; k++) { next_bit = ((8*j + k)*17) % 128; x[j+16] |= bit[next_bit] << (7-k); } } } for (i=0; i<4; i++) simoutput[i] = (x[2*i]<<4) | x[2*i+1]; for (i=0; i<6; i++) simoutput[4+i] = (x[2*i+18]<<6) | (x[2*i+18+1]<<2) | (x[2*i+18+2]>>2); simoutput[4+6] = (x[2*6+18]<<6) | (x[2*6+18+1]<<2); simoutput[4+7] = 0; } int hextoint(char x) { x = toupper(x); if (x >= 'A' && x <= 'F') return x-'A'+10; else if (x >= '0' && x <= '9') return x-'0'; fprintf(stderr, "bad input.\n"); exit(1); return(0); } int main(int argc, char **argv) { Byte rand[16], key [16], simoutput[12]; int i; if (argc != 3 || strlen(argv[1]) != 34 || strlen(argv[2]) != 34 || strncmp(argv[1], "0x", 2) != 0 || strncmp(argv[2], "0x", 2) != 0) { fprintf(stderr, "Usage: %s 0x 0x\n", argv[0]); exit(1); } /*void main() { Byte rand[16], key [16], simoutput[12]; char **argv; int i; read("argv[1]:%s",*argv[1]); read("argv[2]:%s",*argv[2]); */ for (i=0; i<16; i++) key[i] = (hextoint(argv[1][2*i+2])<<4) | hextoint(argv[1][2*i+3]); for (i=0; i<16; i++) rand[i] = (hextoint(argv[2][2*i+2])<<4) | hextoint(argv[2][2*i+3]); A3A8(key, rand, simoutput); printf("simoutput: "); for (i=0; i<12; i++) printf("%02X", simoutput[i]); printf("\n"); getch(); return 0; } 4.2. Chương trình chạy mô phỏng thuật toán A51 #include /* định nghĩa cho 3 thanh ghi dịch */ #define R1MASK 0x07FFFF /* 19 bits, numbered 0..18 */ #define R2MASK 0x3FFFFF /* 22 bits, numbered 0..21 */ #define R3MASK 0x7FFFFF /* 23 bits, numbered 0..22 */ /* Bit giữa của mỗi thanh ghi được dung làm bit điều khiển clock */ #define R1MID 0x000100 /* bit 8 */ #define R2MID 0x000400 /* bit 10 */ #define R3MID 0x000400 /* bit 10 */ /* Feedback taps, for clocking the shift registers. * These correspond to the primitive polynomials * x^19 + x^5 + x^2 + x + 1, x^22 + x + 1, * and x^23 + x^15 + x^2 + x + 1. */ #define R1TAPS 0x072000 /* bits 18,17,16,13 */ #define R2TAPS 0x300000 /* bits 21,20 */ #define R3TAPS 0x700080 /* bits 22,21,20,7 */ /* Output taps, for output generation */ #define R1OUT 0x040000 /* bit 18 (the high bit) */ #define R2OUT 0x200000 /* bit 21 (the high bit) */ #define R3OUT 0x400000 /* bit 22 (the high bit) */ typedef unsigned char byte; typedef unsigned long word; typedef word bit; /* Tính toán nhị phân của 32 bit, tổng của nó là bội số của 2 */ bit parity(word x) { x ^= x>>16; x ^= x>>8; x ^= x>>4; x ^= x>>2; x ^= x>>1; return x&1; } /* Clock một thanh ghi */ word clockone(word reg, word mask, word taps) { word t = reg & taps; reg = (reg << 1) & mask; reg |= parity(t); return reg; } word R1, R2, R3; bit majority() { int sum; sum = parity(R1&R1MID) + parity(R2&R2MID) + parity(R3&R3MID); if (sum >= 2) return 1; else return 0; } void clock() { bit maj = majority(); if (((R1&R1MID)!=0) == maj) R1 = clockone(R1, R1MASK, R1TAPS); if (((R2&R2MID)!=0) == maj) R2 = clockone(R2, R2MASK, R2TAPS); if (((R3&R3MID)!=0) == maj) R3 = clockone(R3, R3MASK, R3TAPS); } void clockallthree() { R1 = clockone(R1, R1MASK, R1TAPS); R2 = clockone(R2, R2MASK, R2TAPS); R3 = clockone(R3, R3MASK, R3TAPS); } bit getbit() { return parity(R1&R1OUT)^parity(R2&R2OUT)^parity(R3&R3OUT); } void keysetup(byte key[8], word frame) { int i; bit keybit, framebit; R1 = R2 = R3 = 0; for (i=0; i<64; i++) { clockallthree(); /* always clock */ keybit = (key[i/8] >> (i&7)) & 1; /* The i-th bit of the key */ R1 ^= keybit; R2 ^= keybit; R3 ^= keybit; } for (i=0; i<22; i++) { clockallthree(); /* always clock */ framebit = (frame >> i) & 1; /* The i-th bit of the frame # */ R1 ^= framebit; R2 ^= framebit; R3 ^= framebit; } for (i=0; i<100; i++) { clock(); } } void run(byte AtoBkeystream[], byte BtoAkeystream[]) { int i; for (i=0; i<=113/8; i++) AtoBkeystream[i] = BtoAkeystream[i] = 0; for (i=0; i<114; i++) { clock(); AtoBkeystream[i/8] |= getbit() << (7-(i&7)); } for (i=0; i<114; i++) { clock(); BtoAkeystream[i/8] |= getbit() << (7-(i&7)); } } void test() { byte key[8] = {0x12, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; word frame = 0x134; byte goodAtoB[15] = { 0x53, 0x4E, 0xAA, 0x58, 0x2F, 0xE8, 0x15, 0x1A, 0xB6, 0xE1, 0x85, 0x5A, 0x72, 0x8C, 0x00 }; byte goodBtoA[15] = { 0x24, 0xFD, 0x35, 0xA3, 0x5D, 0x5F, 0xB6, 0x52, 0x6D, 0x32, 0xF9, 0x06, 0xDF, 0x1A, 0xC0 }; byte AtoB[15], BtoA[15]; int i, failed=0; keysetup(key, frame); run(AtoB, BtoA); for (i=0; i<15; i++) if (AtoB[i] != goodAtoB[i]) failed = 1; for (i=0; i<15; i++) if (BtoA[i] != goodBtoA[i]) failed = 1; printf("key: 0x"); for (i=0; i<8; i++) printf("%02X", key[i]); printf("\n"); printf("frame number: 0x%06X\n", (unsigned int)frame); printf("known good output:\n"); printf(" A->B: 0x"); for (i=0; i<15; i++) printf("%02X", goodAtoB[i]); printf(" B->A: 0x"); for (i=0; i<15; i++) printf("%02X", goodBtoA[i]); printf("\n"); printf("observed output:\n"); printf(" A->B: 0x"); for (i=0; i<15; i++) printf("%02X", AtoB[i]); printf(" B->A: 0x"); for (i=0; i<15; i++) printf("%02X", BtoA[i]); printf("\n"); if (!failed) { printf("Self-check succeeded: everything looks ok.\n"); return; } else { printf("\nI don't know why this broke; contact the authors.\n"); exit(1); } } int main(void) { test(); return 0; } Kết quả cuối cùng ta được là Key : 0*123456789ABCDEF Frame number : 0*000134 Chuỗi đầu ra đã biết : A à B : 0*534EAA582FE8151AB6E1855A728C00 B à A : 0*24FD35A35D5FB6526D32F906DF1AC0 Chuỗi đầu ra quan sát được bằng Borland C A à B : 0*534EAA582FE8151AB6E1855A728C00 B à A : 0*24FD35A35D5FB6526D32F906DF1AC0 CHƯƠNG V : KẾT LUẬN Sau một thời gian tập trung nghiên cứu, em đã tìm được một số vấn đề về nhận thực và an ninh trong GSM. Em đã tìm hiểu những yếu tố cần thiết để xây dựng một môi trường an ninh, các nguy cơ an ninh chính và những thách thức gặp phải khi xây dựng kiến trúc an ninh trong môi trường vô tuyến và di động nói chung. Về các kỹ thuật an ninh sử dụng trong thông tin vô tuyến và di động, đây là phần tương đối rộng nên em tập trung nhấn mạnh vào các kỹ thuật và giao thức an ninh chính. Đặc biệt, em tập trung nghiên cứu sâu vào thủ tục nhận thực và thoả thuận khoá trong các hệ thống thế hệ hai, em đã biết được các giao thức; các thủ tục; và các thuật toán mã hóa sử dụng trong thông tin di động thế hệ hai. Qua đó em nhận thấy rằng, các hệ thống thế hệ hai mặc dù được mã hóa bảo mật hơn các hệ thống tương tự thế hệ thứ nhất nhưng với sự phát triển của các hệ thống máy tính nó đã bộc lộ nhiều điểm yếu như đã phân tích trên, và hiện nay chỉ có các thủ tục nhận thực và bảo mật được giới thiệu trong UMTS mới đảm bảo an toàn cho thông tin người dùng, bảo vệ được quyền lợi người dùng cũng như quyền lợi của nhà cung cấp dịch vụ. Như chúng ta đã biết, tiêu chuẩn GSM 02.09 qui định các vấn đề bảo mật trong hệ thống GSM. Tuy nhiên do tính chất bí mật của những thuật toán này, chúng không được công bố rộng rãi ra cộng đồng. Chính vì thế nó không được cộng đồng GSM kiểm chứng một cách sâu sắc dẫn tới các thuật toán A3/A8 cũng như A5 có nhiều thiếu sót (i.e. A5/2 and COMP128), dẫn tới việc chúng dễ dàng bị hach bởi các Attacker. Do đó chúng liên tục có những cải tiến qua các giai đoạn.A3/A8 có các phiên bản COM128, COM128-2, COM128-3. A5 có các phiên bản A5/0, A5/1, A5/2 , A5/3 (năm 2002 áp dụng thuật toán Kasumi). Do vậy với sự phát triển không ngừng của các thế hệ công nghệ di động, mỗi công nghệ mới cần có những thuật toán mã hóa cũng như nhận thực tương ứng, và cuộc đấu tranh chống lại những attacker vẫn tiếp diễn không ngừng Do thời gian hạn chế nên một số vấn đề em mới chỉ nêu ra mà chưa tập trung nghiên cứu sâu được chẳng hạn như: nhận thực và mã hóa trong mạng UMTS… Đây là những vấn đề khá phức tạp và cũng hết sức hấp dẫn. Em hy vọng trong thời gian tới em sẽ có điều kiện để nghiên cứu sâu hơn vào các vấn đề này, đặc biệt là vấn đề an ninh trong mạng 3G, một công nghệ mà nhiều nhà nghiên cứu coi là có triển vọng trong tương lai. Với thời lượng và kiến thức còn hạn chế nên đồ án tốt nghiệp của em chắc chắn sẽ không tránh khỏi thiếu sót, em rất mong nhận được sự đóng góp ý kiến của các thầy cô và bạn bè để đồ án của em được hoàn thiện hơn. DANH SÁCH CÁC HÌNH VẼ Hình 1.1. Cấu trúc hệ thống thông tin di dộng tế bào trước đây. 13 Hình 1.2. Hệ thống thông tin di động sử dụng cấu trúc tế bào. 14 Hình 1.3. Khái niệm cell 15 Hình 1.4. Cấu trúc của một Macro Cell 16 Hình 1.5. Cấu trúc của Micro Cell, Pico Cell và Nano Cell 16 Hình 1.6. Cấu trúc của một Umbrella 16 Hình 1.7. Mô hình hệ thống thông tin di động GSM 19 Hình 1.8. Chức năng xử lý cuộc gọi của MSC 22 Hình 1.9. Mô hình hệ thống thông tin di động UMTS 26 Hình 1.10. Cấu trúc của UE 27 Hình 1.11. Cấu trúc UTRAN 29 Hình 1.12. Cấu trúc Base Station 30 Hình 1.13. Cấu trúc của RNC 30 Hình 1.14. Cấu trúc mạng lõi UMTS hỗ trợ chuyển mạch kênh CS và chuyển mạch gói PS 32 Hình 1.15. Cấu trúc HSS với các chức năng và giao diện kết nối tới CN 33 Hình 1.16. Cấu trúc miền chuyển mạch kênh CS 34 Hình 1.17. Cấu trúc miền chuyển mạch gói PS 34 Hình 2.1. Cấu trúc bảo mật mạng GSM 36 Hình 2.2. Quá trình mã hóa cơ bản 37 Hình 2.3. Quá trình nhận thực 37 Hình 2.4. Quá trình chứng thực trong SIM 39 Hình 2.5. Các bước từ 4 đến 6 41 Hình 2.6. Tạo khóa phiên Kc 41 Hình 2.7. Mã hóa dữ liệu thoại. 42 Hình 2.8. MS gửi bản tin IMSI 44 Hình 2.9. HLR gửi IMSI tới AuC 44 Hinh 2.10. AuC tạo RAND và Ki 45 Hình 2.11. Tạo ra SRES trong AuC 45 Hình 2.12. Tạo Kc và Triplet trong AuC 46 Hình 2.13. AuC gửi Triplet tới MSC 46 Hình 2.14. MSC gửi RAND tới MS 47 Hình 2.15. MS tạo SRES và Kc 47 Hình 2.16. Mô tả thuật toán COMP 128 48 Hình 2.17. Quá trình nén trong COMP 128 49 Hình 2.18. 32 bit SRES 50 Hình 2.19. 64 bit Kc 51 Hình 2.20. Narrow Pipe 52 Hình 2.21. Quá trình nhận thực 53 Hình 2.22. MSC gửi khóa Kc tới BSS 54 Hình 2.23. Quá trình mã hóa 54 Hình 2.24. Cấu trúc thuật toán A5 54 Hình 2.25. Chi tiết bộ mã hóa 55 Hình 2.26. Cấu trúc của 3 thanh ghi dịch LSFR 56 Hình 2.27. Hàm Majority Fuction điều khiển clock 57 Hình 2.28. Các trạng thái của thuật toán A5 58 Hình 3.1. Cấu trúc các miền bảo mật trong mạng UMTS 66 Hình 3.2. Cơ chế nhận thực và tạo khóa phiên trong UMTS 67 Hình 3.3. Quá trình chứng thực dữ liệu giữa SN và HE 68 Hình 3.4. Quá trình phát sinh vecto AV 69 Hình 3.5. Quá trình chứng thực và thiết lập khóa 70 Hình 3.6. Quá trình chứng thực người sử dụng trên USIM 71 Hình 3.7. Cơ chế đồng bộ lại 72 Hình 3.8. Thông báo chứng thực thất bại 73 Hình 3.9. Dữ liệu người sử dụng và báo hiệu được mã hóa trên liên kết truy nhập vô tuyến. 74 Hình 3.10. Cấu trúc của COUNT – C ở tất cả các chế độ 75 Hình 3.11. Nguồn gốc của MAC-I (XMAC – I) 76 Hình 3.12. Cấu trúc của COUNT – I 77 THUẬT NGỮ VIẾT TẮT 1G 2G 3G 3GPP 1fs Generation 2nd Generation 3rd Generation Third Generation Partnership Project Thế hệ thứ 1 Thế hệ thứ 2 Thế hệ thứ 3 Dự án hợp tác thế hệ 3 A AMPS AuC A3 A8 A5 ADS AV AUTN AK AMF Advance Mobile Phone System Authetication Center Authetication Algorithm Cipher Key Generating Algorithm Encryption Algorithm Application domain security Authentication Vector Authentication Token Anonymity Key Authentication and Key Management Field Hệ thống điện thoại di động thông minh Trung tâm nhận thực Thuật toán nhận thực Thuật toán phát sinh khóa mật mã Kc Thuật toán mã hóa Bảo mật miền ứng dụng Vectơ nhận thực Thẻ nhận thực Khóa nặc danh Trường quản lý nhận thực và khóa B BTS BSC BS Base Transceiver Station Base Station Subsystem Base Station Trạm thu phát gốc Phân hệ trạm gốc Trạm gốc C CDMA CSPDN CN CS CK Code Division Multiple Access Circuit Switched Public Data Network Core Network Circuit Switched Ciphering key Đa truy nhập phân chia theo mã Mạng số liệu chuyển mạch kênh công cộng Mạng lõi Chuyển mạch kênh Khóa mật mã E EDGE EIR Enhanced Data Rates for Global Evolution Equipment Identity Register Nâng cao tốc độ dữ liệu cho sự phát triển toàn cầu Bộ nhận dạng thiết bị F FDMA FDD Fn Frequency Division Multiple Access Frequency Division Duplex Frame number Đa truy nhập phân chia theo tần số Song công phân chia theo tần số Số khung G GSM GPRS GMSC GGSN Global System for Mobile Communication General Packet Radio Service Gateway Mobile Services Switching Centre GPRS Getway Support Node Truyền tin di động toàn cầu Dịch vụ vô tuyến gói chung Trung tâm chuyển mạch dịch vụ di động cổng Cổng hỗ trợ dịch vụ GPRS H HLR HSS HE Home Location Register Home Subcriber Server Home Environment Bộ ghi định vị thường trú Phục vụ thuê thường trú Môi trường thường trú I IMEI IMSI IMUI IK ISDN International Mobile Equipment Indentifier International Mobile Subscriber Identity International Mobile User Identifier Integrity key Integrated Services Digital Network Số nhận dạng thiết bị di động quốc tế Nhận dạng thuê bao di động quốc tế Nhận dạng người sử dụng di động quốc tế Khóa toàn vẹn Mạng số tích hợp đa dịch vụ K Kc Ki Session Key Secret Key Khóa phiên Khóa bí mật L LSFR Linear Feedback Shift Registers Thanh ghi dịch M MS MSC ME MSISDN MT Mobile Station Mobile Switching Centre Mobile Equipment Mobile Station International ISDN Number Mobile Terminal Trạm di động Trung tâm chuyển mạch di động Thiết bị di động Số ISDN trạm di động quốc tế Đầu cuối di động N NMT NAS NDS Nordic Mobile Telephony Network access security Network domain security Điện thoại di động Bắc Âu Bảo vệ truy nhập mạng Bảo vệ miền mạng O OSS OMC Operation Support System Operations and Maintenance Centre Hệ thống hỗ trợ vận hành Trung tâm vận hành và bảo dưỡng P PSTN PSPDN PLMN PS Public Switched Telephone Network Public Switched Packet Data Network Public Land Mobile Network Packet Switched Mạng điện thoại chuyển mạch công cộng Mạng chuyển mạch dữ liệu gói công cộng Mạng di động mặt đất công cộng Chuyển mạch gói R RNC RAND Radio Network Controller Random Number Điều khiển mạng vô tuyến Số ngẫu nhiên S SS SIM SGSN SQN Switching Subsystem GSM Subscriber Identity Module Serving GPRS Support Node Sequence Number Phân hệ chuyển mạch Modul nhận dạng thuê bao GSM Nút hỗ trợ dịch vụ GPRS Số chuỗi T TRAU TMSI TE TDMA Transcoder Rate Adapter Unit Tempoary Mobile Subscriber Identity Terminal Equipment Time Division Multiple Access Bộ thích nghi tốc độ chuyển đổi Nhận dạng thuê bao di động tạm thời Thiết bị đầu cuối Đa truy nhập phân chia theo thời gian U UMTS UE USIM UTRAN UDS Universal Mobile Telecommunications System User Equipment Universal Subscriber Identity Module Universal Terrestrial Radio Access Network User domain security Hệ thống truyền tin di động toàn cầu Thiết bị người sử dụng Modul nhận dạng thuê bao toàn cầu Mạng truy nhập vô tuyến mặt đất Bảo mật miền người sử dụng V VLR Visitor Location Register Bộ ghi định vị tạm trú W W-CDMA Wide Band Code Division Multiple Access Đa truy nhập phân chia theo mã băng rộng TÀI LIỆU THAM KHẢO [1] Security and Encryption, Margrave David, [30.9.1999] [2] GSM Interception, Lauri Pesonen, [ 21.11.1999] [3] GSM security issues, Wei Zhang, [11.15.2000] [4] GSM System Security Study, RACAL RESEARCH LTD, [06,10,1998] [5] Encryption and Ciphers using 7816 for smart cards, Chris Hills, [09,2001] [6] A new class of collision attacks and its application on DES [7] Guang Gong [8] Real Time Cryptanalysis of A5/1 on a PC, Alex Biryukov, Adi Shamir, David Wagner, [04,27,2000] [9] UMTS Networks Architecture Mobility and Services, 2nd Edition , Wiley (2005)

Các file đính kèm theo tài liệu này:

  • docNghiên cứu các phương pháp bảo mật trong hệ thống gsm.doc