ATTT_full

299
An toàn Hthng Thông tin An toàn Hthng Thông tin Trn Đức Khánh Bmôn HTTT – Vin CNTT&TT ĐH BKHN

Transcript of ATTT_full

Page 1: ATTT_full

An toàn Hệ thống Thông tinAn toàn Hệ thống Thông tin

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 2: ATTT_full

Thông tin chung

Tên học phần:Tên học phần:An toàn Hệ thống Thông tin

Thời lượng: 12 buổi (x 4 tiết)Thời lượng: 12 buổi (x 4 tiết)Thời khóa biểu: sáng Thứ năm, 4 tiết cuốiGiảng viên Giảng viên

Trần Đức KhánhBộ môn HTTT, Khoa CNTT, P. 325, nhà [email protected]

Page 3: ATTT_full

Tài liệu tham khảoIntroduction to Computer Security Introduction to Computer Security. Matt Bishop

Security in Computing, Fourth Edition.Charles P. Pfleeger,Shari Lawrence Pfleeger

Handbook of Applied Cryptography. A Menezes P van Oorschot and S VanstoneA. Menezes, P. van Oorschot and S. Vanstone

Chuyên đề An toàn & Bảo mật. Nguyễn Khánh Văn

Các Bài giảng về An toàn Máy tính. ĐH Berkerley, MIT, ĐH Edinburgh

Page 4: ATTT_full

Mục đích

Nắ ữ á ấ đề t t à Nắm vững các vấn đề trong an toàn: mối đe dọa, biện pháp ngăn chặn Đá h iá độ t à ủ á hệ thố Đánh giá độ an toàn của các hệ thống thông tinH ớ đế ắ â d hí h Hướng đến quy tắc xây dựng chính sách an toàn cho các hệ thống thông tintin

Page 5: ATTT_full

Các chủ đề

Mật ã hMật mã họcAn toàn phần mềmAn toàn hệ điều hànhAn toàn cơ sở dữ liệuAn toàn mạng, Web

Page 6: ATTT_full

Sự cần thiết của An toàn HTTT

Thiệt hại an toàn HTTTThiệt hại an toàn HTTTThiệt hại thời gian: theo viện SANS, máy tính không được bảo vệ chỉ “sống sót” < tính không được bảo vệ chỉ sống sót < 20’ trên internetThiệt hại kinh tế: ~ tỷ USD hàng nămệ ạ ỷ g

1. Vi rút 2. Từ chối dịch vụ 33. ………4. ………

Page 7: ATTT_full

[CERT]: Mối nguy

Page 8: ATTT_full

[CERT]: Sự cố

Page 9: ATTT_full

[CERT]: Quy mô, Tính phức tạp

Page 10: ATTT_full

Hỏi/Đáp

Nhữ ă ề t ướ ột ố ti tặ Những năm về trước, một số tin tặc được tuyển dụng vào các công ty hay tổ chức mà họ phá hoại Gần đây tổ chức mà họ phá hoại. Gần đây khuynh hướng này giảm rõ rêt. Bạn nghĩ gì về sự thay đổi này? Nó tốt hay nghĩ gì về sự thay đổi này? Nó tốt hay xấu? Vì sao?

Page 11: ATTT_full

An toàn

M tiê ủ t à là bả ệ “tài Mục tiêu của an toàn là bảo vệ “tài sản” tránh khỏi các “mối đe dọa”, sử dụng các “biện pháp ngăn chặn”dụng các biện pháp ngăn chặn

Tài ả à ?Tài sản nào?Mối đe dọa nào?Biện pháp ngăn chặn gì?

Page 12: ATTT_full

An toàn HTTT

Tài ả hầ ứ hầ ề dữ Tài sản: phần cứng, phần mềm, dữ liệuMối đ d há h i thiệ ử Mối đe dọa: phá hoại, can thiệp, sửa đổiBiệ há ă hặ ã hó kiể Biện pháp ngăn chặn: mã hóa, kiểm soát thông qua phần mềm/phần cứng/các chính sáchcứng/các chính sách

Page 13: ATTT_full

An toàn HTTT

3 Mục tiêu:3 Mục tiêu:Bí mật (Confidentiability): tài sản chỉ được truy nhập bởi những người có được truy nhập bởi những người có quyềnToàn vẹn (Intergrity): tài sản chỉ Toàn vẹn (Intergrity): tài sản chỉ được tạo/xóa/sửa đổi bởi những người có quyềnSẵn dùng (Availability): tài sản sẵn sàng để đáp ứng sử dụng cho những ười ó ềngười có quyền

Page 14: ATTT_full

Hỏi/Đáp

Nhữ biệ há ă hặ à đ Những biện pháp ngăn chặn nào đang được sử dụng trên máy tính cá nhân của bạn? Các biện pháp này nhằm của bạn? Các biện pháp này nhằm ngăn chặn những đe dọa nào?

Page 15: ATTT_full

An toàn HTTT - Mối đe dọaPhần mềm ác tính (Malware)Phần mềm ác tính (Malware)PhishingPharmingSp mSpamTừ chối dịch vụ (Denial of service)Truy nhập trái phép (Unauthorized access)Giao dịch gian lận (Fraudulent transaction)…

Page 16: ATTT_full

An toàn HTTT - Biện phápGiao thức mã hóaGiao thức mã hóaKiểm tra người sử dụng + mật khẩuQuét/diệt phần mềm ác tínhGiới h n t nhậpGiới hạn truy nhậpPhân quyền trong hệ điều hànhTường lửaHệ thống phát hiện đột nhậpThẻ thông minh mã hóaKhóa…

Page 17: ATTT_full

Các chủ đề

Mật ã hMật mã họcAn toàn phần mềmAn toàn hệ điều hànhAn toàn cơ sở dữ liệuAn toàn mạng, Web

Page 18: ATTT_full

Trộm ôtô bằng máy tính xách tay 2007 chiếc BMW X5 của David Beckham bị đánh cắp2007, chiếc BMW X5 của David Beckham bị đánh cắpKẻ cắp sử dụng máy tính xách tay, ăng ten và phần mềm để bẻ khóa

Ăng ten để thu sóng phát ra từ các chíp RFID được à khócài trong khóa

Phần mềm được dùng để thử tất cả các khả năng mã hóa (hàng nghìn tỷ)

Nguồn: Nguồn: http://www.msnbc.msn.com/id/13507939

2004, các nhà nghiên cứu của ĐH Johns Hopkins đã , g pbẻ được khóa của một số xe đời mới

Texas Instruments, nhà sản xuất chip RFID, bỏ qua lời cảnh báo của nhóm nghiên cứu

Page 19: ATTT_full

Giải mã Enigma

Enigma là máy mã hóa và giải mã Enigma là máy mã hóa và giải mã được sử dụng trong quân đội Đức Quốc xãQuốc xãCông trình giải mã Enigma của quân Đồng minh được các sử gia đánh giá g ợ g glà rút gọn 2 năm thời gian thế chiến Một trong những lực lượng giải mã nổi ế à ó ủtiếng là nhóm HUT 8 của Anh, do

Alain Turing dẫn đầu

Page 20: ATTT_full

Các chủ đề (1)

Mật ã hMật mã họcHệ Mật mã không khóaHệ Mật ã khó bí ật Hệ Mật mã khóa bí mật Hệ Mật mã khóa công khai Hàm băm chữ ký sốHàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…

Page 21: ATTT_full

Tấn công iPhone2007 các nhà nghiên cứu của Independent Security 2007, các nhà nghiên cứu của Independent Security Evaluators phát hiện một lỗ hổng tạo điều kiện cho kể đột nhập kiểm soát iPhone Trình duyệt Safari của iPhone chạy với đặc quyền dmin > phần mềm á tính h ới đặ q ền admin -> phần mềm ác tính chạy với đặc quyền

adminĐột nhập thông qua

Điểm truy nhập không dây (wireless access point) Điểm truy nhập không dây (wireless access point) Các trang Web Email, SMS có chứa các đường dẫn đến các trang ưeb bị chiếm đoạt

Nguồn: http://securityevaluators.com/content/case-studies/iphone//

Page 22: ATTT_full

Các chủ đề (2) & (3) An toàn phần mềmAn toàn phần mềm

Các mối đe dọaCác biện pháp an toàn

ỗSoát lỗiKiểm định Lập trình an toànập

An toàn hệ điều hànhCác mối đe dọaCá biệ há t àCác biện pháp an toàn

Phân quyền, Điều khiển truy nhập, SandboxTrusted computing

Page 23: ATTT_full

500 000 trang Web bị tấn công

2008 hơn nửa triệu trang Web trong đó có 2008, hơn nửa triệu trang Web, trong đó có cả các trang của Liên Hợp Quốc bị tấn công Tấn công dạng “SQL injection”Tấn công dạng SQL injectionKhai thác lỗ hổng trong SQL Server của Microsoft

Nguồn: http://www.computerworld.com/s/article/9080580/Huge_Web_hack_attack_infects_500_000_pages

Page 24: ATTT_full

Các chủ đề (4)

A t à ơ ở dữ liệAn toàn cơ sở dữ liệuCác mối đe dọaCá biệ há t àCác biện pháp an toàn

Giải pháp đa tầng

Page 25: ATTT_full

Đột nhập hộp thư Gmail2008 tại hội nghị Defcon hacker một nhà 2008, tại hội nghị Defcon hacker một nhà nghiên cứu demo một công cụ cho phép đột nhập vào hộp thư Gmail, ngay cả khi các phiên truy nhập hộp thư được mã hóa (https:// thay y ập ộp ợ ( p // yvì http:// )Đột nhập thông qua việc đánh cắp Session Cookie

Session Cookie chứng nhận máy tính đã đăng nhập thành công Session Cookie bị đánh cắp sẽ được sử dụng như một chứng nhận hợp lệ để truy nhập hộp thư Gmalchứng nhận hợp lệ để truy nhập hộp thư Gmal

Nguồn: Washington PostNguồn: Washington Post

Page 26: ATTT_full

Các chủ đề (5)

A t à W bAn toàn mạng, WebCác mối đe dọaTấ ô từ hối dị h Tấn công từ chối dịch vụSpamPhần mềm ác tínhPhần mềm ác tínhCác công cụ bảo vệ

Page 27: ATTT_full

Mật mã & Ứng dụngMật mã & Ứng dụng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 28: ATTT_full

Mật mã học

Mật mã học (Cryptology)Mật mã học (Cryptology)Mật mã (Cryptography)Mã thám (Cryptanalysis) Mã thám (Cryptanalysis)

Mật mã Tăng cường các tính chất Bí mật và Toàn vẹnthông tin: các phép mã hóa Xây dựng các kỹ thuật trao đổi thông tin bí mật: các giao thức mật mãá g ao ứ ậ ã

Mã thámPhá mã

Page 29: ATTT_full

Lịch sử ngành Mật mãGiai đoạn “Tiền sử” (~ 2000 TCN) Giai đoạn Tiền sử ( 2000, TCN)

Những dấu hiệu đầu tiên của Mật mã xuất hiện ở bên bờ sông Nile, Ai Cập

Giai đoạn “Mật mã thủ công” (~ 50, TCN)Phép mã hóa Ceasar

Giai đoạn “Mật mã cơ học” (cho đến Thế chiến 2)Máy Enigma ở Đứcá h ê ứ ề ả ã ở hCác nghiên cứu về Giải mã ở Anh

Giai đoạn “Mật mã điện tử”Dựa vào Toán học và Tin họcĐược đặt nền móng bởi Shanon Diffie à HellmanĐược đặt nền móng bởi Shanon, Diffie và HellmanKhóa bí mật (DES, AES,…), Khóa công khai (RSA, ElGamal, …)

Page 30: ATTT_full

ổTrao đổi thông tin bí mật

Ali à B b t đổi thô ti bí ật Alice và Bob trao đổi thông tin bí mật, được mã hóaE à Ch li tấ ô bằ iải ãEve và Charlie tấn công bằng giải mã

Eve Tấn công thụ động

Alice Bob

Charlie Tấn công chủ độngCharlie Tấn công chủ động

Page 31: ATTT_full

Mục tiêu An toàn

Bí ật (C fid ti lit )Bí mật (Confidentiality)Toàn vẹn (Integrity)Xác thực (Authentication)Chống phủ nhận (Non-repudiation)…

Page 32: ATTT_full

Chủ đề

Hệ Mật ã khô khóHệ Mật mã không khóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 33: ATTT_full

Hệ Mật mã

Hệ Mật mã Bộ 5 (K M C E D) Hệ Mật mã = Bộ 5 (K,M,C,E,D) Không gian Khóa (Key): KKhông gian Tin (Message/Plaintext): MKhông gian Tin (Message/Plaintext): MKhông gian Mã (Cipher): CHàm mã hóa (Encryption)Hàm mã hóa (Encryption)

E: K x M -> C

Hàm giải mã (Decryption)Hàm giải mã (Decryption)D: K x C -> M

Page 34: ATTT_full

Hệ Mật mã không khóa

Mã hóa Giải mãTin Mã Tin ban đầuTin Mã Tin ban đầu

Page 35: ATTT_full

Hệ Mật mã khóa bí mật

ó ấKhóa duy nhất

Mã hóa Giải mãã ầTin Mã Tin ban đầu

Page 36: ATTT_full

Hệ Mật mã khóa công khai

Khóa mã hóa Khóa giải mã

Mã hóa Giải mãã ầTin Mã Tin ban đầu

Page 37: ATTT_full

Chủ đề

Hệ Mật ã khô khóHệ Mật mã không khóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 38: ATTT_full

Hệ Mật mã không khóa

Mã hóa Giải mãTin Mã Tin ban đầuTin Mã Tin ban đầu

Page 39: ATTT_full

Hệ Mật mã không khóa

Mã h á ịMã hoán vịCác ký tự trong Tin được hoán vị cho nhaunhau

Page 40: ATTT_full

Mã hoán vịHoán vị cộtHoán vị cột

c1 c2 c3 c4 c5c6 c7 c8 c9 c10 c6 c7 c8 c9 c10 c11 c12 …

chuyển thành

1 6 11 2 7c1 c6 c11 c2 c7c12 c3 c8 …. .…….. …. ….

Page 41: ATTT_full

Hoán vị cộtTinTin

T H I S IS A M E SS A M E SS A G E TO S H O WH O W A CO L U M NA R T R AN S P O SI T I O NW O R K S

Page 42: ATTT_full

Hoán vị cộtTin MãTin

T H I S IS A M E S

t s s o h i S A M E S

S A G E TO S H O W

o a n i w h a a s o l r s t o

H O W A CO L U M NA R T R A

i m g h w u t p i r s e e o a

N S P O SI T I O NW O R K S

m r o o k i s t w c n a s n s

Page 43: ATTT_full

Chủ đề

Hệ Mật ã khô khóHệ Mật mã không khóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 44: ATTT_full

Hệ Mật mã khóa đối xứng

D hất ột khó h á t ì h ã Duy nhất một khóa cho quá trình mã hóa và giải mã

C E(K M) C = E(K,M) M = D(K,C)

Khó hải đượ iữ bí ậtKhóa phải được giữ bí mật

Page 45: ATTT_full

Hệ Mật mã khóa đối xứng

ó ấKhóa duy nhất

Mã hóa Giải mãã ầTin Mã Tin ban đầu

Page 46: ATTT_full

Các Hệ Mật mã khóa đối xứng

Mã l ồMã luồngMã CeasarMã Vi èMã VigenèreMã Vernam

Mã khốiMã khốiDESAESAES

Page 47: ATTT_full

Mã luồng

Đơ ị ã hó ơ bả là á ký tựĐơn vị mã hóa cơ bản là các ký tựCác ký tự trong Tin được mã hóa tách biệtbiệt

Page 48: ATTT_full

Mã Ceasarc = m + nc = m + n

m: ký tự trong Tinc: ký tự tương ứng trong Mãc: ký tự tương ứng trong Mãn: độ dịch chuyển+: phép cộng modulo 26

Ví dụ: n = 3C G O Q STin: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Mã: defghijklmnopqrstuvwxyzabc

Page 49: ATTT_full

Mã Ceasar

TinTin

T R E A T Y T R E A T Y I M P O S S I B L E

Page 50: ATTT_full

Mã Ceasar

Tin MãTin

T R E A T Y

W U H D W BT R E A T Y I M P O S S I B L E

W U H D W BL P S R V V L E O H

Page 51: ATTT_full

Mã VigenèreKhóa

Tin

Page 52: ATTT_full

Mã Vigenère

KhóaKhóaBENCH

Tin A LIMERICK PACKS LAUGHS ANATOMICAL

Nối dài Khóa B ENCHBENC HBENC HBENCH BENCHBENCHB ENCHBENC HBENC HBENCH BENCHBENCH

Mã hóaKhóa: B ENCHBENC HBENC HBENCH BENCHBENCHKhóa: B ENCHBENC HBENC HBENCH BENCHBENCH

Tin: A LIMERICK PACKS LAUGHS ANATOMICAL

Mã: B PVOLSMPM WBGXU SBYTJZ BRNVVNMPCS

Page 53: ATTT_full

Mã Vernam

Ký tự là các bitKý tự là các bitKhóa

K = K1K2K3…KnKi Mi Ci = Ki

xor Mi

Số ngẫu nhiên

Tin M = M1M2M3 Mn

0 0 0

0 1 1M = M1M2M3…Mn

Mã C = C1C2C3…Cn

0 1 1

1 0 1trong đó Ci = Ki xor Mi

1 1 0

Page 54: ATTT_full

Mã khối

Đơ ị ã hó ơ bả là á khối ký Đơn vị mã hóa cơ bản là các khối ký tựCá th ố b ồ kí h thướ khối Các tham số bao gồm kích thước khối và chiều dài khóa

Kí h thướ khối lớ để hố tấ ô Kích thước khối lớn để chống tấn công bằng thống kêChiều dài khóa lớn để chống tấn công Chiều dài khóa lớn để chống tấn công vét cạn

Page 55: ATTT_full

Data Encryption Standard (DES) Lịch sửLịch sử

~ 1970, NIST kêu gọi xây dựng hệ mật mã dành cho công chúng 1974, IBM xây dựng DES trên nền tảng của hệ L ifLucifer1979, chuẩn hóa

Mục tiêuMục đích sử dụng rộng rãiMục đích sử dụng rộng rãiĐộ an toàn caoKhông phụ thuộc vào tính bí mật của thuật toán

Ứng dụngỨng dụngATMTruy nhập từ xa…

Page 56: ATTT_full

Data Encryption Standard (DES)

DESDESKhối 64 bitKhó 56 bitKhóa 56 bit16 vòng lặp mã hóaMỗi vòng kết hợp Hoán vị + Thay thếMỗi vòng kết hợp Hoán vị + Thay thế

Khóa 56 bit

Mã hóa DES MãTin

Page 57: ATTT_full

Mã hóa DESTIN 64-bit KHÓA 64-bitTIN 64 bit

IP

KHÓA 64 bit

KSK1 48-bit

Hoán vị đầu

Vòng 1

Vòng 2K2 48-bit

Vòng 16

...... K16 48-bit

FP

MÃ 64-bit

Hoán vị cuối

MÃ 64 bit

Page 58: ATTT_full

IP, FPIP FP

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 3062 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

IP(b1b2…b64) = b58b50…b7FP(b1b2…b64) = b40b8…b25

Page 59: ATTT_full

KSKS1 KS2

57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

KS1 chuyển khối 64 bit thành khối 2 khối 28 bit

14 6 61 53 45 37 29

21 13 5 28 20 12 4

44 49 39 56 34 53

46 42 50 36 29 32

KS1 chuyển khối 64 bit thành khối 2 khối 28 bitKS1(b1b2…b64) = b57b49…b36 b63b55…b4

KS2 chuyển 2 khối 28 bit thành khối 48 bitKS2 (b1b2…b56) = b14b17…b32

Page 60: ATTT_full

KS

Khó b đầ KKhóa ban đầu K(C0,D0) = KS1(K)Ki = KS2 (Ci,Di)

CiDịch chuyển vòng tròn sang trái 1 bit Ci-1 nếu i = 1,2,9,16Dịch chuyển vòng tròn sang trái 2 bit Ci-1 Dịch chuyển vòng tròn sang trái 2 bit Ci 1 trong các trường hợp khác

Tương tự cho Di

Page 61: ATTT_full

Vòng lặp DES

32 bit t ái 32 bit hải32 bit trái 32 bit phải

E

xor khóa 48-bit

P

S-boxes

32 bit trái 32 bit phải

xor

32 bit trái 32 bit phải

Page 62: ATTT_full

E, PE P

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

16 7 20 21

29 12 28 17

1 15 23 268 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

1 15 23 26

5 18 31 10

2 8 24 14

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

32 27 3 9

19 13 30 6

22 11 4 25

E(b1b2…b32) = b32b1…b1P(b1b2…b32) = b16b7…b25

Page 63: ATTT_full

S-BoxesChuyển khối 48 bit thành khối 32 bitChuyển khối 48 bit thành khối 32 bit

8 khối 6 bit: S1, S2,…,S8 (b1b2b3b4b5b6)Chuyển S1 thành khối 4 bit

b1b6 h iá t ị thậ hâ i b1b6 cho giá trị thập phân i b2b3b4b5 cho giá trị thập phân j kết quả tại dòng i cột j của bảng S1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

Tương tự đối với S2,S3,…,S8 (có bảng riêng)

2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

ươ g ự đố ớ S ,S3, ,S8 ( ó bả g ê g)

Page 64: ATTT_full

S-BoxesChuyển S1 (110001) thành khối 4 bitChuyển S1 (110001) thành khối 4 bit

b1b6 (11) cho giá trị thập phân i (3)b2b3b4b5 (1000) cho giá trị thập phân j (8): kết quả (5) tại dòng i (3) cột j (8) của bảng S1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

5 (Thập phân) = 0101 (Nhị phân)

2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

5 (Thập phân) 0101 (Nhị phân)

Page 65: ATTT_full

Giải mã DES

Sử d ù ột dã khóSử dụng cùng một dãy khóaThứ tự các khóa đảo ngược

ổHoán đổi 2 nửa trái, phảiThực hiện cùng số vòng lặp

Page 66: ATTT_full

ểĐiểm yếu DESTìm khóa bằng vét cạnTìm khóa bằng vét cạn

2^56 khả năngSử dụng tính bù để loại trừ số khả năng khóa

c DES(k m) > |c DES(|k |m)c = DES(k,m) -> |c = DES(|k,|m)|(1011) = 0100

Khóa yếu DES(k ) à DES(k )c = DES(k, m) và m = DES(k, c)

c = DES(k1,m) and c = DES(k2,m) Mã thám

Vi saiTuyến tínhDavies

Page 67: ATTT_full

3DES

Mã hóMã hóac = E(k3,(D(k2,E(k1,m)))

Giải ãGiải mãm = D(k1,(E(k2,D(k3,c)))

óLựa chọn khóak1,k2,k3 độc lậpK1,k2 độc lập và k3 = k1k1=k2=k3

Page 68: ATTT_full

Advanced Encryption Standard (AES)

1997 NIST kêu gọi xây dựng một hệ mật mã mới để 1997, NIST kêu gọi xây dựng một hệ mật mã mới để thay thế DESHệ Rijndael của Daemen và Rijmen được lựa chọn 2001 hệ Rijndael được chuẩn hóa thành AES2001, hệ Rijndael được chuẩn hóa thành AES

Dựa trên lý thuyết “Trường Galois”Khối 128 bitKhóa 128 192 256 bitKhóa 128, 192, 256 bitn vòng lặp mã hóa, phụ thuộc vào chiều dài khóa

Khóa 128 bit, n = 10Khóa 192 bit n = 12Khóa 192 bit, n = 12Khóa 256 bit, n = 14

Mỗi vòng kết hợp Hoán vị + Thay thế

Page 69: ATTT_full

Mật mã & Ứng dụngMật mã & Ứng dụng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 70: ATTT_full

Chủ đề

Hệ Mật ã khô KhóHệ Mật mã không KhóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 71: ATTT_full

Tại sao Hệ mật mã khóa công khai

Quản lý khóa đối xứng là một vấn đềQuản lý khóa đối xứng là một vấn đềTrong các hệ Khóa đối xứng, mỗi cặp người dùng phải có khóa riênggườ dù g p ả có óa ê gN người dùng cần N * (N-1)/2 khóaViệc quản lý khóa trở nên phức tạp khi ố l ờ dù ăsố lượng người dùng tăng

Mục tiêu an toànXá thựXác thựcChống phủ nhận

Page 72: ATTT_full

Hệ mật mã khóa công khai

Mỗi ười dù ó 1 khó iê à 1 Mỗi người dùng có 1 khóa riêng và 1 khóa công khai

Khóa iêng bí mậtKhóa riêng bí mậtKhóa công khai có thể chia xẻ

Q ả lý khóQuản lý khóaN người dùng cần N khóa công khai được xác thựcxác thựcHạ tầng khóa công khai PKI

Page 73: ATTT_full

Hệ Mật mã khóa công khai

Mã hó dù khó ô kh i kMã hóa dùng khóa công khai kC = E(k,M)

Giải ã dù khó iê KGiải mã dùng khóa riêng KM = D(K,C)

Khóa công khai Khóa riêng

Mã hóa Giải mãTin Mã Tin ban đầuTin Mã Tin ban đầu

Page 74: ATTT_full

Khóa bí mật vs. Khóa công khai Khóa bí mật Khóa công khaiKhóa bí mật Khóa công khai

Số khóa 1 2

Bảo vệ khóa Khóa được giữ bí ật

1 khóa bí mậtó ômật 1 khóa công khai

Ứng dụng Bí mật và toàn vẹn dữ liệu

Trao đổi khóaXác thựcdữ liệu Xác thực

Tốc độ Nhanh Chậm

Page 75: ATTT_full

Hệ Mật mã khóa công khai

Lý thuyết nền tảng Lý thuyết nền tảng Độ phức tạpSố học đồng dư (Modular Arithmetic)Số học đồng dư (Modular Arithmetic)

Các hệ Mật mã khóa công khaiRSARSAMerkleHellman ElGamalRabinĐường cong êlip (Elliptic Curve)

Page 76: ATTT_full

Độ phức tạpĐộ phức tạp tính toán (thời gian)Độ phức tạp tính toán (thời gian)

Vấn đề “dễ”: lớp PVấn đề “khó”: lớp NP

Giải quyết các vấn đề PGiải quyết các vấn đề PO(n) trường hợp phải xét đến

Giải quyết các vấn đề NP2^O(n) trường hợp phải xét đến

Các hệ mật mã khóa công khai dựa trên Các hệ mật mã khóa công khai dựa trên độ khó/phức tạp của giải thuật bẻ khóa

Page 77: ATTT_full

Số học đồng dưSố học đồng dư Số học đồng dư

a mod na op b mod n

op = +, -, *, /, ^ Ví dụ:

40 mod 6 = 440 mod 6 = 45 + 2 mod 6 = 19 – 4 mod 3 = 25 * 3 mod 6 = 34/2 mod 3 = 22^4 mod 6 = 4

Page 78: ATTT_full

Số học đồng dưa mod na mod n

Số dư của a chia na + b mod n

Số dư của a + b chia nSố dư của a + b chia na - b mod n

Số dư của a - b chia n * b d a * b mod n

Số dư của a * b chia na ^ b mod n

Thủ tục bình phươnga / b mod n

Giải thuật Euclide mở rộng

Page 79: ATTT_full

Thủ tục bình phươngDựa vào tính chấtDựa vào tính chất

a*b mod n = ((a mod n)*(b mod n)) mod n

Tính a^ba^25 = a^(11001) a^(11001) = a^(10000+1000+1) a^(10000+1000+1) = a^10000 * a^1000 * a (10000+1000+1) = a 10000 * a 1000 * a^1a^10000 * a^1000 * a^1 = a^16 * a^8 * a^1

Độ hứ t (O(l b*(l )^2)) Độ phức tạp (O(logb*(logs)^2)) Hiệu quả hơn phương pháp tính lũy thừa bằng phép nhân đồng dư (O(b*(logs)^2)) bằng phép nhân đồng dư (O(b (logs) 2))

Page 80: ATTT_full

Thủ tục bình phươngModExp1(a,b, s)ModExp1(a,b, s)

Vào: 3 số nguyên dương a,b,s sao cho a < s bn−1 ···b1b0 là biểu diễn nhị phân của b, n = [logb] ị p , [ g ]

Ra: a^b mod s

p[0] = a mod sfor i = 1 to n−1

p[i] = p[i−1]^2 mod sr = 1fo i 0 to n 1for i = 0 to n−1

if b[i] = 1 then r = r*p[i] mod sreturn r

Page 81: ATTT_full

Bài tập

Tí h 6^73 d 100Tính 6^73 mod 10073 = 2^0 + 2^3 + 2^66^73 6 * 6^(2^3)*6^(2^6)6^73 = 6 * 6^(2^3)*6^(2^6)6 = 6 mod 1006^(2^3) 16 mod 1006^(2^3) = 16 mod 1006^(2^6) = -4 mod 1006^73 = 6 * (16) * ( 4) = 16 mod 100 6^73 = 6 * (16) * (-4) = 16 mod 100

Page 82: ATTT_full

Giải thuật Euclide mở rộng

Giải thuật EuclideGiải thuật EuclideTính ƯSCLN(a,b)Dựa trên tính chất Dựa trên tính chất

Nếu a > b thì ƯSCLN(a,b) = ƯSCLN(a mod b,b)

ả ậ ở ộGiải thuật Euclide mở rộngTính 2 số x, y sao cho

a*x + b*y ƯSCLN(a b)a*x + b*y = ƯSCLN(a,b)Giải quyết bài toán tìm x sao cho

a*x = 1 mod s

Page 83: ATTT_full

Giải thuật Euclide mở rộng

Extended Euclid(a b)Extended-Euclid(a,b)Vào: 2 số nguyên dương a,bRa: 3 số nguyên x y d sao cho d = gcd(a b) Ra: 3 số nguyên x,y,d sao cho d = gcd(a,b) và ax+by = d

1. Nếu b = 0 thì trả về (1,0,a)2. Tìm q, r sao cho a = b*q+r2. Tìm q, r sao cho a b q r3. (x’,y’,d) = Extended-Euclid(b, r)4. Trả về (y’,x’−q*y’,d)(y , q y , )

Page 84: ATTT_full

Bài tập

Dùng giải thuật Euclide mở rộng để tìm Dùng giải thuật Euclide mở rộng để tìm ƯSCLN(120,23)

a b q r x y da b q r x y d

120 23 5 5 -9 47 1

23 5 4 3 2 9 123 5 4 3 2 -9 1

5 3 1 2 -1 2 1

3 2 1 1 1 -1 13 2 1 1 1 -1 1

2 1 1 0 0 1 1

1 0 _ _ 1 0 1

Page 85: ATTT_full

Bài tập

Dùng giải thuật Euclide mở rộng để tìm Dùng giải thuật Euclide mở rộng để tìm tìm x sao cho 51*x mod 100 = 1

Nếu a*x mod n = 1 thì tồn tại k trong đó a*x = ếu a od t tồ tạ t o g đó a1 + n*kTa có a*x – n*k = 1Đặt k t đượ * + b* 1Đặt y = -k, ta được a*x + b*y = 1Tìm x,y bằng giải thuật Euclide mở rộng

x = -49, y = 25, y

Page 86: ATTT_full

Hệ Mật mã khóa công khai RSA

RSARSA1978 Rivest, Shamir và Adlerman phát minh ra hệ mật mã RSAminh ra hệ mật mã RSAHệ mật mã khóa công khai phổ biến và đa năng nhất trong thực tếđa năng nhất trong thực tếSử dụng các kết quả trong số học đồng dưDựa trên độ phức tạp của bài toán

phân tích số nguyên ra thừa số nguyên tố

Page 87: ATTT_full

RSA – Tạo khóaChọn ngẫu nhiên 2 số nguyên tố p qChọn ngẫu nhiên 2 số nguyên tố p, q

n = p * qChọn e sao cho

1 < e < (p 1) * (q 1)1 < e < (p-1) * (q-1)ƯSCLN(e, (p-1) * (q-1)) = 1

Chọn d sao cho1 d ( 1) * ( 1)1 < d < (p-1) * (q-1)e*d = 1 mod (p-1) * (q-1)

Khóa công khai(n,e)

Khóa riêng(p,q,d)

Page 88: ATTT_full

RSA – Tạo khóa

Ví dVí dụp = 11, q = 23 11*23 253n = 11*23 = 253

(p-1)*(q-1) = 10*22=220ƯSCLN(e 220) 1 ƯSCLN(e,220) = 1

giá trị nhỏ nhất e = 3

áp dụng giải thuật Euclide mở rộngáp dụng giải thuật Euclide mở rộngd = 147

Page 89: ATTT_full

RSA – Mã hóa

Mã hó ử d khó ô kh iMã hóa sử dụng khóa công khaiTin mKhó ô kh i ( )Khóa công khai (n,e)Mã

c = m^e mod nc = m^e mod n

Page 90: ATTT_full

RSA – Mã hóa

Ví dụVí dụp = 11, q = 23n = 11*23 = 253n = 11 23 = 253(p-1)*(q-1) = 10*22=220e = 3d = 147Tin m = 165Mã

c = 165^3 mod 253 = 110

Page 91: ATTT_full

RSA – Giải mã

Ti Tin mKhóa công khai (n,e)Khóa riêng (p,q,d) Mã c = m^e mod nGiải mã

m = c^d mod n

Page 92: ATTT_full

RSA – Giải mã

Đị h lý NếĐịnh lý: Nếu(n,e) là khóa công khai(p,q,d) là khóa riêng0 <= m < n

thì(m^e)^d mod n = m(m e) d mod n m

Page 93: ATTT_full

RSA – Giải mã

Ví dụVí dụp = 11, q = 23n = 11*23 = 253n 11 23 253(p-1)*(q-1) = 10*22=220e = 3d = 147Mã

c = 165^3 mod 253 = 110c 165 3 mod 253 110Tin

m = 110^147 mod 253 = 165

Page 94: ATTT_full

RSA- Độ an toàn

RSA và bài toán phân tích thừa số nguyên RSA và bài toán phân tích thừa số nguyên tố

Khóa công khai (n,e)óa cô g a ( ,e)Khóa riêng (p,q,d) được giữ bí mậtĐộ an toàn của RSA dựa trên độ khó/phức tạp ủ bài t á tí h ( d) từ ( )của bài toán tính (p,q,d) từ (n,e)

p,q là 2 số nguyên tố, n = p*qn p qe,d được tính từ p,q

Do đó bài toán trên qui về bài toán PTTSNT(n)

Page 95: ATTT_full

RSA- Độ an toàn

Lự h Lựa chọn p,qĐảm bảo rằng bài toán PTTSNT(n) thực sự khósự khóTránh tình trạng p,q rơi vào những trường hợp đặc biệt mà bài toán trên trở trường hợp đặc biệt mà bài toán trên trở nên dễ dàng

Ví dụ: p-1 có các thừa số nguyên tố nhỏ

p,q phải có độ dài tối thiểu là 512 bít p,q xấp xỉ nhau

Page 96: ATTT_full

RSA- Độ an toàn

Lự h Lựa chọn ee nhỏ nhất có thể khô hỏ á để t á h bị tấ ô e không nhỏ quá để tránh bị tấn công

theo dạng “low exponent”

Lựa chọn dLựa chọn dd không nhỏ quá (d < n/4) để tránh tấn công dạng “low decryption”công dạng low decryption

Page 97: ATTT_full

RSA – Hiệu năng

Nhâ hi ố dư hé hi Nhân, chia, số dư phép chia Tính lũy thừa modulo

m^e mod nc^d mod n

ố ộ ấ ậ ớTốc độ rất chậm so với DES

Page 98: ATTT_full

RSA – Bài tậpCho p = 7 q = 11 Giả sử Alice dùng khóa Cho p = 7, q = 11. Giả sử Alice dùng khóa công khai (n,e) = (77,17).

Tìm khóa riêngTìm khóa riêng.

Biết rằng các ký tự từ A đến Z được biểu diễn bằng các số nguyên từ 00 đến 25 Dấu cách bằng các số nguyên từ 00 đến 25. Dấu cách được biểu diễn bằng số 26.Bob muốn gửi cho Alice Tin “HELLO WORLD” sử dụng hệ mật mã RSA sử dụng hệ mật mã RSA.

Tính Mã tương ứng.

Page 99: ATTT_full

RSA – Bài tập

Đá áĐáp án(p,q,d) = (7,11,53)TiTin

H E L L O W O R L D 07 04 11 11 14 26 22 14 17 11 03 07 04 11 11 14 26 22 14 17 11 03

Mã28 16 44 44 42 38 22 42 19 44 75

Page 100: ATTT_full

Các Mật mã khóa công khai khác

M kl H llMerkleHellmanElGamalRabinĐường cong êlip (Elliptic Curve)

Page 101: ATTT_full

Mật mã & Ứng dụngMật mã & Ứng dụng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 102: ATTT_full

Chủ đề

Hệ Mật ã khô KhóHệ Mật mã không KhóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 103: ATTT_full

Hàm băm

Các ứng dụng chú trọng mục tiêu Toàn vẹn Các ứng dụng chú trọng mục tiêu Toàn vẹn Tài liệu được sử dụng giống hệt tài liệu lưu trữCác thông điệp trao đổi trong một hệ thống an Các thông điệp trao đổi trong một hệ thống an toàn không bị thay đổi/sửa chữa

“Niêm phong” tài liệu/thông điệp ổ“Niêm phong” không bị sửa đổi/phá hủy đồng

nghĩa với tài liệu/thông điệp toàn vẹn“Niêm phong”: băm (hash), tóm lược (message p o g bă ( a ), ó ượ ( agdigest), đặc số kiểm tra (checksum)Tạo ra “niêm phong”: hàm băm

Page 104: ATTT_full

Hàm băm

M tiê t àMục tiêu an toànToàn vẹn (Integrity)

Page 105: ATTT_full

Khái niệm Hàm bămĐầu vào là một chuỗi có chiều dài biến thiên và đầu Đầu vào là một chuỗi có chiều dài biến thiên, và đầu ra có chiều dài cố định

∑∑ → nh *:

Tin:

Cốt (Di t)

∑∑

∑n

∑*

Cốt (Digest):

h là hàm một chiều (one way function)dễ dàng tính h nhưng rất khó tính

1−h

dễ dàng tính h nhưng rất khó tínhh có tính phi đụng độ cao (collision resistence)

rất khó tìm được x /= y sao cho h(x) = h(y)

h

Page 106: ATTT_full

Kỹ thuật tạo hàm băm

Dùng các hàm mã hóaDùng các hàm mã hóaCBCRMDPRMDPDM

Dùng các phép toán số học đồng dưQCMDCDP

Dù á hà thiết kế đặ biệtDùng các hàm thiết kế đặc biệtMD4/5SHA/SHSSHA/SHS

Page 107: ATTT_full

Kỹ thuật tạo hàm băm

Dùng các hàm mã hóaDùng các hàm mã hóaCBCRMDPRMDPDM

Dùng các phép toán số học đồng dưQCMDCDP

Dù á hà thiết kế đặ biệtDùng các hàm thiết kế đặc biệtMD4/5SHA/SHSSHA/SHS

Page 108: ATTT_full

CBC - Chaining Block Cipher

Hà ã hó E đối ứHàm mã hóa E đối xứngKhóa K

Hà bă HHàm băm HM = M1M2…Mn

( )Hi = E(K,Mi xor Hi-1)H = Hn

Page 109: ATTT_full

RMDP – Rabin, Matyas, Davise, Price

Hà ã hó E đối ứHàm mã hóa E đối xứngKhóa là các khối của Tin

Hà bă HHàm băm HM = M1M2..Mn

( ẫ h ê )H0 = r (r ngẫu nhiên)Hi = E(Mi,Hi-1)H HH= Hn

Page 110: ATTT_full

DM – Davies, Meyer

Hà ã hó E đối ứHàm mã hóa E đối xứngKhóa là các khối của Tin

Hà băHàm bămM = M1M2..Mn

( ẫ h ê )H0 = r (r ngẫu nhiên)Hi = E(Mi,Hi-1) xor Hi-1H HH = Hn

Page 111: ATTT_full

Kỹ thuật tạo hàm băm

Dùng các hàm mã hóaDùng các hàm mã hóaCBCRMDPRMDPDM

Dùng các phép toán số học đồng dưQCMDCDP

Dù á hà thiết kế đặ biệtDùng các hàm thiết kế đặc biệtMD4/5SHA/SHSSHA/SHS

Page 112: ATTT_full

QCMDC – Quadratic Congruential Manipulation Dectection Code

M M1M2 MM = M1M2…MnMi khối n bit

N là ố ê tố hN là số nguyên tố sao choN >= 2^(n-1)

à ăHàm bămH0 = r (r ngẫu nhiên)Hi = (Hi-1+Mi)^2 mod NH = Hn

Page 113: ATTT_full

DP – Davies, Price

M M1M2 MM = M1M2…MnN là số nguyên tố sao cho

N = 2^r

Hàm bămH0 = 0Hi = (Hi-1 xor Mi)^2 mod NH = Hn

Page 114: ATTT_full

Kỹ thuật tạo hàm băm

Dùng các hàm mã hóaDùng các hàm mã hóaCBCRMDPRMDPDM

Dùng các phép toán số học đồng dưQCMDCDP

Dù á hà thiết kế đặ biệtDùng các hàm thiết kế đặc biệtSHA/SHSMD4/5MD4/5

Page 115: ATTT_full

SHA-1

SHA S H h Al ithSHA = Secure Hash AlgorithmĐược đề xuất và bảo trợ bởi NISTDùng trong hệ DSS (Digital Signature Standard) của NISTĐược sử dụng rộng rãi

SSL, PGP, SSH, S/MIME, IPSec

Page 116: ATTT_full

SHA-1

Đầ à bội ố ủ 512 bitĐầu vào bội số của 512 bitGiá trị băm 160 bit80 vòng lặp tính toán

Page 117: ATTT_full

Vòng lặp SHA-1

Page 118: ATTT_full

Vòng lặp SHA-1

A B C D E khối 32 bitA,B,C,D,E khối 32 bitKt hằng số của vòng lặp t Wt được tính từ các khối của Tin<<< dịch chuyển các bit

cộng modulo 32F là hàm kết hợp các phép toán logicF là hàm kết hợp các phép toán logic

not, and, or, xor

Page 119: ATTT_full

MD5

MD M Di tMD = Message DigestMD5 được đề xuất bởi Rivest vào năm 19911991Được sử dụng rộng rãi

Truyền tập tinLưu trữ mật khẩu

Page 120: ATTT_full

MD5

Đầ à 512 bitĐầu vào 512 bitGiá trị băm 128 bit64 vòng lặp tính toán

Page 121: ATTT_full

Vòng lặp MD5

Page 122: ATTT_full

Vòng lặp MD5

A B C D khối 32 bitA,B,C,D khối 32 bitKi hằng số của vòng lặp iMi khối 32 bit của Tin<<< dịch chuyển các bit

cộng modulo 32F là hàm kết hợp các phép toán logicF là hàm kết hợp các phép toán logic

not, and, or, xor

Page 123: ATTT_full

Chữ ký số

1976 Diffie & Hellman lần đầu tiên đề cập 1976, Diffie & Hellman lần đầu tiên đề cập đến khái niệm Chữ ký số1989 phiên bản thương mại Chữ ký số đầu 1989, phiên bản thương mại Chữ ký số đầu tiên trong Lotus Notes, dựa trên RSAỨng dụngg ụ g

Hợp đồng sốBầu cử điện tửGi dị h â hàGiao dịch ngân hàng…

Page 124: ATTT_full

Chữ ký số

M tiê t àMục tiêu an toànXác thực (Authentication)Chố hủ hậ (N di ti )Chống phủ nhận (Non-repudiation)

Page 125: ATTT_full

Hệ chữ ký số

Thuật toán tạo chữ ký Thuật toán tạo chữ ký Ký hiệu SĐầu vào là một thông tin mĐầu vào là một thông tin mChữ ký S(m)

Thuật toán kiểm định chữ kýThuật toán kiểm định chữ kýKý hiệu VĐầu vào là thông tin m và chữ ký kèm theo sV(m,s) = true khi và chỉ khi s = S(m)

Page 126: ATTT_full

Kỹ thuật tạo Chữ ký số

Mật ã khó ô kh iMật mã khóa công khaiHàm bămMật mã khóa công khai + Hàm băm

RSA + Hàm bămElGamal + Hàm bămDSA

Page 127: ATTT_full

Chữ ký số dùng Mật mã khóa công khai

RSARSAChọn ngẫu nhiên 2 số nguyên tố p, q

n = p * qChọn e sao choChọn e sao cho

1 < e < (p-1) * (q-1)ƯSCLN(e, (p-1) * (q-1)) = 1

Chọn d sao choChọn d sao cho1 < d < (p-1) * (q-1)e*d = 1 mod (p-1) * (q-1)

Khóa công khai: (n e) Khóa công khai: (n,e) Khóa riêng: (p,q,d) Mã hóa: c = m^e mod nGiả mã: m = c^d mod nGiả mã: m = c d mod n

Page 128: ATTT_full

Chữ ký số dùng RSA

Tin mTin mKhóa công khai (n,e)Khóa riêng (p q d)Khóa riêng (p,q,d)Tạo chữ ký

s = m^d mod ns m d mod n

Kiểm định chữ kým =? s^e mod n

Page 129: ATTT_full

Chữ ký số dùng RSAĐe dọa/mối nguyĐe dọa/mối nguy

Tấn công dạng “tráo khóa”Tấn công dạng “chọn tin”, dựa trên đặc điểm “ hâ í h” ủ RSA“nhân tính” của RSA

Nếu m1^d mod n là chữ ký của m1, m2^d mod n là chữ ký của m2, thì (m1*m2)^d mod n là hữ ký ủ 1* 2chữ ký của m1*m2

Tấn công dạng “không Tin”Lấy khóa công khai k của AliceTạo tin m và chữ ký s của m sao cho m và s được công nhận bởi thuật toán kiểm định sử dụng k

Page 130: ATTT_full

Chữ ký số dùng Hàm băm

Hà băHàm bămĐầu vào là một chuỗi có chiều dài biến thiên và đầu ra có chiều dài cố địnhthiên, và đầu ra có chiều dài cố địnhHàm một chiều (one way function)

dễ dàng tính hàm nhưng rất khó tính dễ dàng tính hàm nhưng rất khó tính hàm ngược

Phi đụng độ cao (collision resistence)ụ g ộ ( )gần như đơn ánh

Page 131: ATTT_full

Chữ ký số dùng Hàm băm

Hà bă hHàm băm hTạo chữ ký

Tin ms = h(m)

ể ýKiểm định chữ kýTin mChữ ký ss = h(m)

Page 132: ATTT_full

Chữ ký số dùng Hàm bămĐe dọa/mối nguyĐe dọa/mối nguy

Nghịch lý sinh nhậtTrong một nhóm 23 người, xác suất để có hai ười ó ù ột i h hật là khô hỏ hơ người có cùng một sinh nhật là không nhỏ hơn

1/2Tấn công dạng “sinh nhật”

í h á bă hờ à khôTính N giá trị băm trong thời gian và không gian cho phépLưu trữ các giá trị băm để tìm ra đụng độá ấ ộXác suất đụng độ

Nếu N > 2^(n/2) giá trị băm, thì xác suất đụng độ là > 1/2, trong đó n là độ dài của chuỗi giá trị băm

Page 133: ATTT_full

Chữ ký số dùng Mật mã khóa công khai + Hàm băm

Tăng cường độ an toàn bằng kết hợp Tăng cường độ an toàn bằng kết hợp Hệ mật mã khóa công khai Hàm bămHàm băm

Thuật toán tạo chữ kýHàm mã hóa sử dụng khóa riêngHàm mã hóa sử dụng khóa riêngHàm băm

Thuật toán kiểm định chữ kýậ ị ýHàm giải mã sử dụng khóa công khaiHàm băm

Page 134: ATTT_full

ẩChuẩn Chữ ký số - DSSTạo chữ ký Kiểm định chữ ký

Hàm băm Hàm băm

ạ ý ị ýTin Tin

Hàm băm Hàm băm

Tóm lược Tóm lược

Khóa riêngSinh chữ ký Kiểm định chữ ký

Khóa công khai

ý ị ýChữ ký

Hợp lệ/Khô h lệKhông hợp lệ

Page 135: ATTT_full

Chữ ký số RSA + Hàm băm

Cá thô ốCác thông sốHàm băm h2 ố ê tố 2 số nguyên tố p,q

Page 136: ATTT_full

Chữ ký số RSA + Hàm bămTạo khóaTạo khóa

n = p*qChọn e sao cho

1 < e < (p 1) * (q 1)1 < e < (p-1) * (q-1)ƯSCLN(e, (p-1) * (q-1)) = 1

Chọn d sao cho1 < d < ( 1) * ( 1)1 < d < (p-1) * (q-1)e*d = 1 mod (p-1) * (q-1)

Khóa công khai ( )(n,e)

Khóa riêng (p,q,d)

Page 137: ATTT_full

Chữ ký số RSA + Hàm băm

T hữ kýTạo chữ kýTin mChữ kýChữ ký

s = h(m)^d mod n

Page 138: ATTT_full

Chữ ký số RSA + Hàm băm

Kiể đị h hữ kýKiểm định chữ kýChữ ký sTin mTin mKiểm định

h(m) = s^e mod nh(m) s e mod n

Page 139: ATTT_full

Chữ ký số ElGamal + Hàm băm

Cá thô ốCác thông sốHàm băm hSố ê tố Số nguyên tố pSố nguyên g sao cho

g^c = b mod pg^c = b mod ptrong đó b,p nguyên tố cùng nhau

Page 140: ATTT_full

Chữ ký số ElGamal + Hàm băm

T khóTạo khóaChọn a sao cho 0 < a < p-1

A g^a mod pA = g^a mod pa được gọi là logarit rời rạc của A

Khóa công khaiKhóa công khai(p,g,A)

Khóa riêngga

Page 141: ATTT_full

Chữ ký số ElGamal + Hàm băm

T hữ kýTạo chữ kýTin mChọn k sao cho Chọn k sao cho

0 < k < p-1k nguyên tố cùng nhau với p-1 guyê tố cù g au ớ p

Chữ kýr = g^k mod ps = k^(-1) * (h(m) – a*r) mod (p-1)

Page 142: ATTT_full

Chữ ký số ElGamal + Hàm băm

Kiể đị h hữ kýKiểm định chữ kýChữ ký (r,s)Tin mTin mKiểm định

0 < r < pp0 < s < p-1A^r*r^s = g^h(m) mod p

Page 143: ATTT_full

Chữ ký số DSA

Cá thô ốCác thông sốHàm băm hSố ê tố Số nguyên tố qSố nguyên p sao cho

p 1 la bội số của qp-1 la bội số của q

Số nguyên g sao cho g = x^((p-1)/q) mod pg x ((p 1)/q) mod ptrong đó x < p

Page 144: ATTT_full

Chữ ký số DSA

T khóTạo khóaChọn a < q

A g^a mod pA = g^a mod p

Khóa công khai(p q g A)(p,q,g,A)

Khóa riênga

Page 145: ATTT_full

Chữ ký số DSA

T hữ kýTạo chữ kýTin mChọn k sao cho 0 < k < qChọn k sao cho 0 < k < qChữ ký

r = (g^k mod p) mod qr = (g k mod p) mod qs = k^(-1) * (h(m) + a*r) mod q

Page 146: ATTT_full

Chữ ký số DSA

Kiể đị h hữ kýKiểm định chữ kýChữ ký (r,s)Tin mTin mKiểm định

0 < r < qq0 < s < qr = ((g^(s^(-1)*h(m) mod q) A^(r*s^(-1) mod q)) mod p) mod qmod q)) mod p) mod q

Page 147: ATTT_full

Mật mã & Ứng dụngMật mã & Ứng dụng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 148: ATTT_full

Chủ đề

Hệ Mật ã khô KhóHệ Mật mã không KhóaHệ Mật mã khóa bí mật (đối xứng)Hệ Mật mã khóa công khai (bất đối xứng)Hàm băm, chữ ký sốQuản lý khóa, giao thức mật mã,…Q ý , g ậ ,

Page 149: ATTT_full

Quản lý khóa, giao thức mật mã,…

Quản lý khóaQuản lý khóaKhóa đối xứngKhóa công khai Khóa công khai

PKI

Giao thức mật mãậThống nhất khóa

Diffie-Hellman

Xác thựcNeedham-Schroeder

Page 150: ATTT_full

Quản lý khóa, giao thức mật mã,…

Quản lý khóaQuản lý khóaKhóa đối xứngKhóa công khai Khóa công khai

PKI

Giao thức mật mãậThống nhất khóa

Diffie-Hellman

Xác thựcNeedham-Schroeder

Page 151: ATTT_full

Quản lý khóa

Quản lý khóa là một vấn đề quan trọngQuản lý khóa là một vấn đề quan trọngTính bí mật: khóa đối xứngTính toàn vẹn: khóa đối xứng, khóa công khai Tính toàn vẹn: khóa đối xứng, khóa công khai

Giải pháp quản lý khóaKhóa đối xứng

Trọng tài (Trusted Third Party)Khóa công khai

PKI (P bli K I f t t )PKI (Public Key Infrastructure)

Page 152: ATTT_full

Quản lý khóa đối xứng

Mô hì h t đổi thô ti khó đối Mô hình trao đổi thông tin khóa đối xứng

A2 A3

A1 A4

A6 A5

Page 153: ATTT_full

Quản lý khóa đối xứng

T tài (T t d Thi d P t )Trọng tài (Trusted Third Party)Thực thể được tất cả các thực thể tham gia khác tin tưởnggia khác tin tưởngMỗi thực thể tham gia chia xẻ một khóa đối xứng với Trọng tàiđối xứng với Trọng tàiHai thực thể trao đổi thông tin bằng khóa đối xứng được Trọng tài tạo ra

Page 154: ATTT_full

Quản lý khóa đối xứng nhờ Trọng tài

A2 A3

E(k2,k)

E(k ) TTPA1 A4Nguồnkhóa

kE(k,m) TTP

A6 A5

E(k6,k)

Page 155: ATTT_full

Quản lý khóa đối xứng nhờ Trọng tài

Ưu điểmƯu điểmDễ dàng thêm bớt các thực thểMỗi thực thể chỉ cần lưu trữ một khóa đối xứng dài hạndài hạn

Nhược điểmTất cảc các cuộc trao đổi thông tin đều cần tương tác ban đầu với Trọng tàitương tác ban đầu với Trọng tàiTrọng tài phải lưu trữ nhiều khóa đối xứng dài hạnTrọng tài phải xử lý khối lượng lớn thông tinTrọng tài phải xử lý khối lượng lớn thông tinNếu Trọng tài bị đe dọa, tất cả các trao đổi thông tin đều bị đe dọa

Page 156: ATTT_full

Quản lý khóa công khai

Mô hì h t đổi thô ti khó ô Mô hình trao đổi thông tin khóa công khai

A2: d2 A3: d3c = E(e6,m) A2: d2 A3: d3

Thư mục công cộng

e6

c E(e6,m)

A1: d1 A4: d4A1: e1A2 : e2A3 : e3A4 : e4

e6

c

A6 d6 A5 d5

A4 : e4A5 : e5A6 : e6

m D(d6 c) A6: d6 A5:d5m = D(d6,c)

Page 157: ATTT_full

Quản lý khóa công khai nhờ PKI

H tầ khó ô kh i (PKI) Hạ tầng khóa công khai (PKI) Nối khóa công khai với thực thể thông qua một thực thể có thẩm quyền cấp qua một thực thể có thẩm quyền cấp phát chứng nhận số (Certificate Authority)y)

Page 158: ATTT_full

Quản lý khóa công khai nhờ PKI

Mô hì h t đổi thô ti khóMô hình trao đổi thông tin khóa

A2: d2 A3: d3V(A6||e6,s6)c = E(e6 m)

Certificate Authority

A1 e1 s1 = S(A1||e1)A6||e6,s6

c = E(e6,m)

A1: d1 A4: d4A1, e1, s1 = S(A1||e1)A2 , e2, s2 = S(A2||e2)A3 , e3, s3 = S(A3||e3)A4 , e4, s4 = S(A4||e4)

A6||e6,s6

c

A6: d6 A5:d5

A5 , e5, s5 = S(A5||e5)A6 , e6, s6 = S(A6||e6)

m = D(d6 c) A6: d6 A5:d5m D(d6,c)

Page 159: ATTT_full

Quản lý khóa công khai nhờ PKI

Ưu điểmƯu điểmChống tấn công chủ độngCA chỉ cấp chứng nhận, không tham gia vào việc CA chỉ cấp chứng nhận, không tham gia vào việc trao đổi thông tin giữa các bênCó thể giảm thiểu tương tác với CA bằng cách lưu các chứng nhận cục bộlưu các chứng nhận cục bộ

Nhược điểmNếu thuật toán sinh chữ ký của CA bị đe dọa, tất u uậ oá ữ ý ủa bị đ dọa, ấcả các trao đổi thông tin đều bị đe dọaĐộ tin cậy hoàn toàn dựa trên CA

Page 160: ATTT_full

Quản lý khóa, giao thức mật mã,…

Quản lý khóaQuản lý khóaKhóa đối xứngKhóa công khai Khóa công khai

PKI

Giao thức mật mãậThống nhất khóa

Diffie-Hellman

Xác thựcNeedham-Schroeder

Page 161: ATTT_full

Giao thức

Gi thứGiao thứcMột chuỗi các bước thực hiệnCá bướ thự hiệ hải tườ i hCác bước thực hiện phải tường minhTất cả các tình huống phải được dự tính và có các bước thực hiện trướcvà có các bước thực hiện trướcCó ít nhất 2 bên tham dựCác bên tham dự phải hiểu biết và tuân Các bên tham dự phải hiểu biết và tuân thủ các bước thực hiện

Page 162: ATTT_full

Giao thức mật mã

Gi thứ ật ã Gi thứ + Mật Giao thức mật mã = Giao thức + Mật mã học Thô thườ ột i thứ ật ã Thông thường một giao thức mật mã kết hợp các khía cạnh sau

Thố hất khóThống nhất khóaXác thựcMã hóaMã hóaChống phủ nhận

Page 163: ATTT_full

Giao thức mật mã

SSL/TLSSSL/TLSGiao thức mật mã để trao đổi thông tin trên Internettrên InternetSSL được phát triển bởi NetscapeTSL kế thừa từ SSL phiên bản 3 0TSL kế thừa từ SSL phiên bản 3.0Ứng dụng

Duyệt Web, Email, IM, VoIP,…Duyệt Web, Email, IM, VoIP,…Thương mại điện tử: Visa, MasterCard, American Express,…

Page 164: ATTT_full

Giao thức mật mã

SSL/TSL ồ 3 hSSL/TSL gồm 3 pha1. Thương lượng lựa chọn giải thuật

Thống nhất khóa: RSA Diffie HellmanThống nhất khóa: RSA, Diffie-Hellman,…Mã hóa khóa đối xứng: 3DES, AES,…Chữ ký số: RSA, DSA,…Chữ ký số: RSA, DSA,…Hàm băm: SHA, MD5,…

2. Thống nhất khóa và xác thực3. Mã hóa thông điệp

Page 165: ATTT_full

Quản lý khóa, chia xẻ bí mật

Quản lý khóaQuản lý khóaKhóa đối xứngKhóa công khai Khóa công khai

PKI

Giao thức mật mãậThống nhất khóa

Diffie-Hellman

Xác thựcNeedham-Schroeder

Page 166: ATTT_full

Thống nhất khóa

T đổi thô ti bí ật ới tố độ Trao đổi thông tin bí mật với tốc độ nhanh

Mật mã khóa đối ứngMật mã khóa đối xứng

Thiết lập và trao đổi khóaCá thự thể th i hải thố hất Các thực thể tham gia phải thống nhất khóa đối xứngQuá trình thống nhất khóa phải đảm bảoQuá trình thống nhất khóa phải đảm bảo

Tính bí mậtTính toàn vẹnẹ

Page 167: ATTT_full

Giao thức Diffie-Hellman

1976 Diffie và Hellman phát minh 1976, Diffie và Hellman phát minh giao thức thống nhất khóa

Hình thành và trao đổi khóa chung bí Hình thành và trao đổi khóa chung bí mật trên một kênh truyền tin không an toàn

Sử d á kế ả lý h ếSử dụng các kết quả trong lý thuyết nhóm số nguyên nhân tính đồng dư Dựa t ên độ phức tạp của bài toánDựa trên độ phức tạp của bài toán

Logarit rời rạc

Page 168: ATTT_full

Diffie-Hellman1. Alice (A) chọn và gửi cho Bob (B) số nguyên tố p và 1. Alice (A) chọn và gửi cho Bob (B) số nguyên tố p và

một phần tử nguyên thủy g thuộc nhóm nhân tính mod p

A -> B: p,g2 Alice chọn một số tự nhiên ngẫu nhiên a và gửi g^a 2. Alice chọn một số tự nhiên ngẫu nhiên a và gửi g^a

mod p cho BobA -> B: g^a mod p

3. Bob chọn một số tự nhiên ngẫu nhiên b và gửi g^b mod ọ ộ ự g g gp cho Alice

B -> A: g^b mod p4. Alice tính (g^b mod p)^a mod p5 Bob tính (g^a mod p)^b mod p5. Bob tính (g^a mod p)^b mod p6. Khóa chung bí mật g^(a*b) mod p

Page 169: ATTT_full

Diffie-HellmanVí dụ: p = 23 g = 5 a = 6 b = 15Ví dụ: p 23, g 5, a 6, b 15

1. Alice gửi Bob p=23, g=5A -> B: 23,5

2. Alice chọn a=6, và gửi Bob g^a mod p = 5^6 mod g g23 = 8

A -> B: 83. Bob chọn b=15, và gửi Alice g^b mod p = 5^15 mod

23 = 19 23 19 B -> A: 19

4. Alice tính 19^6 mod 23 = 2 b í h5. Bob tính8^15 mod 23 = 2

6. Khóa K = 2

Page 170: ATTT_full

Độ an toàn của Diffie-HellmanKhóa bí mậtKhóa bí mật

Bài toán Diffie-HellmanBiết g, g^a, g^b. Tìm g^(a*b)?

Bài toàn Logarit rời rạcBiết g^a. Tìm a?

Tính xác thựcTính xác thựcTấn công dạng “Man-in-the-middle”

Alice và Bob muốn thống nhất khóa bí mậtE là kẻ ở iữEve là kẻ ở giữaAlice và Eve thống nhất g^(a*e)Bob và Eve thống nhất g^(b*e)

Page 171: ATTT_full

Quản lý khóa, giao thức mật mã,…

Quản lý khóaQuản lý khóaKhóa đối xứngKhóa công khai Khóa công khai

PKI

Giao thức mật mãậThống nhất khóa

Diffie-Hellman

Xác thựcNeedham-Schroeder

Page 172: ATTT_full

Xác thực

Rất hiề ứ d đòi hỏi á thự Rất nhiều ứng dụng đòi hỏi các thực thể tham gia phải chứng minh danh tínhtính

Mô hình Client-Server an toàn

Quá trình các nhận danh tính của các Quá trình các nhận danh tính của các thực thể phải đảm bảo

Tính toàn vẹnTính toàn vẹnChống mạo danh

Page 173: ATTT_full

Giao thức Needham-Schroeder1978 Needham và Schroeder phát minh 1978, Needham và Schroeder phát minh giao thức xác thực trên mạng máy tính không an toàn

ể ổChứng minh nhận dạng của các thực thể trao đổi thông tinNgăn chặn nghe lén, thay đổi thông tin

Ứng dụngXác thực trong mô hình Client-Server: Kerberos

2 loại giao thức2 loại giao thứcKhóa đối xứngKhóa công khaig

Page 174: ATTT_full

Needham-Schroeder khóa đối xứng

Ali (A) ố t đổi thô ti ới Alice (A) muốn trao đổi thông tin với Bob (B)Ali à B b ù ti tưở ột Alice và Bob cùng tin tưởng một Server (S) trung gian

K khó đối ứ iữ A SKas khóa đối xứng giữa A va SKbs khóa đối xứng giữa B va SNa à Nb là các “nonce”Na và Nb là các “nonce”Kab là khóa đối xứng giữa A và B

Page 175: ATTT_full

Needham-Schroeder khóa đối xứng1 A gửi thông tin của mình và B cho S 1. A gửi thông tin của mình và B cho S

A -> S: A,B,Na2. S gửi khóa Kab cho A, thông tin được mã hóa

S > A: {Na Kab B {kab A} Kbs} KasS -> A: {Na,Kab,B,{kab,A}_Kbs}_Kas3. A gửi khóa Kab cho Bob, thông tin được mã hóa

A -> B: {Kab,A}_Kbs4 B t ả lời A đã hậ đượ khó K b thô ti đượ 4. B trả lời A đã nhận được khóa Kab, thông tin được

mã hóaB -> A: {Nb}_Kab

5 A bá B ằ A ẵ à à đ iữ khó K b 5. A báo B rằng A sẵn sàng và đang giữ khóa Kab, thông tin được mã hóa

A -> B: {Nb-1}_Kab

Page 176: ATTT_full

Needham-Schroeder khóa đối xứng

Tấ ô d “R l ”Tấn công dạng “Replay”Giải pháp dùng trong Kerberos

Tem thời gian (Timestamp)Nonce

Page 177: ATTT_full

Needham-Schroeder khóa công khai

Ali (A) ố t đổi thô ti ới Alice (A) muốn trao đổi thông tin với Bob (B)Ali à B b ù ti tưở ột Alice và Bob cùng tin tưởng một Server (S) trung gian

K à k khó iê à ô kh i ủ AKa và ka khóa riêng và công khai của AKb và kb khóa riêng và công khai của BKs à ks khóa iêng à công khai của SKs và ks khóa riêng và công khai của SNa và Nb là các “nonce”

Page 178: ATTT_full

Needham-Schroeder khóa công khai1. A yêu cầu S khóa công khai của B1. A yêu cầu S khóa công khai của B

A -> S: A,B2. S gửi khóa công khai của B cho A

S -> A: {kb,B}_Ks3 A ửi ủ ì h h B3. A gửi nonce của mình cho B

A -> B: {Na,A}_kb4. B yêu cầu S khóa công khai của A

B -> S: B,A,5. S gửi khóa công khai của A cho B

S -> B: {ka,A}_Ks6. B gửi nonce của mình và của A cho A

B > A: {Na Nb} kaB -> A: {Na,Nb}_ka7. A khẳng định đã nhận được nonce của B

A ->B: {Nb}_kb

Page 179: ATTT_full

Needham-Schroeder khóa công khai

Tấ ô d “M i th iddl ”Tấn công dạng “Man-in-the-middle”

Page 180: ATTT_full

Bài tập Mật mã & Ứng dụngBài tập Mật mã & Ứng dụng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 181: ATTT_full

Bài 1: Vòng lặp DES

Khóa dạng thập lục phânKhóa dạng thập lục phân133457799BBCDFF1

Tin dạng thập lục phânTin dạng thập lục phân0123456789ABCDEF

Tính L0,R0C0,D0C1 1C1,D1K1L1,R1L1,R1

Page 182: ATTT_full

L0 = 11001100000000001100110011111111L0 = 11001100000000001100110011111111R0 = 11110000101010101111000010101010C0 = 1111000011001100101010101111D0 = 0101010101100110011110001111C1 = 1110000110011001010101011111D1 1010101011001100111100011110D1 = 1010101011001100111100011110K1 = 000110110000001011101111111111000111000001110010R1 = 11001111010010110110010101000100

Page 183: ATTT_full

Bài 2: Tính bù DES

Chứ i h ằChứng minh rằng|DES(m,k) = DES(|m,|k)

Từ đó iải th ật tì khó biết Từ đó suy ra giải thuật tìm khóa biết mã của tin và bù của tin, với độ phức tạp nhỏ hơn 2^56tạp nhỏ hơn 2^56.

Page 184: ATTT_full

IP và FP không ảnh hưởng đến kết quảIP và FP không ảnh hưởng đến kết quảE(|R) = | E(R)Gọi KSi(k) là khóa vòng lặp i sinh ra từ khó b đầ k T ókhóa ban đầu k. Ta có

KSi(|k) = |KSi(k)Đầu vào của S-boxes

|E(R) xor |KTa có tính chất

A xor B = |A xor |BA xor B = |A xor |BTừ đó suy ra đầu vào của S-boxes là

E(R) xor K

Page 185: ATTT_full

Input: Tin x Mã DES(K x) Mã DES(K |x)Input: Tin x, Mã DES(K,x), Mã DES(K,|x)Output: Khóa tương ứng với K

1 fo ll non te ted ke k do1. for all non-tested key k do2. c = DES(k,x)3. if c == DES(K,x)then4. return k5. end if6. if |c == DES(K,|x)then| ( | )7. return |k8. end if9. end for9. end for

Page 186: ATTT_full

Bài 3: Khóa yếu DES

Ch biết K1 K2 K16Cho biết K1 = K2 = … = K16Tìm tất cả các khóa thỏa mãn tính hất t êchất trên

Page 187: ATTT_full

4 khó4 khóaTất cả các bit của C là 0 + tất cả các bit của D là 0của D là 0Tất cả các bit của C là 1 +tất cả các bit của D là 0của D là 0Tất cả các bit của C là 0 + tất cả các bit của D là 1Tất cả các bit của C là 1 +tất cả các bit của D là 1

Page 188: ATTT_full

Bài 4: Tấn công RSA

Tấn công dạng Common ModuliTấn công dạng Common ModuliAlice sử dụng khóa công khai RSA (n,ea)Bob sử dụng khóa công khai RSA (n eb)Bob sử dụng khóa công khai RSA (n,eb)ƯSCLN(ea,eb) = 1 Cho tin mCho tin mEve biết mã ca của tin m mã hóa bởi AliceEve biết mã cb của tin m mã hóa bởi BobEve biết mã cb của tin m mã hóa bởi BobEve có thể tính được m hay không?

Page 189: ATTT_full

Tính x y sao choTính x,y sao chox*ea + y*eb = 1

TínhTínhca^x*cb^y

Ta biếtTa biếtca^x*cb^y = m^(ea*x) * m^(eb*y) ( ) ( y)= m^(ea*x+eb*y) = m

Page 190: ATTT_full

Bài 5: Tấn công Common Moduli

Ali ử d khó ô kh i (493 3)Alice sử dụng khóa công khai (493,3)Bob sử dụng khóa công khai (493,5)Eve biết mã 293 của tin m mã hóa bởi AliceEve biết mã 421 của tin m mã hóa bởi BobTính m

Page 191: ATTT_full

Bài 6: Chứ ký số ElGamal

2237p= 2237g = 2Khóa riêng là a = 1234Giá trị băm của tin m là h(m) = 111k = 2323Tạo chữ kýTạo chữ kýKiểm định chữ ký

Page 192: ATTT_full

799r = 799k^-1 = 1979s = 1339

Page 193: ATTT_full

Bài 7: Tấn công Needham-Schroeder

Trình bày 1 kịch bản tấn công giao thức Trình bày 1 kịch bản tấn công giao thức Needham-Schroeder khóa công khai dạng “Man-in-the-middle”dạng Man in the middleĐưa ra một giải pháp chống tấn công

Page 194: ATTT_full

Tấ ôTấn côngA -> E: {Na,A}_keE -> B: {Na,A}_kbB -> E: {Na,Nb}_kaE -> A: {Na,Nb}_kaA -> E: {Nb} keA > E: {Nb}_keE -> B: {Nb}_kb

Page 195: ATTT_full

Giải háGiải phápThay luật

B -> A: {Na,Nb}_ka

bằng luậtB -> A: {Na,Nb,B}_ka

Page 196: ATTT_full

An toàn Phần mềmAn toàn Phần mềm

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 197: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 198: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 199: ATTT_full

Phần mềm ác tính

Chạy theo chủ định của người lập Chạy theo chủ định của người lập trình ra nóChạy và phản ứng theo cách bất Chạy và phản ứng theo cách bất thường, không trông đợi từ phía người dùngg gẨn náu trong hệ thống, hoặc gắn vào các phần mềm không ác tínhCó thể làm được mọi thứ mà một phần mềm có thể làm

Page 200: ATTT_full

Các phần mềm ác tính thường gặpVi rut (Virus)Vi rut (Virus)

Gắn vào một chương trình, phát tán bản sao ra khác chương trình khác

Trojan horseCó các tính năng bất thườngCó các tính năng bất thường

Bom logic (Logic bomb)Phát động khi điều kiện được thỏa mãn

Bom thời gian (Time bomb)Phát động khi đến hạn thời gian

TrapdoorCho phép truy nhập trái phép các tính năng

Sâu (Worm)Sâu (Worm)Phát tán bản sao qua mạng

Thỏ (Rabbit)Nhân bản đến khi không còn tài nguyên

Page 201: ATTT_full

Kích hoạt Virus

Vi hỉ â h i khi đượ kí h h t Virus chỉ gây hại khi được kích hoạt Virus chạy cùng với một chương trình khác chạy bởi người dùngkhác chạy bởi người dùngVirus chạy khi mở tệp đính kèm trong e-mails, tệp ảnh, tệp đồ họamails, tệp ảnh, tệp đồ họa

Page 202: ATTT_full

Phát tán Virus

Mã i đí h à ã hươ t ì hMã virus đính vào mã chương trìnhNối mã virus với mã chương trìnhMã i b h ã hươ t ì hMã virus bao quanh mã chương trìnhMã virus tích hợp vào mã chương trình

Vi tài liệVirus tài liệuTài liệu chứa cả dữ liệu và các lệnh

Page 203: ATTT_full

ẩNơi ẩn náu Virus

Vù B t (B t S t )Vùng Boot (Boot Sector)Bộ nhớ (Memory-Resident)ỨỨng dụng (Application Program)Thư viện (Library)…

Page 204: ATTT_full

Dấu hiệu nhận biết Virus

Mã i ó kiể ẫ đặ biệtMã virus có kiểu mẫu đặc biệtCó thể nhận biết các đoạn mã của từng loại virusloại virus

Mã đính kèm không thay đổiChương trình đính kèm sẽ lớn hơn Chương trình đính kèm sẽ lớn hơn chương trình ban đầu

Vị trí đính kèm không thay đổiVị trí đính kèm không thay đổi

Page 205: ATTT_full

Các biện pháp ngăn chặn

Sử dụng phần mềm thương mại từ nguồn Sử dụng phần mềm thương mại từ nguồn tin cậyKiểm thử phần mềm trên một máy tính/hệ Kiểm thử phần mềm trên một máy tính/hệ thống tách biệtMở tệp đính kèm chỉ khi nào biết rõ nguồn ệp ggốcLưu ở nơi an toàn một phiên bản có thể tái

ủ hệ hố đ ử dtạo của hệ thống đang sử dụngSử dụng phần mềm quét diệt virus

Page 206: ATTT_full

Một số ngộ nhận về virusVirus chỉ lây nhiễm trên các hệ thống MS Virus chỉ lây nhiễm trên các hệ thống MS WindowsVirus không thể thay đổi các file “hidden” hoặc “read only”hoặc read-onlyVirus chỉ xuất hiện trong tệp dữ liệu, chương trình

ỉ á á ôVirus chỉ phát tán thông qua qua đĩa, e-mailVirus không thể tồn tại trong bộ nhớ sau Virus không thể tồn tại trong bộ nhớ sau khi reboot power off/onVirus lây nhiễm trên phần cứng

Page 207: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 208: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 209: ATTT_full

ỗLỗi phần mềm

Lậ t ì h iê thườ ắ lỗiLập trình viên thường mắc lỗikhông cố ýkhô á tí hkhông ác tínhnhưng đôi khi gây hậu quả nghiêm trọng

Page 210: ATTT_full

ỗCác lỗi phần mềm thường gặp

T à bộ đệ (B ff O fl )Tràn bộ đệm (Buffer Overflow)Array Index Out of Bound

Khô đầ đủ (I l t M di ti )Không đầy đủ (Incomplete Mediation)Format String

l flImplicit Cast, Integer Overflow

Đồng bộ (Synchronization)File stat()/open()

Page 211: ATTT_full

ỗLỗi tràn bộ đệm1 char buf[80];1. char buf[80];2. void vulnerable() {3. gets(buf);3. gets(buf);4. }

Điều gì xảy ra nếu đầu vào có hơn 80 bytechar buf[80];int authenticated = 0;int authenticated = 0;char buf[80];int (*fnptr)();

Page 212: ATTT_full

ỗLỗi không đầy đủ1 void vulnerable() {1. void vulnerable() {2. char buf[80];3. if (fgets(buf, sizeof buf, stdin) == NULL)3. if (fgets(buf, sizeof buf, stdin) NULL)4. return;5. printf(buf);p ( )6. }

Điều gì sẽ xảy ra?

Page 213: ATTT_full

ỗLỗi không đầy đủ1. char buf[80];1. char buf[80];2. void vulnerable() {3. int len = read_int_from_network();4. char *p = read_string_from_network();5 if (l > i f b f) {5. if (len > sizeof buf) {6. error("length too large, nice try!");7. return;8. }}9. memcpy(buf, p, len);10. }11. void *memcpy(void *dest, const void *src, size_t n);12 typedef unsigned int size t;12. typedef unsigned int size_t;

Điều gì sẽ xảy ra?

Page 214: ATTT_full

ỗLỗi đồng bộ1 int openfile(char *path) {1. int openfile(char path) {2. struct stat s;3. if (stat(path, &s) < 0)4 et n 14. return -1;5. if (!S_ISRREG(s.st_mode)) {6. error("only allowed to regular files; nice try!");7. return -1;8. }9. return open(path, O_RDONLY);p (p )10.}

Điều gì sẽ xảy ra?Điều gì sẽ xảy ra?

Page 215: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 216: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 217: ATTT_full

ểKiểm thử

M đí h ủ kiể thử là tì lỗi Mục đích của kiểm thử là tìm ra lỗi của hệ thống

Nế không tìm a lỗi chúng ta hi ọng Nếu không tìm ra lỗi, chúng ta hi vọng rằng hệ thống là an toàn

Page 218: ATTT_full

ểQuy trình kiểm thử

1 Đơ ị (U it T ti )1. Đơn vị (Unit Testing)2. Tích hợp (Integration Testing)3. Chức năng (Function Testing)4. Hiệu năng (Performance Testing)5. Công nhận (Acceptance Testing)6. Cài đặt (Installation Testing)6. Cài đặt (Installation Testing)

Page 219: ATTT_full

Một số loại hình kiểm thử đặc biệt

Hồi (R i T ti ) Hồi quy (Regression Testing) Nếu hệ thống có thay đổi, chỉnh sửa

X ắ (F T ti )Xoắn (Fuzz Testing)Các trường hợp đặc biệt, dễ bị khai thác và tấn côngvà tấn công

Page 220: ATTT_full

ểCác tiếp cận trong kiểm thửHộp đen (Black box)Hộp đen (Black-box)

Không có thông tin về cấu trúc bên trong của phần mềmDù h ấ ả á ứ ủ ì h kiể hửDùng cho tất cả các mức của quy trình kiểm thử

Hộp trắng (White-box)Biết cấu trúc bên trong của phần mềmBiết cấu trúc bên trong của phần mềmThường dùng cho kiểm thử đơn vị

Hộp xám (Grey-box)ỗHỗn hợp Đen: kiểm thửTrắng: thiết kế ca kiểm thửg

Page 221: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 222: ATTT_full

ểKiểm định hình thức

M đí h ủ kiể đị h hì h thứ là Mục đích của kiểm định hình thức là chứng minh hệ thống an toàn

Page 223: ATTT_full

Các tiếp cận trong kiểm định hình thức

Kiểm định mô hình (Model checking)Kiểm định mô hình (Model checking)Phần mềm được đặc tả bằng một mô hìnhQuá trình kiểm định thực hiện bằng cách duyệt ấ ả á hái hô ấ ả á tất cả các trạng thái thông qua tất cả các

chuyển tiếp

Suy diễn logic (Logical Inference)y g ( g )Đầu vào của phần mềm bị ràng buộc bằng một biểu thức logicTương tự với đầu raTương tự với đầu raBản thân phần mềm cũng bị ràng buộc bằng một biểu thức logic

Page 224: ATTT_full

Kiểm định hình thức sử dụng suy ễdiễn logic

Chương trìnhĐầu vào Chương trìnhĐầu vàoĐầu ra

Đầu vào+ Điều kiện trước Đầu ra

+Điều kiện sau

Chương trình+ Điều kiện

+Điều kiện sau

Page 225: ATTT_full

Điều kiện trước (Precondition)1 /* Requires: n >= 1 */1. / Requires: n >= 1 /

2. int fact(int n) {3. int t;4. if (n == 1)5 return 1;5. return 1;6. t = fact(n-1);7. t *= n;8. return t;9. }

Page 226: ATTT_full

Điều kiện sau (Postcondition)1 /* Ensures: returnvalue >= 0 */1. / Ensures: returnvalue >= 0 /

2. int fact(int n) {3. int t;4. if (n == 1)5 return 1;5. return 1;6. t = fact(n-1);7. t *= n;8. return t;9. }

Page 227: ATTT_full

Điều kiện trong chương trình1 int fact(int n) {1. int fact(int n) {2. int t;3. if (n == 1)4 et n 14. return 1;5. /* n>=2 */6. t = fact(n-1);7. /* t>=0 */8. t *= n;9. /* t>=0 */10. return t;11.}

Page 228: ATTT_full

Điều kiện1 /* Requires: n >= 1; Ensures: returnvalue >= 0 */1. / Requires: n > 1; Ensures: returnvalue > 0 /

2. int fact(int n) {3. int t;3. int t;4. if (n == 1)5. return 1;6. /* n>=2 */6. / n 2 /7. t = fact(n-1);8. /* t>=0 */9. t *= n;;10. /* t>=0 */11. return t;12. }}

Page 229: ATTT_full

An toàn Phần mềm

Phầ ề á tí hPhần mềm ác tínhCác phần mềm ác tính thường gặpCá biệ há ă hặCác biện pháp ngăn chặn

Lỗi phần mềmá lỗ hầ ề h ờ ặCác lỗi phần mềm thường gặp

Các biện pháp an toànKiể thử (T ti )Kiểm thử (Testing)Kiểm định hình thức (Formal Verification)Lập trình an toàn (Secure Coding)Lập trình an toàn (Secure Coding)

Page 230: ATTT_full

Lập trình an toàn (Secure Coding)

N ê tắNguyên tắcMô đun (Modularity)Đó ói (E l ti )Đóng gói (Encapsulation)Giấu thông tin (Information Hiding)

Page 231: ATTT_full

Mô đun

Thiết kế á hợ hầThiết kế các hợp phầnMột mục tiêu/nhiệm vụNhỏNhỏĐơn giảnĐộc lậpĐộc lập

Page 232: ATTT_full

Đóng gói

Giấu thông tin về cách thức cài đặt Giấu thông tin về cách thức cài đặt các hợp phần

Ví dụ: lớp ảo C++ giao diện Java Ví dụ: lớp ảo C++, giao diện Java Giảm thiểu chia xẻ giữa các hợp phần

Ví dụ: các thư việnVí dụ: các thư việnCác hợp phần tương tác thông qua các giao diệng ệ

Ví dụ: tương tác giữa các đối tượng thông qua các phương thức

Page 233: ATTT_full

Giấu thông tin

Một hợ hầ hư ột hộ đ hì Một hợp phần như một hộp đen nhìn từ phía ngoài

Ví d một lớp C++ Ja aVí dụ: một lớp C++, Java

Các phần tử bên ngoài không thể thay đổi sữa chữa thông tin một cách thay đổi sữa chữa thông tin một cách ác ý và trái phép

Ví dụ: các thuộc tính private protectedVí dụ: các thuộc tính private, protected

Page 234: ATTT_full

Lập trình an toàn (Secure Coding)

Một số quy tắc thực hànhMột số quy tắc thực hànhSử dụng một chuẩn lập trìnhLập trình phòng thủLập trình phòng thủ

Kiểm tra dữ liệu đầu vào/đầu raSử dụng đặc quyền thấp nhất có thể

Thiết kế theo chính sách an toànSử dụng các công cụ đảm bảo chất lượng

Kiểm thửKiểm thửKiểm địnhDuyệt lại mãyệ ạ

Page 235: ATTT_full

An toàn Hệ điều hànhAn toàn Hệ điều hành

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 236: ATTT_full

Hệ điều hành

V i t òVai tròGiao diện giữa phần cứng và phần mềmQ ả lý tài êQuản lý tài nguyênCung cấp các phương tiện bảo vệ phần cứng và ứng dụngcứng và ứng dụng

Page 237: ATTT_full

An toàn Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hành

Bảo vệ bộ nhớ và địa chỉĐiều khiển truy nhậpBảo vệ tệpXác thực người dùng

Nguyên tắc thiết kế Hệ điều hànhNguyên tắc thiết kế Hệ điều hànhGiám sát thẩm quyền (Reference Monitor)Phân hoạch (Separation)/Cách ly (Isolation)Thiết kế hâ tầ (L d D i )Thiết kế phân tầng (Layered Design)

Hệ điều hành tin cậy (Trusted Operating System)

Page 238: ATTT_full

An toàn Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hành

Bảo vệ bộ nhớ và địa chỉĐiều khiển truy nhậpBảo vệ tệpXác thực người dùng

Nguyên tắc thiết kế Hệ điều hànhNguyên tắc thiết kế Hệ điều hànhGiám sát thẩm quyền (Reference Monitor)Phân hoạch (Separation)/Cách ly (Isolation)Thiết kế hâ tầ (L d D i )Thiết kế phân tầng (Layered Design)

Hệ điều hành tin cậy (Trusted Operating System)

Page 239: ATTT_full

Bả ệ bộ hớ à đị hỉBảo vệ bộ nhớ và địa chỉLà thế à ă hặ ột hươ Làm thế nào ngăn chặn một chương trình/người dùng can thiệp vào không gian bộ nhớ của chương trình/người gian bộ nhớ của chương trình/người dùng khác?

Phân đoạn (Segmentation)Phân đoạn (Segmentation)Phân trang (Paging)

Page 240: ATTT_full

Phân đoạn (Segmentation)Phân chia chương trình thành các đoạnPhân chia chương trình thành các đoạn

Tương ứng với các đoạn dữ liệu, các chương trình conMỗi đ ó ề khá h (R W E)Mỗi đoạn có quyền khác nhau (R,W,E)

Phân chia bộ nhớ vật lý thành các đoạnTương ứng với, các mảng dữ liệu người dùng Tương ứng với, các mảng dữ liệu người dùng hoặc các đoạn mã chương trình

Mỗi đoạn có một tên duy nhất<Name Offset><Name,Offset>

Hệ điều hành phải duy trì một bảng các đoạnạ

Page 241: ATTT_full

Phân trang (Paging)

Phân chia chương trình thành các trang Phân chia chương trình thành các trang (page) cùng kích thướcPhân chia bộ nhớ vật lý thành các khung Phân chia bộ nhớ vật lý thành các khung trang (page frame) cùng kích thước

512 đến 4096 byte

Mỗi trang có một tên duy nhất<Page,Offset>

ệ ề à ả ì ộ ả áHệ điều hành phải duy trì một bảng các trang

Page 242: ATTT_full

Kết hợp Phân đoạn và Phân trang

Ưu điểm của phân đoạnƯu điểm của phân đoạnBảo vệ bộ nhớ bằng cách phân quyền theo chương trình/người dùngeo c ươ g / gườ dù gHệ điều hành kiểm soát việc quyền đọc/ghi/thực hiện trên bộ nhớ

Ư ể ủ âƯu điểm của phân trangTốc độ

T á hệ điề hà h hiệ đ iTrong các hệ điều hành hiện đạiKết hợp Phân đoạn+Phân trang

Page 243: ATTT_full

Điề khiể t hậĐiều khiển truy nhậpRât nhiều đối tượng được truy nhậpRât nhiều đối tượng được truy nhập

Bộ nhớPhần cứngPhần cứngTệpThông tin hệ thống: bảng, cơ chế bảo vệ, g ệ g g, ệ,lệnh đặc quyền…

Vấ đề à đặ Vấn đề an toàn đặt raAi được truy nhập gì với đặc quyền nào?

Page 244: ATTT_full

ế Điề khiể t hậCơ chế Điều khiển truy nhậpD h á h điề khiể t hậDanh sách điều khiển truy nhập

Danh sách các đối tượng truy nhậpMỗi đối tượ ó ột d h á h á hủ Mỗi đối tượng có một danh sách các chủ thể

Ma trận điều khiển truy nhậpMa trận điều khiển truy nhậpMột chiều là danh sách các chủ thểMột chiều là danh sách các đối tượng Một chiều là danh sách các đối tượng truy nhập tương ứng với các chủ thể

Page 245: ATTT_full

Bả ệ tệBảo vệ tệpBả ệ hóBảo vệ nhóm

Tất cả người dùng được phân thành nhómnhómQuyền sử dụng được một người dùng thiết lập cho mình và cả nhómthiết lập cho mình và cả nhóm

Bảo vệ cá thểMỗi người dùng có một số quyền Mỗi người dùng có một số quyền

Quyền sử dụng lâu dàiQuyền sử dụng tạm thời

Page 246: ATTT_full

Bả ệ tệBảo vệ tệpHệ thố tệ UNIX/LINUXHệ thống tệp UNIX/LINUX

Mỗi tệp có chủ sở hữu và nhóm sở hữuQ ề đượ thiết lậ bởi hủ ở hữQuyền được thiết lập bởi chủ sở hữu

R,W,Esetid owner group othersetid, owner, group, other

Chỉ có chủ sở hữu và root mới được phép thay đổi quyềny q y

Page 247: ATTT_full

Xá thự ười dùXác thực người dùngHệ điề hà h ả lý hiề ười Hệ điều hành quản lý nhiều người dùng

Ai là ai?Ai là ai?

Giải pháp xác thực người dùngMật khẩMật khẩuMột số đặc điểm sinh trắc học

Page 248: ATTT_full

ằ ẩXác thực bằng mật khẩuHệ điều hành lưu trữ một tệp người dùng/mật Hệ điều hành lưu trữ một tệp người dùng/mật khẩu

Tệp thông thườngThông tin lưu dạng văn bảnThông tin lưu dạng văn bảnĐộ an toàn thấp

Tệp mã hóaMã hó ả tệ h ặ hỉ ã hó ật khẩMã hóa cả tệp hoặc chỉ mã hóa mật khẩuĐộ an toàn phụ thuộc vào hê mật mã

Để tăng cường độ an toànMật khẩu đủ dài, tránh chứa các thông tin đặc biệtThay đổi mật khẩu đều đặnĐề phòng tấn công dạng “đăng nhập giả”g g g g g

Page 249: ATTT_full

ằ ắXác thực bằng sinh trắc học

Các đặc điểm sinh trắc họcCác đặc điểm sinh trắc họcVân tay, mắt, khuôn mặt, chữ viết…

Xác thực bằng sinh trắc học tương đối Xác thực bằng sinh trắc học tương đối mới

Phát triển nhanh trong những năm Phát triển nhanh trong những năm Một số nhược điểm

Giá thànhTốc độ/Độ chính xácGiả mạo

Page 250: ATTT_full

An toàn Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hành

Bảo vệ bộ nhớ và địa chỉĐiều khiển truy nhậpBảo vệ tệpXác thực người dùng

Nguyên tắc thiết kế Hệ điều hànhNguyên tắc thiết kế Hệ điều hànhGiám sát thẩm quyền (Reference Monitor)Phân hoạch (Separation)/Cách ly (Isolation)Thiết kế hâ tầ (L d D i )Thiết kế phân tầng (Layered Design)

Hệ điều hành tin cậy (Trusted Operating System)

Page 251: ATTT_full

ẩGiám sát thẩm quyền

Phần quan trọng nhất của hệ điều hànhPhần quan trọng nhất của hệ điều hànhLà một tập các điều khiển truy nhập các đối tượngtượng

Bộ nhớ, thiết bị, tệp, thông tin các tiến trình, …

Đặc điểmặKhông bao giờ bị suy yếu, tê liệtLuôn được gọi đến khi một đối tượng được yêu cầu sử dụngcầu sử dụngNhỏ gọn, để có thể dễ dàng phân tích và kiểm thử và đảm bảo tính đầy đủ

Page 252: ATTT_full

â áPhân hoạch/Cách lyPhân hoạch vật lýPhân hoạch vật lý

Các tiến trình khác nhau sử dụng các thiết bị khác nhau

â ờPhân hoạch thời gianCác tiến trình với yêu cầu khác nhau thực hiện tại các thời gian khác nhauạ g

Phân hoạch logic (Cách ly)Người dùng/tiến trình thực hiện nhiệm vụ của mình trong không gian của mìnhmình trong không gian của mình

Phân hoạch mật mãNgười dùng/tiến trình giấu thông tinh của mình

Page 253: ATTT_full

Thiết kế phân tầng1 Lõi an toàn (Security Kernel)1. Lõi an toàn (Security Kernel)

1. Phần cứng2. An toàn

2 Lõi hệ điều hành2. Lõi hệ điều hành1. Đồng bộ2. Cấp phát

3 Hệ điều hành3. Hệ điều hành1. Sắp đặt, Chia xẻ, Quản lý bộ nhớ2. Hệ thống tệp, Cấp phát thiết bị3. Tính năng khác3. Tính năng khác

4. Ứng dụng

Page 254: ATTT_full

Thiết kế phân tầng

Một mô đun = nhiều mô đun hợp Một mô đun = nhiều mô đun hợp phần

Mỗi mô đun hợp phần thuộc một tầng Mỗi mô đun hợp phần thuộc một tầng khác nhau của kiến trúc đa tầng

Ví dụ: Mô đun xác thực người dùng1. Cập nhật thông tin người dùng2. So sánh thông tin người dùng

ì ế ờ ù3. Tìm kiếm người dùng4. Giao diện xác thực người dùng

Page 255: ATTT_full

An toàn Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hànhCác vấn đề bảo vệ trong Hệ điều hành

Bảo vệ bộ nhớ và địa chỉĐiều khiển truy nhậpBảo vệ tệpXác thực người dùng

Nguyên tắc thiết kế Hệ điều hànhNguyên tắc thiết kế Hệ điều hànhGiám sát thẩm quyền (Reference Monitor)Phân hoạch (Separation)/Cách ly (Isolation)Thiết kế hâ tầ (L d D i )Thiết kế phân tầng (Layered Design)

Hệ điều hành tin cậy (Trusted Operating System)

Page 256: ATTT_full

Hệ điều hành tinh cậy

Xác thực người dùngXác thực người dùngĐiều khiển truy nhập

Thường xuyênThường xuyênTùy ý

Bảo vệ đối tượng sử dụng lạiệ ợ g ụ g ạĐầy đủĐường dẫn tin cậyg yKiểm tra logPhát hiện đột nhập

Page 257: ATTT_full

An toàn Cơ sở dữ liệuAn toàn Cơ sở dữ liệu

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 258: ATTT_full

Cơ sở dữ liệu

Tậ hợ á dữ liệ ó hệ đượ Tập hợp các dữ liệu có quan hệ được lưu trữ (tập trung hoặc phân tán) để người dùng có thể truy nhập khi cầnngười dùng có thể truy nhập khi cần

Page 259: ATTT_full

Mục tiêu an toàn CSDL

Bí ậtBí mậtDữ liệu nhạy cảm

T à Toàn vẹnVật lýLogic

Sẵn dùngĐiều khiển truy nhậpXác thực người dùngg g

Page 260: ATTT_full

An toàn CSDL

Cá ối đ d CSDLCác mối đe dọa CSDLCập nhật CSDLDữ liệ h ảDữ liệu nhạy cảmSuy diễnSQL InjectionSQL Injection

Thiết kế CSDL tin cậyCSDL đ tầCSDL đa tầng

Page 261: ATTT_full

An toàn CSDL

Cá ối đ d CSDLCác mối đe dọa CSDLCập nhật CSDLDữ liệ h ảDữ liệu nhạy cảmSuy diễnSQL InjectionSQL Injection

Thiết kế CSDL tin cậyCSDL đ tầCSDL đa tầng

Page 262: ATTT_full

Cập nhật CSDL

Sự ố hệ thốSự cố hệ thốngHệ thống bị sự cố khi đang cập nhật CSDLCSDL

Tương tranhNhiều người dùng truy nhập sửa đổi cùng Nhiều người dùng truy nhập sửa đổi cùng lúc vào cùng dữ liệu

Page 263: ATTT_full

Cập nhật CSDL và sự cố hệ thống

Giải pháp 2 phaGiải pháp 2 pha1. Intent

1. Thu thập tài nguyên và thông tin, tính toán 1. Thu thập tài nguyên và thông tin, tính toán và chuẩn bị dữ liệu cho pha sau

2. Đánh dấu kết thúc pha IntentSet COMMIT FLAG Set COMMIT-FLAG

2. Commit1. Thực hiện cập nhật CSDL với các dữ liệu đã

ẩchuẩn bị ở pha trước2. Đánh dấu kết thúc pha Commit

Unset COMMIT-FLAGU set CO G

Page 264: ATTT_full

Cập nhật CSDL và tương tranh

Cậ hật CSDL là ột th tá ơ Cập nhật CSDL là một thao tác cơ bản

Chỉ một thao tác cập nhật thực hiện t ên Chỉ một thao tác cập nhật thực hiện trên một dữ liệuHệ quản trị CSDL sẽ bảo vệ dữ liệu đang Hệ quản trị CSDL sẽ bảo vệ dữ liệu đang được cập nhậtKhi thao tác cập nhật một dữ liệu kết ập ậ ộ ệthúc, các thao tác khá mới có quyền thực hiện trên dữ liệu đó

Page 265: ATTT_full

Dữ liệu nhạy cảm

Dữ liệ ô hú khô ê óDữ liệu công chúng không nên cóThông tin nhạy cảm

BảngBản ghi

ờTrường

Page 266: ATTT_full

Dữ liệu nhạy cảm

Cá l i ò ỉ dữ liệ h ảCác loại rò gỉ dữ liệu nhạy cảmDữ liệu chính xácCậCậnKết quả âmTồn tạiTồn tạiGiá trị xác xuất

Page 267: ATTT_full

Dữ liệu nhạy cảm

Hệ ả t ị CSDL ả lý t hậ Hệ quản trị CSDL quản lý truy nhập dữ liệu nhạy cảm bằng điều khiển truy nhậptruy nhập

Page 268: ATTT_full

ễSuy diễn

S diễ dữ liệ h ả từ dữ liệ Suy diễn dữ liệu nhạy cảm từ dữ liệu không nhạy cảm

Page 269: ATTT_full

ễSuy diễn

Cá l i tấ ô diễCác loại tấn công suy diễnTrực tiếp (Direct)Giá tiế (I di t)Gián tiếp (Indirect)

Tổng (Sum)Đếm (Count)Đếm (Count)Trung bình (Mean)…

Page 270: ATTT_full

ễSuy diễn

Cá biệ há ă hặCác biện pháp ngăn chặnPhân tích câu truy vấnN t thô tiNgụy trang thông tinLoại bỏ thông tin nhạy cảm

Page 271: ATTT_full

SQL Injection

SQLSQLStructured Query LanguageN ô ữ t ấ CSDLNgôn ngữ truy vấn CSDL

Page 272: ATTT_full

SQL Injection

Tấ ô SQL I j tiTấn công SQL Injectionstatement = “SELECT * FROM users WHERE name = ‘ “ + userName +” ‘;” WHERE name = + userName + ;

Điều gì xảy ra nếu userName = a’ or ‘t’=‘t Điều gì xảy ra nếu userName = a or t = t

Điều gì xảy ra nếu userName = a';DROP Điều gì xảy ra nếu userName = a ;DROP TABLE users;

Page 273: ATTT_full

SQL Injection

Biện pháp ngăn chặnBiện pháp ngăn chặnMức lập trình

Kiểm soát chặt chẽ đầu vàoKiểm soát chặt chẽ đầu vàoLoại bỏ các ký tự đặc biệt

Ở mức CSDL ểDùng lệnh prepare để định dạng câu truy

vấnPhân tích tĩnh câu truy vấnPhân tích tĩnh câu truy vấn

Phát hiện điều kiện “t = t”Kiểm thử

Page 274: ATTT_full

An toàn CSDL

Cá ối đ d CSDLCác mối đe dọa CSDLCập nhật CSDLDữ liệ h ảDữ liệu nhạy cảmSuy diễnSQL InjectionSQL Injection

Thiết kế CSDL tin cậyCSDL đ tầCSDL đa tầng

Page 275: ATTT_full

CSDL đa tầngCác tầng CSDL tương ứng với mức độ nhạy Các tầng CSDL tương ứng với mức độ nhạy cảm của dữ liệuCác tiếp cậnp ậ

Phân ngăn (Partitioning)Mã hóa (Encryption)KhóaKhóa

Khóa toàn vẹn (Integrity Lock)Khóa nhạy cảm (Sensitive Lock)

Front-end tin cậy (Trusted Front-end)Bộ lọc giao hoán (Commutative Filter)Cửa sổ (Window/View)Cửa sổ ( do / e )

Page 276: ATTT_full

Phân ngăn

CSDL đượ hi thà h á CSDL khá CSDL được chia thành các CSDL khác nhau ở mức độ nhạy cảm khác nhauƯ điểƯu điểm

Quản lý an toàn ở nhiều mức khác nhau

ểNhược điểmDư thừaKhông kết hợp dữ liệu ở các mức nhạy cảm khác nhau

Page 277: ATTT_full

Mã hóa

Mỗi dữ liệ h ả ẽ đượ ã hó Mỗi dữ liệu nhạy cảm sẽ được mã hóa bằng một khóa tương ứngƯ điểƯu điểm

Quản lý an toàn ở nhiều mức khác nhau

ểNhược điểmTốc độKhông gian lưu trữ

Page 278: ATTT_full

Khóa toàn vẹn

M tiê đả bả tí h t à à Mục tiêu đảm bảo tính toàn vẹn và giới hạn truy nhậpKhó Khóa

ChecksumTí h t á bằ hà ã hó h ặ hà băTính toán bằng hàm mã hóa hoặc hàm bămGiá trị phụ thuộc vào Data ID + Data + Sensitivity Labely

Page 279: ATTT_full

Khóa nhạy cảm

M tiê h iấ độ h ả ủ Mục tiêu che giấu độ nhạy cảm của dữ liệuKhóKhóa

MãTí h t á bằ hà ã hó h ặ hà băTính toán bằng hàm mã hóa hoặc hàm bămGiá trị phụ thuộc vào Data ID + Sensitivity Level

Page 280: ATTT_full

Front-end tin cậy

Hoạt động giống “Giám sát thẩm quyền”Hoạt động giống “Giám sát thẩm quyền”Điều khiển truy nhập CSDL1 Xác thực người dùng1. Xác thực người dùng2. Kiểm tra quyền người dùng3. Gửi truy vấn cho hệ quản trị CSDL4. Nhận kết quả truy vấn5. Phân tích độ nhạy cảm của kết quả truy vấn, so

sánh với quyền người dùngsánh với quyền người dùng6. Định dạng lại kết quả truy vấn7. Gửi kết quả truy vấn cho người dùng

Page 281: ATTT_full

Bộ lọc giao hoánHoạt động giống “Front end tin cậy”Hoạt động giống Front-end tin cậyĐiều khiển truy nhập CSDL

1. Xác thực người dùngự g g2. Kiểm tra quyền người dùng3. Định dạng lại truy vấn4 Gửi truy vấn cho hệ quản trị CSDL4. Gửi truy vấn cho hệ quản trị CSDL5. Nhận kết quả truy vấn6. Phân tích độ nhạy cảm dữ liệu của kết quả truy

vấn so sánh với quyền người dùngvấn, so sánh với quyền người dùng7. Định dạng lại kết quả truy vấn8. Gửi kết quả truy vấn cho người dùng

Page 282: ATTT_full

ổCửa sổ

M tiê iới h “tầ hì ” ủ Mục tiêu giới hạn “tầm nhìn” của người dùng theo quyền

Q ền đọc ghiQuyền đọc, ghi

Mỗi cửa sổ là một tập con của CSDLMỗi tậ tươ ứ ới dữ liệ à Mỗi tập con tương ứng với dữ liệu mà người dùng có quyền sử dụng

Page 283: ATTT_full

An toàn MạngAn toàn Mạng

Trần Đức KhánhBộ môn HTTT – Viện CNTT&TTĐH BKHN

Page 284: ATTT_full

Mạng máy tínhMôi trường sử dụngMôi trường sử dụngTôpô và kích thướcPhương tiện truyền thông

Cáp Cáp quang Vi sóng Hồng ngọa SatelliteCáp, Cáp quang, Vi sóng, Hồng ngọa, SatelliteGiao thức

7 tầng OSI: Vật lý, Liên kết Dữ liệu, Mạng, Vận chuyển Phiên Trình diễn Ứng dụng chuyển, Phiên, Trình diễn, Ứng dụng

Địa chỉMAC, IP

Đị h t ếĐịnh tuyếnLoại mạng

LAN, WAN, Internets

Page 285: ATTT_full

An toàn MạngCác mối đe dọaCác mối đe dọa

Thăm dòNghe trộmMạo danh lừa đảoMạo danh, lừa đảoLỗ hổng trang WebTừ chối dịch vụMã lưu độngMã lưu động

Các biện pháp ngăn chặnMã hóaXá thựXác thựcTường lửaPhát hiện đột nhập

Page 286: ATTT_full

An toàn MạngCác mối đe dọaCác mối đe dọa

Thăm dòNghe trộmMạo danh lừa đảoMạo danh, lừa đảoLỗ hổng trang WebTừ chối dịch vụMã lưu độngMã lưu động

Các biện pháp ngăn chặnMã hóaXá thựXác thựcTường lửaPhát hiện đột nhập

Page 287: ATTT_full

Thăm dò

Q ét ổ (P t S )Quét cổng (Port Scan)Thu thập thông tin đối tượng tấn công

dịch vụ cổng đang hoạt động (HTTP:80 dịch vụ, cổng đang hoạt động (HTTP:80, POP:110, SMTP:25, FTP:21)phiên bản hệ điều hànhp ệphiên bản ứng dụng

Tham khảo danh sách các lỗ hổng của á ê ảcác phiên bản

Thực hiện tấn công

Page 288: ATTT_full

Nghe trộm

Đườ t ề áĐường truyền cápSử dụng “packet sniffer”Lậ t ì h l i d Lập trình lại card

Wirelessí h ệ ấ dễ b h ộTín hiệu rất dễ bị nghe trộmSử dụng ăng ten

Page 289: ATTT_full

Mạo danh, lừa đảoPhỏng đoán thông tin xác thực của đối tượng tấn côngPhỏng đoán thông tin xác thực của đối tượng tấn công

Đoán mật khẩuNghe trộm thông tin xác thực của đối tượng tấn công

Nghe trộm mật khẩuNghe trộm mật khẩuTận dụng lỗ hổng cơ chế xác thực

Tràn bộ đệmThô ti á thự ô ộThông tin xác thực công cộng

Thiết bị mạng quản lý bởi SNMPMan-in-the-middlePhishing

Page 290: ATTT_full

ỗ ổLỗ hổng trang Web

Bôi ấ (D f t)Bôi xấu (Defacement)Tràn bộ đệmDot-Dot-Slash

../..

Gọi phương thức phía máy chủ

Page 291: ATTT_full

Từ chối dịch vụ

Tràn kết nối (Connection Flooding)Tràn kết nối (Connection Flooding)Tấn công giao thức TCP, UDP, ICMP

Ping, Smurf, Syn FloodPing, Smurf, Syn Flood

DNS (Domain Name Server)Tận dụng lỗi Buffer Overflow để thay đổi ậ ụ g ythông tin định tuyến

DNS cache poisoning

Từ hối dị h hâ tá (DD S)Từ chối dịch vụ phân tán (DDoS)Dùng các Zombie đồng loạt tấn công

Page 292: ATTT_full

Mã lưu độngCookieCookie

Cookie lưu thông tin người dùng (phiên, lâu dài) Scripts

Tấ ô á t ASP JSP CGI PHPTấn công các trang ASP, JSP, CGI, PHPActiveXMã Java

AppletAuto Exec

exe doc.exe, .docBot

Trojan Horse

Page 293: ATTT_full

An toàn MạngCác mối đe dọaCác mối đe dọa

Thăm dòNghe trộmMạo danh lừa đảoMạo danh, lừa đảoLỗ hổng trang WebTừ chối dịch vụMã lưu độngMã lưu động

Các biện pháp ngăn chặnMã hóaXá thựXác thựcTường lửaPhát hiện đột nhập

Page 294: ATTT_full

Mã hóaMã hóa liên kếtMã hóa liên kết

Thông tin được mã hóa ở tầng Data Link của mô hình OSI

Mã hóa end-to-endMã hóa end to endThông tin được mã hóa ở tầng Application của mô hình OSI

VPN (Virtual Private Network)( )Trao đổi thông tin giữa người dùng và Firewall thông qua kênh mã hóa

PKIMật mã công khai và chứng nhận

Giao thức mật mãSSH, SSL, IPSec, ,

Page 295: ATTT_full

Xác thực

Mật khẩ ột lầMật khẩu một lầnPassword Token

Hệ Ch ll RHệ Challenge-ResponseXác thực số phân tánKerberos

Page 296: ATTT_full

Tường lửa

Cô để l thô ti di h ể Công cụ để lọc thông tin di chuyển giữa “mạng bên trong” và “mạng bên ngoài”ngoài

Ví dụ: Mạng LAN và Internet

Mục tiêu ngăn chặn nguy cơ đến từ Mục tiêu ngăn chặn nguy cơ đến từ mạng bên ngoàiThự hiệ ă hặ thô hí h Thực hiện ngăn chặn thông qua chính sách an toàn

Page 297: ATTT_full

Tường lửa

Cá l i tườ lửCác loại tường lửaLọc gói (Packet Filtering Gateways)Duyệt trạng thái (Stateful Inspection Firewalls)Cổng ứng dụng (Application Proxies)Gác (Guards)( )Cá nhân (Personal Firewalls)

Page 298: ATTT_full

Phát hiện đột nhậpKiểm tra người dùng và hoạt động hệ thốngKiểm tra người dùng và hoạt động hệ thốngGhi lại cấu hình hệ thống để phát hiện nguy cơĐá h iá tí h t à ủ hệ thố à dữ Đánh giá tính toàn vẹn của hệ thống và dữ liệu Phát hiện các dạng tấn công ệ ạ g gPhát hiện các hoạt động bất thường thông qua phân tích thống kêSửa chữa lỗi cấu hình hệ thốngSửa chữa lỗi cấu hình hệ thốngCài đặt và vận hành các hệ thống bẫy đột nhập

Page 299: ATTT_full

Phát hiện đột nhập

Cá l i hệ thố hát hiệ đột hậCác loại hệ thống phát hiện đột nhậpHệ phát hiện đột nhập dựa trên mẫuHệ phát hiện đột nhập dùng HeuristicsHệ phát hiện đột nhập hoạt động bí mậtHệ Tripwire