You are on page 1of 5

Chương I: Cơ sở của chữ ký số, các loại mật mã và mã hóa khối

1.Một số khái niệm về mã hóa


+ Trong ngành mật mã học, mã hóa là quá trình dùng để biến thông tin từ dạng
này sang dạng khác và ngăn những người không phận sự tiếp cận vào thông tin
đó. Bản thân việc mã hóa không ngăn chặn việc thông tin bị đánh cắp, có điều
thông tin đó lấy về cũng không xài được, không đọc được hay hiểu được vì đã
được làm biến dạng đi rồi.
+ Mã hóa sẽ mang lại tính an toàn cao hơn cho thông tin, đặc biệt là trong thời
đại Internet ngày nay, khi mà thông tin phải đi qua nhiều trạm trung chuyển
trước khi đến được đích. Nếu không có mã hóa, khả năng thông tin của bạn sẽ
bị ai đó xem trộm trong quá trình truyền tải, rồi lợi dụng để làm việc xấu là
hoàn toàn hiện hữu.
+ Về lý thuyết, bất kì thông điệp mã hóa nào cũng có thể bị giải mã mà không
cần biết về thuật toán hoặc các khóa mã hóa, vấn đề là mất bao lâu và nguồn
lực tính toán cần thiết là như thế nào.
2.Các loại mã hóa dữ liệu
Mã hóa cổ điển
+ Mã hoá cổ điển là cách đơn giản nhất, tồn lại lâu nhất trên thế giới và không
cần khóa bảo mật, chỉ cần người gửi và người nhận cùng biết về thuật toán này
là được.
+ Tuy nhiên, giải pháp mã hóa này được xem là không an toàn, vì nếu một
người thứ ba biết được thuật toán thì xem như thông tin không còn bảo mật nữa.
Việc giữ bí mật thuật toán trở nên rất quan trọng, và không phải ai cũng có thể
giữ bí mật đó một cách trọn vẹn. Có khả năng người đó sẽ rò rỉ ra, hoặc có ai đó
ngồi giải ra thuật toán thì xem như chúng ta thua cuộc.
+ Một số mã hóa cổ điển như: Mã hóa dịch vòng, Mã hóa thay thế, Mã hóa
Affine.
Mã hóa một chiều (hash)
+ Phương pháp này dùng để mã hóa những thứ không cần dịch lại nguyên bản
gốc. Ví dụ, khi bạn đăng nhập vào Tinh tế, mật khẩu mà bạn nhập sẽ được
chuyển thành một chuỗi dài các kí tự bằng một thứ gọi là hash function.
Chuỗi này sẽ được lưu vào cơ sở dữ liệu, chứ không lưu mật khẩu thô của bạn
nhằm tăng tính bảo mật. Lỡ hacker có trộm dữ liệu thì cũng chỉ thấy những thứ
như FIiyXYB547bhvyuuUIbZ chứ không biết password thật của bạn là gì.
Mỗi lần bạn đăng nhập, hash function sẽ “băm” password thật của bạn thành
chuỗi kí tự rồi so sánh nó với cái trong cơ sở dữ liệu, nếu khớp thì đăng nhập
tiếp, không thì báo lỗi. Chúng ta không có nhu cầu dịch ngược chuỗi nói trên ra
lại thành password thật để làm gì cả.
+ Nói thêm về hash function, nhiệm vụ của nó là chuyển một chuỗi có độ dài
bất kì thành chuỗi kí tự có độ dài cố định. Ví dụ, nếu bạn quy định chuỗi kí tự
sau khi “băm” sẽ dài 10 kí tự thì dù đầu vào của bạn có bao nhiêu chữ đi nữa thì
kết quả nhận được sẽ luôn là 10 và chỉ 10 kí tự mà thôi.
+ Đặc điểm của hash function là trong cùng 1 điều kiện, dữ liệu đầu vào như
nhau thì kết quả sau khi băm cũng sẽ y hệt như nhau. Nếu chỉ đổi một chút xíu
thôi, có khi chỉ là 1 kí tự nhỏ thì chuỗi kết quả sẽ khác hoàn toàn.
+ Cũng vì vậy mà người ta dùng hash function để kiểm tra tính toàn vẹn của dữ
liệu. Ví dụ, trước khi gửi một tập tin Word cho người bạn thì mình dùng mã hóa
một chiều và tạo ra được chuỗi sau băm là DFYUBUfyeufuefu. Khi người bạn
đó tải tập tin về máy, nếu nó băm và cũng nhận được chuỗi DFYUBUfyeufuefu
thì có nghĩa là tập tin của mình không bị can thiệp bởi hacker, còn nếu kết quả
khác thì có nghĩa là quá trình truyền tải có thể đã bị lỗi làm mất một phần dữ
liệu, hoặc tệ hơn là có ai đó đã xén bớt hay thêm vào thứ gì đó rồi.
+ Hiện nay, hai thuật toán hash function thường được dùng nhất là MD5 và
SHA. Nếu bạn tải tập tin trên mạng thì đôi khi sẽ thấy dòng chữ MD5 do tác giả
cung cấp, mục đích là để bạn so sánh file đã tải về với file gốc xem có bị lỗi gì
không.
Mã hóa đối xứng (symmetric key encryption)
+ Là những hệ mật được sử dụng chung 1 khóa trong quá trình mã hóa và mã
hóa. Do đó khóa phải được giữ bí mật tuyệt đối.
+ Một số hệ mật mã khóa đối xứng hiện đại mà mình thấy hay được sử dụng là
DES, AES, RC4, RC5,...
+ Cách thức hoạt động:
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). 
Mã hóa bất đối xứng (public key encryption)
+ Có thể hiểu là người ta dùng hai chìa khóa khác nhau để khóa và mở khóa
thông tin bí mật. Public key sẽ được công khai và được gửi đi đến đối tượng cần
mã hóa thông tin, còn private key được giữ bí mật và nó đóng vai trò như chìa
khóa vạn năng có thể mở được tất cả thông tin được khóa bằng public key.
Hầu như các ứng dụng bạn dùng hàng ngày hiện nay như Facebook, Gmail,
Amazon, PayPal,… đều sử dụng giao thức HTTPs. Có thể hiểu là giao thức
HTTPs an toàn hơn HTTP vì toàn bộ thông tin truyền đi giữa client và server
được bảo vệ bởi bộ mã hóa SSL/TSL. SSL/TSL này hoạt động dựa trên cả hai
loại mã hóa đối xứng và bất đối xứng. Nhờ nó mà chúng ta có thể đảm bảo bí
mật khi thực hiện những giao dịch có chứa thông tin nhạy cảm trên Internet mà
không bị đánh cắp thông tin trong suốt quá trình truyền nhận dữ liệu. Có thể
nói, nếu không có mật mã, đặc biệt là mã hóa bất đối xứng thì không có thương
mại điện tử.
+ Điểm yếu của mã hoá đối xứng được khắc chế trong mã hoá bất đối xứng. Ý
tưởng là thay vì gửi chìa khoá cho phía client, thì server sẽ gửi ổ khoá, để client
khoá thông điệp bí mật trong một chiếc hộp, và chỉ có server có thể giải mã
được. Cho nên các client sẽ không đọc được thông điệp của nhau, và chỉ có
sever với private key mới mở khoá được những chiếc hộp này.
Mã hóa RSA
+ RSA là một trong những hệ thống mã hóa bất đối xứng được sử dụng rộng rãi.
Nó được đặt theo tên của 3 nhà khoa học MIT thiết kế ra nó là: Ron Rivest, Adi
Shamir và Leonard Adleman. Ý tưởng then chốt để đảm bảo tính an toàn của
RSA là dựa trên sự khó khăn trong việc phân tích nhân tử của 2 số nguyên tố
lớn. (a x b = c, tìm ngược lại a,b từ c là phân tích nhân tử).
+ Hệ thống mã hoá RSA bao gồm 4 bước: key generation, key distribution,
encryption và decryption. Vì để đảm bảo tính bí mật, nên mỗi hệ thống khác
nhau cần tạo ra các public, và private key khác nhau. Sau quá trình handshake
và public key được gửi tới phía client thì thông tin mới chính thức được mã hoá
khi server và client giao tiếp với nhau.
+ Chữ ký số trong RSA
Khi tạo chữ ký số thì người gửi thông tin sẽ sử dụng private còn người nhận sử
dụng public key phục vụ cho việc nhận chữ ký. Thông tin được gửi qua RSA
khá dài, gây ra trở ngại lớn đến việc mã hóa ở mặt thời gian. Vì vậy, trong thực
hành chữ ký số thường sử dụng phương pháp mã hóa giá trị hash của bản tin.
Việc này mang lại rất nhiều lợi ích như:
Các hàm hash là hàm 1 chiều, vì vậy dù có được hash cũng không thể biết được
bản tin gốc như thế nào.
Độ dài hash là cố định và thường rất nhỏ, vì vậy chữ số sẽ không chiếm quá
nhiều dung lượng.
Mã hóa khối
+ Các hệ mã khối nổi tiếng đó là DES có kích thước khối là 64 (tức là mỗi lần
mã hóa một khối bản rõ 64 bits và cho ra khối bản mã 64 bít) và kích thước khóa
là 56 bits; AES có kích thước khối là 128 bit, và kích thước khóa là 128, 192
hoặc 256bit.
+ Thông thường block cipher chậm hơn so với stream cipher, nhưng làm việc tốt
với những khối dữ liệu đã biết trước kích thước, ví dụ mã hóa file, mã hóa tin
nhắn trên các giao thức như là HTTP ...
+ Các chế độ sử dụng Mã khối Thuật toán mã khối có đầu vào và đầu ra là các
khối có độ dài xác định (như ở DES là 64bit). Để mã hóa một dữ liệu có độ dài
tùy ý thì ta phải cắt dữ liệu thành nhiều khối đ ơn v ị và áp d ụng thuật toán mã
nhiều lần, rồi sau sẽ kết hợp các khối dữ liệu thu được theo một sơ đồ nào đó.
+ Có nhiều loại sơ đồ, hay còn gọi là chế độ mật mã khác nhau, với ưu nhược đi
ểm khác nhau và được áp dụng cho các nhu cầu khác nhau.
+ Các chế độ hay dùng:
Chế độ bảng tra mã điện tử (Electronic code book -ECB) Trong chế độ này, các
khối được tạo mật mã riêngbiệt, độc lập. Do đó, những khối tin gi ống nhau sẽ
được mã hóa thành những khối mã giống nhau.Điều này trở nên nguy hiểm, t ạo
miếng đất màu mỡ cho kẻ địch vận dụng tấn công replay cũng như thao tác biên
tập theo khối.Kẻ thù có thể nghe trộm và tìm cách thu thập các mẫu tin-mã phổ
biến, sau đó cắt ghép và trộn lẫn để tạo ra các bản mã giả mã bên nhận không
phát hiện được.
Chế độ mã móc xích (Cipher Block Chaining -CBC) Trong chế độ này, mỗi
khối tin trước khi được mã hóa thì được XOR với khối mã sinh ra từ bước trước
đó. Như vậy các khối mã đều phụ thuộc rất chặt vào nhau theo kiểu “móc xích”.
Cũng qua đó có thể thấy rằng CBC sẽ tạo ra các khối bản mã khác nhau khi các
khối tin đưa vào là giống nhau tức là che giấu được các mẫu tin-mã phổ biến
khỏi sự theo dõi của kẻ thù, chặn đứng khả năng phá hoại bằng tấn công replay
và biên tập nói trên. Tại bước đầu tiên, khi chưa có khối mã sinh ra từ bước
trước, khối tin đầu sẽ được XOR với một vecto khỏi đầu, chọn ngẫu nhiên, ký
hiệu là IV (initial vector).
Chế độ Mã phản hồi k-bit (k-bit Cipher Feedback Mode -CFB) Với một số ứng
dụng thời gian thực yêu cầu dòng dữ liệu truyền đến phải liên tục hơn là gián
đoạn (như là chuỗi ký tự truyền giữa host và terminal phải tạo thành dòng ký tự
liên tục). Do đó các chế độ mật mã khối xử lý và truyền theo từng khối một trở
nên không thích hợp; các mã stream cipher với đơn vị xử lý là ký tự -khối 8 bit
sẽ là thích hợp hơn với dạng ứng dụng này.Chế độ CFB là một cải tiến cho phép
tạo ra khả năng truyền khối nhỏ k-bit (với k tùy ý) trong khi vẫn dùng thuật toán
mã khối. Dòng tin đi vào được ‘múc’ bằng từng ‘gầu’ với dung lượng k bit mà k
là tham số thay đổi được. Thuật toán mật mã khối E chạy liên tục như một lò
nấu:ở mỗi bước người ta lấy k bit (bên trái nhất) của vector đầu ra từ E để bỏ
vào ‘gầu’ k bit tin, chúng được XOR với nhau. Kết quả k bit vừa được đem
truyền đi, vừa được bỏ lại vào đầu vào của thuật toán mã khối: vecto đầu vào
được dịch trái k vị trí và k bit phải nhất sẽ được thay thế bởi k bit lấy từ gầu tin.
Như vậy có thể thấy rằng thuật toán mã khối được thực hiện như một hàm sinh
các số giả ngẫu nhiên k-bit, các gía trị này lại được XOR với các phần tử k-bit
tin lấy vào để tạo ra mã truyền đi.Qua trình giải mã thì được tiến hành theo
nguyên tắc đối xứng.Rõ ràng chế độ này cũng cung cấp các khả năng như của
chế độ CBC, thêm vào đó nó cho phép truyền tin với khối ngắn tùy ý, đảm bảo
các ứng dụng về truyền-xử lý liên tục.
Chế độ mật mã kết quả phản hồi (Output Feedback Mode –OFB). Chế độ này
cũng khá gần với hai chế độ trên đây, nhưng các phép XOR để tạo ra khối
ciphertext là độc lập riêng rẽ, chứ không có sự phụ thuộc (móc xích) như trước.
Các khối plaintext được XOR với các đầu ra – output – của các hàm sinh mã
(thuật toán mật mã khối) mà riêng các phần tử output của hàm mã hóa này là
vẫn phụ thuộc móc xích (nên được gọi là output feedback). Tuy nhiên chuỗi
móc xích này có thể được thực hiện offline thông qua tiền xử lý, trước khi thực
sự có thông tin văn bản cần gửi đi. Chính vì vậy khả năng thời gian tính toán có
thể rút ngắn nhiều. Ngoài ra, chế độ này cũng cho phép mã khối nhỏ, như
stream cipher, giống như với chế độ CFB vậy.

Tài liệu tham khảo:


https://tailieu.vn/doc/ma-khoi-1315243.html
https://hostingvietnam.vn/ma-hoa-bat-doi-xung/
https://www.techsignin.com/cong-nghe/khai-niem-ve-ma-hoa/

You might also like