Thuật toán mã hóa thông tin cryptography
Trang 1LỜI MỞ ĐẦU
Thế giới của chúng ta luôn sôi sục trong muôn vàn biến động được tạo ra bởi con người Và trong thế kỷ 21 này, máy tính là một trong những sản phẩm vĩ đại nhất Cùng với thời gian, người ta không muốn sử dụng một máy tính đơn lẻ nữa mà sẽ kết nối các máy này lại thành một mạng máy tính nhằm tăng khả năng làm việc, hiểu biết, trao đổi, cập nhật các thông tin … Mạng Internet là xu hướng phát triển của thế giới ngày nay Hiện nay, Internet đã trở nên rất phổ biến trên toàn thế giới Thông qua mạng Internet mọi người có thể trao đổi thông tin với nhau một cách
nhanh chóng thuận tiện Những công ty phát triển và kinh doanh trên môi trường Intranet/Internet họ phải đối diện với khó khăn lớn là làm thế nào
để bảo vệ những dữ liệu quan trọng, ngăn chặn những hình thức tấn
công, truy xuất dữ liệu bất hợp pháp từ bên trong (Intranet), lẫn cả bên ngoài (Internet) 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 bài ĐỒ ÁN CƠ
SỞ 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
Trang 2xin chân thành cảm ơn thầy Nguyễn Quang Ánh đã giúp đỡ em trong việc hoàn thành đề tài này.
Đà Nẵng, ngày……tháng……
năm……
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
a Lịch sử ra đời 13
b Nội dung phương pháp mã hóa DES 13
c Quy trình mã hóa DES 14
d Chương trình mình họa 16
3 Thuật toán mã hóa đối xứng AES (Rijndael) 17
a Lịch sử ra đời 17
b Đặc trưng của thuật toán AES 17
c Quy trình mã hóa AES 17
d Sơ đồ mã hóa 18
e 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
Trang 3a 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
IV Ứng dụng của các thuật toán mã hóa trong thương mại điện tử 24
1 Xác thực người dùng sử dụng giao thức SSL 24
c Ứng dụng trong chữ ký điện tử 28
a Định nghĩa 28
b Qúa trình ký trong messege 28
c Qúa trình kiểm tra xác nhận chữ ký trên tài liệu 29
d Tầm quan trọng của chữ ký số trong thương mại điện tử 31
V Kết luận 33
1 Kết luận về đề tài 33
2 Tài liệu tham khảo 33
3 Nhận xét của giảng viên hướng dẫn 33
Trang 4I Tổng quan mã hóa thông tin
1 Khái niệm mã hóa thông tin
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 đó
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ằmphụ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
2 Hệ thống mã hóa (cryptosystem)
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 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 tinBê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:
a 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
b 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
c 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
Trang 5d 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
3 Độ an toàn của thuật toán
Nguyên tắc đầu tiên trong mã hoá là “Thuật toán nào cũng có thể bị phá vỡ” Các thuật toánkhác nhau cung cấp mức độ an toàn khác nhau, phụ thuộc vào độ phức tạp để phá vỡ chúng Tại một thời điểm, độ an toàn của một thuật toán phụ thuộc:
- Nếu chi phí hay phí tổn cần thiết để phá vỡ một thuật toán lớn hơn giá trị của thông tin đã mãhóa thuật toán thì thuật toán đó tạm thời được coi là an toàn
- Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật toán đó tạm thời được coi là an toàn
- Nếu lượng dữ liệu cần thiết để phá vỡ một thuật toán quá lơn so với lượng dữ liệu đã được
mã hoá thì thuật toán đó tạm thời được coi là an toàn
4 Khái niệm về chìa khoá
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àithì càng có nhiều khả năng chống lại tấn công kiểu brute-force
Brute-force attack (exhaustive key search): phương pháp tấn công bằng cách thử tất cả những
chìa khóa có thể có Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian dài Vì thế có thể coi một thuật toán là
an toàn nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force Ngoài ra để chống lại tấn công này, chìa khóa bị mật được thay đổi một cách thường xuyên hơn
5 Phân loại các thuật toán mã hoá
Có rất nhiều các thuật toán mã hoá khác nhau Từ những thuật toán được công khai để mọi người cùng sử dụng và áp dụng như là một chuẩn chung cho việc mã hoá dữ liệu; đến những thuật toán mã hoá không được công bố Có thể phân loại các thuật toán mã hoá như sau:
Trang 6Phân loại theo các phương pháp:
- Mã hoá cổ điển (Classical cryptography)
- Mã hoá đối xứng (Symetric cryptography)
- Mã hoá bất đối xứng(Asymetric cryptography)
- Hàm băm (Hash function)
Phân loại theo số lượng khoá:
- Mã hoá khoá bí mật (Private-key Cryptography)
- Mã hoá khoá công khai (Public-key Cryptography)
II Các phương pháp mã hóa
1 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
Ngoài ra còn một số phương pháp : Phương pháp Affine, Vigenere, Hill
Trang 72 Mã hoá đối xứng
Ở 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ênnhậ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:
Trang 8- 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
Hình 4 : Một số thuật toán nổi tiếng trong mã hoá đối xứngPhươ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
3 Mật mã bất đối xứng
Ý 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 Hellman của Martin Hellman và Whitfield Diffie được công bố Năm 1977 nhóm tác giả
Diffie-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
Trang 9- 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 tintrê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ự
Trang 10khá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…
Trang 11IV Minh họa một số thuật toán mã hóa dữ liệu
a 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:
a) Đánh số thứ tự cho từng kí tự trong bảng chữ cái :
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)
Trang 12c Chương trình minh họa
Trang 13b Thuật toán mã hóa đối xứng DES
a 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
b 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 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
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ỗ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-
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
Trang 14ứ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-boxphụ 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 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ả
Hình 8 : Qúa trình sinh khóa con trong DES
c 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
Trang 15Hì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= 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 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 ( 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 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ậnnhậ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)
Trang 16Hình 11 : Sơ đồ thuật toán mã hóa Data Encryption Standard (DES)