Tải bản đầy đủ (.docx) (96 trang)

NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ AN TOÀN CỦA GIAO THỨC SSLTLS, ỨNG DỤNG TRONG BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.27 MB, 96 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ
AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNG DỤNG TRONG
BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH
Ngành: An toàn thông tin
Mã số: 7.48.02.02

Sinh viên thực hiện:
Trần Văn Dũng
Lớp: AT10C
Người hướng dẫn :
ThS. Nguyễn Thanh Sơn
Cục QLMMDS & KĐSPMM

Hà Nội, Năm 2018


Chương 3. Đề xuất ứng dụng OpenSSL

GVHD:ThS. Nguyễn Thanh Sơn

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP



NGHIÊN CỨU MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ
AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNG DỤNG TRONG
BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH
Ngành: An toàn thông tin
Mã số: 7.48.02.02

Sinh viên thực hiện:
Trần Văn Dũng
Lớp: AT10C
Người hướng dẫn :
ThS. Nguyễn Thanh Sơn
Cục QLMMDS & KĐSPMM

SVTH: Trần Văn Dũng – AT10C
2


Chương 3. Đề xuất ứng dụng OpenSSL

GVHD:ThS. Nguyễn Thanh Sơn

Hà Nội, Năm 2018

SVTH: Trần Văn Dũng – AT10C
3


LỜI CẢM ƠN
Trong thời gian làm đồ án tốt nghiệp, em đã nhận được nhiều sự giúp đỡ, đóng góp

ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè.
Em xin gửi lời cảm ơn chân thành đến ThS. Nguyễn Thanh Sơn - Cục QLMMDS
& KĐSPMM người đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình làm đồ án tốt
nghiệp.
Em cũng chân thành cảm ơn các thầy cô giáo trong Học Viện Kỹ Thuật Mật mã nói
chung, các thầy cô trong Khoa An Toàn Thông Tin nói riêng đã dạy dỗ cho em kiến thức
về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết
vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập.
Cuối cùng em, xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo điều kiện,
quan tâm, giúp đỡ em trong suốt quá trình học tập và hoán thành đồ án tốt nghiệp.

Em xin chân thành cảm ơn!

Hà Nội, ngày 25 tháng 05 năm 2018.
Sinh viên
Trần Văn Dũng

4


TÓM TẮT
Được thiết kế bởi Netscape bao gồm các cơ chế bảo mật trong các sản phẩm trình
duyệt để tạo ra truyền thông an toàn trên mạng, SSL/TLS hiện đang là giao thức bảo mật
được sử dụng phổ biến trên Internet nhất là trong các hoạt động thương mại điện tử. Ban
đầu, SSL được thiết kế kết hợp cùng với giao thức HTTP được sử dụng bởi các Web
server và browser, nhưng bây giờ nó đã là một thành phần quan trọng trong mọi loại
truyền thông Internet bảo mật. Việt Nam đang trên đường hội nhập với nền công nghệ
thông tin thế giới, các hoạt động giao dịch trên mạng ở Việt Nam cũng sẽ diễn ra sôi nổi,
khi đó vấn đề bảo mật trở nên quan trọng, việc triển khai SSL/TLS là điều cần thiết. Cho
đến hiện nay có rất nhiều phương pháp bảo mật như DES, RSA,… Nhưng một trong số

đó, bộ giao thức SSL/TLS là một phương pháp được sử dụng phổ biến nhất trong bảo mật
trên internet.Trong đồ án này, em nghiên cứu một số biện pháp nâng cao độ an toàn của
giao thức SSL/TLS, ứng dụng trong bảo mật thông tin mạng máy tính. Em hy vọng rằng
với đồ án tốt nghiệp này sẽ đem đến cái nhìn cụ thể hơn về SSL/TLS và bảo mật mạng,
tầm quan trọng của nó cũng như ứng dụng trong thực tế.

5


MỤC LỤC

DANH SÁCH HÌNH VẼ

DANH SÁCH BẢNG BIỂU
BẢNG CHÚ GIẢI MỘT SỐ CỤM TỪ VIẾT TẮT
CA

Certificate Authority (Tổ chức cấp chứng chỉ)

Client

Máy khách

HTTP

HyperText Transfer Protocol (Giao thức truyền siêu văn bản)

MAC

Message Authentication Code (Mã xác thực thông điệp)


Server

Máy chủ

SSL

Secure Sockets Layer (Khe cắm an toàn)

TLS

Transport Layer Security (Bảo mật tầng giao vận)

6


IETF
TCP/IP

Internet Engineering Task Force
Transfer Control Protocol/Internet Protocol

MỞ ĐẦU
SSL (Secure Sockets Layer) được Netscape phát triển vào năm 1994, và nhanh
chóng trở thành một giao thức được sử dụng rộng rãi cho các ứng dụng và server cần vận
chuyển dữ liệu an toàn qua mạng Internet. Giao thức HTTPS mà ta thường thấy ngày nay
khi truy cập Facebook, Google, Youtube… chính là sự kết hợp giữa SSL và HTTP. Vì
SSL là giao thức độc quyền nên vào năm 1999 IETF đã chuẩn hóa SSL 3.1 thành TLS 1.0
(được quy định trong RFC 2246). Mặc dù SSL và TLS (Transport Layer Security) có
nhiều điểm tương đồng, nhưng vẫn có những khác biệt khiến chúng không thể hoạt động

chung với nhau. SSL và TLS có các version sau:
• SSL 1.0 (không còn sử dụng)
• SSL 2.0 (không khuyến khích sử dụng trong môi trường thực tế)
• SSL 3.0
• TLS 1.0 (SSL 3.1)
• TLS 1.1
• TLS 1.2
• TLS 1.3
SSL đảm bảo tính riêng tư, tính toàn vẹn và chứng thực thông qua các thuật toán
mã hóa và hash đã đề cập trong bài viết Tổng quan về công nghệ VPN. SSL nằm giữa
tầng application và tầng transport trong mô hình OSI, và sử dụng TCP làm giao thức vận
chuyển nhằm truyền các gói tin một cách tin cậy.

7


Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còn
của một tổ chức, một công ty hay doanh nghiệp. Với sự phát triển nhanh chóng của công
nghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầu
hết sức cấp thiết về sự an toàn và bảo mật. Cho đến hiện nay có rất nhiều phương pháp
bảo mật như DES, RSA,… Nhưng một trong số đó, bộ giao thức SSL/TLS là một phương
pháp được sử dụng phổ biến nhất trong bảo mật trên internet. Từ nhận thức và các kiến
thức đã được học trong Học Viện Kỹ Thuật Mật Mã em đã chọn đề tài “NGHIÊN CỨU
MỘT SỐ BIỆN PHÁP NÂNG CAO ĐỘ AN TOÀN CỦA GIAO THỨC SSL/TLS, ỨNG
DỤNG TRONG BẢO MẬT THÔNG TIN MẠNG MÁY TÍNH ” để nghiên cứu thực tế
và viết thành đồ án này. Với những hiểu biết còn hạn chế và thời gian thực tế quá ngắn
ngủi, với sự giúp đỡ của các thầy cô giáo , em hy vọng sẽ giúp mọi người hiểu được phần
nào bộ giao thức SSL/TLS và ứng dụng nó trong bảo mật mạng internet.

Bài viết được chia làm 3 chương:

Chương 1. Tổng quan về bộ giáo thức SSL/TLS. Chương này sẽ giới thiệu về bộ
giáo thức SSL/TLS (định nghĩa về bộ giao thức SSL/TLS, tại sao sử dụng SSL/TLS, lịch
sử ra đời của SSL/TLS) và Cấu trúc, nguyên lý hoạt động của bộ giao thức SSL/TLS.
Chương 2. Một số vấn đề về an toàn đối với bộ giao thức SSL/TLS. Chương này
giới thiệu một số tấn công đã biết đồi với bộ giao thức SSL/TLS và một số giải pháp tùy
biến các tham số, nguyên thủy mật mã nhằm nâng cao độ an toàn của giao thức.
Chương 3. Nghiên cứu bộ thư viện mật mã OpenSSL và đề xuất ứng dụng trong
bảo mật thông tin trên mạng máy tính. Chương này sẽ giới thiệu tổng quan về bộ thư viện
mật mã OpenSSL và đề xuất ứng dụng trong bảo mật thông tin trên mạng máy tính
(Demo phương pháp tấn công HTTP và giải pháp phòng chống và triển khai SSL)
Bài viết này đã được hoàn thành với sự tận tình hướng dẫn, giúp đỡ của ThS.
Nguyễn Thanh Sơn và các Thầy cô trong trong khoa An Toàn Thông Tin.
Em xin chân thành cảm ơn!

8


Chương 1. TỔNG QUAN VỀ BỘ GIAO THỨC SSL/TLS

1.1. Giới thiệu về bộ giao thức SSL/TLS
1.1.1. SSL/TLS là gì?
SSL được viết tắt của từ Secure Socket Layer, là tiêu chuẩn của công nghệ bảo
mật, truyền thông mã hoá giữa máy chủ Web server và trình duyệt (browser). Tiêu chuẩn
này hoạt động và đảm bảo rằng các dữ liệu truyền tải giữa máy chủ và trình duyệt của
người dùng đều riêng tư và toàn vẹn. SSL hiện tại cũng là tiêu chuẩn bảo mật cho hàng
triệu website trên toàn thế giới, nó bảo vệ dữ liệu truyền đi trên môi trường internet được
an toàn.
TLS được viết tắt của từ Transport Layer Security, là sự kế thừa của SSL và do đó
TLS bao gồm rất nhiều cải tiến và sửa lỗi trên SSL. SSL đã được giới thiệu vào đầu
những năm 1990 và ba phiên bản đã được đưa lên SSL 3.0. Sau đó, vào năm 1999, phiên

bản SSL tiếp theo xuất hiện dưới tên TLS 1.0. Hiện tại, phiên bản mới nhất là TLS 1. 2.
SSL là một cũ có rất nhiều lỗi bảo mật đã biết và do đó dễ bị tấn công như đã biết, như tấn
công POODLE.Phiên bản mới nhất của TLS có các bản sửa lỗi cho các cuộc tấn công này
trong khi nó cũng hỗ trợ các tính năng và thuật toán mới. Vì vậy, đối với các ứng dụng
cần bảo mật tốt hơn, nên sử dụng phiên bản TLS mới nhất thay vì sử dụng giao thức SSL
cũ.
1.1.2. Tại sao sử dụng SSL/TLS
Ngày nay việc bảo mật thông tin là yếu tố quan trọng để quyết định sự sống còn
của một tổ chứng, một công ty hay doanh nghiệp.Với sự phát triển nhanh chóng của công
nghệ đã mang lại nhiều tiện ích cho người dùng nhưng đồng thời cũng đặt ra một nhu cầu
hết sức cấp thiết về sự an toàn và bảo mật. Cho đến hiện nay có rất nhiều phương pháp
bảo mật như DES, RSA,… Nhưng một trong số đó, bộ giao thức SSL/TLS là một phương
pháp được sử dụng phổ biến nhất trong bảo mật trên internet.
Việc truyền các thông tin nhạy cảm trên mạng rất không an toàn vì những vấn đề sau:
• Bạn không thể luôn luôn chắc rằng bạn đang trao đổi thông tin với đúng đối tượng
cần trao đổi
• Dữ liệu mạng có thể bị chặn, vì vậy dữ liệu có thể bị một đối tượng thứ ba khác
đọc trộm, thường được biết đến như attacker
• Nếu attacker có thể chặn dữ liệu, attacker có thể sửa đổi dữ liệu trước khi gửi nó
đến người nhận
9


SSL giải quyết các vấn đề trên. SSL giải quyết vấn đề đầu tiên bằng cách cho phép
một cách tùy chọn mỗi bên trao đổi có thể chắc chắn về định danh của phía đối tác trong
một quá trình gọi là authentication (xác thực). Một khi các bên đã được xác thực, SSL
cung cấp một kết nối được mã hóa giữa hai bên để truyền bảo mật các message. Việc mã
hóa trong quá trình trao đổi thông tin giữa hai bên cung cấp sự riêng tư bí mật, vì vậy mà
giải quyết được vấn đề thứ hai. Thuật toán mã hóa được sử dụng với SSL bao gốm hàm
băm mã hóa, tương tự như một checksum. Nó đảm bảo rằng dữ liệu không bị thay đổi

trong quá trình truyền dẫn. Hàm băm mã hóa giải quyết vấn đề thứ ba, tính toàn vẹn dữ
liệu.
Chú ý rằng, cả xác thực và mã hóa đều là tùy chộn, và phụ thuộc vào cipher suites
(các bộ mã hóa) được đàm phán giữa hai đối tượng.
Một ví dụ rõ ràng nhất mà trong đó bạn nên sử dụng SSL là trao đổi thông tin giao
dịch qua mạng (e-commerce). Trong trao đổi e-commerce, thât dại đột khi giả ddinjhj
rằng bạn có thể chắc chắn về định danh của server mà bạn đang trao đổi thông tin. Ai đó
có thể ễ dàng tại ra một Website giả hứa hẹn cách dịch vụ tuyệt vời, chỉ để cho bạn nhập
vào đó số tài khoản. SSL cho phép bạn, client,xác thực về định danh của server. Nó cũng
cho phép server xác thực định danh của client, mặc dù trong các giao tác Internet, việc
này hiếm khi được làm.
Một khi client và server đã hài lòng với định danh của mỗi bên đối tác. SSL cũng
cấp tính bảo mật và tính toàn vẹn thông qua các thuật toán mã hóa mà nó sử dụng. Điều
này cho phép các thông tin nhạy cảm, như số tài khoản, được truyền đi một cách an toàn
trên Internet.
Trong khi SSL cung cấp tính xác thực, tính bảo mật và toàn vẹn dữ liệu, nó không
cũng cấp non-repudiation (tính không từ chối). Non-repudiation có nghĩa là khi một đối
tượng gửi đi một message, thì sau đó không thể phù nhận việc mình đã gửi message đó.
Khi một chữ kí số tương đương được liên kết với một message, việc trao đổi này sau đó
có thể được chứng minh. SSl một mình nó không cung câp non-repudiation
1.1.3. Lịch sử ra đời của SSL/TLS
Như chúng ta đã biết có hai giao thức bảo mật quan trọng lớp vận chuyển (Layer
Transport) có tầm quan trọng cao nhất đối với sự bảo mật của các trình ứng dụng trên
Web: đó là hai giao thức SSL và TLS.
Nói chung, có một số khả năng để bảo vệ bằng mật mã lưu lượng dữ liệu HTTP. Ví
dụ, vào những năm 1990, tập đoàn CommerceNet đã đề xuất S-HTTP mà về cơ bản là
10


một cải tiến bảo mật của HTTP. Một phần thực thi của S-HTTP đã làm cho có sẵn công

cộng trong một phiên bản được chỉnh sửa của trình duyệt Mosaic NCSA mà những người
dùng phải mua (trái với trình duyệt Mo NCSA "chuẩn" có sẵn công cộng và miễn phí trên
Internet).
Tuy nhiên, cùng thời điểm Netscape Communication đã giới thiệu SSL và một giao
thức tương ứng với phiên bản đầu tiên của Netscape Navigator, Trái với tập đoàn
CommerceNet, Netscape Communications đã không tính phí các khách hàng của nó về
việc thực thi giao thức bảo mật của nó. Kết quả, SSL trở thành giao thức nổi bật để cung
cấp các dịch vụ bảo mật cho lưu lượng dữ liệu HTTP 1994 và S-HTTP lặng lẽ biến mất.
Cho đến bây giờ, có ba phiên bản của SSL và bốn phiên bản dành cho TLS.
1. SSL 1.0: được sử dụng nội bộ chỉ bởi Netscape Communications. Nó chứa một
số khiếm khuyết nghiêm trọng và không bao giờ được tung ra bên ngoài.
2. SSL 2.0: được kết nhập vào Netscape Communications 1.0 đến 2.x. Nó có một
số điểm yếu liên quan đến sự hiện thân cụ thể của cuộc tấn công của đối tượng trung gian.
Trong một nỗ lực nhằm dùng sự không chắc chắn của công chúng về bảo mật của SSL,
Microsoft cũng đã giới thiệu giao thức PCT (Private Communication Technology) cạnh
tranh trong lần tung ra Internet Explorer đầu tiên của nó vào năm 1996.
3. Netscape Communications đã phản ứng lại sự thách thức PCT của Microsoft
bằng cách giới thiệu SSL 3.0 vốn giải quyết các vấn đề trong SSL 2.0 và thêm một số tính
năng mới. Vào thời điểm này, Microsoft nhượng bộ và đồng ý hỗ trợ SSL trong tất cả các
phiên bản phần mềm dựa vào TCP/IP của nó (mặc dù phiên bản riêng của nó vẫn hỗ trợ
PCT cho sự tương thích ngược).
Thông số kỹ thuật mới nhất của SSL 3.0 đã được tung ra chính thức vào tháng 3
năm 1996. Nó được thực thi trong tất cả các trình duyệt chính bao gồm ví dụ Microsoft
Internet Explorer 3.0 (và các phiên bản cao hơn), Netscape Navigator 3.0 (và các phiên
bản cao hơn), và Open. Như được thảo luận ở phần sau trong chương này, SSL 3.0 đã
được điều chỉnh bởi IETF TLS WG. Thực tế, thông số kỹ thuật giao thức TLS 1.0 dẫn
xuất từ SSL 3.0
4. Theo mặc định, TLS 1.1 và TLS 1.2 được kích hoạt khi Windows Embedded
Compact 7 dựa trên thiết bị được cấu hình là một khách hàng bằng cách sử dụng cài đặt
trình duyệt. Giao thức bị vô hiệu hoá khi Windows Embedded nén 7-dựa thiết bị được cấu

hình như một máy chủ web.

11


5. TLS 1.3 mới đã được hoàn thành vào ngày 21 tháng 3 năm 2018 . Phần thú vị
cho cộng đồng WordPress và khách hàng ở đây tại Kinsta là TLS 1.3 bao gồm rất nhiều
cải tiến về bảo mật và hiệu suất. Với bản cập nhật giao thức HTTP / 2 vào cuối năm 2015
và bây giờ TLS 1.3 vào năm 2018, các kết nối được mã hóa hiện đã an toàn hơn và nhanh
hơn bao giờ hết.
1.2. Cấu trúc, nguyên lý hoạt động của bộ giao thức SSL/TLS
1.2.1. Kiến trúc giao thức SSL/TLS
Cấu trúc của SSL và giao thức SSL tương ứng được minh họa trong hình 1
(Cấu trúc SSL và giao thức SSL). Theo hình này, SSL ám chỉ một lớp (bảo
mật) trung gian giữa lớp vận chuyển (Transport Layer) và lớp ứng dụng
(Application Layer). SSL được xếp lớp lên trên một dịch vụ vận chuyển định
hướng nối kết và đáng tin cậy, chẳng hạn như được cung cấp bởi TCP. Về khả
năng, nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy
ý dựa vào TCP chứ không chỉ HTTP. Thực tế, một ưu điểm chính của các giao
thức bảo mật lớp vận chuyển (Transport layer) nói chung và giao thức SSL
nói riêng là chúng độc lập với ứng dụng theo nghĩa là chúng có thể được sử
dụng để bảo vệ bất kỳ giao thức ứng dụng được xếp lớp lên trên TCP một
cách trong suốt. Hình 1 minh họa một số giao thức ứng dụng điển hình bao
gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và POP3. Tất cả chúng có thể
được bảo vệ bằng cách xếp lớn chúng lên trên SSL (mẫu tự S được thêm vào
trong các từ ghép giao thức tương ứng chỉ định việc sử dụng SSL). Tuy nhiên,
chú ý rằng SSL có một định hướng client-server mạnh mẽ và thật sự không
đáp ứng các yêu cầu của các giao thức ứng dụng ngang hàng.

12



Cấu trúc của SSL và giao thức SSL

Hình 1. Cấu trúc của SSL
Tóm lại, giao thức SSL cung cấp sự bảo mật truyền thông vốn có ba đặc tính cơ bản:


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.
Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công phân
tích lưu lượng. Ví dụ, bằng cách xem xét các địa chỉ IP nguồn và đích không được mã hóa
và các số cổng TCP, hoặc xem xét lượng dữ liệu được truyền, một người phân tích lưu
lượng vẫn có thể xác định các bên nào đang tương tác, các loại dịch vụ đang được sử
dụng, và đôi khi ngay cả dành được thông tin về các mối quan hệ doanh nghiệp hoặc cá
nhân. Hơn nữa, SSL không ngăn các cuộc tấn công có định hướng dựa vào phần thực thi
TCP, chẳng hạn như các cuộc tấn công làm tràn ngập TCP SYN hoặc cưỡng đoạt session.

Để sử dụng sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên kia đang sử
dụng SSL. Nói chung, có ba khả năng để giải quyết vấn đề này:

13





Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet Asigned Numbers

Authority (IANA). Trong trường hợp này, một số cổng riêng biệt phải được gán
cho mọi giao thức ứng dụng vốn sử dụng SSL.
• Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương lượng các tùy
chọn bảo mật như là một phần của giao thức ứng dụng (bây giờ được chỉnh sửa đôi
chút).
• Sử dụng một tùy chọn TCP để thương lượng việc sử dụng một giao thức bảo mật,
chẳng hạn như SSL trong suốt giai đoạn thiết lập nối kết TCP thông thường.
Sự thương lượng dành riêng cho ứng dụng của các tùy chọn bảo mật (nghĩa là khả
năng thứ hai) có khuyết điểm là đòi hỏi mọi giao thức ứng dụng được chỉnh sửa để hiểu
tiến trình thương lượng. Ngoài ra, việc xác định một tùy chọn TCP (nghĩa là khả năng thứ
ba) là một giải pháp tốt, nhưng đó không được thảo luận nghiêm túc cho đến bây giờ.
Thực tế, các số cổng riêng biệt đã được dành riêng và được gán bởi IANA cho mọi giao
thức ứng dụng vốn có thể chạy trên SSL hoặc TLS (nghĩa là khả năng thứ nhất). Tuy
nhiên, hãy chú ý việc sử dụng các số cổng riêng biệt cũng có khuyết điểm là đòi hỏi hai
nối kết TCP nếu client không biết những gì mà server hỗ trợ. Trước tiên, client phải nối
kết với cổng an toàn và sau đó với cổng không an toàn hay ngược lại. Rất có thể các giao
thức sau này sẽ hủy bỏ phương pháp này và tìm khả năng thứ hai. Ví dụ, SALS (Simple
Authentication và Security Layer) xác định một phù hợp để thêm sự hỗ trợ xác thực vào
các giao thức ứng dụng dựa vào kết nối. Theo thông số kỹ thuật SALS, việc sử dụng các
cơ chế xác thực có thể thương lượng giữa client và server của một giao thức ứng dụng đã
cho.
Các số cổng được gán bởi IANA cho các giao thức ứng dụng vốn chạy trên
SSL/TLS được tóm tắt trong bảng 1 và được minh họa một phần trong hình 1. Ngày nay,
"S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất quán vào các từ ghép của các giao
thức ứng dụng tương ứng (trong một số thuật ngữ ban đầu, S được sử dụng và được thêm
tiền tố một cách không nhất quán và một số từ ghép).


Bảng 1. Các số cổng được gán cho các giao thức ứng dụng chạy trên TLS/SSL.
Từ khóa
Nsiiop
https

Cổng
261
443

Mô tả
Dịch vụ tên IIOP trên TLS/SSL
HTTP trên TLS/SSl
14


Smtps
Nntps
Ldaps
Ftps-data
Ftps
Tenets
Imaps
Pop3s

465
563
636
989
990

992
994
995

SMTP trên TLS/SSL
NNTP trên TLS/SSL
LDAP trên TLS/SSL
FTP (dữ liệu) trên TLS/SSL
FTP (Điều khiển) trên TLS/SSL
TELNET trên TLS/SSL
IRC trên TLS/SSL
POP3 trên TLS/SSL

Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và duy trì
thông tin trạng thái ở một trong hai phía của session. Các phần tử thông tin trạng thái
session tương ứng bao gồm một session ID, một chứng nhận ngang hàng, một phương
pháp nén, một thông số mật mã, một khóa mật chính và một cờ vốn chỉ định việc session
có thể tiếp tục lại hay không, được tóm tắt trong bảng 2. Một session SSL có thể được sử
dụng trong một số kết nối và các thành phần thông tin trạng thái nối kết tương ứng được
tóm tắt trong bảng 3. Chúng bao gồm các tham số mật mã, chẳng hạn như các chuỗi byte
ngẫu nhiên server và client, các khóa mật MAC ghi server và client, các khóa ghi server
và client, một vector khởi tạo và một số chuỗi. Ở trong hai trường hợp, điều quan trọng
cần lưu ý là các phía giao tiếp phải sử dụng nhiều session SSL đồng thời và các session có
nhiều nối kết đồng thời.

Bảng 2. Các thành phần thông tin trạng thái Session SSL
Thành Phần
Session ID

Mô tả

Định danh được chọn bởi server để nhận
dạng một trạng thái session hoạt động hoặc
có thể tiếp tục lại.

Peer certificate

Chứng nhân X.509 phiên bản 3 của thực thể
ngang hàng.
15


Compression
method

Thuật toán dừng để nén dữ liệu trước khi
mã hóa

Cipher spec

Thông số của các thuật toán mã hóa dữ liệu
và MAC
Khóa mật 48-byte được chia sẻ giữa client
và server.
Cờ vốn biểu thị session có thể được sử dụng
để bắt đầu các nối kết mới hay không.

Master secret
Is resumable

Bảng 3. Các thành phần thông tin trạng thái nối kết SSL

Thành Phần
Ngẫu nhiên
server và
client
Khóa mật
MAC ghi
server
Khóa mật
MAC ghi
client
Khóa ghi
server
Khóa ghi
client
Initialization
vector

Số chuỗi

1.

Mô tả
Các chuỗi byte được chọn bởi server và
client cho mỗi nối kết.
Khóa mật được sử dụng cho các hoạt động
MAC trên dữ liệu được ghi bởi server.
Khóa mật được sử dụng cho các hoạt động
MAC trên dữ liệu được ghi bởi client.
Khóa được sử dụng cho việc mã hóa dữ liệu
bởi server và giải mã bởi client

Khóa được sử dụng để mã khóa dữ liệu bởi
client và giải mã bởi server.
Trạng thái khởi tạo cho một mật mã khối
trong chế độ CBC. Trường này được khởi
tạo đầu tiên bởi SSL Handshake Player. Sau
đó, khối text mật mã sau cùng từ mỗi bản
ghi được dành riêng để sử dụng vởi bản ghi
sau đó.
Mỗi phía duy trì các số chuỗi riêng biệt cho
các thông báo được truyền và được nhận cho
mỗi nối kết.

Giao thức SSL Record
SSL Record Protocol cung câp 2 dịch vụ cho kết nối SSL:
• Confideniality (tính cẩn mật): Handshake Protocol định nghĩa 1 khóa bí mật được
chia sẽ, khóa này được sử dụng cho mã hóa quy ước các dữ liệu SSL.
• Message integrity (tính toàn vẹn thông điệp): Handshake protocol cũng định nghĩa
1 khóa bí mật được chia sẻ, khóa này được sử dụng để hình thành MAC (mã xác
thực message).
16


Hình sau sẽ chỉ ra toàn bộ hoạt động của SSL Record
Protocol. SSL Record Protocol nhận message ứng dụng sắp được
tuyền đi, phân mảnh dữ liệu thành nhiều block, nén dữ liệu 1 cách
tùy chọn, áp dụng vào một MAC, mã hóa, thêm vào header, và
truyền khối kết quả thu được trong 1 segment TCP. Dữ liệu nhận
được được giải mã, kiểm tra, giải nén, sắp xếp lại và phân phối đến
người sử dụng ở lớp cao hơn.


Hình 2. Hoạt động của SSL Record Protocol

Bước đầu tiên là phần mảnh. Mỗi message của lớp bên trên được
phân mảnh thành các block, mỗi block là byte (16384 byte) hoặc ít
hơn.
Tiếp theo, nén được áp dụng 1 cách tùy chọn. Nén phải là không
mất mát thông tin và có thể không làm tăng chiều dài nội dung nhiều
hơn 1024 byte (Dĩ nhiên, người ta mong muốn nén làm co lại dữ liệu
hơn là nới rộng dữ liệu. Tuy nhiên, với những block ngắn, có thể, do
định dạng quy ước, thuật toán nén thực sự làm cho output dài hơn
input). Trong SSLv3 ( cũng như phiên bản hiện tại của TLS), không

17


có thuật toán nén nào được chỉ rõ, vì vậy thuật toán nén mặc định là
null.
Bước xử lí kế tiếp theo là tính toán MAC (mã xác thực message)
trên dữ liệu đã được nén. Để thực hiện cần dùng đến 1 khóa bí mật
được chia sẻ. Phép tính được định nghĩa như sau:
Hash(MAC_write_secret||pad_2||hashI(MAC_write_secret||pad_1||
seq_num||SSLCompressed.type||SSLCompressed.legth||
SSLCompressed.fragment))
Trong đó:
• || : phép nối/ hoặc.
• MAC_write_secret: khóa bí mật được chia sẻ.
• Hasd: thuật toán băm mã hóa, MD5 hoặc SHA-1.
• Pad_1: byte 0x36 (00110110) được lặp lại 48 lần (384 bit) cho MD5 và 40 lần (320
bit) cho SHA-1.
• Seq_num: sequence number cho message này.

• SSLCompressed.type: giao thức ở lớp trên được dùng để xử lí phân mảnh này.
• SSLcompressed.length: chiều dài của phân mảnh đã được nén.
• SSLCompressed.fragment: phân mảnh đã được nén (nếu nén không được dùng,
phần mảnh ở dạng plaintext).
Chú ý rằng, cái này tương tự như thuật toán HMAC. Điểm
khác biệt alf 2 phần đệm (pad) được || trong SSLv3 và được XOR
trong HMAC. Thuật toán MAC trong SSLv3 được dựa trên bàn
ohacs thảo Internet ban đầu cho HMAC. Phiên bản gần nhất của
HMAC được định nghĩa trong RFC 2104, sử dụng XOR.
Kế tiếp, message đã nén cộng thêm MAC được mã hóa theo
phương pháp mã hóa đối xứng. Mã hóa có thể không làm tăng
chiều dài nội dung hơn 1024 byte, vì vậy chiều dài tổng cộng không
vượt quá + 2048. Các thuật toán mã hóa sau được cho phép:
Bảng 4. Các thuật toán mã hóa
Block cipher
hóa khối)
T
h
u

(Mã
K
í
c
18

Stream cipher (Mã
hóa luồng)
T
K

h
í
u
c



t
t
o
á
n

A
E
S

I
D
E
A

R
C
2
4
0
D
E
S

4
0
D
E
S
3
D

h
t
h
ư

c
k
h
ó
a
1
2
8
,
1
9
2
,
2
5
6
1

2
8


t
t
o
á
n

R
C
4
4
0

R
C
4
1
2
8

4
0

4
0

5

6
1
6
19

h
t
h
ư

c
k
h
ó
a
4
0

1
2
8


E
S
F
o
r
t
e

z
z
a

8
8
0

Fortezza có thể được sử dụng trong mục tiêu mã hóa smart card.
Với mã hóa stream (luồng), meassge đã nén cộng thêm MAC
được mã hóa. Chú ý rằng MAC được tính toán trước hi mã hóa xảy
ra và MAC được mã hóa cùng với plaintext hoặc là plaintext đã nén.
Với mã hóa block (khối), Mac có thể được đệm thêm trước
khi mã hóa. Phần đệm thêm (padding) có dạng gồm nhiều byte đệm
được theo sau bởi 1 byte chỉ rõ chiều dài của phần đệm. Tổng số
lượng đệm vào là lượng nhỏ nhất sao cho tổng kích thước dx liệu
được mã hóa (plaintext + MAC + padding) là 1 bội số của chiều dàu
khối mã hóa, Ví dụ, plaintext (hoặc text đã nén nếu nén được dùng)
là 58 byte, với MAC là 20 byte (dùng SHA-1), được mã hóa với
chiều dài bội của 8,1 byte đệm được thêm vào.
Bước cuối cùng của xử lí SSL Record Protocol là gắn thêm vào 1
header, bao gồm các mục sau:
• Content Type (8 bit): giao thức lớp trên được dùng để xử lí phân mảnh đi kèm.
• Major Version (8 bit): chỉ ra phiên bản SSL tối đa được dùng. Ví dụ, SSLv3, giá trị
này là 3
• Minor Version (8 bit): chỉ ra phiên bản tối thiểu được dụng . Ví dụ, SSLv3, giá trị
này là 0
• Compressed Length (16 bit): chiều dài theo byte của phân mảnh plaintext (hoặc
chiều dài theo byte cyar phân mảnh đã nén nếu nén được dùng). Giá trị lớn nhất là
+ 2048.

Các loại nội dung được định nghĩa là change_cipher_spec,
alert, handshake, và application_data. Ba cái đầu tiên là các giao
thức đặc trưng_- SSL, được bàn đến trong phần kế tiếp. Chú ý rằng
20


không có sự khác biệt nào được tạo ra giữa các ứng dụng (như
HTTP…) có thể dùng SSL, nội dung dữ liệu được tạo ra bởi các ứng
dụng đó thì không trong suốt đối với SSL.
+

Byte
0

Byte
s 1-4

Byte
s 5..
(m1)
Byte
s m..
(p-1)
Byte
s p..
(q-1)

B
yt
e

+
0
C
on
te
nt
ty
pe

Byte +1

Byte
+2

Version
(
M
aj
or
)

Length
(Minor)

15..8

0x14 20

7..0


Protocol message

MAC (optional)
Padding (block ciphers only)

Content types
Hex Dec

Byte
+3

T
y
p
e
c
h
a
n
g
e
21

Versions
Major
Version

Minor
version


Versio
n Type

3

0

SSLv3


0x15 21
0x16 22

0x17 23

2.

C
ip
h
er
S
p
e
c
A
le
rt
H
a

n
d
s
h
a
k
e
A
p
pl
ic
at
io
n

3

1

TLS
1.0

3

2

TLS
1.1

3


3

TLS
1.2

Giao thức SSL change cipher spec
Giao thức SSL Change Cipher Spec là giao thức đơn giản nhất
trong ba giao thức đặc trưng của SSL mà sử dụng giao thức SSL
Record. Giao thức này bao gồm một message đơn 1 byte giá trị là 1.
Mục đích chính của message này là sinh ra trạng thái tiếp theo để
gán vào trạng thái hiện tại, và trạng thái hiện tại cập nhật lại bộ mã
hóa để sử dụng trên kết nối này.

22


+

B
yt
e
+
0
20

Byte
0

Byte

+2

Version

Byte
s 1-4

(
M
aj
or
)
C
C
S
pr
ot
oc
ol
ty
pe

Byte
s5

3.

Byte +1

Byte

+3

Length
(Minor)

15..8

7..0

Giao thức SSL Alert
Giao thức SSL Alert được dùng để truyền cảnh báo liên kết
SSL với đầu cuối bên kia. Như những ứng dụng khác dử dụng SSL,
alert messages được nén và mã hóa, được chỉ định bởi trạng thái
hiện tại.
Mỗi message trong giao thức này gồm 2 bytes. Byte đầu tiên
giữ giá trị cảnh báo (1) hoặc nguy hiểm (2) để thông báo độ nghiêm
ngặt của message. Nếu mức độ là nguy hiểm, SSL lập tức chấp dứt
kết nối. Những kết nối cùng phiên khác vẫn có thể tiếp tục nhưng sẽ
không kết nối nào khác trên phiên này được khởi tạo thêm, Byte thứ
hai chứa một mã chỉ ra cảnh báo đặc trưng. Đầu tiên, chúng ta liệt kê
những cảnh báo đó mà luôn ở mức nguy hiểm (được định nghĩa từ
những thông số SSL):
• Unexpected_mesage: message không thích hợp.
• Bad_record_mac: MAC không chính xác.

23


• Decompression_failure: Việc giải nén nhận input không thích hợp (ví dụ như
không thể giải nén hoặc giải nén lớn hơn độ dài tối đa cho phép).

• Handshake_failure: Bên gửi không thể thương lượng một bộ chập nhận được của
các thông số bảo mật được đưa ra từ những lựa chọn có sẵn.
• Illegal_parameter: Một trường trong một handshake message thì vượt khỏi dãy
hoặc trái với những trường khác
Phần còn lại của cảnh báo thì như sau:
• Close_notify: Thông báo cho bên nhận rằng bên gửi sẽ không gửi thêm message
não nữa trong kết nối này. Mỗi nhóm thì được yêu cầu gửi một close_notify cảnh
báo trước khi kết thúc phần ghi của một kết nối.
• No_certificate: Có thể được gửi để trả lời cho một yêu cầu certificate nếu không
certificate thích hợp nào có sẵn.
• Bad_certificate: certificate nhận được thì không hợp lệ (ví dụ như chứa một chữ
ký không xác minh.
• Unsupported_certificate: Dạng certificate nhận được thì không hỗ trợ.
• Certificate_revoked: Certificate đã bị thu hồi bởi nhà cung cấp.
• Certificate_expired: Certificate đã hết hạn đăng ký.
• Certificate_unknown: Một số phát xinh không nói rõ xuất hiện trong quá trình xử
lý certificate làm cho nó không thể chấp nhận.
+

Byte
0
Byte
s 1-4

Byte
s 5..6
Byte
s 7..

B

yt
e
+
0
21

Byte
+1

Byte +
2

Version
(
M
aj
or
)
le
ve
l

Length
(Min
or)

Desc
riptio
n
MAC (optional)


24

Byte
+3

0

2


(p-1)
Byte
s p..
(p-1)
4.

Padding (block ciphers only)

Giao thức SSL Handshake

25


×