Secure Socket Layer (SSL)

Một phần của tài liệu (LUẬN văn THẠC sĩ) an ninh thông tin cho sàn giao dịch thương mại điện tử tỉnh thái nguyên (Trang 42)

2.3.1. Giới thiệu SSL

SSL (Secure Socket Layer) 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/đến, được sử dụng trong giao dịch điện tử như truyền số liệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet.

Đượ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.

2.3.2. Cơ chế mã hóa của SSL

Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshake protocol) và giao thức “bản ghi” (record protocol). Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối tượng đó. 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” (hello) 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 chỉ điện tử (digital certificate) xác thực của ứng dụng chủ(web server).

Chứng chỉ điện tử thường được xác nhận rộng rãi bởi một cơquan trung gian (Thẩm quyền xác nhận 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;

Độ dài của khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin. Có thể tóm tắt cơ chế của SSL như sau:

- Client phát sinh 1 Session Key ngẫu nhiên khi truy cập đến Server - Client yêu cầu Server gởi Certificate (gồm Public Key của Server) - Client kiểm tra tính hợp lệ của Certificate

- Nếu Certificate của Server hợp lệ, Client mã hóa Session Key bằng Public Key của Server

- Client gởi Session Key đã mã hóa cho Server

- Server giải mã Session Key đã được mã hóa bằng Private Key

- Các thông tin trao đổi giữa server và client sẽ được mã hóa và giải mã bằng Session Key

Hiện nay, khi public một web site lên internet, để áp dụng cơ chế mã hóa SSL chúng ta phải thuê SSL Certificate cho Web Server từ các tổ chức cung cấp Digital Certificate như: Verisign, CyberTrust, EnTrust…

2.3.3. Các thuật toán mã hóa trong SSL

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á và 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.

2.4. Hàm băm (Cryptographic hash function) 2.4.1. Giới thiệu hàm băm 2.4.1. Giới thiệu hàm băm

Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint).

Nói rộng, một hàm băm phải hoạt động càng giống với một hàm ngẫu nhiên càng tốt, trong khi vẫn có tính chất đơn định và tính toán có hiệu quả. Một hàm băm mật mã học được coi là không an toàn nếu một trong các việc sau là khả thi về mặt tính toán:

- Cho một tóm tắt (digest), tìm một thông điệp (chưa biết) khớp với tóm tắt đó - Tìm các “xung đột băm” (hash collision), trong đó hai thông điệp khác nhau có tóm tắt trùng nhau. Nếu có thể thực hiện một trong hai việc trên, một người có thể tấn công bằng cách dùng các cách trên để thay một thông điệp không được xác nhận (unauthorized message) vào chỗ của một thông điệp được xác nhận.

2.4.2. Ứng dụng của hàm băm

Hình 2.4: Ví dụ hàm băm

Một ứng dụng điển hình của một hàm băm mật mã học như sau: Alice đưa cho Bob một câu đố khó và tuyên bố rằng cô ấy đã giải được rồi. Bob muốn tự giải, nhưng cũng muốn chắc chắn là Alice đúng là đã giải được. Do đó, Alice viết đáp án, gắn thêm một nonce ngẫu nhiên, tính giá trịbăm của nó, và đưa kết quả băm cho Bob (trong khi vẫn giữ bí mật đáp án và nonce). Bằng cách này, khi Bob tự giải xong, Alice có thể chứng minh rằng cô đã có đáp án từ trước bằng cách đưa nonce cho Bob. Trong thực tiễn, Alice và Bob thường là các chương trình máy tính, và bí mật thường là cái gì đó không dễ ừa bằng một lời giải cho câu đó. Ứng dụng trên được gọi là một hệ thống tin cậy (commitment scheme). Một ứng dụng quan trọng khác của các hàm băm bảo mật là sựkiểm tra tính toàn vẹn của thông điệp. Ví dụ,

việc xác định xem một file hay một thông điệp có bị sửa đổi hay không có thểthực hiện bằng cách so sánh tóm tắt được tính trước và sau khi gửi (hoặc một sự kiện bất kỳ nào đó). Còn có thể dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho việc nhận dạng file. Một ứng dụng có liên quan là kiểm tra mật khẩu. Mật khẩu thường không được lưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt. Đểxác thực một người dùng, mật khẩu do người đó nhập vào được băm và so sánh với kết quả băm được lưu trữ. Do các lý do cả về bảo mật và hiệu năng chương trình, đa số các thuật toán chữ ký số nói rằng chỉcó tóm lược của thông điệp, chứ không phải toàn văn thông điệp, được “ký”. Các hàm băm còn có thể được dùng để tạo các bit giả ngẫu nhiên (pseudorandom). SHA-1, MD5, vàRIPEMD-160 nằm trong sốcác thuật toán tóm tắt thông điệp được dùng rộng rãi nhất của năm 2005. Tháng 8 năm 2004, các nhà nghiên cứu đã tìm được các điểm yếu của một loạt hàm băm, trong đó có MD5, SHA-0 và RIPEMD. Tháng 2 năm 2005, người ta ghi nhận một tấn công đối với SHA-1. Tháng 8 năm 2005, người ta lại ghi nhận một tấn công khác đối với SHA-1. Các hàm băm được dùng đểnhận dạng các file trong các mạng chia sẻ tệp đồng đẳng. Ví dụ, trong một ed2k link, một biến thểcủa MD4 được kết hợp với kích thước file đểcung cấp thông tin cho việc xác định nguồn file, tải xuống và kiểm tra nội dung.

2.4.3. Các hàm băm được chế tạo đặc biệt

Ngoài các kỹ thuật thông thườn nói trên người ta đã tìm nhiều cách rất riêng biệt khác nhau để chế tạo ra những hàm băm có độ tin cậy cao. Thông thường những sơ đồ này rất phức tạp và có những cấu trúc đặc biệt, nên không trình bày đầy đủ ở đây. Sau đây là một số các hàm băm nổi tiếng.

MD5 (Rivest 1992) Đây là một trong các hàm băm có tiếng nhất và được sử dụng thông dụng: + Nó lấy vào các khối đầu vào 512 bit và sinh ra các giá trị băm 128 bit. + Được tin là phi đụng độ và one-way + Thuật toán MD5 được thiết kế cho phép chạy tốt nhất trên các máy tính 32 bit. Nó sử dụng các phép toán đơn giản như phép cộng modulo 32, do đó thích hợp với ciệc mã hoá cho các bộ xử lý 32 bit.

SHA (Secure Hash Function) Đây là một thuật toán được đề xuất và bảo trợ bởi cơ quan NIST để sử dụng đối với hệ chữ ký DSA (cũng là một dự chuẩn cho

chữ ký điện tử). Nó cho giá trị băm là 160 bit và được thiết kế với cùng một tiếp cận như MD5.

HAVAL Một hệ băm của Australia cho phép thay đổi kích thước giá trị băm. Cấu trúc rất giống như MD5. Snefru Mekle (1989) + Là hàm băm có khóa (keyed hash function) + Cho phép 1 trong 2 lựa chọn kích thước giá trị băm là 128 bit và 256 bit + Eli Biham đã chỉ ra một đụng độ cho trường hợp 128 bit.

2.5. MD5 (Message-Digest algorithm 5)

MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit. Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rông rải trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin. MD5 được thiết kế bởi Ronald Rivest vào năm 1991 đểthay thếcho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2).

MD5 có 2 ứng dụng quan trọng:

– MD5 được sửdụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5. Hệ điều hành Unix sửdụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.

– MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)

Một vài bảng băm MD5

– Bảng băm MD5 128 bit (16 byte) (còn được gọi là message digests) được biểu diễn bằng chuỗi 32 sốthập lục phân.

MD5(“hello”) = 5d41402abc4b2a76b9719d911017c592

– Thậm chí một sự thay đổi nhỏtrong mẩu tin cũng dẫn đến thay đổi hoàn toàn bảng băm, do hiệu ứng thác. Ví dụ, thay “e” thành “a”:

MD5(“hallo”) = 598d4c200461b81522a3328565c25f7c – Bảng băm của một chuỗi rỗng là:

2.6. SHA (Secure Hash Algorithm)

SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là năm thuật giải được chấp nhận bởi FIPS dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao.

Năm thuật giải SHA là:

- SHA-1 : trảlại kết quảdài 160 bit - SHA-224 : trảlại kết quảdài 224 bit - SHA-256: trảlại kết quảdài 256 bit - SHA-384: trảlại kết quảdài 384 bit - SHA-512: trảlại kết quảdài 512 bit.

Thuật giải SHA là thuật giải băm mật được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) và được xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệvà chuẩn quốc gia Mĩ (National Instituteof Standards and Technology hay NIST). Bốn thuật giải sau thường được gọi chung là SHA-2. SHA-1 được sửdụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME, và IPSec. SHA-1 được coi là thuật giải thay thếMD5, một thuật giải băm 128 bit phổ biến khác.

Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật mã học người Trung Quốc đã phát triển thành công một thuật giải dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quảbăm tạo ra bởi SHA-1[1]. Mặc dù chưa có ai làm được điều tương tựvới SHA-2, nhưng vì vềthuật giải, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật giải khác tốt hơn SHA. NIST cũng đã khởi đầu một cuộc thi phát triển thuật giải băm mới an toàn hơn SHA, giống nhưquy trình phát triển chuẩn mã hóa tiên tiến (Advanced Encryption Standard hay AES).

Một vài bảng băm SHA-1

- Đoạn dữ liệu gốc sửdụng bảng mã ASCII được biểu diễn bằng chuỗi 40 số thập lục phân

SHA-1 (“hello”) = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d - Thay “e” thành “a”:

SHA-1 (“hallo”) = fd4cef7a4e607f1fcc920ad6329a6df2df99a4e8 - Bảng băm của một chuỗi rỗng là:

SHA-1 (“”) = da39a3ee5e6b4b0d3255bfef95601890afd80709

2.7. Mã hóa đối xứng (Symmetric Encryption) 2.7.1. Giới thiệu mã hóa đối xứng 2.7.1. Giới thiệu mã hóa đối xứng

Trong mật mã học, các thuật toán khóa đối xứng (tiếng Anh: symmetric-key algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệrõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia).

Hình 2.5: Quá trình mã hóa đối xứng

Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi đơn giản giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trong kênh truyền thông tin.

Nhiều thuật ngữ khác dành cho việc mã hóa dùng chìa khóa đối xứng bao gồm các phương pháp mã hóa đơn khóa (single-key), phương pháp mã hóa một khóa (one-key) và phương pháp mã hóa khóa cá nhân (private-key). Cách sử dụng thuật ngữ sau cùng đôi khi gây xung đột với thuật ngữ khóa cá nhân (private-key) dùng trong mật mã hóa khóa công khai (public key cryptography). Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật toán khóa bất đối xứng (asymmetric key algorithms). Trên thực tế, một thuật toán khóa bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một thuật toán khóa đối xứng (symmetric key algorithm) có chất lượng tương đương. Thuật toán đối xứng có thể được chia ra làm hai thểloại, mật mã luồng (stream ciphers) và mật

mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng nhưmột đơn vị. Cỡ khối được dùng thường là các khối 64 bit. Thuật toán tiêu chuẩn mã hóa tân tiến (Advanced Encryption Standard), được NIST công nhận tháng 12 năm 2001, sử dụng các khối

Một phần của tài liệu (LUẬN văn THẠC sĩ) an ninh thông tin cho sàn giao dịch thương mại điện tử tỉnh thái nguyên (Trang 42)