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

xây dựng chương trình chia sẻ tệp tin qua kênh truyền mật 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 (396.55 KB, 19 trang )

August 18, 2011

[ĐỀ 10 : SSL]

MỞ ĐẦU
Việc kết nối giữa một Web Browser tới bất kỳ điểm nào trên 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 các thông tin trên đường
truyền. Không một ai kể cả người sử dụng hay Web server có bất kỳ 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 mật trên mạng Internet hay bất kỳ mạng
TCP/IP nào, giao thức SSL đã ra đời.
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 (socket 443) nhằm mã hoá toàn bộ thông tin đi hay
đến, mà ngày nay được sử dụng rộng rãi cho giao dịch điện tử như truyền số hiệu thẻ tín
dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet.
Dựa trên những hiểu biết của mình về giao thức SSL và ngôn ngữ lập trình C++, nhóm
chúng em đã chọn nghiên cứu đề tài này và xây dựng chương trình chia sẻ tệp tin qua
kênh truyền mật SSL. Xin cảm ơn thầy Lương Ánh Hoàng đã tạo điều kiện và hướng dẫn
nhóm em thực hiện đề tài này.
Đề tài của chúng em có nội dung chính như sau:




Chương 1: Giới thiệu về giao thức SSL
Chương 2: Bảo mật thông tin dựa trên thuật toán mã hóa công khai
Chương 3: Mô tả chương trình đã xây dựng trên ngôn ngữ C++

1

GVHD: Ths.Lương Ánh Hoàng |




August 18, 2011

[ĐỀ 10 : SSL]

CHƯƠNG 1: GIỚI THIỆU VỀ GIAO THỨC SSL

1. Giao thức SSL – Secure Socket Layer:

Được phát triển bởi Netscape, ngày nay giao thức Secure Socket Layer (SSL) đã
được sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông
tin giữa client và server. Tổ chức IETF (Internet Engineering Task Force ) đã
chuẩn hoá SSL và đặt lại tên là TLS (Transport Layer Security). Mặc dù là có sự
thay đổi về tên nhưng TSL chỉ là một phiên bản mới của SSL. Phiên bản TSL 1.0
tương đương với phiên bản SSL 3.1. Tuy nhiên SSL là thuật ngữ được sử dụng
rộng rãi hơn.
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ
cho rất nhiều ứng dụng. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các
giao thức ứng dụng tầng cao hơn như là HTTP (Hyper Text Transport Protocol),
IMAP ( Internet Messaging Access Protocol) và FTP (File Transport Protocol).
Trong khi SSL có thể sử dụng để hỗ trợ các giao dịch an toàn cho rất nhiều ứng
dụng khác nhau trên Internet, thì hiện nay SSL được sử dụng chính cho các giao
dịch trên Web.
SSL 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ẩn hoá để 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ắn
rằ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

quan trọng đối với người dùng. Ví dụ như khi gửi mã số credit card qua mạng thì
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 xem
certificate và public ID của server có giá trị hay không 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 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
2

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

định gửi các thông tin tài chí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ủa ngườ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).
Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record và giao thức SSL
handshake. Giao thức SSL record xác định các định dạng dùng để truyền dữ liệu.
Giao thức SSL handshake (gọi là giao thức bắt tay) sẽ sử dụng SSL record
protocol để trao đổi một số thông tin giữa server và client vào lấn đầu tiên thiết lập
kết nối SSL.

2. Cách thức làm việc của SSL:

Khi hai ứng dụng máy tính, thí dụ giữa một trình duyệt web và máy chủ web, làm
việc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hellos) dưới dạng các
thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác
định các chuẩn về thuật toán mã hoá và nén số liệu có thể được áp dụng giữa hai
ứng dụng. Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khoá theo phiên”
(session ID, session key) duy nhất cho lần làm việc đó. Sau đó ứng dụng khách
(trình duyệt) yêu cầu có chứng thực điện tử (digital certificate) xác thực của ứng
dụng chủ (web server).
Chứng thực điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian
(là CA -Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một
dạng tổ chức độc lập, trung lập và có uy tín. Các tổ chức này cung cấp dịch vụ
“xác nhận” số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho
công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở
đây là các máy chủ webserver.
Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã công
khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong
chứng chỉ điện tử để mã hoá thông điệp gửi lại máy chủ mà chỉ có máy chủ đó có
thể giải mã. Trên cơ sở đó, hai ứng dụng trao đổi khoá chính (master key) - khoá bí
mật hay khoá đối xứng - để làm cơ sở cho việc mã hoá luồng thông tin/dữ liệu qua
lại giữa hai ứng dụng chủ khách. Toàn bộ cấp độ bảo mật và an toàn của thông
tin/dữ liệu phụ thuộc vào một số tham số: số nhận dạng theo phiên làm việc ngẫu
nhiên; cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL; và độ dài của
khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin.
3

GVHD: Ths.Lương Ánh Hoàng |



August 18, 2011

[ĐỀ 10 : SSL]

3. Các thuật toán mã hóa, xác thực của SSL 3.0:

Các thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là các hàm
toán học được sử dụng để mã hoá và giải mã thông tin. Giao thức SSL hỗ trợ rất
nhiều các thuật toán mã hoá, được sử dụng để thực hiện các công việc trong quá
trình xác thực server và client, truyền tải các certificates và thiết lập các khoá của
từng phiên giao dịch (sesion key). Client và server có thể hỗ trợ các bộ mật mã
(cipher suite) khác nhau tuỳ thuộc vào nhiều yếu tố như phiên bản SSL đang dùng,
chính sách của công ty về độ dài khoá mà họ cảm thấy chấp nhận được - điều này
liên quan đến mức độ bảo mật của thông tin, ….
Sau đây là các thuật toán mã hoá và xác thực của SSL được sử dụng bao gồm
(phiên bản 3.0):
• DES - chuẩn mã hoá dữ liệu (ra đời năm 1977), phát minh và sử dụng của
chính phủ Mỹ.

4



DSA - thuật toán chữ ký điện tử, chuẩn xác thực điện tử), phát minh và sử
dụng của chính phủ Mỹ.



KEA - thuật toán trao đổi khoá), phát minh và sử dụng của chính phủ Mỹ.




MD5 - thuật toán tạo giá trị “băm” (message digest), phát minh bởi Rivest.



RC2, RC4 - mã hoá Rivest, phát triển bởi công ty RSA Data Security.



RSA - thuật toán khoá công khai, cho mã hoá va xác thực, phát triển bởi
Rivest, Shamir và Adleman.



RSA Key Exchange - thuật toán trao đổi khoá cho SSL dựa trên thuật toán
RSA.



SHA-1 - thuật toán hàm băm an toàn, phát triển và sử dụng bởi chính phủ
Mỹ.



SKIPJACK - thuật toán khoá đối xứng phân loại được thực hiện trong
phần cứng Fortezza, sử dụng bởi chính phủ Mỹ.




Triple-DES - mã hoá DES ba lần.

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

CHƯƠNG 2: BẢO VỆ THÔNG TIN DỰA TRÊN
MÃ HÓA CÔNG KHAI
1. Một số khái niệm:
1.1.
Khóa (key):

Là một thông tin quan trọng dùng để mã hóa thông tin hoặc giải mã thông tin
đã bị mã hóa. Bạn có thể hiểu nôm na khóa là mật khẩu (password).
Độ dài khóa được tính theo bit: 128bit, 1024bit hay 2048bit,... Khóa càng dài
thì càng khó phá. Chằng hạn như khóa RSA 1024bit đồng nghĩa với việc chọn
1 trong 2^1024 khả năng.
1.2.

Mã hóa công khai – Mã hóa bất đối xứng:
Mã hóa là một quy rắc (rule), một hệ thống (system) hoặc một cơ chế
(mechanism) được sử dụng để mã hóa data. Các thuật toán có thể là những sự
thay thế mang tính máy móc khá đơn giản, nhưng trong mã hóa thông tin điện
tử, nhìn chung sử dụng các hàm toán học cực kỳ phức tạp. Thuật toán càng
mạnh, càng phức tạp thì càng khó giải mã.

5


GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Mã hóa bất đối xứng (Asymmetric Cryptography) là quy trình giải mã và mã
hóa là dùng 2 key riêng biệt. Khi một hệ thống sử dụng phương pháp mã hóa
bất đối xứng người tham gia giao dịch luôn sử dụng 1 cặp(tức là 2 khóa) khóa
đó là khóa công khai và 1 khóa bí mật. Khóa bí mật sẽ được giữ kín và khóa
công khai sẽ được phổ biến rộng rãi.
Trong quá trình giao dịch những bên tham gia sẽ mã hóa dữ liệu bằng khóa
công khai của đối tượng cần gửi và dữ liệu đó sẽ chỉ được giải mã bằng chính
khóa bí mật của họ.

Các đặc điểm chính của thuật toán mã hóa bất đối xứng :


Với mật mã bất đối xứng, nó sử dụng một khóa để mã hóa và một khóa




để giải mã.
Mã hóa đối xứng rất an toàn.
Do bạn không cần phải gửi khóa đến cho người nhận, mã hóa bất đối




xứng sẽ không bị tần công bởi việc chặn khóa.
Số lượng khóa cần được phân phối bằng số lượng người tham gia hệ
thống, do đó mật mã bất đối xứng đáp ứng được số lượng lớn người

6




dùng.
Mật mã bất đối xứng không phải phân phối khóa phức tạp.
Mật mã bất đối xứng không đòi hỏi có quan hệ trước giữa những người



dùng khác nhau để trao đổi khóa.
Mật mã bất đối xứng hỗ trợ chữ ký số và tính không chối bỏ.

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011




[ĐỀ 10 : SSL]

Mã hóa bất đối xứng khá chậm.

Mã hóa bất đối xứng làm tăng dung lượng dữ liệu.

2. Bảo vệ thông tin dựa trên thuật toán mã hóa công khai sử dụng chứng thư

số :
Trong môi trường khóa công khai, bản thân người dùng không thể tự bảo đảm
tính xác thực của khóa công khai mà người đó đang dùng vì khóa có thể bị giả
mạo. Trong thực tế, hầu hết ở các trường hợp thì người dùng không hề biết họ
đang trao đổi khóa công khai với ai. Trong tình huống này, chứng thực số
chính là “vũ khí” tuyệt với để giúp người dùng có thể kiểm tra tính xác thực
của khóa. Nói cách đơn giản, chứng thực số là những tài liệu mà trong đó có
những nội dung chứng minh khóa đó là thật.
Thông qua các hãng thứ 3, chứng thực số sẽ được cung cấp dễ dàng và thuận
tiện để đảm bảo sự tin cậy giữa các bên tham gia, chẳng hạn tiến trình giao
dịch trực tuyến. Chứng thực số sẽ giúp kiểm tra tính xác thực của người dùng
gắn với khóa công khai, sau đó ký số trên chứng thực đó bằng cách dùng khóa
riên tư.
Chứng thực là một dạng tương tự bằng lái xe, hộ chiếu, giấy CMND… để
giúp nhận diện ai là chủ nhân thật sự.

7

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

. Một giấy chứng nhận điện tử thường bao gồm các thông tin 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 công khai 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
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.
8

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Đây là một mô hình cho việc sử dụng chứng thư số giữa client và server:

9

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]


CHƯƠNG 3: MÔ TẢ CHƯƠNG TRÌNH XÂY
DỰNG TRÊN NGÔN NGỮ C++
1. Giới thiệu thư viện OpenSSL:

OpenSSL là một mã nguồn mở thực hiện các giao thức SSL và TLS. Các thư
viện lõi (viết bằng ngôn ngữ lập trình C) thực hiện các chức năng mã hóa cơ
bản và cung cấp các chức năng tiện ích khác nhau.
Dự án OpenSSL là một kết quả của sự cộng tác nhằm phát triển một kỹ thuật
bảo mật dạng thương mại, đầy đủ các đặc trưng và là bộ công cụ mã nguồn mở
thực thi các giao thức như Secure Sockets Layer (SSL v2/v3) và Transport
Layer Security (TSL v1) với những thuật toán mã hóa phức tạp. Dự án được
quản lý bởi hiệp hội những người tình nguyện trên thế giới, sử dụng Internet để
trao đổi thông tin, lập kế hoạch và phát triển công cụ OpenSSL và các tài liệu
liên quan khác.
Trong khi thực hiện xây dựng chương trình, chúng em đã chọn thư viện
OpenSSL để có thể thực hiện giao thức SSL trong chương trình.

10

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

2. Mô tả chương trình:

Chương trình với chức năng chính là tạo ra 2 ứng dụng, client và server. Hai

ứng dụng này sẽ kết nối với nhau để chia sẻ một tệp tin. Cụ thể ở đây sẽ là tệp
tin do client gửi cho server. Tệp tin này trước khi được gửi đi, sẽ được phía
client thực hiện ký (sign) bằng khóa riêng (private key) từ một Certificate có
sẵn. Khi Server nhân được tệp tin sẽ phải xác thực bằng khóa công khai (public
key) cũng từ certificate này.
Mô tả một số bước chúng em đã thực hiện qua code:

11

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Khởi tạo Server

Server lắng nghe các kết nối đến

12

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Khởi tạo client kết nối đến Server


Tạo các socket để gửi nhận file từ 2 phía

13

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Quá trình gửi file phía client
14

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

Quá trình nhận file bên phía Server

15

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011


[ĐỀ 10 : SSL]

Một số hình ảnh của chương trình:

16

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

17

[ĐỀ 10 : SSL]

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

KẾT LUẬN
SSL là một giao thức hỗ trợ bảo mật cho thông tin được truyền giữa các máy tính
qua Internet. Đây là một lĩnh vực rất sâu rộng và có nhiều kiến thức liên quan. Do
thời gian để thực hiện đề tài này tương đối ngắn và do kiến thức của bản thân còn
hạn chế nên chương trình nhóm chúng em thực hiện còn rất nhiều thiếu sót, chủ
yếu vẫn chỉ khai thác được các lý thuyết liên quan đến SSL chứ chưa thể ứng dụng
được các lý thuyết đó vào trong chương trình. Tuy nhiên, nhóm chúng em sẽ tiếp

tục nghiên cứu và phát triển đề tài này, để chương trình về sau sẽ hợp lý và thiết
thực hơn. Chúng em xin chân thành cảm ơn thầy Lương Ánh Hoàng đã đề xuất và
giúp đỡ chúng em hoàn thành đề tài này.

18

GVHD: Ths.Lương Ánh Hoàng |


August 18, 2011

[ĐỀ 10 : SSL]

TÀI LIỆU THAM KHẢO
[1] Slide bài giảng “Lập trình mạng” – Ths. Lương Ánh Hoàng.
[2] Pki Implementing And Managing E-Security – The McGraw-Hill Companies.
[3] www.itgate.com.vn
[4] www. vnpro.org/forum/

19

GVHD: Ths.Lương Ánh Hoàng |



×