Ngày nay, Internet có thể được dùng để liên lạc điện tử. Những người sử dụng Internet vì mục đích này thường có nhu cầu bảo đảm an toàn cho thông tin liên lạc đó. Thông tin liên lạc an toàn có thể được đảm bảo bằng cách sử dụng kênh an toàn. Một kênh an toàn sẽ cung cấp cho người sử dụng ba tính năng là: chứng thực những người có liên quan trong liên lạc, bảo mật cho thông tin được trao đổi trong liên lạc và bảo đảm tính toàn vẹn của thông tin được trao đổi trong liên lạc.
Trang 1M C L C Ụ Ụ
1 Mở đầu 3
2 SSL(Secure Socket Layer) và TLS (Transport Layer Security) 3
2.1 Lịch sử SSL và TSL 3
2.2 Sự khác nhau giữa SSL và TLS 5
2.3 SSL/TLS làm giao thức bảo mật riêng 6
2.4 Tính năng bảo đảm an toàn của SSL/TLS 6
3 Các thành phần của TLS 7
3.1 TLS Record Protocol 8
3.2 TLS Handshake Protocol 8
3.2.1 Giai đoạn thương lượng: 10
3.2.2 Giai đoạn ứng dụng: 12
4 Các loại tin nhắn giao thức cảnh báo 12
5 Xác thực thông điệp 16
6 Các Cipher Suites cơ bản 17
7 Khả năng cộng tác với SSL 19
8 Tương lai của SSL và TLS 20
9 Các ứng dụng của TLS 21
10 Sử dụng giao thức SSL/TLS 21
10.1 Cài đặt Certificate Services cho Windows 2003 Server 21
10.2 Tạo một yêu cầu Certificate 22
10.3 Gởi yêu cầu certificate 22
10.4 Phát sinh và download 1 Certificate 23
10.5 Cài SSL cho web site 23
10.6 Cấu hình 24
10.7 Cài đặt Apache Webserver hỗ trợ SSL 24
Trang 210.7.2 Biên dịch 24
10.7.3 Start Apache webserver with ssl 25
10.7.4 Cấu hình httpd.conf 25
TÀI LIỆU THAM KHẢO 27
Trang 31 Mở đầu
Ngày nay, Internet có thể được dùng để liên lạc điện tử Những người sửdụng Internet vì mục đích này thường có nhu cầu bảo đảm an toàn cho thông tinliên lạc đó
Thông tin liên lạc an toàn có thể được đảm bảo bằng cách sử dụng kênh
an toàn
Một kênh an toàn sẽ cung cấp cho người sử dụng ba tính năng là: chứng
thực những người có liên quan trong liên lạc, bảo mật cho thông tin được trao
đổi trong liên lạc và bảo đảm tính toàn vẹn của thông tin được trao đổi trong
SSL là một giao thức lập mạng máy tính cung cấp tính năng chứng thực,bảo mật và đảm bảo tính toàn vẹn cho thông tin được trao đổi bởi các phươngtiện sử dụng mạng máy tính
Trang 4Trước đây, SSL được thiết kế bởi tổ chức Netscape Communications vàonăm 1994
SSL phiên bản 1.0 chưa từng được công bố mà chỉ được sử dụng trongnội bộ của Netscape
Phiên bản được ban hành lần đầu tiên, SSL 2.0, thì lại có những nhượcđiểm nghiêm trọng đòi hỏi phải cho ra đời một phiên bản SSL mới
Vào năm 1995, Microsoft đã tiến hành phát triển PCT (một công nghệliên lạc cá nhân) để khắc phục lại những nhược điểm của SSLv2 Đáp lại,Netscape cũng phát triển SSL phiên bản 3.0 để giải quyết nhược điểm SSLv2 vàcung cấp thêm một số tính năng mà PCT không có
Tháng 5 năm 1996, cơ quan Đặc Trách Kỹ Thuật Internet (IETF) đã chophép hai nhóm phụ trách hoạt động TLS tiến hành thực hiện tiêu chuẩn hóa giaothức dạng SSL
TLS 1.0 lần đầu tiên được định nghĩa trong RFC 2246 vào tháng 1 1999
như là một nâng cấp lên phiên bản SSL 3.0 Như đã nêu trong RFC, "sự khácbiệt giữa giao thức này và SSL 3.0 này không đáng kể, nhưng họ đủ quan trọng
mà TLS 1.0 và SSL 3.0 không tương thích." TLS 1.0 bao gồm một phương tiện
mà một TLS thực hiện có thể hạ cấp kết nối đến SSL 3.0
TLS 1.1(SSL 3.2) TLS 1.1 được quy định tại RFC 4.346 trong tháng 4 năm
2006 Đây là một bản cập nhật từ phiên bản 1.0 TLS Sự khác biệt đáng kể trongphiên bản này bao gồm:
Nhập bảo vệ chống lại tấn công Cipher block chaining (CBC)
Các ngầm khởi Vector (IV) được thay thế bằng một IV rõ ràng
Thay đổi trong việc xử lý sai sót padding
Hỗ trợ cho các thông số đăng ký IANA
TLS 1.2 đã được định nghĩa trong RFC 5.246 trong tháng 8 năm 2008 Nó
dựa trên TLS trước đó 1.1 đặc điểm kỹ thuật sự khác biệt chính bao gồm:
Trang 5Sự kết hợp MD5/SHA-1 trong chức năng pseudorandom (PRF) đã đượcthay thế với SHA-256, với một tùy chọn để sử dụng mật mã, bộ quy định PRFs.
Sự kết hợp MD5/SHA-1 trong hash kết thúc tin nhắn đã được thay thế vớiSHA-256, với một tùy chọn để sử dụng thuật toán mã hóa-suite thuật toán băm
và chế độ CCM của mã hóa AES
TLS mở rộng định nghĩa và Advanced Encryption Standard (AES)CipherSuites được thêm vào
Message authentication ad hoc standard
Baseline cipher suites FortezzaIncludes no Fortezza
Trang 62.3 SSL/TLS làm giao thức bảo mật riêng
SSL đã được tạo riêng thành giao thức chỉ dùng cho bảo mật Trong đó,một tầng bảo mật đặc biệt đã được thêm vào kiến trúc của giao thức Internet
Ở dưới cùng là giao thức Internet (IP) chịu trách nhiệm về định tuyến tinnhắn trên mạng Giao thức Kiểm soát Truyền dẫn (TCP) có nhiệm vụ đảm bảo
độ đáng tin cậy cho thông tin liên lạc Phía trên cùng là Giao thức Truyền ĐaVăn Bản (HTTP) có thể xác định được các chi tiết của quá trình tương tác giữacác trình duyệt Web và máy chủ Web
SSL thêm vào tính năng bảo đảm an toàn bằng cách vận hành như mộtgiao thức bảo mật riêng đòi hỏi rất ít sự thay đổi trong các giao thức đã nói trên
và dưới đây Đó là lý do tại sao nó có thể bảo đảm an toàn cho các ứng dụngInternet khác như HTTP(HTTPS), SMTP (SMTPS), NNTP(NNTPS),LDAP(LDAPS), FTP(FTPS), telnet (telnets), IMAP4(IMAPS), POP3(POP3S).
2.4 Tính năng bảo đảm an toàn của SSL/TLS
SSL/TLS được đánh giá là mạnh như các hàm mã hóa bên trong giao thứcnày
Trong phiên bản cuối cùng TLS 1.2 (RFC 5246), thuật toán SHA256 được
sử dụng cho hàm giả ngẫu nhiên (PRF) và HMAC – hàm băm duy nhất theo yếu
tố ký số, bộ mã hóa AES và 3DES đã thay thế cho IDEA và DES cũ
TLS 1.2 có năm thuộc tính mã hóa được thiết kế để dùng cho ký số, mãhóa luồng, mã hóa khối, mã hóa AEAD (authenticated encryption with
Trang 7additional data), mã hóa khóa công cộng tương ứng là: ký số, mã hóa mật mãluồng, mã hóa mật mã khối, mã hóa có chứng thực với dữ liệu bổ sung (AEAD)
và mã hóa khóa công cộng
Sự hỗ trợ mở rộng cho các mật mã mã hóa có chứng thực, được sử dụngchủ yếu cho chế đọ Galois/Counter (GCM) và chế độ CCM của mã hóa AES(Advanced Encryption Standard –Tiêu chuẩn mã hóa cao cấp)
Chương trình cũng thêm định nghĩa các phần mở rộng TLS và các bộ mật
mã AES
Máy khách có thể sử dụng khóa công cộng của cơ quan chứng nhận (CA)
để xác nhận chữ ký số của CA trong chứng nhận máy chủ Nếu có thể xác minhchữ ký số đó thì máy khách sẽ tiếp nhận giấy chứng nhận máy chủ làm chứngnhận hợp pháp được phát hành bởi CA đáng tin
Bảo vệ chống lại sự xuống cấp của giao thức trong phiên bản trước (phiênbản ít an toàn hơn) hoặc bộ mật mã yếu hơn
Đánh số cho tất cả các bản ghi của Ứng dụng với một mã số thứ tự và sửdụng mã số thứ tự này trong các mã chứng thực tin (MAC)
Sử dụng digest của tin nhắn được củng cố thêm bởi một khóa (vì vậy chỉ
có người giữ khóa mới có thể kiểm tra MAC) Cấu trúc HMAC được sử dụngbởi hầu hết các bộ mật mã TLS ciphersuites là được quy định trong RFC 2104(SSLv3 được sử dụng bởi MAC dựa trên cơ sở hàm băm khác)
Tin nhắn hoàn thành quá trình thỏa thuận ("Finished") sẽ gửi một hàmbăm của tất cả các tin nhắn thương lượng được trao đổi mà cả hai bên đầu có thểxem
3 Các thành phần của TLS
Trang 83.1 TLS Record Protocol
3.2 TLS Handshake Protocol
Một máy khách và máy chủ TLS sẽ thương lượng một hoạt động kết nốibằng cách sử dụng thủ tục thương lượng Trong quá trình thương lượng, máykhách và máy chủ sẽ thỏa thuận về các tham số khác nhau được sử dụng đểthiết lập kết nối an toàn (các kết nối trong kênh mã hóa)
Quá trình thương lượng bắt đầu khi một máy khách kết nối với một máychủ yêu cầu kết nối an toàn (https), và trình diễn một danh sách các bộ mật mãđược hỗ trợ (các mật mã và hàm băm)
Từ danh sách của máy khách này, máy chủ sẽ chọn ra mật mã mạnh nhất
và hàm băm mà nó cũng hỗ trợ, sau đó thông báo về quyết định này cho máykhách
Máy chủ sẽ gửi lại bản nhận dạng của nó dưới dạng chứng nhận số Giấychứng nhận này thường có chứa tên máy chủ, các cơ quan chứng nhận (CA)đáng tin cậy, và khóa mã hóa công cộng của máy chủ
Máy khách có thể liên lạc với máy chủ phát hành giấy chứng nhận (tức là
CA đáng tin cậy như đã nói ở trên) và xác nhận rằng chứng nhận mang tính hợp
lệ trước khi tiến hành
Trang 9Để tạo ra các khóa phiên sử dụng cho kết nối an toàn, máy khách cần mãhóa một mã số ngẫu nhiên (RN) với khóa công cộng của máy chủ (PbK), và gửikết quả đến máy chủ Chỉ có máy chủ mới có thể giải mã nó (với khóa riêng củamình (PvK)): thực tế này khiến cho các bên thứ ba không thể xem các phím đóvì chỉ có máy chủ và máy khách mới có thể truy cập vào dữ liệu này Máy khách
sẽ được biết PbK và RN, và máy chủ được biết về PvK cùng RN (sau khi giải
mã tin nhắn của máy khách) Một bên thứ ba chỉ có thể biết RN nếu xâm nhậpđược vào PvK
Từ mã số ngẫu nhiên đã cho, cả hai bên đều tạo ra dữ liệu khóa để phục
vụ cho việc mã hóa cũng như giải mã dữ liệu (tin nhắn)
Điều này sẽ kết thúc quá trình thương lượng và bắt đầu kết nối an toàn,được mã hóa và giải mã với dữ liệu khóa đã tạo cho đến khi kết nối kết thúc
Quá trình thương lượng TLS có chứng thực máy khách
3.2.1 Giai đoạn thương lượng:
Trang 10- Client gửi một tin nhắn mang tên ClientHello để xác định phiên bản cao
nhất của giao thức SSL/TLS mà nó hỗ trợ, một mã số ngẫu nhiên, mộtdanh sách các bộ mật mã và phương pháp nén được hỗ trợ
- Server phản hồi lại bằng tin nhắn ServerHello, bao gồm phiên bản giao
thức được chọn, mã số ngẫu nhiên, bộ mật mã và phương pháp nén từ lựachọn được máy khách đưa ra Máy chủ cũng có thể gửi một phiên id làmphần tin nhắn thực hiện quá trình thương lượng nối tiếp
- Server gửi tin nhắn Certificate (tùy thuộc vào bộ mật mã được chọn).
Server yêu cầu giấy chứng nhận từ máy khách để kết nối có thể được cả
hai bên chứng thực, sử dụng tin nhắn CertificateRequest
- Server gửi tin nhắn ServerHelloDone để cho biết nó đã thực hiện quá
trình thương lượng Client phản hồi bằng tin nhắn Certificate có chứa
giấy chứng nhận của máy khách
- Client gửi tin nhắn ClientKeyExchange mà có thể có chứa
PreMasterSecret, khóa công cộng hoặc không có gì PreMasterSecretđược mã hóa bằng cách sử dụng khóa công cộng của giấy chứng nhận
máy chủ Client gửi tin nhắn CertificateVerify, nó là một chữ ký trên các
tin nhắn trước có sử dụng khóa cá nhân trong giấy chứng nhận của máykhách Chữ ký này có thể được xác nhận bằng cách sử dụng khóa côngcộng của giấy chứng nhận máy khách Điều này sẽ giúp cho máy chủ biếtđược máy khách truy cập vào khóa cá nhân và sở hữu giấy chứng nhận
đó Sau đó, máy khách và máy chủ sẽ sử dụng các số ngẫu nhiên vàPreMasterSecret để tính toán bí mật chung, được gọi là "master secret" (bímật chính) Tất cả các dữ liệu khóa khác được sử dụng cho kết nối nàyđều xuất phát từ bí mật chính này (các giá trị ngẫu nhiên được máy khách
và máy chủ tạo ra), thông qua một “hàm giả ngẫu nhiên” được thiết kếmột cách cẩn trọng
Trang 11- Client gửi một bản ghi mang tên ChangeCipherSpec chủ yếu để cho máy
chủ biết rằng: "Từ bây giờ, mọi điều mà tôi nói với bạn đều sẽ đượcchứng thực (và được mã hóa nếu có thương lượng về điều đó)."
- Client gửi một tin nhắn Finished đã mã hóa, nó có chứa một giá trị băm
và MAC trên các tin nhắn thương lượng trước Server giải mã tin nhắn
Finished của máy khách và xác nhận giá trị băm cùng MAC đó
- Server gửi bản ghi ChangeCipherSpec để cho Client biết " Từ bây giờ,
mọi điều mà tôi nói với bạn đều sẽ được chứng thực (và được mã hóa nếu
có thương lượng về điều đó)."
- Server gửi tin nhắn Finished mã hóa của chính mình Client thực hiện sự
giải mã và xác nhận tương tự
3.2.2 Giai đoạn ứng dụng:
Tại thời điểm này, "quá trình thương lượng" được hoàn tất và giao thức
ứng dụng được kích hoạt Các tin nhắn ứng dụng trao đổi giữa Client và Server
cũng sẽ được mã hóa chính xác như trong thông báo Finished của chúng
4 Các loại tin nhắn giao thức cảnh báo
Trang 12Một trong những cải tiến của TLS so với SSL là trong thủ tục để thông báo
về các cảnh báo bảo mật thực tế và tiềm ẩn Đặc biệt, TLS định nghĩa gần nhưgấp đôi với nhiều mô tả cảnh báo Bảng 1-2 cung cấp danh sách đầy đủ của cácthông báo TLS Nó cũng đánh dấu đó của những cái mới của TLS (với một kýhiệu bên trái cột đầu tiên), và nó nhấn mạnh một thực tế là mô tả cảnh báo 41(NoCertificate) đa bị xoa trong TLS Các đặc điểm kỹ thuật TLS gỡ bỏ cảnh báonày bởi vì, trong thực tế, nó rất khó để thực hiện Diễn giải thành công các cảnhbáo NoCertificate đòi hỏi một trình độ cao về đồng bộ hóa giữa các giao thứccảnh báo và bắt tay (Alert and Handshake protocols), một đồng bộ hóa có nghĩa
là nếu không thì không cần thiết Để loại bỏ các yêu cầu cho đồng bộ hóa này,TLS có clients mà không có giấy chứng nhận phù hợp chỉ đơn giản là trả lại mộtthông báo Giấy chứng nhận sản phẩm nào
0 CloseNotify Bên gửi chỉ ra rõ ràng rằng đó là đóng
kết nối; thông báo đóng có mức độ cảnh báo trầm trọng
10 UnexpectedMessage Bên gửi chỉ ra rằng nó đã nhận được
một thông báo không phù hợp; cảnh báonày luôn luôn gây tràn
20 BadRecord-MAC Bên gửi chỉ ra rằng nó đã nhận được
một tin nhắn với một mã xác thực thông điệp xấu; cảnh báo này luôn luôn gây tràn
21 Decryption-Failed Bên gửi chỉ ra rằng tin nhắn đó đã được
giải mật mã không hợp lệ (ví dụ, nó không phải là một bội số của kích thước khối hoặc có đệm không hợp lệ); cảnh báo này luôn luôn gây tràn
22 RecordOverflow Bên gửi chỉ ra rằng một tin nhắn nó
nhận được mà sau khi giải mã hoặc giải
Trang 13nén, có kích thước hơn 214 + 2048 byte;cảnh báo này luôn luôn gây tràn.
30 DecompressionFailure Bên gửi chỉ ra rằng nó đã nhận được dữ
liệu mà nó không thể giải nén; cảnh báo này luôn luôn gây tràn
40 Hand-ShakeFailure Bên gửi chỉ ra rằng nó đã không thể đàm
42 BadCertificate Bên gửi nhận được một giấy chứng nhận
đã được sửa đổi (ví dụ, chữ ký của nó không thể được xác minh)
43 UnsupportedCertificate Bên gửi nhận được một giấy chứng nhận
của một loại rằng nó không thể hỗ trợ
44 Certificate-Revoked Bên gửi nhận được một giấy chứng nhận
cái mà đã bị thu hồi của cơ quan cấp giấy chứng nhận
45 Certificate-Expired Bên gửi nhận được một giấy chứng nhận
đã hết hạn
46 Certificate-Unknown Bên gửi chỉ ra một vấn đề không xác
định với một giấy chứng nhận nhận được
47 Illegal Parameter Bên gửi chỉ ra rằng nó đã nhận được
một tin nhắn bắt tay với một giá trị tham
số đó là bất hợp pháp hoặc không phù hợp với các thông số khác
Trang 14định hoặc không tin tưởng các cơ quan chứng nhận của một chuỗi giấy chứng nhận nhận được; cảnh báo này luôn luôngây tràn.
49 Access-Denied Bên gửi chỉ ra rằng các bên xác định
trong giấy chứng nhận ngang hàng không có quyền truy cập để tiếp tục đàmphán; cảnh báo này luôn luôn gây tràn
50 DecodeError Bên gửi chỉ ra rằng tin nhắn đã nhận
được không thể được giải mã bởi vì một trường giá trị được ra khỏi phạm vi cho phép hoặc chiều dài tin nhắn được không hợp lệ; cảnh báo này luôn luôn gây tràn
51 DecryptError Bên gửi chỉ ra rằng một hoạt động mật
mã cần thiết để bắt tay đàm phán thất bại
60 ExportRestriction Bên gửi chỉ ra rằng nó phát hiện một
tham số đàm phán không phù hợp với các hạn chế xuất khẩu áp dụng Hoa Kỳ; cảnh báo này luôn luôn gây tràn
70 Protocol-Version Bên gửi chỉ ra rằng nó không thể hỗ trợ
các phiên bản giao thức TLS yêu cầu; cảnh báo này luôn luôn gây tràn
71 Insufficient-Security Bên gửi (luôn luôn là một máy chủ) chỉ
ra rằng nó yêu cầu mật mã dãy phòng antoàn hơn những hỗ trợ của clients; cảnh báo này luôn luôn gây tràn
80 InternalError Bên gửi chỉ ra rằng một lỗi địa phương
để hoạt động và độc lập của giao thức
Trang 15TLS (như là một sự thất bại cấp phát bộ nhớ) làm cho nó không thể tiếp tục; cảnh báo này luôn luôn gây tràn.
90 UserCanceled Bên gửi chỉ ra rằng nó muốn hủy bỏ
việc đàm phán bắt tay vì những lý do khác hơn là lỗi giao thức; tin nhắn này thường là một lời cảnh báo và cần được theo sau bởi một CloseNotify
100 NoRenegotiation Người gửi chỉ ra rằng nó không thể thực
hiện theo yêu cầu ngang hàng để đàm phán lại TLS handshake; cảnh báo này luôn luôn gây tràn
Mô tả các cảnh báo của TLS
Bí mật h-mac là mac viết bí mật xuất phát từ bí mật tổng thể Bảng 1-3 liệt kêcác thông tin đó được bảo vệ