Đề tài: 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Ử Tài liệu hay cho các bạn nghiên cứu về kỹ thuật Mã Hóa cũng như ứng dụng với chữ ký điện tử, tài liệu dành cho các bạn yêu thích về công nghệ thông tin.
Trang 1PHỤ LỤC
LỜI MỞ ĐẦU 2
Nội dung: 3
Chương 1: Tổng quan mã hóa thông tin 3
I Khái niệm: 3
II Hệ thống mã hóa 3
1 Confidentiality (Tính bí mật): 4
2 Authentication (Tính xác thực): 4
3 Integrity (Tính toàn vẹn): 4
4 Non-repudation (Tính không thể chối bỏ): 4
III Khái niệm về khóa (Key) 5
Chương 2: Các phương pháp mã hóa 6
I Mã hóa cổ điển 6
II Mã hóa đối xứng (mã khóa bí mật) 7
III. Mã hóa không đối xứng(mã khóa công khai) 9
Chương 3: Một số thuật toán mã hóa 11
I Thuật toán mã hóa DES 11
II Thuật toán mã hóa AES (Rijndael) 16
III Thuật toán mã hóa bất đối xứng RAS 19
1 Khái quát sơ lược thuật toán RSA 19
2 Quy trình mã hóa RSA 19
3 Sơ đồ thuật toán 20
4 Quy trình mã hóa 20
Chương 4: Ứ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ử 22 I Ứng dụng trong chữ ký điện tử 22
1 Khái quát : 23
2 Quá trình ký trong message: 24
3 Qúa trình kiểm tra xác nhận chữ ký trên tài liệu 25
Kết luận 29
Tài liệu tham khảo 30
Trang 2LỜ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ưởngrấ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ệchọ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ìnhthườ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ầuquan 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ậpcủ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ựngnhằ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ênmạ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ệctì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
Trang 3Thuậ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õ (cleartext) 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 chotrong 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, ápdụ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
Trang 4 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 ek Є E và luật giải mã dk Є D tương ứng Luật mã hóa ek : P → C và luật giải mã ek :
C → P là hai ánh xạ thỏa mãn dk(ek(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ácmụ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 đượcphé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ốcban đầ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áchkhá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ốcthô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ìnhtruyề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ỏ):
Trang 5Ngườ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ùngtrự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àocũ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 đượcthự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 hashSHA-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ụcphâ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ìakhó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
Trang 6CHƯƠ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
- 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
Trang 7- 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ànbằng các kí tự trong Ciphertext, thì trong phương pháp mã hoá hoán vị, các kí tự trongPlaintext 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ểnkhô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)
Trang 8Hì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ậtchí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ọivớ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ệukhá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
Trang 9Phươ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ộtkey 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 KeyInfrastructure (PKI) giải pháp được sử dụng kết hợp với mật mã đối xứng trong quá trìnhtruyề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ềnvớ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ụngPKI 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ápDiffie-Hellman của Martin Hellman và Whitfield Diffie được công bố Năm 1977 nhómtá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ảithay 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ôngkhai 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à
- 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
Trang 10- 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ìnhtruyề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 tinbằ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,
Trang 11CHƯƠ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 quanử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ớikhoá con 48 bít Sau đó chia thành 8 cụm 6 bít và cho qua 8 S-box để nhận được kếtquả 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ộngvới nửa trái để chuyển thành nửa phải của bước sau
Trang 12Hì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ỗihà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-6ghé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 ứngtrê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 đượcchuyể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ụngnhư 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
Trang 13 Ở 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 24bí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 Є Pbằ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 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à đầuvà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ắcsau : 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, 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 bittrong khóa K cho trước)
Trang 14Bướ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 ( 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ểudiễ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) đượcxá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ểudiễ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 bitthu đượ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àmF(A,J)
Trang 15Hình 8 : Sơ đồ thuật toán mã hóa Data Encryption Standard (DES)