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

Tiểu luận môn Mã hóa an toàn dữ liệu Trình bày công nghệ SSL

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 (219.9 KB, 21 trang )

Trình bày công nghệ SSL
2011
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Khoa Công Nghệ Thông Tin
o0o
BÁO CÁO MÔN HỌC
Tên đề tài: Trình bày công nghệ SSL
Sinh viên thực hiện: Phạm Ngọc Việt
Giáo viên : PGS.TS.Trịnh Nhật Tiến
Hà Nội, tháng 12 năm 2011
1
Trình bày công nghệ SSL
2011
Mục lục
2
Trình bày công nghệ SSL
2011
1. Giới thiệu về SSL
a. Thực trạng vấn đề
Việc kết nối giữa một web browser tới bất kỳ điểm nào trên mạng Internet đi
qua rất nhiều các hệ thống độc lập mà không có bất kỳ sự bảo vệ nào với thông tin
trên đường truyền. Không ai có thể kiểm soát được đườ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 hay không.
Để bảo vệ thông tin mật trên Internet hay bất kỳ mạng TCP/IP nào, SSL đã kết hợp
những yếu tố sau để thiết lập được một giao dịch an toàn:
Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia của
kết nối. Ngược lại, các trang web cũng cần phải kiểm tra tính xác thực của người
sử dụng.
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 “mật” khi nó được truyền qua Internet, dữ
liệu phải được mã hóa để không thể bị đọc được bởi người khác ngoài người gửi


và người nhận.
Toàn vẹn dữ liệu: bảo đảm 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.
Với việc sử dụng SSL, các website có thể cung cấp khả năng bảo mật thông
tin, xác thực và toàn vẹn dữ liệu đến người dùng. SSL được tích hợp sẵn vào các
trình duyệt và web server, cho phép người sử dụng làm việc với các trang web ở
chế độ an toàn. Khi web server sử dụng kết nối SSL tới server, dòng “http” trong
thanh URL sẽ chuyển thành “https”. Một phiên giao dịch sử dụng cổng 443 thay vì
sử dụng cổng 80 như dùng http.
b. Giao thức SSL
SSL (Secure Socket Layer) là một giao thức cho phép bạn truyền đạt thông
tin một cách an toàn qua mạng. SSL là giao thức đa mục đích được thiết kế để tạo
ra các giao tiếp giữa hai chương trình ứng dụng trên một cổng định trước nhằm mã
hoá toàn bộ thông tin gửi/ nhận.
3
Trình bày công nghệ SSL
2011
SSL được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật, an toàn
và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất kỳ, thí dụ
giữa webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi
trong nhiều ứng dụng khác nhau trên môi trường Internet.
Toàn bộ cơ chế và hệ thống mã hoá dùng trong SSL được phổ biến công
khai, trừ khoá phiên (Session key) được sinh ra tại thời điểm trao đổi giữa hai ứng
dụng là ngẫu nhiên và bí mật đối với người quan sát trên mạng máy tính. Ngoài ra,
giao thức SSL còn đòi hỏi ứng dụng chủ phải được chứng thực bởi đối tượng thứ
ba (CA) thông qua chứng chỉ điện tử (digital certificate) dựa trên mật mã công khai
(Elgamal).
Vị trí của SSL trong mô hình OSI
4
Trình bày công nghệ SSL

2011
2. Mục đích của SSL
- Khả năng an toàn: SSL được sử dụng để thiết lập kết nối an toàn giữa hai
nhóm.
- Khả năng tương tác giữa các phần tử: Các nhà lập trình độc lập có thể phát
triển các ứng dụng sử dụng SSL 3.0, sau khi trao đổi các tham số mật mã
mà không phải biết mã chương trình của các ứng dụng khác.
- Khả năng mở rộng: SSL cung cấp một framework, trong đó các phương
pháp mã hoá và mã hoá khóa công khai kết hợp chặt chẽ với nhau.
3. Giao thức SSL
Giao thức SL gồm 2 giao thức con:
o Giao thức SSL Record
o Giao thức SSL Handshake
a. Giao thức SSL Record
SSL sử dụng giao thức bản ghi (Record Protocol) để đóng gói các thông
điệp.
Giao thức bản ghi là một tầng giao thức. Đối với mỗi tầng giao thức nói
chung, một gói dữ liệu sẽ bao gồm các trường độ dài, mô tả và nội dung dữ liệu.
Giao thức bản ghi nhận dữ liệu cần gửi từ tầng trên phân nhỏ thành từng block
(khối), nén dữ liệu, bổ sung dữ liệu kiểm tra, mã hoá và gửi. Khi nhận dữ liệu
về, tiến trình được thực hiện ngược lại: giải mã, kiểm tra, giải nén và sắp xếp lại
rồi gửi lên tầng trên.
Hình 2. Vị trí giao thức Bản ghi trong giao thức SSL
5
Trình bày công nghệ SSL
2011
SSL định nghĩa 4 giao thức tầng cao khác nhau mà Record Layer có thể hỗ trợ:
ChangeCipherSpec protocol (20), Alert protocol (21), Handshake protocol (22),
Application protocol data (23).
b. Giao thức SSL Handshake

SSL Handshake Protocol là phần quan trọng của SSL, nó cung cấp ba dịch
vụ cho các kết nối SSL giữa client và server. Handshake Protocol cho phép
client/server thống nhất về phiên bản giao thức, xác thực mỗi bên bằng cách thi
hành một MAC, thoả thuận về mã hoá và các khoá lập mã cho việc bảo vệ các dữ
liệu gửi đi.
Giao thức bắt tay (Handshake Protocol) bao gồm một dãy các thông điệp được
trao đổi bởi client và server. Hình 8 minh hoạ sự trao đổi các thông điệp handshake cần
thiết để thiết lập một kết nối logic giữa client và server.
Để hiểu kỹ hơn về SSL Handshake, xem phần cơ chế làm việc của SSL.
4. Cơ chế làm việc của SSL
Giao thức SSL sử dụng kết hợp 2 loại mã hóa khóa công khai và mã hóa
khóa bí mật. Sử dụng mã hóa khóa bí mật nhanh hơn rất nhiều so với mã hóa
khóa công khai khi truyền dữ liệu, nhưng mã hóa khóa công khai lại là giải
pháp tốt nhất trong quá trình xác thực. Một giao dịch SSL thường bắt đầu bởi
quá trình “bắt tay” có thể tóm tắt như sau:
1. Client gửi tới server số phiên bản SSL của client, tham số của hệ mã hoá,
sinh dữ liệu ngẫu nhiên (đó là digital signature) và các thông tin khác mà
server cần để thiết lập kết nối với client.
2. Server gửi tới client số phiên bản SSL của server đang dùng, tham số của hệ
mã hoá, sinh dữ liệu ngẫu nhiên và các thông tin khác mà client cần để thiết
lập kết nối với server có dùng SSL. Server cũng gửi chứng chỉ của mình tới
client, nếu client yêu cầu tài nguyên của server mà cần xác thực, thì nó yêu
cầu chứng chỉ của client.
6
Trình bày công nghệ SSL
2011
3. Client sử dụng một số thông tin mà server gửi đến để xác thực server. Nếu
như server không được xác thực thì người dùng được cảnh báo và kết nối
không được thiết lập. Còn nếu như xác thực được server thì phía client thực
hiện tiếp bước 4.

4. Sử dụng các thông tin được tạo ra trong giai đoạn bắt tay ở trên, client (cùng
với sự cộng tác của server và phụ thuộc vào thuật toán được sử dụng) tạo ra
Premaster Secret cho phiên làm việc. Nó mã hoá bằng khoá công khai mà
server gửi đến trong chứng chỉ ở bước 2, tiếp theo gửi tới server.
5. Nếu server có yêu cầu xác thực client (tuỳ chọn trong quá trình bắt tay),
client sẽ ký trên dữ liệu, dữ liệu này là duy nhất đối với quá trình bắt tay và
đều được lưu trữ bởi client và server. Trong trường hợp này, client sẽ gửi cả
dữ liệu được ký, chứng chỉ số của mình cùng với Premaster Secret đã
được mã hoá tới server.
6. Nếu server yêu cầu xác thực client, server cố gắng xác thực client. Nếu
client không được xác thực, phiên làm việc sẽ bị ngắt. Nếu client được xác
thực, server sẽ sử dụng khoá riêng để giải mã Premaster Secret, sau đó tạo
ra Master Secret.
7. Client và server sử dụng Master Secret để tạo ra các Session Key, đó là các
khoá đối xứng được dùng để mã hoá - giải mã các thông tin trong phiên làm
việc và kiểm tra tính toàn vẹn dữ liệu (thay đổi về dữ liệu giữa thời điểm
gửi và nhận).
8. Client gửi thông điệp tới server thông báo rằng các thông điệp tiếp theo sẽ
được mã hoá bằng session key. Sau đó gửi kèm theo thông điệp riêng biệt
xác định quá trình bắt tay phía client đã kết thúc.
9. Server cũng gửi một lời nhắn đến client thông báo rằng các thông điệp tiếp
theo sẽ được mã hóa bằng session key. Sau đó gửi kèm theo thông điệp
riêng biệt xác định quá trình bắt tay phía server đã kết thúc.
7
Trình bày công nghệ SSL
2011
10. Lúc này giai đoạn “bắt tay” đã hoàn thành, và phiên làm việc SSL bắt đầu.
Cả hai phía client và server sẽ sử dụng các session key để mã hoá và giải mã
thông tin trao đổi giữa hai bên, cũng như kiểm tra tính toàn vẹn dữ liệu.
Hình sau minh hoạ sự trao đổi các thông điệp “bắt tay” cần thiết để thiết lập

một kết nối logic giữa client và server:
8
Trình bày công nghệ SSL
2011
Để dễ hiểu ta lấy ví dụ trình bày một phiên làm việc của SSL: Phèo trao đổi
thông tin với Nở.
Phèo chắc chắn rằng mình sẽ nói chuyện với Nở mà không phải là một ai
khác. Phèo sẽ tiến hành xác thực Nở. Nở có một cặp khóa gồm khóa chung và
9
Trình bày công nghệ SSL
2011
khóa riêng. Nở cho Phèo biết trước khóa chung của mình. Phèo tạo ra một
thông điệp ngẫu nhiên (random message) và gửi nó cho Nở.
Nở dùng khóa riêng của mình để mã hóa thông điệp vừa nhận được và gửi
trả lại cho Phèo.
Phèo nhận được thông điệp từ Nở, dùng khóa chung của Nở để giải mã
thông điệp này và so sánh thông điệp vừa giải mã được với thông điệp ngẫu
nhiên đã gửi đi. Nếu giống nhau, Phèo có thể tin chắc rằng mình đang nói
chuyện với Nở.
*) Bản đại diện (digest)
Thay vì phải mã hóa toàn bộ thông điệp nhận được từ Phèo, Nở có thể xây
dựng một bản đại diện cho thông điệp bằng hàm băm một chiều, sau đó mã hóa
bản đại diện này bằng khóa riêng của mình và gửi cho Phèo. Phèo sẽ dùng khóa
chung của Nở để giải mã bản đại diện do Nở gửi tới và tính đại diện cho thông
điệp đã được gửi đi, sau đó so sánh 2 đại diện này, nếu giống nhau, Phèo có thể
tin chắc rằng mình đang nói chuyện với Nở.
Bản đại diện thực chất chỉ là một số nguyên. Hai thuật toán phổ biến được
dùng để tạo đại diện là MD5 băm 128 bit, SHA băm 160 bit. Ai có được bản đại
diện của Phèo cũng không thể nào suy ra được nguyên bản vì bản đại diện này
chỉ là giá trị một chiều. Hai thông điệp khác nhau có bản đại diện khác nhau,

khả năng trùng xấp xỉ bằng 0.
*) Chữ ký điện tử
Theo cách ở trên thì Nở đã kí thông điệp do Phèo gửi tới, nhỡ ai đó thay đổi
thông điệp này thì sao? Vì vậy cần thay đổi như sau:
Phèo -> Nở: Chào! Có phải Nở không?
Nở -> Phèo: Phèo, mình là Nở đây.
{digest[Phèo, mình là Nở đây.] khóa riêng của Nở}
Như bạn thấy Nở không hề kí thông điệp của Phèo. Thay vào đó, Nở sẽ gởi
một mesage khác(không bị mã hóa) và digest của của message này (đã được mã
hóa bằng khóa riêng của Nở) đến cho Phèo. Phèo chỉ tin tưởng vào chính mình.
Phèo dễ dàng thẩm tra Nở bằng cách dùng khóa chung của Nở giải mã digest
nhận được, sau đó tính digest của message nhận từ Nở và so sánh hai digest này
với nhau. Digest mà Nở gởi tới Phèo chính là một chữ kí điện tử. Nó kí cho
message "Phèo, Mình là Nở đây!" để đảm bảo chắc chắn là message này không
10
Trình bày công nghệ SSL
2011
bị ai đó thay đổi gì khi đến Phèo. Nếu thay đổi Phèo sẽ biết ngay qua việc thẩm
tra digest.
*) Trao khóa chung
Nở trao khóa chung của mình cho Phèo bằng cách nào? Bạn hãy xem thử
giao thức sau:
Phèo -> Nở: Xin chào!
Nở -> Phèo: Chào, Mình là Nở. Đây là khóa chung của mình!
Phèo -> Nở: Hãy đưa bằng chứng đi!
Nở -> Phèo: Phèo, Mình là Nở đây!
digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Với cách này thì ai cũng có thể giả mạo Nở và trao khóa chung của họ cho
Phèo, làm cho Phèo tưởng lầm là mình đang nói chuyện với Nở.
Để giải quyết vấn đề này, Phèo và Nở có thể dùng giấy chứng nhận điện tử

*) Giấy chứng nhận điện tử (digital certificate)
Giấy chứng nhận điện tử dùng để chứng nhận khóa chung của một cá nhân
nào đó. Một giấy chứng nhận điện tử thường bao gồm các thứ sau:
+Tên cơ quan cấp giấy chứng nhận (issuer's name)
+ Tên thực thể(entity) được cấp giấy chứng nhận(còn được gọi là đối tượng
subject)
+ Khóa chung của subject
+ Tem thời gian(time-stamps) cho biết thời gian có hiệu lực của giấy chứng
nhận
Chỉ có các cơ quan có thẩm quyền Certificate Authority (thường được gọi tắt
là CA) mới được phép cấp giấy chứng nhận. Giấy chứng nhận được kí bằng
11
Trình bày công nghệ SSL
2011
khóa riêng của người cấp. CA cũng được tổ chức theo dạng cây "hierarchy"
tương tự như domain-name. Dĩ nhiên bạn cũng có thể tạo ra một CA mới cho
riêng cho mình.
Chúng ta hãy xem giao thức mới này:
Phèo -> Nở: Xin chào!
Nở -> Phèo: Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
Phèo -> Nở: Hãy đưa bằng chứng đi!
Nở -> Phèo: Phèo, Mình là Nở đây!
{digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Ai đó dùng giấy chứng nhận của Nở để giả mạo Nở sẽ bị Phèo phát hiện ngay!
Phèo -> Bá Kiến Xin chào
Bá Kiến -> Phèo Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
Phèo -> Bá Kiến Hãy đưa bằng chứng đi!
Bá Kiến -> Phèo ???
Bá Kiến không biết khóa riêng của Nở nên không thể xây dựng được message
để Phèo có thể tin mình là Nở.

*) Trao đổi khóa bí mật (secret-key)
Sau khi Phèo đã xác thực mình đang nói chuyện với Nở, Phèo sẽ gởi cho Nở
một message đã bị mã hóa bằng khóa chung của Nở:
Phèo -> Nở {khóa bí mật}khóa-chung-của-Nở
Bằng cách này, chỉ có Nở mới có thể giải mã message trên và lấy được khóa
bí mật bởi vì chỉ có Nở mới biết được khóa riêng để giải mã. Trao đổi khóa bí
mật bằng công nghệ khóa chung cực kì an toàn. Không một ai ngoại trừ Phèo
và Nở biết được khóa bí mật. Khóa bí mật này còn được biết đến với cái tên là
12
Trình bày công nghệ SSL
2011
khóa phiên(session key). Kể từ đây Phèo và Nở sẽ dùng khóa phiên để trao đổi
dữ liệu cho nhau. Khóa phiên được tạo ra trong mỗi phiên kết nối SSL và hoàn
toàn bí mật(chỉ có Phèo và Nở biết) nên rất an toàn. Công nghệ chuyên chở
khóa phiên bằng khóa chung và dùng khóa phiên như một khóa đối xứng bí mật
để trao đổi dữ liệu cho nhau còn được biết đến với cái tên là mã hóa dùng khóa
lai ghép(hybrid), tức là kết hợp cả hai phương pháp mã hóa dùng khóa đối xứng
và khóa chung-khóa riêng, hay thuật toán mã hóa đối xứng kết hớp với bất đối
xứng.
Đây là giao thức mới:
Phèo -> Nở: Xin chào!
Nở -> Phèo: Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
Phèo -> Nở: Hãy đưa bằng chứng đi!
Nở -> Phèo: Phèo, Mình là Nở đây!
{digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Phèo -> Nở: Ok Nở, Đây là {khóa bí mật}khóa-chung-của-Nở
Nở -> Phèo: {message 1}khóa-bí-mật
Nở -> Phèo: {message 2}khóa-bí-mật

*) Tấn công man-in-the-middle

Giao thức trên chưa phải là an toàn tuyệt đối. Bá Kiến ngồi giữa Phèo và Nở
có thể chơi trò tấn công man-in-the-middle như sau:
Phèo -> Bá Kiến: Xin chào!
Bá Kiến -> Phèo: Xin chào!
Nở -> Bá Kiến: Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
Bá Kiến->Phèo: Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
13
Trình bày công nghệ SSL
2011
Phèo -> Bá Kiến: Hãy đưa bằng chứng đi!
Bá Kiến -> Nở: Hãy đưa bằng chứng đi!
Nở -> Bá Kiến: Phèo, Mình là Nở đây!
{digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Bá Kiến -> Phèo: Phèo, Mình là Nở đây!
{digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Phèo -> Bá Kiến: Ok Nở, đây là {khóa bí mật}khóa-chung-của-Nở
Bá Kiến -> Nở: Ok Nở, đây là {khóa bí mật}khóa-chung-của-Nở
Nở -> Bá Kiến: {some message}khóa-bí-mật
Bá Kiến -> Phèo: sửa đổi[{some message}khóa-bí-mật]
Bá Kiến sẽ chuyển tiếp dữ liệu giữa Phèo và Nở cho đến khi họ trao đổi
khóa bí mật. Tại thời điểm này Phèo nghĩ rằng mình đang nói chuyện với Nở
nên tin tưởng hoàn toàn vào các message do Phèo gởi tới. Thực chất không phải
là như vậy. Bá Kiến mặc dù không biết khóa bí mật nhưng hoàn toàn có thể
thêm hoặc sửa đổi gì đó trên các dữ liệu được gởi từ Nở đến Phèo.
*) Mã xác thực thông điệp (MAC)
Để ngăn chặn cuộc tấn công man-in-the-middle trên, Phèo và Nở có thể
dùng thêm mã xác thực thông điệp (Message Authentication code) thường được
gọi tắt là MAC. Thuật toán tạo MAC khá đơn giản:
Code:
MAC = Digest[some message, khóa bí mật]

Bá Kiến không biết khóa bí mật nên không tài nào tính đúng giá trị digest
của message. Thậm chí nếu Bá Kiến có cắt xén random các message thì tỉ lệ
thành công là rất thấp vì dữ liệu digest vô cùng lớn. Ví dụ, nếu dùng MD5,
14
Trình bày công nghệ SSL
2011
Phèo và Nở có thể gởi kèm MAC 128bit trong các message. Bá Kiến cần trúng
giá trị MAC nếu muốn tấn công man-in-the-middle với khả năng thành công là
1/18.446.744.073.709.551.616.
Đây là toàn bộ giao thức:
Phèo -> Nở: Xin chào!
Nở -> Phèo: Chào, Mình là Nở. Đây là giấy chứng nhận của mình!
Phèo -> Nở: Hãy đưa bằng chứng đi!
Nở -> Phèo: Phèo, Mình là Nở đây!
{digest[Phèo, Mình là Nở đây!]}khóa-riêng-của-Nở
Phèo -> Nở: Ok Nở, đây là {khóa bí mật}khóa-chung-của-Nở
{some message, MAC}khóa-bí-mật
5. Tính bảo mật của SSL
Mức độ bảo mật của SSL phụ thuộc chính vào độ dài khoá hay phụ thuộc
vào việc sử dụng phiên bản mã hoá 40bit và 128bit. Phương pháp mã hoá 40bit
được sử dụng rộng rãi không hạn chế ngoài nước Mỹ, phiên bản mã hoá 128bit chỉ
được sử dụng trong nước Mỹ và Canada. Theo luật pháp Mỹ, các mật mã “mạnh”
được phân loại vào nhóm “vũ khí” (weapon) và do đó khi sử dụng ngoài Mỹ (coi
như là xuất khẩu vũ khí) phải được phép của chính phủ Mỹ hay phải được cấp giấy
phép của Bộ Quốc phòng Mỹ (DoD).
Đây là lợi điểm cho quá trình thực hiện các dịch vụ thương mại và thanh
toán điện tử trong Mỹ và các nước đồng minh phương Tây, là điểm bất lợi cho việc
sử dụng các sản phẩm cần có cơ chế bảo mật và an toàn trong giao dịch điện tử nói
chung và thương mại điện tử nói riêng trong các nước khác.
Các phương thức tấn công (hay bẻ khoá) nhằm vào các thuật toán bảo mật

thường dựa trên phương pháp “tấn công vét cạn” (Brute-force attack) bằng cách
15
Trình bày công nghệ SSL
2011
thử-sai miền không gian các giá trị có thể của khoá. Số phép thử-sai tǎng lên khi độ
dài khoá tǎng và dẫn đến vượt quá khả nǎng và công suất tính toán, kể cả các siêu
máy tính hiện đại. Thí dụ, với độ dài khoá là 40bit, thì số phép thử sẽ là
2
40
=1,099,511,627,776 tổ hợp.
Tuy nhiên độ dài khoá lớn kéo theo tốc độ tính toán giảm (luỹ thừa nghịch
đảo) và dẫn đến khó có khả nǎng áp dụng trong thực tiễn. Một khi khoá bị phá,
toàn bộ thông tin giao dịch trên mạng sẽ bị kiểm soát.
Tuy nhiên do độ dài khoá lớn (thí dụ 128, 256 bít), số phép thử-sai trở nên
“không thể thực hiện” vì phải mất hàng nǎm hoặc thậm chí hàng nghìn nǎm với
công suất và nǎng lực tính toán của máy tính mạnh nhất hiện nay.
Ngay từ nǎm 1995, bản mã hoá 40bit đã bị phá bởi sử dụng thuật toán vét
cạn. Ngoài ra, một số thuật toán bảo mật (DES 56bit, RC4, MD4, ) hiện nay cũng
bị coi là không an toàn khi áp dụng một số phương pháp và thuật toán tấn công đặc
biệt. Đã có một số đề nghị thay đổi trong luật pháp Mỹ, nhằm cho phép sử dụng
rộng rãi các phần mềm mã hoá dùng mã 56bit, nhưng hiện nay vẫn chưa được
chấp thuận.
6. Ưu điểm và hạn chế của SSL
a. Ưu điểm
Tính năng mạnh nhất của SSL / TLS là chúng xác định mối quan hệ với các
tầng giao thức khác như thế nào trong hệ thống kiến trúc mạng OSI. Tại mức cao
nhất là phần mềm ứng dụng hoặc các trình duyệt. Chạy phía dưới các ứng dụng
này là giao thức tầng ứng dụng bao gồm Telnet, FTP, HTTP…
Bên dưới nữa là giao thức SSL và các thuật toán mã hoá được sử dụng để kết
nối. Bên dưới SSL là tầng giao vận. Hầu hết các trường hợp đó là TCP/IP. Tuy

nhiên, giao thức SSL là duy nhất, không phụ thuộc vào giao thức mạng. Bởi vì SSL
không phụ thuộc vào các tầng giao thức, cho nên SSL trở thành một nền tảng độc
lập hay là một thực thể mạng độc lập.
16
Trình bày công nghệ SSL
2011
Một sức mạnh khác của SSL là ngăn chặn cách thức tấn công vét cạn. Cách
thức này sử dụng vét cạn để phá khoá trong hệ mã hoá. SSL khắc phục được điều
này bởi cho phép không gian khoá là rất lớn đối với hệ mã hoá được sử dụng. SSL
cung cấp hai mức độ tin cậy: 40 bit và 128 bit tuỳ thuộc khả năng của browser.
SSL 128 bit và SSL 40 bit ý nói độ dài của khoá phiên dùng để mã hoá dữ liệu sau
khi đã định danh và được thiết lập bằng giải thuật khoá công khai (RSA hoặc
Diffie-Hellman). Độ dài của khoá phiên càng lớn thì độ bảo mật càng cao. Hiện
nay SSL 128 bit có độ tin cậy lớn nhất. Theo Elgamal phải mất hàng tỉ năm mới có
thể giải mã được bằng các kỹ thuật hiện nay.
Cách thức tấn công “cổ điển” có thể bị ngăn chặn bởi sử dụng phương pháp
số Nonce (Nonce number). Số này được sinh ngẫu nhiên, được server sử dụng,
Nonce number là một số không thể bị phá khoá.
Giao thức SSL còn bảo vệ chính nó với đối tác thứ 3. Đó là các client xâm
nhập bất hợp pháp dữ liệu trên đường truyền. Client xâm nhập này có thể giả mạo
client hoặc server, SSL ngăn chặn sự giả mạo này bằng cách sử dụng khoá riêng
của server và sử dụng chứng chỉ số. Phương thức bắt tay trong TLS cũng tương tự.
Tuy nhiên, TLS tăng cường sự bảo mật bằng cách cho phép truyền phiên bản giao
thức, số hiệu phiên làm việc, hệ mã hoá và cách thức nén được sử dụng. TLS bổ
xung thêm hai thuật toán băm không có trong SSL.
b. Hạn chế
Giao thức SSL, cũng giống như bất kỳ công nghệ nào, cũng có những hạn
chế. Vì SSL cung cấp các dịch vụ bảo mật, cần quan tâm đặc biệt tới các giới hạn
của nó. Giới hạn của SSL thường là trong ba trường hợp:
Do những ràng buộc cơ bản của bản thân giao thức SSL. Đây là hệ quả của

việc thiết kế SSL và ứng dụng chịu tác động của nó.
Do giao thức SSL cũng thừa kế một vài điểm yếu từ các công cụ mà nó sử
dụng, cụ thể là các thuật toán ký và mã hoá. Nếu các thuật toán này có điểm yếu,
SSL thường không thể khắc phục chúng.
17
Trình bày công nghệ SSL
2011
Do môi trường, trong đó SSL được triển khai, có những thiếu sót và giới hạn.
Mặc dù trong thiết kế đã xét đến mối quan hệ với rất nhiều ứng dụng khác
nhau, SSL rõ ràng được tập trung vào việc bảo mật các giao dịch Web. SSL yêu
cầu một giao thức vận chuyển tin cậy như TCP. Đó là yêu cầu hoàn toàn hợp lý
trong các giao dịch Web, vì bản thân HTTP cũng yêu cầu TCP. Tuy nhiên, điều này
cũng có nghĩa là SSL không thể thực thi mà sử dụng giao thức vận chuyển không
kết nối như UDP. Vì vậy, SSL có thể hoạt động hiệu quả với phần lớn các ứng
dụng thông thường. Và thực tế hiện nay, SSL đang được sử dụng cho nhiều các
ứng dụng bảo mật, bao gồm truyền file, đọc tin mạng, điều khiển truy cập từ xa
Một đặc điểm khác khiến SSL bị lỗi khi hỗ trợ dịch vụ bảo mật đặc biệt như
là Non-repudiation (không chối bỏ). Dịch vụ này ngăn ngừa bên tạo dữ liệu và
bên ký dữ liệu từ chối hay phủ nhận điều mình đã thực hiện. SSL không cung cấp
các dịch vụ non-repudiation, do đó sẽ không phù hợp với các ứng dụng yêu cầu
dịch vụ này.
Điểm yếu của mã hoá SSL còn do phiên làm việc tồn tại quá lâu trong quá
trình bắt tay, khoá phiên được khởi tạo giữa client và server được dùng trong suốt
quá trình kết nối. Khi khoá này còn tồn tại, mỗi khi thông điệp được gửi, tồn tại
một lỗ hổng bảo mật trong kết nối cho phép xâm nhập. Giao thức TLS khắc phục
được lỗi này bằng cách thay đổi khoá cho mỗi phiên làm việc.
Các giao tiếp thực giữa client và server cũng là mục tiêu tấn công vì chúng
lưu trữ các thông điệp giữa hai điểm đầu cuối. Thông điệp trong SSL được mã hoá,
tuy nhiên tại mỗi điểm đầu cuối thông điệp được giải mã, SSL chưa có cơ chế duy
trì sự mã hoá trong bộ nhớ đệm của hệ thống tương ứng.

Vấn đề khác của SSL là khả năng áp dụng đối với người sử dụng trên toàn
cầu. Mặc dù một vài client trên các nước khác có hỗ trợ kiến trúc SSL, nhưng vẫn
còn hạn chế về ranh giới của sự mã hoá. Ranh giới này do chính phủ Mỹ đưa ra, nó
giới hạn số lượng bit được sử dụng trong các hệ mã hoá. SSL có hỗ trợ mã hoá 128
bit trong các phiên giao dịch toàn cầu, nhưng thực tế chỉ sử dụng hệ mã hoá 40 bit.
18
Trình bày công nghệ SSL
2011
Các hạn chế về bảo mật này càng cho phép kẻ tấn công có nhiều cơ hội hơn khi tìm
cách bẻ khoá hệ thống.
Một vài ý kiến lại cho rằng hạn chế lớn nhất của SSL không chỉ ở giao thức
bắt tay, mà tồn tại trong tầng bản ghi của giao thức. Trong quá trình bắt tay, việc
chứng thực giữa client và server thực hiện rất nghiêm ngặt, do dùng chứng chỉ số
và khoá. Tuy nhiên, trong tầng bản ghi, quá trình xác thực không được thực hiện
trong suốt giai đoạn kết nối còn lại. Do không có sự xác thực giữa client và server,
dẫn đến kẻ tấn công có thể mạo danh client hoặc server trong quá trình kết nối.
Nhiều ý kiến cho rằng SSL chỉ giới hạn cho các ứng dụng thương mại điện tử,
điều này là không đúng. Vì các tổ chức tài chính có thể sử dụng SSL để truyền số
PIN, các công ty bảo hiểm sử dụng SSL để truyền dữ liệu khách hàng, các công ty
hoạt động theo mô hình B2B (Bussiness-to-Bussiness) sử dụng SSL xây dựng các
phiên giao dịch giữa các công ty, SSL có thể được sử dụng trong một tổ chức để
truyền dữ liệu trên mạng cục bộ.
Do hạn chế về công nghệ, vẫn còn một số server không thể dùng mã hoá
SSL. Mặc dù ý tưởng mã hoá là quan trọng, tuy nhiên có sự hạn chế trong sức
mạnh của server trong quá trình kiểm tra chữ ký số và thực hiện ký số. Do không
đáp ứng được yêu cầu xử lý, nhiều web server gặp khó khăn trong thực hiện kết
nối SSL. Điều này khó có thể chấp nhận được đối với người sử dụng và khách
hàng.
Các chứng chỉ server tự ký có thể cung cấp bảo mật, nhưng không xác thực.
Một chứng chỉ tự ký không được chứng nhận bởi máy người dùng và không qua

các bước thêm vào sự tin cậy cho chứng chỉ server bằng tay. Theo mặc định, các
máy tính Windows tin tưởng các chứng chỉ server chỉ khi từ các CA chỉ định như
là VeriSign.
Về phía client, thiết lập mặc định cho các browser phổ biến như Internet
Explorer và Nescape không kiểm tra sự thu hồi chứng chỉ và vẫn chấp nhận các
phiên SSL 2.0. Thêm vào đó, các thiết lập mặc định thường cho phép các trang mã
hoá SSL được lưu trong browser cache mà không cần mã hoá.
19
Trình bày công nghệ SSL
2011
7. Các hệ mã hóa sử dụng trong SSL
Giao thức SSL hỗ trợ nhiều hệ mã hoá sử dụng cho các hoạt động chứng thực
server và client, cho quá trình truyền thông chứng chỉ số và trong quá trình thành
lập khoá phiên. Trong các chức năng khác, giao thức SSL Handshake có thể quyết
định cách client và server đàm phán lựa chọn hệ mã hoá sử dụng cho việc chứng
thực, cho quá trình truyền chứng chỉ và cho quá trình thành lập khoá phiên.
Ví dụ các hệ mã hóa:
DES (Data Encryption Standard): Thuật toán mã hoá sử dụng tại Hoa kỳ.
DSA (Digital Signature Algorithm): một phần của chuẩn chứng thực số tại
Hoa kỳ.
KEA (Key Exchange Algorithm): Thuật toán trao đổi khoá tại Hoa kỳ.
MD5 (Message Digest): Thuật toán băm được phát triển bởi Rivest.
RC2-RC4: Hệ mã hoá của Rivest được phát triển cho RSA Data Security.
RSA: Hệ mã hoá khoá công khai cho mã hoá và xác thực (Rivest,
Shamir,Adleman).
RSA key exchange: Thuật toán trao đổi khoá cho SSL dựa trên thuật toán RSA.
SHA-1: Secure Hash Algorithm, thuật toán băm sử dụng tại Hoa kỳ.
SKIPJACK: Thuật toán mã hoá đối xứng cổ điển được cài đặt trong phần cứng
tương thích FORTEZZA, sử dụng tại Hoa kỳ.
Triple-DES.DES: được cài đặt 3 vòng.

ELGAMAL: Hệ mã hóa công khai cho mã hóa và xác thực.
8. Hệ mã hóa Elgamal
Sơ đồ (Elgamal đề xuất năm 1985)
*Tạo cặp khóa (bí mật, công khai) (a, h) :
20
Trình bày công nghệ SSL
2011
Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Z
p
là “khó” giải.
Chọn phần tử nguyên thuỷ g ∈ Z
p
* . Đặt P = Z
p
*, C = Z
p
* Z
p
*.
Chọn khóa bí mật là a ∈ Z
p
* . Tính khóa công khai h ≡ g
a
mod p.
Định nghĩa tập khóa: = {(p, g, a, h): h ≡ g
a
mod p}.
Các giá trị p, g, h được công khai, phải giữ bí mật a.
Với Bản rõ x ∈ P và Bản mã y ∈ C, với khóa k ∈ định nghĩa:
* Lập mã: Chọn ngẫu nhiên bí mật r ∈ Z

p-1
, bản mã là y = e
k
(x, r) = (y
1
, y
2
)
Trong đó y
1
= g
r
mod p và y
2
= x * h
r
mod p
* Giải mã: d
k
(y
1
, y
2
) = y
2
(y
1
a
)
-1

mod p.
Ví dụ * Bản rõ x = 1299.
Chọn p = 2579, g = 2, a = 765. Tính khóa công khai h = 2
765
mod 2579 = 949.
* Lập mã: Chọn ngẫu nhiên r = 853. Bản mã là y = (435, 2369), trong đó
y
1
= 2
853
mod 2579 = 435 và y
2
= 1299 * 949
853
mod 2579 = 2396
* Giải mã: x = y
2
(y
1
a
)
-1
mod p = 2369 * (435
765
)
-1
mod 2579 = 1299.
Độ an toàn
21
×

κ
κ
Trình bày công nghệ SSL
2011
1). Hệ mã hóa Elgamal là không tất định, tức là với một bản rõ x và 1 khóa bí mật a,
thì có thể có nhiều hơn một bản mã y, vì trong công thức lập mã còn có thành phần
ngẫu nhiên r.
2). Độ an toàn của Hệ mật Elgamal dựa vào khả năng giải bài toán logarit rời rạc
trong Z
p
. Theo giả thiết trong sơ đồ, thì bài toán này phải là “khó” giải.
Cụ thể như sau: Theo công thức lập mã: y = e
k
(x, r) = (y
1
, y
2
), trong đó
y
1
= g
r
mod p và y
2
= x * h
r
mod p
Như vậy muốn xác định bản rõ x từ công thức y
2
, thám mã phải biết được r.

Giá trị này có thể tính được từ công thức y
1
, nhưng lại gặp bài toán logarit rời rạc.
22

×