Side Channels
Attack
Thành viên
Nguyễn Văn Quân
Phạm Minh Thành
Đinh Trần Thái Sơn
Nguyễn Duy Tài
Mục lục
Giới thiệu
Side-Channel Attacks
Timing Attacks
Power Analysis
Information leaking
Cache Attacks
Phòng tránh
Side-channels
Có những thông tin bị lộ ra trong quá trình thực
thi.
Ví dụ: Các tên trộm phá khoá bằng cách nghe các
âm thanh từ khoá két sắt.
Tương tự,trong bảo mật, các hacker quan sát các
thông tin về thời gian/năng lượng,… để qua mặt
các bước bảo mật.
Ví dụ
Các thông tin có thể khai thác từ một máy cá nhân:
Thời gian
Nhiệt độ
Âm thanh
Cache
Năng lượng
Sóng điện
…
Định nghĩa Side-channels attack
Wiki: side channel attack is any attack based on
information gained from the
physical implementation of a cryptosystem,
rather than brute force or theoretical weaknesses
in the algorithms
( />
Sử dụng nhiều nhất trong việc phân tích mật mã.
Phân tích mật mã bằng Side Channel
Sự mã hoá:
Plaintext
Cipher
Ciphertext
Key
Phân tích mật mã bằng Side Channel
Sự mã hoá trong thực tế:
Plaintext
Cipher
Ciphertext
Key
Side
Channels
Phân tích mật mã bằng Side Channel
Side Channel Cryptanalysis: quan sát các “sản phẩm” phát ra từ hệ
thống mã hoá trong quá trình hoạt động
Các “kịch bản” tấn công:
Timing Attacks
Power Analysis
Information Leaking
Cache Attacks
Sound Analysis
…
Timing Attack
Nguyễn Văn Quân
Timing Attacks
Sử dụng thông tin về thời gian thực thi của hệ
thống để phân tích.
Timing Attacks dựa trên việc đo thời gian cần
cho một đơn vị để thực thi. Thông tin này có thể
dẫn đến thông tin về các dữ liệu bí mật.
Password verification
Giả sử ta có hàm pcmp dùng để kiểm tra password như sau:
Func pcmp(string pass,string input)
if pass.length != input.length return False
int i = 0
for c in pass :
if(c != input[i]): return False
else : i = i + 1
return True
Attacking…..
1. Thử lần lượt nhiều password, với độ dài khác
để xác định độ dài password.
2. Thử với từng kí tự để xác định pass nhờ đo thời
gian thực thi.
HOW????
How to fix it?
Func pcmp(string ori_pass,string input)
result = True
int i = 0
if input.length == 0 : return False
if (input.length > ori_pass.length) or (input.length) < ori_pass.length):
input = ori_pass
result = False
for c in ori_pass :
result = result & (input[i] == c)//phép AND
i = i + 1
return result
Power Analysis
Phạm Minh Thành
Power analysis
Là một dạng side channel attack
Dựa vào sự tiêu thụ năng lượng của phần cứng
Không xâm phạm vào thiết bị
Trích xuất những khóa đã mã hóa, các thông tin
bí mật khác từ thiết bị
Lịch sử
Được giới thiệu vào năm 1998
Bởi Paul Kocher, Joshua Jaffe và Benjamin Jun