1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu các tấn công mới lên giao thức TLS

105 267 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 5,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trình bày chi tiết đầy đủ hoạt động giao thức TLS v2: Cách thức bắt tay, trao đổi thuật toán... Trình bày các nguy cơ mất an toàn khi cài đặt giao thức TLS. Cơ sở lý thuyết tấn công Sweet32, Tấn công Heartbleed, tấn công Robot.. Cài đặt tấn công Heartbleed lên máy chủ Web Linux Centos.

Trang 1

BỘ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC VIỆN BƯU CHÍNH VIỄN THÔNG

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

NGHIÊN CỨU MỘT SỐ TẤN CÔNG MỚI LÊN GIAO

THỨC TLS

Ngành: Công nghệ thông tin

Sinh viên thực hiện:

Trần Văn Tân

Lớp: K45

Trang 2

Hà Nội, 2018

MỤC LỤC

MỤC LỤC i

DANH MỤC HÌNH VẼ iv

DANH MỤC BẢNG BIỂU vi

DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT vii

LỜI NÓI ĐẦU viii

1.1 Giới thiệu giao thức TLS 1

1.1.1 Giao thức TLS 1

1.1.2 Lịch sử phát triển của giao thức TLS 3

1.1.3 Ứng dụng của giao thức TLS 5

1.2 Mô tả giao thức TLS 6

1.2.1 Cấu trúc của giao thức TLS 6

1.2.2 Giao thức bản ghi 10

1.2.3 Giao thức bắt tay 15

1.3 Cách thức hoạt động và thuật toán trong giao thức TLS 28

1.3.1 Cách thức hoạt động của giao thức TLS 28

1.3.2 Các thuật toán dùng trong giao thức TLS 30

CHƯƠNG 2: NGHIÊN CỨU PHƯƠNG PHÁP TẤN CÔNG LÊN GIAO THỨC TLS VÀ PHƯƠNG PHÁP PHÒNG CHỐNG 31 2.1 Giới thiệu tổng quan về phương pháp tấn công lên giao thức TLS 31

2.2 Phân loại tấn công 33

2.2.1 Tấn công vào giao thức bắt tay 33

Trang 3

2.2.3 Tấn công vào PKI 33

2.2.4 Các cuộc tấn công khác 34

2.3 Tấn công HeartBleed 39

2.3.1 Tấn công OpenSSL dựa trên lỗ hổng Heartbleed 39

2.3.2 Quá trình phát hiện 39

2.3.3 Phương pháp tấn công và khai thác lỗ hổng 40

2.5.4 Giải pháp khắc phục và ngăn chặn tấn công 47

2.4 Tấn công Sweet32 48

2.4.1 Tấn công nghịch lý ngày sinh nhật trong chế độ mã hóa CBC 49

2.4.2 Cơ chế tấn công Sweet32 50

2.4.3 Điều kiện để thực hiện tấn công Sweet32 53

2.4.4 Các phòng chống tấn công 53

2.5 Tấn công ROBOT 54

2.5.1 Định dạng PKCS #1 55

2.5.2 Tấn công chọn bản mã RSA trong định dạng PKCS#1 56

2.5.3 Tấn công ROBOT 59

2.5.4 Giải pháp khắc phục và ngăn chặn tấn công 62

CHƯƠNG 3: CÀI ĐẶT VÀ THỰC HIỆN GIAO THỨC TLS BẢO VỆ TRUYỀN THÔNG TRÊN MÁY CHỦ WEB 65 3.1 Mô hình cài đặt 65

3.2 Cài đặt máy chủ 66

3.2.1 Cấu hình mạng 66

3.2.2 Cấu hình dịch vụ DNS 67

3.2.3 Cấu hình website chứa lỗ hỗng HearBleed 68

3.2.4 Cài đặt cơ sở dữ liệu cho website www.tankma.vn 74

3.3 Cấu hình máy trạm 78

3.3.1 Cấu hình mạng 78

Trang 4

3.3.2 Truy cập website www.tankma.vn 78

3.4 Tấn công khai thác lỗ hổng HeartBleed 79

3.4.1 Cấu hình mạng trên máy thực hiện tấn công 79

3.4.2 Tấn công khai thác lỗ hổng HeartBleed 80

PHỤ LỤC 82

KẾT LUẬN 93

Trang 5

DANH MỤC HÌNH VẼ

Hình 1.1 Vị trí hoạt động của SSL/TLS trên mô hình OSI và TCP/IP 1

Hình 1.2 Lịch sử phát triển của bộ giao thức SSL/TLS 3

Hình 1.3 Cấu trúc bộ giao thức SSL/TLS 7

Hình 1.4 Cấu trúc của bản ghi 10

Hình 1.5 Quá trình chia nhỏ và đóng gói dữ liệu 11

Hình 1.6 Giai đoạn bắt tay trong TLS 1.0 16

Hình 1.7 Trao đổi khóa được xác thực dựa trên hệ mật RSA trong TLS 1.0 19

Hình 1.8 Trao đổi khóa được xác thực dựa trên DH trong TLS 1.0 21

Hình 1.9 Trao đổi khóa được xác thực dựa trên DH động trong TLS 1.0 22

Hình 1.10 Giai đoạn bắt tay nhanh trong TLS 1.0 23

Hình 1.12 Hàm mở rộng 26

Hình 1.13 Quá trình sinh khóa trong TLS 1.0 28

Hình 1.14 Cách thức hoạt động của giao thức TLS 29

Hình 2.1: Mô tả lịch sử các cuộc tấn công lên bộ giao thức SSL/TLS 32

Hình 2.2 Mô tả tất cả các cuộc tấn công lên vào giao thức bắt tay 35

Hình 2.3: Mô tả tất cả các cuộc tấn công lên giao thức bản ghi 36

Hình 2.4 Mô tả tất cả các cuộc tấn công vào PKI 37

Hình 2.5 Mô tả tất cả các cuộc tấn công khác 38

Hình 2.6 Heartbeat request (dạng bình thường) 40

Hình 2.7 Tấn công Heartbleed 46

Hình 2.8 Xác suất cùng ngày sinh nhật với N tương ứng 49

Hình 2.9 Tấn công Sweet32 50

Hình 2.10 Chế độ mã hóa CBC 52

Hình 2.11 Định dạng PKCS#1 55

Hình 2.12 Quá trình bắt tay TLS áp dụng RSA PKCS#1 v1.5 60

Hình 3.1 Mô hình cài đặt và thực hiện tấn công Heartbleed 65

Hình 3.2 Kiểm tra dịch vụ DNS 68

Hình 3.3 Kiểm tra các gói cài đặt openssl và mod_ssl 69

Trang 6

Hình 3.4 Tạo khóa công khai cho máy chủ web 70

Hình 3.5 Tạo chứng chỉ số tự ký 70

Hình 3.6 Tạo một chứng chỉ số được ký bởi CA trong hạ tầng khóa công khai X509 71 Hình 3.7 Chỉnh sửa tập tin /etc/httpd/conf/httpd.conf 71

Hình 3.8 Giao diện trang web: https://tankma.vn 72

Hình 3.9 Tham số an toàn bảo vệ www.tankma.vn 73

Hình 3.10 Chứng chỉ số của máy chủ web www.tankma.vn 74

Hình 3.11 Cài đặt PhpMyAdmin thành công 75

Hình 3.12 Thêm người dùng vào cơ sở dữ liệu 76

Hình 3.13 Thiết lập cấu hình mạng trên máy trạm 78

Hình 3.14 Đăng nhập máy chủ web thành công 79

Hình 3.15 Thiết lập cấu hình mạng trên máy thực hiện tấn công 80

Hình 3.16 Tấn công khai thác lỗ hổng Heartbleed trên máy chủ web 81

Trang 7

DANH MỤC BẢNG BIỂU

Bảng 1 1 Sự khác biệt giữa phiên, kết nối và kênh TLS 9

Bảng 1 2 Mô tả các tham số an toàn (SecurityParameters) 14

Bảng 1 3 Nội dung các thông điệp trong giao thức bắt tay 17

Bảng 2 1 Mã khối sử dụng trong các giao thức bảo mật 48

Bảng 2 2 Bản vá lỗi do các nhà cung cấp phần cứng và phần mềm bảo mật 63

Trang 8

DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT

Chosen Ciphertext AttackCertificate Signing RequestData Encryption StandardDiffle Hellman Key ExchangeDenial of Service

Digital Signature AlgorithmDigital Signature StandardDatagram Transport Layer Security

A Federal Information Processing

Initialization VectorMessage Atuthentication CodeMan-in-the-middle

National Institure of Standard and Technology

Optimal Asymmetric Encryption Padding

The Ope Source tookit for SSL/TLSOperating System

Public Key Cryptography StandardsPublic Key Infrastructure

Secure Hash Algorithm

Tiêu chuẩn mã hóa tiên tiến.Giao diện lập trình ứng dụng.Trung tâm chứng thực

Tấn công lựa chọn bản mã

Yêu cầu ký chứng chỉ

Tiêu chuẩn mã hóa dữ liệu

Trao đổi khóa Diffle Hellman.Tấn công từ chối dịch vụ

Thuật toán chữ ký số

Tiêu chuẩn chữ ký số

Bảo mật dữ liệu tầng giao vận.Tiêu chuẩn xử lý thông tin liênbang Hoa Ky

Véc tơ khởi tạo

Mã xác thực thông báo

Tấn công xen giữa

Viện tiêu chuẩn công nghệ Quốcgia Hoa ky

Chèn phần đệm mã hóa bất đối xứng tối ưu

Phần mềm mã nguồn mở

Hệ điều hànhChuẩn mật mã khóa công khai

Hạ tầng khóa công khaiThuật toán băm an toàn

Trang 9

LỜI NÓI ĐẦU

Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều cónhu cầu giới thiệu thông tin của mình trên mạng xã hội cũng như thực hiện cácphiên giao dịch trực tuyến Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứngdụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao,trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau.Transport Layer Security (TLS) là giao thức nổi bật để cung cấp dịch vụ bảo mậtcho lưu lượng dữ liệu trên kênh truyền và là giao thức bảo mật phổ biến trênInternet và đặc biệt là trong các hoạt động thương mại điện tử (E-Commeree) Mức

độ phổ biến có thể tính được mỗi ngày có hàng tỉ giao dịch trên mạng sử dụng giaothức TLS Trong những năm gần đây việc triển khai TLS đã nhận được sự chú ýđáng kể và sự giám sát từ các chuyên gia bảo mật, điều này đã dẫn đến sự phát hiệnhàng loạt các lỗ hổng mới Các nguy cơ mất an toàn thông tin đó trên giao thứcTLS là điều rất đáng lo ngại nhất hiện nay

Xuất phát từ lý do trên, em đã chọn đề tài “Nghiên cứu một số phương pháp tấn công mới lên giao thức TLS” do ThS Trịnh Hà Chương hướng dẫn Nội

dung của đồ án gồm có 3 chương:

Chương 1: Tổng quan về giao thức TLS: Chương này tập trung nghiên

cứu những vấn đề cơ bản và tổng quan về giao thức TLS, mô tả cấu trúc và hoạtđộng của bộ giao thức TLS

Chương 2: Nghiên cứu phương pháp tấn công lên giao thức TLS và phương pháp phòng chống: Chương này giới thiệu những phương pháp tấn công

điển hình lên bộ giao thức SSL/TLS, và đi sâu vào nghiên cứu hai phương pháp tấncông là tấn công ROBOT và Sweet32

Trang 10

Chương 3: Cài đặt và thực hiện giao thức TLS bảo vệ truyền thông trên máy chủ Web và thực nghiệm tấn công: Chương này trình bày những vấn đề cơ

bản về cài đặt và thực hiện tấn công

Mặc dù đã có nhiều cố gắng trong suốt quá trình nghiên cứu, song do thờigian và kiến thức có hạn nên trong đồ án này em chưa đi sâu nghiên cứu đầy đủ tất

cả các cơ chế tấn công lên bộ giao thức SSL/TLS cũng như không thể tránh khỏinhững thiếu sót Em rất mong nhận được những ý kiến đóng góp và chỉ bảo củacác thầy cô giáo và các bạn quan tâm đến đề tài này

Em xin bày tỏ lòng biết ơn chân thành đến giáo viên hướng dẫn: ThS Trịnh

Hà Chương, các thầy cô cùng bạn bè, đã tận tình giúp đỡ em hoàn thành đồ án

này

Hà nội, ngày 25 tháng 05 năm 2018

Sinh viên thực hiện

Trần Văn Tân

Trang 11

CHƯƠNG 1: TỔNG QUAN VỀ GIAO THỨC TLS

1.1 Giới thiệu giao thức TLS

1.1.1 Giao thức TLS

Năm 1994 công ty Netscape đã giới thiệu bộ giao thức SSL (Secure SocketLayer), bộ giao thức này được xem là tiêu chuẩn của công nghệ bảo mật, truyềnthông mã hoá giữa máy chủ Web server và trình duyệt Web Browser Bộ giao thứcSSL sau đó được phát triển tiếp thành bộ giao thức TLS (Transport Layer Security),

bộ giao thức này hoạt động dựa trên liên kết kết nối TCP Bộ giao thức SSL/TLSđược lựa chọn làm tiêu chuẩn để bảo vệ tính bí mật, tính xác thực và tính toàn vẹncủa kết nối trên mạng Hình 1.1 mô tả vị trí hoạt động của bộ giao thức SSL/TLStrên mô hình OSI và TCP/IP

Hình 1.1 Vị trí hoạt động của SSL/TLS trên mô hình OSI và TCP/IP

Trang 12

Giao thức TLS chứa nhiều giải thuật mã hóa nhằm đảm bảo quá trình traođổi thông tin trên mạng được an toàn Việc mã hóa dữ liệu được thực hiện một cáchtrong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP.

Việc kết nối giữa một Web browser tới bất ky điểm nào trên mạng Internet điqua rất nhiều các hệ thống độc lập mà không có bất ky sự bảo vệ nào với các thôngtin trên đường truyền Không một ai kể cả người sử dụng lẫn WebSever có bất ky

sự kiểm soát nào đối với đường đi của dữ liệu hay có thể kiểm soát được liệu có ai

đó thâm nhập vào thông tin trên đường truyền

Để bảo vệ những thông tin nhạy cảm trên mạng Internet hay bất ky mạngTCP/IP nào, TLS đã kết hợp những yếu tố an toàn sau để thiết lập được một giaodịch an toàn:

 Xác thực - Sử dụng chứng chỉ số: Đảm bảo tính xác thực của tình trạng 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 tratính xác thực của người sử dụng;

 Bí mật - Sử dụng các phép mã hóa: Đả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ởinhững người khác ngoài người gửi và người nhận;

 Toàn vẹn dữ liệu - Sử dụng mã xác thực thông báo: Đả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;

 Tính không chối bỏ - Sử dụng chứng chỉ số: Đảm bảo thông tin được gửi và

Trang 13

Web browser và Web Sever, cho phép người sử dụng làm việc với các trang Web ởchế độ an toàn

1.1.2 Lịch sử phát triển của giao thức TLS

Lịch sử phát triển của bộ giao thức SSL/TLS:

Hình 1.2 Lịch sử phát triển của bộ giao thức SSL/TLS

Phiên bản SSL 1.0 là phiên bản đầu tiên của bộ giao thức SSL/TLS nhưngkhông được công bố do chứa điểm yếu liên quan đến vấn đề bảo vệ bí mật Mụctiêu chính của SSL 1.0 là thiết lập một kênh liên lạc an toàn trên một mạng không

an toàn, tuy nhiên vẫn chưa tập trung vào việc bảo vệ tính toàn vẹn dữ liệu Điểm

Trang 14

yếu của giao thức liên quan đến tính xác thực và thiếu tính toàn vẹn, tem thời gianhoặc số thứ tự bí mật nhằm ngăn chặn tấn công dùng lại gói dữ liệu.

Phiên bản SSL 2.0 là phiên bản đặc tả kỹ thuật đầu tiên được chính thứccông bố của bộ giao thức SSL/TLS Phiên bản này là sản phẩm của quá trình cảitiến liên tục từ phiên bản SSL 1.0 nhưng vẫn còn nhiều điểm yếu như: Giá trị MACkhông bao trùm được trường độ dài phần đệm, không có chức năng ký, thiếu quátrính xác thực bắt tay, sử dụng các thuật toán yếu dễ bị tấn công (MD5, RC4) hoặc

sử dụng khóa cho nhiều mục đích

Phiên bản SSL 3.0 giải quyết nhiều lỗ hổng trong các phiên bản trước bằngcách sử dụng một loạt các tính năng và cơ chế mới Quá trình bắt tay bao gồm cácthông báo bổ sung và giao thức mới có tên là ChangeCipherSpec Cải tiến tổng thể

là giao thức được phát triển mang tính cấu trúc hơn và được thiết kế thành nhiềulớp, các tính năng còn thiếu đã được bổ sung và đã giải quyết những lỗ hổng liênquan tới bảo mật

Phiên bản TLS 1.0 thực chất là phiên bản SSL 3.1 nhưng do Netscape khôngcòn chịu trách nhiệm chính về đặc tả kỹ thuật và do một phần của quá trình tiêuchuẩn hóa của IETF nên nó được đổi tên TLS 1.0 nâng cấp bao gồm đặc tả chi tiết

về hàm ngẫu nhiên được sử dụng để dẫn xuất khóa Chức năng này được sử dụngcho việc mở rộng nguyên liệu khóa và tính toán giá trị tóm lược trong thông báoFinished

Phiên bản TLS 1.1 là bản cập nhật với một số thay đổi Thay đổi rõ ràng nhất

là khả năng ngăn chặn các kiểu tấn công liên quan đến chế độ hoạt động CBC của

mã khối TLS 1.1 nghiêm cấm việc sử dụng các hệ mật yếu (DES, RSA với khóanhỏ hơn 1024 bits) sao cho phù hợp với các yêu cầu về hệ mật được sử dụng trongthực tế Quá trình ngừng kết nối mà không gửi một thông báo ngắt kết nối thìkhông thể tái kết nối phiên làm việc đó nữa

Phiên bản TLS1.2 có rất nhiều cải tiến so với phiên bản TLS1.1 Một trong

Trang 15

hàm giả ngẫu nhiên (PRF) và thay thế bằng một cấu hình hàm băm cụ thể (cấu trúcGCM hoặc cấu trúc CBC-MAC)

Phiên bản TLS1.3 giúp tăng tốc độ kết nối an toàn và nâng cao khả năngchống snooping

1.1.3 Ứng dụng của giao thức TLS

 OpenSSL: là một bộ phần mềm mã nguồn mở thực hiện giao thức

SSL/TLS Thư viện gốc thực hiện các hàm mã hóa cơ bản, cung cấp nhiều hàm cóích bằng ngôn ngữ lập trình C và hỗ trợ SSL 2.0/3.0, TLS 1.0/1.1/1.2, DTLS 1.0.OpenSSL có các phiên bản hỗ trợ nhiều hệ điều hành họ Unix (Solaris, Linux, MacOS) và Microsolf Windows

Việc cài đặt bộ giao thức SSL/TLS trong thư viện OpenSSL sẽ thực hiện cácthuật toán mã hóa và xác thực cho tiêu chuẩn chứng chỉ số X509 Thêm nữa,OpenSSL còn có chức năng giải mã, tạo chữ ký số và tự ký chữ ký số đó giống nhưmột trung tâm chứng thực CA thực thụ Cuối cùng, OpenSSL hỗ trợ nhiều dạng mãpháp khác nhau với khóa được sinh tự động, chính điều này làm cho OpenSSL cóđầy đủ tính năng như một hạ tầng khóa công khai PKI

OpenSSL được cài đặt trên các máy chủ họ Unix hoặc Windows cung cấp cácdịch vụ truyền thông an toàn trong mô hình máy trạm – máy chủ của ngân hàng, cơquan, công ty như: dịch vụ Web an toàn (https), dịch vụ thư điện tử an toàn (smtps),dịch vụ chia sẽ tập tin an toàn (ftps)… Ngoài ra, bộ mã nguồn OpenSSL còn đượctích hợp vào trong các phần mềm xây dựng các mạng riêng ảo như: OpenVPN,StrongSwan

 Java Secure Socket Extentions (JSSE): Là một phần trong cấu trúc Java

Standard Edition Platform bắt đầu từ phiên bản 1.4 và chứa mã nguồn cài đặt giaothức SSL/TLS Chương trình được hoàn thành trên nền tảng Java và hỗ trợ SSL3.0, TLS1.0/1.1/1.2

Chương trình này sử dụng cấu trúc mã hóa Java Cryptography Archtecture

để thực hiện quá trình mã hóa và giải mã Vì vậy có thể cài đặt nhiều loại thuật toán

Trang 16

mã hóa khác nhau (DES, AES, 3DES), ngoài ra còn có thể loại bỏ hoặc bổ sung các

mã pháp khác mà TLS hỗ trợ

Các máy chủ đã được cài đặt cấu trúc Java Standard Edition Platform từ cácphiên bản 1.4 trở lên sẽ sử dụng được tính năng mở rộng JSSE để cung cấp cácdịch vụ truyền thông an toàn như: dịch vụ Web an toàn (https), dịch vụ thư điện tử

an toàn (smtps), dịch vụ chia sẽ tập tin an toàn (ftps)

Như vậy, bộ giao thức SSL/TLS được ứng dụng rất rộng rãi trong thực tế đểđảm bảo các dịch vụ truyền thông an toàn như: thương mại điện tử (các ngân hàng

và công ty lớn), thông tin bí mật nhà nước, giáo dục trực tuyến…

1.2 Mô tả giao thức TLS

TLS có cấu trúc rất phức tạp và bao gồm nhiều khía cạnh liên quan đến việc

cài đặt bộ giao thức này Tính bí mật và toàn vẹn được đảm bảo bởi các Record Layer mà được định nghĩa một cách chính xác trong giao thức Record Layer Protocol Trong khi đó, tính xác thực và tính chống chối bỏ được đảm bảo trong suốt quá trình Handshake Phase mà được chỉ rõ trong Handshake Protocol Bên trong hai giao thức Record Layer Protocol và Handshake Protocol chứa những

ngăn xếp giữ nhiệm vụ theo dõi phiên liên lạc đã thiết lập và những tham số liênquan trong phiên (thuật toán mã hóa, độ dài khóa, tạo và chấp nhận khóa chủ,những định danh tương ứng)

1.2.1 Cấu trúc của giao thức TLS

TLS là giao thức hoạt động trên tầng vận tải bao gồm nhiều giao thức conđược mô tả rõ trong hình 1.3 Hoạt động của bộ giao thức được chia thành hai giaiđoạn:

 Giai đoạn bắt tay;

 Giai đoạn ứng dụng

Trong giai đoạn bắt tay sẽ tiến hành đàm phán các tham số bí mật, thuật toán

Trang 17

tất cả các khóa cần thiết cho một phiên liên lạc an toàn sẽ được sinh từ nguồn khóa

chủ bí mật này Sau khi hoàn thành giai đoạn bắt tay, tất cả các tham số mật mã

nguyên thủy được cấu hình, khởi tạo và sử dụng Do đó, hai điểm đầu cuối sẽ đàmphán với cùng một trạng thái mật mã giống nhau Sau giai đoạn bắt tay sẽ là giaiđoạn ứng dụng, trong đó dữ liệu được trao đổi một cách an toàn thông qua việcthiết lập kênh liên lạc an toàn

Thiết kế Mô-đun: Giao thức TLS và SSL là một cấu trúc mô-đun cao và

phức tạp Giao thức được thiết kế thành từng lớp và bao gồm các giao thức conkhác nhau như là:

 Giao thức bắt tay ( Handshake Protocol);

 Giao thức thay đổi tham số mật mã (ChangeCipherSpec Protocol);

 Giao thức cảnh báo (Alert Protocol);

 Giao thức dữ liệu ứng dụng (Application Data Protocol).

Tất cả các thông báo được nhúng trong giao thức bản ghi (Record Protocol)

như mô tả hình 1.3:

Trang 18

Hình 1.3 Cấu trúc bộ giao thức SSL/TLS

Giao thức bản ghi là một lớp giao thức liên lạc chấp nhận một chuỗi các byte

và chia các byte này thành các khối được xử lý sau đó chuyển cho giao thức TCP

Trong giai đoạn bắt tay các thông điệp đàm phán giữa hai bên liên lạc sẽkhông được mã hóa cũng như bảo đảm tính toàn vẹn

Quản lý phiên: Quản lý phiên là một quá trình quan trọng trong hoạt động

của bộ giao thức SSL/TLS Đối với SSL/TLS, một phiên liên lạc bao gồm các thuậttoán mã hóa và các tham số liên quan được cài đặt trong một cấu trúc đặc biệt

SecurityParameters Phiên liên lạc trong SSL/TLS hỗ trợ cơ chế kết nối nhanh nếu

việc liên lạc giữa hai bên đầu cuối bị dừng một thời gian và phiên liên lạc nhanhnày sẽ tái sử dụng các tham số an toàn của phiên liên lạc trước đó Cơ chế kết nốinhanh sẽ làm giảm thời gian giai đoạn đàm phán, nhưng đi kèm với đó là rủi rokhóa chủ tạo ra có thể bị lộ Ví dụ: Hệ thống giao dịch của ngân hàng Viettinbanktriển khai dưới dạng dịch vụ web an toàn (https) từ một máy chủ web Trong kịchbản này, người dùng sử dụng dịch vụ chuyển tiền trực tuyến trên trang web củangân hàng, vì một lí do nào đó như: đường truyền trong mạng lan bị ngắt và khihoạt động lại thì làm cho người dùng phải kết nối lại tới máy chủ ngân hàng Việckết nối lại này người dùng sẽ đăng nhập được ngay lập tức vào trang web giao dịchcủa ngân hàng thay vì phải điền đầy đủ các thông tin đăng nhập Như vậy, quá trìnhquản lý phiên đã giúp cho người dùng truy cập nhanh và lấy dữ liệu từ máy chủweb của công ty bằng cách tái sử dụng các thông số trong phiên liên lạc đã đượcthiết lập trước đó

Quá trình quản lý phiên của SSL/TLS diễn ra không chỉ giới hạn ở một kênhđơn lẻ mà còn sử dụng để quản lý đa kết nối song song, tất cả dựa vào các tham số

an toàn tương tự nhau

Điểm quan trọng cần lưu ý là khóa chủ bí mật MasterSecret được tái sử

dụng, trong khi quá trình dẫn xuất khóa được thực hiện cho tất cả các phiên làm

Trang 19

liên tục sẽ an toàn nếu thực hiện quá trình mã hóa hoặc giải mã song song hoặc liêntục với nguyên liệu khóa khác nhau Cơ chế này liên quan đến quá trình dẫn xuấtkhóa phụ thuộc vào các giá trị ngẫu nhiên do phía máy trạm và máy chủ cung cấp,được gửi trong hai thông báo đầu tiên của quá trình bắt tay Các phiên được xácđịnh bởi định danh phiên cũng là một phần của hai thông báo đầu tiên trong quátrình bắt tay (ClientHello, SeverHello)

Bảng 1.1 tóm tắt sự khác biệt giữa phiên, kết nối và kênh liên lạc

Bảng 1 1 Sự khác biệt giữa phiên, kết nối và kênh TLS

Phiên TLS Liên quan đến một số các tham số mật mã được thiết lập (bộ

mã hóa và khóa chủ bí mật MasterSecret) liên kết với một

định danh phiên Một phiên có thể được tái sử dụng, nhưngnguyên liệu khóa thì hoàn toàn khác nhau (vì các giá trị ngẫu

nhiên khác nhau trong các thông báo ClientHello và SeverHello).

Kết nối TLS Kết nối TLS (TLS connection) được gửi từ phía người dùng

sẽ không yêu cầu các tham số an toàn

Kênh TLS Kênh TLS yêu cầu một bộ các khóa và những tham số mật

mã cụ thể Mỗi kênh TLS là duy nhất ngay cả khi được thiếtlập bằng cách tái sử dụng lại một phiên TLS có sẵn

Độ tin cậy: Độ tin cậy giữa các bên truyền thông được dựa trên các chứng

chỉ số mà được đăng ký từ bên thứ ba tin cậy Ý tưởng đưa ra là hai bên liên lạchoặc ít nhất một bên liên lạc lấy chứng chỉ số từ bên thứ ba tin cậy, việc chứngminh danh tính của các bên liên lạc cũng được thực hiện thông qua việc gửi chứngchỉ này tới bên thứ ba tin cậy kiểm tra Chứng chỉ số và độ tin cậy cũng có thể đượcthực hiện trên hạ tầng khóa công khai PKI (Public Key Infrastructure)

Trang 20

1.2.2 Giao thức bản ghi

Lớp bản ghi được định nghĩa bởi giao thức Record Layer Protocol và là một

phần trong đặc tả kỹ thuật của SSL/TLS Giao thức này đóng gói tất cả dữ liệu củanhững giao thức tầng ứng dụng (hình 1.4), thực hiện mã hóa, bảo vệ tính toàn vẹn

và nén dữ liệu (phụ thuộc vào bộ mã pháp được cấu hình) Kích thước tối đa củamỗi bản ghi không được vượt quá 214 bytes, kích thước giới hạn này không bao

gồm trường Record Header Trường Record Header sẽ luôn được bổ sung thêm vào

bản ghi ngay cả khi nội dung bản ghi có kích thước tối đa Có thể lựa chọn việc mãhóa hoặc không mã hóa dữ liệu kết hợp với việc nén hoặc không nén dữ liệu trongcác bản ghi Thuật toán nén phải không làm mất dữ liệu và không làm tăng kíchthước dữ liệu hơn 1024 byte Cấu trúc bản ghi được mô tả trong hình 1.4:

Hình 1.4 Cấu trúc của bản ghi

Trang 21

Trong cấu trúc bản ghi, dữ liệu khi chuyển xuống từ tầng ứng dụng sẽ đượcchia ra và đóng gói thành các khối dữ liệu kích thước nhỏ bởi cơ chế TLSPlaintext.Tiếp đến, các khối dữ liệu này sẽ được nén lại bởi cơ chế TLSCompressed Cuốicùng, khối dữ liệu đã được nén sẽ được mã hóa bởi cơ chế TLSCiphertext Bản ghi

có thể được gửi dưới dạng mã hóa nhưng không nén, dạng rõ và nén, dạng rõ vàkhông nén, cũng giống như dạng mã hóa và nén Mã xác thực thông báo dựa trênhàm băm (HMAC - Hash Message Authentication Code) được sử dụng trongtrường hợp cơ chế mã dữ liệu TLSCiphertext được kích hoạt để đảm bảo tính toànvẹn dữ liệu Quá trình chia nhỏ và đóng gói dữ liệu được thể hiện trong hình 1.5:

Hình 1.5 Quá trình chia nhỏ và đóng gói dữ liệu

Trang 22

Cơ chế mã hóa

SSL/TLS chỉ rõ việc hỗ trợ đối với mã dòng và mã khối trong những chế độlàm việc riêng biệt Sự mã hóa được nâng cấp và cải tiến về mặt mã pháp, sơ đồ mãhóa, các lược đồ cung cấp tham số mật mã đầu vào trong những phiên bản mới

Cơ chế đóng gói dữ liệu

Dữ liệu sau khi được xử lý bởi bộ giao thức SSL/TLS là những khối dữ liệu

nhỏ đã mã hóa Mỗi khối mã hóa này là sự kết hợp theo công thức then-Encrypt: khối dữ liệu dưới dạng rõ đã được nén bởi cơ chế TLSCompressed sẽ

Mac-then-Pad-được tính toán và gắn thêm giá trị mã xác thực thông báo MAC để đảm bảo tínhtoàn vẹn, chèn thêm phần đệm (lên tới 256 bytes) để được độ dài là bội của khối

mã hóa và cuối cùng là quá trình mã hóa MAC có tính chất không thể thấy đượchay bị ẩn đi – là một số thứ tự, số thứ tự này không chứa thời gian gửi ngoại trừviệc gắn thêm thời gian như giá trị đầu vào của MAC và có chức năng chống tấncông lặp lại Giá trị MAC và phần đệm thêm (Pandding) được gắn vào khối dữ liệu

đã được nén Tóm lại, quá trình xử lý dữ liệu được thực hiện như sau: Plaintext =>MAC => PAD, tức là chia nhỏ => tính mã xác thực => chèn phần đệm, dẫn tới thuđược khối dữ liệu có cấu trúc MSG|MAC|PAD|PADLEN và cuối cùng khối dữ liệunày chính là đầu vào cho quá trình mã hóa Tính năng chèn thêm phần đệm có ưuđiểm là ẩn đi độ dài thực của dữ liệu dạng rõ từ tầng ứng dụng chuyển xuống Sơ

đồ và cài đặt quá trình chèn phần đệm đã gây ra những lổ hổng nghiêm trọng trongquá khứ như sử dụng hàm tiên chi tấn công vào sơ đồ chèn phần đệm Để đối phóvới những tấn công kiểu này phải thực hiện đúng qui trình giải mã được đề nghị:

 Giải mã những khối bản mã;

 Kiểm tra tính hợp lệ từng giá trị Padding riêng lẻ;

 Kiểm tra tính hợp lệ từng giá trị MAC riêng lẻ

Nếu xảy ra lỗi ở trên bất ky bước xử lý nào cũng đều đưa ra một thông báolỗi giống nhau không biết đó là lỗi gì, điều này để ngăn chặn các cuộc tấn công

Trang 23

Trường hợp lý tưởng, các bước xử lý đều được thực hiện trong cùng một thời gian,độc lập đầu ra để chống lại tấn công kênh kề.

Cấu trúc tham số an toàn - SecurityParameters

Đặc điểm chi tiết của cấu trúc tham số an toàn như sau:

Cấu trúc SecurityParameters này được định nghĩa trong phiên bản TLS 1.0

(có sự khác nhau nhỏ đối với từng phiên bản SSL/TLS) Những tham số trong cấu trúc được mô tả chi tiết trong bảng 1.2 sau đây:

Trang 24

Bảng 1 2 Mô tả các tham số an toàn (SecurityParameters)

Chỉ rõ thuật toán được dùng để mã hóa

Dạng thuật toán (mã dòng và mã khối)

Key_material_length Nếu thuật toán mã hóa được sử dụng với khóa yếu, tức là

khóa có độ dài ngắn thì giá trị này sẽ được kích hoạt (True/False)

Is exportable Giá trị này chỉ ra rằng thuật toán mã hóa sử dụng kích

thước khóa yếu (True/False)

Mac_algorithm

Hash_size

Thuật toán được sử dụng để tạo mã xác thực thông báo Kích thước giá trị băm của hàm băm được sử dụng để tạo mã xác thực

Compression

algorithm

Chỉ ra thuật toán nén dữ liệu được sử dụng

Master_secret Khóa chủ bí mật phiên liên lạc

Client_random Giá trị ngẫu nhiên được chọn từ phía máy trạm

Server_random Giá trị ngẫu nhiên được chọn từ phía máy chủ

Lưu ý rằng không phải tất cả các tham số của SecurityParameters đều đượctái sử dụng trong phiên liên lạc nhanh (phiên liên lạc được thiết lập từ trước nhưng

bị ngắt sau một thời gian ngắn không sử dụng) Những giá trị ngẫu nhiên từ phíamáy trạm và máy chủ luôn được thay đổi với mỗi liên kết mới

1.2.3 Giao thức bắt tay

Quá trình kết nối giữa hai bên liên lạc được bắt đầu bởi giao thức bắt tay

Trang 25

cấu trúc, chức năng khác nhau và trao đổi theo thứ tự nhất định được xác địnhtrước Giao thức bắt tay sẽ thiết lập những thuật toán mã hóa và khóa chủ giữa haibên liên lạc để thiết lập kênh truyền an toàn Những thông điệp trong giao thức bắttay được trao đổi ở dạng không mã hóa cho đến khi bộ mã pháp chung được đàmphán xong giữa hai bên liên lạc (bộ mã pháp này chứa trong thông điệp

ChangeCipherSpec) Sau khi thông điệp ChangeCipherSpec được thực hiện xong thì giao thức ChangeCipherSpec Protocol sẽ được kích hoạt và khi đó dữ liệu sẽ

được mã hóa bởi bộ mã pháp chung đã chọn

Mỗi kết nối SSL/TLS được bắt đầu bằng giai đoạn bắt tay bắt buộc, ngay cảkhi phiên kết nối nhanh được yêu cầu Trong phiên kết nối nhanh cho phép sử dụnglại những cài đặt mật mã đã được thiết lập trong phiên liên lạc trước đó Mặc dùvậy, những cài đặt mật mã này sẽ được sử dụng lại dựa trên khóa chủ mới mà đượcđồng ý bởi hai bên liên lạc Phiên kết nối nhanh thực hiện quá trình bắt tay rút gọn.Nếu hai bên liên lạc muốn thiết lập những cài đặt mật mã mới trên kênh an toàn đãđược thiết lập sẵn thì giai đoạn bắt tay sẽ trở nên phức tạp hơn và khi đó diễn ra

quá trình đàm phán - Renegotiation Quá trình đàm phán đã gây ra rất nhiều lổ

hổng bảo mật trong giao thức SSL/TLS, dẫn tới những cuộc tấn công nghiêm trọnglên SSL/TLS trong quá khứ và vì vậy giai đoạn này bị vô hiệu hóa theo mặc định

Giao thức con thứ ba của giai đoạn bắt tay là giao thức cảnh báo Alert Protocol, đây là giao thức đưa ra những thông báo lỗi Các thông báo lỗi này đưa ra

cảnh báo về những vấn đề liên quan sẽ được diễn ra, trường hợp thông báo lỗinghiêm trọng thì kết nối sẽ bị ngắt và tất cả các tham số mật mã cũng như khóa chủ

sẽ mất hiệu lực Thông báo close_notify chính là thông báo lỗi nghiêm trọng dẫn tới

việc đóng phiên kết nối, hủy bỏ tất cả những tham số phiên kết nối và không có khảnăng phục hồi phiên

Quá trình bắt tay được mô tả bằng sơ đồ trong hình 1.6:

Trang 26

Hình 1.6 Giai đoạn bắt tay trong TLS 1.0 1.2.3.1 Giao thức bắt tay

Giao thức bắt tay bao gồm một tập hợp các thông điệp có cấu trúc và chứcnăng khác nhau được trao đổi theo thứ tự như trên hình 1.6 và nội dung nêu trongbảng 1.3 Các thông điệp này có thể được mở rộng và thay đổi trong những phiênbản mới của giao thức TLS (ở đây là giao thức TLS 1.0)

Trang 27

Bảng 1 3 Nội dung các thông điệp trong giao thức bắt tay

ClientHello Đây thông điệp đầu tiên của giai đoạn bắt tay, chứa thông

tin về các tham số như: các mã pháp, phiên bản SSL/TLScao nhất hỗ trợ, thuật toán nén (nếu có)

SeverHello Chứa thông tin về bộ mã pháp, phiên bản SSL/TLS và

thuật toán nén dữ liệu đã được chọn bởi hai bên liên lạc.Hơn nữa, thông điệp này còn chứa định danh phiên liênlạc mới hoặc cũ theo yêu cầu từ máy trạm

Certificate Có thể được gửi bởi máy chủ hoặc máy trạm và là một

thông điệp tùy chọn Thông điệp này chứa chứng chỉ sốcủa bên gửi (chứa dạng khóa tương ứng, ví dụ khóa côngkhai của thuật toán RSA), trung tâm xác thực CA, chứngchỉ tự ký từ hạ tầng khóa công khai X509

SeverKeyExchange Được gửi từ phía máy chủ chứa những giao thức trao đổi

khóa tới cho phía máy trạm lựa chọn:

CertificateRequest Được gửi từ phía máy chủ yêu cầu chứng chỉ số từ máy

trạm, để xác thực máy trạm liên lạc Đây là một thôngđiệp tùy chọn

SeverHelloDone Được gửi đi từ phía máy chủ để thông báo rằng quá trình

trao đổi/chấp nhận khóa ở máy chủ đã hoàn thành và máychủ sẽ đợi thông điệp trả lời từ phía máy trạm để tiếp tụcquá trình

ClientKeyExchange Phụ thuộc vào bộ mã pháp đã được chọn giữa hai bên

liên lạc mà thông điệp này có thể chứa một tiền khóa chủPreMasterSecret được mã hóa bởi hệ mật RSA hoặc các

Trang 28

tham số máy chủ yêu cầu cho quá trình thỏa thuận khóa.CertificateVerity Nội dung thông điệp là giá trị băm của chứng chỉ đã được

gửi từ phía máy trạm trong thông điệp Certificate trước

đó Để bảo đảm tính toàn vẹn chứng chỉ số của máy trạm

đã gửi tới máy chủ

Finished Kết thúc giai đoạn bắt tay Sau khi nhận thông điệp này

thì cả hai bên liên lạc đã sẵn sàng để trao đổi dữ liệu

1.2.3.2 Giao thức trao đổi mã pháp

Giao thức ChangeCipherSpec Protocol chứa một thông điệp duy nhất ChangeCipherSpec có nội dung là mã pháp và các tham số mật mã đã được lựa

chọn từ hai bên liên lạc Thông điệp này cũng thông báo cho bên nhận rằng bên gửi

sẽ chuyển sang bảo vệ dữ liệu bởi những những tham số và mã pháp đã chọn

1.2.3.3 Giao thức cảnh báo

Giao thức Alert Protocol được sử dụng để thông báo lỗi và mức độ của

những lỗi này trong giai đoạn bắt tay Phân loại lỗi chia thành hai loại khác nhau:

 Cảnh báo - Warning;

 Nghiêm trọng - Fatal

Trong khi những lỗi cảnh báo có thể được bỏ qua thì những lỗi nghiêm trọng

sẽ dẫn tới việc ngừng ngay hoạt động phiên liên lạc hiện thời và làm mất hiệu lựcđịnh danh của phiên liên lạc Sự vô hiệu hóa định danh phiên liên lạc này chỉ ảnhhưởng tới nỗ lực kết nối lại phiên liên lạc trong tương lai

Thông điệp cảnh báo Alert Message trong giao thức cảnh báo được đóng gói

bởi giao thức bản ghi và được bảo vệ với thông số, thuật toán thỏa thuận hiện thời.Cảnh báo nghiêm trọng sẽ đóng kết nối phiên hiện thời, quá trình kết nối nhanhphiên liên lạc sẽ bị vô hiệu hóa vì vậy để tiếp tục liên lạc thì cả hai bên phải đưa racác tham số mật mã mới

Trang 29

Một cảnh báo đặc biệt là cảnh báo đóng kết nối (close_notify, định danh là

0) Để tránh sự cắt ngắn phiên trên kênh truyền thông không sử dụng nhưng cònsống (được thiết lập và đang chạy phiên SSL/TLS) thì cả hai bên liên lạc phải đưa

ra thông điệp đóng kết nối Thông báo close_notify cũng cho bên nhận biết rằng

bên gửi sẽ không gửi bất ky thông điệp nào nữa trên kênh truyền và sau khi nhậnđược thông báo này thì bất ky dữ liệu nào nhận được đều bị loại bỏ và có thể coi làmột cuộc tấn công xen giữa

1.2.3.4 Cơ chế trao đổi khóa được xác thực trong giai đoạn bắt tay

Cơ chế trao đổi khóa được xác thực dựa trên hệ mật RSA

Hình 1.7 mô tả những thông điệp được trao đổi giữa hai bên liên lạc trongquá trình trao đổi khóa dựa trên hệ mật RSA

Hình 1.7 Trao đổi khóa được xác thực dựa trên hệ mật RSA trong TLS 1.0 Trong kịch bản này, tiền khóa chủ PreMasterSecret được chọn bởi máy trạm

và được mã hóa bởi hệ mật RSA trước khi gửi đi (mã hóa theo tiêu chuẩn Public

Trang 30

Key Cryptography Standards - PKCS#v1.5) Máy chủ không thể can thiệp vào quá

trình tạo tiền khóa chủ PreMasterSecret:

Cơ chế trao đổi khóa được xác thực dựa trên giao thức trao đổi khóa Diffe Hellman tĩnh

Trong cơ chế trao đổi khóa dựa trên giao thức trao đổi khóa Diffe Hellman tĩnh, hai bên liên lạc phải đưa ra một chứng chỉ chứa giá trị công khai hoặc ít nhất phía máy chủ phải đưa ra một chứng chỉ với giá trị công khai trong giao thức Diffe Hellman của chính nó và trường hợp này phía máy trạm sẽ chọn một giá trị đối với mỗi phiên liên lạc Khóa được thỏa thuận trong giao thức Diffe Hellman được sử dụng như tiền khóa chủ PreMasterSecret Các tham số khóa trong những chứng chỉ khóa công khai Diffe Hellman là tĩnh và được đưa ra từ hai bên liên lạc, điều này

khác với cách chọn tiền khóa chủ PreMasterSecret được đưa ra từ phía máy trạm

Rõ ràng cả hai bên liên lạc phải đưa ra những giá trị để thực hiện trao đổi khóa dựa

trên giao thức Diffe Hellman có sẵn (số modulo và phần tử sinh) Hình 1.8 mô tả

những thông điệp giao thức bắt tay dựa theo sự trao đổi khóa dựa trên DH:

Trang 31

Hình 1.8 Trao đổi khóa được xác thực dựa trên DH trong TLS 1.0

Cơ chế trao đổi khóa được xác thực dựa trên giao thức DH động

Trao đổi khóa được xác thực dựa trên giao thức DH động trong quá trình bắttay được minh họa trên hình 1.9:

Trang 32

Hình 1.9 Trao đổi khóa được xác thực dựa trên DH động trong TLS 1.0

Đối với cơ chế trao đổi khóa được xác thực dựa trên giao thức DH động

trong giai đoạn bắt tay thì thông điệp ServerKeyExchange được thực hiện bắt buộc.

Các tham số mật mã được mã hóa bởi khóa trong chứng chỉ số (khóa công khaiRSA hoặc chuẩn chữ kí số DSS) Các tham số mật mã của giao thức DH động cầnthiết được gửi cùng với một chữ ký số để bảo vệ tính toàn vẹn trong thông điệp

ServerKeyExchange Máy trạm sẽ gửi đáp trả các tham số DH công khai trong thông điệp ClientKeyExchange nhưng không có chữ ký số bảo vệ tính toàn vẹn Khóa thỏa thuận DH được sử dụng như tiền khóa chủ PreMasterSecret

Cả hai bên liên lạc đều tham gia vào quá trình sinh tiền khóa chủ

Trang 33

bằng cách kiểm tra danh sách các nhóm hợp lệ thông qua những phần tử sinh và sốmodulo.

1.2.3.5 Giai đoạn bắt tay nhanh trong phiên kết nối nhanh

Giai đoạn bắt tay nhanh trong SSL/TLS được thực hiện khi phía máy trạmmuốn nối lại một phiên đã đóng (phiên kết nối nhanh) và được mô tả như tronghình 1.10:

Hình 1.10 Giai đoạn bắt tay nhanh trong TLS 1.0

So với giai đoạn bắt tay đầy đủ trong hình 1.6 thì các thông điệp thỏathuận/trao đổi khóa đã bị cắt bớt đi, bởi vì cả hai bên đều đã biết khóa chủ bí mật

MasterSecret dựa trên việc liên kết với định danh phiên session id trước đó Với khóa chủ có sẵn và các giá trị ngẫu nhiên mới trong hai thông điệp ClientHello và ServerHello.

Trang 34

Máy chủ sẵn sàng cho phiên kết nối nhanh bằng cách trả lại cho máy trạm

định danh phiên session id trong thông điệp ServerHello Nếu máy chủ không thể

hoặc không sẵn sàng để thực hiện một phiên kết nối nhanh thì nó gửi trả lại một

định danh phiên session id mới trong thông điệp ServerHello - điều này dẫn tới quá

trình bắt tay đầy đủ

1.2.3.6 Hàm giả ngẫu nhiên

Hàm giả ngẫu nhiên – Viết tắt là PRF, được sử dụng để tăng tính bí mật và làmột phần quan trọng trong quá trình sinh khóa chủ và nguyên liệu khóa trong bộgiao thức SSL/TLS Trong TLS 1.0 hàm giả ngẫu nhiên dựa trên hai hàm băm MD5

và SHA-1 để thực hiện tính giá trị mã xác thực thông báo HMAC (các giá trị đầu ragiả ngẫu nhiên) Cấu trúc PRF được định nghĩa như sau:

PRF (secret, label, seed) = P_MD5 (S1, label + seed) XOR

P_SHA−1(S2, label + seed);

L_S = length in bytes of secret;

L_S1 = L_S2 = ceil (L_S / 2);

S1 = secret [0 L_S1];

S2 = secret [L_S2 L_S];

Cấu trúc PRF chứa ba giá trị đầu vào:

 Một giá trị bí mật S: trong hàm PRF giá trị bí mật S được chia thành hai giá trị nhỏ hơn là S1 và S2 có độ dài như nhau và bằng một nửa độ dài của S Trường hợp độ dài (tính theo byte) của S là lẻ thì byte cuối cùng của S1 sẽ là byte đầu tiên của S2;

 Một nhãn định danh;

 Một giá trị mầm seed

Hoạt động của hàm PRF được mô tả trong hình 1.11:

Trang 35

h 1.11 Hàm giả ngẫu nhiên trong TLS 1.0

Những hàm mở rộng P_MD5 và P_SHA-1 có tác dụng mở rộng giá trị bímật Hoạt động cốt lỗi chính là sự tính toán HMAC lặp với ba chuỗi dữ liệu đầu vào:

P_hash (secret, seed) = HMAC_hash( secret, A(1) + seed) +

HMAC_hash(secret, A(2) + seed) + HMAC_hash(secret, A(3) + seed) + Where + indicates concatenation

A( ) is defined as:

A(0) = seed

A(i) = HMAC_hash (secret, A(i −1))

Trang 36

Hình 1.12 Hàm mở rộng

Sự tính toán HMAC được lặp cho đến khi hết khối lượng dữ liệu cần xácthực Đối với dữ liệu có độ dài không phải là bội của độ dài giá trị băm thì phần dư

sẽ bị bỏ đi

Ví dụ: một lần lặp HMAC_MD5 đơn sẽ trả về dữ liệu đầu ra 128 bits, tức là

16 byte Nếu 100 bytes được yêu cầu thì hàm phải được gọi 7 lần dẫn đến 112 bytesđầu ra (7*16 = 112), trong đó 12 byte trong lần lặp thứ 7 bị bỏ đi

1.2.3.7 Tính khóa chủ bí mật

Khóa chủ bí mật MasterSecret có nguồn gốc từ tiền khóa chủ PreMasterSecret (được tạo ra trong quá trình bắt tay) và các giá trị ngẫu nhiên của máy trạm và máy chủ chứa trong các thông điệp ClientHello và ServerHello Mỗi khóa chủ bí mật MasterSecret có độ dài thực là 48 byte Việc tính toán khóa chủ bí mật MasterSecret được thực hiện bởi hàm PRF với đầu vào là tiền khóa chủ

Trang 37

PreMasterSecret, nhãn master secret, các giá trị ngẫu nhiên của máy trạm và máy

chủ

Master_secret = PRF (pre_master_secret, “master secret”,

ClientHello.random + ServerHello.random) 1.2.3.4 Quá trình chia nhỏ khóa chủ và sinh các khóa con

Sau khi tính toán xong thì khóa chủ bí mật MasterSecret bị chia nhỏ thành

bốn khóa khác nhau và hai giá trị khởi tạo ban đầu IVs Quá trình này được thựchiện trong cấu trúc sau:

To generate the key material, compute

Key_block = PRF(Security Parameters Master_secret,

“key expansion”, Security Parameters.server_random + Security Parameters.client_random ) ; until enough output has been generated Then the key_block is partitioned as

follows:

client_write_MAC_secret [Security Parameters hash_size]

server_write_MAC_secret [Security Parameters hash_size]

client_write_key [Security Parameters key_material_length]

server_write_key [Security Parameters key_material_length]

client_write_IV [Security Parameters IV size]

server_write _IV [Security Parameters IV size]

Dễ thấy trong cấu trúc trên các giá trị ngẫu nhiên là Security Parameters.server_random và Security Parameters.client_random được lưu trữ trong phiên kết nối chứa trong các tham số an toàn SecurityParameters SecurityParameters.hash_size là kích cỡ đầu ra của hàm băm được sử dụng trong

xác thực thông điệp Giá trị khởi tạo ban đầu IVs chỉ có giá trị khi mã khối được sửdụng Toàn bộ quá trình sinh khóa được mô tả trong hình 1.13:

Trang 38

Hình 1.13 Quá trình sinh khóa trong TLS 1.0

1.3 Cách thức hoạt động và thuật toán trong giao thức TLS

1.3.1 Cách thức hoạt động của giao thức TLS

TLS không phải là một giao thức đơn lẻ mà là một tập các thủ tục đã được chuẩnhoá để thực hiện các nhiệm vụ bảo mật sau:

Xác thực server: Cho phép người sử dụng xác thực được server muốn kết

nối Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắnrằng certificate và public ID của server là có giá trị và được cấp phát bởi một CA(certificate authority) trong danh sách các CA đáng tin cậy của client Điều này rất

Trang 39

người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng làserver mà họ định gửi đến không.

Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn

kết nối Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xemcertificate và public ID của server có giá trị hay không và được cấp phát bởi một

CA trong danh sách các CA đáng tin cậy của server không Điều này rất quan trọngđối với các nhà cung cấp Ví dụ như khi một ngân hàng định gửi các thông tin tàichính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh củangười nhận

Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được mã

hoá trên đường truyền nhằm nâng cao khả năng bảo mật Điều này rất quan trọngđối với cả hai bên khi có các giao dịch mang tính riêng tư Ngoài ra, tất cả các dữliệu được gửi đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế

tự động phát hiện các xáo trộn, thay đổi trong dữ liệu (đó là các thuật toán băm –hash algorithm)

Hình 1.14 Cách thức hoạt động của giao thức TLS

Trang 40

1.3.2 Các thuật toán dùng trong giao thức TLS

Các thuật toán mã hoá và xác thực của TLS được sử dụng bao gồm:

- DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá

- MD5 (Message Digest algorithm) được phát thiển bởi Rivest

- RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mãhoá dữ liệu được Rivest, Shamir, and Adleman phát triển

- RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuậttoán RSA

- RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng choRSA Data Security

- SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chínhphủ Mỹ sử dụng

Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake) Họ

sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịchTLS

Ngày đăng: 10/03/2020, 14:46

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[4] Christopher Mayer. 20 year of SSL/TLS Research An Analysis Of The Internet’s Security Foundation (2014) Sách, tạp chí
Tiêu đề: 20 year of SSL/TLS Research An Analysis Of The Internet’s Security Foundation
[5] How Heartbleed Works: The Code Behind the Internet’s Security Nightmare. (2014) Sách, tạp chí
Tiêu đề: How Heartbleed Works
[6] Daniel Bleichenbacher, Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS #1,1998 Sách, tạp chí
Tiêu đề: Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS #1
[7] Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN, 2016.Website: https://sweet32.info/ Sách, tạp chí
Tiêu đề: Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN
[8] Amit Sethi, Sweet32: Time to retire 3DES?, November 21, 2016 Sách, tạp chí
Tiêu đề: Sweet32: Time to retire 3DES
[9] Hanno B¨ock , Juraj Somorovsky, and Craig Young , Of Bleichenbacher’s Oracle Threat (ROBOT), December 2017 Sách, tạp chí
Tiêu đề: Of Bleichenbacher’s Oracle Threat (ROBOT)
[10] The ROBOT Attack, 2017,Website: https://robotattack.org/ Sách, tạp chí
Tiêu đề: The ROBOT Attack
[3] William Stallings. Cryptogaphy and Network Security – Principles and Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w