Tải bản đầy đủ (.pdf) (13 trang)

Lý Thuyết Mã Khóa Công Cộng

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

Mã hóa khóa công cộng
(Sưu tầm)
Mã hóa khóa công cộng là một dạng mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không
cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp
khóa có quan hệ toán học với nhau là khóa công cộng (hay khóa công khai) và khóa cá nhân (hay khóa bí
mật).

Thuật ngữ mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mã hóa khóa công cộng mặc dù
hai khái niệm không hoàn toàn tương đương. Có những thuật toán mã khóa bất đối xứng không có tính
chất khóa công cộng và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ
bí mật.

Trong mã hóa khóa công cộng, khóa cá nhân phải được giữ bí mật trong khi khóa công cộng được phổ
biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối
với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công cộng.

Hệ thống mã hóa khóa công cộng có thể sử dụng với các mục đích:

Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.
Thông thường, các kỹ thuật mã hóa khóa công cộng đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật
mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong
nhiều ứng dụng.

Lịch sử

Trong hầu hết lịch sử của mật mã học, khóa dùng mã hóa và giải mã phải được giữ bí mật và cần được
trao đổi bằng một phương pháp an toàn khác (không dùng mật mã) như gặp nhau trực tiếp hay thông qua
một người đưa thư tin cậy. Vì vậy quá trình phân phối khóa trong thực tế gặp rất nhiều khó khăn, đặc biệt
là khi số lượng người sử dụng rất lớn. Mã hóa khóa công cộng đã giải quyết được vấn đề này vì nó cho


phép người dùng gửi thông tin mật trên đường truyền không an toàn mà không cần thỏa thuận khóa từ
trước.


Năm 1874, William Stanley Jevons xuất bản một cuốn sách mô tả mối quan hệ giữa các hàm một chiều
với mật mã học đồng thời đi sâu vào bài toán phân tích ra thừa số nguyên tố (sử dụng trong thuật toán
RSA). Tháng 7 năm 1996, một nhà nghiên cứu đã bình luận về cuốn sách trên như sau:

Trong cuốn The Principles of Science: A Treatise on Logic and Scientific Method được xuất bản năm
1890, William S. Jevons đã phát hiện nhiều phép toán rất dễ thực hiện theo một chiều nhưng rất khó theo
chiều ngược lại. Một ví dụ đã chứng tỏ mã hóa rất dễ dàng trong khi giải mã thì không. Vẫn trong phần
nói trên ở chương 7 (Giới thiệu về phép tính ngược) tác giả đề cập đến nguyên lý: ta có thể dễ dàng nhân
các số tự nhiên nhưng phân tích kết quả ra thừa số nguyên tố thì không hề đơn giản. Đây chính là nguyên
tắc cơ bản của thuật toán mã hóa khóa công cộng RSA mặc dù tác giả không phải là người phát minh ra
mã hóa khóa công cộng.
Thuật toán mã hóa khóa công cộng được thiết kế đầu tiên bởi James H. Ellis, Clifford Cocks, và Malcolm
Williamson tại GCHQ (Anh) vào đầu thập kỷ 1970. Thuật toán sau này được phát triển và biết đến dưới
tên Diffie-Hellman, và là một trường hợp đặc biệt của RSA. Tuy nhiên những thông tin này chỉ được tiết
lộ vào năm 1997.

Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mã hóa khóa bất đối xứng trong đó
nêu ra phương pháp trao đổi khóa công cộng. Công trình này chịu sự ảnh hưởng từ xuất bản trước đó của
Ralph Merkle về phân phối khóa công cộng. Trao đổi khóa Diffie-Hellman là phương pháp có thể áp dụng
trên thực tế đầu tiên để phân phối khóa bí mật thông qua một kênh thông tin không an toàn. Kỹ thuật thỏa
thuận khóa của Merkle có tên là hệ thống câu đố Merkle.

Thuật toán đầu tiên cũng được Rivest, Shamir và Adleman phát hiện vào năm 1977 tại MIT. Công trình
này được công bố vào năm 1978 và thuật toán được đặt tên là RSA. RSA sử dụng phép toán tính hàm mũ
môđun (môđun được tính bằng tích số của 2 số nguyên tố lớn) để mã hóa và giải mã cũng như tạo chữ ký
số. An toàn của thuật toán được đảm bảo với điều kiện là không tồn tại kỹ thuật hiệu quả để phân tích một

số rất lớn thành thừa số nguyên tố.

Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thỏa thuận khóa… được phát triển.
Các thuật toán như ElGamal (mã hóa) do Netscape phát triển hay DSA do NSA và NIST cũng dựa trên
các bài toán lôgarit rời rạc tương tự như RSA. Vào giữa thập kỷ 1980, Neal Koblitz bắt đầu cho một dòng
thuật toán mới: mật mã đường cong elíp và cũng tạo ra nhiều thuật toán tương tự. Mặc dù cơ sở toán học
của dòng thuật toán này phức tạp hơn nhưng lại giúp làm giảm khối lượng tính toán đặc biệt khi khóa có
độ dài lớn.
An toàn


Về khía cạnh an toàn, các thuật toán mã hóa khóa bất đối xứng cũng không khác với các thuật toán mã
hóa khóa đối xứng. Có những thuật toán được dùng rộng rãi, có thuật toán chủ yếu trên lý thuyết; có thuật
toán vẫn được xem là an toàn, có thuật toán đã bị phá vỡ… Cũng cần lưu ý là những thuật toán được dùng
rộng rãi không phải lúc nào cũng đảm bảo an toàn. Một số thuật toán có những chứng minh về độ an toàn
với những tiêu chuẩn khác nhau. Nhiều chứng minh gắn việc phá vỡ thuật toán với những bài toán nổi
tiếng vẫn được cho là không có lời giải trong thời gian đa thức. Nhìn chung, chưa có thuật toán nào được
chứng minh là an toàn tuyệt đối (như hệ thống mã hóa sử dụng một lần). Vì vậy, cũng giống như tất cả
các thuật toán mật mã nói chung, các thuật toán mã hóa khóa công cộng cần phải được sử dụng một cách
thận trọng.
Các ứng dụng

Ứng dụng rõ ràng nhất của mã hóa khóa công cộng là bảo mật: một văn bản được mã hóa bằng khóa công
cộng của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó.

Các thuật toán tạo chữ ký số khóa công cộng có thể dùng để nhận thực. Một người sử dụng có thể mã hóa
văn bản với khóa bí mật của mình. Nếu một người khác có thể giải mã với khóa công cộng của người gửi
thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công cộng đó.

Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa…


Những vấn đề đặt ra trong thực tế

Sự tương tự với bưu chính

Để thấy rõ hơn ưu điểm của hệ thống mã hóa khóa bất đối xứng ta có thể dùng sự tương tự với hệ thống
bưu chính trong ví dụ sau: 2 người (A và B) trao đổi thông tin mật thông qua hệ thống bưu chính. A cần
gửi một bức thư có nội dung cần giữ bí mật tới cho B và sau đó nhận lại thư trả lời (cũng cần giữ bí mật)
từ B.

Trong hệ thống mã hóa khóa đối xứng, A sẽ cho bức thư vào hộp và khóa lại rồi gửi hộp theo đường bưu
chính bình thường tới cho B. Khi B nhận được hộp, anh ta dùng một khóa giống hệt như khóa A đã dùng
để mở hộp, đọc thông tin và gửi thư trả lời theo cách tương tự. Vấn đề đặt ra là A và B phải có 2 khóa
giống hệt nhau bằng một cách an toàn nào đó từ trước (chẳng hạn như gặp mặt trực tiếp).

Trong hệ thống mã hóa khóa bất đối xứng, B và A có hai khóa khác nhau. Đầu tiên, A yêu cầu B gửi cho


mình khóa (công cộng) theo đường bưu chính bình thường và giữ lại khóa bí mật. Khi cần gửi thư, A sử
dụng khóa nhận được từ B để khóa hộp. Khi nhận được hộp đã khóa bằng khóa công cộng của mình, B có
thể mở khóa và đọc thông tin. Để trả lời A, B cũng thực hiện theo quá trình tương tự với khóa của A.

Điều quan trọng nhất ở đây là B và A không cần phải gửi đi khóa bí mật của mình. Điều này làm giảm
nguy cơ một kẻ thứ 3 (chẳng hạn như một nhân viên bưu chính biến chất) làm giả khóa trong quá trình
vận chuyển và đọc những thông tin trao đổi giữa 2 người trong tương lai. Thêm vào đó, trong trường hợp
B do sơ suất làm lộ khóa của mình thì các thông tin do A gửi cho người khác vẫn giữ bí mật (vì sử dụng
các cặp khóa khác).

Thuật toán: liên kết giữa 2 khóa trong cặp


Không phải tất cả các thuật toán mã hóa khóa bất đối xứng đều hoạt động giống nhau nhưng phần lớn đều
gồm 2 khóa có quan hệ toán học với nhau: một cho mã hóa và một để giải mã. Để thuật toán đảm bảo an
toàn thì không thể tìm được khóa giải mã nếu chỉ biết khóa đã dùng mã hóa. Điều này còn được gọi là mã
hóa công cộng vì khóa dùng để mã hóa có thể công bố công khai mà không ảnh hưởng đến bí mật của văn
bản mã hóa. Trong ví dụ ở trên, khóa công cộng có thể là những hướng dẫn đủ để tạo ra khóa với tính chất
là một khi đã khóa thì không thể mở được nếu chỉ biết những hướng dẫn đã cho. Các thông tin để mở
khóa thì chỉ có người sở hữu mới biết.

Những điểm yếu

Tồn tại khả năng một người nào đó có thể tìm ra được khóa bí mật. Không giống với hệ thống mã hóa một
lần (one-time pad) hoặc tương đương, chưa có thuật toán mã hóa khóa bất đối xứng nào được chứng minh
là an toàn trước các tấn công dựa trên bản chất toán học của thuật toán. Khả năng một mối quan hệ nào đó
giữa 2 khóa hay điểm yếu của thuật toán dẫn tới cho phép giải mã không cần tới khóa hay chỉ cần khóa
mã hóa vẫn chưa được loại trừ. An toàn của các thuật toán này đều dựa trên các ước lượng về khối lượng
tính toán để giải các bài toán gắn với chúng. Các ước lượng này lại luôn thay đổi tùy thuộc khả năng của
máy tính và các phát hiện toán học mới.

Mặc dù vậy, độ an toàn của các thuật toán mã hóa khóa công cộng cũng tương đối đảm bảo. Nếu thời gian
để phá một mã (bằng phương pháp duyệt toàn bộ) được ước lượng là 1000 năm thì thuật toán này hoàn
toàn có thể dùng để mã hóa các thông tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần
thời gian tồn tại của thẻ (vài năm).


Nhiều điểm yếu của một số thuật toán mã hóa khóa bất đối xứng đã được tìm ra trong quá khứ. Thuật toán
đóng gói ba lô là một ví dụ. Nó chỉ được xem là không an toàn khi một dạng tấn công không lường trước
bị phát hiện. Gần đây, một số dạng tấn công đã đơn giản hóa việc tìm khóa giải mã dựa trên việc đo đạc
chính xác thời gian mà một hệ thống phần cứng thực hiện mã hóa. Vì vậy, việc sử dụng mã hóa khóa bất
đối xứng không thể đảm bảo an toàn tuyệt đối. Đây là một lĩnh vực đang được tích cực nghiên cứu để tìm
ra những dạng tấn công mới.


Một điểm yếu tiềm tàng trong việc sử dụng khóa bất đối xứng là khả năng bị tấn công dạng kẻ tấn công
đứng giữa (man in the middle attack): kẻ tấn công lợi dụng việc phân phối khóa công cộng để thay đổi
khóa công cộng. Sau khi đã giả mạo được khóa công cộng, kẻ tấn công đứng ở giữa 2 bên để nhận các gói
tin, giải mã rồi lại mã hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện. Dạng tấn công kiểu
này có thể phòng ngừa bằng các phương pháp trao đổi khóa an toàn nhằm đảm bảo nhận thực người gửi
và toàn vẹn thông tin. Một điều cần lưu ý là khi các chính phủ quan tâm đến dạng tấn công này: họ có thể
thuyết phục (hay bắt buộc) nhà cung cấp chứng thực số xác nhận một khóa giả mạo và có thể đọc các
thông tin mã hóa.

Khối lượng tính toán

Để đạt được độ an toàn tương đương, thuật toán mã hóa khóa bất đối xứng đòi hỏi khối lượng tính toán
nhiều hơn đáng kể so với thuật toán mã hóa khóa đối xứng. Vì thế trong thực tế hai dạng thuật toán này
thường được dùng bổ sung cho nhau để đạt hiệu quả cao. Trong mô hình này, một bên tham gia trao đổi
thông tin tạo ra một khóa đối xứng dùng cho phiên giao dịch. Khóa này sẽ được trao đổi an toàn thông
qua hệ thống mã hóa khóa bất đối xứng. Sau đó 2 bên trao đổi thông tin bí mật bằng hệ thống mã hóa đối
xứng trong suốt phiên giao dịch.

Mối quan hệ giữa khóa công cộng với thực thể sở hữu khóa

Để có thể đạt được những ưu điểm của hệ thống thì mối quan hệ giữa khóa công cộng và thực thể sở hữu
khóa phải được đảm bảo chính xác. Vì thế các giao thức thiết lập và kiểm tra mối quan hệ này là đặc biệt
quan trọng. Việc gắn một khóa công cộng với một định danh người sử dụng thường được thực hiện bởi
các giao thức thực hiện hạ tầng khóa công cộng (PKI). Các giao thức này cho phép kiểm tra mối quan hệ
giữa khóa và người được cho là sở hữu khóa thông qua một bên thứ ba được tin tưởng. Mô hình tổ chức
của hệ thống kiểm tra có thể theo phân lớp (các nhà cung cấp chứng thực số - X.509) hoặc theo thống kê


(mạng lưới tín nhiệm - PGP, GPG) hoặc theo mô hình tín nhiệm nội bộ (SPKI). Không phụ thuộc vào bản

chất của thuật toán hay giao thức, việc đánh giá mối quan hệ giữa khóa và người sở hữu khóa vẫn phải
dựa trên những đánh giá chủ quan của bên thứ ba bởi vì khóa là một thực thể toán học còn người sở hữu
và mối quan hệ thì không. Hạ tầng khóa công cộng chính là các thiết chế để đưa ra những chính sách cho
việc đánh giá này.

Các vấn đề liên quan tới thời gian thực

Một khóa công cộng nào đó có thể liên quan tới một số lượng lớn và khó xác định người sử dụng. Vì thế
sẽ tốn rất nhiều thời gian khi muốn thu hồi hoặc thay thế một khóa vì lý do an ninh. Do vậy, các hệ thống
hoạt động trong thời gian thực khi áp dụng mã hóa khóa công cộng cần phải hết sức thận trọng. Có ít nhất
4 vấn đề cần quan tâm được đề cập sau đây.

Thẩm quyền thu hồi khóa

Việc thu hồi khóa có tính phá hoại hoặc sai sót sẽ có khả năng gây ra ảnh hưởng nghiêm trọng tới hệ
thống. Trường hợp này hoàn toàn có thể xảy ra nếu việc thu hồi khóa có thể được thực hiện bởi chỉ một
thực thể. Chúng ta có thể làm giảm nguy cơ này bằng cách thực hiện chính sách thu hồi khóa với sự tham
gia của hai thực thể trở lên. Chẳng hạn, một khóa chỉ bị thu hồi khi có sự chấp thuận của cả A và B. Tuy
nhiên, xét về phương diện an ninh thì chính sách này tạo nên yếu điểm cho hệ thống. Kẻ tấn công chỉ cần
thực hiện tấn công từ chối dịch vụ (DoS) vào B hoặc A là có thể làm hệ thống ngừng hoạt động.

Do thực thể có thẩm quyền thu hồi khóa rất quan trọng đối với hệ thống nên các cơ chế thực hiện cần đảm
bảo càng nhiều bên tham gia càng tốt để chống lại phá hoại đồng thời lại phải đảm bảo càng ít càng tốt để
có thể thực hiện việc thu hồi nhanh chóng.

Phân phối khóa mới

Sau khi một khóa bị thu hồi thì một khóa mới cần được phân phối theo một trình tự định trước.

Giả sử khóa của C đã bị thu hồi. Trước khi có khóa mới C không thể tham gia trao đổi thông tin mật.

Không ai có thể gửi thông tin cho C mà không vi phạm an ninh hệ thống và các thông tin từ C sẽ bị loại
bỏ. Điều này cũng có nghĩa phần của hệ thống do C kiểm soát ngừng hoạt động. Trong trường hợp này


yêu cầu về an ninh được đặt lên trên yêu cầu về tính sẵn sàng của hệ thống.

Trong hệ thống, người có thẩm quyền tạo khóa mới có thể trùng với người có thẩm quyền thu hồi khóa
nhưng không bắt buộc như vậy. Nếu xét về phương diện an ninh thì đây không phải là ý tưởng tốt. Vấn đề
nảy sinh là chúng ta cần giảm khoảng thời gian giữa thời điểm thu hồi khóa và thời điểm tạo khóa mới tới
mức tối thiểu. Để làm tốt việc này lại đòi hỏi một nơi/một thực thể có đủ 2 thẩm quyền nêu trên. Vấn đề là
chúng ta phải cân bằng giữa yêu cầu về an ninh và yêu cầu về tính sẵn sàng của hệ thống.

Thông báo thông tin về thu hồi khóa

Thông báo về một khóa nào đó bị thu hồi cần đến được tất cả những người đang sử dụng nó trong thời
gian ngắn nhất có thể.

Đối với hệ thống phân phối người ta có 2 cách đưa các thông tin thu hồi khóa đến người dùng: thông tin
được đẩy (push) từ điểm trung tâm tới người dùng hoặc người dùng lấy (pull) thông tin từ trung tâm.

Đẩy thông tin từ trung tâm là cách đơn giản nhất để gửi thông tin tới toàn thể người sử dụng. Tuy nhiên
không thể đảm bảo là thông tin thực sự tới được đích và đối với một hệ thống lớn thì khả năng gửi thành
công tới tất cả người dùng là thấp. Thêm vào đó, thời gian hoàn thành truyền tin sẽ là khá lớn và trong
suốt quá trình này thì hệ thống có thể bị lợi dụng. Vì vậy, phương pháp này không đảm bảo an toàn cũng
như không tin cậy.

Phương pháp thứ hai người sử dụng lấy thông tin về khóa từ trung tâm trước mỗi lần sử dụng. Điểm yếu
của phương pháp này là người sử dụng sẽ bị chặn nếu không kết nối được với trung tâm. Ở đây chúng ta
lại thấy một lần nữa mối liên hệ trái chiều giữa an ninh và tính sẵn sàng: càng nhiều server (tăng độ tin
cậy) thì thời gian cửa sổ càng lớn (độ an toàn giảm).


Ngoài ra còn một phương án nữa là cung cấp các chứng thực có thời hạn. Việc xác định thời gian sống
của mỗi chứng thực sẽ là sự cân bằng giữa yêu cầu an toàn và tính sẵn sàng của hệ thống và người dùng.

Các biện pháp tiến hành khi lộ khóa

Hầu hết các trường hợp thu hồi khóa xảy ra khi có sự kiện nào đó chứng tỏ khóa bí mật đã bị lộ. Ta gọi
thời điểm xảy ra sự kiện đó là T.


Điều này dẫn tới 2 hệ quả: Các văn bản mã hóa với khóa công cộng sau thời điểm T không còn được xem
là bí mật; và các chữ ký số thực hiện với khóa bí mật sau thời điểm T không còn được xem là thật nếu
không có những tìm hiểu kỹ lưỡng các sự kiện để tìm ra nơi thực hiện chữ ký.

Nếu nguyên nhân của việc lộ bí mật là lỗi hệ thống thì cần tiến hành ngay lập tức chiến lược phục hồi.
Chiến lược này sẽ xác định người có quyền thu hồi khóa, cách thức truyền thông tin tới người dùng, cách
thức xử lý các văn bản mã hóa với khóa bị lộ sau thời điểm T. Quy trình phục hồi có thể rất phức tạp và
trong lúc tiến hành thì hệ thống rất dễ bị tấn công từ chối dịch vụ (DoS).

Một số ví dụ

Một số thuật toán mã hóa khóa công cộng được đánh giá cao:

Diffie-Hellman
DSS (Tiêu chuẩn chữ ký số)
ElGamal
Các kỹ thuật Mã hóa đường cong Elíp
Các kỹ thuật Thỏa thuật khóa chứng thực bằng mật khẩu
Hệ thống mật mã Paillier
Thuật toán mã hóa RSA (PKCS)


Một số thuật toán không được đánh giá cao:

Merkle-Hellman (sử dùng bài toán cái balô)

Một số ví dụ về giao thức sử dụng mã hóa khóa công cộng:

GPG thực hiện giao thức OpenPGP
IKE
Pretty Good Privacy
SSH
Secure Socket Layer tiêu chuẩn IETF — TLS
SILC
Mã hóa hoặc mật mã hóa dữ liệu là cơ chế chuyển đổi dữ liệu sang một định dạng khác không thể đọc


được, vi dụ như ciphertext (văn bản viết thành mật mã), để có thể ngăn cản những truy cập bất hợp pháp
khi dữ liệu trao đổi trong môi trường mạng không an toàn.

Mã hóa dữ liệu ngăn chặn được các việc sau :

· Nghe trộm và xem lén dữ liệu.

· Chỉnh sữa và đánh cắp lén dữ liệu.

· Giả mạo thông tin.

· Data non-repudiation.

· Sự gián đoạn các dịch vụ mạng.


Khi nhận được gói tin, người nhận sẽ giải mã dữ liệu lại dạng cơ bản ban đầu. Cho dù dữ liệu có bị chặn
trong suốt quá trình trao đổi dữ liệu.

Người gởi và người nhận, phụ thuộc vào quá trình mã hóa,dưới hình thức là một hệ thống mã hóa. Hệ
thống mã hoá (Cryptosystems) có 2 loại sau :

· Đối xứng (Symmetric)

· Bất đối xứng (Asymmetric)

Một hệ thống mã hóa được phân loại dựa vào con số của khoá mà nó dùng. Một khoá có thể là một con
số, một từ, hoặc một cụm từ được dùng vào mục đích mã hóa và giải mã dữ liệu.

I. Hệ thống mã hóa đối xứng (Symmetric Cryptosystems)
Symmetric cryptosystems dựa trên một khóa đơn, đó là một chuỗi ngắn với chiều dài không thay đổi. Do
đó, phương pháp mã hóa này được xem như là single-key encryption. Khoá thường là khóa riêng (hoặc


bảo mật) và được dùng để mã hóa cũng như giải mã.

Ghi chú : Trong một số tài liệu, symmetric cryptosystem cũng được xem như khóa scryptosystems riêng
hoặc bí mật và kỹ thuật này cũng được xem như khóa mật mã riêng hoặc khóa mật mã bí mật.

Trước khi hai bên trao đổi dữ liệu, khóa phải được chia sẽ dùng chung cho cả 2 bên. Người gửi sẽ mã hóa
thông tin bằng khóa riêng và gửi thông tin đến người. Trong quá trình nhận thông tin, người nhận sủ dụng
cùng một khóa để giải mã thông điệp.

Phụ thuộc vào chiều dài của khóa, có rất nhiều thuật giải mã hóa đối xứng đã được phát triển cho đến nay.
Sau đây là một số thuật giải thường được sử dụng:


· Tiêu chuẩn mã hóa dữ liệu (Data Encryption Standard (DES)). Nguyên bản DES đề ra giải pháp cho một
khóa có chiều dài lên đến 128 bit. Tuy nhiên, kích thước của khóa đã giảm xuống còn 56 bit bởi chính phủ
Hoa Kỳ trong việc nổ lực tìm ra thuật giải nhanh hơn. Việc giảm chiều dài khóa xuống, phụ thuộc vào tốc
độ xử lý của bộ vi xử lý. Trong phương pháp tấn công Brute Force, các khóa sẽ phát sinh ngẩu nhiên và
được gửi đến đoạn văn bản nguyên mẩu cho tới khi xác định được từ khóa chính xác. Với những khóa có
kích thước nhỏ, sẽ dễ dàng để phát sinh ra chính xác từ khóa và phá vở hệ thống mật mã.

Chú ý : Tên chính thức của DES là Federal Information Processing Standard (FISP) (Tiêu chuẩn xứ lý
thông tin liên bang (Hoa kỳ).

· Bội ba tiêu chuẩn mã hóa dữ liệu (Triple Data Encryption Standard (3DES)). Cũng giống như DES,
3DES cũng sử dụng khóa 56 bit. Tuy nhiên, nó an toàn hơn nhiều do dùng 3 khóa khác nhau để mã hóa
dử liệu. Bộ xử lý thực hiện các bước sau : khóa đầu tiên dùng để mã hóa dữ liệu. Sau đó, khóa thứ hai sẽ
dùng để giải mã dữ liệu vừa được mã hóa. Cuối cùng, khóa thứ ba sẽ mã hóa lần thứ hai. Toàn bộ quá
trình xử lý của 3DES tạo thành một thuật giải có độ an toàn cao. Nhưng bởi vì đây là một thuật giải phức
tạp nên thời gian thực hiện sẽ lâu hơn, gấp 3 lần so với phương pháp DES.


· Ron's Code 4 (RC4). Được phát triển bởi Ron Rivest, thuật giải này sử dụng những từ khóa với chiều dài
có thể biến đổi lên đến 256 bytes. Bởi vì chiều dài của khóa, RC4 được phân loại là một cơ chế mã hóa
mạnh. Nó cũng tương đối khá nhanh. RC4 tạo một dòng bytes ngẩu nhiên và XORs chúng với văn bản
nguyên mẩu. Bởi vì các bytes được phát sinh ngẩu nhiên, RC4 đòi hỏi một khóa mới cho mổi lần gởi
thông tin ra ngoài.

Hệ thống mã hóa đồng bộ đưa ra 2 vấn đề chính. Đầu tiên, bởi vì một khóa vừa được dùng để mã hóa vừa
dùng để giả mã, nếu nó bắt đầu trở thành kẻ xâm nhập, thì tất cả những thông tin sữ dụng khóa này sẽ bị
huỷ. Vì thế, khóa nên thường xuyên thay đổi theo định kỳ.

Một vấn đề khác là khi hệ thống mã hóa đồng bộ xữ lý một lượng thông tin lớn, việc quả lý các khóa sẽ

trở thành một công việc vô cùng khó khăn. Kết hợp với việc thiết lặp các cặp khóa, phân phối, và thay đổi
theo định kỳ đều đòi hỏi thời gian và tiền bạc.

Hệ hống mã hóa đối xứng đã giải quyết vấn đề đó bằng việc đưa ra hệ thống mã hóa đối xứng. Đồng thời,
họ cũng tăng tính năng bảo mật trong suốt quá trình chuyển vận. Chúng ta sẽ được tham khảo thêm về hệ
thống mã hóa bất đối xứng ở phần sau.

II. Hệ Thống Mã Hóa Bất Đối Xứng (Asymmetric Cryptosystems).

Thay vì sử dụng một khóa đơn trong hệ thống mã hóa đối xứng, hệ thống mã hóa bất đối xứng sử dụng
một cặp khóa có quan hệ toán học. Một khóa là riêng tư, chỉ được chính chủ nhân. Khóa thứ hai thì được
phổ biến, công cộng và phân phối tự do. Khóa công cộng thì được dùng để mã hóa và ngược lại khóa
riêng thì được dùng để giải thông tin.

Trong VPN, 2 hệ thống mã hóa bất đối xứng được dùng phổ biến là thuật toán Diffie-Hellman (DH) và
thuật toán Rivest Shamir Adleman (RSA).

. Thuật toán Diffie-Hellman

Trong thuật toán DH, mổi thực thể giao tiếp nhận được một cặp khóa, một được phân phối tới những thực
thể thông tin khác và một được giữ lại riêng. Thuật toán DH làm việc theo những vấn đề chính sau :

1. Người gửi nhận khóa công cộng của người nhận, do khóa này là khóa công cộng nên đều được mọi
người biết.


2. Người gửi thực hiện một thao tác gộp khóa riêng và khóa công công của người nhận, kết quả cho ra
một khóa chung bảo mật (shared secret key).

3. Thông điệp sẽ được mã hóa bằng khóa vừa nhận được.


4. Sau đó thông điệp mã hóa sẽ được gửi đến người nhận.

5. Trong qua trình nhận thông điệp mã hóa, bên nhận sẽ phát sinh một khóa chung mật khác cũng bằng
thao tác tương tự gộp chính khóa riêng của mình với khóa chung của bên gửi.

Giả định cơ bản của thuật toán này là nếu bất kỳ một ai bắt được thông điệp mã hóa, người đó cũng không
thể nào giải mã được bởi vì anh hoặc cô ta không xữ lý khóa riêng của bên nhận được (khóa riêng của anh
hoặc cô ta). Dữ liệu được trao đổi dựa trên thuật toán Diffie-Hellman được mô tả ở hình:

Mặc dù thuật toán DH có một độ an toàn cao hơn so với hệ thống mã hóa đối xứng, nhưng cũng gặp một
số vấn đề khó khăn. Phải đảm bảo chắc chắn rằng khóa công cộng phải được trao đổi trước khi quá trình
trao đổi dữ liệu thực sự được xác định. Cho ví dụ : nếu 2 bên trao đổi khóa công cộng cho nhau qua môi
trường không an toàn, như Internet, điều đó có thể làm cho khóa công cộng có thể bị bắt giữ trước bởi một
người xâm phạm nào đó, sau đó người này sẽ gửi khóa công cộng của mình cho cả hai bên đầu cuối đang
thực hiện trao đổi . Trong trường hợp này, người xâm nhập sẽ dễ dàng mắc vào nghe lén thông tin của hai
bên đầu cuối bởi vì cả hai bên đầu cuối đều trao đổi dữ liệu thông qua khóa công cộng của người xâm
phạm. Đây là một dạng xâm nhập được biết như một kiểu tấn công Man-in-the-Middle.

Thuật toán Rivest Shamir Adleman (RSA), sẽ được tham khảo tiếp theo sau sẽ giải quyết hiệu quả phương
pháp tấn công Man-in-the-Middle mà đã nảy ra trong thuật toán DH. Thuật toán RSA nổi lên như là một
cơ chế mã hóa bất đối xứng khá mạnh.

Thuật toán Rivest Shamir Adleman (RSA)

Thuật toán RSA triển khai quá trình xác nhận bằng cách sử dụng chữ ký điện tử theo các bước sau :

1. Khóa công cộng của người gửi được yêu cầu và được dùng cho người nhận và sau đó được chuyễn
hướng về phía trước (forward).



2. Người gửi sử dụng hàm băm để làm giảm kích thước mẩu tin gốc. Thông điệp tổng hợp thì được hiểu
như là một thông điệp phân loại (message digest (MD)).

3. Người gửi mã hóa thông điệp phân loại bằng khóa riêng của nó được rút ra từ sự phát sinh chữ ký điện
tử độc nhất.

4. Thông điệp và chữ ký điện tử được kết hợp và chuyễn hướng đến người nhận.

5. Trong lúc nhận thông điệp mã hóa, người nhận phục hồi lại thông điệp phân loại bằng cách sử dụng
cùng một hàm băm như người gửi.

6. Người nhận sau đó 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. Người nhận sau đó sẽ so sánh thông điệp phân loại vừa được phục hồi (bước 5) và thông điệp phân loại
nhận được từ chữ ký điện tử (bước 6). Nếu cả hai đồng nhất, tức là dữ liệu không bị chặn đứng, giả mạo
hoặc chỉnh sửa trong suốt quá trình trao đổi. Ngược lại, dữ liệu sẽ không được chấp nhận, bị từ chối.

RSA bảo đảm an toàn và bảo mật trong chuyến đi của dữ liệu bởi vì người nhận kiểm tra sự đúng đắn của
dữ liệu qua 3 lần (bước 5, 6 và 7). RSA cũng làm đơn giản hóa công việc quản lý khóa. Trong cách mã
hóa đối xứng, n2 khóa được yêu cầu nếu trong quá trình trao đổi có n thực thể. Bằng cách so sánh, cách
mã hóa bất đối xứng chỉ đòi hỏi 2*n khóa



×