TÌM HIỂU CHUNG VỀ MÃ HÓA
Khái niệm
Mã hóa là quá trình biến đổi dữ liệu thành dạng không thể đọc được để chỉ những bên liên quan có thể hiểu thông tin Về cơ bản, mã hóa chuyển đổi văn bản gốc thành bản mã, làm cho dữ liệu trở nên khác biệt so với hình thức ban đầu Để thực hiện mã hóa, cần có khóa mã hóa, là tập hợp các giá trị toán học mà cả người gửi và người nhận đều biết.
Mặc dù dữ liệu mã hóa có vẻ ngẫu nhiên, nhưng quá trình mã hóa diễn ra theo cách có thể dự đoán, cho phép bên nhận sử dụng khóa để khôi phục lại dữ liệu gốc Mã hóa an toàn cần phải đủ phức tạp để ngăn chặn bên thứ ba giải mã thông qua phương pháp brute force, tức là bằng cách đoán.
Chẳng hạn tôi có một thuật toán rất đơn giản mã hóa thông điệp cần gửi đi như sau : Bước 1 : Thay thế toàn bộ chữ cái “e” thành chữ số “3”
Bước 2 : Thay thế toàn bộ chữ cái “a” thành chữ số “4”
Bước 3 : Đảo ngược thông điệp
Trên đây chỉ là một ví dụ rất đơn giản mô phỏng cách thức làm việc của mã hóa (
Cryptography ) Trong thực tế đây là một quá trình cực kì phức tạp và rất khó để diễn tả.
Tại sao mã hóa dữ liệu cần thiết ?
Trong thời đại Internet kết nối toàn cầu, việc bảo vệ máy tính khỏi sự xâm nhập của hacker trở nên vô cùng cần thiết Những kẻ tấn công có thể dễ dàng truy cập vào hệ thống của tổ chức, đánh cắp thông tin nhạy cảm như mật khẩu và thẻ tín dụng, hoặc gây ra sự cố hệ thống, dẫn đến chi phí khôi phục cao Để ngăn chặn các truy cập trái phép, việc áp dụng mã hóa thông tin là một giải pháp hiệu quả, giúp bảo vệ dữ liệu bằng cách biến nó thành dạng không thể đọc được đối với những người có ý định xấu.
Mã hóa bảo vệ thông tin liên lạc và dữ liệu, chỉ cho phép người nhận hoặc chủ sở hữu dữ liệu hợp pháp truy cập Điều này giúp ngăn chặn tội phạm mạng, mạng quảng cáo, nhà cung cấp dịch vụ Internet và đôi khi cả chính phủ truy cập vào dữ liệu nhạy cảm.
Mã hóa dữ liệu là biện pháp quan trọng để bảo vệ thông tin khỏi vi phạm, bất kể dữ liệu đang di chuyển hay ở trạng thái nghỉ Nếu thiết bị của công ty bị mất hoặc đánh cắp, dữ liệu sẽ vẫn được bảo mật nếu ổ cứng được mã hóa đúng cách Ngoài ra, truyền thông mã hóa cho phép các bên giao tiếp an toàn, trao đổi dữ liệu nhạy cảm mà không lo bị rò rỉ Hơn nữa, mã hóa còn giúp ngăn chặn các cuộc tấn công nguy hiểm như tấn công man-in-the-middle.
Xác thực mã hóa khóa công khai đảm bảo rằng máy chủ gốc của trang web sở hữu khóa riêng, từ đó được cấp chứng chỉ SSL hợp pháp.
Nhiều quy định từ ngành và chính phủ yêu cầu các công ty xử lý dữ liệu người dùng phải mã hóa thông tin này nhằm bảo vệ quyền riêng tư và an toàn dữ liệu Các tiêu chuẩn như HIPAA, PCI-DSS và GDPR là những ví dụ điển hình về yêu cầu tuân thủ mã hóa dữ liệu.
Phân loại mã hóa
Phân loại theo các phương pháp:
– Mã hóa cổ điển (Classical cryptography)
– Mã hóa đối xứng (Symmetric cryptography).
– Mã hóa bất đổi xứng (Asymmetric cryptography)
– Hàm băm một chiều (Hash function)
Phân lọai theo số lượng khóa:
– Mã hóa khóa bí mật (Private-key Cryptography)
MÃ HÓA KHÓA CÔNG KHAI
Giới thiệu
Mã hóa khóa công khai, hay còn gọi là mật mã hóa bất đối xứng, sử dụng cả chìa khóa cá nhân và chìa khóa công khai, khác với phương pháp mã hóa đối xứng chỉ dùng một chìa khóa Việc áp dụng các cặp chìa khóa mang lại cho PKC những đặc điểm và khả năng độc đáo, giúp giải quyết các thách thức trong các kỹ thuật mã hóa khác Hình thức mật mã này đã trở thành yếu tố quan trọng trong bảo mật máy tính hiện đại và là thành phần thiết yếu cho sự phát triển của hệ sinh thái tiền điện tử.
Hình 2.1: Cách thức mã hóa công khai
Mã hóa công khai hoạt động như thế nào
Trong sơ đồ PKC, chìa khóa công khai được sử dụng bởi người gửi để mã hóa thông tin, trong khi chìa khóa cá nhân của người nhận được dùng để giải mã Hai chìa khóa này là khác nhau và chìa khóa công khai có thể được chia sẻ an toàn mà không làm ảnh hưởng đến tính bảo mật của chìa khóa cá nhân Mỗi cặp chìa khóa bất đối xứng là duy nhất, đảm bảo rằng thông điệp mã hóa bằng chìa khóa công khai chỉ có thể được đọc bởi người sở hữu chìa khóa cá nhân tương ứng.
Thuật toán mã hóa bất đối xứng tạo ra các cặp chìa khóa có độ dài lớn hơn nhiều so với mã hóa đối xứng, thường từ 1.024 đến 2.048 bit, khiến việc tính toán chìa khóa cá nhân từ chìa khóa công khai trở nên rất khó khăn RSA là một trong những thuật toán mã hóa bất đối xứng phổ biến nhất hiện nay, được phát triển bởi Rivest, Shamir và Adleman vào năm 1977 Trong sơ đồ RSA, chìa khóa được tạo ra từ mô-đun phép nhân hai số nguyên tố lớn, bao gồm một khóa công khai có thể chia sẻ và một khóa cá nhân cần giữ bí mật, làm cho nó trở thành thành phần chính trong các hệ thống mật mã khóa công khai.
Tại sao mã hóa công khai ra đời
Mã hóa đối xứng dù rằng đã phát triển từ cổ điển đến hiện đại, vẫn tồn tại hai điểm yếu sau:
Vấn đề trao đổi khóa giữa người gửi và người nhận đòi hỏi một kênh an toàn để bảo mật thông tin, đảm bảo chỉ có người gửi và nhận biết về khóa Tuy nhiên, trong bối cảnh khối lượng thông tin khổng lồ đang được luân chuyển toàn cầu, việc thiết lập một kênh an toàn như vậy trở nên không thực tế do chi phí cao và thời gian chậm trễ.
Tính bí mật của khóa: không có cơ sở quy trách nhiệm nếu khóa bị tiết lộ Vào năm
Năm 1976, Whitfield Diffie và Martin Hellman đã phát minh ra phương pháp mã hóa khóa công khai, hay còn gọi là mã hóa bất đối xứng, giúp giải quyết hai vấn đề lớn trong lĩnh vực bảo mật thông tin Đây được coi là một trong những bước đột phá quan trọng nhất trong ngành mã hóa.
Nguyên tắc cấu tạo của hệ mã hóa công khai
Mã hóa khóa công khai đã khắc phục những hạn chế của mã hóa riêng, cung cấp cho mỗi người dùng hai khóa khi tham gia vào hệ thống.
- Một khóa dùng cho việc mã hóa dữ liệu (Public key)
- Và một khóa dùng cho việc giải mã dữ liệu (Private key),
Trong hệ thống mã hóa, Public key được chia sẻ công khai cho tất cả mọi người, trong khi Private key cần được bảo mật tuyệt đối Khi hai bên muốn truyền thông tin cho nhau, quá trình truyền tải sẽ sử dụng mã hóa khóa công khai để đảm bảo an toàn thông tin.
- Sender yêu cầu cung cấp hoặc tự tìm khoá công khai của Receiver trên một Server chịu trách nhiệm quản lý khoá công khai
Sau khi hai bên thống nhất thuật toán mã hóa dữ liệu, bên Gửi sẽ sử dụng khóa công khai của bên Nhận kết hợp với thuật toán đã được đồng thuận để mã hóa thông tin bí mật.
Thông tin sau khi được mã hóa sẽ được gửi đến Receiver, và lúc này Sender cũng không thể giải mã được thông tin mà mình đã mã hóa, điều này khác với phương pháp mã hóa bằng khóa riêng.
- Khi nhận được thông tin đã mã hóa, Receiver sẽ sử dụng khóa bí mật của mình để giải mã và lấy ra thông tin ban đầu
Có nhiều phương pháp mã hóa khóa công khai, bao gồm Knapsack, RSA, Elgamal và ECC (phương pháp đường cong elliptic) Mỗi phương pháp này áp dụng các hàm một chiều theo cách thức riêng biệt.
Các đặc điểm của hệ mã hóa công khai
Kỹ thuật mã hóa khóa công khai, mặc dù yêu cầu khối lượng tính toán lớn hơn so với mã hóa khóa đối xứng, vẫn được ưa chuộng nhờ vào những lợi ích vượt trội mà nó mang lại Sự ra đời của mã hóa khóa công khai đã giúp quản lý khóa một cách linh hoạt và hiệu quả hơn, cho phép người dùng chỉ cần bảo vệ khóa riêng (Private key) của mình.
Hệ thống mã hóa khóa công khai an toàn hơn so với mã hóa khóa riêng, vì người mã hóa không thể giải mã dữ liệu đã được mã hóa bằng khóa công khai của người khác Tuy nhiên, nhược điểm của phương pháp này là tốc độ thực hiện chậm hơn khoảng 1000 lần so với mã hóa khóa riêng.
Phân biệt mã hóa công khai với mã hóa đối xứng
Điều kiện cần của những giải thuật này là:
1 Khi một người nào đó có được một hay nhiều chuỗi bít được mã hóa, người đó cũng không có cách nào giải mã được mẫu tin ban đầu, trừ khi người đó biết được “ secret key
2 Secret key phải trao đổi một cách an toàn giữa hai party tham gia vào quá trình mã hóa
Mã hóa bất đối xứng sử dụng hai khóa: khóa công khai (public key) và khóa riêng (private key), có mối liên hệ toán học với nhau, cho phép mã hóa bằng một khóa và chỉ có thể giải mã bằng khóa kia Loại mã hóa này có hai ứng dụng chính: mã hóa bất đối xứng và chữ ký điện tử (digital signature).
Trong ứng dụng mã hóa bất đối xứng như thuật toán RSA, mỗi bên A và B sẽ có một khóa công khai (PU) và một khóa riêng (PR) riêng biệt A tạo ra khóa PUA và PRA, trong khi B tạo ra PUB và PRB Khi B muốn gửi dữ liệu cho A, B sẽ mã hóa thông tin bằng khóa công khai PUA của A A sau đó sẽ giải mã dữ liệu bằng khóa riêng PRA của mình Ngược lại, khi A muốn gửi dữ liệu cho B, A sẽ mã hóa thông tin bằng khóa công khai PUB của B, và B sẽ giải mã bằng khóa riêng PRB Các khóa riêng PRA và PRB không bao giờ được truyền đi và chỉ được giữ bí mật bởi mỗi bên.
Trong ứng dụng chữ ký điện tử, A mã hóa mẫu tin bằng PRA, đảm bảo rằng chỉ A mới biết đến PRA Khi một bên nhận được mẫu tin này, họ có thể xác định rằng mẫu tin xuất phát từ A, không phải từ ai khác Để giải mã mẫu tin, bên nhận cần có PUA.
Ứng dụng của hệ mã hóa công khai .Error! Bookmark not defined CHƯƠNG 3: THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSAError! Bookmark not defined 3.1 Giới thiệu về RSA Error! Bookmark not defined 3.2 Mô tả hoạt động của RSA Error! Bookmark not defined 3.2.1 Quá trình tạo khóa cho hệ mật RSA Error! Bookmark not defined 3.2.2 Quá trình mã hóa Error! Bookmark not defined 3.2.3 Quá trình giải mã Error! Bookmark not defined 3.2.4 Ví dụ .Error! Bookmark not defined 3.2.5 Chuyển đổi văn bản rõ Error! Bookmark not defined 3.2.6.Tạo chữ ký vào văn bản Error! Bookmark not defined 3.3 Các vấn đề của RSA
Mật mã công khai (PKC) là một công nghệ quan trọng được nhiều hệ thống máy tính hiện đại sử dụng để bảo vệ thông tin nhạy cảm Ví dụ, email có thể được mã hóa bằng các kỹ thuật mã hóa khóa công khai, giúp bảo mật nội dung Giao thức Lớp cổng bảo mật (SSL) cũng sử dụng mật mã bất đối xứng để tạo kết nối an toàn đến các trang web Hơn nữa, các hệ thống PKC đã được áp dụng để xây dựng môi trường bỏ phiếu điện tử an toàn, cho phép cử tri tham gia bầu cử từ máy tính tại nhà.
PKC đóng vai trò quan trọng trong công nghệ blockchain và tiền điện tử Khi thiết lập một ví tiền điện tử, một cặp chìa khóa, bao gồm chìa khóa công khai và chìa khóa cá nhân, sẽ được tạo ra Địa chỉ công khai, có thể chia sẻ an toàn, được tạo từ chìa khóa công khai, trong khi chìa khóa cá nhân dùng để tạo chữ ký kỹ thuật số và xác minh giao dịch, cần được giữ bí mật Sau khi giao dịch được xác minh qua hash trong chữ ký kỹ thuật số, nó sẽ được thêm vào sổ cái blockchain Hệ thống này đảm bảo rằng chỉ người sở hữu chìa khóa cá nhân liên kết với ví mới có quyền rút tiền Cần lưu ý rằng các mật mã bất đối xứng trong ứng dụng tiền điện tử khác với mật mã bảo mật máy tính; chẳng hạn, Bitcoin và Ethereum sử dụng thuật toán Chữ ký số Elliptic Curve (ECDSA) để xác minh giao dịch.
Mật mã khóa công khai (PKC) đóng vai trò quan trọng trong việc bảo mật hệ thống kỹ thuật số hiện đại, từ bảo mật máy tính đến xác minh giao dịch tiền điện tử Bằng cách sử dụng cặp chìa khóa công khai và chìa khóa cá nhân, các thuật toán mã hóa bất đối xứng giải quyết các vấn đề bảo mật mà mã hóa đối xứng không thể xử lý Mặc dù PKC đã tồn tại nhiều năm, nhưng các ứng dụng mới vẫn đang được phát triển, đặc biệt trong lĩnh vực blockchain và tiền điện tử.
CHƯƠNG III THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI
Tiêu chuẩn Rivest-Shamir-Adleman (RSA) là một thuật toán mã hóa khóa công khai được phát triển bởi Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện Công nghệ Massachusetts (MIT) vào năm 1977 Tên gọi RSA được lấy từ ba chữ cái đầu của tên các tác giả Hiện nay, tiêu chuẩn này đã được công nhận bởi các tổ chức như Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI), Viện Kỹ nghệ Điện và Điện tử (IEEE) và Phòng thí nghiệm RSA RSA là thuật toán đầu tiên cho phép tạo ra chữ ký điện tử đồng thời với mã hóa, đánh dấu một bước tiến lớn trong lĩnh vực mật mã học với việc sử dụng khóa công khai Thuật toán này hiện đang được áp dụng rộng rãi trong thương mại điện tử và được coi là an toàn nếu độ dài khóa đủ lớn.
Hình 3.1 Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện
Vào năm 1977, công nghệ mã hóa RSA được công bố bởi Rivest, Shamir và Adleman trong ấn phẩm Scientific American, mặc dù trước đó, chuyên gia mã hóa người Anh Clifford Cox đã phát triển một biến thể của RSA nhưng không được công bố do chính phủ Anh coi đây là vấn đề mật Mặc dù Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) không đồng ý với việc phổ biến RSA và ra lệnh cấm, lệnh này không có cơ sở pháp lý MIT đã đăng ký bằng sáng chế cho thuật toán RSA tại Hoa Kỳ vào năm 1983, nhưng bằng sáng chế này đã hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, vì thuật toán đã được công bố trước khi có đăng ký bảo hộ, nên sự bảo hộ của nó hầu như không có giá trị bên ngoài Hoa Kỳ Nếu công trình của Clifford Cox được công bố trước đó, bằng sáng chế RSA đã không thể được đăng ký.
The RSA algorithm was first published in 1978 in the Communications of the Association for Computing Machinery (ACM) journal The specification of RSA can currently be referenced on the EMC Corporation's website, providing a comprehensive overview of the algorithm's functionality.
3.2 Mô tả hoạt động của RSA
Định lý cơ sở, hay còn gọi là Định lý nhỏ của Fermat, phát biểu rằng với p là một số nguyên tố khác 2, nếu chia một số a lũy thừa p cho p, thì số dư sẽ bằng chính a Cụ thể, điều này có thể được biểu diễn bằng công thức: a^p ≡ a (mod p).
Mở rộng ta có: a m 1 mod m
Với m là số nguyên tố cùng nhau với m và nhỏ hơn m
- Thuật toán RSA có 2 khóa:
Khóa công khai (Public Key)
Khóa bí mật (Private Key)
- 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
- Khóa bí mật được cá nhân giữ kín và dùng để giải mã
Bod muốn gửi cho Alice một thông tin mật M mà Bod muốn duy nhất Alice có thể đọc được
( Mã hóa M bằng Public Key của A đc C) (Giải mã C bằng Private Key của A đc M )
Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA 3.2.1 Quá trình tạo khóa cho hệ mật RSA
Alice và Bob muốn trao đổi thông tin bí mật qua kênh không an toàn như Internet Để thực hiện điều này bằng thuật toán RSA, Alice cần tạo ra một cặp khóa bao gồm khóa công khai và khóa bí mật thông qua năm bước cụ thể.
1 Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p q
3 Tính giá trị hàm Phi Euler của n: n p 1 q 1
4 Chọn số nguyên d, sao chod n và gcd(d,(n))=1
5 Tính giá trị e thỏa mãn điều kiện: ed 1 mod n
Khóa công khai bao gồm: n và e Khóa mật: d còn p,q và (n)thường là xóa sau khi tính toán khóa
Bob muốn gửi thông tin M cho Alice bằng cách chuyển đổi M thành một số m nhỏ hơn n thông qua một hàm có thể đảo ngược, cho phép xác định lại M từ m Quá trình này được trình bày chi tiết trong phần Chuyển đổi văn bản rõ.
Lúc này Bob có m và biết n cũng như e do Alice gửi Bob sẽ tính c là bản mã hóa của m theo công thức:
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (môđun) bằng phương pháp bình phương Cuối cùng Bob gửi C cho Alice
Alice nhận c từ Bob và khóa bí mật d Alice có thể tìm được m từ c theo công thức sau:
Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước Quá trình giải mã hoạt động vì ta có:
Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên:
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng ta có:
Dưới đây là một ví dụ cụ thể với các số nhỏ để dễ tính toán, tuy nhiên trong thực tế, cần sử dụng các số có giá trị lớn hơn để đạt được kết quả chính xác hơn.
Trong hệ thống mã hóa RSA, hai số nguyên tố được chọn là p = 61 và q = 53, cần được giữ bí mật hoặc hủy sau khi tạo khóa Từ hai số này, môđun n được tính toán là n = pq = 3233, và được công bố công khai Số mũ công khai e được chọn là 17, trong khi số mũ bí mật d được tính là 2753.
Khóa công khai trong hệ thống mã hóa là cặp (e, n) với e = 17 và n = 3233, trong khi khóa bí mật là d = 2753 Hàm mã hóa được sử dụng để chuyển đổi văn bản rõ m thành văn bản mã c thông qua công thức: encrypt(m) = m^e mod n Ví dụ, để mã hóa giá trị 123, ta tính: encrypt(123) = 123^17 mod 3233 = 855 Để giải mã văn bản mã c = 855, ta áp dụng hàm giải mã: decrypt(c) = c^d mod n, cụ thể là decrypt(855) = 855^2753 mod 3233 = 123.
Cả hai phép tính trên đều có thê được thực hiện hiệu quả nhờ giải thuật bình phương và nhân
3.2.5 Chuyển đổi văn bản rõ
Trước khi tiến hành mã hóa, cần chuyển đổi văn bản rõ từ M sang m để đảm bảo không có giá trị nào của M tạo ra văn bản mã không an toàn Nếu thiếu bước chuyển đổi này, phương pháp RSA sẽ gặp phải một số vấn đề nghiêm trọng.
Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
Khi sử dụng mã hóa với số mũ nhỏ như e = 3 và giá trị m cũng nhỏ, kết quả m^e sẽ cũng nhỏ so với n Điều này dẫn đến việc phép môđun không còn hiệu lực, khiến cho việc khai thác giá trị m trở nên dễ dàng thông qua việc tính căn bậc e của c mà không cần quan tâm đến môđun.
RSA là một phương pháp mã hóa xác định, không sử dụng thành phần ngẫu nhiên, do đó kẻ tấn công có khả năng thực hiện tấn công lựa chọn bản rõ Bằng cách tạo ra một bảng tra cứu giữa bản rõ và bản mã, khi gặp một bản mã, kẻ tấn công có thể sử dụng bảng này để xác định bản rõ tương ứng.
Ứng dụng thực tế của RSA
Tiêu chuẩn RSA được sử dụng phổ biến trong các lĩnh vực như chữ ký số, thương mại điện tử, bảo mật và xác thực Theo Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ trưởng Bộ Thông tin và Truyền thông, tiêu chuẩn này được khuyến nghị áp dụng trong các cơ quan nhà nước, thuộc nhóm tiêu chuẩn về an toàn thông tin và là một trong những giải thuật mã hóa quan trọng.
3.4.1 Chữ ký điện tử (Digital Signature)
Chữ ký điện tử là hình thức ký kết được thể hiện qua từ ngữ, con số, ký hiệu, âm thanh hoặc các dạng dữ liệu khác Nó có chức năng xác nhận danh tính của người ký và thể hiện sự đồng ý của họ đối với nội dung của thông điệp dữ liệu đã được ký.
Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh , video ….) nhằm mục đích xác định người chủ của dữ liệu đó
Chữ ký điện tử được hình thành bằng cách sử dụng thuật toán băm một chiều để tạo ra bản phân tích văn bản (message digest), hay còn gọi là fingerprint Sau đó, fingerprint này được mã hóa bằng khóa riêng (private key) để tạo ra chữ ký số, được đính kèm với văn bản gốc Khi cần xác thực, fingerprint mới được tính toán từ văn bản gốc sẽ được so sánh với fingerprint cũ, được phục hồi từ việc giải mã chữ ký số.
Mô hình chung của chữ kí điện tử :
Chữ ký điện tử có nhiều đặc điểm đa dạng, bao gồm tên hoặc hình ảnh cá nhân kết hợp với dữ liệu điện tử, mã khóa bí mật, hoặc dữ liệu sinh trắc học như hình ảnh khuôn mặt, dấu vân tay, và hình ảnh mống mắt Mỗi loại chữ ký điện tử này đều có mức độ an toàn khác nhau, góp phần vào khả năng xác thực người gửi.
Quy trình thực hiện chữ ký điện tử :
1 Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả là ta được một message digest, dùng giải thuật md5 (message digest 5) ta được digest có chiều dài 128 bit, dùng giải thuật sha ( secure hash algorithm ) ta có chiều dài 160 bit
2 Sử dụng khóa private key của người gửi để mã hóa mesage digest thu được ở bước 1 Thông thường ở bước này ta dùng giải thuật rsa Kết quả thu được gọi là digital signature của mesage ban đầu
3 Gộp digital signature vào message ban đầu, công việc này gọi là ‘’ ký nhận ’’ vào message Sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị phát hiện trong giai đoạn kiểm tra Ngoài ra, việc ký nhận này đảm bảo người nhận tin tưởng message này xuất phát từ người gửi chứ không phải là ai khác
1 Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải mã chữ ký số của message
2 Dùng giải thuật (md5 hoặc sha) hàm băm message đính kèm
3 So sánh kết quả thu được ở bước 1 và 2 Nếu trùng nhau, ta kết luận message này không bị thay đổi trong quá trình truyền và message này là của người gửi
Mỗi cá nhân tham gia vào hệ thống chữ ký điện tử cần được cấp một bộ khóa (bao gồm khóa công khai và khóa riêng) để xác định danh tính của họ bởi một tổ chức có thẩm quyền, được công nhận trong phạm vi sử dụng.
SSL là giao thức đa mục đích, được thiết kế để mã hóa toàn bộ thông tin giữa hai ứng dụng thông qua cổng 443 Được phát triển lần đầu vào năm 1994 bởi nhóm nghiên cứu Netscape, SSL đã trở thành tiêu chuẩn bảo mật phổ biến trên Internet ngày nay.
Phiên bản hiện nay là SSL 3.0 và đang tiếp tục được bổ xung hoàn thiện
CHƯƠNG IV: GIAO THỨC THỎA THUẬN KHÓA DIFFIE
Hình 4.1 Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Diffie (phải) đã khám phá ra mật mã khóa công khai Diffie-Hellman
Năm 1976, bài viết "Phương hướng mới trong mật mã học" của Whitfield Diffie và Martin Hellman đã cách mạng hóa lĩnh vực mã hóa bằng cách giới thiệu phương pháp phân phối khóa mật mã mới Hệ thống này, được gọi là trao đổi khóa Diffie-Hellman, lần đầu tiên áp dụng công nghệ "public-key" hay khóa mật mã "không đối xứng" Sự công bố này không chỉ thay đổi cách thức làm việc của các hệ thống mật mã mà còn thúc đẩy sự phát triển nhanh chóng của các thuật toán chìa khóa bất đối xứng.
Trao đổi khóa Diffie-Hellman được cho là đã được phát minh độc lập bởi Malcolm J Williamson tại Trụ sở Truyền Thông Chính phủ Anh (GCHQ) vài năm trước đó Vào năm 2002, Hellman đã giới thiệu thuật toán trao đổi khóa Diffie–Hellman–Merkle, ghi nhận sự đóng góp của Ralph Merkle, người đã phát minh ra thuật toán mã hóa công khai.
Trước thời kỳ hiện đại, hầu hết các thuật toán mã hóa đều là thuật toán đối xứng, yêu cầu cả người gửi và người nhận sử dụng chung một khóa bí mật Trong Thế chiến II, các máy điện cơ và các hệ thống mã như mã Caesar và mã Atbash đều thuộc loại này Khóa của một mã thường là sách mã, cần được phân phối và bảo mật một cách cẩn thận.
Để đảm bảo an ninh, việc trao đổi khóa giữa các bên tham gia hệ thống cần được thực hiện qua một phương thức an toàn trước khi sử dụng, thường được gọi là 'thông qua một kênh an toàn' Các phương thức này có thể bao gồm việc sử dụng người đưa thư đáng tin cậy, gặp gỡ trực tiếp, hoặc sử dụng chim bồ câu đưa thư Tuy nhiên, việc này trở nên phức tạp khi số lượng người tham gia tăng lên hoặc khi không còn kênh an toàn để trao đổi khóa Mỗi cặp truyền thông cần có một khóa riêng để đảm bảo không ai, kể cả người dùng, có thể giải mã thông điệp Hệ thống này được gọi là hệ thống dùng chìa khóa mật hoặc hệ thống mã hóa dùng khóa đối xứng Hệ thống trao đổi khóa Diffie-Hellman cùng các phiên bản nâng cấp đã cải thiện đáng kể tính dễ dàng và an toàn trong việc thực hiện các hoạt động này trong các hệ thống.
Thuật toán này, mặc dù là một giao thức chọn khóa nặc danh không cần xác thực, đã tạo ra nền tảng vững chắc cho nhiều giao thức xác thực khác nhau.
Phương thức tiếp nối ngay sau Diffie – Hellman là RSA, một thể hiện của mã khóa công khai sử dụng thuật toán bất đối xứng
4.2 Giao thức thỏa thuận khóa Diffie – Hellman
4.2.1 Khái niệm thỏa thuận khóa