Tải bản đầy đủ (.docx) (68 trang)

Đồ án tốt nghiệp nghiên cứu, cài đặt thuật toán mật mã elgaman

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 (1.9 MB, 68 trang )

1

MỤC LỤC

DANH MỤC CÁC TỪ VIẾT TẮT
STT

Ký hiệu

Nghĩa tiếng anh

1

MD5

Message Digest 5

2

ECC

Elliptic Curve Cryptography

3

MAC

Message Authentication Code

4


NSA

National Security Agency

5

SHA

Secure Hash Algorithm

6

DSA

Digital Signature Algorithm

7

NIST

National Institute of Standards and
Technology

8

DHKE

Diffie - Hellman Key Exchange



2

DANH MỤC HÌNH VẼ

Như chúng ta đã biết, ngày nay với sự xuất hiện của máy tính, các tài liệu
văn bản giấy tờ và các thông tin quan trọng đều được số hóa và xử lý trên máy
tính, được truyền đi trong một môi trường mà mặc định là không an toàn. Do đó
yêu cầu về việc có một cơ chế, giải pháp để bảo vệ sự an toàn và bí mật của các
thông tin nhạy cảm, quan trọng ngày càng trở nên cấp thiết. Mật mã học chính là
ngành khoa học đảm bảo cho mục đích này. Khó có thể thấy một ứng dụng Tin
học có ích nào lại không sử dụng các thuật toán mã hóa thông tin. Với sự phát
triển nhanh chóng của công nghệ thông tin giúp ích rất nhiều cho các cơ quan, tổ
chức,… Bên cạnh đó cũng tồn tại rất nhiều yếu tố cần phải giải quyết như đánh
cắp thông tin hay giả mạo thông tin… Làm ảnh hưởng và tổn hại nghiêm trọng
đến tình hình an ninh mạng. Do đó bảo mật và xác thực thông tin luôn là vấn đề
cấp thiết được đặt ra cho các cơ quan chức năng... Đặc biệt là trong nền kinh tế
thị trường hiện nay, thông tin luôn đóng vai trò quan trọng trong các chiến lược
kinh doanh của đơn vị.
Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng
giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và
ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng.
Các kết quả của khoa học mật mã ngày càng được triển khai trong nhiều lĩnh
vực khác nhau của đời sống, xã hội, trong đó phải kể đến rất nhiều những ứng


3

dụng đa dạng trong lĩnh vực dân sự, thương mại...Các ứng dụng mã hóa
thông tin cá nhân, trao đổi thông tin kinh doanh, thực hiện các giao dịch điện
tử qua mạng... đã trở nên gần gũi và quen thuộc với mọi người.

Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên
cứu và ứng dụng của mật mã học ngày càng trở nên đa dạng hơn, mở ra
nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với
những đặc trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuần
là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần
được nghiên cứu và giải quyết, ví dụ như chứng thực nguồn gốc nội dung
thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sở
hữu mã khóa (chứng nhận khóa công cộng), các quy trình giúp trao đổi thông
tin và thực hiện giao dịch điện tử an toàn trên mạng.
Ngoài những lợi ích to lớn Internet đem lại cho xã hội. Internet còn tạo
điều kiện cho các hacker có thể xâm nhập vào hệ thống các máy chủ, để tìm
kiếm và đánh cắp thông tin nhằm phục vụ cho lợi ích riêng của mình. Hơn nữa,
khi thực hiện trao đổi qua mạng Internet, người nhận không thể xác thực được
nguồn gốc của thông tin, dẫn đến tình trạng thông tin dễ bị giả mạo bởi người
khác.
Vì vậy trước những yêu cầu cấp thiết đó, vấn đề đặt ra ở đây là làm thế
nào để bảo vệ được các thông tin quan trọng, ngăn chặn được những hình thức
tấn công, truy xuất dữ liệu bất hợp pháp vào mạng nội bộ. Bên cạnh đó làm thế
nào để khi trao đổi thông tin qua mạng phải bảo đảm thông tin dữ liệu không bị
làm sai lệch và không bị lộ do sự xâm nhập của kẻ tấn công. Việc nghiên cứu và
ứng dụng giải pháp mật mã là cách tốt nhất có thể đáp ứng đầy đủ những vấn đề
đặt ra theo yêu cầu.


4

Chương 1
TỔNG QUAN VỀ LÝ THUYẾT MẬT MÃ
1.1. Giới thiệu chung về an toàn bảo mật thông tin
Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an

toàn bảo mật thông tin (Information Security), chúng ta thường hay nghĩ đến
các biện pháp nhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách
an toàn và bí mật. Chẳng hạn là các biện pháp như:


Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được
chuyển nguyên vẹn đến người nhận hay không.



Dùng mật mã mã hóa thông điệp để chỉ có người gửi và người nhận hiểu
được thông điệp. Phương pháp này thường được sử dụng trong chính trị
và quân sự.



Lưu giữ tài liệu mật trong các két sắt có khóa, tại các nơi được bảo vệ
nghiêm ngặt, chỉ có những người được cấp quyền mới có thể xem tài liệu.
Với sự phát triển mạnh mẽ của công nghệ thông tin, đặt biệt là sự phát triển

của mạng Internet, ngày càng có nhiều thông tin được lưu giữ trên máy vi tính
và gửi đi trên mạng Internet. Và do đó xuất hiện nhu cầu về an toàn và bảo mật
thông tin trên máy tính. Có thể phân loại mô hình an toàn bảo mật thông tin trên
máy tính theo hai hướng chính như sau:


Bảo vệ thông tin trong quá trình truyền thông tin trên mạng (Network Security).


Bảo vệ hệ thống máy tính, và mạng máy tính, khỏi sự xâm nhập phá hoại



5

từ bên ngoài (System Security).
Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến
bộ về điện tử viễn thông và công nghệ thông tin không ngừng được phát triển
ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm, ý
tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới. Bảo vệ an toàn
thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong
thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông
tin dữ liệu. Các phương pháp bảo vệ an toàn thông tin dữ liệu có thể được quy
tụ vào ba nhóm sau:
- Bảo vệ thông tin bằng các biện pháp hành chính.
- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng).
- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm).
Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp với nhau.
Môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương
dễ xâm nhập nhất đó là môi trường mạng và truyền tin. Biện pháp hiệu quả nhất
và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp
thuật toán. Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên
mạng máy tính có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán
trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể
xảy ra đối với thông tin dữ liệu được lưu trữ và trao đổi trên đường truyền tin
cũng như trên mạng. Xác định càng chính xác các nguy cơ nói trên thì càng
quyết định được tốt các giải pháp để giảm thiểu các thiệt hại.
Có hai loại hình thức tấn công xâm phạm thông tin dữ liệu đó là: Tấn công
thụ động và tấn công chủ động.
 Tấn công thụ động (passive attack) có nghĩa là tin tặc sẽ nghe trộm hoặc
theo dõi việc truyền tải các thông điệp nhằm có được thông tin nào đó.



6

Hình 1.1. Hacker nghe trộm nội dung
Hai loại tấn công thụ động ở đây gồm: Giải phóng nội dung thông điệp và
phân tích lưu lượng.
 Giải phóng nội dung thông điệp: Một cuộc nói chuyện qua điện

thoại, một thông điệp e-mail, một tập tin được truyền đi,… đều có
thể chứa những thông tin mật và nhạy cảm. Chúng ta luôn muốn
ngăn chặn kẻ xấu biết được nội dung của những thông tin này.
 Phân tích lưu lượng: Giả sử rằng ta đã có một cách nào đó để che
giấu nội dung của thông điệp để kẻ xấu dù có lấy được thông điệp
cũng không thể trích xuất thông tin từ thông điệp đó. Kỹ thuật phổ
biến để che giấu nội dung là mã hóa. Nếu ta đã có phương thức bảo
vệ bằng mã hóa thích hợp nhưng kẻ xấu vẫn có thể nhìn thấy kiểu
mẫu của những thông điệp được mã hóa này. Kẻ xấu có thể xác định
được vị trí và đặc điểm nhận dạng của các chủ thể đang tham gia
vào quá trình truyền thông và có thể biết được tần suất xuất hiện và
độ dài của các thông điệp đang được trao đổi. Thông tin này có thể
hữu ích trong việc đoán ra bản chất của việc truyền thông đang xảy
ra.


7

Đối với các loại tấn công bị động, chúng ta rất rất khó để phát hiện ra bởi
chúng không hề dính líu tới việc thay đổi dữ liệu. Tuy nhiên, việc ngăn chặn sự
thành công của các cuộc tấn công dạng này là có khả thi. Vì vậy, cần nhấn

mạnh rằng việc đối phó với các loại tấn công bị động thì ngăn chặn tốt hơn là
phát hiện.
 Tấn công chủ động (active attack) là dạng tấn công có thể làm thay đổi
nội dung, xóa bỏ, làm trễ, sắp xếp lại thứ tự hoặc làm lặp lại gói tin tại
thời điểm đó hoặc sau đó một thời gian. Chúng có thể được phân chia
thành bốn loại: Giả mạo, truyền lại thông điệp, thay đổi thông điệp, và từ
chối dịch vụ.
 Giả mạo: Xảy ra khi một thực thể đóng giả làm một thực thể khác.
Trong một cuộc tấn công kiểu này thường có luôn một trong các
dạng còn lại của tấn công chủ động.

Hình 1.2. Hacker giả mạo người gửi


8
 Truyền lại thông điệp: Liên quan tới việc bắt lấy các dữ liệu và sau

đó truyền lại chúng để tạo ra các kết quả mà hệ thống mục tiêu
không hề mong đợi và cho phép. Trong trường hợp này cũng gây tác
hại không kém so với việc giả mạo thông điệp.

Hình 1.3. Hacker sao chép và gửi lại


9
 Thay đổi thông điệp: Một số phần của một thông điệp hợp lệ bị thay

đổi, hoặc thông điệp đó bị cản trở hoặc bị ghi nhận lại (và sau đó bị
thay đổi) để nhằm tạo ra một kết quả trái phép. Ví dụ, một thông
điệp có nội dung là “Cho phép Anh đọc tập tin mật có tên Passwork”

bị sửa thành “Cho phép Em đọc tập tin mật có tên Passwork".

Hình 1.4. Hacker thay đổi thông điệp
 Từ chối dịch vụ: Ngăn chặn hoặc hạn chế việc sử dụng hoặc quản lý
thông thường của các hệ thống thông tin và truyền thông. Loại tấn
công này có một mục đích cụ thể; ví dụ, tin tặc có thể ngăn cấm tất
cả các thông điệp được gửi thẳng tới một đích đến nào đó (ví dụ,
dịch vụ giám sát bảo mật (security audit)).
Thực tế hiện nay thì không có một biện pháp bảo vệ an toàn thông tin dữ
liệu nào là an toàn tuyệt đối. Một hệ thống dù được bảo vệ chắc chắn đến đâu
cũng không thể đảm bảo là tuyệt đối an toàn.


10

1.2. Tổng quan về mật ma
1.2.1. Một số khái niệm cơ bản về mật ma
Mật mã học (khoa học mật mã) là ngành khoa học ứng dụng toán học vào
việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý
nghĩa thông tin cần mã hóa. Đây là một ngành quan trọng và có nhiều ứng dụng
trong đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông tin
đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên
thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng,… cho đến các lĩnh vực
dân sự như thương mại điện tử, ngân hàng, …
Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu
và ứng dụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều
hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những
đặc trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa
và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên
cứu và giải quyết: Chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký

điện tử), chứng nhận tính xác thực về người sở hữu khóa mã (chứng thực khóa
công khai), các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử
an toàn trên mạng,... Những kết quả nghiên cứu về mật mã cũng đã được đưa
vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp
ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ
như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản
lý an ninh của các đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp
dịch vụ multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản
quyền sở hữu trí tuệ đối với thông tin số…


11

Trong mật mã học, mã hóa là phương pháp để biến thông tin (phim ảnh,
văn bản, hình ảnh...) từ định dạng bình thường sang dạng thông tin không thể
hiểu được nếu không có phương tiện giải mã. Có thể khái quát một số khái
niệm và chức năng cơ bản của mật mã học hiện đại:


Bản rõ (plaintext or cleartext): chứa các xâu kí tự gốc, lưu thông tin
chưa mã hóa (có thể đọc được). thông tin trong bản rõ là thông tin cần

mã hóa để giữ bí mật.
• Bản mã (Ciphertext): Chứa các ký tự sau khi đã được mã hoá, mà nội
dung được giữ bí mật.
• Mật mã học (Cryptography): là một môn khoa học nghiên cứu cách
viết bí mật. Là ngành khoa học nghiên cứu việc ứng dụng toán học
vào biến đổi thông tin nhằm mục đích bảo vệ thông tin khỏi sự truy
cập của những người không có thẩm quyền. Có thể hiểu một cách khái
quát, đó là phương thức đảm bảo sự bí mật cho thông tin tại nơi lưu

trữ cũng như khi truyền đi trên mạng. Cho dù sự trao đổi này diễn ra
trên môi trường truyền thông không an toàn.
• Mã hóa (Encryption): là quá trình chuyển đổi thông tin từ dạng có thể
hiểu được, sang dạng không hiểu được để đảm bảo tính bí mật thông
tin.
• Giải mã (Decryption): là quá trình khôi phục lại thông tin ban đầu, từ
dạng thông tin đã được mã hóa.
• Khóa mã (Key): là dãy các ký tự và số dùng làm biến cho các quá
trình mã hóa hay giải mã thông tin.

Quá trình mã hóa và giải mã


12

Hình 1.5. Sơ đồ quá trình thực hiện


Thám mã (Cryptanalysis): là những người phân tích các bản mã.

Hình 1.6. Sơ đồ quá trình viết bí mật thông tin
 Các đặc tính của ma hóa
 Đảm bảo tính bảo mật (secrecy hoặc confidentiality) – Ngăn

chặn được vấn đề xem trộm thông tin. Giải quyết vấn đề bảo
vệ thông tin chống lại sự tìm hiểu nội dung thông tin từ các
đối tượng không có quyền truy nhập chúng.
 Đảm bảo tính toàn vẹn dữ liệu (data integrity) – Chức năng
này đảm bảo khả năng phát hiện sửa đổi trái phép thông tin.
Để đảm bảo toàn vẹn dữ liệu, cần có các phương pháp đơn

giản và tin cậy phát hiện bất kỳ sự can thiệp không mong
muốn vào dữ liệu (các can thiệp như chèn, xóa và thay thế
trong bản tin).


13

 Đảm bảo tính xác thực (authentication) – Tính xác thực
ngăn chặn các hình thức tấn công thay đổi thông điệp, giả mạo
và truyền lại thông điệp, chức năng này có liên hệ với sự định
danh. Vì thế nó được thực hiện xác thực trên cả thực thể (hai
đối tượng trong một phiên liên lạc sẽ định danh lẫn nhau) và
bản thân thông tin (thông tin được truyền trên kênh truyền sẽ
được xác thực về nguồn gốc, nội dung, thời gian gửi,...). Vì
thế vấn đề xác thực trong mật mã được chia thành hai lớp
chính – xác thực thực thể và xác thực nguồn gốc dữ liệu.
 Đảm bảo chống chối từ (non-repudiation) – chức năng này ngăn ngừa một

thực thể từ chối (phủ nhận) một cam kết hoặc hành động trước đó. Khi xuất
hiện tranh chấp vì một thực thể từ chối một hành động chắc chắn đã xảy ra,
một biện pháp giải quyết là cần thiết.
1.2.2. Biểu diễn dưới dạng toán học
Định nghĩa: Hệ thống mật mã, là một bộ bao gồm năm thành phần ( P, C,
K, E, D ) thỏa mãn các điều kiện sau:
• P là tập hữu hạn các bản rõ (plaintext) hoặc thông điệp(message) có thể.
• C là tập hữu hạn các bản mã (ciphertext) có thể.
• K (Key) là tập hữu hạn các bản khóa có thể.
• E (Encrytion) là tập hợp các quy tắc mã hóa có thể.
• D (Decrytion) là tập hợp các quy tắc giải mã có thể.
• Với mỗi khóa k ∈ K, có một phép biến đổi mã hóa Ek∈ E và một phép


biến đổi giải mã tương xứng Dk∈D. Trong đó Ek: P  C và: Dk: C  P
là các hàm thoả mãn Dk(Ek(x)) = x với bất kỳ thông điệp x ∈ P.
Ở đây mỗi phép biến đổi mã hóa Ek được xác định bởi thuật toán mã hóa E
chung cho mọi phép biến đổi và một khóa k riêng để phân biệt với các phép biến


14

đổi khác. Tương tự, mỗi phép biến đổi giải mã Dk được xác định bởi thuật toán
giải mã D chung và một khóa k phân biệt. Yêu cầu đặt ra cho quá trình giải mã
là: Ek(x1) ≠ Ek(x2) nếu x1≠ x2. Mặt khác nếu Ek(x1) = Ek(x2) mà x1≠ x2 là giải mã
không duy nhất, và người nhận sẽ không thể quyết định thông điệp giải mã được
là x1 hay x2.
 Khóa
 Độ dài khóa: Độ an toàn của thuật toán mã hoá cổ điển phụ thuộc vào hai điều

đó là độ dài của thuật toán và độ dài của khoá. Nhưng độ dài của khoá dễ bị lộ
hơn. Giả sử rằng độ dài của thuật toán là lý tưởng, khó khăn lớn lao này có thể
đạt được trong thực hành. Hoàn toàn có nghĩa là không có cách nào bẻ gãy được
hệ thống mã hoá trừ khi cố gắng thử với mỗi khoá. Nếu khoá dài 8 bits thì có 2 8
= 256 khoá có thể. Nếu khoá dài 56 bits thì có 2

56

khoá có thể. Giả sử rằng siêu

máy tính có thể thực hiện 1 triệu phép tính một giây thì nó cũng sẽ cần tới 2000
năm để tìm ra khoá thích hợp. Nếu khoá dài 64 bits, thì với máy tính tương tự
cũng cần tới xấp xỉ 600,000 năm để tìm ra khoá trong số 2


64

khoá có thể. Nếu

khoá dài 128 bits, nó cần tới 10 25 năm , trong khi vũ trụ của chúng ta chỉ tồn tại
cỡ 1010 năm. Như vậy với 10

25

năm có thể là đủ dài. Trước khi bạn gửi đi phát

minh hệ mã hoá với 8 Kbyte độ dài khoá, bạn nên nhớ rằng một nửa khác cũng
không kém phần quan trọng đó là thuật toán phải an toàn nghĩa là không có cách
nào bẻ gãy trừ khi tìm được khóa thích hợp.
Giả sử rằng một vài kẻ thám mã có thể biết hết tất cả chi tiết về thuật toán
của bạn. Giả sử rằng họ có rất nhiều bản mã, như họ mong muốn. Giả sử họ có
một khối lượng bản rõ tấn công với rất nhiều dữ liệu cần thiết. Thậm chí giả sử
rằng họ có thể lựa chọn bản rõ tấn công. Nếu như hệ thống mã hoá của có thể
dư thừa độ an toàn trong tất cả mọi mặt, thì bạn đã có đủ độ an toàn bạn cần.
 Quản

lý khóa công khai

Trong thực tế, quản lý khoá là vấn đề khó nhất của an toàn hệ mã hoá. Để
thiết kế an toàn thuật toán mã hoá là một việc là không phải dễ dàng nhưng để


15


tạo và lưu trữ khoá bí mật là một điều khó hơn. Kẻ thám mã thường tấn công cả
hai hệ mã hoá đối xứng và công khai thông qua hệ quản lý khoá của chúng.
Đối với hệ mã hoá công khai việc quản lý khoá dễ hơn đối với hệ mã hoá đối
xứng, nhưng nó có một vấn đề riêng duy nhất Mỗi người chỉ có một khoá công
khai, bất kể số người ở trên mạng là bao nhiêu.
 Chứng

nhận khoá công khai

Chứng nhận khoá công khai là xác định khoá thuộc về một ai đó, được quản
lý bởi một người đáng tin cậy. Chứng nhận để sử dụng vào việc cản trở sự cố
gắng thay thế một khoá này bằng một khoá khác.
 Quản

lý khóa phân phối

Trong một vài trường hợp, trung tâm quản lý khoá có thể không làm việc.
Quản lý khoá phân phối, sử dụng trong những chương trình miền công khai, giải
quyết vấn đề này với người giới thiệu (introducers). Người giới thiệu là một
trong những người dùng khác của hệ thống anh ta là người nhận ra khoá công
khai của bạn anh ta.
1.3. Một số yêu cầu với một hệ mật ma
Quá trình mật mã che giấu dữ liệu có thể thực hiện bằng chương trình trên
máy tính hoặc máy mật mã. Thực hiện trên máy thì tốn kém chi phí cho việc xây
dựng máy, thế nhưng nó có ưu điểm là năng suất cao, đơn giản, bảo mật… Việc
thực hiện trên chương trình thì thực tế hơn, và cho phép mềm dẻo trong sử dụng.
Không phụ thuộc vào cách thực hiện đối với một hệ mật hiện đại bảo mật
thông tin cần đảm bảo các yêu cầu sau:
1. Độ an toàn của hệ mật chống lại thám mã cần phải thỏa mãn điều kiện: Sự
phá mã chỉ thực hiện bằng cách giải bài toán vét cạn khóa, hoặc sự phá

mà đòi hỏi những tham số vượt quá giới hạn cho phép của máy tính hiện
đại hoặc cần tạo ra thiết bị tính toán đắc tiền.
2. Độ an toàn của hệ mật cần được đảm bảo không phải là bí mật về thuật
toán mà là bí mật về khóa.


16

3. Bản mã chỉ đọc được khi có khóa mật.
4. Hệ mật phải vững chắc ngay cả khi tội phạm biết được số lượng đủ lớn
bản rõ và bản mã tương ứng.
5. Khi thay đổi lượng nhỏ thông tin khóa hoặc bản rõ thì cần phải dẫn đến sự
thay đổi bản mã.
6. Cấu trúc thành phần thuật toán mật mã cần phải không đổi
7. Kích thước bản mã không được vượt so với kích thước bản rõ, Các bit
thêm vào bản tin trong quá trình mã hóa cần phải hoàn toàn và chắc chắn
dấu kín trong bản mã.
8. Lỗi xuất hiện khi mã hóa không được dẫn đến thay đổi và đánh mất thông
tin.
9. Sự phụ thuộc giữa các khóa con được dùng tuần tự trong quá trình mã hóa
không được thiết lập dễ dàng và đơn giản.
10. Đảm bảo tính tuyến tính của không gian khóa.
11. Thời gian mã không được lớn.
12. Chi phí khi mã cần phải phù hợp với giá trị của thông tin cần bảo vệ.
Ví dụ: Quy tắc Kerckhoffs
Trong tác phẩm "Mật mã quân sự" (xuất bản năm 1833), Kerckhoffs đề ra
các yêu cầu bắt buộc cho một hệ mật. Sau đây là 6 yêu cầu chính trong số đó:
1. Nếu hệ mật không phải "tuyệt đối an toàn" thì phải là "thực sự an toàn.
2. Không cần thiết phải giữ bí mật bản thân hệ mật. Việc đối phương có
được hệ mật không ảnh hưởng đến hoạt động của hệ thống.

3. Khóa có thể dễ dàng truyền đi, ghi nhớ mà không cần phải ghi chép.
Các đối tác có thể thay đổi khóa theo nguyện vọng của họ.
4. Có thể áp dụng hệ mật cho điện tín.


17

5. Hệ mật phải có tính lưu động. Để đảm bảo hoạt động của nó chỉ cần 1
người là đủ.
6. Hệ mật phải đơn giản về mặt vận hành: việc vận hành hề mật không
đòi hỏi sự tuân thủ số lượng lớn các quy tắc, không gây ra căng thẳng
cho đầu óc.
Trong 6 yêu cầu trên đây, yêu cầu thứ 2 được biết đến dưới cái tên "quy
tắc Kerckhoffs" (Kerckhoffs' principle). Nói cách khác thì quy tắc Kerckhoffs là
"Độ an toàn của một hệ mật chỉ được phép phụ thuộc vào sự bí mật của khóa".
1.4. Giới thiệu và phân loại các hệ mật ma
1.4.1. Hệ mật ma đối xứng
Hệ mật đối xứng còn được gọi là hệ mật thông thường (hệ mật truyền
thống) hay hệ mật khóa bí mật hoặc mật mã khóa bí mật. Trong hệ thống mã
hóa đối xứng, quá trình mã hóa và giải mã một thông điệp sử dụng cùng một mã
khóa gọi là khóa bí mật (secret key) hay khóa đối xứng (symmetric key). Do đó,
vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ thuộc vào việc giữ bí mật nội
dung của khóa được sử dụng.
Đặc tính quan trọng của một hệ mã hóa đối xứng là tính an toàn của hệ mã.
Như đã thấy ở phần mã hóa Ceasar, từ một bản mã có thể dễ dàng suy ra được
bản rõ ban đầu mà không cần biết khóa bí mật. Hành động đi tìm bản rõ từ bản
mã mà không cần khóa như vậy được gọi là hành động phá mã (cryptanalysis).
Do đó một hệ mã hóa đối xứng được gọi là an toàn khi và chỉ khi nó không thể
bị phá mã (điều kiện lý tưởng) hoặc thời gian phá mã là bất khả thi.
Người gửi là người sử dụng thực hiện mã hóa bản rõ thành bản mã và gửi bản

mã cho người nhận đầu cuối. Người nhận là người thu nhận bản mã và có khóa
hợp lệ để khôi phục lại bản rõ. Một người nào đó cố gắng tiếp cận giữa người gửi
và người nhận để thu nhận được khóa mã cũng như thông tin đã trao đổi được xem
là người tấn công (còn gọi là thám mã, hay kẻ nghe lén). Kênh an toàn được hiểu
như là tổ hợp của các biện pháp về mặt tổ chức cũng như kỹ thuật để bảo đảm


18

truyền tin an toàn (ở đây để truyền khóa bí mật).

Hình 1.7. Mô hình chung của hệ mật đối xứng
Trái ngược với việc thiết kế và ứng dụng mật mã, công việc tấn công hệ
mật để tìm ra khóa K, cũng như các thông tin đã gửi được gọi là thám mã
(cryptanalysis). Thám mã cũng là công việc tìm cách phá vỡ các thuật toán mật
mã nhằm thu được các thông tin bí mật khi không có khóa. Xây dựng hệ mật an
toàn và thám mã là hai công việc trái ngược nhau, nhưng trong suốt chiều dài
lịch sử mật mã, chúng đã cùng thúc đẩy nhau làm cho khoa học mật mã không
ngừng phát triển. Như vậy, mật mã học bao gồm hai lĩnh vực là mật mã và thám
mã.
Người gửi sử dụng khóa mã hóa bản bản rõ P và tạo ra bản mã C. Bản mã
được gửi qua một kênh không an toàn. Người nhận có khóa giống với người
gửi, nhận được bản mã C và sử dụng khóa này giải mã để thu được bản rõ P.
Trước đó, khóa phải được chia sẻ (dùng chung) bằng việc sử dụng một kênh an
toàn.
 Ưu điểm:


Tốc độ thực hiện rất nhanh do quá trình mã hóa và giải mã đều sử dụng
các phép toán trên dãy bits nhị phân đơn giản, như: AND, OR, XOR,



19

SHIFT (phép dịch), ROTATE (phép quay), || (phép nối),… gần với lệnh
mã máy.


Dễ dàng thực hiện trên các ứng dụng cho cả phần cứng, lẫn phần mềm.
Do tính chất đơn giản của các phép toán trên dãy bits nhị phân.



Chiều dài của bản mã (ciphertext) bằng với chiều dài bản rõ (plaintext)
vì không sinh thêm những thông tin phụ trong quá trình mã hóa và giải
mã.

 Nhược điểm


Nhược điểm chính của các hệ này, là khóa bí mật được truyền đi trên
môi trường mạng. Cho nên vẫn tồn tại nguy cơ khóa bí mật có thể bị
đánh cắp. Vì vậy đòi hỏi công việc quản lý khóa là rất phức tạp, phải
dùng thêm các cơ chế và giải thuật khác trong việc quản lý, trao đổi khóa
giữa các đối tác.



Không có tính chất xác định được chủ nhân của thông tin đã mã hóa,
cũng như không có tính chất không thể phủ nhận (non-repudiation)

thông tin, do đó khó có thể ứng dụng vào các lĩnh vực có nhu cầu cần
xác định nguồn gốc của thông tin như chữ ký điện tử (digital signature)




Đối với một hệ thống lớn có nhiều đối tác giao tiếp với nhau, tạo nên sự
khó khăn trong việc quản lý khóa vì một người sử dụng phải giữ quá
nhiều khóa bí mật của các đối tác muốn trao đổi thông tin với họ.


Hệ mã hoá đối xứng không bảo vệ được sự an toàn nếu có xác suất cao
khoá nguời gửi bị lộ. Trong hệ khoá phải được gửi đi trên kênh an toàn
nếu kẻ địch tấn công trên kênh này có thể phát hiện ra khoá.



Vấn đề quản lý và phân phối khoá là khó khăn và phức tạp khi sử
dụng hệ mã hoá cổ điển. Người gửi và người nhận luôn luôn thông
nhất với nhau về vấn đề khoá. Việc thay đổi khoá là rất khó và dễ bị


20

lộ.


Khuynh hướng cung cấp khoá dài mà nó phải được thay đổi thường
xuyên cho mọi người trong khi vẫn duy trì cả tính an to àn lẫn hiệu
quả chi phí sẽ cản trở rất nhiều tới việc phát ừiển hệ mật mã cổ điển.


 Ứng dụng


Mã hóa dữ liệu đường truyền (transmission encryption): do có những ưu



thế về tính bảo mật, tốc độ, và thực hiện đơn giản.
Mã hóa dữ liệu lưu trữ (data storage encryption): cũng do những ưu thế
trên, mà hệ này được dùng phổ biến trong việc mã hóa cơ sở dữ liệu, mã



hóa hệ thống file an toàn (secure file system),….
Sự bảo mật của một hệ mật đối xứng là một hàm với hai tham số:
Chiều dài của khóa và sức mạnh của thuật toán. Do đó, chiều dài khóa được
chọn phải đủ lớn để chống lại các cuộc tấn công vét cạn (brute-force).


21

1.4.2. Hệ mật bất đối xứng
Hệ mật bất đối xứng (Asymmetrical Cryptosystems), còn được gọi là hệ mật
khóa công khai hay mật mã khóa công khai, là hệ mật sử dụng hai khóa khác
nhau nhưng liên quan về mặt toán học với nhau: Một khoá để giải mã còn gọi là
khóa riêng (private key) sau đó dùng một khoá khác để mã hóa còn gọi là khóa
công khai (public key), nghĩa là khoá để mã hoá và giải mã là khác nhau. Các
khoá này tạo nên từng cặp chuyển đổi ngược nhau và thỏa mãn đặc tính "một
chiều". Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã

phải giữ bí mật. Vì vậy bất cứ ai đều có thể mã hóa dữ liệu bằng cách sử dụng
khóa công khai, nhưng chỉ chủ sở hữu mới có khóa riêng để thực hiện quá trình
giải mã. Nếu như vấn đề khó khăn đặt ra đối với hệ mật đối xứng chính là bài
toán trao đổi khóa thì ngược lại, hệ mật bất đối xứng giúp cho việc trao đổi khóa
trở nên dễ dàng hơn. Nội dung của khóa công khai không cần phải giữ bí mật
như đối với khóa bí mật trong các hệ mật đối xứng.
Với việc sử dụng khóa công khai, chúng ta có thể thiết lập một quy trình
an toàn để trao đổi khóa bí mật được sử dụng trong hệ thống mã hóa đối xứng.
Trong những năm gần đây, các phương pháp mã hóa khóa công khai, đặc biệt là
phương pháp RSA, được sử dụng ngày càng nhiều trong các ứng dụng mã hóa
trên thế giới và có thể xem như đây là phương pháp chuẩn được sử dụng phổ
biến nhất trên Internet, ứng dụng trong việc bảo mật thông tin liên lạc cũng như
trong lĩnh vực thương mại điện tử.


22

Hình 1.8. Chức năng bảo mật của hệ mật bất đối xứng

Hình 1.9. Chức năng xác thực của hệ mật bất đối xứng
Khi làm việc với hệ mật bất đối xứng yêu cầu mỗi người sử dụng phải
được phân phát tối thiểu hai khóa. Một khóa, được gọi là khóa riêng, ký hiệu
KRi (trong đó chỉ số i để chỉ người sử dụng), cũng còn gọi là khóa mật vì khóa
này sẽ được chủ sở hữu giữ bí mật, còn khóa kia được gọi là khóa công khai, ký
hiệu KUi, được công khai để cho các đối tác sử dụng. Hai khóa này có mối liên


23

hệ chặt chẽ với nhau, và mối quan hệ của chúng cũng thỏa mãn đặc tính “một

chiều”. Các hệ mật với khóa công khai có hai chức năng chính: Bảo mật và xác
thực, tùy thuộc vào việc sử dụng các khóa như thế nào, như được biểu diễn trên
hình 1.2 và 1.3.
Các hệ mật thông dụng nhất sử dụng khóa công khai là:
• Hệ mật bất đối xứng được đưa ra bởi Diffie - Hellman vào năm 1976 với
mục đích dùng để trao đổi khóa trong hệ mật đối xứng, do đó nó còn biết
đến với tên giao thức trao đổi khóa Diffie - Hellman (Diffie - Hellman
Key Exchange - DHKE).
• RSA, phát minh bởi Ronald Rivest, Adi Shamir và Len Adleman vào năm
1978.
• Thuật toán MTA 11.15-02, được tìm hiểu, xây dựng và mô tả dựa trên giao
thức DHKE.
• Mật mã đường cong Elliptic (Elliptic curve cryptography - ECC) dựa trên
cấu trúc đại số của các đường cong elliptic trên các trường hữu hạn, được
đề xuất bởi Neal Koblitz và Victor S. Miller vào năm 1985.
1.5. Sự cần thiết của khóa trong các hệ mật ma
1.5.1. Vai trò của khóa
1.5.1.1. Vai trò của khóa trong hệ mật đối xứng
Một đặc tính quan trọng của mã hóa đối xứng là khóa phải được giữ bí mật
giữa người gởi và người nhận, hay nói cách khác khóa phải được chuyển một
cách an toàn từ người gửi đến người nhận. Có thể đặt ra câu hỏi là nếu đã có
một kênh an toàn để chuyển khóa như vậy thì tại sao không dùng kênh đó để
chuyển bản tin, tại sao cần đến chuyện mã hóa? Câu trả lời là nội dung bản tin
thì có thể rất dài, còn khóa thì thường là ngắn. Ngoài ra một khóa còn có thể áp
dụng để truyền tin nhiều lần. Do đó nếu chỉ chuyển khóa trên kênh an toàn thì
đỡ tốn kém chi phí.


24


Trong hệ mật đối xứng, bước mã hóa và giải mã đều sử dụng chung một
khóa bí mật K, và với các giá trị của K khác nhau ta thu được các bản mã khác
nhau. Tính an toàn của hệ mật phụ thuộc vào hai yếu tố: Thuật toán phải đủ
mạnh để không thể giải mã được văn bản nếu đơn thuần chỉ dựa vào bản mã, và
tính an toàn của khóa, chứ không phải là an toàn thuật toán, tức là nếu biết bản
mã và thuật toán mã hóa nhưng không biết khóa vẫn không thể tìm được bản rõ.
Nói cách khác, ta không cần giữ bí mật thuật toán mà chỉ cần giữ bí mật khóa.
Việc giữ bí mật khóa trở thành điểm mấu chốt của hệ mật loại này, nếu vì lý do
nào đó mà khóa bị lộ thì tất cả những văn bản hai bên trao đổi với nhau cũng sẽ
bị lộ.
1.5.1.2. Vai trò của khóa trong hệ mật bất đối xứng
Để sử dụng hệ mật khóa đối xứng yêu cầu hai bên trước khi truyền tin phải
có chung một giá trị khóa, giá trị này cần phải giữ bí mật và điều này không
thuận tiện trong môi trường truyền thông công cộng như hiện nay. Vì thế người
ta đã đưa ra cách mã hóa khác, cho phép các bên trong hệ thống có thể truyền
tin cho nhau bằng cách công bố công khai thông tin cần cho việc lập mã, khiến
cho người gửi và người nhận không cần quy ước trước với nhau, và cũng không
có những bí mật chung. Bên nhận được bản mã sử dụng khóa bí mật của mình
giải mã để thu được văn bản gốc.
Mã hóa được thực hiện rất dễ dàng, bất kỳ người nào cũng có thể làm
được, còn việc giải mã rất khó khăn nếu như không có khóa riêng, còn nếu có
nó thì việc giải mã cũng dễ như việc mã hóa. Việc giữ bí mật khóa trong hệ mã
khóa công khai không còn là vấn đề lớn nữa, vì mỗi người có một khóa riêng
chỉ có chính anh ta biết mà thôi nên khả năng anh ta làm lộ gần như là không
có. Vì vậy đối với những hệ mã loại này tính an toàn của chúng nằm trong khả
năng không bị lộ của chìa khóa bí mật từ những thông tin công khai tất cả mọi
người đều có, mà điều này thì lại phụ thuộc vào độ khó của bài toán nào đó.


25


Ví dụ: Tính tích hai số nguyên tố lớn n = pq; dễ dàng nhân hai số nguyên
tố lớn p, q để thu được tích n của chúng, nhưng bài toán sẽ là khó nếu cho giá trị
tích n, xác định các nhân tử nguyên tố p, q của nó.
Z *p

Hay như bài toán nếu có số nguyên tố p, nhóm nhân

theo modulo p và

một phần tử sinh α của nhóm nhân này, ta dễ dàng tính được β = αx mod

p ∈ Z *p

, với x là giá trị bất kỳ. Nhưng nếu ngược lại biết β, α , p khó tìm được số
nguyên x (0 ≤ x ≤ p - 2) sao cho αx = βmod p.
Tuy nhiên, đến nay chưa có chứng minh bằng toán học nào chỉ ra rằng
đây thực sự là các bài toán khó, hoặc không thể giải trong thời gian chấp nhận
được.
1.5.1.3. Vai trò của khóa trong sơ đồ định danh và xác nhận danh tính
Xưng danh và xác nhận danh tính là thuật ngữ ngày nay đang được nhắc
đến rất nhiều, nó đảm bảo rằng bên nhận văn bản đúng là bên ta định nhằm tới,
hay chắc chắn rằng các thao tác trên văn bản là do bên được phép thực hiện.
Cho đến giữa những năm 1970 người ta vẫn còn cho rằng xưng danh và xác
nhận danh tính với mã hóa thực chất là cùng một mục tiêu an toàn thông tin.
Nhưng cùng với sự khám phá ra hàm băm, chữ ký điện tử, người ta nhận ra rằng
đó là hai mục tiêu an toàn thông tin hoàn toàn độc lập. Xưng danh và xác nhận
danh tính rất cần thiết trong các hoạt động thông tin, đặc biệt là khi các hoạt
động này thông qua mạng.



×