Giao thức SSL/TLS

Một phần của tài liệu Nghiên cứu, nâng cao độ an toàn cho ứng dụng smart otp trong hệ thống ứng dụng phần mềm cung cấp dịch vụ trung gian thanh toán và mobile money (Trang 46 - 52)

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CỦA MẬT KHẨU MỘT LẦN OTP

2.2. Cơ sở mật mã học của mật khẩu sử dụng một lần OTP

2.2.4. Giao thức SSL/TLS

Khi thực hiện trao đổi khóa bí mật, gửi các thông tin giao dịch và mã OTP trên môi trường Internet, giữa ứng dụng và nhà cung cấp dịch vụ phải thiết lập một kết nối an toàn. Giao thức SSL/TLS được sử dụng để thiết lập kết nối đó.

2.2.4.1. Giới thiệu chung về giao thức SSL/TLS

SSL, viết tắt của từ Secure Socket Layer, là một giao thức để mã hóa và bảo mật thông tin liên lạc diễn ra trên Internet, được công bố lần đầu vào năm 1996 bởi nhóm nghiên cứu Netscape. Đến thời điểm hiện tại, SSL đã có ba phiên bản: SSL 1.0 không được công bố do có nhiều khuyết điểm nghiêm trọng, SSL 2.0 được cải tiến từ SSL 1.0, SSL 3.0 là phiên bản mới nhất và đang được cải tiến, bổ sung. SSL là giao thức nằm giữa hai tầng Transport và Application trong mô hình TCP/IP với mục đích đảm bảo dữ liệu được trao đổi giữa máy chủ và trình duyệt được riêng tư, xác thực và tin cậy.

TLS, viết tắt của từ Transport Layer Security, được phát triển dựa trên SSL 3.0.

TLS đã được cải tiến một số điểm như: không còn hỗ trợ hệ mật trên đường cong

Elliptic yếu, hàm băm MD5 và SHA-224 không còn được hỗ trợ, luôn yêu cầu chữ ký số, sử dụng hàm tính khóa bí mật HKDF để thay thế cho hàm PRF,… [17]

Tuy SSL đã được thay thế bởi TLS nhưng SSL vẫn là một thuật ngữ thường được sử dụng khi nhắc tới công nghệ này. SSL/TLS được sử dụng để bảo mật thông tin liên lạc giữa máy khách và máy chủ, nó cũng có thể bảo mật email, các thông tin liên lạc khác.

Tầng thấp nhất của giao thức SSL là tầng SSL Record Protocol, được sử dụng để đóng gói một vài giao thức như: SSL Handshake Protocol, SSL Change Cipher Spec Protocol,…Giao thức SSL Handshake Protocol cho phép máy chủ và máy khách xác thực lẫn nhau, thỏa thuận thuật toán mã hóa và các khóa mật mã trước khi thực hiện truyền dữ liệu.

Hình 2.7. Kiến trúc của SSL

Ngày nay, giao thức SSL/TLS được sử dụng làm cơ sở bảo mật cho các trang web thương mại điện tử, giao dịch trực tuyến như chứng khoán, các trang web đặt vé, đặt phòng trực tuyến,…

Trong hệ thống ứng dụng phần mềm cung cấp dịch vụ Trung gian thanh toán và Mobile Money, giao thức SSL/TLS có vai trò thiết lập một kết nối an toàn giữa thiết bị và nhà cung cấp dịch vụ, thiết lập khóa bí mật K để tạo ra mã OTP.

2.2.4.2. Cách thức hoạt động

a. Giao thức bản ghi (Record Protocol)

Giao thức bản ghi có nhiệm vụ cung cấp các dịch vụ bảo mật cơ bản cho các lớp giao thức cao hơn, bao gồm: giao thức bắt tay, giao thức Change Cipher Spec, giao thức cảnh báo. Giao thức bản ghi sẽ tiếp nhận dữ liệu cần truyền đi từ tầng trên phân nhỏ thành từng mảnh, sau đó sẽ thực hiện nén dữ liệu, bổ sung các dữ liệu kiểm tra, mã hóa và truyền dữ liệu. Khi nhận được dữ liệu gửi đến, quy trình sẽ được thực hiện ngược lại: giải mã, kiểm tra dữ liệu, gỡ nén, sắp xếp lại dữ liệu và gửi lên các tầng trên [18]. Để phân biệt từng loại dữ liệu, SSL sẽ sử dụng header, phần nội dung được thêm vào đầu tin nhắn.

Hình 2.8. Quy trình thực hiện của giao thức bản ghi Bước 1: Phân mảnh:

Dữ liệu nhận được từ các tầng trên sẽ được phân mảnh thành các khối có kích thước nhỏ hơn hoặc bằng 214 byte.

Bước 2: Nén và giải nén:

Tất cả các bản ghi được nén bằng cách sử dụng một hàm nén dữ liệu. Thuật toán nén sẽ dịch từ cấu trúc SSL Plaintext thành cấu trúc SSL Compressed. Hàm nén phải

đảm bảo dữ liệu được bảo toàn, không bị mất và không được làm tăng độ dài dữ liệu quá 1024 byte. Cảnh báo giải nén nghiêm trọng sẽ được đưa ra nếu hàm nén gặp một SSL Compressed có độ dài sau khi nén vượt quá 214 = 16348 byte.

Khi áp dụng mã hóa cho dữ liệu thì chức năng nén sẽ trở nên có ích. Trong trường hợp áp dụng cả nén và mã hóa thì nên áp dụng nén dữ liệu trước khi mã hóa.

Quá trình nén phải đảm bảo điều kiện cấu trúc của SSL Plaintext giống hệt nhau trước khi nén và sau khi giải nén.

Bước 3: Tính toán MAC:

Thực hiện tính toán MAC - mã xác thực thông điệp với mật khẩu trên dữ liệu đã được nén, biến đổi cấu trúc từ SSL Compressed thành cấu trúc SSL Ciphertext.

MAC được tính toán dựa trên hàm băm SHA-1 và MD5. Tin nhắn đã được nén cùng với MAC sẽ sử dụng mã hóa đối xứng để mã hóa. Các khối mật mã đang được sử dụng làm thuật toán mã hóa là: DES(56), DES ba (168), IDEA(128), RC5, Fortezza (80), trong đó các số được đặt bên trong ngoặc là kích thước của khóa.

Đối với mã hóa khối, phần đệm sẽ được thêm vào sau MAC trước khi thực hiện mã hóa. Phần đệm được thêm vào để đảm bảo độ dài của tin nhắn gốc là bội số của độ dài khối của khối mật mã. Phần đệm được thêm bằng cách chèn thêm bit 1 và theo sau là các bit 0 vào cuối tin nhắn. 64 bit cuối cùng của kích thước dữ liệu đệm được dành cho độ dài của tin nhắn gốc. Sau khi thêm phần đệm, ta nhận được dữ liệu có tổng kích thước của tin nhắn gốc, MAC, phần đệm là bội số của chiều dài khối của khối mật mã. Đối với mã hóa luồng, ta sẽ không cần thêm phần đệm mà sử dụng tin nhắn gốc cùng với MAC để mã hóa.

Bước 4: Gắn header:

Quá trình cuối cùng cần xử lý của giao thức bản ghi SSL là gắn header vào đầu dữ liệu đã được mã hóa, bao gồm các thông số:

- Loại nội dung (8 bit): thể hiện giao thức tầng cao hơn được sử dụng để xử lý phân mảnh kèm theo.

- Phiên bản chính (8 bit): phiên bản SSL chính đang được sử dụng. Hiện tại là phiên bản SSL 3.0

- Phiên bản nhỏ (8 bit): phiên bản nhỏ của SSL đang được sử dụng.

- Độ dài đã nén (16 bit): độ dài của văn bản gốc hoặc giá trị đã được nén. Giá trị lớn nhất là 214 + 2048 [18].

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

Giao thức bắt tay được vận hành trên lớp giao thức bản ghi, là một phần quan trọng của giao thức SSL, cung cấp ba dịch vụ cho kết nối giữa máy khách và máy chủ. Giao thức bắt tay cho phép máy khách, máy chủ thống nhất phiên bản giao thức, xác thực lẫn nhau bằng cách hình thành MAC và thỏa thuận về một thuật toán mã hóa, các khóa lập mã trước khi truyền hay nhận dữ liệu.

Giao thức bắt tay bao gồm một loạt các thông điệp được trao đổi giữa hai bên, bao gồm bốn giai đoạn: các thông điệp Hello cho kết nối logic, xác thực máy chủ và trao đổi khóa, xác thực máy khách và trao đổi khóa, kết thúc kết nối bảo mật. Quy trình hoạt động của giao thức bắt tay được mô tả như sau:

- Các thông điệp Hello cho kết nối logic: máy khách gửi một thông điệp Hello đến máy chủ và máy chủ sẽ phải phản hồi lại bằng một thông điệp Hello, nếu không phản hồi sẽ không thể kết nối và xảy ra lỗi. Thông điệp Hello giữa máy chủ và máy khách được sử dụng để thiết lập khả năng nâng cao bảo mật, bao gồm các thuộc tính sau: phiên bản của giao thức, giá trị ngẫu nhiên, mã phiên, bộ mật mã và phương pháp nén.

- Sau các thông điệp Hello, máy chủ thực hiện gửi chứng chỉ cho máy khách nếu cần được xác thực, nếu có thêm yêu cầu thì một thông điệp trao đổi khóa máy chủ sẽ được gửi đi. Sau khi đã được xác thực, máy chủ yêu cầu chứng chỉ từ máy khách nếu máy khách phù hợp với bộ mật mã đã trao đổi. Sau đó, máy chủ thực hiện gửi một tin nhắn thông báo giai đoạn Hello đã hoàn tất.

- Nếu máy chủ yêu cầu chứng chỉ thì máy khách phải gửi chứng chỉ của nó. Sau đó tin nhắn trao đổi khóa của máy khách sẽ được gửi đi. Nội dung của tin nhắn đó phụ thuộc vào thuật toán khóa công khai đã được máy khách, máy chủ thống nhất trong giai đoạn Hello.

- Giai đoạn này, máy khách sẽ gửi một thông báo đặc tả mật mã thay đổi và sao chép Cipher Spec đang chờ xử lý vào Cipher Spec hiện tại. Sau đó, máy khách gửi một thông điệp đã hoàn thành dựa trên các thuật toán, khóa và bí mật mới.

Để đáp lại, máy chủ sẽ gửi thông báo các thông số kỹ thuật mật mã đã thay đổi của nó, chuyển Cipher Spec đang chờ xử lý đến Cipher Spec hiện tại. Lúc này, quá trình bắt tay kết thúc, hai bên có thực hiện trao đổi dữ liệu ứng dụng.

[18]

2.2.4.3. Sự khác biệt của TLS với SSL

So với giao thức SSL, giao thức TLS có một số khác biệt sau:

- Không còn cảnh báo lỗi chứng thư: trong TLS, cảnh báo này là không cần thiết, tuy nhiên máy chủ phải gửi một thông điệp xác nhận không có chứng chỉ.

- TLS có nhiều Alert descriptions hơn SSL: SSL có 12 Alert descriptions, trong khi TLS có 19 descriptions.

- TLS sử dụng HMAC tạo mã xác thực thông điệp: SSL sử dụng hàm băm MD-5, SHA-1, trong khi TLS sử dụng HMAC với nhiều hàm băm khác để tạo mã xác thực thông điệp.

- TLS dùng PRF để tạo “key material”

- Bộ mã hóa: TLS sử dụng chuẩn mã hóa đối xứng AES, còn SSL chỉ sử dụng chuẩn DES, 3DES.

Một phần của tài liệu Nghiên cứu, nâng cao độ an toàn cho ứng dụng smart otp trong hệ thống ứng dụng phần mềm cung cấp dịch vụ trung gian thanh toán và mobile money (Trang 46 - 52)

Tải bản đầy đủ (PDF)

(77 trang)