MỤC LỤC
Lời mở đầu 1
Mục lục 2
I. Tổng quan mã hóa thông tin 4
1. Khái niệm mã hóa thông tin 4
2. Hệ thống mã hóa (cryptosystem) 4
a. Confidentiality (Tính bí mật) 4
b. Authentication (Tính xác thực) 4
c. Integrity (Tính toàn vẹn) 4
d. Non-repudation (Tính không thể chối bỏ) 5
3. Độ an toàn của thuật toán 5
4. Khái niệm về chìa khoá 5
5. Phân loại các thuật toán mã hoá 5
II. Các phương pháp mã hóa 6
1. Mã hóa cổ điển 6
2. Mã hoá đối xứng 7
3. Mật mã bất đối xứng 8
4. Hashing – Hàm Băm 9
III. Minh họa một số phương pháp mã hóa dữ liệu 11
1. Phương pháp mã hóa thay thế : CEASAR CIPHER 11
2. Thuật toán mã hóa đối xứng DES 13
1. Lịch sử ra đời 13
2. Nội dung phương pháp mã hóa DES 13
3. Quy trình mã hóa DES 14
4. Chương trình mình họa 16
3. Thuật toán mã hóa đối xứng AES (Rijndael) 17
1. Lịch sử ra đời 17
2. Đặc trưng của thuật toán AES 17
3. Quy trình mã hóa AES 17
4. Sơ đồ mã hóa 18
5. Chương trình minh họa thuật toán AES 19
4. Thuật toán mã hóa bất đối xứng RAS 20
a. Khái quát sơ lược thuật toán RSA 20
b. Quy trình mã hóa 20
c. Sơ đồ thuật toán 21
d. Quy trình mã hóa 21
e. Chương trình minh họa 21
5. Thuật toán MD5 22 a. Mô tả thuật toán 22
b. Quy trình mã hóa MD5 22
c. Sơ đồ thuật toán 22
d. Chương trình mô phỏng 22
33 trang |
Chia sẻ: netpro | Lượt xem: 3277 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Giáo trình Hệ thống mã hóa cryptosystem, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
vest, 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 5 : 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,...
4. Hashing – Hàm Băm
Hashing là một phương thức mật mã nhưng nó không phải là một thuật toán mã hoá. Đúng như vậy, hashing chỉ sử dụng một chứng chỉ số duy nhất được biết đến với tên như "hash value – giá trị hash", "hash – băm", Message Authentication Code (MAC), fingerprint – vân tay, hay một đoạn message. Dữ liệu đầu vào của bạn có thể là một file, một ổ đĩa một quá trình truyền thông tin trên mạng, hay một bức thư điện tử. Thông số hash value được sử dụng để phát hiện khi có sự thay đổi của tài nguyên. Nói cách khác, hashing sử dụng nó để phát hiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hay trong khi truyền hay không.
Ví dụ, thông số hash value được tính toán để so sánh với thông số hash value được tạo ra trước đó một tuần. Nếu hai thông số giống nhau thì dữ liệu chưa có sự thay đổi. Nếu hai thông số có sự khác nhau, thì dữ liệu đã bị thay đổi. Thông số MAC value được tính toán bởi người gửi (sender) và người nhận (receive) với cùng một thuật toán.
Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệu thành một dạng mật mã, quá trình hashing sử dụng một thông số hash value và không thay đổi dữ liệu ban đầu. Bởi vì các tính năng đặc biệt, hashing có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu. Nó cũng có khả năng sử dụng để kiểm tra khi có một tiến trình copy được thực hiện và đảm bảo tính chính xác của dữ liệu khi chúng được copy.
Ví dụ, khi một ổ cứng được tạo ra một bản copy, một quá trình hash được thực hiện trên ổ đĩa trước khi quá trình nhân đôi được thực hiện. Nếu hai thông số hash của ổ cứng mới được tạo ra và thông số hash của ổ đĩa ban đầu thì quá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo dữ liệu không có sự thay đổi mất mát trong quá trình nhân bản. Việc hashing sử dụng để đảm bảo dữ liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn dữ được nguyên bản sau vô số lần copy – và điều này không thể thực hiện khi lưu dữ liệu các dạng khác – ví như bạn lưu thông tin âm thanh bằng băng từ sẽ bị biến dạng sau nhiều lần copy.
Ví dụ, Message Digest 5 (MD5) là một thuật toán hash với 128-bit hash. Điều này có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình hash bởi nó luôn luôn thêm vào 128 bits. Sức mạnh của quá trình hashing là nó được thực hiện một chiều và không thể có phương thức nào có thể thực hiện ngược lại được để converts thông số hash thành dữ liệu ban đầu. Nếu một vài người có được các thông số hash của bạn, họ không thể lấy được dữ liệu ban đầu. Tuy nhiên đó không phải là phương thức mật mã không thể tấn công. Hashs không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩa không có công cụ nào có thể chuyển ngược lại một password được hash thành một password nguyên bản chưa được hash. Tuy nhiên một thuật toán nào cũng có những bất cập riêng, bằng việc sử dụng các phần mềm, password crackers chúng có thể phát hiện ra đoạn mã thêm vào dữ liệu ban đầu và chỉ cần xoá đoạn hash value đi là có thể truy cập bình thường. Dữ liệu Account thường không được mã hoá, và dữ liệu password thường được hash do đó hầu hết các công cụ crack password chỉ có thể xoá password đã được đặt cho user đó mà không thể view password đó.
Thuật toán hashing thường được sử dụng:SHA-1, MD5, MD4…..
IV. Minh họa một số thuật toán mã hóa dữ liệu
Phương pháp mã hóa thay thế : CEASAR CIPHER
Phương pháp này được Ceasar xây dựng trong cuộc chiến Gallic Wars, thay thế từng kí tự trong Plaintext bằng kí tự đứng thứ 3 sau nó.Điều này tương được với phép dịch 3 vị trí. Xem hình minh họa dưới đây :
Hình 6 : Vòng tròn Ceasar
Như các bạn thấy trên, chữ A sẽ được thay thế bằng chữ D, B thay bằng E v...v
Với Ceasar, ông ta chỉ áp dụng phép dịch 3 vị trí như trên hình minh họa. Nhưng sau này khi áp dụng nó người ta sử dụng các phép dịch khác lớn hơn. Nhưng như các bạn thấy đối với bảng chữ cái tiếng Anh thì từ A -> Z có 26 chữ cái, do đó điểm yếu của phương pháp này nằm ở chỗ phạm vi của phép dịch chỉ được phép nằm trong khoảng từ 0 – 25. Ví dụ nếu ta sử dụng phép dịch 26 thì sẽ tương đương với phép dịch 0. Dựa vào phương pháp này người ta đã xậy dựng nên công thức cho Ceasar Cipher như sau:
Đánh số thứ tự cho từng kí tự trong bảng chữ cái :
0
1
2
3
4
5
6
7
8
9
10
11
12
A
B
C
D
E
F
G
H
I
J
K
L
M
13
14
15
16
17
18
19
20
21
22
23
24
25
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Công thức cho Ceasar Cipher :
C = E(P) = (P + K) mod (26)
P = D(C) = (C – K) mod (26)
trong đó P, C : số thứ tự của Plaintext và Ciphertext trong bảng trên. K là phép dịch.
Ví dụ : Tôi có Plaintext là : HOW. Tôi mã hóa nó sử dụng phép dịch K = 5. Vậy tôi áp dụng công thức trên và có được như sau: P = HOW (7,14,22) à C = MTB (12,19,1).
Chương trình minh họa
Thuật toán mã hóa đối xứng DES
Lịch sử ra đời
Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩn mã hóa DES với phương pháp mã hóa Feistel Cipher. Vào năm 1976 Cơ quan bảo mật quốc gia Hoa Kỳ (NSA) đã công nhận DES dựa trên phương pháp Feistel là chuẩn mã hóa dữ liệu. Kích thức khóa của DES ban đầu là 128 nhưng tại bản công bố FIPS kích thước được rút xuống 56 bit để tăng tốc độ xử lý và đưa ra các tiêu chuẩn thiết kệ một chuẩn mã hóa dữ liệu.
Nội dung phương pháp 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:
Li = Ri–1
Ri = Li–1 xor F(Ri–1, Ki)
Ở đâ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 7 : 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ả
Hình 8 : Qúa trình sinh khóa con trong DES
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 xo bằng cách hoán vị x theo hoán vị IP (Initial Permutation). Biểu diễn xo = IP(x) = LoRo, Lo gồm 32 bit bên trái xo, Ro gồm 32 bit bên phải của xo
Hình 9 : 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= Ri-1
Ri = Li-1 f (Ri-1 ,Ki)
với biểu diễn phép XOR trên dãy 2 bít, K1, K2, ......., K16 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 R16L16 , thu được từ y gồm 64 bit. Như vậy, y = IP-1 ( R16L16 )
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 10 :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=B1B2B3B4B5B6B7B8
Sử dụng 8 ma trận S1,S2,....S8, 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 = b1b2b3b4b5b6 , 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 b1b6 chi số cột c có biểu diễn nhị phân b2b3b4b5. 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 = C1C2C3C4C5C6C7C8 . 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 11 : Sơ đồ thuật toán mã hóa Data Encryption Standard (DES)
Chương trình mình họa
Thuật toán mã hóa đối xứng AES (Rijndael)
Lịch sử ra đời
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
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 12 : Mô hình mô tả bước AddRoundKey
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 13 : Mô tả hoạt động bước SubBytes
ShiftRows – đổi chổ, các hàng trong khối được dịch vòng
Hình 14 : 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 15 : 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 16 : Sơ đồ mã hóa và giải mã thuật toán AES
Chương trình minh họa thuật toán AES
Thuật toán mã hóa bất đối xứng RAS
a. 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.
b. 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
Chọn 2 số nguyên tố lớn p và q.
Tính tích n = p*q. Sau đó tính (n) = (p-1)(q-1).
Tìm số d sao cho d và (n) là nguyên tố cùng nhau (d, (n)) = 1.
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ụ
1. Chọn các số nguyên tố: p=17 & q=11
2. Tính n = pq, n = 17×11=187
3. Tính Ф(n)=(p–1)(q-1)=16×10=160
4. Chọn e : gcd(e,160)=1; Lấy e=7
5. Xác định d: de=1 mod 160 và d < 160
Giá trị cần tìm là d=23, vì 23×7=161= 10×160+1
6. In khoá công khai KU={7,187}
7. Giữ khoá riêng bí mật KR={23,17,11}
Sơ đồ thuật toán
Quy trình mã hóa
Chương trình : Bản gốc M (M<n) → Bản mã C = Me 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 trình minh họa
Thuật toán MD5
a. Mô tả thuật toán
Thuật toán có đầu vào là một thông điệp có độ dài tuỳ ý và có đầu ra là một chuỗi có độ
dài cố định là 128 bit. Thuật toán được thiết kế để chạy trên các máy tính 32 bit.
b. Quy trình mã hóa thuật toán MD5
Thông điệp đầu vào có độ dài b bit bất kỳ. Biểu diễn các bit dưới dạng như sau: m[0]
m[1] m[2] ... m[b-1]
Bước1: Các bit gắn thêm : Thông điệp được mở rộng, thêm bit vào phía sau sao cho độ
dài của nó (bit) đồng dư với 448 theo module 512. Nghĩa là thông điệp được mở rộng sao
cho nó còn thiếu 64 bit nữa thì sẽ có một độ dài chia hết cho 512. Việc thêm bit này được
thực hiện như sau: một bit ‘1’ được thêm vào sau thông điệp, sau đó các bit ‘0’ được
thêm vào để có một độ dài đồng dư với 448 module 512.
Bước 2: Gắn thêm độ dài: Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm
vào phía sau kết quả của bước 1.
Bước 3: Khởi tạo bộ đệm MD: Một bộ đệm 4 từ (A,B,C,D) được dùng để tính mã số
thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi
tạo theo những giá trị hex sau :
A=0x01234567
B=0x89abcdef
C=0xfedcba98
D=0x76543210
Bước 4 :Xử lý thông điệp theo từng khối 16 từ. Định nghĩa các hàm phụ, các hàm này
nhận giá trị đầu vào là 3 từ 32 bit và tạo tạo ra một word 32 bit.
Bước 5: Thông điệp rút gọn = A||B||C||D.
Mã số thông điệp được tạo ra là A,B,C,D. Nghĩa là chúng ta bắt đầu từ byte thấp của A, kết thúc với byte cao của D.
Sơ đồ thuật toán
Hình 17 :Sơ đồ thuật toán MD5
Chương trình minh họa
Ứng dụng các thuật toán mã hóa trong thương mại đ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.
1. Xác thực người dùng sử dụng giao thức SSL
Với việc sử dụng giải pháp xác thực truyền thống (xác thực bằng mật khẩu) là không an toàn, người ta cần những giải pháp xác thực tốt hơn trong môi trường kinh doanh hiện nay để thiết lập một kết nối an toàn. Bằng cách sử dụng các thuật toán mã hóa trong việc thiết lập kết nối giữa Web browser với một webserver, giao thức xác thực truyền tin SSL (Secure Socket Layer )được thiết kế đã đáp ứng được nhu cầu về xác thực, mã hóa và toàn vẹn dữ liệu
Việc kết nối giữa một Web browser tới bất kỳ điểm nào trên mạng Internet đi qua rất nhiều các hệ thống độc lập mà không có bất kỳ sự bảo vệ nào với các thông tin trên đường truyền. Không một ai kể cả người sử dụng lẫn Web server có bất kỳ sự kiểm soát nào đối với đường đi của dữ liệu hay có thể kiểm soát được liệu có ai đó thâm nhập vào thông tin trên đường truyền. Để bảo vệ những thông tin mật trên mạng Internet hay bất kỳ mạng TCP/IP nào, SSL đã được chuẩn hoá để thực hiện các nhiệm vụ bảo mật sau: - Xác thực server: Cho phép người sử dụng xác thực được server muốn kết nối. Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai để chắc chắn rằng certificate và public ID của server là có giá trị và được cấp phát bởi một CA (certificate authority) trong danh sách các CA đáng tin cậy của client. Điều này rất quan trọng đối với người dùng. Ví dụ như khi gửi mã số credit card qua mạng thì người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin này có đúng là server mà họ định gửi đến không.
- Xác thực Client: Cho phép phía server xác thực được người sử dụng muốn kết nối. Phía server cũng sử dụng các kỹ thuật mã hoá công khai để kiểm tra xem certificate và public ID của server có giá trị hay không và được cấp phát bởi một CA (certificate authority) trong danh sách các CA đáng tin cậy của server không. Điều này rất quan trọng đối với các nhà cung cấp. Ví dụ như khi một ngân hàng định gửi các thông tin tài chính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của người nhận.
∙ Khái niệm Cetificate Authority (CA) trong SSL : Một tổ chức tin cậy phát hành các chứng thực điện tử (electronic certificate) cho các đối tác cần trao đổi thông tin, giao dịch với nhau thông qua các phương tiện giao tiếp điện tử như: Internet, Smart card, Security card… - CA cung cấp và quản lý các electronic certificates cho các đối tác như: kiểm tra đối tác đăng ký (registration) cấp phát (issue), thu hồi certificate (revocation)CA được cấu trúc theo mô hình phân cấp X.500 và cho phép các phân cấp con có thể tiếp tục chứng thực cho các đối tác khác (intermediate). Các thông tin trong một certificate bao gồm gồm public key của site's server, tên của đối tác đăng ký, Algorithm ID được dùng để ký lên certificate, ngày hết hạn certificate, tên của tổ chức CA cấp phát… - Các trusted CA bảo đảm được đầy đủ 3 yếu tố cho một đối tác khi sử dụng trusted certificates là: CONFIDENTIALITY, INTEGRITY, và AUTHENTICATIONCONFIDENTIALITY: Không ai có thể đọc được nội dung data khi đang giao dịchINTEGRITY: Bảo đảm được tính toàn vẹn của data, không ai có thể sửa đổi lại dataAUTHENTICATION: Bảo đảm được tính xác thực của đối tác đăng ký, không ai có thể giả mạo đượ
- Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được mã hoá trên đường truyền nhằm nâng cao khả năng bảo mật. Điều này rất quan trọng đối với cả hai bên khi có các giao dịch mang tính riêng tư. Ngoài ra, tất cả các dữ liệu được gửi đi trên một kết nối SSL đã được mã hoá còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn, thay đổi trong dữ liệu. ( đó là các thuật toán băm – hash algorithm). Giao thức SSL bao gồm 2 giao thức con: giao thức SSL record và giao thức SSL handshake. Giao thức SSL record xác định các định dạng dùng để truyền dữ liệu. Giao thức SSL handshake (gọi là giao thức bắt tay) sẽ sử dụng SSL record protocol để trao đổi một số thông tin giữa server và client vào lấn đầu tiên thiết lập kết nối SSL.
Các thiết lập kết nối trong giao thức SSL
1. Web browser kết nối với web server và yêu cầu một kết nối an toàn và bảo mật 2. Web server trả về cho web browser site's certificate
3. Web browser kiểm tra các thông tin trong site's certificate xem có trust được hay không (khi certificate không được trust ta sẽ thấy xuất hiện một warning dialogue, và nếu muốn cố tự mình cho rằng nó có thể trust được thì click Yes để kết nối, một khi thấy warning dialogue hiện ra mà vẫn cố chấp nhận giao dịch thì web site mà bạn đang kết nối có thể là web site giả mạo) 4. Web browser lúc này mới tạo ra một session key sau đó dùng server's public key để mã hóa (asymmetric) và chuyển session key đã được encrypt này tới web server 5. Web server dùng private key của nó để giải mã (a
Các file đính kèm theo tài liệu này:
- Hệ thống mã hóa cryptosystem.docx