Tài liệu Đề tài Tìm hiểu cơ chế và thuật toán của các giải thuật: 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 ...
33 trang |
Chia sẻ: hunglv | Lượt xem: 1206 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Tìm hiểu cơ chế và thuật toán của các giải thuật, để tải tài liệu gốc về máy 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 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ã (asymmetric) và lấy được session key dùng để mã hóa data (symmetric) giửa web server và web browser
Hình 18 : Các bước thiết kết nối trong giao thức SSL
Chúng ta hãy phân tích bước thứ ba kỹ hơn một chút: Như ta đã biết electronic certificate chứa các thông tin bao 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…và quan trọng nhất là certificate đó phải được "ký" bởi các CA mà các thực thể (entities) phải hiểu (trust) được CA đó, mà các entities trong trường hợp này ở đây là ai? Đó chính là các WEB BROWSER dùng để kết nối giao dịch chứ không phải con người sử dụng web browser đang tiến hành giao dịch, để tránh các tình trạng giả mạo e-banking website bằng cách tạo ra một web site giả có nội dung tương tự giống như web site thật nhằm mục đích dụ users đánh vào các thông tin đăng nhập như username & password, thông tin tài khoản... sau đó xuất ra cho khác hàng những câu thông báo đại loại như server busy, hãy vui lòng đăng nhập lại vào khi khác…để đánh lừa khách hàng Biện pháp dễ dàng và hiệu quả nhất để chống được trò giả mạo này là web browser mặc định (default) phải trust các certificates do các trusted CA ban hành, vì các thông tin như validity dates, name of certificate issuer trên electronic certificate đều có thể giả mạo được ngoại trừ chữ ký lên các certificates, do các trusted CA đó đã dùng RSA Private Key của mình để "ký" (mã hóa) nên không ai có thể giả mạo được. Đối với các giao dịch Internet banking sử dụng https (ssl) mà không dùng các trusted CA thì sẽ gặp rất nhiều khó khăn trong việc phân phối site’s certificate cho khách hàng để nhúng vào PC của họ (vì khi đó site’s certificate phải được phân phối an toàn đến khách hàng bằng hình thức không thông qua Internet - out of band) và dịch vụ đó sẽ khó được sử dụng rộng rãi ở mọi nơi do gây khó khăn và phiền phức cho khách hàng trong vấn đề import site’s certificate. Giá trị quyết định tính tin cậy (trusted) của mỗi CA sẽ phụ thuộc vào tổng số lượng các loại web browser được cài sẵn các root trusted certificates, khi các CA nào mà có đến 99% các loại web browser hiểu được mình một cách mặc định (trusted by default) thì các CA đó được xếp vào loại High-Assurance SSL Certificate như Verisign, Thawte, Entrust, Baltimore, Comodo…
Vai trò của các thuật toán mã hóa trong giao thức SSL Giao thức SSL hỗ trợ rất nhiều các thuật toán mã hoá, được sử dụng để thực hiện các công việc trong quá trình xác thực server và client, truyền tải các certificates và thiết lập các khoá của từng phiên giao dịch (sesion key). Client và server có thể hỗ trợ các bộ mật mã (cipher suite) khác nhau tuỳ thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khoá mà họ cảm thấy chấp nhận được - điều này liên quan đến mức độ bảo mật của thông tin, …. Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bên client và server xác lập khoá đối xứng mà họ sẽ sử dụng trong suốt phiên giao dịch SSL. Và thuật toán được sử dụng phổ biến là RSA key exchange. Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá. Người quản trị có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server. Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịch SSL.
- Thuật toán mã hóa RSA được sử dụng chủ yếu trong các kết nối SSL, RSA thường được dùng để mã hóa các "session key" (key để mã hóa data dùng cho giải thuật mã hóa đối xứng) giúp cho quá trình trao đổi các secret keys được đơn giản và dễ dàng, bảo đảm được tính xác thực cũng như tính toàn vẹn trong quá trình trao đổi dữ liệu - Các giải thuật mã hóa đối xứng (symmetric algorithm) như DES, AES, IDEA, Blowfish... được công khai cách thức và phương pháp mã hóa, như vậy thì độ khó duy nhất để có thể đảm bảo được tính bảo mật của data chỉ có thể nẳm ở chiều dài của secret key. Giải thuật mã hóa đối xứng (symmetric algorithm) có ưu điểm là nhanh hơn mã hóa bất đối xứng rất nhiều nên người ta mới dùng nó để mã hóa các data cần trao đổi với nhau qua các môi trường không an toàn như Internet, nhược điểm của mã hóa đối xứng chính là nó không cho biết được tính xác thực cũng như sự toàn vẹn của data và nó cũng bất tiện ở chỗ là secret key để mã và giải mã data cần phải được trao đổi riêng qua các phương tiện khác chứ không thể gởi đi cùng data được.
2. Ứng dụng mã hóa trong chữ ký điện tử
a. Định nghĩa : Digital Signature được tạo ra và kiểm tra bằng mật mã, đó là một phương pháp thuộc lĩnh vực toán học, nó chuyển toàn bộ message thành một dạng khó có thể nhận dạng và có thể được giải mã. Digital signature sử dụng hai khóa thông dụng, một khóa để tạo ra digital signature hoặc chuyển message thành dạng khó nhận dạng, một khóa dùng để kiểm tra digital signature hoặc để chuyển message đã mã hóa về dạng nguyên thủy của nó.
Digital signature là cách cơ bản để bảo mật cho một tài liệu điện tử (e-mail, spreaDigital Signatureheet_bảng tính, text file,..) đáng tin cậy. Đáng tin nghĩa là bạn biết ai đã tạo ra tài liệu và bạn biết nó không bị thay đổi trong bất cứ cách nào từ người tạo ra nó.
Digital signature dựa vào thuật toán mã hoá để bảo đảm độ tin cậy. Độ tin cậy là quá trình kiểm tra xác nhận được thông tin đến từ một nguồn tin cậy. Hai quá trình này liên quan chặt chẽ đến digital signature.
Một Digital Signature có thể được xem như một giá trị số, được biểu diễn như một dãy các ký tự, và được sử dụng trong tin học như một biểu thức toán học. Biểu thức phụ thuộc vào hai đầu vào: dãy các ký tự biểu diễn dòng dữ liệu điện tử được ký và số bảo mật được tham chiếu đến như một signature public key, điều này có nghĩa là với mỗi chữ ký thì chỉ duy nhất người đã ký mới có thể truy xuất đến public key. Public key là khoá công khai cho tất cả mọi người, nó giống như số điện thoại trong danh bạ điện thoại, cho phép việc kiểm tra chữ ký. Kết quả cho thấy việc biểu diễn chữ ký số gắn vào dữ liệu điện tử giống như sử dụng chữ ký tay trên giấy trong tài liệu văn bản.
Digital signature làm việc dựa trên hai khoá là public key và private key và thực hiện qua hai giai đoạn là việc hình thành chữ ký trên tài liệu ở phía người gửi và việc xác nhận tài liệu nhận được chính xác và nguyên vẹn hay không ở phía người nhận.
Vấn đề bảo mật ở digital signature không giống với các phương pháp mã hoá cổ điển là chỉ dùng một khoá cho cả việc mã hoá ở người gửi và giải mã ở người nhận mà sử dụng hai khoá: private key để mã hoá và public key để giải mã kiểm tra.
b Quá trình ký trong Message
Bước 1 : “Băm” tài liệu gửi thành các hash-value hay còn được gọi là Message Digest, các Message Digest này sẽ được tính toán để đưa vào quá trình mã hoá chữ ký.
Bước 2: Tính Message Digest
Trong bước 2 của tiến trình, một hash-value (giá trị băm) của một message thường được gọi là Message Digest được tính toán bằng cách áp dụng các thuật toán băm mã hoá cryptographic hashing arthgorithm như MD2, MD4, MD5, SHA1,…Một hash-value đã tính của message là một dãy bit liên tục, có độ dài cố định, được trích rút từ message theo cách nào đó.
Tất cả các thuật toán chính xác cho việc tính toán message digest được cung cấp như một phép biến đổi toán học, trong đó cứ một bit đơn từ input message được biến đổi thì một digest khác được gửi đến. Với cách làm việc như vậy các thuật toán là rất bảo đảm độ tin cậy trước các cuộc tấn công.
Bước 3: Tính Digital Signature
Trong bước hai của việc ký message, thông tin nhận được trong bước băm message (Message Digest) đã mã hoá với khoá private key của người ký vào message, vì thế một giá trị băm giải mã cũng được gọi là Digital Signature được gửi đến. Vì mục đích này, các thuật toán mã hoá cho việc tính chữ ký số từ message digest được dùng. Thuật toán thường được sử dụng là RSA, DIGITAL SIGNATUREA, ECDIGITAL SIGNATUREA. Thông thường, chữ ký số gắn vào message trong định dạng đặc biệt để kiểm tra khi cần thiết.
Hình 19 Quá trình ký trong message
c. Quá trình kiểm tra xác nhận chữ ký trên tài liệu.
Kỹ thuật Digital Signature cho phép người nhận message có kèm chữ ký kiểm tra tính xác thực và tính toàn vẹn của nó. Quá trình kiểm tra chữ ký số - digital signature verification nhằm mục đích xác định một message gửi đi đã được ký bằng khoá private key đúng với khóa public key gửi đi hay không. Digital signature verification không thể xác nhận có hay không một message đã được ký bởi người gửi. Nếu chúng ta muốn kiểm tra có hay không vài người đã ký trong một message gửi đi, chúng ta cần nhận được public key theo cách nào đó. Điều này thực hiện hoặc bằng cách lấy public key trong cách an toàn (ví dụ như floppy disk hoặc CD) hoặc với sự trợ giúp của Public Key Intrasfication theo một giấy chứng nhận số. Nếu không có một cách an toàn để nhận khoá public key thực sự từ người gửi, chúng ta không có khả năng kiểm tra message được gửi là có phải xác thực của người này hay không.
Như vậy, việc kiểm tra một Digital Signature được thực hiện trong 3 bước:
Bước 1: Tính Current Hash-Value
Trong bước một, một hash-value của message đã ký được tính. Với việc tính này thì vẫn sử dụng thuật toán băm như đã dùng trong suốt quá trình ký. Hash-value nhận được được gọi là current hash-value bởi vì nó được tính từ trạng thái hiện thời của message.
Bước 2: Tính Original Hash-Value
Trong bước hai của quá trình kiểm tra digital signature, digital signature được giải mã với cũng với thuật toán mã hoá đã được sử dụng trong suốt quá trình ký. Việc giải mã được thực hiện bằng khoá public key tương ứng với khoá private key được dùng trong suốt quá trình ký của message. Kết quả là, chúng ta nhận được original hash-value mà đã đựơc tính từ message gốc trong suốt bước một của quá trình ký (original message digest)
Bước 3: So sánh Current hash-value với Original hash-value
Trong bước ba, chúng ta đối chiếu current hash-value nhận được trong bước một với original hash-value nhận được trong bước hai. Nếu hai giá trị này giống hệt nhau thì việc kiểm tra sẽ thành công nếu chứng minh được message đã được ký với khoá private key đúng với khoá public key đã được dùng trong quá trình kiểm tra. Nếu hai giá trị này khác nhau thì nghĩa là digital signature là sai và việc kiểm tra là thất bại.
Hình 20 : Quá trình kiểm tra xác nhận chữ ký trên tài liệu
Như vậy quá trình hoạt động của một digital signature được minh hoạ như hình sau:
Hình 21: Quá trình làm việc của một Digital Signature
Nguyên nhân của việc sai chữ ký: có 3 lý do của việc nhận một digital signature sai
- Nếu digital signature là giả mạo và được giải mã với khoá public key, giá trị nguyên thuỷ nhận được sẽ không phải là original hash-value của message gốc tuy một vài giá trị khác có giống.
- Nếu message đã bị đổi sau khi ký, current hash-value được tính từ message giả mạo này sẽ khác với original hash-value bởi vì hai message khác nhau thì hash-value khác nhau.
- Nếu public key không tương ứng với private key được dùng trong khi ký, original hash-value nhận được bởi sự giải mã chữ ký với một khoá không đúng sẽ không phải là giá trị đúng.
d. Tầm quan trọng của chữ ký số trong thương mại điện tử
Với chữ ký tay trên văn bản, người nhận rất khó có thể kiểm tra được độ chính xác, tính xác thực của chữ ký. Tình trạng sử dụng chữ ký giả rất dễ xảy ra bởi không cần phải làm đăng ký cho loại chữ ký này (trừ công chức cao cấp). Tuy nhiên, với chữ ký số, người sử dụng phải đăng ký, vừa được đảm bảo độ an toàn, chính xác bằng công nghệ hiện đại, vừa được xác thực bởi các tổ chức chứng thực… Do đó, độ an toàn của chữ ký số cao hơn rất nhiều so với chữ ký tay truyền thống.
Chính bởi những ưu việt trên, cùng với sự phát triển nhanh chóng của môi trường giao dịch điện tử, chữ ký điện tử đã được công nhân và sử dụng rộng rãi tại nhiều nước trên thế giới. Ngoài các nước phát triển như Mỹ, EU, Singapore, Nhật Bản, Hàn Quốc…, chữ ký điện tử cũng đã được các nước Trung Quốc, Ấn Độ, Brazil… công nhận và sử dụng.
Tại Việt Nam, chữ ký điện tử đã được các cơ quan Nhà nước coi trọng. Quốc hội đã ban hành Luật Giao dịch điện tử (có hiệu lực từ tháng 3/2006) và công nhận tính pháp lý của loại chữ ký này. Sau khi ban hành Nghị định về chữ ký số và dịch vụ chứng thực chữ ký số, Bộ Thông tin và Truyền thông đang gấp rút xây dựng mô hình hệ thống chứng thực CA quốc gia nhằm đẩy mạnh việc sử dụng chữ ký số trong xã hội.
Chữ ký điện tử cũng đã được sử dụng chính thức trong các giao dịch của ngành ngân hàng (thanh toán liên ngân hàng), ngành tài chính (thanh toán điện tử liên kho bạc). Một số cơ quan Nhà nước như Bộ Công thương, Sở Bưu chính Viễn thông TP. Hồ Chí Minh, Sở Khoa học và Công nghệ Đồng Nai… cũng bắt đầu sử dụng chữ ký điện tử trong giao dịch nội bộ.
HẾT
IV: KẾT LUẬN
1. Kết luận về đề tài:
- Hiểu được cách thức mã hóa dữ liệu và ứng dụng trong thương mại điện tử.
- Còn chưa nắm sâu về các thuật toán mã hóa dữ liệu .
2. Tài liệu tham khảo:
- Giáo trình an toàn và bảo mật thông tin (TS. Trần Văn Dũng)
- Mã hóa và ứng dụng (ĐH QG TPHCM)
-
-
- Và một số website khác…
3. Nhận xét của giảng viên hướng dẫn:
Các file đính kèm theo tài liệu này:
- Do_An_Ma_Hoa_Crytography_www.vnitblog.com.doc