


















Preview text:
2023 ThS. Nguyễn Chí Hiếu 2023 1 Nội dung
1. Giới thiệu về An toàn bảo mật Phần mềm
2. Các kỹ thuật bảo mật Phần mềm 2023
An toàn bảo mật Hệ thống thông tin 2 2 1 2023
1. Giới thiệu An toàn bảo mật phần mềm
Bảo mật thông tin chứa trong các phần mềm
Ngăn chặn kẻ tấn công ăn cắp mã nguồn phần mềm
Theo dõi vi phạm bản quyền
Làm rối mã nguồn (code obfuscation): khó dịch ngược (reverse) lại mã nguồn
Chống giả mạo (tamperproofing): khó bỏ qua việc kiểm tra mã nguồn 2023
An toàn bảo mật Hệ thống thông tin 3 3
Giới thiệu An toàn bảo mật phần mềm Một số thách thức:
Về thời gian: phần mềm có thể được bảo mật trong bao lâu?
Về kinh tế: bảo mật phần mềm mang lại giá trị thế nào?
Về hiệu quả: chấp nhận phần mềm chậm hơn để khó bẻ khóa hơn hay không? 2023
An toàn bảo mật Hệ thống thông tin 4 4 2 2023
Giới thiệu An toàn bảo mật phần mềm Một số thách thức:
Về thời gian: phần mềm có thể được bảo mật trong bao lâu?
Về kinh tế: bảo mật phần mềm mang lại giá trị thế nào?
Về hiệu quả: chấp nhận phần mềm chậm hơn để khó bẻ khóa hơn hay không? 2023
An toàn bảo mật Hệ thống thông tin 5 5
An toàn bảo mật phần mềm
Các lĩnh vực liên quan Mật mã (cryptography)
Kỹ thuật phần mềm (software engineering)
Che giấu dữ liệu (steganography)
Trình biên dịch (compiler) 2023
An toàn bảo mật Hệ thống thông tin 6 6 3 2023
Giới thiệu An toàn bảo mật phần mềm
Dịch ngược phần mềm 2023
An toàn bảo mật Hệ thống thông tin 7 7
Giới thiệu An toàn bảo mật phần mềm
Dịch ngược phần mềm
Giả sử, Alice viết một phần mềm mang lại giá trị rất lớn
(về mặt thuật toán, thiết kế hay kinh tế)
Bob là một lập trình viên muốn phát triển một phần mềm
cạnh tranh. Do đó, Bob muốn đánh cắp mã nguồn để tích
hợp thành một phân hệ nào đó trong phần mềm của mình! 2023
An toàn bảo mật Hệ thống thông tin 8 8 4 2023
Giới thiệu An toàn bảo mật phần mềm Sao chép phần mềm 2023
An toàn bảo mật Hệ thống thông tin 9 9
Giới thiệu An toàn bảo mật phần mềm Sao chép phần mềm
Giả sử, Alice viết một phần mềm mang lại giá trị rất lớn
(về mặt thuật toán, thiết kế hay kinh tế)
Bob là một lập trình viên muốn sao chép (clone) toàn bộ phần mềm!!! 2023
An toàn bảo mật Hệ thống thông tin 10 10 5 2023
Giới thiệu An toàn bảo mật phần mềm
Vi phạm bản quyền phần mềm 2023
An toàn bảo mật Hệ thống thông tin 11 11
Giới thiệu An toàn bảo mật phần mềm
Vi phạm bản quyền phần mềm
Giả sử, Alice viết một phần mềm.
Bob là mua một bản sao chép của Alice và bán lại bất hợp pháp cho người khác 2023
An toàn bảo mật Hệ thống thông tin 12 12 6 2023
Giới thiệu An toàn bảo mật phần mềm
Bản quyền các dữ liệu kỹ thuật số 2023
An toàn bảo mật Hệ thống thông tin 13 13
Giới thiệu An toàn bảo mật phần mềm
Bản quyền các dữ liệu kỹ thuật số
Giả sử, Alice có dữ liệu kỹ thuật số (hình, nhạc, phim, …) được mã hóa
Bob tìm cách phá mã để lấy về thông tin từ dữ liệu kỹ thuật số 2023
An toàn bảo mật Hệ thống thông tin 14 14 7 2023
Giới thiệu An toàn bảo mật phần mềm
Kiểm tra vi phạm bản quyền phần mềm 2023
An toàn bảo mật Hệ thống thông tin 15 15
Giới thiệu An toàn bảo mật phần mềm
Kiểm tra vi phạm bản quyền phần mềm
Giả sử, Alice viết một phần mềm.
Bob can thiệp phần mềm để tìm cách loại bỏ yêu cầu kiểm tra vi phạm bản quyền
Alice cần có biện pháp không cho chạy phần mềm khi bị vi phạm bản quyền 2023
An toàn bảo mật Hệ thống thông tin 16 16 8 2023
Giới thiệu An toàn bảo mật phần mềm
Truy vết kẻ tấn công 2023
An toàn bảo mật Hệ thống thông tin 17 17
Giới thiệu An toàn bảo mật phần mềm
Truy vết kẻ tấn công
Theo vết, truy tìm dựa vào phong cách lập trình của kẻ tấn công 2023
An toàn bảo mật Hệ thống thông tin 18 18 9 2023
2.Các kỹ thuật bảo mật Phần mềm
Kỹ thuật làm rối mã nguồn (code obfuscation)
Làm cho kẻ tấn công khó dịch ngược để tìm lại mã nguồn
gốc của phần mềm (tốn nhiều thời gian, tiền bạc, …)
Kỹ thuật chống giả mạo (tamperproofing)
Phát hiện và đưa ra xử lý với hành vi giả mạo 2023
An toàn bảo mật Hệ thống thông tin 19 19
Các kỹ thuật làm rối mã nguồn
Biến đổi mức trừu tượng (abstraction) Hủy lớp, hàm, …
Biến đổi dữ liệu (data)
Thay thế dữ liệu bằng các biểu diễn mới!
Biến đổi điều khiển (control)
Hủy các cấu trúc điều khiển if, while, for, …
B iến đổi động (dymamic)
Làm cho mã nguồn thay đổi trong thời gian chạy 2023
An toàn bảo mật Hệ thống thông tin 20 20 10 2023 int foo(int x) { return x ∗ 7; } void bar(int x, int z) { if (x == z) printf("%i \n", x); } int main() { int y = 6; y = foo(y); bar(y, 42); } 2023
An toàn bảo mật Hệ thống thông tin 21 21
Biến đổi mức trừu tượng int foo(int x) {
int foobar(int x, int z, int s) return x ∗ 7; { } if (s == 1) return x ∗ 7; void bar(int x, int z) { else if (s == 2) if (x == z) if (x == z) printf("%i\n", x); printf("%i\n", x); } } int main() { int main(){ int y = 6; int y = 6; y = foo(y); y = foobar(y, 99, 1); bar(y, 42); foobar(y, 42, 2); } } 2023
An toàn bảo mật Hệ thống thông tin 22 22 11 2023 Biến đổi dữ liệu
int foobar(int x, int z, int s){ if (s == 1) return (x∗37)%51; int foo(int x) { else if (s == 2) { return x ∗ 7; if (x == z) { }
int x2 = x∗x%51, x3 = x2∗x%51;
int x4 = x2∗x2%51, x8 = x4∗x4%51; void bar(int x, int z) {
int x11 = x8∗x3%51; printf("%i\n", x11); if (x == z) } printf("%i\n", x); } } } int main() { int main(){ int y = 6; int y = 12; y = foo(y); y = foobar(y, 99, 1); bar(y, 42); foobar(y, 36, 2); } } 2023
An toàn bảo mật Hệ thống thông tin 23 23
Biến đổi cấu trúc điều khiển int foo(int x) {
int foobar(int x, int z, int s){ return x ∗ 7;
char ∗ next = &&cell0; } int retVal = 0;
cell0: next = (s == 1) ? &&cell1 : &&cell2; goto ∗ next; void bar(int x, int z) {
cell1: retVal = (x∗37) % 51; goto end; if (x == z)
cell2: next = (s == 2)? && cell3 : && end; goto ∗ next; printf("%i\n", x);
cell3: next = (x == z)? && cell4 : &&end; goto ∗ next; } cell4: {
int x2 = x ∗ x % 51, x3 = x2 ∗ x % 51;
int x4 = x2 ∗ x2 % 51, x8 = x4 ∗ x4 % 51; int main() { int x11 = x8 ∗ x3 % 51; int y = 6; printf("%i\n", x11); goto end; y = foo(y); } bar(y, 42); end: return retVal; } } 2023
An toàn bảo mật Hệ thống thông tin 24 24 12 2023
Các kỹ thuật làm rối mã nguồn
Tuy nhiên, kẻ tấn công cũng có thể làm rối mã nguồn nhằm mục đích:
Bảo vệ mã nguồn virus trước các phần mềm diệt virus
Che giấu phong cách lập trình của bản thân 2023
An toàn bảo mật Hệ thống thông tin 25 25
Các kỹ thuật làm rối mã nguồn
Kẻ tấn công có thể làm rối mã nguồn nhằm mục đích:
Bảo vệ mã nguồn virus trước các phần mềm diệt virus
Che giấu phong cách lập trình của bản thân 2023
An toàn bảo mật Hệ thống thông tin 26 26 13 2023
Các kỹ thuật làm rối mã nguồn
Kẻ tấn công có thể làm rối mã nguồn nhằm mục đích:
Bảo vệ mã nguồn virus trước các phần mềm diệt virus
Che giấu phong cách lập trình của bản thân 2023
An toàn bảo mật Hệ thống thông tin 27 27
Các kỹ thuật chống giả mạo
Hai giai đoạn của kỹ thuật chống giả mạo: Phát hiện:
Phát hiện mã nguồn đã bị thay đổi
Các biến ở trạng thái bình thường Xử lý: Không cho chạy Gây lỗi Gọi điện thoại 2023
An toàn bảo mật Hệ thống thông tin 28 28 14 2023
Đóng dấu bản quyền phần mềm
Chống vi phạm bản quyền bằng kỹ thuật đấu dóng bản
quyền phần mềm (watermarking)
Nhúng dấu bản quyền vào phần mềm
Trích dấu bản quyền để kiểm tra 2023
An toàn bảo mật Hệ thống thông tin 29 29
Đóng dấu bản quyền phần mềm 2023
An toàn bảo mật Hệ thống thông tin 30 30 15 2023
Đóng dấu bản quyền phần mềm class Fibonacci {
string COPYRIGHT = "Copyright Alice"; public int fibonacci(int n){ if (n <= 2) return 1; else
return fib(n − 1) + fib(n − 2); } } 2023
An toàn bảo mật Hệ thống thông tin 31 31
Đóng dấu bản quyền phần mềm 2023
An toàn bảo mật Hệ thống thông tin 32 32 16 2023
Đóng dấu bản quyền phần mềm
Chống vi phạm bản quyền bằng kỹ thuật đấu dóng bản
quyền phần mềm (watermarking)
Kẻ tấn công có thể tạo dấu bản quyền của chính họ
Kẻ tấn công mua một số bản quyền phần mềm và so sánh
để phát hiện nơi đặt dấu đóng bản quyền 2023
An toàn bảo mật Hệ thống thông tin 33 33 Bài tập
1. Cho đoạn mã nguồn, hãy tìm cách dịch ngược mã nguồn gốc int x = 42;
if ((x > 12) && !!(x > 12)) {} 2023
An toàn bảo mật Hệ thống thông tin 34 34 17 2023 Bài tập
2. Cho đoạn mã nguồn, hãy tìm cách dịch ngược mã nguồn gốc int i_acbd(int i_eca0) { int i_9dd4 = 42 + i_eca0; return i_9dd4; } int main() { int i_4152 = 2; return i_acbd(i_4152); } 2023
An toàn bảo mật Hệ thống thông tin 35 35 Bài tập
3. Cho đoạn mã nguồn, hãy tìm cách dịch ngược mã nguồn gốc var = 1; switch (var) { case 1 : init; var = 2; break;
case 2 : if (cond) var = 3; else var = 4; break; case 3 : f(); var = 2; break; case 4 : var = 1; end; } 2023
An toàn bảo mật Hệ thống thông tin 36 36 18 2023 Bài tập
4. Cho đoạn mã nguồn, hãy tìm cách dịch ngược mã nguồn gốc var = 1; switch (var) { case 1: init; var = 2; break;
case 2: if (cond) var = 3; else var = 7; break; case 3: f(); var = 4; break;
case 4: if (test) var = 5; else var = 6; break; case 5: stat1; var = 2; break; case 6: stat2; var = 2; break; case 7: var = 1; end; } 2023
An toàn bảo mật Hệ thống thông tin 37 37 Hỏi & Đáp Cám ơn đã theo dõi 2023
An toàn bảo mật Hệ thống thông tin 38 38 19