CHƯƠNG 1. TỔNG QUAN VỀ MÃ HÓA – Tài liệu text

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản khá đầy đủ của tài liệu tại đây ( 1.33 MB, 65 trang )

6

1.2. Sơ lược lịch sử của mã hóa thông tin

Mật mã có lịch sử lâu dài và đầy màu sắc. Nói chung, những dạng sớm nhất

của cách viết bí mật (ngày nay gọi chung là mật mã cổ điển) chỉ cần có bút và

giấy. Hai phạm trù chính của mật mã cổ điển là mật mã hoán vị, trong đó người

ta sắp xếp lại trật tự các chữ cái của thông điệp, và mật mã thay thế, trong đó

người ta thay thế có hệ thống các chữ cái hay các nhóm chữ cái bằng các chữ cái

hay các nhóm chữ cái khác. Văn bản được mật mã hóa bằng mật mã cổ điển có

xu hướng lộ ra các thông tin thống kê nhất định về văn bản thường. Bằng cách

sử dụng các thông tin này, mật mã cổ điển rất dễ bị dò ra (ví dụ bằng phân tích

tần suất). Mật mã cổ điển vẫn còn được phổ biến tới ngày nay, chủ yếu thông

qua việc giải các ô đố chữ.

Các thiết bị và các kỹ thuật khác nhau đã được sử dụng để mật mã hóa. Một

trong những thiết bị sớm nhất có lẽ là gậy mật mã. Trong nửa đầu thế kỷ 20, một

số thiết bị cơ khí đã được phát minh để thực hiện mật mã hóa, bao gồm rotor

machines nổi tiếng nhất là máy Enigma được người Đức sử dụng trong thứ hai.

Mật mã thực hiện bằng các máy móc này đã tăng độ phức tạp lên đáng kể đối

với công việc phân tích mã.

Với sự ra đời của máy tính kỹ thuật số và điện tử học thì các mật mã cực kỳ

phức tạp đã có thể được thực hiện. Đặc trưng của mật mã máy tính là chúng

thực hiện trên các chuỗi nhị phân, không giống như trong các mô hình mật mã

hóa cổ điển và cơ học (chỉ sử dụng bảng chữ cái với khoảng 26 ký tự-phụ thuộc

vào từng ngôn ngữ). Mật mã máy tính cũng có khả năng chịu đựng việc phân

tích mật mã tốt hơn; rất ít các mật mã như thế dễ bị tổn thương chỉ bởi kiểu tấn

công biết bản mã.

Các nghiên cứu rộng rãi có tính học thuật về mật mã hóa hiện đại là tương

đối gần đây nó chỉ được bắt đầu trong cộng đồng mở kể từ những năm thập niên

1970 với các chi tiết kỹ thuật của DES (viết tắt trong tiếng Anh của Data

Encryption Standard tức Tiêu chuẩn Mật mã hóa Dữ liệu) và sự phát minh

7

ra RSA. Kể từ đó, mật mã hóa đã trở thành công cụ được sử dụng rộng rãi trong

liên lạc và bảo mật máy tính.

Cũng giống như các bài học thu được từ trong lịch sử của nó, các nhà mật

mã hóa cũng rất thận trọng khi nhắc đến tương lai. Định luật Moore thông

thường được nhắc đến khi nói về độ lớn khóa, và các hiệu ứng tiềm năng

của máy tính lượng tử.

1.3. Hệ thống mã hóa

Hệ thống mã hóa là một bộ năm thành phần (P, C, K, E, D) thỏa mãn điều

kiện sau:

– Tập nguồn P là tập hữu hạn tất cả các mẫu tin nguồn cần mã hóa có thể

có.

– Tập đích C là tập hữu hạn tất cả các mẫu tin có sau khi mã hóa.

– Tập khóa K là tập hữu hạn các khóa có thể được sử dụng.

E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi khóa k thuộc K,

tồn tại luật mã hóa ek thuộc E và luật giải mã dk thuộc D tương ứng.

Luật mã hóa ek : P → C và luật giải mã d k : C → P là hai ánh xạ thỏa mãn

dk(ek(x)) = x, trong đó mọi x đều thuộc P.

Hình 1. 1. Hệ thống mã hóa

Bên cạnh việc làm thế nào để che dấu nội dung thì mã hóa cần phải đảm bảo

được các yếu tố sau:

8

• Tính bí mật (Confidentiality): Đảm bảo dữ liệu được truyền đi một cách

an toàn và không bị lộ thông tin nếu như có ai đó cố tình muốn có được

nội dung của dữ liệu gốc ban đầu. Và chỉ những người được phép mới có

khả năng đọc được nội dung của dữ liệu ban đầu.

• Tính xác thưc (Authentication): Giúp cho người nhận dữ liệu xác định

được chắc chắn rằng dữ liệu mà họ nhận là dữ liệu gốc ban đầu. Kẻ giả

mạo không thể có khả năng để giả dạng một người khác hay nói cách

khác không thể mạo danh để gửi dữ liệu. Người nhận có khả năng kiểm

tra nguồn gốc của thông tin mà họ nhận được.

• Tính toàn vẹn (Integrity): Giúp cho người nhận dữ liệu kiểm tra được rằng

dữ liệu không bị thay đổi trong quá trình truyền đi. Kẻ giả mạo không thể

có khả năng thay thế dữ liệu ban đầu bằng dữ liệu khác.

• Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận

không thể chối bỏ sau khi đã gửi hoặc nhận thông tin.

1.4. Phân loại các thuật toán mã hóa

Có rất nhiều các thuật toán mã hóa khác nhau. Từ những thuật toán được

công khai cho tất cả mọi người sử dụng và áp dụng như là một chuẩn chung cho

việc mã hóa dữ liệu đến nhưng thuật toán mã hóa không được công bố. Có thể

phân loại các thuật toán mã hóa như sau:

Phân loại theo phương pháp:

– Mã hóa cổ điển (Classical cryptography).

– Mã hóa đối xứng (Symetric cryptography).

– Mã hóa bất đối xứng (Asymetric cryptography).

– Hàm băm (Hash function).

Phân loại theo số lượng khóa:

– Mã hóa khóa bí mật (Private-key Cryptography).

– Mã hóa khóa công khai (Public-key Cryptography).

Dưới đây chúng ta tìm hiểu khái quát về các phương pháp mã hóa:

9

1.4.1. Mã hóa cổ điển

Xuất hiện trong lịch sử, thuật toán không dùng khóa, đơn giản và dễ hiểu. Là

phương pháp mà từng kí tự (hay từng nhóm kí tự) trong bản rõ được thay thế

bằng một kí tự (hay một nhóm kí tự) khác tạo ra bản mã. Bên nhận chỉ việc đảo

ngược lại trình tự thay thế trên bản mã để có được bản rõ ban đầu.

Nhưng từ chính các phương pháp mã hóa này đã giúp ta tiếp cận với các

thuật toán mã hóa đối xứng được sử dụng ngày nay. Trong mã hóa cổ điển có

hai phương pháp nổi bật đó là:

– Mã hóa thay thế (Substitution Cipher): Là phương pháp mà từng kí tự

(hay từng nhóm kí tự) trong bản rõ được thay thế bằng một kí tự (hay

một nhóm kí tự) khác để tạo ra bản mờ. Bên nhận chỉ cần đảo ngược

trình tự thay thế trên bản mờ để có được bản rõ ban đầu.

Hình 1. 2. Bảng thay thế ký tự

Ví dụ: Giả sử xây dựng một bảng thay thế các kí tự như trên và bạn

cũng có bảng thay thế này. Khi muốn truyền thông tin cho bạn, chẳng

hạn tôi gửi cho bạn một dòng văn bản như sau: CABBAC, thì dựa vào

bảng thay thế kí tự mà tôi và bạn đã xây dựng tôi chuyển thành như

sau: FEDDEF. Sau đó tôi gửi tới cho bạn, khi bạn nhận được thông tin

như trên, vì bạn đã có bảng thay thế bạn chỉ việc thay thế ngược lạo và

bạn sẽ có được thông tin ban đầu mà tôi muốn gửi cho bạn.

– Mã hóa hoán vị (Transposition Cipher) hay còn gọi là mã hóa dịch

chuyển: Nếu như trong phương pháp mã hóa thay thế các kí tự trong

bản rõ được thay thế hoàn toàn bằng các kí tự trong bản mờ, thì trong

phương pháp mã hóa hoán vị, các kí tự trong bản rõ vẫn được giữ

10

nguyên, chúng chỉ được sắp xếp lại vị trí để tạo ra bản mờ. Tức là các

kí tự trong bản rõ hoàn toàn không bị thay đổi bằng kí tự khác.

Ngoài ra còn có một số phương pháp khác: Phương pháp Affine, Vigenere,

Hill, …

1.4.2. Mã hóa đối xứng

Ở phần trên, chúng ta đã tìm hiểu về mã hoá cổ điển, trong đó có nói rằng

mã hoá cổ điển không dùng khoá. Nhưng trên thực nếu chúng ta phân tích một

cách tổng quát, chúng ta sẽ thấy được như sau:

– Mã hoá cổ điển có sử dụng khoá. Bằng chứng là trong phương pháp

thay thế thì khoá chính là phép dịch ký tự. Trong phương pháp mã hoá

hoán vị thì khóa nằm ở số hàng hay số cột mà chúng ta qui định. Khoá

này có thể được thay đổi tuỳ theo mục đích mã hoá của chúng ta,

nhưng nó phải nằm trong một phạm vi cho phép nào đó.

– Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải

thống nhất với nhau về cơ chế mã hoá cũng như giải mã. Nếu như

không có công việc này thì hai bên sẽ không thể làm việc được với

nhau.

Mã hoá đối xứng còn có một số tên gọi khác như Secret Key Cryptography

(hay Private Key Cryptography), sử dụng cùng một khoá cho cả hai quá trình

mã hoá và giải mã.

Quá trình thực hiện như sau:

Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, hai bên gửi và

nhận phải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã. Sau

đó, bên gửi sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và

gửi thông điệp đã mã hoá cho bên nhận. Bên nhận sau khi nhận được thông điệp

đã mã hoá sẽ sử dụng chính khoá bí mật mà hai bên đã thoả thuận để giải mã và

lấy lại bản rõ (Plaintext).

11

Hình 1. 3. Mô hình mã hóa sử dụng khóa đối xứng

Trong quá trình này, thì thành phần quan trọng nhất cần phải được giữ bí

mật chính là khoá. Việc trao đổi, thoả thuận về thuật toán được sử dụng trong

việc mã hoá có thế tiến hành một cách công khai, nhưng bước thoả thuận về

khoá trong việc mã hoá và giải mã phải tiến hành bí mật

Mã hoá đối xứng có thế được phân thành 02 loại:

– Loại thứ nhất tác động trên bản rõ theo từng nhóm bits. Từng nhóm

bits này được gọi với một cái tên khác là khối (Block) và thuật toán

được áp dụng gọi là Block Cipher. Theo đó, từng khối dữ liệu trong

văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ

dài. Đối với các thuật toán ngày nay thì kích thước chung của một

Block là 64 bits.

– Loại thứ hai tác động lên bản rõ theo từng bit một. Các thuật toán áp

dụng được gọi là Stream Cipher. Theo đó, dữ liệu của văn bản được

mã hoá từng bit một. Các thuật toán mã hoá dòng này có tốc độ nhanh

hơn các thuật toán mã hoá khối và nó thường được áp dụng khi lượng

dữ liệu cần mã hoá chưa biết trước.

12

Hình 1. 4. Một số thuật toán mã hóa đối xứng

Phương thức mật mã đối xứng thực hiện nhanh hơn rất nhiều so với quá

trình sử dụng mật mã bất đối xứng. Với tốc độ nhanh nên thuật toán này được

thiết kế chỉ một khóa trong quá trình mã hoá và giải mã dữ liệu.

Tuy nhiên bạn có thể sử dụng một giải pháp thông minh hơn đó là Public

Key Infrastructure (PKI), giải pháp được sử dụng kết hợp với mật mã đối xứng

trong quá trình truyền thông tin khóa. Việc truyền thông tin khóa bằng việc sử

dụng một mã hoá để truyền với sử dụng một phiên truyền thông tin duy nhất.

Hiểu, sử dụng và triển khai sử dụng PKI không đơn giản và có nhiều giải pháp

của nhiều nhà sản xuất khác nhau.

1.4.3. Mã hóa bất đối xứng

Ý tưởng về hệ thống mã hóa khóa công khai được Martin Heilman, Ralph

Merkle và Whitfield Diffie tại Đại Học Stanford giới thiệu vào năm 1976. Sau

đó, phương pháp Diffie- Hellman của Martin Hellman và Whitfield Diffie được

13

công bố. Năm 1977 nhóm tác giả Ronald Rivest, Adi Shamir và Leonard

Adleman đã công bố phương pháp RSA, phương pháp mã hóa khóa công khai

nổi tiếng và được sử dụng trong các ứng dụng mã hóa và bảo vệ thông tin.

Khóa công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứ

không phải thay thế khóa riêng (đối xứng). Cả 2 cùng tồn tại, phát triển và bổ

sung cho nhau.

Khóa công khai ( khóa bất đối xứng) bao gồm việc sử dụng 2 khóa : Khóa

công khai và khóa riêng:

– Bên gửi tạo ra một khoá bí mật dùng để mã hoá dữ liệu. Khoá này còn

được gọi là Session Key.

– Sau đó, Session Key này lại được mã hoá bằng khoá công khai của bên

nhận dữ liệu.

– Tiếp theo dữ liệu mã hoá cùng với Session Key đã mã hoá được gửi đi tới

bên nhận.

– Lúc này bên nhận dùng khoá riêng để giải mã Session Key và có được

Session Key ban đầu.

– Dùng Session Key sau khi giải mã để giải mã dữ liệu.

14

Hình 1. 5. Sơ đồ mã hóa công khai

Mật mã bất đối xứng hoạt động chậm hơn phương thức mật mã đối xứng,

không phải nó mã hoá một khối lượng dữ liệu lớn. Nó thường được sử dụng để

bảo mật quá trình truyền khóa của mật mã đối xứng. Nó cung cấp bảo mật cho

quá trình truyền thông tin bằng các dịch vụ: Authentication, Integrity,

Protection, và nonrepudiation.

Phương thức mật mã bất đối xứng sử dụng: RSA, Diffie-Hellman, ECC, …

1.4.4. Hàm băm – Hashing

Hashing là một phương thức mật mã nhưng nó không phải là một thuật toán

mã hoá. Đúng như vậy, hàm băm chỉ sử dụng một chứng chỉ số duy nhất được

biết đến với tên như “hash value – giá trị hash”, “hash – băm”, Message

Authentication Code (MAC), fingerprint – vân tay, hay một đoạn thông điệp. Dữ

liệu đầu vào của bạn có thể là một tệp tin, một ổ đĩa một quá trình truyền thông

tin trên mạng, hay một bức thư điện tử. Thông số giá trị băm được sử dụng để

phát hiện khi có sự thay đổi của tài nguyên. Nói cách khác, hằm băm sử dụng nó

15

để phát hiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hoặc trong khi truyền

hay không.

Ví dụ, giá trị băm được tính toán để so sánh với các giá trị băm được tạo ra

trước đó một tuần. Nếu hai giá trị này giống nhau thì dữ liệu chưa có sự thay

đổi. Nếu hai giá trị này có sự khác nhau thì tất nhiên là dữ liệu đã bị thay đổi.

Thông số MAC được tính toán bởi người gửi và người nhận với cùng một thuật

toán.

Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệu

thành một dạng mật mã, quá trình băm sử dụng một giá trị băm và không thay

đổi dữ liệu ban đầu. Bởi vì các tính năng đặc biệt, hàm băm có thể sử dụng để

bảo vệ và kiểm tra tính toàn vẹn của dữ liệu. Nó cũng có khả năng sử dụng để

kiểm tra khi có một tiến trình sao chép được thực hiện và đảm bảo tính chính

xác của dữ liệu khi chúng được sao chép.

Ví dụ, khi một ổ cứng tạo ra một bản sao, một quá trình băm được thực hiện

trên ổ đĩa trước khi quá trình nhân đôi được thực hiện. Nếu hai thông số băm

của ổ cứng mới được tạo ra và thông số băm của ổ đĩa ban đầu giống nhau thì

quá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo dữ liệu không

có sự thay đổi mất mát trong quá trình nhân bản. Việc băm sử dụng để đảm bảo

dữ liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn giữ được

nguyên bản sau vô số lần sao chép và điều này không thể thực hiện khi lưu dữ

liệu các dạng khác – ví như bạn lưu thông tin âm thanh bằng băng từ sẽ bị biến

dạng sau nhiều lần sao chép.

Ví dụ, Message Digest 5 (MD5) là một thuật toán băm với 128-bit. Điều này

có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình

băm bởi nó luôn luôn thêm vào 128 bits. Sức mạnh của quá trình băm là nó

được thực hiện một chiều và không thể có phương thức nào có thể thực hiện

ngược lại được để chuyển thông số băm thành dữ liệu ban đầu. Nếu một vài

người có được các thông số băm của bạn, họ không thể lấy được dữ liệu ban

đầu. Tuy nhiên đó không phải là phương thức mật mã không thế tấn công. Hàm

16

băm không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩa

không có công cụ nào có thể chuyển ngược lại một mật khẩu được băm thành

một mật khẩu nguyên bản chưa được băm. Tuy nhiên một thuật toán nào cũng

có những bất cập riêng, bằng việc sử dụng các phần mềm, password crackers

chúng có thể phát hiện ra đoạn mã thêm vào dữ liệu ban đầu và chỉ cần xoá đoạn

giá trị băm đi là có thể truy cập bình thường. Dữ liệu tài khoản thường không

được mã hoá, và dữ liệu mật khẩu thường được băm do đó hầu hết các công cụ

crack mật khẩu chỉ có thể xoá mật khẩu đã được đặt cho người dùng đó mà

không thể xem mật khẩu đó.

Thuật toán băm thường được sử dụng: SHA-1, MD5, MD4, …

1.5.Ứng dụng mã hóa

Với sự phát triển nhanh chóng của công nghệ thông tin thì các nguy cơ về

mất an toàn thông tin cũng tang lên, vì thế mà mã hóa được ứng dụng phổ biến

trong các hoạt động bảo mật, thương mại điện tử, chính phủ điện tử,… Sau đây

là một số ứng dụng của mã hóa trong thực tế.

1.5.1. Giao thức SSL

SSL là từ viết tắt của Secure Socket Layer là một giao thức (protocol) cho

phép bạn truyền đạt thông tin một cách bảo mật và an toàn qua mạng.

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 các

thông tin trên đường truyền. Không một ai kể cả người sử dụng lẫn

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, 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. Cũng như vậy, 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.

CHƯƠNG 1. TỔNG QUAN VỀ MÃ HÓA – Tài liệu text

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay