Chương 2 : CÔNG NGHỆ THẺ EMV
2.2 VẤN ĐỀ BẢO MẬT TRONG THẺ THÔNG MINH
2.2.2 Những biện pháp bảo vệ
2.2.2.1 Phòng chống tấn công qua kênh phụ
Có một vài biện pháp bảo vệ thuật toán khỏi sự tấn công dựa vào việc tiêu thụ năng lượng, mặc dù một số biện pháp này chỉ có thể làm cho việc tấn công gặp khó khăn hơn. Việc kết hợp tất cả các biện pháp dưới đây sẽ làm cho việc tấn công thuật toán bảo mật trở nên hết sức khó khăn, do đó tất cả các biện pháp này cần phải được tính đến, đó là:
a) Thực thi nhất quán:
Như đã mô tả ở trên, thời gian thực hiện một thuật toán nên là một khỏang thời gian cố định vì như thế sẽ tránh được việc tiết lộ các thông tin bí mật. Nếu thời gian của mỗi quá trình riêng lẻ là khác nhac phụ thuộc vào một số thông tin bí mật, và sự khác nhau về mặt thời gian này là do một chức năng giả tạo ra thì đây là cơ hội tốt để nhìn thấy sự khác biệt về mặt thời gian trong việc tiêu thụ năng lượng. Do vậy, việc viết một thuật toán có cùng mã cho tất cả các giá trị để các thông tin bí mật được hoán vị có thể lấy được là rất quan trọng.
b) Ngắt nghỉ ngẫu nhiên:
Biện pháp này có thể được chèn vào tại các điểm khác nhau trong thuật toán đang được thực thi, ví dụ có thể gọi ra lượng thời gian thực thi của một chức năng giả. Lúc này thuật toán không thể phù hợp với các tiêu chí của biện pháp thực thi nhất quán như miêu tả ở trên, nhưng bất cứ sự biến đổi nào cũng độc lập với bất cứ thông tin bí mất nào. Đây là phải là biện pháp phòng chống tấn công tuy nhiên cũng là một cách gây khó khăn hơn cho những kẻ tấn công. Để tiến hành bất cứ sự phân tích năng lượng nào thì kẻ tấn công cũng phải đồng nhất hóa tất cả những đường tiêu thụ năng lượng thành 1 posteriori. Tác động của việc tiến hành những tấn công phân tích năng lượng xử lý dữ liệu này khi có sự ngắt nghỉ ngẫu nhiên
c) Sự ngẫu nhiên:
Ở vị trí mà dữ liệu được hoán vị theo cách sự có mặt của các giá trị trong bộ nhớ luôn được ngụy trang cùng với một sự ngẫu nhiên. Sự ngẫu nhiên hóa này sẽ là cố định trong một lần thực thi thuật toán, nhưng sẽ thay đổi theo từng đường thu thập tiêu thụ năng lượng. Sự ngụy trang này sau đó sẽ được di chuyển đến cuối của thuật toán để tạo ra mã hóa.
Quy mô của sự ngẫu nhiên thường bị giới hạn khi S-boxes cần được ngẫu nhiên hóa trước khi thực hiện việc ngẫu nhiên để các giá trị đầu vào và đầu ra của S-box sẽ không bị dò rỉ thông tin. Việc này được thực hiện khi sử dụng một thuật toán như Thuật toán I.3
Thuật toán I.3: Ngẫu nhiên hóa các giá trị S-box
Đầu vào: S = (s0, s1, …, sn-1)2, chứa S-box, R một số ngẫu nhiên [0, n], và r là một số ngẫu nhiên [0, x)
Đầu ra: RS = (rs0, rs1, …, rsn-1)2 chứa S-box được ngẫu nhiên hóa 1. for i := 1 to n
2. rsi := s(iR) r;;
3. return RS
Trong trường hợp của AES cả R và r sẽ là một byte, điều đó có nghĩa là mặt nạ ngẫu nhiên trong quá trình tính toán có thể sẽ bằng 1 byte. Có những tấn công về mặt lý thuyết đối với phương pháp bảo vệ này tuy nhiên việc thực hiện trên thực tế vẫn chưa được công bố.
Điều này sẽ là không thể xảy ra đối với trường hợp của RSA, nơi mà các phương pháp tính toán không hỗ trợ cho các biện pháp được miêu tả ở trên. Một phương pháp ngẫu nhiên hóa việc tính toán của RSA, vị trí sẽ tạo ra chữ ký.
Đây không phải là một thuật toán bảo mật bởi vì một thành tố môđun tự nó cũng được bảo mật chống lại các tấn công SPA.
Thực thi ngẫu nhiên hóa là sự hóan vị của dữ liệu theo một trật tự ngẫu nhiên để một kẻ tấn công không biết được những gì đang được hóan vị. Trong trường hợp Thuật toán I.1, một kẻ tấn công sẽ không biết được bit nào đang bị hoán vị tại bất kỳ thời điểm nào. Nếu sự kết hợp có thể n! thì một tấn công bằng cách phân tích năng lượng đơn giản sẽ hết sức khó khăn.
Biện pháp này cũng ngăn chặn bất kỳ sự phân tích năng lượng của việc tiêu thụ năng lượng vì điều này phụ thuộc vào cùng một biến vô danh được xử lý vào cùng một thời điểm. Khi một kẻ tấn công không biết thứ tự mà dữ liệu được xử lý thì đây là một biện pháp bảo vệ rất hữu ích khi kết hợp với biện pháp ngẫu nhiên.
2.2.2.1 Phòng chống tấn dựa vào lỗi
a) Checksums: là kỹ thuật được sử dụng để xác định tính toàn vẹn của dữ liệu vào mọi thời điểm. Điều này hết sức quan trọng đối với các dữ liệu bị di chuyển từ bộ nhớ này sang bộ nhớ khác. Ví dụ: một lỗi được xen vào trong một thay đổi RSA có thể làm tổn hại khóa bí mật.
b) Cắt bỏ biến (Variable redundancy): là việc tái tạo lại các biến trong bộ nhớ và các chức năng mà mỗi biến thực hiện một cách độc lập. Kết quả sẽ là đúng nếu hai câu trả lời được xác định.