Mật mã ngày nay được coi như một công cụ hữu hiệu để bảo vệ các hệ thống thông tin và các ứng dụng công nghệ thông tin. Với sự phát triển của mật mã hiện đại thì việc tấn công thám mã trực diện theo lý thuyết toán học rất khó khăn. Tuy nhiên tất cả các lý thuyết phân tích mã phức tạp đó đều có thể bị vô hiệu nếu kẻ tấn công biết được một lượng thông tin, dù là nhỏ về các giá trị trung gian của quá trình mã. Bài báo này trình bày khả năng sử dụng các lỗ hổng trong quá trình thực thi mã hóa của thiết bị mật mã và khả năng tìm kiếm khóa mã từ các tham số vật lý cụ thể là yếu tố thời gian của các thông tin mà kẻ tấn công thu được.
Các điểm yếu xuất hiện từ đâu?
Các điểm yếu mật mã xuất phát trong việc thực thi thuật toán mật mã có thể được xem xét trong các môi trường khác nhau: toán học, lập trình và phần cứng vật lý. Dựa trên các điểm yếu đó sẽ có các loại tấn công tương ứng khác nhau.
Đối với bất kì thuật toán nào muốn thực thi, thì cần phải chuyển đổi thành các chương trình. Chính trong quá trình làm việc của các chương trình này, các thông tin quan trọng về hoạt động của bộ mã hóa có thể bị rò rỉ thông qua các lỗ hổng. Các lỗ hổng như tràn bộ đệm, hoạt động thiếu chính xác với các bộ nhớ,… và các đặc trưng khác của môi trường lập trình cho phép kẻ tấn công tìm được các khóa mã bí mật mà không cần sử dụng tới các tính toán toán học phức tạp. Dữ liệu là trạng thái vật lý thực tế của các phần tử logic và việc thực thi tính toán là các tiến trình vật lý chuyển từ trạng thái này sang trạng thái khác. Do đó, việc thực thi chương trình là sự biến đổi của các tín hiệu vật lý và từ quan điểm này thì kết quả hoạt động của thuật toán sẽ được xác định bởi các quy luật vật lý.
Điều kiện môi trường bên ngoài cũng có những tác động quan trọng tạo ra điểm yếu trong các thuật toán. Hãy xem xét ví dụ điện thế cần cấp cho bộ vi xử lý. Chuyện gì xảy ra nếu như điện thế này rơi về trị số 0 trong một vài nano giây? Đầu tiên, có thể thấy là bộ vi xử lý sẽ không khởi động lại, nhưng các phép cộng của các tiến trình vật lý sẽ bị gián đoạn và kết quả của thuật toán sẽ không chính xác. Điều này gây ra lỗi vào đúng thời điểm, kẻ tấn công có thể tính được khóa bằng cách so sánh bản mã được thực hiện chính xác và bản mã sai. Việc thay đổi các điều kiện môi trường được sử dụng để tính toán khóa được gọi là các Tấn công lỗi (Fault attacks).
Dưới đây sẽ phân tích khía cạnh điểm yếu vật lý, là tấn công kênh kề theo thời gian.
Tấn công theo thời gian
Tấn công kênh theo thời gian với thuật toán DES được mô phỏng bằng chương trình sử dụng ngôn ngữ C++ có sơ đồ thuật toán được thể hiện trên hình 1
