You are on page 1of 6

Mã hóa khóa đối xứng là gì?

Mã hóa khóa đối xứng (hay còn gọi là mã hóa khóa đồng bộ) là một thuật toán mà
trong đó cả hai quá trình mã hóa và giải mã đều dùng một khóa. Để đảm bảo tính
an toàn, khóa này phải được giữ bí mật. Vì thế các thuật toán mã hóa khóa đồng bộ
này còn có tên gọi khác là mã hóa với khóa bí mật (secret key cryptography). Một
điều cần lưu ý là khi một người mã hóa một thông điệp gốc (plaintext) thành thông
điệp mã hóa bằng một khóa K (thuật toán mã hóa) (ciphertext) rồi gửi ciphertext
cho đối tác thì đối tác muốn giải mã cũng cần phải có khóa K, nghĩa là trước đó hai
đối tác đã phải trao đổi cho nhau chia sẻ để cùng biết được khóa K. Trong ví dụ về
gậy mã hóa của người Sparte, các đối tác phải bàn giao cho nhau để sở hữu những
cây gậy giống nhau trước khi trao đổi thông điệp. Caesar muốn cho tướng lĩnh
dưới quyền đọc được mật thư của mình thì trước khi ra đi các tướng lĩnh phải được
Hoàng Đế triệu tập vào phòng kín để báo cho biết số bước xoay vòng và tất nhiên
điều này (chìa khóa) phải được giữ kín!

Cách thức hoạt động

Người gửi sử dụng khóa chung (Ks) để mã hóa thông tin rồi gửi cho nguời nhận.

Người nhận nhận được thông tin đó sẽ dùng chính khóa chung (Ks) để giải mã.

Một sơ đồ mã hóa đối xứng thường sử dụng một khóa đơn được chia sẻ giữa 2
hoặc nhiều người dùng với nhau. Khóa duy nhất này sẽ được dùng cho cả 2 tác vụ
mã hóa và giải mã các văn bản thô (các tin nhắn hoặc mảnh dữ liệu cần được mã
hóa). Quá trình mã hóa bao gồm việc chạy văn bản thô (đầu vào) thông qua một
thuật toán mã hóa còn gọi là mật mã (cipher) sẽ lần luợt tạo ra các bản mã -
ciphertext (đầu ra).

Khi sơ đồ mã hóa đủ mạnh thì cách duy nhất để đọc và truy cập được các thông tin
chứa trong các bản mã là sử dụng khóa tương ứng để giải mã. Quá trình giải mã về
cơ bản sẽ chuyển đổi các bản mã trở về dạng văn bản thô ban đầu.
Mức độ bảo mật của các hệ thống mã hóa đối xứng sẽ phụ thuộc vào độ khó trong
việc suy đoán ngẫu nhiên ra khóa đối xứng theo hình thức tấn công brute force.
Lấy ví dụ, để dò ra mã hóa của 1 khóa 128-bit thì sẽ mất tới vài tỷ năm nếu sử
dụng các phần cứng máy tính thông thường. Thông thường, các khóa có độ dài tới
256-bit có thể được xem là có độ bảo mật cao tuyệt đối, có khả năng chống lại
được hình thức tấn công brute force từ các máy tính lượng tử. 

Trong số các sơ đồ mã hóa đối xứng được sử dụng ngày nay thì có 2 loại thông
dụng nhất là nền tảng mật mã block và stream. Trong mật mã block, dữ liệu được
nhóm vào từng khối theo kích thước định trước, mỗi khối được mã hóa bằng khóa
đối xứng và thuật toán mã hóa (vd: các văn bản thô 128-bit sẽ được mã hóa thành
các bản mã 128-bit). Khác với mật mã block, mật mã stream không mã hóa dữ liệu
văn bản thô theo block mà mã hóa theo các gia số 1-bit (mỗi văn bản thô 1-bit
được mã hóa thành bản mã 1-bit mỗi lần). 

Ví dụ:

Trong ví dụ về gậy mã hóa của người Sparte, các đối tác phải bàn giao cho nhau để
sở hữu những cây gậy giống nhau trước khi trao đổi thông điệp. Caesar muốn cho
tướng lĩnh dưới quyền đọc được mật thư của mình thì trước khi ra đi các tướng lĩnh
phải được Hoàng Đế triệu tập vào phòng kín để báo cho biết số bước xoay vòng và
tất nhiên điều này (chìa khóa) phải được giữ kín!

Giả sử nếu An chỉ gửi thông điệp đã mã hóa cho Bình mà không hề báo trước về
thuật toán mã hóa đã sử dụng, Bình sẽ chẳng hiểu trong thông điệp của An muốn
nói gì. Vì thế bắt buộc An phải thông báo cho Bình về chìa khóa và thuật toán sử
dụng tại một thời điểm nào đó trước đấy.
Bình và An có cùng một khóa KA-B . Giả sử m là thông điệp gốc, khóa này được
xây dựng sao cho: m = KA-B (KA-B (m)): dùng KA-B vừa để mã hóa vừa để giải mã.

Mã hóa khóa đối xứng có thể phân thành hai nhóm phụ

- Thuật toán mã hóa theo khối (Block ciphers): trong đó từng khối dữ liệu trong
văn bản gốc ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài. Độ
dài mỗi khối gọi là kích thước khối (block size), thường được tính bằng đơn vị bit.
Ví dụ thuật toán 3-Way có kích thước khối bằng 96 bit. Một số thuật toán khối
thông dụng là: DES, 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish, MARS,
Serpent, Twofish, GOST...

- Thuật toán mã hóa dòng (Stream ciphers): trong đó dữ liệu đầu vào được mã
hóa từng bit một. Các thuật toán dòng có tốc độ nhanh hơn các thuật toán khối,
được dùng khi khối lượng dữ liệu cần mã hóa chưa được biết trước, ví dụ trong kết
nối không dây. Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi
khối là 1 bit. Một số thuật toán dòng thông dụng: RC4, A5/1, A5/2, Chameleon

Ứng dụng trong các hệ thống máy tính hiện đại

Các thuật toán mã hóa đối xứng được sử dụng nhiều trong các hệ thống máy tính
hiện đại với mục đích tăng cường bảo mật dữ liệu và cho người dùng. Chuẩn Mã
Hóa Cấp Cao (AES) được sử dụng rộng rãi trong các ứng dụng nhắn tin an toàn lẫn
lưu trữ đám mây, chính là một ví dụ điển hình của mật mã đối xứng. 

Ngoài các ứng dụng phần mềm, AES còn được tích hợp trực tiếp vào các phần
cứng máy tính. Các sơ đồ mã hóa đối xứng nền tảng phần cứng thường sử dụng
chuẩn AES 256, một biến thể đặc biệt của Chuẩn Mã Hóa Cấp Cao AES với kích
thước khóa là 256 bit.

Một điểm đáng lưu ý ở đây là blockchain của Bitcoin lại không sử dụng mã hóa


như nhiều người vẫn nghĩ. Thay vào đó, nó sử dụng một loại thuật toán chữ ký số
đặc biệt (DSA) còn gọi là Thuật toán chữ ký số đường Ellip (ECDSA) có chức
năng tạo ra các chữ ký số mà không cần sử dụng tới mã hóa. 

Một điểm dễ gây nhầm lẫn ở đây là thuật toán ECDSA hoạt động dựa theo mật mã
đường ellip (elliptic-curve cryptography) - loại mật mã có khả năng ứng dụng thực
thi đa tác vụ bao gồm mã hóa, chữ ký số và tạo ra các số giả ngẫu nhiên. Tuy
nhiên, ECDSA tự bản thân nó lại không thể thực hiện mã hóa được. 
Ưu và nhược điểm 

Ưu điểm nổi bật của mã hóa đối xứng là tốc độ lập mã, giải mã khá nhanh chóng.
Hiện nay có nhiều phần mềm thương mại hỗ trợ thuật toán mã hóa đối xứng hữu
hiệu và rất phổ dụng. 

Ưu điểm thứ hai là tuy có nhiều nghiên cứu thám mã đã thực hiện nhưng với các
thuật toán được cải tiến gần đây như 3-DES và nhất là AES thì độ bảo mật khá cao,
trong thực tế việc phá mã cũng không dễ dàng.

Mặc dù mã hóa đối xứng mang lại khá nhiều lợi ích rộng rãi, nhưng nó lại sở hữu
một bất lợi khá lớn: vấn đề cố hữu trong việc truyền tải các khóa dùng để mã hóa
và giải mã dữ liệu. Nếu các khóa này được chia sẻ lên các kết nối không an toàn thì
nguy cơ bị can thiệp bởi một bên thứ 3 là rất lớn. Khi một người dùng không được
ủy quyền chiếm được quyền truy cập một khóa đối xứng thì mọi dữ liệu được mã
hóa bằng khóa đó sẽ bị xâm phạm.

Như trong ví dụ nói ở đầu chương về việc trao đổi thông điệp giữa An và Bình.
Bình nhận được thông điệp đã mã hóa của An, muốn giải mã được thì Bình phải có
chìa khóa mã của An. An không thể chuyển giao khóa mã đồng thời với thông điệp
vì như vậy thì việc mã hóa trở thành vô tác dụ

ng.

Vì vậy An phải dùng một phương pháp nào đó để chuyển giao khóa giải mã cho
Bình trước khi gửi thông điệp. Mà dù dùng phương thức thông tin nào trong môi
trường mở: gửi thư, E-mail, gọi điện thoại v.v. thì vẫn có nguy cơ có người thứ ba
nắm bắt được khóa mã và kết quả vẫn như thế!

Để giải quyết vấn đề này, hiện này nhiều giao thức website đã sử dụng kết hợp cả
mã hóa đối xứng và bất đối xứng nhằm thiết lập các kết nối an toàn. Giao thức mã
hóa Bảo mật Tầng Vận tải (TLS) là một trong nhiều ví dụ điển hình được sử dụng
để bảo mật cho phần lớn mạng internet ngày nay. 

Cần lưu ý rằng bất cứ loại mã hóa máy tính nào cũng đều rất dễ bị khai thác nếu
không được vận hành đúng cách. Mặc dù các khóa có độ dài đủ lớn sẽ triệt tiêu
được các nguy cơ về tấn công brute force toán học, nhưng nếu có sai sót trong việc
triển khai từ phía các lập trình viên thì sẽ tạo ra các điểm yếu mở đường cho hacker
thực hiện các vụ tấn công mạng. 
Kết luận 

Nhờ có các ưu điểm vượt trội về tốc độ, tính giản đơn và bảo mật tốt, mã hóa đối
xứng hiện được sử dụng rộng rãi trong rất nhiều ứng dụng từ bảo mật lưu lượng
truy cập internet cho tới bảo vệ dữ liệu lưu trữ trên các máy chủ điện toán đám
mây. Mặc dù thường phải được kết hợp với mã hóa bất đối xứng để giải quyết các
vấn đề về chuyển tiếp các khóa được an toàn thì các sơ đồ mã hóa đối xứng vẫn
giữ được vai trò làm một thành tố quyết định đối với bảo mật trong máy tính hiện
tại.  

MỘT SỐ PHẦN MỀM MÃ HÓA ĐỐI XỨNG

Blowfish

- Blowfish là một thuật toán mã hóa đối xứng (64 bit cipher) do Bruce Schneier
thiết kế năm 1993. Blowfish có các độ dài khóa từ 32 đến 448 bit. Người ta đã
nghiên cứu phân tích khá kỹ về các thuộc tính của Blowfish và nó cũng được đánh
giá là một thuật toán mã hóa mạnh.

CAST

-CAST được đặt theo tên viết tắt của các nhà phát minh ra nó là Carlisle Adams và
Stafford Tavares. CAST là một thuật toán mã hóa rất phổ biến, mã hóa khối cipher
64 bit và cho phép độ dài khóa lên đến 128 bit.

IDEA

- Thuật toán mã hóa dữ liệu quốc tế IDEA (International Data Encryption


Algorithm) là một thuật toán mã hóa đối xứng do TS. X. Lai và GS. J. Massey xây
dựng nhằm thay thế thuật toán DES chuẩn. IDEA cũng sử dụng khóa có độ dài là
128 bit. Kích thước lớn của khóa làm cho IDEA rất khó bị phá vỡ bằng tấn công
bạo lực do thời gian duyệt tất cả các khả năng có thể có của khóa là quá lớn.

RC2
- RC2 là một thuật toán mã hóa có kích thước khóa thay đổi. Ron Rivest đã thiết
kế RC2 cho Công ty An toàn Dữ liệu RSA nhưng mọi chi tiết vẫn giữ bí mật, chưa
được công bố. 50 Giáo trình mật mã học và hệ thống thông tin an toàn

RC4

- RC4 cũng là một thuật toán do Ron Rivest phát triển năm 1987. Đấy là một thuật
toán mã hóa dòng với khóa có kích thước thay đổi. Kích thước khóa của RC4 có
thể đạt tới 2048 bit (thông thường là 256 bit)

RC6

-RC6 là thuật toán mã hóa khối đối xứng do Ron Rivest, Matt Robshaw, Ray
Sidney, và Yiqun Lisa Yin thiết kế nhằm đáp ứng yêu cầu của cuộc thi AES
(Advanced Encryption Standard). Thuật toán RC6 là phần mềm lọt vào chung kết
của cuộc thi đó và được chọn là phần mềm mã hóa tiên tiến tiêu chuẩn (AES).

Serpent

- Serpent là thuật toán mã hóa khối đối xứng do Ross Anderson, Eli Biham and
Lars Knudsen phát triển. Serpent có thể làm việc với nhiều tổ hợp khóa có độ dài
khác nhau. Serpent cũng là một trong 5 phần mềm lọt vào chung kết cuộc thi AES.

Twofish

-Twofish là một thuật toán mã hóa đối xứng khối, có kích thước khối là 128 và
chấp nhận các khóa có mọi độ dài cho đến 256 bit. Twofish do Bruce Schneier,
John Kelsey, Chris Hall, Niels Ferguson, David Wagner and Doug Whiting thiết
kế. Viện quốc gia về tiêu chuẩn và công nghệ NIST (The National Institute of
Standards and Technology) đã chấp nhận đầu tư để Twofish trở thành một trong
các dự án thay thế cho thuật toán mã hóa DES trước đây.

You might also like