Về một phương pháp tấn công kênh kề lên mã khối Kalyna

14:00 | 04/03/2024 | GP MẬT MÃ
Ngày nay, tất cả các lĩnh vực trong đời sống xã hội đều có xu hướng tích hợp và tự động hóa, trong đó các giao dịch số là yêu cầu bắt buộc. Do vậy, các tấn công lên thiết bị phần cứng, đặc biệt là các thiết bị bảo mật có thể kéo theo những tổn thất to lớn như: lộ thông tin cá nhân, bị truy cập trái phép hoặc đánh cắp tài khoản ngân hàng,… So với các loại tấn công khác, tấn công kênh kề hiện đang có nhiều khả năng vượt trội. Trong bài báo 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ã khối Kalyna trên hệ thống Analyzr của Viện Khoa học - Công nghệ mật mã. Nhóm tác giả đã tấn công thành công và khôi phục đúng 15 byte khóa trên tổng số 16 byte khóa của thuật toán Kalyna cài đặt trên bo mạch Nucleo 64.

GIỚI THIỆU VỀ TẤN CÔNG KÊNH KỀ

Phần lớn các nghiên cứu về mật mã nhằm đánh giá các đặc trưng toán học của thuật toán mật mã, các phương pháp mã hóa cũng như các giao thức mật mã [1] mà chưa đề cập đến việc các thiết bị phần cứng đầu cuối có thể bị tấn công. Do đó hiện nay, việc nghiên cứu các dạng tấn công vào thiết bị đầu cuối nói chung và tấn công kênh kề đang được thúc đẩy trên thế giới.

Tấn công kênh kề [2] (Side Channel Attack) là một dạng tấn công vào các thông tin trên thiết bị được mã hóa. Khái niệm "thông tin" trong tấn công kênh kề thường đề cập đến khóa bí mật của một thuật toán mã hóa. Kiểu tấn công này được thực hiện bằng cách giám sát đầu ra vật lý của thiết bị (chẳng hạn như điện năng tiêu thụ, thời gian cần thiết để thực hiện các thuật toán, phát nhiệt, ánh sáng và âm thanh). Hình 1 thể hiện các dạng rò rỉ dùng trong tấn công kênh kề.

Hình 1. Các dạng rò rỉ dùng trong tấn công kênh kề

Có một số dạng tấn công hay được sử dụng là tấn công thời gian và tấn công năng lượng. Trong đó, tấn công thời gian thường được sử dụng trong tấn công các hệ mật khóa đối xứng. Xuất phát từ các hệ mật mã khóa công khai thường mất một khoảng thời gian khác nhau để xử lý các đầu vào khác nhau. Hình 2 thể hiện đặc trưng về mặt thời gian của thuật toán RSA.

Hình 2. Phân tích vệt năng lượng theo tấn công thời gian

Tấn công theo phân tích năng lượng dựa trên sự tương quan giữa dòng điện do bộ vi xử lý tạo ra bởi các lệnh hoặc dữ liệu đang được xử lý. Trong tấn công phân tích năng lượng điện đơn giản (Simple Power Anlysis - SPA), kẻ tấn công tiến hành quan sát vệt (trace) của nguồn điện tiêu thụ trong một khoảng thời gian và cố gắng áp dụng nó trực tiếp vào nguyên lý hoạt động của thiết bị mật mã. Một ví dụ thể hiện các vệt thu được từ một SPA trên một bo mạch FPGA chạy thuật toán mã hóa AES được thể hiện trong Hình 3. Trong SPA khó có thể tấn công tìm ra được khóa bí mật, tuy nhiên lại rất có ích cho việc phát hiện được thuật toán mã hóa đang chạy trên bo mạch.

Hình 3. Vệt năng lượng của thuật toán AES-128 cài đặt trên bo mạch FPGA

Trong tấn công năng lượng vi sai (Differential Power Analysis - DPA), cần thu thập một số lượng lớn các vệt, chia chúng thành hai tập con và tính giá trị trung bình của mỗi tập con. Trong trường hợp có sự chênh lệch, khi LSB là 0 và LSB là 1, sự vi sai trung bình giữa hai tập hợp con sẽ làm nổi bật sự thay đổi trong tiêu thụ điện năng.

Phân tích năng lượng tương quan (Correlation Power Analysis - CPA) mục tiêu là tạo ra chính xác mô hình năng lượng của thiết bị bị tấn công. Mục đích của tấn công CPA là để tìm ra mối tương quan giữa năng lượng dự đoán và năng lượng thực tế của một thiết bị. Nếu mô hình công suất là chính xác thì cần chứng minh mối tương quan chặt chẽ giữa năng lượng dự đoán và năng lượng thực tế.

Cả DPA và CPA đều có thể tấn công thành công và tìm được khóa chính xác. Mặc dù tấn công DPA cho thấy rằng khả năng cao nhất của đồ thị là đoán khóa chính xác, nhưng mức độ tạp âm lớn hơn nên có khả năng làm cho khóa khó tìm được hơn. Nếu so sánh song song các kết quả được tạo ra bởi DPA và CPA, cho thấy CPA có thể tạo ra các kết quả phỏng đoán khóa đơn giản hơn từ góc độ phân tích, do không bị tạp âm so với tính giá trị DPA.

TẤN CÔNG CPA LÊN THUẬT TOÁN MÃ HÓA KALYNA

Tiếp theo, 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ã khối Kalyna trên hệ thống Analyzr của Viện Khoa học - Công nghệ mật mã. Hệ thống Analyzr có thể đánh giá tính bảo mật của các hệ thống mật mã. Nó cho phép thực hiện tấn công kênh kề lên các thiết bị nhúng, SmartCard, mạch sử dụng chip FPGA,...

Hệ thống này cho phép truy cập vào các phân tích tiên tiến nhất về các thuật toán mật mã đối xứng và bất đối xứng. Để thực hiện tấn công kênh kề trên hệ thống Analyzr cần thực hiện các công đoạn sau:

Công đoạn 1: Thu thập và chuẩn bị dữ liệu

Để thực hiện công đoạn này đòi hỏi người thực hiện có những hiểu biết về hệ thống phân tích kênh kề, để tiến hành thu thập vệt năng lượng trên bo mạch nhúng thông qua bức xạ điện từ. Việc đo đạc được tiến hành bởi các thiết bị đang được trang bị trên phòng thí nghiệm. Các vệt năng lượng được bắt qua máy hiện sóng có kết nối với máy tính để điều khiển việc chụp vệt tự động và đảm bảo việc thu thập vệt với số lượng lớn vết năng lượng.

Công đoạn 2: Đo đạc

Để thực hiện công đoạn này người thực hiện phải có những hiểu biết phương pháp đặt trigger trong quá trình tấn công. Tốc độ lấy mẫu sẽ quan trọng đáng kể khi xử lý các mối tương quan rất nhỏ, mối quan tâm chính đối với CPA là tỷ lệ tín trên tạp đáng kể so với các nguồn nhiễu khác. Tương tự, giới hạn băng thông có thể giúp loại bỏ các tạo tác tần số cao không mong muốn để giảm thiểu lượng dữ liệu không liên quan được thu thập. Đây thường là công đoạn tốn nhiều thời gian nhất của CPA.

Công đoạn 3: Xử lý dữ liệu

Công đoạn này đòi hỏi những hiểu biết về xử lý tín hiệu. Sau khi vệt năng lượng đã được thu thập ở dạng số, quá trình xử lý tín hiệu số có thể được cải thiện đáng kể. Việc lọc tín hiệu số ở giai đoạn này cũng có thể giúp giảm nhiễu và tập trung vào các phần của phổ tín hiệu nơi có tín hiệu rò rỉ. Một chiến lược đơn giản khác để giảm tạp âm là thu thập nhiều vệt trong khi một thao tác giống hệt nhau được lặp lại, sau đó tính trung bình cộng các vệt này lại với nhau. CPA có thể là một kiểu tấn công đòi hỏi nhiều dữ liệu, đặc biệt khi được thực hiện với một số lượng rất lớn các vệt, mỗi vệt chứa một số lượng lớn các điểm đo lường.

Công đoạn 4: Phân tích

Đây là công đoạn quan trọng, đòi hỏi những hiểu biết về thuật toán mã khối cần tấn công cũng như phương pháp tấn công kênh kề. Nhóm tác giả tiến hành một cuộc tấn công CPA vào mã hóa Kalyna bằng cách sử dụng vệt năng lượng Kalyna mà nhóm đã thu được. Nhóm tiến hành bắt vệt năng lượng tại đầu ra của S-box đầu tiên:

Bước 1: Chọn giá trị trung gian

Tiến hành chọn một biến trung gian được xử lý trong thuật toán. Giá trị trung gian được tính là f(d, k). Trong đó, d là một giá trị cố định đã biết có thể được lấy từ dữ liệu đã biết (ví dụ: bản gốc) và k là một phần nhỏ của khóa.

Bước 2: Đo năng lượng

Đo mức bức xạ năng lượng của thiết bị mã hóa trong khi mã hóa/giải mã khối dữ liệu D. Cần biết giá trị d tương ứng với mỗi khối dữ liệu. Các giá trị này có thể được viết dưới dạng một vectơ d = [d1 , d2 , …, dD]. Tín hiệu bức xạ năng lượng cho một hoạt động mã hóa/giải mã đơn lẻ được gọi là vệt năng lượng. Vệt là đại lượng ghi lại mức bức xạ năng lượng tức thời trong thời gian quan tâm (thời điểm giá trị trung gian đang được xử lý). Dấu vết được tạo ra trong khi mã hóa/giải mã khối dữ liệu i, bao gồm T mẫu và có thể được xem dưới dạng một vectơ ti = [ti,1, ti,2,… , ti,T]. Các dấu vệt được xếp chồng lên nhau trong một ma trận T có kích thước D×T, mỗi hàng i là một dấu vết được tạo ra trong khi mã hóa/giải mã khối i.

Hình 4. Vệt năng lượng của thuật toán Kalyna trên bo mạch nhúng

Hình 5. 10 vệt năng lượng của thuật toán Kalyna trên bo mạch nhúng

Bước 3: Tính toán trung gian giả định

Tiếp theo, cần đoán phần quan trọng, cần tính toán giá trị trung gian cho việc đoán khóa. Liệt kê tất cả các khóa con có thể dưới dạng một vectơ k = [k1 , k2 ,…, kK]. Sau đó, tính giá trị trung gian f(d, k) cho tất cả các giá trị trong vectơ dk. Kết quả được lưu trữ trong ma trận D×K. Trong đó: Vi,j = f(di , kj )i = 1, 2, …, D j = 1, 2 …, K.

Lưu ý rằng mỗi cột trong V là giá trị trung gian được tính cho tất cả các giá trị dữ liệu d cho một lần đoán khóa.

Bước 4: Tính toán giả thuyết

Dựa vào ma trận giá trị trung gian V, nhóm tác giả ước tính mức tiêu thụ điện năng khi mỗi giá trị trong V được xử lý trong thiết bị. Mô hình Trọng số Hamming (HW) là mô hình năng lượng được sử dụng rộng rãi, mô hình này đếm những bit 1 trong chuỗi bit, đếm số bit bị lật khi giá trị của một biến (Ví dụ: thanh ghi) thay đổi. Đó là HD(x, y) = x XOR y. Kết quả là một ma trận D×K được gọi là H. Đây là các kích thước giống như ma trận V.

Bước 5: Công suất tương quan giả định và vệt năng lượng thực tế

Tính tương quan HT để tìm khóa. Nhóm đã sử dụng thuật toán tương quan lấy hai vectơ làm đầu vào và trả về một số thực để đo mức độ “giống nhau” của các vectơ. Mỗi cột i trong H được so sánh với cột j trong ma trận theo dõi T. Kết quả được lưu trữ trong ma trận tương quan R là ma trận K×T. Lưu ý rằng cột i trong ma trận H là công suất giả định nếu ki được sử dụng trong thiết bị và cột j trong T là phép đo công suất thực tại mẫu j cho tất cả các khối dữ liệu. Phần tử Ri,j đo mức độ giống nhau của cột i trong H với cột j trong T. Chỉ số của phần tử cao nhất trong ma trận Rck,ct là chỉ số trong của khóa và mẫu trong thời gian của khóa được cho là đúng, vì nó chỉ ra rằng các cột tương ứng trong HT giống nhau nên có khả năng khóa đoán đã thực sự được sử dụng trong thiết bị.

Nhóm tiến hành tấn công thuật toán Kalyna cài đặt trên bo mạch Nucleo 64. Sau khi có được tệp vệt năng lượng khi thuật toán mã hóa Kalyna cài đặt trên bo mạch nhúng Nucleo 64. Nhóm tác giả tiến hành phân tích tìm lại khóa bí mật của thuật toán Kalyna.

Tấn công CPA yêu cầu rất cao về mặt đồng bộ giữa các vệt cho nên nếu các vệt không được đồng bộ thì khó có thể thực hiện được quá trình tấn công lên thuật toán. Trên Hình 5 là giá trị của 10 vệt năng lượng được xếp chồng lên nhau. Có thể thấy rằng các vệt năng lượng này được đồng bộ với nhau và có rất ít sự sai lệch ảnh hưởng đến quá trình phân tích ở phía sau. Sau khi thu được tệp vệt đã xử lý đồng bộ, nhóm tác giả tiến hành các bước phân tích CPA để tìm ra khóa.

Key = 74 ad 9b d0 22 14 2e db 81 35 f9 87 44 30 29 76

Res = 74 ad 9b d0 22 14 2e db 81 35 f9 87 44 30 28 76

Với tệp dữ liệu gồm 500 vệt năng lượng, nhóm tác giả có thể tấn công thành công 15/16 byte khóa bí mật. Tuy nhiên, đối với giá trị Key 14 có thể tấn công thành công thông qua việc tăng số lượng vệt thu được có thể giúp cho tấn công thành công 100%.

Hình 6. Kết quả tấn công tìm các byte khóa bí mật của thuật toán Kalyna

KẾT LUẬN

Nhóm tác giả đã tấn công và khôi phục đúng 15 byte trên tổng số 16 byte khóa của thuật toán Kalyna cài đặt trên bo mạch Nucleo 64. Qua đó có thể cho thấy hiệu quả của các dạng tấn công kênh kề nói chung và dạng tấn công CPA lên mật mã khối Kalyna, khi có thể tìm thành công 15/16 byte khóa bí mật. Nhóm tác giả đã xây dựng chương trình thực thi mã hóa Kalyna cài đặt trên bo mạch Nucleo 64, thiết lập quá trình thu thập vệt năng lượng trên hệ thống Analyzr để tạo tệp vệt năng lượng. Từ tệp vệt thu được, nhóm tác giả đã thực hiện tấn công CPA lên tệp vệt như đã trình bày ở trên. Nghiên cứu cho thấy rằng tấn công kênh kề hiện là một dạng tấn công nguy hiểm và cần nghiên cứu sâu hơn để từ đó có các biện pháp bảo vệ thuật toán mật mã chống lại dạng tấn công này.

TÀI LIỆU THAM KHẢO

[1]. 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.

[2]. Kocher P., Jaffe J., Jun B., et al., Introduction to differential power analysis, Journal of Cryptographic Engineering, 2011.

TS. Đinh Quốc Tiến, Phạm Hà Hải (Viện Khoa học - Công nghệ mật mã)

Tin cùng chuyên mục

Tin mới