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

TÌM HIỂU CÁC KỸ THUẬT MÃ HÓA ỨNG DỤNG KỸ THUẬT MÃ HÓA KHÓA CÔNG KHAI VÀO CHƯƠNG TRÌNH XÁC THỰC CHỬ KÝ ĐIỆN TỬ

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 (580.77 KB, 30 trang )

PHỤ LỤC
LỜI MỞ ĐẦU
Ngày nay, các ứng dụng Công nghệ thông tin ngày càng phổ biến rộng rãi đã ảnh hưởng
rất lớn đến diện mạo của đời sống, kinh tế, xã hội. Mọi công việc hàng ngày của chúng ta
đều có thể thực hiện được từ xa với sự hổ trợ của máy vi tính và mạng internet (từ việc
học tập, đi mua sắm, gửi thư…). Tất cả thông tin liên quan đến những công việc này đều
do máy vi tính quản lý và truyền đi trên hệ thống mạng. Đối với những thông tin bình
thường thì không có ai chú ý đến, nhưng đối với những thông tin mang tính chất sống
còn đối với một số cá nhân (hay tổ chức) thì vấn đề bảo mật thật sự rất quan trọng. Nhiều
tổ chức, cá nhân đã tìm kiếm và đưa ra nhiều giải pháp bảo mật. Khi một người muốn
trao đổi thông tin với một người hay một tổ chức nào đó thông qua mạng máy tính thì
yêu cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ do sự
xâm nhập của kẻ thứ ba. Trước các yêu cầu cần thiết đó, một số giải thuật mã hóa đã
dược xây dựng nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu
được truyền trên mạng, như các giải thuật mã hóa đối xứng (DES), giải thuật mã hóa
công khai, Việc tìm hiểu cơ chế và thuật toán của các giải thuật này cũng không nằm
ngoài mục đích của đề tài này.
Vì kiến thức còn hạn chế nên còn nhiều thiếu sót trong đề tài về mã hóa, kính mong các
thầy cô giáo góp ý để đề tài được hoàn thiện hơn.
Em xin chân thành cảm ơn thầy PGS.TS. Đỗ Văn Nhơn đã truyền đạt cho em nhưng kiến
thức nền thất quý giá để em có thể hoàn thành đề tài này.
NỘI DUNG:
CHƯƠNG 1:TỔNG QUAN MÃ HÓA THÔNG TIN
I. Khái niệm:
Như chúng ta đã biết, Internet hình thành và phát triển từ yêu cầu của chính phủ Mỹ
nhằm phục vụ cho mục đích quân sự. Khi chúng ta tham gia trao đổi thông tin, thì
Internet là môi trường không an toàn, đầy rủi ro và nguy hiểm, không có gì đảm bảo rằng
thông tin mà chúng ta truyền đi không bị đọc trộm trên đường truyền. Do đó, mã hoá
được áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính mình cũng như
những thông tin mà chúng ta gửi đi. Bên cạnh đó, mã hoá còn có những ứng dụng khác
như là bảo đảm tính toàn vẹn của dữ liệu.


Thuật toán Cryptography đề cập tới nghành khoa học nghiên cứu về mã hoá và giải mã
thông tin. Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông tin từ dạng rõ (clear
text) sang dạng mờ (cipher text) và ngược lại. Đây là một phương pháp hỗ trợ rất tốt cho
trong việc chống lại những truy cập bất hợp pháp tới dữ liệu được truyền đi trên mạng, áp
dụng mã hoá sẽ khiến cho nội dung thông tin được truyền đi dưới dạng mờ và không thể
đọc được đối với bất kỳ ai cố tình muốn lấy thông tin đó.
II. Hệ thống mã hóa
Hệ thống mã hóa (cryptosystem) là một bộ năm (P, C, K, E, D) thỏa mãn điều kiện sau:
• Tập nguồn P là tập hữu hạn tất cả các mẫu tin nguồn cần mã hóa có thể có
• Tập đích C là tập hữu hạn tất cả các mẫu tin có sau khi mã hóa
• Tập khóa K là tập hữu hạn các khóa có thể được sử dụng
• E và D lần lượt là tập luật mã hóa và giải mã.Với mỗi khóa k Є K, tồn tại luật mã
hóa e
k
Є E và luật giải mã d
k
Є D tương ứng. Luật mã hóa e
k
: P → C và luật giải mã e
k
:
C → P là hai ánh xạ thỏa mãn d
k
(e
k
(x)) = x,

x Є P
Hình 1 : Hệ thống mã hóa thông tin
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm bảo các

mục tiêu sau:
Chương 2: Confidentiality (Tính bí mật):
Đảm bảo dữ liệu được truyền đi một cách an toàn và không thể bị lộ thông tin nếu như có
ai đó cố tình muốn có được nội dung của dữ liệu gốc ban đầu. Chỉ những người được
phép mới có khả năng đọc được nội dung thông tin ban đầu.
Chương 3: Authentication (Tính xác thực):
Giúp cho người nhận dữ liệu xác định được chắc chắn dữ liệu mà họ nhận là dữ liệu gốc
ban đầu. Kẻ giả mạo không thể có khả năng để giả dạng một người khác hay nói cách
khác không thể mạo danh để gửi dữ liệu. Người nhận có khả năng kiểm tra nguồn gốc
thông tin mà họ nhận được.
Chương 4: Integrity (Tính toàn vẹn):
Giúp cho người nhận dữ liệu kiểm tra được rằng dữ liệu không bị thay đổi trong quá trình
truyền đi. Kẻ giả mạo không thể có khả năng thay thế dữ liệu ban đầu băng dữ liệu giả
mạo
Chương 5: Non-repudation (Tính không thể chối bỏ):
Người gửi hay người nhận không thể chối bỏ sau khi đã gửi hoặc nhận thông tin.
I. Khái niệm về khóa (Key)
Password: là một hay nhiều từ mà người dùng phải biết để được cấp quyền truy cập.
Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ an toàn để được dùng
trực tiếp trong thuật toán. Vì vậy, trong bất cứ hệ thống mã hóa dữ liệu nghiêm túc nào
cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa khóa có độ an toàn thích hợp.
Bước tạo chìa khóa này thường được gọi là key derivation, key stretching hay key
initialization.
Key Derivation Function: là một hàm hash (sẽ giải thích rõ hơn ở phần sau) được thiết
kế sao cho chìa an toàn hơn đối với tấn công kiểu brute-force hay cổ điển. Hàm này được
thực hiện lại nhiều lần trên mật khẩu ban đầu cùng với một số ngẫu nhiên để tạo ra một
chìa khóa có độ an toàn cao hơn. Số ngẫu nhiên này gọi là salt, còn số lần lặp lại là
iteration.
Ví dụ một mật khẩu là "pandoras B0x", cùng với salt là "230391827", đi qua hàm hash
SHA-1 1000 lần cho kết quả là một chìa khóa có độ dài 160 bit như sau:

3BD454A72E0E7CD6959DE0580E3C19F51601C359 (thể hiện dưới dạng số thập lục
phân).
Keylength (Keysize): Độ dài (hay độ lớn) của chìa khóa. Nói một chìa khóa có độ dài
128 bit có nghĩa chìa đó là một số nhị phân có độ dài 128 chữ số. Một thuật toán có chìa
khóa càng dài thì càng có nhiều khả năng chống lại tấn công kiểu brute-force.
CHƯƠNG 6: CÁC PHƯƠNG PHÁP MÃ HÓA
I. Mã hóa cổ điển
Xuất hiện trong lịch sử, thuật toán không dùng khóa, đơn giản và dễ hiểu. Là phương
pháp mà từng kí tự (hay từng nhóm kí tự) trong Plaintext được thay thế bằng một kí tự
(hay một nhóm kí tự) khác tạo ra Ciphertext. Bên nhận chỉ việc đảo ngược lại trình tự
thay thế trên Ciphertext để có được Plaintext ban đầu.
Những từ chính các phương pháp mã hoá này đã giúp chúng ta tiếp cận với các thuật toán
mã hoá đối xứng được sử dụng ngày nay. Trong mã hoá cổ điển có 2 phương pháp nổi
bật đó là:
- Mã hoá thay thế (Substitution Cipher): Là phương pháp mà từng kí tự (hay từng nhóm
kí tự) trong bản rõ (Plaintext) được thay thế bằng một kí tự (hay một nhóm kí tự) khác để
tạo ra bản mờ (Ciphertext). Bên nhận chỉ cần đảo ngược trình tự thay thế trên Ciphertext
để có được Plaintext ban đầu.
Hình 2 : Bảng thay thế kí tự

Ví dụ : Giả sử tôi xây dựng một bảng thay thế các kí tự như trên và bạn cũng có bảng
thay thế này. Khi tôi muốn truyền thông tin cho bạn, chẳng hạn tôi gửi cho bạn một dòng
văn bản như sau : CABBAC, thì dựa vào bảng thay thế kí tự mà tôi và bạn đã xây dựng
tôi chuyển thành như sau : FEDDEF. Sau đó tôi gửi tới cho bạn, khi bạn nhận được
thông tin như trên, vì bạn đã có bảng thay thế bạn chỉ việc thay thế ngược lại và bạn sẽ có
được thông tin ban đầu mà tôi muốn gửi cho bạn.
- Mã hoá hoán vị (Transposition Cipher) hay còn gọi là mã hóa dịch chuyển: Nếu như
trong phương pháp mã hoá thay thế, các kí tự trong Plaintext được thay thế hoàn toàn
bằng các kí tự trong Ciphertext, thì trong phương pháp mã hoá hoán vị, các kí tự trong
Plaintext vẫn được giữ nguyên, chúng chỉ được sắp xếp lại vị trí để tạo ra Ciphertext. Tức

là các kí tự trong Plaintext hoàn toàn không bị thay đổi bằng kí tự khác.
Ngoài ra còn một số phương pháp : Phương pháp Affine, Vigenere, Hill
II. Mã hóa đối xứng (mã khóa bí mật)
Ở phần trên, chúng ta đã tìm hiểu về mã hoá cổ điển, trong đó có nói rằng mã hoá cổ điển
không dùng khoá. Nhưng trên thực nếu chúng ta phân tích một cách tổng quát, chúng ta
sẽ thấy được như sau:
Mã hoá cổ điển có sử dụng khoá. Bằng chứng là trong phương pháp thay thế thì
khoá chính là phép dịch ký tự. Trong phương pháp mã hoá hoán vị thì khóa nằm ở
số hàng hay số cột mà chúng ta qui định. Khoá này có thể được thay đổi tuỳ theo
mục đích mã hoá của chúng ta, nhưng nó phải nằm trong một phạm vi cho phép nào
đó.
Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phải thống nhất với
nhau về cơ chế mã hoá cũng như giải mã. Nếu như không có công việc này thì hai
bên sẽ không thể làm việc được với nhau.
Mã hoá đối xứng còn có một số tên gọi khác như Secret Key Cryptography (hay
Private Key Cryptography), sử dụng cùng một khoá cho cả hai quá trình mã hoá và
giải mã. Quá trình thực hiện như sau:
Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhận phải
thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã. Sau đó, bên gửi sẽ
mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông điệp đã
mã hoá cho bên nhận. Bên nhận sau khi nhận được thông điệp đã mã hoá sẽ sử
dụng chính khoá bí mật mà hai bên thoả thuận để giải mã và lấy lại bản rõ
(Plaintext).
Hình 3 : Trao đổi thông tin giữa bên gửi và bên nhận sử dụng phương pháp mã hoá đối xứng
Trong quá trình này, thì thành phần quan trọng nhất cần phải được giữ bí mật
chính là khoá. Việc trao đổi, thoả thuận về thuật toán được sử dụng trong việc mã hoá có
thể tiến hành một cách công khai, nhưng bước thoả thuận về khoá trong việc mã hoá và
giải mã phải tiến hành bí mật.
Mã hoá đối xứng có thể được phân thành 02 loại:
- Loại thứ nhất tác động trên bản rõ theo từng nhóm bits. Từng nhóm bits này được gọi

với một cái tên khác là khối (Block) và thuật toán được áp dụng gọi là Block Cipher.
Theo đó, từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu
khác có cùng độ dài. Đối với các thuật toán ngày nay thì kích thước chung của một Block
là 64 bits.
- Loại thứ hai tác động lên bản rõ theo từng bit một. Các thuật toán áp dụng được gọi là
Stream Cipher. Theo đó, dữ liệu của văn bản được mã hoá từng bit một. Các thuật toán
mã hoá dòng này có tốc độ nhanh hơn các thuật toán mã hoá khối và nó thường được áp
dụng khi lượng dữ liệu cần mã hoá chưa biết trước.
Phương thức mật mã đối xứng được thực hiện nhanh hơn rất nhiều so với quá trình sử
dụng mật mã bất đối xứng. Với tốc độ nhanh nên thuật toán này được thiết kế chỉ một
key trong quá trình mã hoá và giải mã dữ liệu.
Tuy nhiên bạn có thể sử dụng một giải pháp thông minh hơn đó là Public Key
Infrastructure (PKI) giải pháp được sử dụng kết hợp với mật mã đối xứng trong quá trình
truyền thông tin keys. Việc truyền thông tin key bằng việc sử dụng một mã hoá để truyền
với sử dụng một phiên truyền thông tin duy nhất. Hiểu, sử dụng và triển khai sử dụng
PKI không đơn giản và có nhiều giải pháp của nhiều nhà sản xuất khác nhau.
III. Mã hóa không đối xứng(mã khóa công khai)
Ý tưởng về hệ thống mã hóa khóa công cộng được Martin Hellman, Ralph Merkle và
Whitfield Diffie tại Đại Học Stanford giới thiệu vào năm 1976. Sau đó, phương pháp
Diffie-Hellman của Martin Hellman và Whitfield Diffie được công bố. Năm 1977 nhóm
tác giả Ronald Rivest, Adi Shamir và Leonard Adleman đã công bố phương pháp RSA,
phương pháp mã khóa công khai nổi tiếng và được sử dụng trong các ứng dụng mã hóa
và bảo vệ thông tin.
Khóa công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứ không phải
thay thế khóa riêng (đối xứng). Cả 2 cùng tồn tai, phát triển và bổ sung cho nhau
Khóa công khai ( hai khóa hay bất đối xứng) bao gồm việc sử dụng 2 khóa : Khóa công
khai và khóa riêng
- Bên gửi tạo ra một khoá bí mật dùng để mã hoá dữ liệu. Khoá này còn được gọi là
Session Key
- Sau đó, Session Key này lại được mã hoá bằng khoá công khai của bên nhận dữ liệu.

- Tiếp theo dữ liệu mã hoá cùng với Session Key đã mã hoá được gửi đi tới bên nhận.
- Lúc này bên nhận dùng khoá riêng để giải mã Session Key và có được Session Key ban
đầu.
- Dùng Session Key sau khi giải mã để giải mã dữ liệu.
Là không đối xứng vì những người mã hóa và kiểm chứng chữ ký không thể giải mã và
tạo chữ ký
Hình 4 : Sơ đồ mã hóa công khai
Mật mã bất đối xứng hoạt động chậm hơn phương thức mật mã đối xứng, không phải
nó mã hoá một khối lượng dữ liệu lớn. Nó thường đước sử dụng để bảo mật quá trình
truyền key của mật mã đối xứng. Nó cung cấp bảo mật cho quá trình truyền thông tin
bằng các dịch vụ: Authentication, Integrity, Protection, và nonrepudiation.
Phương thức mật mã bất đối xứng sử dụng: RSA, Diffie-Hellman, ECC, El Gamal,
CHƯƠNG 7: MỘT SỐ THUẬT TOÁN MÃ HÓA
I. Thuật toán mã hóa DES
DES thực hiện mã hóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu
kỳ 48bit được tạo ra từ khóa ban đầu có độ dài 56bit. DES sử dụng 8 bảng hằng số S-box
để thao tác
Cấu tạo một vòng của DES
Sử dụng hai nửa 32 bít trái và 32 bít phải.Nửa phải của vòng trước được chuyển qua
nửa trái của bước sau và lấy đầu ra của hàm vòng trên nửa phải và khoá con cộng cơ
số 2 với nửa trái. Có thể biểu diễn bằng công thức như sau:
L
i
= R
i–1
R
i
= L
i–1
xor F(R

i–1
, K
i
)
Ở đây F lấy 32 bít nửa phải R, mở rộng thành 48 bít nhờ hoán vị E, rồi cộng vào với
khoá con 48 bít. Sau đó chia thành 8 cụm 6 bít và cho qua 8 S-box để nhận được kết
quả 32 bít. Đảo lần cuối sử dụng hoán vị 32 bít P nhận được 32 bít đầu ra, rồi cộng
với nửa trái để chuyển thành nửa phải của bước sau.
Hình 5 : Cấu tạo một vòng của DES
Các hộp thế S-box
Có 8 hộp S khác nhau ánh xạ 6 bít vào 4 bít. Các hộp S-box thực hiện các phép thế,
chúng được cấu tạo không có qui luật và cố định. Mỗi S-box là hộp 4 x 16 bít, mỗi
hàng là một hoán vị của 16 phần tử. Giả sử ta có 6 bít đầu vào. Ta lấy hai bít ngoài 1-6
ghép lại được số nhị phân xác định chọn hàng từ 0 đến 3 trong S-box. Bốn bít từ 2
đến 5 là một số nhị phân xác định cột từ 0 đến 15 trong S-box. Lấy phần tử tương ứng
trên hàng và cột mới được xác định, đây là một số từ 0 đến 15, chuyển sang số nhị
phân ta được 4 bít đầu ra. Như vậy 48 bít chia thành có 8 cụm 6 bít, qua 8 S-box
được chuyển thành 8 cụm 4 bít, tổng cộng là 32 bít Việc chọn hàng trong các S-box
phụ thuộc cả dữ liệu và khoá - đặc trưng này được gọi là khoá tự xác định
Ví dụ:
S(18 09 12 3d 11 17 38 39) = 5fd25e03
Sinh khoá con của DES
o Tạo 16 khoá con sử dụng cho 16 vòng của DES. 56 bit khoá đầu vào được sử dụng
như bảng 8 x 8, trong đó cột thứ 8 không sử dụng.
o Hoán vị ban đầu của khoá PC1 và tách 56 bít thành hai nửa 28 bít.
o 16 giai đoạn bao gồm
 Ở mỗi vòng nửa trái và nửa phải được dịch trái vòng quanh tương
ứng 1 và 2 bit. Hai nửa này được dùng tiếp cho vòng sau.
 Đồng thời hai nửa cũng cho qua hoán vị PC2 và chọn mỗi nửa 24
bít gộp lại thành 48 bít để sinh khoá con

o Ứng dụng thực tế trên cả phần cứng và phần mềm đều hiệu quả
a Quy trình mã hóa DES
Qúa trình mã hóa của DES có thể tóm tắt như sau: Biểu diễn thông tin nguồn x Є P
bằng dãy 64 bit, khóa k có 56 bit.Thực hiện mã hóa theo 3 giai đoạn:
Bước 1 : Tạo dãy 64 bit x
o
bằng cách hoán vị x theo hoán vị IP (Initial Permutation).
Biểu diễn x
o
= IP(x) = L
o
R
o
, L
o
gồm 32 bit bên trái x
o
, R
o
gồm 32 bit bên phải của x
o
Hình 6 : Biểu diễn dãy 64bit x thành 2 thành phần L và R
Ví dụ : IP(675a6967 5e5a6b5a) = (ffb2194d 004df6fb)
Bước 2 : Thực hiện 16 vòng lặp từ 64 bit thu được và 56 bit của khóa k (chỉ sử dụng 48
bit của khóa k trong mỗi vòng lặp ). 64 bit kết quả thu được qua mỗi vòng lặp sẽ là đầu
vào cho vòng lặp sau. Các cặp từ 32 bit Li, Ri với (1 ≤ i ≤ 16) được xác định theo qui tắc
sau : Li= R
i-1
Ri = L
i-1

f (R
i-1 ,
Ki)
với biểu diễn phép XOR trên dãy 2 bít, K
1
, K
2
, ,

K
16
là các dãy 48bit phát sinh từ
khóa K cho trước ( Trên thực tế, mỗi khóa Ki được phát sinh bằng cách hoán vị các bit
trong khóa K cho trước).
Bước 3. Áp dụng hoán vị ngược IP
-1
với dãy bit R
16
L
16
, thu được từ y gồm 64 bit. Như
vậy, y = IP
-1
( R
16
L
16
)
Hàm f được sử dụng ở bước 2 là hàm gồm hai tham số: Tham số thứ nhất A là
một dãy 32 bit, tham số thứ hai J là một dãy 48 bit. Kết quả của hàm f là một dãy 32 bit.

Các bước xử lý của hàm f (A,J) như sau:
Tham số thứ nhất A (32 bit) được mở rộng thành dãy 48 bit bằng hàm mộ rộng E.
E(A) là một dãy 48 bit được phát sinh từ A bằng cách hoán vị theo một thứ tự nhất định
32 bit của A, trong đó 16 bit của A được lặp lại hai lần trong E (A)
Hình 7 :Qui trình phát sinh dãy LiRi từ dãy Li-1Ri-1 và khóa Ki
Thực hiện phép XOR cho hai dãy 48 bit E(A) và J, ta thu được một dãy 48bit B. Biểu
diễn B thành từng nhóm 6 bit như sau: B=B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
Sử dụng 8 ma trận S
1
,S
2
, S
8
, với mỗi ma trận Si có kích thước 4x16 và mỗi dòng của
ma trận nhận đu 16 giá trị từ 0 đến 15. Xét dãy gồm 6 bit Bj = b

1
b
2
b
3
b
4
b
5
b
6
, Sj (Bj) được
xác định bằng giá trị của phần tử tại dòng r cột c của Sj trong đó, chỉ số dòng r có biểu
diễn nhị phân b
1
b
6
chi số cột c có biểu diễn nhị phân b
2
b
3
b
4
b
5
. Bằng cách này, ta xác định
được các dãy 4 bít Cj = Sj(Bj), 1 ≤ j ≤ 8
Tập hợp các dãy 4 bit Cj lại, ta có được dãy 32 bit C = C
1
C

2
C
3
C
4
C
5
C
6
C
7
C
8
. Dãy 32 bit
thu được bằng cách hoán vị C theo một qui luật P nhất định chính là kết quả của hàm
F(A,J)
Hình 8 : Sơ đồ thuật toán mã hóa Data Encryption Standard (DES)
II. Thuật toán mã hóa AES (Rijndael)
Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi xử lý hiện nay,
phương pháp mã hóa chuẩn (DES) trở nên không an toàn trong bảo mật thông tin.Do đó,
Viện Tiêu chuẩn và Công nghệ Hoa Kỳ ( NIST) đã quyết định chọn một chuẩn mã hóa
mới với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thông tin liên lạc của chính phủ
Hoa Kỳ cũng như trong ứng dụng dân sự. Thuật toán Rijndael do Vincent Rijmen và Joan
Deaman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao AES ( Advanced
Encryption Standard ) từ ngày 02-10-2000.
Phương pháp Rijndael là phương pháp mã hóa theo khối ( block cipher) có kích thước
khối và mã khóa thay đổi linh hoạt với các giá trị 128, 192 hay 256 bit. Phương pháp này
thích hợp ứng dụng trên nhiều hệ thống khác nhau từ các thẻ thông minh cho đến máy
tính cá nhân.
• Đặc trưng của thuật toán AES

Có 128/192/256 bit khóa và 128 bit khối dữ liệu
Thao tác trên cả khối vòng lặp
Thiết kế để : Chống lại các tấn công đã biết
Tốc độ nhanh và nén mã trên nhiều CPU
Đơn giản trong thiết kế
Xử lý khối dữ liệu 128 bit như 4 nhóm của 4 byte: 128=4*4*8 bit. Mỗi nhóm nằm trên
một hàng. Ma trận 4 hàng, 4 cột với mỗi phần tử là 1 byte coi như trạng thái được xử lý
qua các vòng mã hóa và giải mã
Khóa mở rộng thành mảng gồm 44 từ 32 bit
Có tùy chọn 9/11/13 vòng, trong đó mỗi vòng bao gồm:
• Phép thế byte ( dùng một S-box cho 1 byte)
• Dịch hàng ( hoán vị byte giữa nhóm/cột)
• Trộn cột ( sử dụng nhân ma trận của các cột
• Cộng khóa vòng ( XOR trang thái dữ liệu với khóa vòng).
Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả
• Quy trình mã hóa Rijndael
Qui trình mã hóa Rijndael gồm 4 phép biến đổi chính
a. AddRoundKey – cộng mã khóa của chu kỳ vào trạng thái hiện hành,mỗi byte của
khối được kết hợp với khóa con, các khóa con này được tạo ra từ quá trình tạo khóa
con Rijndael.
Hình 9 : Mô hình mô tả bước AddRoundKey
b. SubBytes – đây là quá trình thay thế trong đó mỗi byte sẽ được thay thế bằng một
byte khác theo bảng thế S-box
Hình 10 : Mô tả hoạt động bước SubBytes
c. ShiftRows – đổi chổ, các hàng trong khối được dịch vòng
Hình 11 : Mô tả hoạt động bước ShiftRows
Mixcolumns – quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi
tuyến tính
Hình 12 : Mô tả hoạt động bước MixColumns
Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey

• Sơ đồ mã hóa
Hình 13 : Sơ đồ mã hóa và giải mã thuật toán AES
III. Thuật toán mã hóa bất đối xứng RAS
Chương 8: Khái quát sơ lược thuật toán RSA
Trong mật mã học, RSA là một thuật toán mã hóa khóa công khai. Đây là thuật toán đầu
tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một
sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA
đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn
với điều kiện độ dài khóa đủ lớn.
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay
khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã.
Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những
thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật
tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá
nhân mới có thể giải mã được.
Một ví dụ trực quan: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất
Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa
đã mở và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình
thường và khóa lại (lúc này ngay cả Bob cũng không thể đọc lại hay sửa thông tin trong
thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của
mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò
khóa công khai, chiếc chìa khóa chính là khóa bí mật.
Chương 9: Quy trình mã hóa RSA
Khởi tạo khóa
Mỗi người sử dụng một cặp khóa công khai – riêng như sau
a. Chọn 2 số nguyên tố lớn p và q.
b. Tính tích n = p*q. Sau đó tính
φ
(n) = (p-1)(q-1).
c. Tìm số d sao cho d và

φ
(n) là nguyên tố cùng nhau (d,
φ
(n)) = 1.
d. Tìm số e thõa mãn d*e = =1 (Mod n)
Khi đó khóa công khai là cặp (e,n) và khóa mật là cặp số (d,e).
Ví dụ
a. Chọn các số nguyên tố: p=17 & q=11
b. Tính n = pq, n = 17×11=187
c. Tính Ф(n)=(p–1)(q-1)=16×10=160
d. Chọn e : gcd(e,160)=1; Lấy e=7
e. Xác định d: de=1 mod 160 và d < 160
a. Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
f. In khoá công khai KU={7,187}
g. Giữ khoá riêng bí mật KR={23,17,11}
Chương 10: Sơ đồ thuật toán
Chương 11: Quy trình mã hóa
Chương trình : Bản gốc M (M<n) → Bản mã C = M
e
mod (n)
Đầu vào : Data_in
Đầu ra : Data_out
B1: Chuyển ‘e’ thành số nhị phân và lưu trong ‘bit_s’
B2 : Đặt chiều dài của số nhị phân đã chuyển đổi trong ‘length
B3 : c ← 0, d ← 0, i ← lengh – 1
B4 : c ← c*2
B5 : d ← mod ( d*d,n )
B6 : Nếu bits(i) = 1
{ c = c +1 ;
d = fmode (data_in * d,n);

}
B7 : i ← i-1;
B8 : Nếu i != 1 thì quay lại bước 4
B9 : Data_out = d
B10 : Trả về data_out
CHƯƠNG 12: ỨNG DỤNG KỸ THUẬT MÃ HÓA
KHÓA CÔNG KHAI VÀO CHƯƠNG TRÌNH XÁC
THỰC CHỬ KÝ ĐIỆN TỬ.
Với sự phát triển của mạng Internet hiện nay, các doanh nghiệp nhanh chóng nhận
thấy lợi ích của việc sử dụng mạng Internet để mở rộng thêm mạng doanh nghiệp bao
gồm cả các đối tác, nhà cung cấp và nhất là thông qua Internet, các doanh nghiệp có thể
cung cấp các dịch vụ của mình đến với khách hàng thông qua các ứng dụng web.
Tuy nhiên, với việc mở rộng mạng doanh nghiệp đến nhiều đối tượng, doanh nghiệp bắt
buộc phải cung cấp dữ liệu thông tin của mình cho các đối tượng đó. Do vậy, vấn đề đặt
ra ở đây là khả năng đảm bảo an ninh mạng là một trong những yếu tố sống còn cho một
doanh nghiệp khi áp dụng mô hình thương mại điện tử. An ninh mạng bao gồm rất nhiều
các khía cạnh khác nhau. Một trong những khía cạnh được quan tâm nhất khi xem xét
một hệ thống an ninh mạng là giải pháp xác thực (Authentication) người dùng. Xác thực
là một quá trình mà đảm bảo cho một thực thể rằng phía đầu bên kia của kết nối đúng là
đối tượng mà thực thể đó cần giao tiếp. Trong thế giới thực, chúng ta hoàn toàn có thể
nhận biết một ai đó thông qua các đặc điểm sinh học như khuôn mặt, giọng nói hoặc
thậm chí chỉ là hình dáng hay những dấu hiệu khác. Tuy nhiên, xác thực trên mạng lại là
một vấn đề hoàn toàn khác bởi vì hai người làm việc với nhau trên mạng qua một khoảng
cách lớn về địa lý, do vậy cần có những giải pháp xác thực, mã hóa và toàn vẹn dữ liệu
trên mạng. Các thuật toán mã hóa đã được ứng dụng một cách linh hoạt và thiết yếu trong
việc thiết lập kết nối, tạo ra các chữ ký điện tử, an toàn dữ liệu . . đảm bảo an ninh cho
việc truyền tải file cũng như giao dịch thông qua Internet.
I. Ứng dụng trong chữ ký điện tử
jhjhj
Chương 13: Khái quát :

Digital Signature được tạo ra và kiểm tra bằng mật mã, đó là một phương pháp thuộc lĩnh
vực toán học, nó chuyển toàn bộ message thành một dạng khó có thể nhận dạng và có thể
được giải mã. Digital signature sử dụng hai khóa thông dụng, một khóa để tạo ra digital
signature hoặc chuyển message thành dạng khó nhận dạng, một khóa dùng để kiểm tra
digital signature hoặc để chuyển message đã mã hóa về dạng nguyên thủy của nó.
Digital signature là cách cơ bản để bảo mật cho một tài liệu điện tử (e-mail, spreaDigital
Signatureheet_bảng tính, text file, ) đáng tin cậy. Đáng tin nghĩa là bạn biết ai đã tạo ra
tài liệu và bạn biết nó không bị thay đổi trong bất cứ cách nào từ người tạo ra nó.
Digital signature dựa vào thuật toán mã hoá để bảo đảm độ tin cậy. Độ tin cậy là quá
trình kiểm tra xác nhận được thông tin đến từ một nguồn tin cậy. Hai quá trình này liên
quan chặt chẽ đến digital signature.
Một Digital Signature có thể được xem như một giá trị số, được biểu diễn như một dãy
các ký tự, và được sử dụng trong tin học như một biểu thức toán học. Biểu thức phụ
thuộc vào hai đầu vào: dãy các ký tự biểu diễn dòng dữ liệu điện tử được ký và số bảo
mật được tham chiếu đến như một signature public key, điều này có nghĩa là với mỗi chữ
ký thì chỉ duy nhất người đã ký mới có thể truy xuất đến public key. Public key là khoá
công khai cho tất cả mọi người, nó giống như số điện thoại trong danh bạ điện thoại, cho
phép việc kiểm tra chữ ký. Kết quả cho thấy việc biểu diễn chữ ký số gắn vào dữ liệu
điện tử giống như sử dụng chữ ký tay trên giấy trong tài liệu văn bản.
Digital signature làm việc dựa trên hai khoá là public key và private key và thực hiện qua
hai giai đoạn là việc hình thành chữ ký trên tài liệu ở phía người gửi và việc xác nhận tài
liệu nhận được chính xác và nguyên vẹn hay không ở phía người nhận.
Vấn đề bảo mật ở digital signature không giống với các phương pháp mã hoá cổ điển là
chỉ dùng một khoá cho cả việc mã hoá ở người gửi và giải mã ở người nhận mà sử dụng
hai khoá: private key để mã hoá và public key để giải mã kiểm tra.
Chương 14: Quá trình ký trong message:
Bước 1 : “Băm” tài liệu gửi thành các hash-value hay còn được gọi là Message Digest,
các Message Digest này sẽ được tính toán để đưa vào quá trình mã hoá chữ ký.
Bước 2: Tính Message Digest
Trong bước 2 của tiến trình, một hash-value (giá trị băm) của một message thường được

gọi là Message Digest được tính toán bằng cách áp dụng các thuật toán băm mã hoá
cryptographic hashing arthgorithm như MD2, MD4, MD5, SHA1,…Một hash-value
đã tính của message là một dãy bit liên tục, có độ dài cố định, được trích rút từ message
theo cách nào đó.
Tất cả các thuật toán chính xác cho việc tính toán message digest được cung cấp như một
phép biến đổi toán học, trong đó cứ một bit đơn từ input message được biến đổi thì một
digest khác được gửi đến. Với cách làm việc như vậy các thuật toán là rất bảo đảm độ tin
cậy trước các cuộc tấn công.
Bước 3: Tính Digital Signature
Trong bước hai của việc ký message, thông tin nhận được trong bước băm message
(Message Digest) đã mã hoá với khoá private key của người ký vào message, vì thế một
giá trị băm giải mã cũng được gọi là Digital Signature được gửi đến. Vì mục đích này,
các thuật toán mã hoá cho việc tính chữ ký số từ message digest được dùng. Thuật toán
thường được sử dụng là RSA, DIGITAL SIGNATUREA, ECDIGITAL SIGNATUREA.
Thông thường, chữ ký số gắn vào message trong định dạng đặc biệt để kiểm tra khi cần
thiết.
Hình 19 Quá trình ký trong message
Chương 15: Qúa trình kiểm tra xác nhận chữ ký trên tài liệu
Kỹ thuật Digital Signature cho phép người nhận message có kèm chữ ký kiểm tra tính
xác thực và tính toàn vẹn của nó. Quá trình kiểm tra chữ ký số - digital signature
verification nhằm mục đích xác định một message gửi đi đã được ký bằng khoá private
key đúng với khóa public key gửi đi hay không. Digital signature verification không
thể xác nhận có hay không một message đã được ký bởi người gửi. Nếu chúng ta muốn
kiểm tra có hay không vài người đã ký trong một message gửi đi, chúng ta cần nhận được
public key theo cách nào đó. Điều này thực hiện hoặc bằng cách lấy public key trong
cách an toàn (ví dụ như floppy disk hoặc CD) hoặc với sự trợ giúp của Public Key
Intrasfication theo một giấy chứng nhận số. Nếu không có một cách an toàn để nhận
khoá public key thực sự từ người gửi, chúng ta không có khả năng kiểm tra message
được gửi là có phải xác thực của người này hay không.
Như vậy, việc kiểm tra một Digital Signature được thực hiện trong 3 bước:

Bước 1: Tính Current Hash-Value

×