Rò rỉ kênh kề trên điện thoại thông minh khi thực hiện mã hóa RSA
Trong thời đại ngày nay, cùng với sự phát triển của khoa học kỹ thuật có ngày càng nhiều những cuộc tấn công vào phần cứng và gây ra nhiều hậu quả nghiêm trọng. So với các loại tấn công khác, tấn công qua kênh kề đang được nghiên cứu do khả năng khôi phục lại khóa bí mật trong khi hệ thống vẫn hoạt động bình thường mà không hề làm thay đổi phần cứng. Bài báo này sẽ trình bày một cách sơ lược về những kết quả cuộc tấn công kênh kề lên mã hóa RSA cài đặt trên điện thoại thông minh sử dụng hệ điều hành Android tại Viện Khoa học - Công nghệ mật mã. Nhóm tác giả đã tấn công khôi phục được một phần khóa bí mật của mã hóa RSA cài đặt trên điện thoại thông minh và chứng minh khả năng rò rỉ thông tin qua kênh kề.
Tấn công kênh kề
Trong bài viết: “Về một phương pháp tấn công kênh kề lên mã khối Kalyna trên hệ thống Analyzr”[1], nhóm tác giả đã giới thiệu chi tiết về tấn công kênh kề (Side Channel Attack – SCA), dưới đây là một số nội dung cơ bản về loại tấn công này.
Tấn công kênh kề [2] là một phương pháp tấn công khôi phục khóa bí mật của một thuật toán mã hóa dựa vào các đầu ra vật lý được tạo ra do quá trình hoạt động của thiết bị phần cứng mật mã, ví dụ như âm thanh, bức xạ tia hồng ngoại, độ trễ thời gian, nguồn tiêu thụ và bức xạ điện từ. Thông tin rò rỉ này có thể được phân tích thống kê để tìm ra các mối liên quan đến những phép tính cơ bản được cài đặt trong thiết bị mật mã hoặc là khóa bí mật.
Tấn công kênh kề có thể khôi phục lại khóa bí mật trong khi hệ thống vẫn hoạt động bình thường mà không hề làm thay đổi phần cứng. Nhiều tham số có thể được ứng dụng trong tấn công kênh kề, nhưng phổ biến là 3 tham số chính: thời gian, nguồn điện tiêu thụ và tín hiệu bức xạ [3].
Tấn công thời gian lên mã hoá RSA trên điện thoại thông minh
Trong nội dung này, nhóm tác giả sẽ trình bày sơ lược về kết quả thực hành tấn công kênh kề lên mã hóa RSA trên điện thoại thông minh của Viện Khoa học – Công nghệ mật mã.
Các bước thực hiện
Để thực hiện tấn công kênh kề, nhóm tác giả đã thực hiện các bước sau:
Bước 1: Xây dựng chương trình mã hóa RSA trên điện thoại thông minh sử dụng hệ điều hành Android
Để phát triển chương trình mã hóa RSA trên điện thoại thông minh, nhóm tác giả xây dựng một ứng dụng bằng ngôn ngữ Java. Ứng dụng tiến hành mã hóa bản rõ với khóa bí mật được lưu trữ trong điện thoại. Sau đó điện thoại hiện thì ra giá trị bản mã ở phần Encrypted Message và khóa bí mật ở phần D. Nếu muốn kiểm tra kết quả mã hóa đúng không, người tấn công có thể bấm nút Decrypt encryptedtext để giải mã khôi phục lại bản rõ. Hình 1 là chương trình thực thi mã hóa RSA trên điện thoại thông minh.
Hình 1. Giao diện của ứng dụng Android thực hiện mã hóa giải mã RSA.
Bước 2: Thu vết năng lượng mã hóa RSA trên điện thoại thông minh
Để thực hiện bước này, cần tìm ra các phương pháp đánh dấu vị trí thực thi mã hóa RSA trên vết năng lượng thu được. Trên điện thoại di động, việc tích hợp tín hiệu báo hiệu trở nên phức tạp do thiết bị giao tiếp với CPU thông qua hệ điều hành và chạy nhiều chương trình ngầm, làm cho việc xác định vị trí thực thi mã hóa RSA trở thành thách thức. Để giải quyết vấn đề này, nhóm đã phát triển một chương trình điều khiển điện thoại thông qua Android Debug Bridge (ADB). Chương trình này mô phỏng thao tác của người dùng trên màn hình điện thoại và gửi bản rõ từ máy tính xuống điện thoại qua cổng COM, giúp quản lý quá trình mã hóa hiệu quả, bao gồm các khâu như sau:
Hình 2. Mô hình thu vết năng lượng trên điện thoại.
- B1: Máy tính gửi lệnh chụp xuống máy phân tích phổ.
- B2: Máy tính điều khiển điện thoại bắt đầu quá trình mã hóa RSA thông qua ADB.
- B3: Máy phân tích phổ tiến hành chụp vết năng lượng tại tần số mong muốn.
- B4: Máy phân tích phổ nhận kết quả từ điện thoại và gửi về máy tính để phân tích. Hình 2 thể hiện mô hình hoạt động thu vết năng lượng trên điện thoại thông minh.
Bước 3: Thu thập và chuẩn bị dữ liệu
Quá trình thu thập vết năng lượng trên điện thoại thông minh được tiến hành thông qua bức xạ điện từ. Việc đo đạc này sử dụng các thiết bị đang được trang bị tại phòng thí nghiệm. Các vết năng lượng được thu qua máy phân tích phổ, thiết bị này kết nối với máy tính để điều khiển tự động quá trình chụp vết và đảm bảo thu thập dữ liệu chính xác. Kết quả vết năng lượng thu được thể hiện trong Hình 3.
Hình 3. Vết năng lượng thu được từ máy phân tích phổ.
Khi điện thoại thực hiện mã hóa, cường độ năng lượng bức xạ điện từ ra bên ngoài thấp hơn đáng kể so với khi điện thoại không thực hiện mã hóa. Đặc điểm này được sử dụng như một tín hiệu báo hiệu để xác định điểm bắt đầu và kết thúc của quá trình mã hóa RSA trên điện thoại.
Bước 4: Phân tích tìm khóa bí mật
Việc tính toán thời gian thực hiện giữa các bit 0 và 1 được sử dụng để phân tích tìm khóa bí mật. Trong RSA, số lượng phép nhân thực hiện khác nhau dựa trên giá trị của từng bit trong khóa. Cụ thể, bit 0 chỉ cần thực hiện phép bình phương, trong khi bit 1 cần thực hiện cả phép bình phương và phép nhân. Do đó, thời gian thực thi của bit 1 dài hơn so với bit 0. Bằng cách đo lường thời gian thực thi mã hóa, và có thể suy ra giá trị của các bit trong khóa bí mật.
Kết quả thu được
Hình 4. Vết năng lượng thực hiện RSA16 trên điện thoại thông minh.
Kết quả của quá trình phân tích từ vết năng lượng trong Hình 4 như sau:
Khóa tìm thấy: 1010100101100
Khóa thực tế: 1011000101101 => Tỉ lệ khóa đúng 54%
Hình 5. Vết năng lượng thực hiện RSA32 trên điện thoại thông minh.
Kết quả của quá trình phân tích từ vết năng lượng trong Hình 5 như sau:
Khóa tìm thấy: 110010000111011100010010111
Khóa thực tế: 10101011011101110001001100001 => Tỉ lệ khóa đúng 52%
Kết quả của quá trình phân tích từ vết năng lượng trong Hình 6 như sau:
Hình 6. Vết năng lượng thực hiện RSA128 trên điện thoại thông minh.
Khóa tìm thấy: 1010111100010010001111011000000001001100000111110111011001010000101110111000111 10100010101001001111010111110101100011011100000
Khóa thực tế: 1000011010110011101111011011111111001110100110111101011101100110110111010111111 10010101011111011011011000111101101010111111 => Tỉ lệ khóa đúng 19%
Các kết quả thu được cho thấy khả năng rò rỉ thông tin qua kênh kề của thuật toán RSA thực hiện trên điện thoại thông minh. Tuy nhiên, kết quả chỉ mới đạt được mức khôi phục một phần khóa bí mật của RSA, chưa thể khôi phục toàn bộ khóa bí mật. Nguyên nhân là do trong quá trình đo đạc và tính toán gặp nhiều khó khăn bởi chip xử lý của điện thoại thực hiện nhiều chương trình ngầm và bức xạ điện từ từ các thành phần của điện thoại như màn hình gây nhiễu lớn, từ đó làm giảm độ chính xác của dữ liệu. Những yếu tố này tạo ra thách thức lớn trong việc xác định chính xác thời điểm mã hóa và thu thập dữ liệu cần thiết cho việc tấn công.
Kết luận
Bằng cách sử dụng phương pháp tấn công kênh kề lên thuật toán mã hóa RSA trên điện thoại thông minh, nhóm tác giả đã khôi phục lại một phần khóa bí mật thông qua tính toán thời gian thực thi của RSA. Mặc dù cuộc tấn công chỉ khai thác được một phần của khóa, nhóm đã xác định được đặc trưng của bức xạ trên chip điện thoại thông minh khi thực thi mã hóa RSA. Kết quả của bài báo chứng minh rằng khóa bí mật của RSA có thể bị lộ thông qua phương pháp tấn công kênh kề lên điện thoại thông minh. Các nghiên cứu tiếp theo sẽ tập trung vào các biện pháp cải thiện khả năng thu thập vết năng lượng tốt hơn và tăng tỉ lệ khôi phục khóa bí mật của thuật toán mã hóa RSA trên điện thoại thông minh.
TÀI LIỆU THAM KHẢO [1]. TS. Đinh Quốc Tiến, Phạm Hà Hải, Về một phương pháp tấn công kênh kề lên mã khối Kalyna, Tạp chí An toàn thông tin số 4 (074) 2023. [2]. Kocher P., Jaffe J., Jun B., et al., Introduction to differential power analysis, Journal of Cryptographic Engineering, 2011. [3]. Nguyễn Như Tuấn, Tấn công kênh kề trên các thiết bị mật mã, Tạp chí An toàn thông tin số 3 (011) 2009. |