1. Giao thức TLS

  • Tiêu chuẩn TLS - transport layer security hay còn gọi là giao thức bảo mật tầng giao vận. Giao thức này được phát triển dựa trên tiêu chuẩn SSL v3.0 (Secure Socket Layer)
  • Giao thức TLS phiên bản v1.0 (TLS v1.0) do tổ chức Internet Engineering Task Force (IETF) công bố tại RFC 2246 tháng 01/1999.
  • Tuy nói rằng giao thức TLS v1.0 được phát triển dựa trên giao thức SSL v3.0 nhưng chúng cũng có những điểm khác biệt mà trong đó điểm khác biệt lớn nhất chính là sự không tương thích giữa chúng.

2. Cấu trúc của giao thức SSL

  • Do giao thức TLS được phát triển dựa trên giao thức SSL nên chúng ta cùng tìm hiểu một chút về cấu trúc của giao thức SSL trước nhé. Chúng ta cùng xem hình minh hoạ.

cautrucSSL.jpg

  • Theo hình mình hoạ trên thì cấu trúc và giao thức SSL được đặt giữa tầng vận chuyển (Transport Layer) và tầng ứng dụng (Application Layer)
  • Giao thức SSL cung cấp giao thức bảo mật truyền thông có 3 đặc điểm nổi bật
    • Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng cách sử dụng mật mã khóa chung
    • Sự bí mật của lưu lượng dữ liệu được bảo vệ vì nối kết được mã hóa trong suốt sau khi một sự thiết lập quan hệ ban đầu và sự thương lượng khóa session đã xảy ra.
    • Tính xác thực và tính toàn vẹn của lưu lượng dữ liệu cũng được bảo vệ vì các thông báo được xác thực và được kiểm tra tính toàn vẹn một cách trong suốt bằng cách sử dụng MAC.

3. Chức năng và hoạt động của giao thức TLS

  • Mục tiêu chính của giao thức TLS là cung cấp sự riêng tư và toàn vẹn dữ liệu giữa hai ứng dụng trong môi trường mạng
  • Cũng như giao thức SSL thì giao thức TLS cũng theo mô hình client-server
  • Trong mô hình TCP/IP thì giao thức TLS gồm có hai lớp là Record Layer và Handshake Layer
  • Record layer là lớp thấp nhất bao gồm TLS record protocol (trên tầng giao vận như giao thức điều khiển truyền tải TCP, giao thức truyền vận không tin cậy UDP)
  • Đặc tính kết nối riêng tư: mã hoá đối xứng được sử dụng để mã hoá dữ liệu (mã hoá AES...) Các khoá để mã hoá đối xứng được sinh ra cho mỗi lần kết nối và được thoả thuận bí mật của giao thức khác (ví dụ TLS). Chính vì vậy giao thức TLS cũng có thể được sử dụng mà không cần mã hoá.
  • Đặc tính kết nối đáng tin cậy: Một thông điệp vận chuyển thông báo sẽ bao gồm kiểm tra tính toàn vẹn (sử dụng hàm Băm ví dụ SHA-1)
  • Ngoài ra giao thức TLS còn được sử dụng để phân mảnh, nén, đóng gói, mã hoá dữ liệu, cho phép máy chủ xác nhận nhau và thoả thuận thuật toán mã hoá

  • Giao thức bao gồm

    • TLSPlaintext
    • TLSCompressed
    • TLSCiphertext
  • Mỗi cấu trúc dữ liệu bao gồm 4 trường thông tin

    • Type
    • Version
    • Length
    • Fragment
  • Handshake Layer: nằm trên lớp bản ghi

    • Định danh của điểm kết nối có thể được xác thực bằng cách sử dụng mã hóa bất đối xứng hoặc khóa công khai (RSA)
    • Quá trình thỏa thuận khóa bí mật chia sẻ được an toàn
    • Quá trình thỏa thuận đáng tin cậy

4. Ứng dụng của giao thức TLS

  • Đóng gói các giao thức ví dụ như HTTP, FTP, SMTP, NNTP và XMPP
  • Cho phép trao đổi riêng tư trên mạng
  • Cho phép các ứng dụng client-server giao tiếp với nhau an toàn

Note: Chính vì tính quan trọng của nó nên "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 dụng công nghệ thông tin trong cơ quan nhà nước quy định Bắt buộc áp dụng tiêu chuẩn TLS phiên bản 1.2 và được xếp vào nhóm Tiêu chuẩn về an toàn thông tin."

5. Lỗ hổng DROWN trong giao thức TLS/SSL

  • Như bên trên có nói hai giao thức SSL và TLS có nhiều điểm không tương thích, vì vậy khi TLS phát triển trên SSL nên vẫn phải đảm bảo một số tương thích ngược -> vì vậy mà có rất nhiều điểm yếu dễ bị khai thác.

  • Gần đây nhất, vào đầu tháng 3/2016, lỗ hổng DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) đã được công bố và hơn 11 triệu website bị ảnh hưởng. Và theo một số nguồn internet thì giao thức được giải mã chỉ trong vài giờ với chi phí rất nhỏ. Lỗ hổng cho phép kẻ tấn công giải mã các kết nối TLS bị theo dõi bằng cách liên tục tạo kết nối SSLv2 tới máy chủ. Trong quá trình đó, kẻ tấn công xác định được vài bit của khoá mã hoá mỗi kết nối.

  • Và nạn nhân dễ bị tấn công nhất đó chính là OpenSSL

  • Các bạn cùng đọc đoạn sau để biết các thức mà DROWN được thực hiện như thế nào

"Do DROWN là kiểu tấn công lợi dụng lỗ hổng ở phía máy chủ, nên người dùng cuối không thể làm gì để ngăn chặn thảm họa. Kiểu tấn công DROWN phổ biến nhất là lợi dụng những thuật toán mã hoá đối xứng 40 bit yếu được đưa vào phần mềm để đảm bảo tuân thủ quy định hạn chế xuất khẩu của chính phủ Mỹ. Kẻ tấn công chỉ cần giữ khoảng 1000 lượt trao đổi khoá RSA giữa người dùng cuối với một máy chủ TLS chưa được vá và các kết nối có thể dùng bất kỳ phiên bản nào của giao thức SSL hay TLS, kể cả phiên bản TLS 1.2 hiện thời. Sau đó, chúng dùng các bản mã RSA thu giữ được để khởi tạo hàng ngàn kết nối SSLv2 trong đó chứa lệnh buộc máy chủ dùng thuật toán mã hoá 40 bit. Tiếp đó, chúng so sánh bản mã với toàn bộ 240 khả năng.Việc giải mã kết nối TLS theo cách này chỉ mất tối đa 8 giờ. Ngoài ra, còn có một phương pháp giải mã khác với một cụm các card đồ hoạ và thực hiện trong khoảng 18 tiếng."

  • Với OpenSSL để có thể ngăn ngừa cũng như hạn chế tấn công hãy nâng cấp version mới cho thư viện này nhé.
  • Một số cách thức tấn công vào giao thức đã được ghi nhận:
    • Chẳng hạn như tấn công một CA (Certificate Authority)
    • Sửa đổi một máy chủ DNS đệm được dùng bởi một CA hay làm giả DNS của tên miền cần tấn công

**6. Chúng ta cùng tìm hiểu một chút về RSA **

  • Thuật toán RSA (viết tắt tên của 3 người đầu tiên mô tả về nó, đó là Ron Rivest, Adi Shamir và Len Adleman)
  • Thuật toán RSA có hai khóa: khóa công khai (public key) và khóa bí mật (private key).
  • Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
  • Hiểu đơn giản như sau:
    • Bob muốn gửi Alice một thông tin mà Bob muốn chỉ có Alice đọc được
    • Alice gửi cho Bob một chiếc hộp có khoá đã mở sẵn và giữ lại chìa khoá
    • Bob nhận được chiếc hộp đó, bỏ lá thư chứa thông tin cần gửi vào đó và khoá sập lại, sau khi khoá ngay bản thân Bob cũng không thể mở khoá
    • Bob gửi lại chiếc hộp cho Alice
    • Alice nhận và sử dụng chìa khoá duy nhất của mình để mở và tiếp nhận thông tin đó

Note: Vậy chiếc hộp đóng vai trò khoá công khai, chìa khoá mà Alice có để mở đóng vai trò khoá bí mật.