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.
Trang 1MỤC LỤC
CHƯƠNG 1: TÌM HIỂU VỀ BẢO MẬT WEBSITE
1.1. Tổng quan về bảo mật website……….… ….3
1.2. Một số quy tắc bảo mật website……….… 3
CHƯƠNG 2: TÌM HIỂU VỀ GIAO THỨC TLS 2.1. Tổng quan về giao thức TLS……….… 7
2.2. Mã hóa , xác thực và toàn vẹn dữ liệu……….10
2.3. Proxy và các giao thức trung gian trên Web………11
2.4. Giao thức thiết lập TLS (TLS Handshake)……… 12
2.5. Tính toán mã hóa……… 14
2.5.1 Việc tạo Master Secret………14
2.5.2 Việc sinh các tham số mã hóa………15
2.6. 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 và Finished Message……… 21
2.6.8 Phần đệm………22
2.7. Ứng dụng của 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 về bảo mật website
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
Trang 2injection, 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 Thứ hai, đôi khi áp lực phải hoàn thành ứng dụng web trong thời gian nhanh khiến cho các ứng dụng web được đưa vào vận hành mà không qua các khâu kiểm thử Thứ ba, việc dùng các công cụ kiểm tra lỗi web tự động đôi khi cũng không tìm ra hết các lỗi khi được thực hiện bằng tay Do vậy, việc bảo mật một ứng dụng web đó là một quá trình phòng thủ theo chiều sâu bao gồm các khâu phát triển, vận hành, xây dựng cơ sở hạ tầng bảo vệ tốt và có một độ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, tấn công và khai thác
dữ liệu khiến website bị nhiễm độc gây nguy hiểm không chỉ cho chủ sở hữu trang web
mà cho cả những khách truy cập Sau khi website đã được khử độc, nếu quản trị viên vẫn chủ quan không quan tâm đến các lỗ hỗng này thường xuyên thì website vẫn sẽ dễ dàng
bị nhiễm độc trở lại bất cứ lúc nào
Để ngăn chặn điều này xảy ra, người dùng cần có những phương pháp thích hợp để bảo
vệ máy chủ cũng như máy tính của mình khi kết nối với tài khoản máy chủ
Sử dụng mật khẩu mạnh
Thoạt nghe, quy tắc này khá bình thường nhưng sử dụng mật khẩu mạnh là nền tảng cơ bản giúp tăng cường bảo mật cho hệ thống máy chủ Mật khẩu không chỉ bắt buộc thay đổi sau khi xảy ra sự cố mà cần phải thay đổi thường xuyên, tốt nhất là định kỳ mỗi tháng một lần
Trang 3Một mật khẩu đủ mạnh cần đáp ứng được các tiêu chí cơ bản Mật khẩu an toàn
phải được tích hợp giữa chữ, số và các ký tự đặc biệt nhưng phải đảm bảo dễ nhớ để không phải ghi chú lại mật khẩu này vào sổ hay máy tính, không sử dụng cùng một mật khẩu cho nhiều tài khoản khác nhau như 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 của mình thường xuyên, đặc biệt theo dõi thông tin phiên bản mới nếu đang dùng các phần mềm web nguồn mở (CMS, portal, forum )
Tất cả các phần mềm mà người sử dụng quản lý bằng tài khoản máy chủ phải là phiên bản mới nhất và tất cả các bản vá bảo mật cần phải được áp dụng ngay sau khi nó được phát hành Điều này sẽ giảm nguy cơ một cuộc tấn công nhằm vào việc khai thác dữ liệu
Tạo các bản sao lưu:
Một bản sao lưu tất cả các nội dung của máy chủ không bị "nhiễm độc" chắc chắn
sẽ giúp người dùng tiết kiệm rất nhiều thời gian và công sức khi khôi phục Một bản sao gần nhất sẽ rất hữu ích trong việc giải quyết các vấn đề phát sinh cũng như trong trường hợp máy chủ hoặc trang web bị nhiễm độc
Quét tập tin thường xuyên:
Quét ngay cả khi không có dấu hiệu bị nhiễm độc nào được tìm thấy Đây là một thao tác rất hữu ích để bảo vệ website, quét tất cả các tập tin trên máy chủ trong một thời gian nhất định ít nhất là một lần
Quan tâm đến bảo mật máy tính:
Rất nhiều malware độc hại tấn công vào các trang web và được phát tán bằng cách lây nhiễm vào các máy tính Vì vậy, vấn đề an ninh của máy chủ chứa trang web là một trong những khía cạnh quan trọng nhất trong việc bảo mật website Giữ cho máy chủ luôn
Trang 4trong tình trạng an toàn và không bị nhiễm độc sẽ nâng cao mức độ an toàn cũng như tránh được sự tấn công của các malware.
Tăng cường mức độ bảo mật của máy chủ:
Nếu sở hữu hệ thống máy chủ, người dùng cần chú ý đến cấu hình của máy để bảo đảm mức độ an toàn nhất có thể Hoạt động để tăng cường bảo mật máy chủ gồm những phần sau:
• Loại bỏ tất cả các phần mềm không sử dụng
• Vô hiệu hóa tất cả các dịch vụ và module không cần thiết
• Thiết lập chính sách phù hợp cho người dùng và các nhóm
• Thiết lập quyền truy cập/hạn chế truy cập vào các tập tin và thư mục nhất định
• Vô hiệu hóa việc duyệt thư mục trực tiếp
• Thu thập các tập tin ghi nhận hoạt động, thường xuyên kiểm tra các hoạt động đáng ngờ
• Sử dụng mã hóa và các giao thức an toàn
Yếu tố con người vẫn đóng vai trò quan trọng nhất
Theo ông Jimmy Low, chuyên gia bảo mật khu vực Đông Nam Á thuộc Kaspersky
Lab trả lời phỏng vấn của Nhịp Sống Số cho biết: "Mỗi hệ thống mạng đều có những vấn
đề và điểm yếu riêng Tuy nhiên, yếu điểm quan trọng nhất là yếu tố con 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 về các mối đe dọa và bảo mật nhằm kịp thời nhận ra các lỗ hổng về kỹ thuật, tránh mắc phải các sai lầm trong công tác quản trị mạng".
Ông Jimmy cho rằng bất kỳ kỹ sư nào cũng có thể phạm phải sai lầm trong giai đoạn khởi
nghiệp do thiếu kinh nghiệm và lời khuyên cho các kỹ sư trẻ rằng "đừng ngại học hỏi từ người đi trước, nếu các bạn không học hỏi từ người có kinh nghiệm và từ sai lầm, các bạn khó có thể phát triển bản thân trong nghề nghiệp".
Các malware tấn công trên website là một cơn ác mộng thực sự cho các nhà quản trị web
và người sử dụng Internet trong khi tội phạm mạng không ngừng nâng cao kỹ thuật của mình và tạo thêm các cuộc khai thác mới Việc lây lan các phần mềm độc hại diễn ra rất nhanh thông qua Internet gây ảnh hưởng đến máy chủ và các máy trạm
Trang 5Điều đó nói lên sự thật rằng không có cách nào loại bỏ các mối đe dọa này hoàn toàn Tuy nhiên, tất cả các chủ sở hữu trang web và những người sử dụng Internet có thể làm cho Internet an toàn hơn bằng cách thực hiện theo các quy tắc bảo mật cơ bản.
Trang 6CHƯƠNG 2: TÌM HIỂU VỀ GIAO THỨC TLS
Hình 2.1 Transport Layer Security (TLS)
Để bảo vệ những thông tin mật trên mạng Internet hay bất kỳ mạng TCP/IP nào, SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch an toàn:
o Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia của kết nối Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xác thực của người
sử dụng
Trang 7o Mã hoá: đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba Để loại trừ việc nghe trộm những thông tin “ nhạy cảm” khi nó được truyền qua Internet, dữ liệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoài người gửi và người nhận.
o Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch và nó phải thể hiện chính xác thông tin gốc gửi đến
Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mật thông tin, xác thực và toàn vẹn dữ liệu đến người dùng SSL được tích hợp sẵn vào các browser và Web server, cho phép người sử dụng làm việc với các 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
là một tiêu chuẩn ban đầu được phát triển dựa trên tiêu chuẩn SSL v3.0 (Secure Socket Layer, cũng gọi là Giao thức an toàn tầng giao vận) TLS phiên bản 1 (TLS v1.0) do tổ chức Internet Engineering Task Force (IETF) - Nhóm chuyên trách kỹ thuật Internet công
bố tại RFC 2246 tháng 01/1999 (RFC - Request for Comments, là những tài liệu kỹ thuật
và tổ chức về Internet, bao gồm những tài liệu đặc tả kỹ thuật và chính sách được tổ chức IETF phát hành) Sự khác biệt giữa TLS v1.0 và SSL 3.0 không đáng kể, nhưng điểm khác biệt lớn nhất là TLS v1.0 và SSL v3.0 không tương thích với nhau (mặc dù TLS v1.0
có kết hợp một cơ chế cho phép thực hiện TLS v1.0 phù hợp với SSL v3.0)
Đến tháng 04/2006, TLS v1.1 được IETF công bố tại RFC 4346, là bản cập nhật so với TLS v1.0, một số cải tiến so với TLS v1.0 bao gồm:
o Véc-tơ khởi tạo không chính thức (Implicit Initialization Vector) được thay thế bằng một véc-tơ khởi tạo rõ ràng (Explicit Initialization Vector) để bảo vệ chống lại các cuộc tấn công mã hóa theo khối (Cipher Block Chaining – CBC)
o Xử lý lỗi đệm được 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ác cuộc tấn công CBC.
o Đăng ký IANA (IANA - Internet Assigned Numbers Authority, Tổ chức cấp phát
số hiệu Internet) được định nghĩa cho các tham số giao thức
o Việc đóng phiên làm việc vẫn có thể khôi phục lại được
o Bổ sung thông tin về các cuộc tấn công mới khác trên TLS
Tháng 08/2008, TLS v1.2 cập nhật TLS v1.1 được IETF công bố tại RFC 5246, những thay đổi chủ yếu của TLS v1.2 so với TLS v1.1 là:
Trang 8o Việc kết hợp các thuật toán MD5 và SHA-1 trong hàm giả ngẫu nhiên (Pseudorandom Function - PRF) đã được thay thế bằng các hàm giả ngẫu nhiên đã xác định thuật toán mã hóa Tất cả các thuật toán mã hóa đều sử dụng P_SHA256 (thuật toán SHA 256 bít).
o Việc kết hợp các thuật toán MD5 và SHA-1 trong thành phần được ký số đã được thay thế bằng một băm duy nhất Các thành phần được ký số hiện nay bao gồm một trường thông tin quy định cụ thể thuật toán băm được sử dụng
o Tăng cường khả năng của máy khách và của máy chủ để xác định băm và các thuật toán ký số chúng sẽ chấp nhận
o Bổ sung hỗ trợ thuật toán mã hóa xác thực bằng các mô hình dữ liệu
o Định nghĩa mở rộng TLS và bộ mã hóa AES đã được sáp nhập làm một
o Tăng cường khả năng kiểm tra chặt chẽ hơn số phiên bản của EncryptedPreMasterSecret
o Bắt buộc sử dụng TLS_RSA_WITH_AES_128_CBC_SHA để thực hiện mã hóa Thêm bộ mã hoá HMAC- SHA256 và loại bỏ bộ mã hoá IDEA và DES
Bên cạnh đó, vào tháng 03/2011, IETF phát hành tài liệu về việc ngăn không sử dụng SSL v2.0 tại RFC 6176, yêu cầu khi máy khách và máy chủ TLS thỏa thuận và thiết lập không bao giờ được sử dụng SSL v2.0 do SSL v2.0 không hiệu quả trong việc xác thực, mã hóa
Vì dựa trên SSL v3.0 nên TLS cũng có các mục tiêu theo thứ tự ưu tiên là:
(i) An ninh mã hóa: TLS nên được sử dụng để thiết lập một kết nối an toàn giữa hai bên
(ii) Khả năng liên thông: Các nhà phát triển phần mềm độc lập có thể phát triển ứng dụng sử dụng TLS có thể trao đổi các tham số mã hóa mà không cần hiểu hết mã nguồn của người khác
(iii) Khả năng mở rộng: TLS nhằm tạo ra một khung cho phép phương pháp khóa công khai và mã hóa số lượng lớn mới tạo ra có thể kết hợp với nhau khi cần thiết Điều này cũng sẽ thực hiện hai mục tiêu khác: tránh tạo
ra một giao thức mới (rủi ro vì có thể có điểm yếu mới) và tránh phải xây dựng toàn bộ một thư viện bảo mật mới
(iv) Hiệu quả tương đối
Trang 9Việc mã hóa có xu hướng sử dụng tài nguyên CPU cao, đặc biệt là quá trình trao đổi khóa công khai Vì lý do này, TLS đã kết hợp một thủ tục lưu trữ bộ nhớ đệm theo phiên tùy chọn để giảm số lượng kết nối cần được thiết lập từ đầu Ngoài ra, TLS cũng xem xét thực hiện giảm hoạt động mạng.
2.2. Mã hóa , xác thực và toàn vẹn dữ liệu
Mục tiêu chính của TLS là cung cấp sự riêng tư và toàn vẹn dữ liệu giữa hai ứng dụng giao tiếp trên môi trường mạng
Giống như SSL, TLS là một giao thức theo mô hình khách/chủ (client/server), nằm trên một giao thức của tầng giao vận (trong mô hình Internet TCP/IP) đáng tin cậy và có cấu trúc giống SSL, TLS bao gồm hai lớp: Lớp bản ghi (Record Layer) và Lớp thiết lập (Handshake Layer)
o Lớp thấp nhất gọi là Lớp bản ghi (Record Layer), bao gồm Giao thức bản ghi TLS (TLS Record Protocol), nằm trên tầng giao vận, một số giao thức trong tầng giao vận như 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 bản 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 được sử dụng để mã hóa dữ liệu (ví dụ tiêu chuẩn mã hóa AES, RC4 ) Các khóa để mã hóa đối xứng được sinh ra duy nhất cho mỗi kết nối và được dựa trên một thỏa thuận bí mật bởi một giao thức khác (chẳng hạn như Giao thức thiết lập TLS) Giao thức bản ghi TLS có thể được 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 một hàm băm Mã xác thực thông điệp (Message Authentication Code - MAC), hàm băm an toàn được sử dụng để tính toán MAC (ví dụ SHA-1 ) Giao thức bản ghi SSL có thể hoạt động
mà không cần sử dụng MAC, chỉ trong trường hợp một giao thức khác đang
sử dụng Giao thức bản ghi SSL như phương tiện vận chuyển để thỏa thuận các tham số an ninh
Trang 10o Giao thức bản ghi TLS được sử dụng để phân mảnh, nén (tùy chọn), đóng gói và
mã hóa bảo vệ dữ liệu từ giao thức của lớp cao hơn, ở đây là Giao thức thiết lập TLS, giao thức này cho phép máy chủ và máy khách xác nhận lẫn nhau và thỏa thuận một thuật toán mã hóa và các khóa mã hóa trước khi giao thức ứng dụng truyền tải hoặc nhận byte đầu tiên của dữ liệu
Các cấu trúc dữ liệu tương ứng trong Giao thức bản ghi TLS là TLSPlaintext, TLSCompressed và TLSCiphertext Giống với SSL, mỗi cấu trúc dữ liệu TLS trên bao gồm bốn trường thông tin:
o Trường kiểu (type) chỉ giao thức tầng cao hơn;
o Trường phiên bản (version) chỉ phiên bản giao thức (ví dụ: “3.1” là chỉ TLS phiên bản 1.0, bởi vì TLS dựa trên SSL phiên bản 3.0 nên trường version có giá trị là 3.1);
o Trường độ dài (length) là độ dài (tính bằng byte) của phần dữ 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 dữ liệu của giao thức lớp cao hơn (thường là một cấu trúc dữ liệu TLSCiphertext)
2.3. Proxy và các giao thức trung gian trên Web
Sự mở rông và thành công của HTTP tạo ra một hệ sinh thái sống động của proxy
và các trung gian trên Web: máy chủ cache, cổng an ninh, máy gia tốc web, các bộ lọc nội dung… Nhưng sự hiện diện của những máy chủ này đã tạo ra một số khó khăn cho bất
cứ ai cố gắng thay đổi các giao thức HTTP: một số máy chủ proxy chỉ đơn giản là có thể chuyển tiếp mở rộng HTTP
Trong thực tế, các giao thức mới và mở rộng cho HTTP như WebSocket, SPDY, thường dựa trên việc thiết lập một đường hầm HTTPS để bỏ qua proxy trung gian và cung cấp một mô hình triển khai đáng tin cậy: các đường hầm mã hóa dữ liệu từ tất cả các trung gian Điều này giải quyết vấn đề trước mắt, nhưng nó có một nhược điểm của việc không thể tận dụng các trung gian, nhiều trong số đó cung cấp các dịch vụ hữu ích: xác thực, bộ nhớ đệm, quét an ninh
Hầu hết các hướng dẫn WebSocket sẽ cho biết cách sử dụng HTTPS để cung cấp
dữ liệu cho các khách hang trên điện thoại di động Khi thời gian trôi qua và các trung