Vai trò của mã hóa trong ATTT và ứng dụng Mã hoá thông tin có thể được sử dụng để đảm bảo an toàn thông tin trên đường truyền với các thuộc tính: Bí mật confidentiality: đảm bảo chỉ nh
Trang 1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN
-
BÁO CÁO BÀI TẬP LỚN Đề tài: Tìm hiểu về giải thuật mã
hóa khóa công khai RSA
Nhóm sinh viên thực hiện: Nguyễn Văn Dũng B21DCCN278 Vũ Công Duy B21DCCN302 Nguyễn Anh Huân B21DCCN402 Lê Nguyễn Hải Đăng B21DCCN200 Nguyễn Huy Tú B21DCCN750
Hà Nội 2024
Trang 2BẢNG PHÂN CÔNG CÔNG VIỆC
Nhiệm vụ chung
Tìm hiểu và cài đặt thử nghiệm giải mã hóa công khai RSA
Trang 3MỤC LỤC
MỤC LỤC 1
LỜI CẢM ƠN 1
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 2
1 Mã hóa thông tin là gì 2
2 Vai trò của mã hóa trong ATTT và ứng dụng 3
3 Một số phương pháp mã hóa cơ bản 3
CHƯƠNG 2: MÃ HÓA RSA 6
1 Giới thiệu về mã hóa khóa bất đối xứng RSA 6
2 Các giải thuật sinh khóa, mã hóa, giải mã 8
3 Các điểm yếu, các dạng tấn công RSA và cách phòng chống 10
CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM 13
1 Một số công cụ, thư viện hỗ trợ 13
2 Thiết lập môi trường cài đặt 13
KẾT LUẬN 19
Tài liệu tham khảo 20
Trang 4LỜI CẢM ƠN
Lời đầu tiên nhóm em xin được gửi lời cảm ơn sâu sắc đến Học viện Công
nghệ Bưu chính Viễn thông đã đưa môn học An toàn và bảo mật hệ thống thông tin vào trong chương trình giảng dạy Đặc biệt, nhóm em xin gửi lời cảm ơn chân
thành nhất đến giảng viên - cô Ninh Thị Thu Trang, vì đã quan tâm giúp đỡ chúng
em trong suốt quá trình học tập môn An toàn và bảo mật hệ thống thông tin
Đề tài “Tìm hiểu về giải thuật mã hóa khóa công khai RSA” là nội dung nhóm em thực hiện nghiên cứu trong suốt quá trình học tập môn học Măc dù đã cố gắng trong quá trình tự tìm hiểu và thực hiện, song do thời gian và kiến thức còn hạn hẹp nên không thể tránh khỏi sự thiếu sót Nhóm em rất mong nhận được sự thông cảm và đóng góp ý kiến của cô và các bạn để bài báo cáo của nhóm em được hoàn thiện hơn
Nhóm em xin chân thành cảm ơn !
Trang 5CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 1 Mã hóa thông tin là gì
Mã hóa thông tin là quá trình chuyển đổi dữ liệu này sang một dữ liệu khác với ý nghĩa khác với dữ liệu ban đầu Mục đích nhằm chỉ cho phép một số người, đối tượng nhất định đọc, hiểu được dữ liệu ban đầu thông qua quá trình giải mã dữ liệu sau khi đã được biến đổi
Một hệ mã hóa gồm 2 khâu:
Mã hóa
Giải mã
Hình 1.1 Sơ đồ mã hóa và giải mã
Các thuật ngữ cơ bản trong mã hóa thông tin
Bản rõ (plaintext) : là thông tin chưa được mã hóa hay thông tin ở dạng có thể hiểu được
Bản mã (ciphertext hay encrypted text) : là thông tin đã được mã hóa hay thông
tin ở dạng đã bị xáo trộn
Mã hóa (Encryption): là hành động xáo trộn bản rõ để chuyển thành bản mã
Giải mã (Decryption): là hành động giải xáo trộn bản mã để chuyển thành bản rõ
Mã hóa sử dụng một thuật toán (Algorithm) để mã hóa thông tin
Trang 6Hình 1.2 Sơ đồ mã hóa và giải mã với các thuật ngữ
2 Vai trò của mã hóa trong ATTT và ứng dụng
Mã hoá thông tin có thể được sử dụng để đảm bảo an toàn thông tin trên đường truyền với các thuộc tính:
Bí mật (confidentiality): đảm bảo chỉ những người có thẩm quyền mới có khả
năng truy nhập vào thông tin;
Toàn vẹn (integrity): đảm bảo dữ liệu không bị sửa đổi bởi các bên không có
đủ thẩm quyền;
Xác thực (authentication): thông tin nhận dạng về các chủ thể tham gia phiên
truyền thông có thể xác thực;
Không thể chối bỏ (non-repudiation): cho phép ngăn chặn một chủ thể chối
bỏ hành vi hoặc phát ngôn đã thực hiện
Ứng dụng của mã hóa thông tin
Các kỹ thuật mã hóa được ứng dụng rộng rãi trong các hệ thống/công cụ/dịch vụ bảo mật:
Dịch vụ xác thực (Kerberos, RADIUS,…)
Điều khiển truy cập
Các công cụ đánh giá và phân tích logs
Các sản phẩm quản lý ATTT
Các công cụ cho đảm bảo an toàn cho truyền thông không dây
Các nền tảng bảo mật như PKI, PGP
Các giao thức bảo mật như SSL/TLS, SSH, SET, IPSec
Các hệ thống như VPN
3 Một số phương pháp mã hóa cơ bản Mã hóa cổ điển
Trang 7Đây là phương pháp mã hóa cơ bản nhất Người gửi và người nhận không cần phải tạo khóa bảo mật mà chỉ cần biết những thuật toán có khả năng giải mã là được Tuy nhiên, chính sự đơn giản này khiến khả năng đảm bảo an toàn không cao bởi một khi người thứ 3 biết được thuật toán giải mã đó thì dữ liệu sẽ không còn được bảo mật nữa
Mã hóa đối xứng
Đây là cách mã hóa thông tin thông dụng nhất Khóa dùng để thực hiện mã hóa và giải mã là như nhau nên chúng được gọi là đối xứng (symmetric) Hiện nay, thuật toán thường thấy trong phương pháp mã hóa này đó là AES Thuật toán dùng nhiều ô có kích thước lớn khác nhau để mã hóa dữ liệu nên hacker khó lòng giải mã hơn
Mã hóa bất đối xứng
Mã hóa bất đối xứng là phương pháp mã hóa thông tin bằng 2 loại khóa khác nhau: public key (khóa mã hóa) và private key (khóa giải mã) Chúng thường được áp dụng để mã hóa trong khóa công khai và khóa bí mật, với thuật toán áp
dụng phổ biến là RSA Tuy nhiên, do loại mã hóa này tốn khá nhiều thời gian thực
hiện, dẫn tới chi phí cao nên ít ai sử dụng nó để mã hóa cả một file
Hình 1.3 Sơ đồ mã hóa bất đối xứng
Mã hóa 1 chiều
Trang 8Mã hóa 1 chiều hay còn gọi là mã hóa Hash, một phương pháp mã hóa được sử dụng khi chỉ cần mã hóa dữ liệu mà không cần phải giải mã Ví dụ như, khi người dùng đăng nhập, phương pháp này sẽ xử lý mật khẩu thành chuỗi ký tự Sau đó, nó sẽ so sánh chuỗi ký tự đó với thông tin lưu trong cơ sở dữ liệu để xác định mật khẩu đó có đúng hay không
Hình 1.4 Sơ đồ mã hóa một chiều
Trang 9CHƯƠNG 2: MÃ HÓA RSA
1 Giới thiệu về mã hóa khóa bất đối xứng RSA
RSA là một thuật toán hay còn gọi là hệ mã hóa đối xứng được sử dụng cho các mục
đích bảo mật Nó cho phép mã hóa khóa công khai và được sử dụng phổ biến, rộng rãi để đảm bảo an toàn cho các dữ liệu nhạy cảm đặc biệt là những dữ liệu gửi qua mạng Internet
Năm 1997 RSA lần đầu tiên được ra mắt bởi Ron Rivest, Adi Shamir và Leonard
Adleman Cái tên RSA là bắt nguồn từ ba chữ cái đầu trong tên của ba nhà khoa
học
Hình 2.1 Sơ đồ mã hóa khóa bất đối xứng RSA
Độ an toàn của RSA dựa trên tính khó của việc phân tích số nguyên rất lớn (số có
hàng trăm chữ số thập phân
RSA sử dụng một cặp khóa:
Khóa công khai (Public key) dùng để mã hóa;
Khóa riêng (Private key) dùng để giải mã
Chỉ khóa riêng cần giữ bí mật Khóa công khai có thể công bố rộng rãi
Kích thước khóa của RSA:
Khóa < 1024 bít không an toàn hiện nay
Khuyến nghị dùng khóa >= 2048 bít với các ứng dụng mật mã dân sự hiện nay
Trang 10 Tương lai nên dùng khóa >=3072 bít
Hệ mã RSA được xây dựng trên cơ sở mã hóa khối trong đó khóa mã hóa là cặp (e,n) gồm số mũ e và module n Với n là tích số của 2 số nguyên tố rất lớn nào đó, n = p*q còn (e, φ(n)) = 1, với φ(n) là giá trị hàm Euler của n, trong trường hợp này φ(n) = (p - 1)*(q-1)
Một số ứng dụng phổ biến:
Bảo mật thông tin: RSA được sử dụng để mã hóa và giải mã thông tin nhạy cảm, như thông tin ngân hàng, thông tin cá nhân, hoặc thông tin liên quan đến bảo mật quốc gia
Chữ ký số: RSA được sử dụng để tạo và xác minh chữ kí số, đảm bảo tính xác thực và toàn vẹn của tài liệu kỹ thuật, hợp đồng và các giao dịch điện tử
- RSA sử dụng cho mã hóa thông điệp:
+ Người nhận phải sở hữu cặp khóa công khai (Public key) và khóa riêng (Private key) Người nhận chuyển khóa công khai của mình cho người gửi;
+ Người gửi mã hóa thông điệp sử dụng khóa công khai của người nhận và chuyển bản mã cho người nhận;
+ Người nhận giải mã thông điệp sử dụng khóa riêng của mình để khôi phục bản rõ của thông điệp
- RSA sử dụng cho tạo chữ ký số thông điệp:
+ Người gửi phải sở hữu cặp khóa công khai (Public key) và khóa riêng (Private key) Người gửi chuyển khóa công khai của mình cho người nhận;
+ Người gửi sử dụng khóa riêng để tạo chữ ký số cho thông điệp (bản chất là sử dụng khóa riêng để mã hóa chuỗi đại diện cho thông điệp);
+ Người nhận sử dụng khóa công khai của người gửi để kiểm tra chữ ký số của thông điệp (bản chất là sử dụng khóa công khai để giải mã khôi phục chuỗi đại diện cho thông điệp)
Giao tiếp an toàn qua mạng: RSA được sử dụng trong các giao thức bảo mật như SSL/TLS để bảo vệ dữ liệu trong quá trình truyền tải qua mạng
Xác thực người dùng: RSA được sử dụng trong các hệ thống xác thực người dùng và quản lý quyền truy cập, đảm bảo rằng chỉ những người được ủy quyền mới có thể truy cập vào thông tin nhạy cảm hoặc các tài khoản quan trọng
Trang 112 Các giải thuật sinh khóa, mã hóa, giải mã Giải thuật sinh khóa
1 Chọn 2 số nguyên tố lớn p và q với p khác q,lựa chọn ngẫu nhiên và độc lập 2 Tính n = p x q
3 Tính (n) = (p-1) x (q-1)
4 Chọn số e sao cho 0 < e < (n) và gcd(e, (n)) = 1
5 Chọn số d sao cho d e -1 mod (n), hoặc (d x e) mod (n) = 1 (d là molulo nghịch đảo của e)
Khóa công khai: (n,e)
Chọn số e sao cho 0 < e < 20, và e và (n) là số nguyên tố cùng nhau ((n) không chia hết cho e) Chọn e = 7
Tính (d x e) mod (n) → (d x 7) mod 20 = 1 d = (20*k +1)/7 → d = 3 (k=1) Khóa công khai (33, 7)
Khóa bí mật (33, 3)
Thuật toán mã hóa
Để mã hóa một thông điệp (plaintext), chia nó thành các khối nhỏ hơn Mỗi khối được biểu diễn bằng một số nguyên m (nhỏ hơn n)
Áp dụng công thức mã hóa:
Kết quả là ciphertext (văn bản mã hóa)
Thuật toán giải mã
Khi nhận được ciphertext, để giải mã chúng ta sử dụng khóa bí mật (n, d) Áp dụng công thức giải mã:
Kết quả là plaintext (văn bản gốc)
Trang 12Hình 2.2 Sơ đồ biểu diễn giải thuật RSA
Ví dụ:
Chọn 2 số nguyên tố p=3 và q=11
Tính n = p x q = 3 x 11 = 33
Tính (n) = (p-1) x (q-1) = 2 x 10 = 20
Chọn số e sao cho 0 < e < 20, và e và (n) là số nguyên tố cùng nhau ((n) không chia hết cho e) Chọn e = 7 Một số yêu cầu với quá trình sinh khóa
- Yêu cầu với các tham số sinh khóa p và q:
+ Các số nguyên tố p và q phải được chọn sao cho việc phân tích n (n = p × q) là không khả thi về mặt tính toán p và q nên có cùng độ lớn (tính bằng bit) và phải là các số đủ lớn Nếu n có kích thước 2048 bit thì p và q nên có kích thước khoảng 1024 bit
+ Hiệu số p – q không nên quá nhỏ, do nếu p – q quá nhỏ, tức p q và p √𝑛 Như vậy, có thể chọn các số nguyên tố ở gần √𝑛 và thử Khi có được p, có thể tính q và
Trang 13tìm ra d là khóa bí mật từ khóa công khai e và (n) = (p - 1)(q - 1) Nếu p và q được chọn ngẫu nhiên và p – q đủ lớn, khả năng hai số này bị phân tích từ n giảm đi - Vấn đề sử dụng số mũ mã hóa (e) nhỏ:
Khi sử dụng số mũ mã hóa (e) nhỏ, chẳng hạn e = 3 có thể tăng tốc độ mã hóa Kẻ tấn công có thể nghe lén và lấy được bản mã, từ đó phân tích bản mã để khôi phục bản rõ Do số mũ mã hóa nhỏ nên chi phí cho phân tích, hoặc vét cạn không quá lớn Do vậy, nên sử dụng số mũ mã hóa e đủ lớn và thêm chuỗi ngẫu nhiên vào khối rõ trước khi mã hóa để giảm khả năng bị vét cạn hoặc phân tích bản mã
- Vấn đề sử dụng số mũ giải mã (d) nhỏ: Khi sử dụng số mũ giải mã (d) nhỏ, có thể tăng tốc độ giải mã Nếu d nhỏ và gcd(p-1, q-1) cũng nhỏ thì d có thể tính được tương đối dễ dàng từ khóa công khai (n, e) Do vậy, để đảm bảo an toàn, nên sử dụng số mũ giải mã d đủ lớn
3 Các điểm yếu, các dạng tấn công RSA và cách phòng chống
Mã hóa RSA là mã hóa bất đối xứng nên tốc độ mã hóa sẽ chậm hơn nhiều so với các loại mã hóa đối xứng hiện nay.Quá trình mã hóa và giải mã RSA rất tốn kém về mặt tính toán, đặc biệt là khi sử dụng khóa có độ dài lớn Điều này có thể gây khó khăn đối với các thiết bị có tài nguyên hạn chế hoặc trong các ứng dụng đòi hỏi thời gian xửa lí nhanh Để đảm bảo tính bảo mật, các khóa RSA thường có kích thước lớn từ 2048 bit trở lên Điều này gây tác động đáng kể đến hiệu xuất và tốc độ của quá trình mã hóa và giải mã
Các nhược điểm mã hóa RSA cần được chú ý:
-Sử dụng khóa nhỏ có thể khiến thuật toán dễ bị tấn công
-Công nghệ tính toán mạnh mẽ có thể làm cho việc phá vỡ RSA trở nên dễ dàng hơn
-Việc công bố khóa không an toàn có thể dễ dàng dẫn đến việc tấn công
-Kẻ tấn công có thể tìm kiếm mối quan hệ giữa các khóa công khai để phá vỡ hệ thống RSA
-Tấn công bằng cách thu thập dữ liệu cũng là một nguy cơ
Các kiểu tấn công RSA:
Tìm cách xác định khóa bí mật 1.Bị lộ một trong các giá trị: p, q, (n)
Trang 14Giả sử trong quá trình lập khóa mà người sử dụng để lộ nhân tử p, q hoặc (n) ra ngoài thì kẻ tấn công sẽ dễ dàng tính được khóa bí mật a theo công thức:
a*b 1 (mod (n))
Biết được khóa bí mật, kẻ tấn công sẽ có thể giả mạo người dùng
- Phương pháp phòng chống:
Quá trình tạo lập khóa phải được tiến hành ở một nơi kín đáo, bí mật Sau khi thực hiện xong thì phải giữ cẩn thận khóa bí mật a, đồng thời hủy hết các giá trị trung gian: p, q, (n)
2.Sử dụng các tham số (p-1) hoặc (q-1) có các ước nguyên tố nhỏ
Nếu ta bất cẩn trong việc chọn các tham số p và q để cho (p-1) hoặc (q-1) có các ước nguyên tố nhỏ sẽ không an toàn Bởi vì, khi (p-1) hoặc (q-1) có các ước nguyên tố nhỏ thì ta có thể dùng thuật toán (p-1) của Pollar để phân tích giá trị modulo n thành thừa số một cách dễ dàng
- Phương pháp phòng chống:
Chọn các tham số p và q sao cho (p-1) và (q-1) phải có các ước nguyên tố lớn
3.Tấn công dựa theo khóa công khai n
Lúc này, kẻ tấn công sẽ tìm cách phân tích giá trị n ra hai thừa số nguyên tố p và q Từ đó, sẽ tính được (n)=(p-1).(q-1); cuối cùng tính được khóa bí mật a
- Phương pháp phòng chống:
Nên chọn số nguyên tố p và q đủ lớn để việc phân tích n thành tích của hai thừa số nguyên tố là khó có thể thực hiện được trong thời gian thực Trong thực tế, người ta thường sinh ra các số lớn (ít nhất 100 chữ số), sau đó kiểm tra tính nguyên tố của nó
Phân phối khoá
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA Quá trình phân phối
khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack) Giả sử Hắc
có thể gửi cho Bình một khóa bất kỳ và khiến Bình tin rằng đó là khóa (công khai) của An Đồng thời Hắc có khả năng đọc được thông tin trao đổi giữa Bình và An Khi đó, Hắc sẽ gửi cho Bình khóa công khai của chính mình (mà Bình nghĩ rằng đó
Trang 15là khóa của An) Sau đó, Hắc đọc tất cả văn bản mã hóa do Bình gửi, giải mã với khóa bí mật của mình, giữ một bản copy đồng thời mã hóa bằng khóa công khai của An và gửi cho An Về nguyên tắc, cả Bình và An đều không phát hiện ra sự can thiệp của người thứ ba Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc các thành phần của hạ tầng khóa công khai (public key infrastructure - PKI)
-Phương pháp phòng chống:
Sử dụng chứng thực khóa công khai (digital certificate): Một cách phổ biến để chống lại tấn công man-in-the-middle là sử dụng chứng thực khóa công khai Digital certificate là một tập hợp các thông tin xác nhận danh tính của một bên trong quá trình trao đổi dữ liệu Khi A gửi khóa công khai cho B, A cũng gửi kèm theo digital certificate của mình, được ký bởi một bên thứ ba đáng tin cậy (Certificate Authority - CA) B nhận được khóa công khai và digital certificate, sau đó xác minh chữ ký số trên certificate để đảm bảo rằng nó được ký bởi CA Nếu xác thực thành công, B có thể tin tưởng rằng khóa công khai mà B nhận được là của A, không phải là của kẻ tấn công
Xác thực trước khi trao đổi khóa: Trong quá trình trao đổi khóa công khai, A và B cần xác minh danh tính của nhau trước khi trao đổi khóa Điều này có thể thực hiện thông qua các kênh an toàn như gặp trực tiếp, gọi điện thoại xác nhận hoặc sử dụng các dịch vụ xác minh danh tính trực tuyến
Thực hiện kiểm tra dấu vân tay khóa công khai: Một phương pháp bảo mật bổ sung là kiểm tra dấu vân tay của khóa công khai trước khi sử dụng Mỗi khóa công khai sẽ có một dấu vân tay duy nhất, và việc kiểm tra dấu vân tay giúp xác nhận rằng khóa công khai đã nhận được là đúng