Thực nghiệm tấn công tiêm lỗi nguồn điện vào bộ sinh số ngẫu nhiên vật lý

14:00 | 23/05/2024 | MẬT MÃ DÂN SỰ
Tiêm lỗi nguồn điện (Power Fault Injection - PFI) là một trong những tấn công mạnh mẽ nhất để phá vỡ hệ thống bảo mật. PFI không tấn công trực tiếp vào các phép tính của thuật toán, mà tập trung vào sự thực thi vật lý của các thiết bị mật mã. Đối tượng chính mà kỹ thuật tấn công này khai thác là các linh kiện điện tử (chip mật mã) luôn tiêu thụ nguồn điện, hệ quả là, đầu ra của bộ sinh số ngẫu nhiên vật lý bị suy giảm mạnh, khi điện áp đầu vào nằm trong điều kiện tấn công. Bài báo này đề xuất mạch thiết kế một Bộ tạo số ngẫu nhiên thực TRNG (true random number generator) trong chip Spartan3 XC3S1000 bằng công cụ Altium Designer, thực hiện tấn công tiêm lỗi nguồn điện trên thiết bị và đánh giá các kết quả đầu ra.

TỔNG QUAN

Trong suốt những năm qua, các nhà nghiên cứu đã tập trung vào khai thác các kỹ thuật khác nhau để trích xuất dữ liệu nhạy cảm từ các thiết bị mật mã. Ban đầu, các giải pháp phần mềm nhắm tới các biến thể mã độc khác nhau để tấn công các ứng dụng đang chạy trên hệ điều hành máy tính [1, 3]. Tuy nhiên, các thiết bị mật mã được bảo vệ bằng nhiều lớp an toàn nhằm chống lại các loại tấn công này, vì vậy nhiều nghiên cứu đã chuyển hướng sang các kỹ thuật tấn công phần cứng.

Trong vài thập kỷ qua, một hình thức tấn công mới, được gọi là tiêm lỗi (fault injection), đã xuất hiện, gia tăng và phát triển mạnh. Thay vì phải đánh giá an toàn cấu trúc toán học của thuật toán, những cuộc tấn công tiêm lỗi cố gắng can thiệp vào hoạt động của phần cứng khiến thuật toán mất đi tính đúng đắn theo lý thuyết hay trích xuất ra được thông tin về giá trị khóa bí mật bằng cách lợi dụng các điểm yếu trong việc cứng hóa thuật toán. Kẻ tấn công có thể khai thác các lỗ hổng tồn tại trong phần cứng của chipset như điện áp, xung nhịp hoặc nhiệt độ. Cơ chế phát hiện tấn công tiêm lỗi vào SRAM đã được đề xuất bằng cách nhân bản các modul chuyên dùng trong thiết bị mật mã, như hộp thế (S-box) để nhận diện ra tấn công. Cơ chế này thực thi so sánh tín hiệu đầu ra tại các modul nhân bản trong thiết bị và phát hiện ra các lỗi được tiêm vào thiết bị.

Trong bài báo này, nhóm tác giả đã thực hiện tiêm lỗi nguồn điện áp vào bộ sinh số ngẫu nhiên vật lý TRNG chạy trong chip FPGA XC3S1000 của Kit Nanoboard 1. Thay đổi các ngưỡng về nguồn cung cấp điện năng (trong dải nguồn nuôi danh định) cho bo mạch FPGA, rồi tiến hành thu kết quả dãy bit sinh ra và lưu trữ để đối sánh với dãy bit bình thường ban đầu.

TẤN CÔNG TIÊM LỖI PFI VÀO BỘ SINH SỐ NGẪU NHIÊN VẬT LÝ

Thiết lập TRNG chạy trong chip FPGA

TRNG là một phần cần thiết trong các bộ phận tích hợp nhúng trong các hệ thống mật mã. Chúng cung cấp các khóa bí mật, các vector khởi tạo, các thách thức và các mặt nạ ngẫu nhiên cho các thuật toán mã hóa, các giao thức và các thiết kế an toàn khác nhau. Tính bảo mật của những ứng dụng này phụ thuộc vào tính không thể đoán trước của các số ngẫu nhiên được sử dụng. TRNG được sử dụng trong bài viết này được thiết lập trên chipset FPGA Xillinx Spartan-3 XC3S1000-4FG456C trên Nanoboard 1, được thiết kế ban đầu bằng cách sử dụng nhiều bộ dao động vòng theo đề xuất của Kris Gaj [4] . Sau đó, các bit ngẫu nhiên được xử lý qua khối xử lý sau cùng, đó là một thanh ghi dịch chuyển phản hồi tuyến tính, sau đó, đầu ra được đẩy qua cổng UART để nhận các bit ngẫu nhiên trên một thiết bị đầu cuối.

Hình 1. TRNG sử dụng bộ dao động vòng

Bộ sinh số ngẫu nhiên TRNG (Hình 1) bao gồm hai phần, phần bên trái là 2 bộ dao động vòng, gọi là khối nguồn entropy, hình thành nên tính ngẫu nhiên không cho phép dự đoán của bộ tạo số, được dựa trên hiệu ứng nhiễu điện tử của vòng dao động [4] . Phần bên phải của Hình 1 là khối thực hiện lấy mẫu nhằm chuyển đổi tín hiệu nhiễu ngẫu nhiên liên tục ở các ROs thành tín hiệu số 1 và 0. Tín hiệu tại đầu ra của vòng dao động đầu tiên đóng vai trò làm xung CLK cho mạch lấy mẫu (Hình 1), hơn nữa, do 2 vòng ROs hoạt động độc lập, nên tín hiệu nhịp của chúng sẽ bị Jitter một cách ngẫu nhiên (tồn tại những khác biệt nhỏ trong thiết kế layout của từng RO và các tác động về nhiệt độ, sự già hóa của các cực bán dẫn,…). Vì vậy, các dao động vòng sẽ sinh ra “miền” nhiễu ngẫu nhiên.

Miền nhiễu trong tín hiệu CLK0 sẽ được thể hiện trong chu kỳ bất định của tín hiệu S0. Trong Hình 1, flipflop thứ 2 nhận tín hiệu CLK1 có đầu ra C0 đóng vai trò là bộ đếm 1-bit theo chu kỳ CLK1. Bằng cách sử dụng tín hiệu S0 (chứa miền nhiễu), kết quả sẽ thu được các bit ngẫu nhiên “Randout” thông qua giá trị C0, khi tín hiệu S0 đồng thời cấp nhịp cho FF-D (chân chọn chip CE được E0 kích hoạt sẵn ở mức logic phù hợp). Các bit ngẫu nhiên được chuyển từ bộ tạo số ngẫu đến thanh ghi dịch chuyển tuyến tính để chuyển đổi các bit nối tiếp thành 8 bit song song, sau đó được đưa tới vi xử lý TSK3000 tích hợp trong chipset FPGA để xuất ra qua giao diện UART.

Các kết quả thu được gửi đến terminal và ghi lại thành file “test.txt” để kiểm tra chất lượng các số ngẫu nhiên sinh ra.

Tiêm lỗi nguồn điện vào TRNG

Các thiết bị điện tử luôn hoạt động bình thường ở mức điện áp danh định, cụ thể với chipset Spartan-3 XC3S1000-4FG456C được sử dụng để thiết kế bộ sinh TRNG, nó có mức điện áp hoạt động ổn định xấp xỉ 5V.

- Phương pháp thực hiện cuộc tấn công: Chúng tôi kết hợp nguồn nuôi Adapter cung cấp điện áp danh định 5V (Hình 2) cho thiết bị; sau đó, ngắt nguồn Adapter bằng chuyển mạch SW, và sử dụng thiết bị cung cấp nguồn điện HMP2030 có khả năng thay đổi tuyến tính điện áp cung cấp cho chipset FPGA. Trên cơ sở đó, các bit ở đầu ra của bộ sinh sẽ được ghi lại và kiểm tra theo bộ tiêu chuẩn thống kê NIST SP-800- 22A. Thiết bị thực hiện tấn công tiêm lỗi nguồn nuôi trong nghiên cứu này là HMP2030, có khả năng điều chỉnh điện áp trong khoảng từ 0-32 VDC/4A. Các đầu ra sau đó được thu thập để đánh giá theo các ngưỡng thống kê NIST.

Hình 2. Nguyên lý thu bit ngẫu nhiên “Randout” của TRNG

Hình 3. Sơ đồ tấn công tiêm lỗi nguồn điện

KẾT QUẢ THỰC NGHIỆM

Trong phần này, nhóm tác giả thu thập và đánh giá bộ tạo TRNG dưới cuộc tấn công tiêm lỗi nguồn điện bằng cách so sánh đầu ra trước và sau các cuộc tấn công.

Nhóm đã thu thập các bit ngẫu nhiên được tạo ra trong trạng thái bình thường và dưới cuộc tấn công tại sáu mức điện áp từ 3.5V - 6.5V trong 6 ngày: ngày 17, 18, 19, 24, 25 và 26/4, khi thời tiết thay đổi. Đầu tiên, nhóm tác giả so sánh sự khác biệt giữa số lượng bit 1 và bit 0 (Bảng 1). Trong một chuỗi ngẫu nhiên lý tưởng, độ lệch bit 1 và bit 0 là không đáng kể (kết quả so sánh cho mỗi triệu bit thu được ở mỗi mức điện áp).

Bảng 1. Độ lệch bit 1 và bit 0 theo các mức điện áp và điều kiện môi trường khác nhau

Quan sát từ các số liệu thu thập trong bảng, bộ sinh số ngẫu nhiên TRNG hoạt động ổn định nhất ở điện áp danh định 5V cấp cho chipset FPGA và tương đối ổn định trong dải điện áp từ 4.5V - 5.5V, trong điều kiện nhiệt độ và độ ẩm môi trường bình thường ở phòng thực nghiệm. Ngoài khoảng điện áp [4.5; 5.5], đầu ra bộ sinh TRNG bắt đầu sai lệch đáng kể: cụ thể, ngày 24-25/4, đầu ra của bộ sinh bị ảnh hưởng khi thời tiết thay đổi, nhiệt độ giảm đột ngột xuống 100o C; còn ở mức điện áp tiêu chuẩn 5V vào ngày 26/4/2023, độ lệch giữa bit 0 và bit 1 khá lớn (3611 bit và 2511 bit).

Bộ kiểm tra NIST 800-22 [5] được sử dụng để đánh giá tính ngẫu nhiên của các số ở đầu ra. File đầu ra bộ tạo TRNG tại mỗi mức điện áp tấn công, ứng với điều kiện môi trường nhất định, được đưa vào bộ kiểm tra NIST chạy trên máy tính Ubuntu để kiểm tra theo các tiêu chí thống kê.

Thông qua quá trình thu thập và kiểm tra, chuỗi bit được tạo ra bởi bộ tạo TRNG chỉ vượt qua được tối đa 14/15 bài kiểm tra NIST. Điều này được giải thích bởi thiết kế bộ sinh TRNG trong bài báo này chỉ có 2 vòng dao động RO, chưa có thiết kế khối chức năng xử lý sau [6] .

Bộ tạo TRNG chạy trong chip FPGA ổn định nhất ở điện áp tiêu chuẩn của nó (5V). Tất cả các chuỗi được tạo ra ở mức này trong 6 ngày thu thập đều vượt qua 14/15 tiêu chuẩn đánh giá. Chuỗi bit đầu ra bị ảnh hưởng khi bộ sinh TRNG bị tấn công, và không còn vượt qua các tiêu chuẩn kiểm tra NIST nữa, đặc biệt có 4 tiêu chuẩn kiểm tra mà dãy bit thường thất bại khi tấn công tiêm lỗi là: 1, 9, 13, 14 và 15.

Độ lệch bit là một tiêu chí quan trọng, vì nó phản ánh tần suất xuất hiện của bit 1 và bit 0. Theo tài liệu [5], tiêu chuẩn kiểm tra thứ 1 là bài kiểm tra quan trọng nhất, nó làm tiền đề cho các tiêu chuẩn kiểm tra tiếp theo. Do đó, nhóm tác giả kết luận rằng mức làm việc ổn định của TRNG nằm ở mức tiêu chuẩn (5V). Ngoài ra, khi bị tấn công với ±1V, chất lượng của bộ tạo số bắt đầu giảm, độ lệch bit tăng lên và đầu ra bắt đầu không vượt qua các tiêu chuẩn kiểm tra thống kê. Đặc biệt ở ngoài dải điện áp [4.5; 5.5], hoạt động của bộ tạo số tiếp tục không ổn định và chuỗi kết quả mất dần hết tính ngẫu nhiên, độ lệch bit tăng lên 10000 và số bài kiểm tra thất bại tăng đến 6. Ngoài ra, thu thập thống kê cũng đã chỉ ra rằng điều kiện nhiệt độ và độ ẩm môi trường cũng có thể ảnh hưởng đến chất lượng sinh số ngẫu nhiên của mạch TRNG. Mặc dù, các kết quả kiểm tra thống kê cho thấy sự thay đổi không lớn, số lượng bit 1 và bit 0 có lệch nhau nhưng không đáng kể.

KẾT LUẬN

Trong bài báo này, kịch bản tấn công tiêm lỗi nguồn điện đã được thực hiện đối với bộ sinh số ngẫu nhiên vật lý TRNG chạy trong chip FPGA, và các đầu ra đã được thu thập và đánh giá. Kết quả cho thấy rằng mức điện áp tấn công càng lớn, lệch xa khỏi dải điện áp danh định, thì chất lượng số ngẫu nhiên càng thấp. Tuy nhiên, thiết kế của bộ sinh TRNG này mới gồm 2 vòng dao động ROs (mỗi vòng chứa 2 cổng INV và 2 FF-D), do đó, kết quả này chưa hoàn toàn tổng quát cho các bộ tạo TRNG khác. Tuy nhiên, chất lượng của khối nguồn bất định (2 vòng ROs) có tính chất quyết định đối với bộ sinh TRNG đã được các tác giả khảo nghiệm.

Trên cơ sở các số liệu thực nghiệm, cho thấy rằng việc dùng các bộ sinh TRNG cần bổ sung thêm khối xử lý sau trong thiết kế để đảm bảo tốt chất lượng của các số ngẫu nhiên ở đầu ra. Mục tiêu của nhóm tác giả trong tương lai sẽ thiết kế các bộ sinh TRNG với nhiều vòng dao động hơn và kiểm thử với nhiều kịch bản tấn công tiêm lỗi khác, như: tiêm lỗi nhiệt độ, tiêm lỗi tần số xung nhịp hoặc tiêm lỗi điện từ trường, đồng thời cũng thực hiện đánh giá thêm với công cụ AIS20/31 [4] đối với các bộ sinh TRNGs.

TÀI LIỆU THAM KHẢO

[1]. A. Barenghi, L. Breveglieri, I. Koren, D. Naccache, “Fault Injection Attacks on Cryptographic Devices: Theory, Practice, and Countermeasures”. Proc. IEEE 2012, 100, 3056-3076.

[2]. Z. Wang and R.B. Lee., “New cache designs for thwarting software cache-based side-channel attacks”. In Proceedings of the 34th annual international symposium on Computer Architecture (ISCA ’07). Association for Computing Machinery, New York, NY, USA, 494-505. https://doi. org/10.1145/1250662.1250723.

[3]. F. Valencia, T. Oder, T. Guneysu, F. Regazzoni., “Exploring the Vulnerability of R-LWE Encryption to Fault Attacks”. In Proceedings of the Fifth Workshop on Cryptography and Security in Computing Systems, Online, 24 January 2018; pp. 7-12.

[4]. Kris Gaj, Paul W. Kohlbrenner., “The Design and Analyses of a True Random Number Generator in a Field Programmable Gate Array”, MS Thesis, ECE Department, George Mason University, Dec 2003.

[5]. Andrew Rukhin, Juan Soto, James Nechvatal, Miles Smid, Elaine Barker, Stefan Leigh, Mark Levenson, Mark Vangel, David Banks, Alan Heckert, James Dray, San Vo., “A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications”. NIST Special Publication 800-22 Revision 1a, 2010.

[6]. S.Bhunia; M.Tehranipoor, “Hardware Security: A Hands-on Learning Approach”. Elsevier/Morgan Kaufmann: Cambridge, MA, USA, 2019.

ThS. Nguyễn Như Chiến, TS. Nguyễn Đức Công (Học viện Kỹ thuật mật mã)

Tin cùng chuyên mục

Tin mới