Upload
chen-huang
View
219
Download
0
Embed Size (px)
Citation preview
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 1/19
August 18, 2011 [ĐỀ 10 : SSL]
1 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
MỞ ĐẦUViệ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 đốivớ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++
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 2/19
August 18, 2011 [ĐỀ 10 : SSL]
2 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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ướ icá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 đã đượ cchuẩ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.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 3/19
August 18, 2011 [ĐỀ 10 : SSL]
3 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
Đ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
đị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 đượ cmã 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àmviệ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ácthô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 ứngdụ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ạngtổ 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ácnhậ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ôngkhai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tintrong 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ữ
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 4/19
August 18, 2011 [ĐỀ 10 : SSL]
4 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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ủathô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ệcngẫ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àicủa khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin.
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àmtoán học được sử dụng để mã hoá và giải mã thông tin. Giao thức SSL hỗ trợ rấtnhiề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ủatừ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àyliê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ủachính phủ Mỹ.
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ởiRivest, Shamir và Adleman.
RSA Key Exchange - thuật toán trao đổi khoá cho SSL dựa trên thuật toánRSA.
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ỹ.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 5/19
August 18, 2011 [ĐỀ 10 : SSL]
5 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 6/19
August 18, 2011 [ĐỀ 10 : SSL]
6 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
CHƢƠNG 2: BẢO VỆ THÔNG TIN DỰ A TRÊNMÃ 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ã.
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ọ.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 7/19
August 18, 2011 [ĐỀ 10 : SSL]
7 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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
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ỏ.
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 đảmtí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ả
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 8/19
August 18, 2011 [ĐỀ 10 : SSL]
8 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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ựccủ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ậntiện để đảm bảo sự tin cậy giữa các bên tham gia, chẳng hạn tiến trình giaodị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ùnggắn với khóa công khai, sau đó ký số trên chứng thực đó bằng cách dùng khóariê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ự.
. Một giấy chứng nhận điện tử thườ ng bao gồm các thông tin sau:
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 9/19
August 18, 2011 [ĐỀ 10 : SSL]
9 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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.
Đây là một mô hình cho việc sử dụng chứng thư số giữa client và server:
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 10/19
August 18, 2011 [ĐỀ 10 : SSL]
10 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
CHƢƠNG 3: MÔ TẢ CHƢƠNG TRÌNH XÂYDỰ 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à TransportLayer Security (TSL v1) vớ i những thuật toán mã hóa phức tạp. Dự án đượ cquả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.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 11/19
August 18, 2011 [ĐỀ 10 : SSL]
11 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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:
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 12/19
August 18, 2011 [ĐỀ 10 : SSL]
12 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
Khở i tạo Server
Server lắng nghe các k ết nối đến
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 13/19
August 18, 2011 [ĐỀ 10 : SSL]
13 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 14/19
August 18, 2011 [ĐỀ 10 : SSL]
14 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
Quá trình gửi file phía client
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 15/19
August 18, 2011 [ĐỀ 10 : SSL]
15 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
Quá trình nhận file bên phía Server
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 16/19
August 18, 2011 [ĐỀ 10 : SSL]
16 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
Một số hình ảnh của chương trình:
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 17/19
August 18, 2011 [ĐỀ 10 : SSL]
17 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 18/19
August 18, 2011 [ĐỀ 10 : SSL]
18 GVHD: Ths.Lương Ánh Hoàng | SVTH: Trần Duy Hoàng – Đỗ Hoàng Giang
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ínhqua 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.
8/4/2019 Báo cáo đề 10 - SSL
http://slidepdf.com/reader/full/bao-cao-de-10-ssl 19/19
August 18, 2011 [ĐỀ 10 : SSL]
19 GVHD: Ths Lương Ánh Hoàng | SVTH: Trần Duy Hoàng Đỗ Hoàng Giang
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/