Trong những năm gần đây, xu hướng tấn công vào ứng dụng web đang ngày càng trở nên phổ biến. Các kỹ thuật tấn công được sử dụng chủ yếu là crosssite scripting, SQL injection, và nhiều các kỹ thuật khác… tất cả các kỹ thuật này đều nhắm vào lớp ứng dụng trong mô hình OSI. Các lỗ hổng trong ứng dụng web chủ yếu xảy ra do người lập trình không kiểm tra kỹ các tham số hay ký tự do người dùng nhập vào để tương tác với ứng dụng web. Để khắc phục các lỗi trên ứng dụng web, người lập trình cần hiểu và viết được các đoạn mã ở mức độ bảo mật nhất, tuy nhiên việc viết đoạn mã sao cho “bảo mật” nhất thường khó thực hiện, bởi các lẽ sau: Thứ nhất, các đơn vị lập trình thường không có hoặc thiếu đội ngũ chuyên trách về việc kiểm tra và sửa lỗi bảo mật mã nguồn ứng dụng.
MỤC LỤC CHƯƠNG 1: TÌM HIỂU VỀ BẢO MẬT WEBSITE 1.1 1.2 Tổng quan bảo mật website…………………………………………….… ….3 Một số quy tắc bảo mật website…………………………………………….… CHƯƠNG 2: TÌM HIỂU VỀ GIAO THỨC TLS 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Tổng quan giao thức TLS……………………………………………….… Mã hóa , xác thực toàn vẹn liệu………………………………………….10 Proxy giao thức trung gian Web……………………………………11 Giao thức thiết lập TLS (TLS Handshake)…………………………………… 12 Tính toán mã hóa……………………………………………………………… 14 2.5.1 Việc tạo Master Secret……………………………………………………14 2.5.2 Việc sinh tham số mã hóa……………………………………………15 TRANSPORT LAYER SECURITY 2.6.1 Version Number………………………………………………………… 16 2.6.2 Message Authentication Code…………………………………………….16 2.6.3 Hàm tính số nhẫu nhiên………………………………………………….17 2.6.4 Mã cảnh báo…………………………………………………………… 19 2.6.5 Cipher suite………………………………………………………………20 2.6.6 Các dạng client certificate……………………………………………….20 2.6.7 Certificate Verify Finished Message………………………………… 21 2.6.8 Phần đệm…………………………………………………………………22 Ứng dụng TLS……………………………………………………………… 23 TÀI LIỆU THAM KHẢO CHƯƠNG 1: TÌM HIỂU VỀ BẢO MẬT WEBSITE 1.1 Tổng quan bảo mật website Trong năm gần đây, xu hướng công vào ứng dụng web ngày trở nên phổ biến Các kỹ thuật công sử dụng chủ yếu cross-site scripting, SQL injection, nhiều kỹ thuật khác… tất kỹ thuật nhắm vào lớp ứng dụng mô hình OSI Các lỗ hổng ứng dụng web chủ yếu xảy người lập trình không kiểm tra kỹ tham số hay ký tự người dùng nhập vào để tương tác với ứng dụng web Để khắc phục lỗi ứng dụng web, người lập trình cần hiểu viết đoạn mã mức độ bảo mật nhất, nhiên việc viết đoạn mã cho “bảo mật” thường khó thực hiện, lẽ sau: Thứ nhất, đơn vị lập trình thường thiếu đội ngũ chuyên trách việc kiểm tra sửa lỗi bảo mật mã nguồn ứng dụng Thứ hai, áp lực phải hoàn thành ứng dụng web thời gian nhanh khiến cho ứng dụng web đưa vào vận hành mà không qua khâu kiểm thử Thứ ba, việc dùng công cụ kiểm tra lỗi web tự động không tìm hết lỗi thực tay Do vậy, việc bảo mật ứng dụng web trình phòng thủ theo chiều sâu bao gồm khâu phát triển, vận hành, xây dựng sở hạ tầng bảo vệ tốt có đội ngủ chuyên trách vấn đề bảo mật riêng cho web 1.2 Một số quy tắc bảo mật website Khi website có lỗ hổng, tội phạm mạng dễ dàng xâm nhập, công khai thác liệu khiến website bị nhiễm độc gây nguy hiểm không cho chủ sở hữu trang web mà cho khách truy cập Sau website khử độc, quản trị viên chủ quan không quan tâm đến lỗ hỗng thường xuyên website dễ dàng bị nhiễm độc trở lại lúc Để ngăn chặn điều xảy ra, người dùng cần có phương pháp thích hợp để bảo vệ máy chủ máy tính kết nối với tài khoản máy chủ Sử dụng mật mạnh Thoạt nghe, quy tắc bình thường sử dụng mật mạnh tảng giúp tăng cường bảo mật cho hệ thống máy chủ Mật không bắt buộc thay đổi sau xảy cố mà cần phải thay đổi thường xuyên, tốt định kỳ tháng lần Một mật đủ mạnh cần đáp ứng tiêu chí Mật an toàn phải tích hợp chữ, số ký tự đặc biệt phải đảm bảo dễ nhớ để ghi lại mật vào sổ hay máy tính, không sử dụng mật cho nhiều tài khoản khác email, tài khoản ngân hàng,… Liên tục cập nhật: Để nâng cao mức độ bảo mật, người dùng cần phải cập nhật website thường xuyên, đặc biệt theo dõi thông tin phiên dùng phần mềm web nguồn mở (CMS, portal, forum ) Tất phần mềm mà người sử dụng quản lý tài khoản máy chủ phải phiên tất vá bảo mật cần phải áp dụng sau phát hành Điều giảm nguy công nhằm vào việc khai thác liệu Tạo lưu: Một lưu tất nội dung máy chủ không bị "nhiễm độc" chắn giúp người dùng tiết kiệm nhiều thời gian công sức khôi phục Một gần hữu ích việc giải vấn đề phát sinh trường hợp máy chủ trang web bị nhiễm độc Quét tập tin thường xuyên: Quét dấu hiệu bị nhiễm độc tìm thấy Đây thao tác hữu ích để bảo vệ website, quét tất tập tin máy chủ thời gian định lần Quan tâm đến bảo mật máy tính: Rất nhiều malware độc hại công vào trang web phát tán cách lây nhiễm vào máy tính Vì vậy, vấn đề an ninh máy chủ chứa trang web khía cạnh quan trọng việc bảo mật website Giữ cho máy chủ tình trạng an toàn không bị nhiễm độc nâng cao mức độ an toàn tránh công malware Tăng cường mức độ bảo mật máy chủ: Nếu sở hữu hệ thống máy chủ, người dùng cần ý đến cấu hình máy để bảo đảm mức độ an toàn Hoạt động để tăng cường bảo mật máy chủ gồm phần sau: • Loại bỏ tất phần mềm không sử dụng • Vô hiệu hóa tất dịch vụ module không cần thiết • Thiết lập sách phù hợp cho người dùng nhóm • Thiết lập quyền truy cập/hạn chế truy cập vào tập tin thư mục định • Vô hiệu hóa việc duyệt thư mục trực tiếp • Thu thập tập tin ghi nhận hoạt động, thường xuyên kiểm tra hoạt động đáng ngờ • Sử dụng mã hóa giao thức an toàn Yếu tố người đóng vai trò quan trọng Theo ông Jimmy Low, chuyên gia bảo mật khu vực Đông Nam Á thuộc Kaspersky Lab trả lời vấn Nhịp Sống Số cho biết: "Mỗi hệ thống mạng có vấn đề điểm yếu riêng Tuy nhiên, yếu điểm quan trọng yếu tố người Người quản trị mạng phải không ngừng nâng cao, học hỏi thêm kiến thức mới, tăng cường nhận thức mối đe dọa bảo mật nhằm kịp thời nhận lỗ hổng kỹ thuật, tránh mắc phải sai lầm công tác quản trị mạng" Ông Jimmy cho kỹ sư phạm phải sai lầm giai đoạn khởi nghiệp thiếu kinh nghiệm lời khuyên cho kỹ sư trẻ "đừng ngại học hỏi từ người trước, bạn không học hỏi từ người có kinh nghiệm từ sai lầm, bạn khó phát triển thân nghề nghiệp" Các malware công website ác mộng thực cho nhà quản trị web người sử dụng Internet tội phạm mạng không ngừng nâng cao kỹ thuật tạo thêm khai thác Việc lây lan phần mềm độc hại diễn nhanh thông qua Internet gây ảnh hưởng đến máy chủ máy trạm Điều nói lên thật cách loại bỏ mối đe dọa hoàn toàn Tuy nhiên, tất chủ sở hữu trang web người sử dụng Internet làm cho Internet an toàn cách thực theo quy tắc bảo mật CHƯƠNG 2: TÌM HIỂU VỀ GIAO THỨC TLS Tổng quan giao thức TLS 2.1 SSL viết tắt Secure Socket Layer giao thức (protocol) cho phép bạn truyền đạt thông tin cách bảo mật an toàn qua mạng Việc kết nối Web browser tới điểm mạng Internet qua nhiều hệ thống độc lập mà bảo vệ với thông tin đường truyền Không kể người sử dụng lẫn Web server có kiểm soát đường liệu hay kiểm soát liệu có thâm nhập vào thông tin đường truyền Hình 2.1 Transport Layer Security (TLS) Để bảo vệ thông tin mật mạng Internet hay mạng TCP/IP nào, SSL kết hợp yếu tố sau để thiết lập giao dịch an toàn: o Xác thực: đảm bảo tính xác thực trang mà bạn làm việc đầu kết nối Cũng vậy, trang Web cần phải kiểm tra tính xác thực người sử dụng o Mã hoá: đảm bảo thông tin bị truy cập đối tượng thứ ba Để loại trừ việc nghe trộm thông tin “ nhạy cảm” truyền qua Internet, liệu phải mã hoá để bị đọc người khác người gửi người nhận o Toàn vẹn liệu: đảm bảo thông tin không bị sai lệch phải thể xác thông tin gốc gửi đến Với việc sử dụng SSL, Web site cung cấp khả bảo mật thông tin, xác thực toàn vẹn liệu đến người dùng SSL tích hợp sẵn vào browser Web server, cho phép người sử dụng làm việc với trang Web chế độ an toàn Tiêu chuẩn Transport Layer Security (TLS) – Giao thức an toàn tầng giao vận tiêu chuẩn ban đầu phát triển dựa tiêu chuẩn SSL v3.0 (Secure Socket Layer, gọi Giao thức an toàn tầng giao vận) TLS phiên (TLS v1.0) tổ chức Internet Engineering Task Force (IETF) - Nhóm chuyên trách kỹ thuật Internet công bố RFC 2246 tháng 01/1999 (RFC - Request for Comments, tài liệu kỹ thuật tổ chức Internet, bao gồm tài liệu đặc tả kỹ thuật sách tổ chức IETF phát hành) Sự khác biệt TLS v1.0 SSL 3.0 không đáng kể, điểm khác biệt lớn TLS v1.0 SSL v3.0 không tương thích với (mặc dù TLS v1.0 có kết hợp chế cho phép thực TLS v1.0 phù hợp với SSL v3.0) Đến tháng 04/2006, TLS v1.1 IETF công bố RFC 4346, cập nhật so với TLS v1.0, số cải tiến so với TLS v1.0 bao gồm: o Véc-tơ khởi tạo không thức (Implicit Initialization Vector) thay véc-tơ khởi tạo rõ ràng (Explicit Initialization Vector) để bảo vệ chống lại công mã hóa theo khối (Cipher Block Chaining – CBC) o Xử lý lỗi đệm thay đổi, sử dụng cảnh báo bad_record_mac thay cho cảnh báodecryption_failed để bảo vệ chống lại công CBC o Đăng ký IANA (IANA - Internet Assigned Numbers Authority, Tổ chức cấp phát số hiệu Internet) định nghĩa cho tham số giao thức o Việc đóng phiên làm việc khôi phục lại o Bổ sung thông tin công khác TLS Tháng 08/2008, TLS v1.2 cập nhật TLS v1.1 IETF công bố RFC 5246, thay đổi chủ yếu TLS v1.2 so với TLS v1.1 là: o Việc kết hợp thuật toán MD5 SHA-1 hàm giả ngẫu nhiên (Pseudorandom Function - PRF) thay hàm giả ngẫu nhiên xác định thuật toán mã hóa Tất thuật toán mã hóa sử dụng P_SHA256 (thuật toán SHA 256 bít) o Việc kết hợp thuật toán MD5 SHA-1 thành phần ký số thay băm Các thành phần ký số bao gồm trường thông tin quy định cụ thể thuật toán băm sử dụng o Tăng cường khả máy khách máy chủ để xác định băm o o o thuật toán ký số chúng chấp nhận Bổ sung hỗ trợ thuật toán mã hóa xác thực mô hình liệu Định nghĩa mở rộng TLS mã hóa AES sáp nhập làm Tăng cường khả kiểm tra chặt chẽ số phiên EncryptedPreMasterSecret o Bắt buộc sử dụng TLS_RSA_WITH_AES_128_CBC_SHA để thực mã hóa Thêm mã hoá HMAC- SHA256 loại bỏ mã hoá IDEA DES Bên cạnh đó, vào tháng 03/2011, IETF phát hành tài liệu việc ngăn không sử dụng SSL v2.0 RFC 6176, yêu cầu máy khách máy chủ TLS thỏa thuận thiết lập không sử dụng SSL v2.0 SSL v2.0 không hiệu việc xác thực, mã hóa Vì dựa SSL v3.0 nên TLS có mục tiêu theo thứ tự ưu tiên là: (i) An ninh mã hóa: TLS nên sử dụng để thiết lập kết nối an toàn hai bên (ii) Khả liên thông: Các nhà phát triển phần mềm độc lập phát triển ứng dụng sử dụng TLS trao đổi tham số mã hóa mà không cần hiểu hết mã nguồn người khác (iii) Khả mở rộng: TLS nhằm tạo khung cho phép phương pháp khóa công khai mã hóa số lượng lớn tạo kết hợp với cần thiết Điều thực hai mục tiêu khác: tránh tạo giao thức (rủi ro có điểm yếu mới) tránh phải xây dựng toàn thư viện bảo mật (iv) Hiệu tương đối Việc mã hóa có xu hướng sử dụng tài nguyên CPU cao, đặc biệt trình trao đổi khóa công khai Vì lý này, TLS kết hợp thủ tục lưu trữ nhớ đệm theo phiên tùy chọn để giảm số lượng kết nối cần thiết lập từ đầu Ngoài ra, TLS xem xét thực giảm hoạt động mạng Mã hóa , xác thực toàn vẹn liệu 2.2 Mục tiêu TLS cung cấp riêng tư toàn vẹn liệu hai ứng dụng giao tiếp môi trường mạng Giống SSL, TLS giao thức theo mô hình khách/chủ (client/server), nằm giao thức tầng giao vận (trong mô hình Internet TCP/IP) đáng tin cậy có cấu trúc giống SSL, TLS bao gồm hai lớp: Lớp ghi (Record Layer) Lớp thiết lập (Handshake Layer) o Lớp thấp gọi Lớp ghi (Record Layer), bao gồm Giao thức ghi TLS (TLS Record Protocol), nằm tầng giao vận, số giao thức tầng giao vận Giao thức điều khiển truyền vận (TCP), Giao thức truyền vận không tin cậy (UDP) Giao thức ghi TLS cung cấp bảo mật kết nối an toàn có hai đặc tính: • Kết nối riêng tư Mã hóa đối xứng sử dụng để mã hóa liệu (ví dụ tiêu chuẩn mã hóa AES, RC4 ) Các khóa để mã hóa đối xứng sinh cho kết nối dựa thỏa thuận bí mật giao thức khác (chẳng hạn Giao thức thiết lập TLS) Giao thức ghi TLS sử dụng mà không cần mã hóa • Kết nối đáng tin cậy Thông điệp vận chuyển thông báo bao gồm kiểm tra tính toàn vẹn thông điệp sử dụng hàm băm Mã xác thực thông điệp (Message Authentication Code - MAC), hàm băm an toàn sử dụng để tính toán MAC (ví dụ SHA-1 ) Giao thức ghi SSL hoạt động mà không cần sử dụng MAC, trường hợp giao thức khác sử dụng Giao thức ghi SSL phương tiện vận chuyển để thỏa thuận tham số an ninh o Giao thức ghi TLS sử dụng để phân mảnh, nén (tùy chọn), đóng gói mã hóa bảo vệ liệu từ giao thức lớp cao hơn, Giao thức thiết lập TLS, giao thức cho phép máy chủ máy khách xác nhận lẫn thỏa thuận thuật toán mã hóa khóa mã hóa trước giao thức ứng dụng truyền tải nhận byte liệu Các cấu trúc liệu tương ứng Giao thức ghi TLS TLSPlaintext, TLSCompressed TLSCiphertext Giống với SSL, cấu trúc liệu TLS bao gồm bốn trường thông tin: o o Trường kiểu (type) giao thức tầng cao hơn; Trường phiên (version) phiên giao thức (ví dụ: “3.1” TLS phiên 1.0, TLS dựa SSL phiên 3.0 nên trường version có giá trị 3.1); o Trường độ dài (length) độ dài (tính byte) phần liệu phân mảnh; o Trường phân mảnh (fragment) có độ dài tùy ý (lên đến 214 byte) tạo nên liệu 2.3 giao thức lớp cao (thường cấu trúc liệu TLSCiphertext) Proxy giao thức trung gian Web Sự mở rông thành công HTTP tạo hệ sinh thái sống động proxy trung gian Web: máy chủ cache, cổng an ninh, máy gia tốc web, lọc nội dung… Nhưng diện máy chủ tạo số khó khăn cho cố gắng thay đổi giao thức HTTP: số máy chủ proxy đơn giản chuyển tiếp mở rộng HTTP Trong thực tế, giao thức mở rộng cho HTTP WebSocket, SPDY, thường dựa việc thiết lập đường hầm HTTPS để bỏ qua proxy trung gian cung cấp mô hình triển khai đáng tin cậy: đường hầm mã hóa liệu từ tất trung gian Điều giải vấn đề trước mắt, có nhược điểm việc tận dụng trung gian, nhiều số cung cấp dịch vụ hữu ích: xác thực, nhớ đệm, quét an ninh Hầu hết hướng dẫn WebSocket cho biết cách sử dụng HTTPS để cung cấp liệu cho khách hang điện thoại di động Khi thời gian trôi qua trung 10 gian nâng cấp để nhận giao thức mới, yêu cầu HTTPS triển khai trở nên liên quan, phiên bạn thực cần mã hóa, xác thực toàn vẹn cung cấp TLS ? Giao thức thiết lập TLS (TLS Handshake) 2.4 Cung cấp kết nối bảo mật có ba đặc tính bản: o Định danh điểm kết nối xác thực cách sử dụng mã hóa bất đối xứng khóa công khai (ví dụ Rivest-Shamir-Adleman - RSA, Digital Signature Standard - DSS…) Việc xác thực tùy chọn thực hiện, o thường yêu cầu cho điểm kết nối Quá trình thỏa thuận khóa bí mật chia sẻ an toàn: thỏa thuận bí mật không để nghe trộm kết nối xác thực nào, khóa bí mật bị o lấy trộm kẻ công xâm nhập vào kết nối Quá trình thỏa thuận đáng tin cậy: Không kẻ công thay đổi trình thỏa thuận mà không bị phát bên tham gia kết nối Tương tự SSL, TLS có trạng thái phiên làm việc kết nối nên Giao thức thiết lập TLS có trách nhiệm thỏa thuận phiên làm việc, bao gồm tham số sau: o Định danh phiên làm việc (session identifier): Là byte có thứ tự chọn máy chủ để xác định trạng thái phiên làm việc hoạt động khôi phục lại trạng thái phiên làm việc o Chứng thư thành phần tham gia (peer certificate): X509.v3, chứng thư thành phần tham gia, tham số bỏ trống o Phương pháp nén (compression method): Thuật toán sử dụng để nén liệu trước mã hóa o Đặc tả mã hóa (cipher spec): Xác định hàm giả ngẫu nhiên để sinh khóa, thuật toán mã hóa liệu lớn (ví dụ AES ) thuật toán MAC (ví dụ HMAC_SHA1) Nó định nghĩa thuộc tính mã hóa, ví dụ kích thước băm (mac_length) o Mã bí mật (master secret): Một thông điệp bí mật có kích thước 48 byte chia sẻ máy khách máy chủ 11 o Có thể khôi phục (is resumable): Một báo phiên làm việc sử dụng để khởi tạo kết nối Hình 2.2 Giao thức thiết lập TLS 2.5 Tính toán mã hóa Gồm việc tạo shared master secret cách trao đổi khóa, sinh tham số mật mã từ master secret 2.5.1 Việc tạo Master Secret Shared master secret giá trị one-time 48 byte (384 bits) sinh cho phiên cách trao đổi khóa an toàn.Việc tạo gồm hai bước: o Đầu tiên, pre-master-secret trao đổi 12 o Thứ hai, master_secret tính toán nhóm Đối với trao đổi pre_master_secret, có hai khả xảy ra: • RSA: 48 byte pre_master_secret sinh client, mã hóa với khóa RSA công khai server, gửi cho server.Server giải mã ciphertext sử dụng khóa bí mật để phục hồi lại pre_master_secret • Diffie-Hellman: client server sinh khóa công khai DiffieHellman Sau đó, khóa trao đổi, bên biểu diễn việc tính toán Diffie-Hellman để tạo shared_pre_master_secret Cả bên tính toán master_secret sau: master_secret = MD5 (pre_master_secret || SHA (‘A’ || pre_master_secret || ClientHello.random || ServerHello.random)) || MD5 (pre_master_secret || SHA (‘BB’ || pre_master_secret || ClientHello.random || ServerHello.random)) || MD5 (pre_master_secret || SHA (‘CCC’ || pre_master_secret || ClientHello.random || ServerHello.random)) Với ClientHello.random ServerHello.random giá trị số ngẫu nhiên trao đổi thông điệp hello khởi tạo ban đầu 2.5.2 Việc sinh tham số mã hóa CipherSpec yêu cầu khóa xác thực client, khóa xác thực server, khóa mật mã client, khóa mật mã server, vector khởi tạo IV client, vector khởi tạo IV server, mà sinh từ master_secret theo thứ tự đó.Những tham số sinh từ master_secret cách băm master_secret thành chuỗi liên tục byte bảo mật với chiều dài vừa đủ tất tham số cần thiết Việc sinh nguyên liệu khóa từ master_secret sử dụng định dạng cho việc sinh master_secret từ pre_master_secret: 13 key_block = MD5(master_secret || SHA(‘A’ || master_secret || ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA(‘BB’ || master_secret || ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA(‘CCC’ || master_secret || ServerHello.random || ClientHello.random)) || Cho đến đủ số output phát sinh.Kết cấu trúc giải thuật hàm sinh số ngẫu nhiên Ta xem master_secret giá trị ngẫu nhiên đưa hạt giống sinh số ngẫu nhiên vào hàm sinh số ngẫu nhiên.Các số ngẫu nhiên client server nhìn giá trị không đáng tin cậy(salt value) làm phứctạp giải mã mật mã 2.6 TRANSPORT LAYER SECURITY 2.6.1 Version Number Định dạng record TLS giống định dạng record SSL, trường phần header có ý nghĩa giống nhau.Một khác biệt giá trị phiên TLS tại,bản phụ 2.6.2 Message Authentication Code Có điểm khác biệt SSLv3 TLS MAC schemes: giải thuật thực tế phạm vi phép tính MAC o TLS tạo việc sử dụng giải thuật HMAC định nghĩa RFC Nhớ lại,HMAC định nghĩa sau: HMACK(M) = H[(K+ opad)||H[(K+ ipad)||M]] Với : H: hàm băm nhúng(dành cho TLS, MD5 SHA-1) M: thông điệp đầu HMAC K+ : khóa bí mật đệm số vào phía bên trái để kết với chiều dài khối mã băm (đối với MD5, SHA-1, chiều dài khối 512 bits) Ipad =00110110(36H) lặp lại 64 lần (512 bits) Opad =01011100(5CH) lặp lại 64 lần (512 bits) 14 o SSLv3 dùng giải thuật, ngoại trừ byte đệm nối vào vào khóa bí mật XOR với khóa bí mật đệm vào chiều dài khối.Mức độ an toàn giống trường hợp Đối với TLS, phép tính toán MAC hoàn thành trường hợp đẳng thức sau: HMAC_hash(MAC_write_secret, seq_num || TLSCompressed.type || TLSCompressed.version || TLSCompressed.length || TLSCompressed.fragment) Phép toán MAC bao gồm tất trường hàm chứa phép tính toán SSLv3, cộng với trường TLSCompresses.version, mà version giao thức dùng 2.6.3Hàm tính số nhẫu nhiên TLS tạo cách sử dụng hàm tạo số ngẫu nhiên dùng cho PRF để mở rộng secret(phần bí mật) thành khối liệu cho mục đích sinh khóa hay phê chuẩn.Đối tượng để tạo cách sử dụng giá trị shared secret nhỏ có lien hệ với nhau, để 15 phát sinh khối dài theo cách an toàn khỏi công dựa hàm băm MACx.PRF dựa hàm mở rộng liệu sau: P_hash(secret, seed) = HMAC_hash(secret, A(1) || seed) || MAC_hash(secret, A(2) || seed) || HMAC_hash(secret, A(3) || seed) || … Với A() định nghĩa: A(0)=seed A(i) =HMAC_hash(secret,A(i-1)) Hàm mở rộng liệu tạo cách sử dụng giải thuật HMAC, với MD5 SHA-1 sở hàm băm.Như ta thấy,P_hash lặp lặp lại nhiều lần cần thiết để tạo số lượng liệu yêu cầu.Ví dụ, P_SHA-1 dùng để sinh 64 byte liệu,nó lặp lặp lại lần tạo 80 byte liệu,mà 16 byte cuối bị loại bỏ.Trong trường hợp này,P_MD5 lặp lại lần,tạo xác 64 bytes liệu.Chú ý lần lặp lại gọi hàm thực thi HMAC, quay sang gọi hàm thực thi sở giải thuật hàm băm 16 Để tạo PRF an toàn đến mức có thể,nó sử dụng giải thuật băm theo cách mà đảm bảo an toàn giải thuật bảo mật.PRF định nghĩa : hash(ClientHello.random || ServerHello.random || ServerParams) PRF lấy đầu vào giá trị bí mật, nhãn xác định, giá trị hạt giống(seed) tạo output có chiều dài tùy ý.Output tạo cách phân cắt giá trị bí mật thành hai nửa (S1 S2 biểu diễn P_hash nửa,sử dụng MD5 nửa SHA-1 nửa khác.Hai kết thực phép XOR để tạo output, cho mục đích này,P_MD5 nhìn chung phải lặp lại nhiều lần P_SHA-1 để tạo lượng liệu ngang cho input hàm XOR) 2.6.4 Mã cảnh báo TLS hỗ trợ tất mã alert code định nghĩa SSLv3 với ngoại lệ no_certificate Một số code thêm vào định nghĩa TLS, sau số cảnh báo mức nguy hiểm: o decryption_failed : cipher text giải mã theo cách sai, phép nhân chiều dài khối giá trị đệm nó,khi kiểm tra không o record_overflow:một TLS record nhận với payload(ciphertext) có chiều dài 214+2048 bytes, ciphertext giải mã với chiều dài lớn 214+1024 byte o unknown_ca : chuỗi certificate hợp lệ phần chuỗi nhận,nhưng certificate không chấp nhận CA certificate cấp phát tạo kết nối với CA hiểu biết,tin cậy o access_defined: certificate hợp lệ nhận, access_control thừa nhận, sender định không thực thi với thỏa thuận o decord_error : thông điệp giải mã trường bị thiếu range đặc biệt chiều dài message không o export_restriction : thỏa thuận không chấp nhận với việc xuất hạn chế chiều dài khóa bị phát o protocol_version: phiên giao thức mà client nỗ lực thỏa thuận nhận thấy không hỗ trợ 17 insufficient_security: trả thay handshake_failure o thỏa thuận bị thất bại cách đặc biệt server yêu cầu cipher nhiều bảo mật khác hỗ trợ client o internal_error: lỗi bên không liên hệ với cấp tương đương sửa lỗi giao thức tạo để tiếp tục Phần lại cảnh báo bao gồm: o decrypt_error: toán hạng mã hóa bắt tay bị hư, bao gồm xác minh chữ kí,mã hóa trao đổi khóa hay công nhận thông điệp hoàn tất o user_canceled: trình bắt tay bị hoãn lại số lí không liên quan đến thất bại giao thức o no_renegotiation: gửi client phần đáp lại client hello sau thiết lập bắt tay.hoặc thông điệp có kết bình thường việc thỏa thuận lại,nhưng cảnh báo sender thỏa thuận.Thông điệp luôn cảnh báo(warning) 2.6.5 Cipher suite Có nhiều khác nhỏ cipher suite sẵn có SSLv3 TLS: o Trao đổi khóa:TLS hỗ trợ tất công nghệ trao đổi khóa SSLv3 với ngoại lệ Fortezza o Các giải thuật mã hóa đối xứng:TLS bao gồm tất giải thuật mã hóa đối xứng tìm thấy SSLv3,với ngoại lệ Fortezza 2.6.6 Các dạng client certificate TLS định nghĩa cá kiểu certificate sau yêu cầu thông điệp certificate_request:rsa_sign,dss_sign,rsa_fixed_dh, dss_fixed_dh Tất kiểu định nghĩa SSLv3 Thêm vào đó,SSLv3 bao gồm rsa_ephemeral_dh, dss_ephemeral_dh fortezza_kea Ephemeral Diffie-Hellman bao gồm đánh dấu tham số Difie-Hellman với RSA DSS, với TLS, rsa_sign kiểu đánh dấu riêng không cần thiết để đánh dấu tham số Diffie-Hellman.TLS không bao gồm hệ thống Fortezza 18 2.6.7 Certificate Verify Finished Message Trong thông điệp TLS_certificate_verify, mã băm MD5 SHA-1 tính toán thông điệp bắt tay(handshake_message).Nhớ lại SSLv3 tính toán hàm băm bao gồm master_secret đệm.Các trường thêm vô thất bại việc cộng thêm bảo mật không thêm vào Khi thông điệp hoàn tất SSLv3, thông điệp kết thúc TLS mã băm dựa shared_master_secret, thông điệp bắt tay trước, nhãn xác định client hay server, việc tính toán có đôi chút khác biệt Đối với TLS ta có: PRF(master_secret, o finished_label, MD5(handshake_messages)|| SHA-1(handshake_messages)) o Với finished_label chuỗi “client_finished” client “server finished” server I.8.8 Tính toán mã hóa Pre_master_secret TLS tính toán cách SSLv3.Như SSLv3, master_secret TLS tính toán hàm băm pre_master_secret hai số ngẫu nhiên hello.Công thức phép tính toán TLS khác với công thức tính SSLv3,được định nghĩa sau: master_secret = PRF(pre_master_secret, “master secret”, ClientHello.random || ServerHello.random) Giải thuật biểu diễn 48 byte output số ngẫu nhiên tạo ra.Phép tính toán khối vật liệu key(MAC secret keys,khóa mã hóa phiên, ma trận khởi tạo IVs) định nghĩa sau: key_block=PRF(master_secret,”keyexpansion”,SecurityParameters.server_ra ndom || SecurityParameters.client_random) Cho đến đủ output sinh ra.Như với SSLv3,key_block hàm master_secret client server random numbers, với TLS giải thuật thực tế khác biệt 2.6.8 Phần đệm Trong SSL, phần đệm thêm vào trước để mã hóa liệu user số lượng nhỏ yêu cầu kích thước tổng liệu mã hóa phép nhân chiều 19 dài khối cipher.Trong TLS, padding bất kìsố lượng mà có kết tổng mà phép nhân chiều dài khối cipher lên đến giá trị lớn 255 byte.Ví dụ, plaintext (hoặc văn nén dùng) cộng với MAC+padding length byte dài 79 byte.Sau chiều dài padding,tính theo byte, 1,9,17 nữa,đến 249 Chiều dài phần đệm tùy biến chống lại công dựa phép phân tích chiều dài thông điệp trao đổi SSL 2.0 hoạt động sau: Kết nối từ client đến server được thực hiện bằng giao thức HTTPS (HTTP+SSL) Server kí khóa công khai (public key) bằng khóa bí mật (private key) của mình và gửi cho client Client dùng khóa công khai của server để xác nhận đúng server liên lạc Client kiểm tra xem có CA nào đã kí vào khóa Nếu không client sẽ hỏi người dùng xem có nên tin tưởng vào server không Client sinh một khóa bất đối xứng (asymmetric key) cho phiên giao dịch, khóa này được mã hóa bằng khóa công khai của máy chủ và gửi ngược lại Khoá này cũng sẽ được dùng để mã hóa tất cả các thông tin sau này SSL 3.0 bổ sung thêm cho SSL 2.0 bằng cách hỗ trợ cho chứng thực máy khách (client certificate), giúp server có thể nhận diện ngược lại client SSL 3.0 hoạt động SSL 2.0 , sau client đã xác thực server, đến lượt server sẽ kiểm tra ngược lại client 2.7 Ứng dụng TLS Giống SSL, TLS phát triển để đóng gói giao thức ứng dụng cụ thể HTTP, FTP, SMTP, NNTP XMPP; cho phép trao đổi riêng tư mạng Internet, cho phép ứng dụng khách/chủ giao tiếp an toàn, ngăn ngừa công, bóc tách liệu hay phá hủy thông điệp trái phép an toàn truyền siêu văn bản, an toàn trao đổi thư điện tử… Ban đầu, TLS sử dụng chủ yếu với giao thức truyền vận tin cậy TCP, nhiên, thực với giao thức truyền vận định hướng gói tin UDP giao thức điều khiển tắc nghẽn (Datagram Congestion Control Protocol - DCCP), sau chuẩn hóa độc lập gọi Giao thức an toàn gói 20 tintầng giao vận (Datagram Transport Layer Security - DTLS) Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 Bộ trưởng Bộ Thông tin Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật ứng dụng công nghệ thông tin quan nhà nước quy định Bắt buộc áp dụng tiêu chuẩn TLS phiên 1.2 xếp vào nhómTiêu chuẩn an toàn thông tin 21 [...]... 2 trường hợp Đối với TLS, phép tính toán MAC hoàn thành các trường hợp được chỉ ra trong đẳng thức sau: HMAC_hash(MAC_write_secret, seq_num || TLSCompressed.type || TLSCompressed.version || TLSCompressed.length || TLSCompressed.fragment) Phép toán MAC bao gồm tất cả các trường được hàm chứa bởi phép tính toán SSLv3, cộng với trường TLSCompresses.version, mà là version của giao thức đang được dùng 2.6.3Hàm... những giao thức truyền vận định hướng gói tin như UDP và giao thức điều khiển tắc nghẽn (Datagram Congestion Control Protocol - DCCP), sau đó đã được chuẩn hóa độc lập và gọi là Giao thức an toàn gói 20 tintầng giao vận (Datagram Transport Layer Security - DTLS) Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng... của TLS Giống như SSL, TLS được phát triển để đóng gói các giao thức ứng dụng cụ thể như HTTP, FTP, SMTP, NNTP và XMPP; cho phép trao đổi riêng tư trên mạng Internet, cho phép các ứng dụng khách/chủ giao tiếp an toàn, ngăn ngừa tấn công, bóc tách dữ liệu hay phá hủy thông điệp trái phép như an toàn truyền siêu văn bản, an toàn trao đổi thư điện tử… Ban đầu, TLS được sử dụng chủ yếu với những giao thức. ..gian được nâng cấp để nhận ra các giao thức mới, yêu cầu HTTPS triển khai cũng sẽ trở nên ít liên quan, vì vậy phiên của bạn thực sự cần mã hóa, xác thực và toàn vẹn được cung cấp bởi TLS ? Giao thức thiết lập TLS (TLS Handshake) 2.4 Cung cấp kết nối bảo mật có ba đặc tính cơ bản: o Định danh của điểm kết nối có thể được xác... protocol_version: phiên bản giao thức mà client nỗ lực thỏa thuận được nhận thấy nhưng không hỗ trợ 17 insufficient_security: trả về thay thế handshake_failure khi o thỏa thuận bị thất bại 1 cách đặc biệt bởi vì server yêu cầu cipher nhiều bảo mật hơn những cái khác được hỗ trợ bởi client o internal_error: một lỗi bên trong không liên hệ với cấp tương đương hoặc sự sửa lỗi của giao thức tạo ra không thể... với client và “server finished” đối với server I.8.8 Tính toán mã hóa Pre_master_secret đối với TLS được tính toán cùng 1 cách như trong SSLv3.Như trong SSLv3, master_secret trong TLS được tính toán như 1 hàm băm của pre_master_secret và hai số ngẫu nhiên hello.Công thức của phép tính toán TLS khác với công thức tính của SSLv3,được định nghĩa như sau: master_secret = PRF(pre_master_secret, “master secret”,... Quá trình thỏa thuận đáng tin cậy: Không kẻ tấn công nào có thể thay đổi quá trình thỏa thuận mà không bị phát hiện bởi các bên tham gia kết nối Tương tự như SSL, TLS cũng có các trạng thái phiên làm việc và kết nối nên Giao thức thiết lập TLS có trách nhiệm thỏa thuận một phiên làm việc, bao gồm các tham số sau: o Định danh phiên làm việc (session identifier): Là một byte bất kỳ có thứ tự được chọn... Version Number Định dạng của một record TLS giống định dạng của record SSL, và các trường trong phần header cũng có ý nghĩa giống nhau.Một sự khác biệt là trong các giá trị phiên bản TLS hiện tại,bản chính là 3 và bản phụ là 1 2.6.2 Message Authentication Code Có 2 điểm khác biệt giữa SSLv3 và TLS MAC schemes: giải thuật thực tế và phạm vi của phép tính MAC o TLS tạo ra việc sử dụng giải thuật HMAC... nhau nhỏ giữa các cipher suite sẵn có dưới SSLv3 và dưới TLS: o Trao đổi khóa :TLS hỗ trợ tất cả các công nghệ trao đổi khóa của SSLv3 với ngoại lệ của Fortezza o Các giải thuật mã hóa đối xứng :TLS bao gồm tất cả các giải thuật mã hóa đối xứng được tìm thấy trong SSLv3,với ngoại lệ của Fortezza 2.6.6 Các dạng client certificate TLS định nghĩa cá kiểu certificate sau đây được yêu cầu trong thông điệp certificate_request:rsa_sign,dss_sign,rsa_fixed_dh,... fortezza_kea Ephemeral Diffie-Hellman bao gồm đánh dấu các tham số Difie-Hellman với hoặc RSA hoặc DSS, với TLS, rsa_sign và kiểu đánh dấu riêng không cần thiết để đánh dấu các tham số Diffie-Hellman .TLS không bao gồm hệ thống Fortezza 18 2.6.7 Certificate Verify và Finished Message Trong thông điệp TLS_ certificate_verify, mã băm MD5 và SHA-1 được tính toán chỉ trên các thông điệp bắt tay(handshake_message).Nhớ