Đây là một phương pháp hỗ trợ rất tốt trong việc chống lại những truy cập bất hợp pháp tới các thông tin được truyền đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung thông tin được tru
Trang 1BỘ THÔNG TIN VÀ TRUYỂN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
-BÁO CÁO MÔN HỌC
“AN NINH MẠNG VIỄN THÔNG”
Đề tài:
“Mật mã bất đối xứng”
Giáo viên: Hoàng Trọng Minh
Sinh viên: Lê Anh Tuấn – B18DCVT376
Dương Thanh Tùng – B18DCVT384 Nguyễn Bảo Long – B18DCVT256 Nguyễn Đức Thuận – B18DCVT416
HÀ NỘI – 2021
Trang 2LỜI NÓI ĐẦU
Trao đổi thông tin luôn là nhu cầu cần thiết của con người, đặc biệt là trong cuộc sống hiện đại ngày nay khi mà mạng máy tính và Internet phát triển một cách mạnh mẽ
và giữ vai trò quan trọng trong mọi lĩnh vực của đời sống xã hội như: chính trị, quân sự, học tập, mua sắm, kinh doanh, … Tất cả những thông tin liên quan đến những công việc này đều được máy vi tính quản lý và truyền đi trên hệ thống mạng Đối với những thông tin bình thường thì không ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với một cá nhân hay một tổ chức thì vấn đề bảo mật thông tin là rất quan trọng và được đặt lên hàng đầu Chính vì vậy nên rất nhiều tổ chức, cá nhân đã nghiên cứu, tìm kiếm và đưa ra rất nhiều giải pháp bảo mật thông tin Trong đó mã hóa khóa công khai đang tỏ ra rất thích hợp rất trong truyền thông tin dữ liệu và có tính bảo mật khá cao Báo cáo này do nhóm biên soạn dựa trên những kiến thức lĩnh hội được từ thầy giáo Hoàng Trọng Minh, và thông qua sự tìm hiểu, nghiên cứu tích cực của các thành viên trong nhóm Báo cáo của nhóm đi sâu vào trình bày mã hóa khóa công khai RSA và giao thức thỏa thuận khóa Diffie - Hellman với nội dung gồm 4 chương được chia thành các chủ đề khác nhau, từ việc giới thiệu sơ bộ, trình bày khái niệm, cách thiết lập, sơ đồ
và các ví dụ minh họa cụ thể về giao thức thỏa thuận khóa Mặc dù nhóm đã rất cố gắng song vẫn không tránh khỏi một số thiếu sót mong thầy cô và bạn bè đóng góp ý kiến để nhóm hoàn thiện hơn báo cáo này
Thay mặt nhóm em xin chân thành cảm ơn !
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
PHÂN CÔNG CÔNG VIỆC 2
MỤC LỤC 3
DANH MỤC HÌNH VẼ 4
CHƯƠNG 1: TÌM HIỂU CHUNG VỀ MÃ HÓA 6
1.1 Khái niệm 6
1.2 Tại sao mã hóa dữ liệu cần thiết ? 6
1.3 Phân loại mã hóa 7
CHƯƠNG 2: MÃ HÓA KHÓA CÔNG KHAI 8
2.1 Giới thiệu 8
2.2.Mã hóa công khai hoạt động như thế nào 9
2.3 Tại sao mã hóa công khai ra đời 9
2.4 Nguyên tắc cấu tạo của hệ mã hóa công khai 10
2.5 Các đặc điểm của hệ mã hóa công khai 10
2.6 Phân biệt mã hóa công khai với mã hóa đối xứng 11
2.7 Ứ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 20
3.4 Ứng dụng thực tế của RSA 21
3.2.1 Chữ ký điện tử ( Digital Signature ) 21
3.2.2 SSL 21
CHƯƠNG 4: GIAO THỨC THỎA THUẬN KHÓA DIFFIE - HELLMANError! Bookmark not defined.
Trang 44.1 Giới thiệu chương Error! Bookmark not defined 4.2 Giao thức thỏa thuận khóa Difie - Hellman Error! Bookmark not defined 4.2.1 Khái niệm thỏa thuận khóa Error! Bookmark not defined 4.2.2 Giao thức thỏa thuận khóa Diffie - HellmanError! Bookmark not defined.
4.2.3 Các đặc điểm đặc trưng của giao thức thỏa thuận khóa Diffie -
Hellman Error! Bookmark not defined TÀI LIỆU THAM KHẢO Error! Bookmark not defined.
Trang 5DANH MỤC HÌNH VẼ
Hình 2.1 Cách thức mã hóa công khai 8Hình 3.1: Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện Công Nghệ Masachusetts (MIT) vào năm 1977 13
Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA Error! Bookmark not defined.
Hình 3.3: Mô hình chung của chữ ký điện tử 21Hình 4.1: Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Defie (phải) đã khám phá ra mật mã khóa công khai Difie - Hellman 24
No table of figures entries found
CHƯƠNG I TÌM HIỂU CHUNG VỀ MÃ HÓA
Trang 61 1 Khái niệm
Mã hóa là cách xáo trộn dữ liệu chỉ để hai bên trao đổi thông tin có thể hiểu được Về mặt
kỹ thuật, đó là quá trình chuyển đổi văn bản gốc sang bản mã Nói một cách đơn giản hơn, mã hóa lấy dữ liệu có thể đọc được và thay đổi nó để dữ liệu này không giống như ban đầu Mã hóa yêu cầu sử dụng khóa mã hóa: một tập hợp các giá trị toán học mà cả người gửi và người nhận tin nhắn được mã hóa đều biết
Mặc dù dữ liệu được mã hóa xuất hiện ngẫu nhiên, mã hóa tiến hành theo cách hợp lý, có thể dự đoán được, để bên nhận sử dụng khóa để mã hóa dữ liệu , biến nó trở lại thành bản
dữ liệu ban đầu Mã hóa an toàn thực sự sẽ đủ phức tạp để bên thứ ba không thể giải mã được bằng brute force- nói cách khác, 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ả
1.2 Tại sao mã hóa dữ liệu cần thiết ?
Ngày nay, khi mạng Internet đã kết nối các máy tính ở khắp nơi trên thế giới lại với nhau, thì vấn đề bảo vệ máy tính khỏi sự thâm nhập phá hoại từ bên ngoài là một điều cần thiết Thông qua mạng Internet, các hacker có thể truy cập vào các máy tính trong một tổ chức (dùng telnet chẳng hạn), lấy trộm các dữ liệu quan trọng như mật khẩu, thẻ tín dụng,
Trang 7tài liệu… Hoặc đơn giản chỉ là phá hoại, gây trục trặc hệ thống mà tổ chức đó phải tốn nhiều chi phí để khôi phục lại tình trạng hoạt động bình thường
Đây là một phương pháp hỗ trợ rất tốt trong việc chống lại những truy cập bất hợp pháp tới các thông tin được truyền đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung thông tin được truyền đi dưới dạng không thể đọc được đối với bất kỳ ai cố tình muốn lấy thông tin đó
Riêng tư : Mã hóa đảm bảo rằng không ai có thể đọc thông tin liên lạc hoặc dữ liệu khi
nghỉ ngơi ngoại trừ người nhận dự định hoặc chủ sở hữu dữ liệu phù hợp Điều này 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à trong một số trường hợp chính phủ chặn và đọc dữ liệu nhạy cảm
Bảo vệ : Mã hóa giúp tránh vi phạm dữ liệu, cho dù dữ liệu đang trong quá trình di
chuyển hoặc ở trạng thái nghỉ Nếu một thiết bị của công ty bị mất hoặc bị đánh cắp và ổ cứng của nó được mã hóa chính xác, dữ liệu trên thiết bị đó có thể sẽ vẫn được bảo mật Tương tự, truyền thông được mã hóa cho phép các bên giao tiếp trao đổi dữ liệu nhạy cảm mà không bị rò rỉ dữ liệu Mã hóa cũng giúp ngăn chặn các hành vi nguy hiểm như tấn công man-in-the-middle
Xác thực: Mã hóa khóa công khai, trong số những thứ khác, thiết lập rằng máy chủ gốc
của trang web sở hữu khóa riêng và do đó được cấp chứng chỉ SSL hợp pháp
Quy định: Vì tất cả những lý do này, nhiều quy định của 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 giữ dữ liệu đó được mã hóa Ví dụ về các tiêu chuẩn quy định và tuân thủ yêu cầu mã hóa bao gồm HIPAA, PCI-DSS và GDPR
1.3 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)
Trang 8– Mã hóa khóa công khai (Public-key Cryptography
CHƯƠNG II MÃ HÓA KHÓA CÔNG KHAI 2.1 Giới thiệu
Mã hóa khóa công khai (Public Key Cryptography) còn được gọi là mật mã hóa
bất đối xứng, là một cơ cấu sử dụng cả chìa khóa cá nhân và chìa khóa công khai, trái ngược với chìa khóa đơn được sử dụng trong mật mã hóa đối xứng Việc sử dụng các cặp chìa khóa khiến cho PKC có một bộ các đặc điểm và khả năng độc đáo có thể được sử dụng để giải quyết các thách thức tồn tại cố hữu trong các kỹ thuật mã hóa khác Hình thức mật mã này đã trở thành một yếu tố quan trọng trong bảo mật máy tính hiện đại,
cũng như là một thành phần quan trọng cho việc phát triển hệ sinh thái tiền điện tử
Hình 2.1: Cách thức mã hóa công khai
2.2 Mã hóa công khai hoạt động như thế nào ?
Trang 9Trong sơ đồ PKC, chìa khóa công khai được người gửi sử dụng để mã hóa thông tin, trong khi chìa khóa cá nhân được người nhận sử dụng để giải mã Hai chìa khóa là khác nhau, trong đó chìa khoá công khai có thể được chia sẻ an toàn mà không ảnh
hưởng đến tính bảo mật của chìa khoá 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 một thông điệp được mã hóa bằng chìa khoá công khai chỉ có thể được đọc bởi người sở hữu chìa khoá cá nhân tương ứng
Vì thuật toán mã hóa bất đối xứng tạo ra các cặp chìa khóa được liên kết về mặt toán học nên có độ dài chìa khóa dài hơn nhiều so với các cặp chìa khoá được tạo ra bởi mật mã hoá đối xứng Độ dài dài hơn này - 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 khoá công khai là vô cùng khó khăn Một trong
những thuật toán thông dụng nhất cho mã hóa bất đối xứng được sử dụng ngày nay có tên
là RSA Trong sơ đồ RSA, các chìa khóa được tạo bằng cách sử dụng một mô-đun phép nhân hai số (thường là hai số nguyên tố lớn) Nói đơn giản hơn, mô-đun tạo ra hai chìa khóa (một khóa công khai có thể được chia sẻ và một khóa cá nhân cần được giữ bí mật) Thuật toán RSA được mô tả lần đầu tiên vào năm 1977 bởi Rivest, Shamir và Adleman (RSA là ghép các chữ cái đầu tiên của 3 người này) và hiện vẫn là thành phần chính của các hệ thống mật mã khóa công khai
2.3 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: Cần phải có một kênh an toàn để
trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi và người nhận biết Điều này tỏ ra không hợp lý khi mà ngày nay, khối lượng thông tin luân chuyển trên khắp thế giới là rất lớn Việc thiết lập một kênh an toàn như vậy sẽ tốn kém về mặt chi phí và chậm trễ về mặt thời gian
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
1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn gọi là mã hóa công khai (asymetric cryptography) Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa
2.4 Nguyên tắc cấu tạo của hệ mã hóa công khai
Trang 10Mã hóa khóa công khai ra đời đã giải quyết được vấn đề mà mã hóa riêng thiếu xót Trong hệ thống mã hóa này thì mỗi một người sử dụng khi tham gia vào đều được cấp 2 khóa :
- 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 đó Public key được đưa ra cho tất cả mọi người cùng biết, còn Private keyphải
được giữ kín một cách tuyệt đối.Giả sử hai phía muốn truyền tin cho nhau thì quá trình truyền sử dụng mã hóa khóa công khai được thực hiện như sau :
- 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 đó hai phía thống nhất thuật toán dùng để mã hóa dữ liệu, Sender sử dụng khóa công khai của Receiver cùng với thuật toán đã thống nhất để mã hóa thông tin bí mật
- Thông tin sau khi mã hóa được gửi tới Receiver, lúc này chính Sender cũng không thể
nào giải mã được thông tin mà anh ta đã mã hóa (khác với mã hóa 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 thuộc loại mã hóa khóa công khai Đó là các phương pháp Knapsack, RSA, Elgaman, và phương pháp đường cong elliptic ECC… Mỗi phương pháp có cách thức ứng dụng hàm một chiều khác nhau
2.5 Các đặc điểm của hệ mã hóa công khai
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại
khiến cho chúng được áp dụng trong nhiều ứng dụng Vậy là với sự ra đời của Mã hóa
khóa công khai thì khóa được quản lý một cách linh hoạt và hiệu quả hơn Người sử dụng
chỉ cần bảo vệ khóa Private key
Hệ thống này an toàn hơn nhiều so với mã hóa khóa riêng, người mã hóa không thể
giải mã được dữ liệu đã 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 mã hóa khóa công khai nằm ở tốc độ thực hiện, nó chậm hơn mã hóa khóa riêng
cỡ ~1000 lần
2.6 Phân biệt mã hóa công khai với mã hóa đối xứng
Trang 11Đ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
Trong ứng dụng mã hóa bất đối xứng ( ví dụ giải thuật RSA )mỗi bên A, B sẽ có một public key (PU) private key (PR) riêng mình A tạo ra PUA và PRA.B tạo ra PUB và PRB PUA sẽ được A gửi cho B và khi B muốn truyền dữ liệu cho A thì B sẽ mã hóa bằng PUA A sẽ giải mã bằng PRA Ngược lại nếu A muốn truyền cho B thì A sẽ mã hóa bằng PUB và B giải mã bằng PRB PRA và PRB không bao giờ được truyền đi và chỉ được giữ riêng cho mỗi bên
Trong ứng dụng chữ ký điện tử thì A sẽ mã hóa mẫu tin bằng PRA Bởi vì chỉ có A
là biết được PRA nên khi một party nào đó nhận được mẫu tin này , party đó có thể biết được mẫu tin đó xuất phát từ A chứ không phải một ai khác Đương nhiên để giải mã ,
party đó cần có PUA
2.7 Ứng dụng của hệ mã hóa công khai
Loại mật mã này được sử dụng bởi nhiều hệ thống máy tính hiện đại nhằm cung cấp bảo mật cho thông tin nhạy cảm Email, ví dụ, có thể được mã hóa bằng các kỹ thuật
mã hóa khóa công khai để giữ bí mật nội dung Giao thức Lớp cổng bảo mật (SSL) giúp kết nối an toàn đến các trang web có thể cũng sử dụng mật mã bất đối xứng Các hệ thống PKC thậm chí đã được sử dụng như một phương tiện cung cấp một môi trường bỏ phiếu điện tử an toàn có khả năng cho phép cử tri tham gia các cuộc bầu cử từ máy tính tại nhà của họ
PKC cũng góp mặt nổi bật trong công nghệ blockchain và tiền điện tử Khi một ví tiền điện tử mới được thiết lập, một cặp chìa khóa sẽ được tạo (chìa khoá công khai và chìa khoá cá nhân) Địa chỉ công khai được tạo bằng cách sử dụng chìa khoá công khai
và có thể được chia sẻ an toàn với người khác Mặt khác, chìa khóa cá nhân được sử dụng
Trang 12để tạo ra các chữ ký kỹ thuật số và xác minh các giao dịch, và do đó, phải được giữ bí mật Khi một giao dịch đã được xác minh bằng cách xác nhận hash có trong chữ ký kỹ thuật số, giao dịch đó có thể được thêm vào sổ cái blockchain Hệ thống xác minh chữ ký
kỹ thuật số đảm bảo rằng chỉ người có chìa khóa cá nhân được liên kết với ví tiền điện tử tương ứng mới có thể rút tiền Cần lưu ý rằng các mật mã bất đối xứng được sử dụng trong các ứng dụng tiền điện tử là khác với các mật mã được sử dụng cho mục đích bảo mật máy tính Ví dụ, Bitcoin và Ethereum sử dụng một mật mã chuyên dụng được gọi là Thuật toán Chữ ký số Elliptic Curve (ECDSA) để xác minh các giao dịch
Từ bảo mật máy tính đến xác minh các giao dịch tiền điện tử, mật mã khóa công khai đóng một vai trò quan trọng trong việc bảo mật các hệ thống kỹ thuật số hiện đại Bằng cách sử dụng các chìa khóa công khai và chìa khoá cá nhân theo cặp, 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 cơ bản được đưa ra bởi các mã hoá đối xứng Mặc dù PKC đã được sử dụng trong nhiều năm, các cách sử dụng và các ứng dụng mới vẫn thường xuyên được phát triển cho nó, đặc biệt là 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
RSA
Trang 133.1 Giới thiệu về RSA
Tiêu chuẩn Rivest-Shamir-Adleman (RSA) - Giải thuật mã hóa khóa công khai RSA là một tiêu chuẩn được các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman phát triển tại Học Viện Công nghệ Masachusetts (MIT) vào năm 1977, tên tiêu chuẩn được lấy từ 3 chữ cái đầu của tên 3 tác giả, hiện tiêu chuẩn được các tổ chức Viện Tiêu chuẩn Quốc gia Hoa Kỳ (American National Standards Institute – ANSI), Viện Kỹ nghệ Điện và Điện tử (Institute of Electrical and Electronics Engineers – IEEE) và Phòng thí nghiệm RSA công nhận (RSA Laboratories là một bộ phận của Tập đoàn EMC) Đâ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
Hình 3.1 Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện
Công nghệ Masachusetts (MIT) vào năm 1977 Trước đó vài năm, Clifford Cox, một chuyên gia mã hóa người Anh đã phát triển riêng một biến thể của RSA Tuy nhiên, Chính phủ Anh xem đây là vấn đề mật và đã không công bố Khi Rivest, Shamir và Adleman công bố RSA trong ấn phẩm Scientific American tháng 9/1977, Cơ quan An ninh quốc gia Hoa Kỳ (NSA) không đồng ý về việc phổ biến rộng rãi RSA và ra lệnh cấm, tuy nhiên lệnh cấm này không có cơ sở pháp lý Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4,405,829) 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, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như
Trang 14không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký
Năm 1978, các tác giả đã công bố thuật toán trên Tạp chí của Hiệp hội Kỹ thuật Tính toán Hoa Kỳ (Communications of the Association for Computing Machinery – ACM) Hiện nay, có thể tham khảo đặc tả của RSA trên trang thông tin của Tập đoàn EMC
3.2 Mô tả hoạt động của RSA
Định lý cơ sở:
Định lý nhỏ của Fermat: Với p là một số nguyên tố khác 2 thì chia một số a lũy thừa
p cho p sẽ có số dư chính bằng a: a Pamod 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ã
Trang 15Hì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
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo 5 bước sau:
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
2 Tính tích của nó n pq
3 Tính giá trị hàm Phi Euler của n: n p 1q 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
Trang 163.2.2 Quá trình mã hóa:
Giả sử Bob muốn gửi đoạn thông tin M cho Alice Đầu tiên Bob chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước Quá trình này được mô tả ở 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:
)
(mod n
m
c eHà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
) (mod )