Tấn công tiêm lỗi: Cách phát hiện và ngăn chặn
Có rất nhiều phương pháp để tin tặc có thể tấn công vào các thiết bị điện tử, chip, lõi mạch tích hợp (integrated circuit - IC) nhằm phá khóa bảo mật và đánh cắp thông tin bên trong. Một trong những phương pháp thường được tin tặc sử dụng là tấn công tiêm lỗi (Fault Injection Attack - FIA) [1].
FIA là một phương pháp tấn công cố ý gây ra một lỗi trong thiết bị để điều chỉnh việc thực thi của hệ thống nhằm tạo ra các lỗ hổng bảo mật của thiết bị. FIA đã được biết đến từ những năm cuối của thế kỷ XX, được mô tả khi các lỗi ngẫu nhiên gây ra bởi các hạt phóng xạ được tạo ra bởi các phần tử có mặt tự nhiên trong các vật liệu thiết kế vi mạch [2]. Các hạt này gây ra hiện tượng lật bit ở một số khu vực bên trong chip và gây ra các lỗi không mong muốn.
Tấn công FIA đang trở thành chủ đề được quan tâm khi số lượng tin tặc ngày càng gia tăng, cũng như phương thức hoạt động của chúng tập trung và được quản lý tốt hơn. Các nhà thiết kế hệ thống trên chip nhận thức sâu sắc rằng, cần có những giải pháp được thiết kế ngay từ đầu để chống lại các cuộc tấn công chip đang ngày càng phát triển hiện nay.
TẤN CÔNG TIÊM LỖI
Ngày nay, tin tặc phải đối mặt với lớp phòng thủ bảo mật đầu tiên là các thuật toán mật mã rất mạnh mẽ, điển hình như thuật toán AES và thuật toán RSA [3]. Một trong những phương pháp để phá vỡ các thuật toán này là tấn công vét cạn (brute force), tức là cố gắng thử toàn bộ tổ hợp khóa để mở khóa. Phương pháp này đòi hỏi nhiều công sức và thời gian của kẻ tấn công.
Thay vì phải tốn thời gian và công sức như vậy, kẻ tấn công sử dụng phương pháp tấn công kênh kề để bẻ khóa, ví dụ tấn công FIA hoặc tấn công phân tích năng lượng đơn giản (Simple Power Analysis - SPA). Phương pháp này tuy không dễ dàng nhưng có thể thành công trong thời gian ngắn hơn so với các cuộc tấn công tổng lực như đã đề cập.
Tấn công FIA khiến các thiết bị điện tử thực hiện công việc gì đó khác với những gì mà nó dự định làm. Mục đích của kẻ tấn công là tạo ra lỗi tạm thời trong quá trình thực thi một số hoạt động chip cụ thể, do đó dẫn đến việc giảm hoặc vô hiệu hóa các tính năng bảo mật và biện pháp ứng phó.
Tấn công phân tích năng lượng đơn giản là phương pháp tấn công lợi dụng sự tiêu thụ năng lượng không chủ ý sẽ cung cấp thông tin về hoạt động bên trong của chip. Đây là phương pháp tấn công không xâm lấn và cho phép các kẻ tấn công trích xuất các khóa bí mật được sử dụng trong quá trình hoạt động bình thường của thiết bị [4],[5].
Khi các khóa được trích xuất, kẻ tấn công có thể dễ dàng truy cập trái phép vào thiết bị, giải mã, giả mạo tin nhắn, đánh cắp danh tính, sao chép thiết bị, tạo chữ ký trái phép và thực hiện giao dịch trái phép. Kẻ tấn công có thể thử tấn công FIA trước, sau đó là tấn công SPA hoặc kết hợp cả hai kỹ thuật trên để làm cho cuộc tấn công trở nên dễ dàng hơn.
Có nhiều cách tiếp cận FIA, bài viết chỉ tập trung vào hai trong số những cách tiếp cận nổi bật nhất là sự cố nguồn và sự cố xung clock. Đây là những tấn công không xâm lấn và không gây ra thiệt hại cho thiết bị điện tử.
SỰ CỐ NGUỒN
Hình 1. Sơ đồ mạch điện tạo ra sự cố trong đường dây cung cấp năng lượng
Hình 1 mô tả sơ đồ mạch điện tạo ra sự cố nguồn (Glitch power) trên đường truyền cung cấp năng lượng của thiết bị. Sự cố tín hiệu (Glitch signal) sẽ gây ra lỗi có chủ đích vào nguồn cung cấp cho mạch. Lỗi này chỉ đủ vừa để không làm hư hại đến các thiết bị trong mạch. Từ đây, những kẻ tấn công thu thập thông tin bên trong và phân tích.
Để bắt đầu tấn công, kẻ tấn công cố gắng lựa chọn những con chip có firmware phù hợp. Hầu hết các hệ thống khởi động firmware đều từ tín hiệu bên ngoài. Kẻ tấn công có thể dễ dàng thay đổi nội dung của tín hiệu đó. Đây chưa phải là tấn công FIA mà chỉ là hành động tiền đề để thực hiện tấn công FIA. Ngay tại thời điểm đó, chức năng khởi động an toàn xác nhận và chấp nhận firmware từ tín hiệu ngoài. Nó kiểm tra tất cả các byte, thực hiện tính toán và kết thúc bằng câu lệnh chấp nhận “yes”.
Tại đây, kẻ tấn công bắt đầu công việc của mình. Câu lệnh “yes” trong các mạch kỹ thuật số có thể là các xung lên hoặc xung xuống, ví dụ tín hiệu bên trong đi từ 0 đến 1 hoặc 1 xuống 0 trong một chu kỳ xung nhịp, báo hiệu cho CPU rằng hệ thống đã sẵn sàng để khởi động. Nếu phần mềm khởi động kiểm tra không thành công, tín hiệu sẽ không thực hiện và CPU sẽ hiểu rằng hệ thống không thể khởi động. Kẻ tấn công sẽ làm trục trặc hệ thống bằng cách tăng xung điện áp hoặc tạo ra sự cố giả như trong Hình 2.
Hình 2. Kẻ tấn công làm tăng điện áp hoặc tạo ra sự cố giả
Để thực hiện được việc này, kẻ tấn công cần phải biết chính xác tại thời điểm nào CPU sẵn sàng thực hiện câu lệnh đó. Hành động làm rối xung điện áp này phải đủ ngắn và đủ thấp để không làm hỏng chip. Xung này có thể dẫn đến một số tín hiệu bên trong tăng lên và chờ đợi tín hiệu hợp lệ khởi động an toàn. Nếu điều này không thành công, tin tặc sẽ thử lại, thay đổi kích thước và thời gian liên quan cho đến khi chúng thực hiện được.
Sau khi thành công, tin tặc có thể yêu cầu CPU chấp nhận bất kỳ chương trình cơ sở nào, bao gồm cả mã không được phép chạy. Mã độc này có thể có các chương trình lặp bổ sung, tức là không cần phải thực hiện tấn công nhiều lần mà chỉ một lần thành công là có thể lấy được các khóa mật mã hoặc dữ liệu bí mật. Sau khi lấy cắp thông tin, chúng sẽ để lại các ám hiệu để người dùng biết được dữ liệu có giá trị đã bị đánh cắp.
SỰ CỐ XUNG CLOCK
Hầu hết các bộ vi xử lý hay các thiết bị điện tử đều sử dụng xung clock (glitch clock) [6]. Vì vậy phương pháp lợi dụng sự cố xung clock được tin tặc sử dụng rất phổ biến hiện nay. Để thực hiện sự cố này, tần số của xung clock thường được tăng lên trong một hoặc nhiều chu kỳ, nói cách khác một hoặc nhiều xung clock ngắn được kích thích để tăng tốc tạm thời cho clock của chip như Hình 3. Hành động này có tác dụng gây ra một lỗi khi một lệnh đang được thực thi. Ví dụ, CPU đọc một ô nhớ chính xác tại thời điểm xảy ra sự cố. Kết quả được đọc trước khi dữ liệu ổn định trên bus bộ nhớ nhưng dữ liệu khác vẫn chưa kịp thực hiện được, dẫn đến giá trị không chính xác được đọc. Một ví dụ khác, CPU lấy một lệnh từ bộ nhớ, ngay lúc này thực hiện tấn công sự cố xung clock và lệnh đó không được thực hiện vì xung clock nhanh đã kích hoạt CPU tìm nạp câu lệnh tiếp theo.
Hình 3. Một hoặc nhiều xung ngắn được thêm vào để tạm thời tăng tốc xung clock bên ngoài chip
CÁCH PHÁT HIỆN TẤN CÔNG FIA
Các nhà thiết kế và phát triển chip đã phát triển hai phương pháp phát hiện tấn công FIA: phương pháp trình biên dịch và phương pháp kiểm tra mô hình. Phương pháp trình biên dịch là phương pháp phát hiện dựa trên phần mềm, còn phương pháp kiểm tra mô hình phát hiện dựa trên phần cứng.
Các cuộc tấn công FIA có thể được phát hiện bằng cách lưu trữ dữ liệu dư thừa và xử lý tín hiệu dự phòng. Từ quan điểm trên, phương pháp trình biên dịch được chia ra gồm: tổng kiểm tra tính toàn vẹn dữ liệu, sao chép đơn giản, dự phòng bổ sung, mặt nạ dự phòng và trích dẫn tính toán [7]:
- Phương pháp tổng kiểm tra tính toàn vẹn dữ liệu được thiết lập bởi một hàm phi tuyến tính và được sử dụng rộng rãi trong kỹ thuật truyền thông để phát hiện ra các lỗi đường truyền.
- Phương pháp sao chép đơn giản là sao chép một biến để tạo ra các biến có cùng kích thước, kiểu chữ. Tất cả các hoạt động của đường dẫn dữ liệu thông thường được sao chép và thực hiện trong nhiều đường dẫn dữ liệu. Thứ tự các đường dẫn khác nhau không phụ thuộc vào nhau và các đường dẫn dữ liệu khác nhau có thể được trộn lẫn ngẫu nhiên, khiến tin tặc không nhắm được đúng mục tiêu cần tấn công.
- Phương pháp dự phòng bổ sung sử dụng kiểu dữ liệu nghịch đảo so với dữ liệu gốc. Thay vì lấy cùng một giá trị để dự phòng, giá trị đảo ngược nhị phân có thể được sử dụng để thay thế.
- Phương pháp mặt nạ dự phòng thường được biết đến như là một biện pháp hiệu quả để chống lại các cuộc tấn công kênh kề hay tấn công FIA. Sự phụ thuộc giữa mức tiêu thụ năng lượng và các biến đã xử lý được loại bỏ bằng cách áp dụng mặt nạ ngẫu nhiên cho giá trị v:
vm = v.m (1)
với v – giá trị năng lượng của các linh kiện điện tử, vm – giá trị năng lượng ngẫu nhiên của linh kiện điện tử, m – hằng số ngẫu nhiên.
- Phương pháp trích dẫn tính toán là một phương pháp phát hiện lỗi xảy ra trong một hoặc tập hợp hoạt động. Kết quả của một thuật toán được xác minh bằng cách sử dụng các đặc tính của các hoạt động đang được thực hiện. Mặc dù phương pháp này có thể sẽ yêu cầu bộ nhớ tạm thời để thực hiện, như tất cả bộ nhớ đó sẽ được giải phóng ngay sau khi hoàn thành trích dẫn.
Phương pháp kiểm tra mô hình được sử dụng để kiểm tra mô hình sử dụng so với mô hình mẫu của nhà nhiết kế đưa ra, nhằm đảm bảo trong mạch hay chip không được gắn thêm phục vụ cho mục đích khác. Phương pháp này đòi hỏi thời gian và chi phí nên thường rất ít được sử dụng.
Ngoài hai phương pháp trình biên dịch và kiểm tra mô hình, hiện nay còn có một phương pháp khác là kết hợp của hai phương pháp này, hay được gọi là FedS [8]. FedS là khung tự động đầu tiên có thể xác định khả năng khai thác lỗi trong triển khai phần mềm, xem xét các thuộc tính mật mã phức tạp và các mô hình lỗi.
CÁCH NGĂN CHẶN TẤN CÔNG FIA
Các nhà thiết kế chip và thiết bị điện tử đã cố gắng thiết lập các giải pháp để bảo vệ các lỗ hổng của chip và FIA, trong đó bao gồm một số biện pháp điển hình như: dự phòng các tín hiệu logic điều khiển quan trọng, canary logic, mã Hamming, logic bus tách biệt. Những biện pháp này nằm trong Rambus Root-of-Trust core – phần mềm được phát triển dựa trên kỹ thuật nhúng, nhằm đảm bảo không có bất kỳ con đường tấn công nào để tin tặc có thể lợi dụng [9 - 11].
Logic điều khiển là một môi trường dễ bị tấn công FIA. Việc trục trặc tín hiệu điều khiển ngay lập tức dẫn đến sự cố xảy ra trong mạch điện, nghĩa là kiểm tra bảo mật bị vô hiệu hóa. Khi đó Rambus Root-of-Trust core sẽ duy trì dự phòng cho các tín hiệu điều khiển quan trọng. Điều này có nghĩa là tất cả các tín hiệu điều khiển được thực hiện nhiều lần, nhưng chúng được thực hiện khác nhau. Nếu một tin tặc tấn công FIA vào một tín hiệu điều khiển nào đó, ngay lập tức tín hiệu đó sẽ không được thực hiện và Rambus Root-of-Trust core sẽ đưa ra lệnh dự phòng. Lệnh này sẽ được thực thi vì rất khó để tin tặc có thể tấn công nhiều lần cùng một thời điểm.
Một biện pháp khác nữa là mã Hamming tín hiệu điều khiển. Cách thức hoạt động của biện pháp này là sử dụng các máy chủ được điều khiển trong CryptoManager Root of Trust (CMRT), là một thiết kế đồng xử lý bảo mật phần cứng độc lập để tích hợp vào các thiết bị bán dẫn, chạy một chuỗi lệnh được xác định trước để thực hiện hành động điều khiển. Điều này rất quan trọng để đảm bảo rằng các máy chủ hoạt động đúng thứ tự và đúng thời điểm. Tấn công FIA có thể ảnh hưởng đến các máy chủ, vì vậy cần đảm bảo rằng các mã Hamming luôn lớn hơn 1. Đây là một biện pháp đối phó hiệu quả rất cao nhằm phát hiện và đưa ra cảnh báo trạng thái bị tấn công trong các thiết bị điện tử hoặc chip.
Biện pháp cung cấp một cơ chế để xác định xem tin tặc có đang tấn công vào tín hiệu xung clock hay không. Đây là phương pháp thay thế thời gian để biết được một sự kiện cần phải xảy ra trong bao lâu. Khi clock hoạt động chính xác thì chip hay thiết bị điện tử hoạt động theo đúng thông số kỹ thuật chính xác. Để thực hiện được phương pháp này thì cần có thêm một kiểm tra bảo mật ở cuối nữa là “yes” hoặc “no”. Nếu tin tặc tấn công tín hiệu xung clock thông qua FIA, canary logic sẽ ngưng thực hiện câu lệnh đó. Điều này khiến màn hình an ninh hiển thị sự cố và ngay lập tức tài liệu quan trọng sẽ bị xóa để không bị đánh cắp thông tin.
Biện pháp logic bus tách biệt là một biện pháp ứng phó quan trọng khác. Khóa mật mã là dữ liệu kỹ thuật số. Trong hầu hết các trường hợp, nó được truyền qua các bus thông thường, phần lớn trên các chip. Tuy nhiên để bảo mật chặt chẽ hơn thì cần truyền trên các bus riêng. Nếu một hệ thống đang bị tấn công và mã độc đang chạy trên chip, nó không thể truy cập các khóa đó vì chúng ở trên một bus khác.
KẾT LUẬN
Ngày nay, cùng với sự phát triển của khoa học công nghệ trong lĩnh vực an toàn thông tin, ngày càng có nhiều phương pháp mà kẻ tấn công có thể sử dụng để bẻ khóa, đánh cắp dữ liệu. Tấn công FIA là vấn đề cấp bách cần phải được nghiên cứu nhiều và chuyên sâu hơn. Từ đó có thể chủ động phát hiện và ngăn chặn tấn công FIA nói riêng và tấn công mạng nói chung, đảm bảo an toàn thông tin cho các hệ thống.
Tài liệu tham khảo 1. A. Vosoughi and S. Köse. Leveraging on-chip voltage regulators against fault injection attacks. In Proceedings of the 2019 on Great Lakes Symposium on VLSI, pages 15–20, May 2019. 2. Timothy C. May and Murray H. Woods. A New Physical Mechanism for Soft Errorsin Dynamic Memories. In16th International Reliability Physics Symposium, pages 33–40, April 1978. 3. C. Aumüller and et al. Fault attacks on RSA with CRT: Concrete results and practical countermeasures. In International Workshop on Cryptographic Hardware and Embedded Systems, pages 260–275. Springer, August 2002. 4. Loïc Zussa, Jean-Max Dutertre, Jessy Clédière, Assia Tria. Power supply glitch induced faults on FPGA: an in-depth analysis of the injection mechanism. On-Line Testing Symposium (IOLTS), 2013 IEEE 19th International, Jul 2013, Chania, Greece. 5. A. Barenghi, G. M. Bertoni, L. Breveglieri, M. Pellicioli, and G. Pelosi, “Low Voltage Fault Attacks to AES,” in Proc. International Symposium on Hardware-Oriented Security and Trust, pp. 7–12, 2010. 6. Yifei Qiao, Zhaojun Lu, Hailong Liu, and Zhenglin Liu, “Clock Glitch Fault Injection Attacks on an FPGA AES Implementation”, in Journal of Electrotechnology, Electrical Engineering and Management (2017) Vol. 1, Number 1 Clausius Scientific Press, Canada. 7. Hillebold Christoph, Compiler-Assisted IntegrityagainstFault Injection Attacks, Institute for Applied Information Processing and Communications Graz University of Technology In eldgasse 16a8010 Graz, Austria. 8. K, K., Roy, I., Rebeiro, C., Hazra, A., & Bhunia, S. (2020). FEDS: Comprehensive Fault Attack Exploitability Detection for Software Implementations of Block Ciphers. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2020(2), pp. 272-299. 9. F. Armknecht and W. Meier, “Fault attacks on combiners with memory,” in Proc. Selected Areas in Cryptography, vol. 3897, pp. 36–50, 2006. 10. W. G. Halfond and A. Orso. Combining Static Analysis and Runtime Monitoring to Counter SQL-Injection Attacks. In Proceedings of the Third International ICSE Workshop on Dynamic Analysis (WODA 2005), pages 22–28, St. Louis, MO, USA, May 2005. 11. Barenghi, L. Breveglieri, I. Koren, and D. Naccache. Fault Injection Attacks on Cryptographic Devices: Theory, Practice, and Countermeasures.Proceedings of theIEEE, 100(11):3056–3076, Nov 2012. |
TS. Phạm Văn Tới, ThS. Bạch Hồng Quyết