Dò tìm Ki trên lý thuyết:
Thuật toán COMP128 là sự gộp chung giữa hai thuật toán A3 và A8, thuật toán này cho phép tạo ra hai mã là: Mã Kc 64-bit và mã SRES 32-bit từ một số ngẫu nhiên RAND 128 bit và số 128-bit Ki
Ở đây ta thấy:
Ki là số chưa biết thông tin RAND là số ngẫu nhiên
Kc là thông tin Output khỏi SIM, có thể xác định được giá trị
SRES tương tự, là thông tin Output khỏi SIM, có thể xác định được giá trị
Như vậy hoàn toàn có thể đặt ra vấn đề là có thể tồn tại một hàm xác định Ki dựa trên ba thông số RAND, Kc và SRES, Ki=f(RAND, Kc, SRES)
Tại một thời điểm ứng với một giá trị RAND nhất định ta sẽ có một giá trị Kc và SRES nhất định
Như vậy ta có thể coi Ki~ f(RAND)
Nếu lựa chọn theo thứ tự (chứ không phải là ngẫu nhiên)một lọat các số RAND 128 bit , liệu có thể suy luận được ra chính xác giá trị của Ki được không ?
Câu trả lời là được nếu tồn tại một cách tìm Ki từ Ki~ f(RAND) sau một lọat các phép thử dạng vét cạn (Brute-Force attack). Số lượng phép thử vét cạn với thời gian tương ứng như trong bảng sau:
Bảng thống kê thuật toán vét cạn với các giá trị tương ứng Độ dài khóa
bits
Số lần phải thực hiện tương ứng:
Thời gian để kiểm tra tòan bộ các lần thực hiện tương ứng 32 232 1.19 hours 40 240 12,7 days 56 256 2 291 years 64 264 584 542 years 128 2128 10,8 * 1024 years
(Theo: GSM Security and Encryption, David Musgrave)
Như vậy, nếu theo lý thuyết thì thời gian để dò tìm được Ki sẽ mất là 10.8*1024 years, một con số cực kỳ lớn và không khả thi.
Trong thực tế để dò tìm Ki người ta không dùng cách như vậy mà dựa trên một số lỗ hổng của thuật toán Comp128. Lỗ hổng này cho phép dò tìm Ki với giá trị nhỏ hơn 2128 và như vậy sẽ cho phép thực hiện Ki trong khỏang thời gian có thể chấp nhận được
Tháng 4 năm1998, hai nhà nghiên cứu Wagner/Goldberg đã lần đầu tiên công bố phương pháp dò tìm Ki dựa trên lỗ hổng của Comp128 trên điểm yếu của cơ chế nén trong lần nén thứ hai, phương pháp này được gọi phổ thông là Narrow Pipe.
Hai ông đã phát hiện thấy rằng, có thể chia nhỏ nhóm giá trị đầu vào RAND trong quá trình dò tìm Ki, Có thể mô tả kỹ hơn là có thể chia nhỏ quá trình dò tìm Ki 128 bit, 16 byte thành bốn Phase, Mỗi Phase chỉ dò tìm 32 bit hay 8 byte của giá trị Ki . Và như vậy thời gian hòan tất cho việc dò Ki sẽ theo kiểu 2R này sẽ giảm số RAND xuống khoảng 217 lần.
Trên cơ sở phát hiện về lỗ hổng này các nhà nghiên cứu đã liên tục công bố và thiết kế các chương trình khai thác lỗ hổng. Một người có tên là Dejan Kaljevic đã viết một công cụ khá nổi tiếng là Sim Scan sử dụng các cơ chế vét cạn 2R, 3R, 4R and 5R để có được các giá trị byte cần thiết của Ki, trong vòng giá trị trung bình là 18,000.
Thực tế với công cụ Sim scan, người ta thống kê được, nó có khả năng tìm thấy Ki trong khoảng giữa 7000 và 35,000 giá trị RAND tức là khỏang 213 – 215 lần thử.
Với số lượng thử ngắn như vậy, thời gian để dò tìm Ki có thể diễn tra trong vòng một giờ, và thời gian này phụ thuộc vào tốc độ của SIM, một số đầu đọc SIM có thể ‘overclock’ thẻ SIM tới một tần số làm việc cao khoảng 10MHz giúp đẩy nhanh quá trình dò tìm Ki hơn. Với tốc độ 6MHz có thể thử 7 giá trị RAND trong vòng một giây, và do đó thời gian dò tìm Ki giảm xuống còn vài tiếng đồng hồ.