Nghiên cứu các giao thức đảm bảo an ninh cho tầng ứng dụng và xây dựng chương trình mô phỏng
Trang 1Lời mở đầu
Hiện nay, hệ thống công nghệ thông tin ngày càng phát triển, việc áp dụngmạng máy tính vào trong các hoạt động ngày càng phổ biến Việc sử dụng thư điện tửđang ngày càng nhiều vì thư điện tử là dịch vụ mạng phổ dụng nhất Hiện nay cácthông báo không được bảo mật có thể đọc được nội dung trong quá trình thông báo dichuyển trên mạng; những người dùng có đủ quyền có thể đọc được nội dung thông báotrên máy đích; thông báo dễ dàng bị giả mạo bởi một người khác và tính toàn vẹn củathông báo không báo không được bảo đảm Do đó, cần phải xây dựng các giao thức đểđảm bảo an toàn
Với đề tài “ Nghiên cứu các giao thức đảm bảo an ninh cho tầng ứng dụng
và xây dựng chương trình mô phỏng” em đã tìm hiểu một số giao thức bảo mật
thường dùng với sự giúp đỡ nhiệt tình của thầy Nguyễn Duy Tân Tuy nhiên, do khảnăng còn hạn hẹp nên không tránh được những sai xót, rất mong được sự góp ý củathầy và các bạn để bài tiểu luận được hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 2Mỗi tầng khác nhau thì có những giao thức đảm bảo an ninh khác nhau.
Tầng ứng dụng bao gồm các giao thức: Kerberos, S| MIME, PGP, SET
1 Giao thức Kerberos
Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy tính hoạtđộng trên những đường truyền không an toàn Giao thức Kerberos có khả năng chốnglại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu Mụctiêu khi thiết kế giao thức này là nhằm vào mô hình client - server và đảm bảo nhậnthực cho cả hai chiều
Tên của giao thức Kerberos được lấy từ tên của con chó ba đầu Cerberus canh gáccổng địa ngục trong thần thoại Hy Lạp Giao thức được xây dựng dựa trên mã hoá đốixứng và cần đến một bên thứ ba mà cả hai phía tham gia giao dịch tin tưởng
1.1 Lịch sử phát triển
Học viện kỹ thuật Massachusetts (MIT) phát triển Kerberos để bảo vệ các dịch vụ mạng cung cấp bởi dự án Athena Tên của giao thức được đặt theo tên của con chó ba đầu Cerberus canh gác cổng địa ngục trong thần thoại của Hy Lạp Giao thức đã được phát triển dưới nhiều phiên bản, trong đó các phiên bản từ 1 đến 3 chỉ dùng trong nội
bộ MIT
Các tác giả chính của phiên bản 4, Steve Miller và Clifford Neuman, đã xuất bản giao thức ra công chúng vào cuối thập niên 1980, mặc dù mục đích chính của họ là chỉphục vụ cho dự án Athena
Phiên bản 5, do John Kohl và Clifford Neuman thiết kế, xuất hiện trong tài liệu(RFC1510) RFC 1510 - The Kerberos Network Authentication Service (V5) vào năm
1993 (được thay thế bởi RFC 4120 vào năm 2005 - RFC 4120 - The KerberosNetwork Authentication Service (V5) với mục đích sửa các lỗi của phiên bản 4
Trang 3MIT đã cung cấp các phiên bản thực hiện Kerberoslo miễn phí dưới giấy phép tương
tự như dùng cho các sản phẩm BSD.Chính phủ Hoa Kỳ đã cấm xuất khẩu Kerberos vì
nó có sử dụng thuật toán DES 56 bit Tuy nhiên, trước khi chính sách xuất khẩu củaHoa Kỳ thay đổi năm 2000, đã có phiên bản KTH-KRB viết tại Thuỵ Điển thực hiệnKerberos 4 được phân phối rộng rãi bên ngoài Hoa Kỳ Phiên bản này được dựa trênmột phiên bản khác có tên là eBones eBones lại dựa trên một phiên bản được xuấtkhẩu của MIT thực hiện Kerberos 4 (patch-level 9) gọi là Bones (loại bỏ các hàm mật
mã và các lệnh gọi chúng) Eric Young, một lập trình viên người Austraulia, đã phụchồi lại các lệnh gọi hàm và sử dụng các hàm mật mã trong thư viện của anh ta Mộtphiên bản khác thực hiện Kerberos 5, Heimdal, cũng được thực hiện bởi nhóm đã xuấtbản KTH-KRB
Các hệ điều hành Windows 2000, Windows XP và Windows Server 2003 sử dụng một phiên bản thực hiện Kerberos làm phương pháp mặc định để xác thực Những bổ sung của Microsoft vào bộ giao thức Kerberos được đề cập trong tài liệu RFC 3244 RFC 3244 - Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols ("Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols") Hệ điều hành Mac OS X cũng sử dụng Kerberos trong các phiên bản Clients và Server của mình Năm 2005, nhóm làm việc của IETF về Kerberos cập nhậtcác đặc điểm kỹ thuật tại địa chỉ Internet Engineering Task Force Các cập nhật gần đây bao gồm:
RFC 3961: "Các quy định về mật mã hóa và kiểm tra tổng";
RFC 3962: Mã hoá AES cho Kerberos 5";
RFC 4120: Phiên bản mới về tiêu chuẩn Kerberos V5: "The Kerberos Network
Authentication Service (V5)" Phiên bản này thay thế RFC 1510, làm rõ các vấn đề của giao thức và cách sử dụng;
RFC 4121: Phiên bản mới của tiêu chuẩn GSS-API: "Cơ cấu GSS-API của Kerberos Version 5: Version 2."
1.2 Nguyên tắc hoạt động
Kerberos được thiết kế dựa trên giao thức Needham-Schroeder Kerberos sử dụngmột bên thứ ba tham gia vào quá trình nhận thực gọi là "trung tâm phân phối khóa"( key distribution center - KDC) KDC bao gồm hai chức năng: "máy chủ xác thực"(authentication server - AS) và "máy chủ cung cấp vé" (ticket granting server - TGS)
Trang 4"Vé" trong hệ thống Kerberos chính là các chứng thực chứng minh nhân dạng củangười sử dụng Mỗi người sử dụng (cả máy chủ và máy khách) trong hệ thống chia sẻmột khóa chung với máy chủ Kerberos Việc sở hữu thông tin về khóa chính là bằngchứng để chứng minh nhân dạng của một người sử dụng Trong mỗi giao dịch giữa haingười sử dụng trong hệ thống, máy chủ Kerberos sẽ tạo ra một khoá phiên dùng chophiên giao dịch đó.
+ Apache (với mô đun mod auth kerb)
+ Devecot IMAP4 và POP3
+ Một cách gián tiếp, tất cả phần mềm sử dụng SASL để nhận thực, chẳng hạn như OpenLDAP
+ Bộ Kerberos còn đi kèm với các bộ phần mềm máy chủ và máy khách của rsh FTP và Telnet
+ Hệ thống X Windows
1.4 Hoạt động
Sau đây là mô tả một phiên giao dịch (giản lược) của Kerberos Trong đó: AS =Máy chủ nhận thực (authentication server), TGS = Máy chủ cấp vé (ticket grantingserver), SS = Máy chủ dịch vụ (service server) Một cách vắn tắt: người sử dụng nhậnthực mình với máy chủ nhận thực AS, sau đó chứng minh với máy chủ cấp vé TGSrằng mình đã được nhận thực để nhận vé, cuối cùng chứng minh với máy chủ dịch vụ
SS rằng mình đã được chấp thuận để sử dụng dịch vụ
1 Người sử dụng nhập tên và mật khẩu tại máy tính của mình (máy khách)
2 Phần mềm máy khách thực hiện hàm băm một chiều trên mật khẩu nhận được Kết quả sẽ được dùng làm khóa bí mật của người sử dụng
3 Phần mềm máy khách gửi một gói tin (không mật mã hóa) tới máy chủ dịch vụ AS
để yêu cầu dịch vụ Nội dung của gói tin đại ý: "người dùng XYZ muốn sử dụng dịch vụ" Cần chú ý là cả khoá bí mật lẫn mật khẩu đều không được gửi tới AS
Trang 54 AS kiểm tra nhân dạnh của người yêu cầu có nằm trong cơ sở dữ liệu của mình không Nếu có thì AS gửi 2 gói tin sau tới người sử dụng:
Gói tin A: "Khóa phiên TGS/máy khách" được mật mã hóa với khóa bí mật của người sửdụng
Gói tin B: "Vé chấp thuận" (bao gồm chỉ danh người sử dụng (ID), địa chỉ mạng của người sử dụng, thời hạn của vé và "Khóa phiên TGS/máy khách") được mật mã hóa với khóa bí mật của TGS
5 Khi nhận được 2 gói tin trên, phần mềm máy khách giải mã gói tin A để có khóa phiên với TGS (Người sử dụng không thể giải mã được gói tin B vì nó được mã hóa với khóa bí mật của TGS) Tại thời điểm này, người dùng có thể nhận thực mình với TGS
6 Khi yêu cầu dịch vụ, người sử dụng gửi 2 gói tin sau tới TGS:
Gói tin C: Bao gồm "Vé chấp thuận" từ gói tin B và chỉ danh (ID) của yêu cầu dịch vụ.Gói tin D: Phần nhận thực (bao gồm chỉ danh người sử dụng và thời điểm yêu cầu), mật mã hóa với "Khóa phiên TGS/máy khách"
7 Khi nhận được 2 gói tin C và D, TGS giải mã D rồi gửi 2 gói tin sau tới người sử dụng:
Gói tin E: "Vé" (bao gồm chỉ danh người sử dụng, địa chỉ mạng người sử dụng, thời hạn sử dụng và "Khóa phiên máy chủ/máy khách") mật mã hóa với khóa bí mật của máy chủ cung cấp dịch vụ
Gói tin F: "Khóa phiên máy chủ/máy khách" mật mã hóa với "Khóa phiên TGS/máy khách"
8 Khi nhận được 2 gói tin E và F, người sử dụng đã có đủ thông tin để nhận thực với máy chủ cung cấp dịch vụ SS Máy khách gửi tới SS 2 gói tin:
Gói tin E thu được từ bước trước (trong đó có "Khóa phiên máy chủ/máy khách" mật
mã hóa với khóa bí mật của SS)
Gói tin G: phần nhận thực mới, bao gồm chỉ danh người sử dụng, thời điểm yêu cầu vàđược mật mã hóa với "Khóa phiên máy chủ/máy khách"
9 SS giải mã "Vé" bằng khóa bí mật của mình và gửi gói tin sau tới người sử dụng để xác nhận định danh của mình và khẳng định sự đồng ý cung cấp dịch vụ:
Gói tin H: Thời điểm trong gói tin yêu cầu dịch vụ cộng thêm 1, mật mã hóa với
"Khóa phiên máy chủ/máy khách"
Trang 610 Máy khách giải mã gói tin xác nhận và kiểm tra thời gian có được cập nhật chính xác Nếu đúng thì người sử dụng có thể tin tưởng vào máy chủ SS và bắt đầu gửi yêu cầu sử dụng dịch vụ.
11 Máy chủ cung cấp dịch vụ cho người sử dụng
1.5 Xác thực Kerberos
Nhằm đối phó với các hiểm họa sau
– Người dùng giả danh là người khác
– Người dùng thay đổi địa chỉ mạng của client
– Người dùng xem trộm thông tin trao đổi và thực hiện kiểu tấn công lặp lại
Bao gồm 1 server tập trung có chức năng xác thực người dùng và các server dịch vụ phân tán
– Tin cậy server tập trung thay vì các client
– Giải phóng chức năng xác thực khỏi các server dịch vụ và các client
Ký hiệu
– C : Client
– AS : Server xác thực
– V : Server dịch vụ
– IDC : Danh tính người dùng trên C
– IDV : Danh tính của V
– PC : Mật khẩu của người dùng trên C
– ADC : Địa chỉ mạng của C
– KV : Khóa bí mật chia sẻ bởi AS và V
Trang 7Thẻ = EKV[IDC ║ ADC ║ IDV]
• Hạn chế
– Mật khẩu truyền từ C đến AS không được bảo mật
– Nếu thẻ chỉ sử dụng được một lần thì phải cấp thẻ mới cho mỗi lần truy nhập cùng một dịch vụ
– Nếu thẻ sử dụng được nhiều lần thì có thể bị lấy cắp để sử dụng trước khi hết hạn
– Cần thẻ mới cho mỗi dịch vụ khác nhau
Hội thoại xác thực Kerberos 4
(a) Trao đổi với dịch vụ xác thực : để có thẻ cấp thẻ
ThẻV = EKV[KC,V ║ IDC ║ ADC ║ IDV ║ TS4 ║ Hạn4]
DấuC = EKC,tgs[IDC ║ ADC ║ TS3]
(c) Trao đổi xác thực client/server : để có dịch vụ
(5) C ® V : ThẻV ║ DấuC
(6) V ® C : EKC,V[TS5 + 1]
DấuC = EKC,V[IDC ║ ADC ║ TS5]
Phân hệ Kerberos
• Một phân hệ Kerberos bao gồm
– Một server Kerberos chứa trong CSDL danh tính và mật khẩu băm củacác thành viên
– Một số người dùng đăng ký làm thành viên
– Một số server dịch vụ, mỗi server có một khóa bí mật riêng chỉ chia sẻvới server Kerberos
• Mỗi phân hệ Kerberos thường tương ứng với một phạm vi hành chính
• Hai phân hệ có thể tương tác với nhau nếu 2 server chia sẻ 1 khóa bí mật và đăng ký với nhau
Trang 8– Điều kiện là phải tin tưởng lẫn nhau
Kerberos 5
• Phát triển vào giữa những năm 1990 (sau Kerberos 4 vài năm) đặc tả trong RFC1510
• Có một số cải tiến so với phiên bản 4
– Khắc phục những khiếm khuyết của môi trường
+ Phụ thuộc giải thuật mã hóa, phụ thuộc giao thức mạng, trật tự bytethông báo không theo chuẩn, giá trị hạn dùng thẻ có thể quá nhỏ,không cho phép ủy nhiệm truy nhập, tương tác đa phân hệ dựa trênquá nhiều quan hệ tay đôi
– Khắc phục những thiếu sót kỹ thuật
+ Mã hóa hai lần có một lần thừa, phương thức mã hóa PCBC đểđảm bảo tính toàn vẹn không chuẩn dễ bị tấn công, khóa phiên sửdụng nhiều lần có thể bị khai thác để tấn công lặp lại, có thể bị tấncông mật khẩu
1.6 Nhược điểm
Trang 9Tồn tại một điểm yếu: Nếu máy chủ trung tâm ngừng hoạt động thì mọi hoạt động
sẽ ngừng lại Điểm yếu này có thể được hạn chế bằng cách sử dụng nhiều máy chủ Kerberos
Giao thức đòi hỏi đồng hồ của tất cả những máy tính liên quan phải được đồng bộ Nếu không đảm bảo điều này, cơ chế nhận thực giữa trên thời hạn sử dụng sẽ không hoạt động Thiết lập mặc định đòi hỏi các đồng hồ không được sai lệch quá 10 phút
Cơ chế thay đổi mật khẩu không được tiêu chuẩn hóa
2 PGP(Pretty Good Privacy)
Mật mã hóa PGP (Pretty Good Privacy®) làm một phần mềm máy tính dùng để
mật mã hóa dữ liệu và xác thực Phiên bản PGP đầu tiên do Phil Zimmermann đượccông bố vào năm 1991 Kể từ đó, phần mềm này đã có nhiều cải tiến và hiện nay tậpđoàn PGP cung cấp nhiều phần mềm dựa trên nền tảng này Với mục tiêu ban đầu làphục vụ cho mã hóa thư điện tử, PGP hiện nay đã trở thành một giải pháp mã hóa chocác công ty lớn, chính phủ cũng như các cá nhân Các phần mềm dựa trên PGP đượcdùng để mã hóa và bảo vệ thông tin lưu trữ trên máy tính xách tay, máy tính để bàn,máy chủ và trong quá trình trao đổi thông qua email, IM hoặc chuyển file Giao thứchoạt động của hệ thống này có ảnh hưởng lớn và trở thành một trong hai tiêu chuẩn mãhóa (tiêu chuẩn còn lại là S/MIME)
2.1 Ứng dụng của PGP
Mục tiêu ban đầu của PGP nhằm vào mật mã hóa nội dung các thông điệp thư điện tử và các tệp đính kèm cho người dùng phổ thông Bắt đầu từ 2002, các sản phẩm PGP đã được đa dạng hóa thành một tập hợp ứng dụng mật mã và có thể được đặt dưới
sự quản trị của một máy chủ Các ứng dụng PGP giờ đây bao gồm: thư điện tử, chữ ký
số, mật mã hóa ổ đĩa cứng máy tính xách tay, bảo mật tệp và thư mục, bảo mật các phiên trao đổi IM, mật mã hóa luồng chuyển tệp, bảo vệ các tệp và thư mục lưu trữ trên máy chủ mạng
Phiên bản PGP Desktop 9.x dành cho máy để bàn bao gồm các tính năng: thưđiện tử, chữ ký số, bảo mật IM, mật mã hóa ổ đĩa cứng máy tính xách tay, bảo mật tệp
Trang 10và thư mục, tệp nén tự giải mã, xóa file an toàn Các tính năng riêng biệt được cấpphép theo các cách khác nhau tùy theo yêu cầu.
Phiên bản PGP Universal 2.x dành cho máy chủ cho phép triển khai ứng dụngtập trung, thiết lập chính sách an ninh và lập báo cáo Phần mềm này được dùng đểmật mã hóa thư điện tử một cách tự động tại cổng ra vào (gateway) và quản lý cácphần mềm máy khách PGP Desktop 9.x Nó làm việc với máy chủ khóa công khaiPGP (gọi là PGP Global Directory) để tìm kiếm khóa của người nhận và có khả nănggửi thư điện tử an toàn ngay cả khi không tìm thấy khóa của người nhận bằng cách sửdụng phiên làm việc HTTPS
Với ứng dụng PGP Desktop 9.0 được quản lý bởi PGP Universal Server 2.0, tất
cả các ứng dụng mật mã hóa PGP được dựa trên nền kiến trúc proxy mới Các phầnmềm này giúp loại bỏ việc sử dụng các plug-in của thư điện tử và tránh cho ngườidùng việc sử dụng các ứng dụng khác Tất cả các hoạt động của máy chủ cũng nhưmáy khách đều tự động tuân theo một chính sách an ninh PGP Universal server còn tựđộng hóa các quá trình tạo, quản lý và kết thúc các khóa chia sẻ giữa các ứng dụngPGP
Các phiên bản mới của PGP cho phép sử dụng cả 2 tiêu chuẩn: OpenPGP và S/MIME, cho phép trao đổi với bất kỳ ứng dụng nào tuân theo tiêu chuẩn của NIST
2.2 Các dịch vụ
Bao gồm 5 dịch vụ: xác thực, bảo mật, nén, tương thích thư điện tử, phân và ghép
Ba dịch vụ sau trong suốt với người dung
Xác thực của PGP
Trang 11M = Thông báo gốc EP = Mã hóa khóa công khai
H = Hàm băm DP = Giải mã khóa công khai
║ = Ghép KRa = Khóa riêng của A
o Thuận tiện lưu trữ và kiểm tra, nếu ký sau khi nén thì
Cần lưu phiên bản nén với chữ ký, hoặc
Cần nén lại thông báo mỗi lần muốn kiểm tra
o Các phiên bản khác nhau của giải thuật nén không cho kết quả duy nhất
Mỗi phiên bản cài đặt có tốc độ và tỷ lệ nén khác nhau
Nếu ký sau khi nén thì các chương trình PGP cần sử dụng cùngmột phiên bản của giải thuật nén
Mã hóa sau khi nén
o Ít dữ liệu sẽ khiến việc mã hóa nhanh hơn