Mãhóa và các phương pháp mã hóa <<5<<<5

Một phần của tài liệu Nghiên cứu và tìm hiểu ứng dụng của kỹ thuật mạng riêng ảo VPN (Trang 47 - 144)

3.3.1 Thế nào là mã hóa:

Mã hóa được dựa trên hai thành phần đó là một thuật toán và một khóa. Một

thuật toán mã hóa là một chức năng toán học nối phần văn bản hay các thông tin dễ hiểu với một chuỗi các số gọi là khóa để tạo ra một văn bản mật mã khó hiểu.

Mặc dù có một vài thuật toán mã hóa đặc biệt không sử dụng khóa có sẵn nhưng với các thuật toán sử dụng khóa thí đặc biệt quan trọng hơn. Mã hóa trên một hệ

thống khóa cơ bản cung cấp hai ưu điểm quan trọng: Một là bằng việc dùng một

khóa có thể sử dụng cùng một thuật toán để giao tiếp với nhiều người, tất cả

những gì phải làm là sử dụng một khóa khác cho mỗi thành viên tương ứng. Thứ

hai, nếu như bản tin được mã hóa bị bẻ gãy, chỉ cần chuyển khóa mới để bắt đầu

mã hóa bản tin đó lại mà không cần phải đổi một thuật toán mới để thực hiện quá

trình đó.

Số khóa mà thuật toán có thể cung cấp phụ thuộc vào số bit trong khóa. Ví dụ

như một khóa dài 16 bit cho phép có số 65536 kết nói có thể hay còn gọi là khóa.

Số khóa càng lớn thì khả năng một bản tin đã được mã bị mã hóa bị bẻ khóa càng

thấp. Mức độ khó phụ thuộc vào chiều đài của khóa.

Hình thức đơn giản nhất của mã hóa dạng khóa cơ bản được gọi là mã hóa khóa bí mật (secret key) hay còn gọi là mã hóa đối xứng (symmetric). Trong cơ

chế này, cả người gửi lẫn người nhận đều giữ cùng một khóa, có nghĩa là cả hai

bên đều mã hóa và giải mã dữ liệu với khóa đó. Nhưng mã hóa đối xứng xuất hiện

một số trở ngại như cả hai bên phải có sự thống nhất trên một khóa bí mật được

chia sẽ. Nếu như chúng ta có nhiều sự trao đổi thì chúng ta phải giữ n khóa bí mật

với mỗi khóa được dùng cho mỗi sự trao đổi. Nếu như sử dụng một khóa cho

nhiều trao đổi thì có khả năng người trao đổi này có thể đọc nội dung của người

trao đổi khác.

Bản tin đã được

Bản tin gốc mã hóa

(văn bản đơn giản) (văn bản khó hiểu)

mạng riêng Kỹ thuật Khóa bí mật $~ậ0

ảo VPN ¬—¬——> OamYe Mã hóa ñx#mve ảñn +®t-£ ^“ Khóa bí mật ——- ì°Y'\ Giải mã (adsbygoogle = window.adsbygoogle || []).push({});

Bản tin đã được Bản tin gốc

mã hóa (văn bản đơn giản)

(văn bản khó hiểu)

Hình 3.8: Mã hóa đối xứng dùng một khóa bí mật đề mã hóa và giải mã

Cơ chế mã hóa đối xứng cũng có một vẫn đề đối với việc xác thực bởi vì đặc

điểm nhận dạng của một bản tin gốc hay người nhận không thê chứng minh được.

Do cả hai bên đều giữ một khóa giống nhau nên có thê tạo, mã hóa và cho là người khác gửi bản tin đó. Điều này gây nên sự mơ hồ về tác giả thực sự của bản tin đó. Để giải quyết tình huống này thì người ta đã phát triển một loại mã hóa hiện đại đó

là mã hóa bắt đối xứng hay còn gọi là mã hóa khóa công cộng. 3.3.2 Thế nào là mã hóa khóa công cộng (Pubilic key):

Mã hóa khóa công cộng được hình thành dựa trên khái niệm của khóa đôi.

Trong thành phần của khóa đôi bao gồm một khóa riêng (Private key) chỉ được biết bởi người thiết kế và một phần khác là khóa công cộng có thể được công bố

một cách rộng rãi nhưng vẫn được kết hợp với người sở hữu. Các khóa đôi có một

đặc điểm duy nhất là đữ liệu đã mã hóa với một khóa chỉ có thể được giải mã với

một khóa trong cùng một cặp.

Bản tin đã được

Bản tin gốc mã hóa

(văn bản đơn giãn) (văn bản khó hiểu)

Kỹ thuật

: Khóa công cộng Ho Hay, của người nhận

Mã hóa

Khóa riêng nong nêng

của người nhận äo VPN

Giải mã (adsbygoogle = window.adsbygoogle || []).push({});

Bản tin đã được Bản tin gốc

mã hóa (văn bản đơn giản)

(văn bản khó hiểu)

Hình 3.9: Mã hóa bất đối xứng dùng một cặp khóa để mã hóa và giải mã bản tin

Những khóa này có thể dùng trong trong trường hợp cần cung cấp bản tin một cách tin cậy và chứng minh sự tin cậy của một bản tin gốc (do người gửi sử

dụng sử dụng khóa công cộng của người nhận để mã hóa một bản tin do đó nó

đảm bảo độ tin cậy cho đến khi người nhận giải mã bản tin đó vì tương ứng với khóa công cộng chỉ có khóa riêng của người nhận mới có thể giải mã bản tin đó được).

Phương pháp mã hóa bằng cách sử dụng khóa công cộng có những ưu điểm sau:

1. Khóa công cộng của khóa đôi có thể được phân phát một cách sẵn sàng

mà không sợ rằng điều này làm ảnh hưởng đến việc sử dụng các khóa

riêng. Không cần phải gửi một bản sao chép khóa công cộng cho tất cả

các yêu cầu mà chúng ta có thể chia sẽ nó từ máy chủ được duy trì bởi công ty hay các nhà cung cấp dịch vụ.

2. Việc mã hóa bằng cách sử dụng khóa công cộng cho phép xác thực

nguồn phát của bản tỉn.

Tuy nhiên ngoài những ưu điểm nêu trên thì khóa công cộng còn có khuyết

điểm là tốc độ mã hóa và giải mã còn tương đối chậm nên trong thực tế người ta

thường dùng kết hợp hai phương pháp mã hóa đối xứng và bất đối xứng. Do tốc độ của mã hóa đối xứng nhanh nên thường được dùng để mã hóa nội dung bản tin

còn mã hóa bất đối xứng do có độ tin cậy cao nên dùng để mã hóa khóa bí mật của

mã hóa đôi xứng và gửi kèm bản tỉn.

3.3.3. Cấu trúc của một khóa công cộng:

1. Tạo khóa công cộng:

Có hai cách để tạo ra một cặp khóa công cộng:

1. Một số hệ thống phát ra các khóa trên máy chủ tùy thuộc vào người giữ

khóa (khóa sở hữu). Người dùng tạo ra một cặp khóa công cộng, giữ lại

2. Một số hệ thống khác tạo ra khóa như một phần của việc tạo ra các

chứng nhận (khóa sở hữu). Có một CA tạo ra đôi khóa công cộng, phát ra chứng nhận đã được đăng ký và chuyên cả khóa đôi và chứng nhận

đó đến người dùng. (adsbygoogle = window.adsbygoogle || []).push({});

BẢNG SO SÁNH CÁC PHƯƠNG ÁN TẠO KHÓA

Tạo khóa đặc quyền Tạo khóa sở hữu

e Yêu cầu ít bước phải thực hiện| s Các người dùng phải chuyển hơn đối với người dùng. khóa đến CA.

e Khóa riêng có thể sao chép dự e Khóa riêng không cần phải sao

phòng. chép lại.

e Việc giao khóa được chia sẽ giữa | s Khóa chữ ký cá nhân không lấy

các người dùng với nhau. trở lại

2. _ Chứng nhận khóa công cộng:

Chứng nhận khóa công cộng (Public Key Certificate) là các dữ liệu được sắp xếp một cách đặc biệt cho biết giá trị của một khóa công cộng, tên của người sở hữu khóa và một chữ ký điện tử của cơ quan cung cấp được gọi là một chứng nhận điện tử CA (Certificate Authority). Những chứng nhận này được dùng để xác định người sở hữu khóa công cộng một cách cụ thể. Và khi có một bản sao chép khóa

công cộng của người có quyền, có thể dùng khóa đó để kiểm tra những chứng

nhận mà nó đăng ký. Bất kỳ phần mềm mã hóa nào cũng phải có một bản sao chép khóa công cộng của CA đề cho việc kiểm tra một chữ ký điện tử.

Tiêu chuẩn chính cho các chứng nhận điện tử là X.509 — [TU đưa ra các dạng

thức của chứng nhận và các điều kiện để tạo và sử dụng các chứng nhận điện tử

này.

3. Phân phối chứng nhận và khóa:

Cho dù các khóa công cộng dễ phân phối hơn các khóa bí mật nhưng vẫn phải cần các phương tiện đáng tin cậy để chuyển các khóa công cộng nếu không nó sẽ dễ bị loại tấn công “người ở giữa” tắn công, cản trở một cặp khóa công cộng của người dùng trong việc chia sẽ thông tin riêng. Phương pháp chung cho việc chuyên các khóa công cộng là thông qua các chứng nhận điện tử hay chứng nhận khóa công cộng.

Các chứng nhận cung cấp một giải pháp bảo mật cho việc phân phối các khóa

công cộng qua môi trường điện tử. Sau khi các chứng nhận được tạo ra, vấn đề kế

tiếp là chuyển các chứng nhận này đến các máy có nhu cầu. Các kỹ thuật thường được sử dụng trong thực tế là phân phối trong suốt (Transparent distribution) và

phân phối liên tác (Interative distribution).

Phân phối trong suốt gốm các máy chủ thư mục hay các giao thức trao đổi

khóa. Các giao thức thư mục (directory protocol) đùng cho việc chuyển các chứng

nhận khóa công cộng được phát triển từ X.500. Mặc đù có một số lớn các thư mục

chính cho các chứng nhận có thê dựa trên X.500, nhưng có một giao thức đáng lưu ý khác cũng được sử dụng đó là LDAP (Lightweight Directory Access Protocol)

được sử dụng nhiều trên các mạng TCP/IP. (adsbygoogle = window.adsbygoogle || []).push({});

Phân phối liên tác bao gồm các yêu cầu e-mail, sự truy cập đến website hay các yêu cầu sử dụng giao thức Finger. Nhiều hệ thống e-mail hỗ trợ cho mã hóa cung cấp một phương pháp để gửi kèm một chứng nhậ trong bản tin được gửi đi. Trong một số trường hợp, một máy chủ xác thực có thê được cấu hình để chấp

^ , ^ À H z ^

nhận các yêu câu e-mail cho các chứng nhận.

4. Chứng nhận đặc quyền CA:

Có hai kiểu khác nhau của các hệ thống phân phối chứng nhận đó là: Một hệ

thống có cài đặt phân cấp và một trang web tin cậy, nhưng quan trọng nhất là hệ thống phân cấp.

Trong một hệ thống phân cấp, một khóa công cộng gốc (Root public key), có

tại đỉnh của hệ thống phân cấp được sử dụng để đánh dấu cho tất cả các quyền ở

mức cao, khóa gốc này có thể thuộc về một cơ quan chính phủ. Các CA ở mức thấp hơn trong hệ thống phân cấp có chứng nhận được đánh dấu bởi các CA ở

mức cao và sẽ đánh dấu cho các CA ở mức thấp hơn chúng trong hệ thống phân cấp và tương tự như thế cho đến mức thấp nhất của hệ thống.

Để xác thực tính hợp lệ một chứng nhận của người dùng một cách đầy đủ,

chúng ta phải xác thực tất cả các CA trong một hệ thống phân cấp giữa CA nội bộ với nơi phát CA. Điều này có thể bao gồm việc di chuyền lên trên một nhánh trong

hệ thống phân cấp CA lên đến gốc và xuống một nhánh khác.

Trong thực tế, các hệ thống CA không sâu. Các hệ thống này không có nhiều mức cha và mức con vì thế thời gian yêu cầu để xác thực một khóa là không lâu,

điều này sẽ không làm tác động nghiêm trọng tới một mạng. Thực ra đối với một

mạng VPN, một công ty có thể phục vụ như một CA mà không cần phải nối đến

bất kỳ hệ thống phân cấp quốc gia hay quốc tế nào. Nhưng nếu mạng VPN được

mở rộng cho các đối tác kinh doanh trở thành mạng Extranet, thì chúng ta phải tùy

thuộc vào một số hệ thống phân cấp CA cho việc xác định các chứng nhận. Nếu

như số người dùng bên ngoài mạng VPN Extranet là tương đối ít thì họ có thể sử

dụng hệ thống CA bên trong công ty.

3.3.4. Hai phương pháp mã hóa ứng dụng trong VPN: 3.3.4.1 Kỹ thuật Diffie - Hellman: 3.3.4.1 Kỹ thuật Diffie - Hellman:

Kỹ thuật Diffie — Hellman là thuật toán mã hóa công cộng thực tế đầu tiên.

Trong thực tế, kỹ thuật này được ứng dụng rất nhiều cho việc quản lý khóa.

Cơ chế làm việc của kỹ thuật này là hai bên trao đổi có thể sử dụng kỹ thuật

Diffie — Hellman để tạo ra một giá trị bí mật dùng chung mà sau đó có thể được

dùng nhự một khóa chung cho thuật toán mã hóa khóa bí mật.

Khóa riêng Khóa công Khóa công Khóa riêng (adsbygoogle = window.adsbygoogle || []).push({});

của A cộng của B cộng của A của B

fr~—=—=——=—=—¬ r——=—————¬ f~—=—=—=—=—=—=¬ Ị Tính toán Tính toán khóa bí mật khóa bí mật Khóa bí mật ¡ Khóa bí mật chung chung rT~~~T~ ¬ Mã hóa '! Kỹ thuật mạng riêng äo VPN Kỹ thuật mạng riêng ảo VPN

Máy tính của A Máy tính của B |

Hình 3.10: Kỹ thuật DỰƒ71e — Hellman dùng khóa bí mật chung

Trong hình 3.10, A và B dùng kỹ thuật Diffie — Hellman để chia sẽ thông tin. Máy tính của người A sẽ dùng khóa riêng của mình ghép với khóa công cộng của B và dùng khóa này để tính toán ra một khóa mới gọi là khóa “bí mật chung”

(share secret key) và dùng khóa này để mã hóa dữ liệu và gửi cho máy tính của

người B. Đồng thời máy tính của người B cũng dùng khóa công cộng của người A ghép với khóa riêng của người B và cũng tính toán ra khóa “bí mật chung” và kết quả tính toán này cũng giống với kết quả tính toán trên máy tính của người A.

3.3.4.1 Mật mã khóa công cộng RSA (Ron Rivest, Adir Shamir,

Leonard Adelman):

Kỹ thuật khóa công cộng RSA dựa trên kỹ thuật là có thể tương đối đễ dàng

nhân hai giá trị A và B cho ra kết quả C nhưng không dễ dàng khi biết được C ta

có thể suy ngược lại hai giá trị A và B khi A và B là những giá trị tương đối lớn. Kỹ thuật này tạo ra các khóa công cộng phù hợp với các khóa riêng đặc biệt. Điều này tạo cho RSA những ưu điểm của việc cho phép người giữ một khóa riêng mã

hóa dữ liệu với khóa đó, vì thế bất kỳ người nào với một bản sao của khóa công cộng đều có thể giải mã nó sau đó.

Khóa RSA bao gồm ba giá trị số đặc biệt sử dụng trong các cặp để mã hóa và

giải mã đữ liệu. Khóa công cộng RSA gồm một giá trị khóa công cộng và một mạch toán modulus (mạch lấy giá trị tuyệt đối). Modulus là sản phẩm của hai số

lớn được chọn một cách ngẫu nhiên, được liên kết một cách toán học đến khóa

công cộng đã được chọn. Khóa riêng được tính toán từ hai số chính phát ra từ Modulus và giá trị khóa công cộng. Kỹ thuật RSA thường sử dụng một khóa có độ đài từ 56 — 128 bit.

Quá trình trao đổi đữ liệu đùng thuật toán RSA bao gồm 7 bước:

1. Người nhận yêu cầu khóa công cộng của người gửi.

2. Người gửi dùng hàm hash để giảm kích thước của thông điệp gốc

(original message), kết quá tạo ra “thông điệp phân loại” (message digest).

3. Người gửi mã hóa thông điệp phân loại bằng khóa riêng của mình và tạo ra chữ ký điện tử (signature).

4. Thông điệp được mã hóa và chữ ký điện tử được gửi đến người nhận

qua các phương thức truyền thông.

5. _ Ở phía người nhận khi nhận được thông điệp sẽ tiến hành việc giải mã

thông điệp và tái tạo lại thông điệp phân loại bằng cách sử dụng hàm

hash. :

(adsbygoogle = window.adsbygoogle || []).push({});

6. Song song với việc tái tạo thông điệp phân loại, người nhận tiến hành giải mã chữ ký điện tử bằng cách sử dụng khóa công cộng của người gửi.

7. _ Cuối cùng, người nhận tiến hành việc so sánh kết quả của việc tái tạo thông điệp phân loại và kết quả giải mã chữ ký điện tử. Nếu hai kết quả

này giống nhau thì người nhận biết rằng thông điệp nhận được không bị ngăn chặn, giả mạo hay chỉnh sửa trong suốt quá trình truyền nếu ngược

lại nguời nhận sẽ loại bỏ thông tin nhận được.

Kỹ thuật Kỹ thuật

âoVÊN - Chữ ký điện ãoVPN Ò Chữ ký điện

tử tử

Hàm Hàm Khóa công

Hash Hash cộng của

người gửi + Khóa riêng _

của người gửi

Máy tính của Máy tính của

người gửi người nhận

Hình 3.11: Kỹ thuật RSA dùng để gửi đữ liệu

3.3.5. Lựa chọn các phương pháp mã hóa:

Trong thực tế, không có phương pháp mã hóa nào là lý tưởng cho tất cả các tình trạng mạng mỗi phương pháp ứng dụng đều có những ưu và nhược điểm khác

nhau.

BẢNG SO SÁNH CÁC ƯU VÀ NHƯỢC ĐIỂM CỦA CÁC

PHƯƠNG PHÁP MÃ HÓA

Kiểu mã hóa Ưu điểm Nhược điểm - Tốc độ mã hóa và giải | -Các khóa giống

mã nhanh. nhau.

Khóa bí mật (mã hóa đối | - Có thể được bổ sung | - Khó khăn trong việc

Một phần của tài liệu Nghiên cứu và tìm hiểu ứng dụng của kỹ thuật mạng riêng ảo VPN (Trang 47 - 144)