1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng chương trình chia sẻ tệp tin qua kênh truyền mật SSL

19 373 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 578,42 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

xây dựng chương trình chia sẻ tệp tin qua kênh truyền mật SSL

Trang 1

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++

Trang 2

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

Trang 3

Đ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 đượ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ữ

Trang 4

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 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ỹ

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ỹ

Trang 5

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.

Trang 6

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ã

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ọ

Trang 7

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 đả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ả

Trang 8

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ự

Một giấy chứng nhận điện tử thường bao gồm các thông tin sau:

Trang 9

 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:

Trang 10

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

Trang 11

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:

Trang 12

Khởi tạo Server

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

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

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

Trang 18

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

Trang 19

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

[4] www.vnpro.org/forum/

Ngày đăng: 22/03/2016, 11:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w