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.
33 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1429 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Ứng dụng của các thuật toán mã hóa trong thương mại điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜ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 xin 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……
Bùi Thế Việt
MỤC LỤC
Lời mở đầu 1
Mục lục 2
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
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
Phương pháp mã hóa thay thế : CEASAR CIPHER 11
Thuật toán mã hóa đối xứng DES 13
Lịch sử ra đời 13
Nội dung phương pháp mã hóa DES 13
Quy trình mã hóa DES 14
Chương trình mình họa 16
Thuật toán mã hóa đối xứng AES (Rijndael) 17
Lịch sử ra đời 17
Đặc trưng của thuật toán AES 17
Quy trình mã hóa AES 17
Sơ đồ mã hóa 18
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
Ứng dụng của các thuật toán mã hóa trong thương mại điện tử 24
Xác thực người dùng sử dụng giao thức SSL 24
Ứ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
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
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ằ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.
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 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: 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 d. 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án khá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ài thì 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: Phâ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)
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.
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 ...
2. 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ê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.
Hình 4 : Một số thuật toán nổi tiếng trong mã hoá đối xứng
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.
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 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 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ác file đính kèm theo tài liệu này:
- Do_An_Ma_Hoa_Crytography_www.vnitblog.com.doc