Sau đó bản rõ sẽ được mật mã hóa bằng khóa công khai của Alice sử dụng các thuật toán mã hóa công khai như RSA chẳng hạn.. Trong mô hình xác thực, bản rõ được mật mã hóa bằng khóa bí mật
Trang 1KHOA VIỄN THÔNG I
TIỂU LUẬN CUỐI KÌ
AN NINH MẠNG THÔNG TIN
ĐỀ TÀI: HỆ THỐNG MẬT MÃ HÓA KHÓA CÔNG KHAI
VÀ ỨNG DỤNG
Giảng viên: Phạm Anh Thư Nhóm tiểu luận: 2
Nhóm lớp: 6 Sinh viên:
Phan Văn Dũng B17DCVT086 Nguyễn Đình Trung B17DCVT373 Nguyễn Việt Anh B17DCVT019
Hà Nội, ngày 26 tháng 6 năm 2021
Trang 3PHÂN CÔNG CÔNG VIỆC CỦA NHÓM 1
DANH MỤC HÌNH VẼ 1
MỤC ĐÍCH VÀ PHẠM VI CỦA TIỂU LUẬN 2
CÁC NỘI DUNG TRONG TIỂU LUẬN 2
I Tổng quan về mật mã hóa công khai 2
1.1 Khái niệm mật mã hóa công khai 2
1.2 Mô hình bảo mật và xác thực sử dụng mã hóa khóa công khai 2
II Một số thuật toán sử dụng mật mã hóa khóa công khai 4
2.1 Thuật toán RSA 4
2.1.1 Giới thiệu thuật toán RSA 4
2.1.2 Hoạt động của thuật toán RSA 5
2.1.2.a Quá trình tạo khóa 5
2.2.1.b Quá trình mã hóa và giải mã 6
2.1.3 Ưu nhược điểm của giải thuật RSA 7
2.1.3.a Ưu điểm của giải thuật RSA 7
2.1.3.b Nhược điểm của giải thuật RSA 7
2.2 Thuật toán Diffie-Hellman 8
2.2.1 Giới thiệu về thuật toán Diffie-Hellman 8
2.2.2 Hoạt động của thuật toán Diffie-Hellman 8
2.2.2.a Ý tưởng hoạt động chung của giải thuật trao đổi khóa Diffie-Hellman 8
2.2.2.b Giải thuật trao đổi khóa Diffie-Hellman 9
2.2.2.c Mở rộng giải thuật trao đổi khóa Diffie-Hellman nhiều hơn hai người 11
2.2.3 Ưu nhược điểm của thuật toán Diffie-Hellman 11
2.2.3.a Ưu điểm của thuật toán Diffie-Hellman 11
2.2.3.b Nhược điểm của thuật toán Diffie-Hellman 12
III Ứng dụng của mật mã hóa khóa công khai .12
3.1 Mã hóa và giải mã 12
3.2 Tạo chữ ký số 13
3.3 Tiền điện tử 14
3.4 Trao đổi khóa xác thực bằng mật khẩu (PAKE) 16
IV Một vài điểm yếu trong mật mã hóa khóa công khai: 17
4.1 Thuật toán 17
4.2 Tấn công nhằm thay đổi khóa công khai .17
4.3 Hạ tầng khóa công khai P KI 18
KẾT LUẬN 19
TÀI LIỆU THAM KHẢO 19
Trang 4PHÂN CÔNG CÔNG VIỆC CỦA NHÓM
thực sử dụng mã hóa khóa công khai
2.2 Thuật toán Diffie-Hellman
khóa công khai 2.1 Thuật toán RSA
khóa công khai
IV Một vài điểm yếu trong mật
mã khóa công khai
DANH MỤC HÌNH VẼ
Hình 1: Mô hình bảo mật sử dụng mã hóa khóa công khai 3
Hình 2: Mô hình xác thực sử dụng mã hóa khóa công khai 3
Hình 3: Quá trình t ạo khóa bằng thuật toán RSA 5
Hình 4: Quá trình mã hóa, gi ải mã c ủa giải thuật RSA 6
Hình 5: Ý tưởng hoạt động chung của giải thuật trao đổi khóa Diffie-Hellman 8
Hình 6: Một ví dụ về giải thuật trao đổi khóa Diffie-Hellman giữa Alice và Bob 10
Hình 7: Một ví dụ về giải thuật trao đổi khóa Diffie-Hellman giữa ba người 11
Hình 8: Quá trình hoạt động của mã hóa 12
Hình 9: Sơ đồ tạo và kiểm chứng chữ ký số 14
Hình 10: Ý tưởng cơ bản của giao thức PAKE 16
Trang 5
LÝ DO CHỌN ĐỀ TÀI
An ninh mạng trong thế giới internet đã trở thành một nhu cầu rất quan trọng và cần thiết trong mọi khía cạnh của đời sống xã hội Bảo mật dữ liệu thông tin là yếu tố chính và hàng đầu quyết định liệu dữ liệu thông tin có còn hữu ích và có thể được sử dụng được hay không Mức độ bảo mật của dữ liệu thông tin sẽ được sử dụng khác nhau tùy thuộc vào mức độ hữu ích và quan trọng của dữ liệu thông tin
Một trong những kỹ thuật bảo mật thông tin dữ liệu trong thế giới internet là kỹ thuật mật mã hóa khóa công khai Bên cạnh đó hệ thống mật mã hóa khóa công khai còn được ứng dụng trong rất nhiều trong thực tế Vì vậy nhóm em quyết định chọn đề tài này làm đề tài tiểu luận riêng cho nhóm
MỤC ĐÍCH VÀ PHẠM VI CỦA TIỂU LUẬN
Mục đích và phạm vi chính trong tiểu luận của nhóm là phân tích và trình bày những kiến thức tổng quan về hệ thống mật mã hóa khóa công khai như khái niệm và các
mô hình…đồng thời nhóm em cũng phân tích và đi sau vào hoạt động của một số thuật toán mật mã hóa khóa công khai như thuật toán RSA hay Diffie-Hellman, chỉ ra ưu nhược điểm của các thuật toán này Ngoài ra nhóm cũng đề cập đến một vài ứng dụng của mật mã hóa khóa công khai và điểm qua vài điểm yếu của hệ thống
CÁC NỘI DUNG TRONG TIỂU LUẬN
I Tổng quan về mật mã hóa công khai
1.1 Khái niệm mật mã hóa công khai
Mật mã hóa khóa công khai là một hình thức mã hóa thông tin ở dạng có thể đọc được sang dạng không thể đọc được Cho phép trao đổi thông tin của mình một cách bí mật mà không cần trao đổi các khóa chung bí mật trước đó bằng cách tạo một cặp khóa
có quan hệ toán học với nhau đó là khóa công khai (public key), khóa bí mật (private key) Khóa công khai dùng để mã hóa thông tin cần gửi đi lên trên đường truyền và dùng khóa bí mật để giải mã thông tin người gửi
Khóa công khai được công khai trên mạng, khóa bí mật chỉ có người gửi tạo ra nó mới có và gửi đến người mà người gửi mong muốn Người nhận sẽ dùng khóa bí mật mà bên gửi cung cấp cho để giải mã thông tin Chỉ những ai có chính xác khóa bí mật bên gửi tạo ra mới có thể giải mã được thông tin Điều này tránh được những kẻ tấn công muốn thay đánh cắp thông tin và chỉnh sửa thông tin gửi đến người nhận với những mục đích xấu mà người gửi không mong muốn Khóa bí mật chỉ có người gửi tạo ra và gửi cho bên nhận mới có thể biết được khóa bí mật này
1.2 Mô hình bảo mật và xác thực sử dụng mã hóa khóa công khai
Mô hình bảo mật
Trang 6Hình 1: Mô hình bảo mật sử dụng mã hóa khóa công khai
Trong mô hình bảo mật, đầu tiên Bob sẽ tìm trong những khóa công khai mà Bob
có và tìm kiếm ra khóa công khai của Alice Sau đó bản rõ sẽ được mật mã hóa bằng khóa công khai của Alice sử dụng các thuật toán mã hóa công khai như RSA chẳng hạn
Kế tiếp là truyền bản mã trên đường truyền để đến Alice Alice sau khi nhận được bản rõ
sẽ giải mã sử dụng khóa bí mật của mình và kết quả thu được bản rõ ban đầu
Mô hình này được gọi là bảo mật bởi vì dữ liệu hay bản rõ đã được mật mã hóa trước khi truyền tải trên kênh truyền tới người nhận, ở đây kẻ giả mạo chỉ biết khóa công khai của Alice tuy nhiên không thể giải mã được vì chỉ có Alice có khóa bí mật tương ứng với khóa công khai này thế nên chỉ Alice mới có thể giải mã và tính bảo mật của quá trình truyền dữ liệu được đảm bảo
Mô hình xác thực
Hình 2: Mô hình xác thực sử dụng mã hóa khóa công khai
Trang 7Trong mô hình xác thực, bản rõ được mật mã hóa bằng khóa bí mật của Bob sử dụng các thuật toán mật mã hóa khóa công khai Sau đó bản mã sẽ được truyền tải trên kênh truyền và gửi đến Alice Alice sẽ tìm trong những khóa công khai mà Alice có và tìm kiếm ra khóa công khai của Bob Sau đó giải mã bản mã bằng khóa công khai của Bob thì sẽ thu được bản rõ ban đầu
Mô hình này được gọi là xác thực bởi vì nó có thể xác thực người gửi chính là Bob Bởi vì khóa bí mật chỉ có Bob mới biết do đó khi Alice giải mã sử dụng khóa công khai của Bob thành công thì có thể xác định rằng chính Bob là người đã gửi bản rõ hay
dữ liệu cho Alice
II Một số thuật toán sử dụng mật mã hóa khóa công khai
2.1 Thuật toán RSA
2.1.1 Giới thiệu thuật toán RSA
Thuật toán RSA là tên viết tắt ba chữ cái đầu của ba tác giả đó là Ron Rivest, Adi Shamir và Len Adleman Nó là một thuật toán được ra đời vào năm 1977 được học viện công nghệ Massachusetts công bố Thuật toán này là một dạng mật mã hóa sử dụng khóa công khai cho phép thông tin được trao đổi một cách bí mật mà không cần dùng khóa chung bí mật trước đó Thuật toán này là thuật toán có thể nói là đầu tiên giải quyết những khó khăn trong việc tính toán tích hai số nguyên tố rất lớn bằng việc dùng phép lũy thừa modulo của lý thuyết số Trong thực tế hai số nguyên tố chọn để tạo khóa công khai và khóa bí mật càng lớn thì càng tốt vì kích thước khối càng lớn thì việc kẻ tấn công
có thể giải mã để tìm ra khóa công khai là khá khó khăn, nó mất rất nhiều thời gian do việc sử dụng các số nguyên tố lớn p, q để phân tích tích của hai số nguyên tố rất lớn thành tích các số nguyên tố là vô cùng khó khăn
Thuật toán RSA được bảo mật phần lớn chính là nhờ việc khả năng phân tích các
số nguyên lớn thành thừa số nguyên tố Vì khóa công khai được công bố rộng rãi, kẻ tấn công có thể biết được khóa công khai này và phân tích các thừa số nguyên tố cũng sẽ dễ dàng hơn dẫn đến khóa bí mật có thể dễ bị lộ và kẻ tấn công có thể giải mã thông tin hoặc thay đổi nội dung trong đó để giải gửi đi những mục đích xấu gây ảnh hưởng đến thông tin trao đổi qua lại giữa hai bên gửi và nhận
Chính vì vậy việc sinh khóa cho thuật toán RSA là hết sức quan trọng Việc sinh khóa phải tạo ra hai số p, q ngẫu nhiên lớn, có độ dài khác nhau khiến cho việc phân tích thành các thừa số nguyên tố sẽ trở nên khó khăn và khó mở khóa Hiện nay máy tính cá nhân vẫn chưa thể thực hiện được việc tính toán này Đối với những máy tính với tốc độ cao có và cùng với con người có thể phá vỡ được bảo mật RSA nhưng để có thể phá vỡ được bảo mật này máy tính cần rất nhiều thời gian để tính toán Việc kẻ tấn công có thể lấy được khóa bí mật và giải mã thông tin là không khả thi Khóa công khai được tạo ra
từ hai số một là phép nhân của hai số nguyên tố lớn và thứ hai là từ một số e được chọn nguyên tố cùng với tích của hai số nguyên tố đó Nếu mà tăng kích thước khóa lên nhiều lần thì độ khó cho việc tính toán khóa trở nên vô cùng khó khăn Hiện nay với độ dài
Trang 8khóa là RSA có độ dài là 2048 bute hoặc 1024 byte Việc với độ dài như vậy có thể bị phá hỏng (tính được giá trị trong khóa) ở hiện tại là không khả thi
2.1.2 Hoạt động của thuật toán RSA
2.1.2.a Quá trình tạo khóa
Hình 3: Quá trình tạo khóa bằng thuật toán RSA
Bước 1: Tạo hai số nguyên tố lớn p, q càng lớn càng tốt Vì sự bảo mật của RSA này dựa trên việc phân tích thành các thừa số nguyên tố này hết sức khó khăn Nếu p, q càng lớn thì kích thước khối khóa RSA càng lớn thì mức độ bảo mật nó càng cao Hiện nay kích thước khối RSA này đang có độ dài từ 2048 byte đến 4084 byte với độ dài lớn như vậy việc thì người ta sẽ tạo khóa bằng việc tìm các số là số nguyên tố với mức xác suất cao thỏa mãn điều kiện:
Số ngẫu nhiên này có độ dài N bít phải nằm trong khoảng ( - 1) Nhưng việc chọn số này để tạo ra số nguyên tố nhỏ như 3, 5, 7 thì sẽ là cho thuật toán thuật toán RSA không có gì là bảo mật cao nhưng thay vì thế phải tránh để quá nhiều bít 0 ở đầu mà phải luôn đặt bít có thứ tự cao nhất bằng 1
Tất cả số nguyên tố này đề phải là số lẻ thì hiệu suất tạo khóa sẽ cao hơn các số lẻ này nằm trong khoảng ( - 1, + 1) với n > 2
Xác xuất lỗi phải nhỏ đó là điều kiện trong ứng dụng cho mục đích thương mại
Trang 9Bước 2: Tính giá trị n = p * q với n phải thoả mãn ( < n < +1) với i là kích thước khối Kích thước i càng lớn thì giá trị n càng lớn thì việc phân tích thành các thừa số nguyên tố càng khó khăn khóa tạo ra của giải thuật RSA sẽ bảo mật cao hơn
Bước 3: Tính giá trị (n) = (p-1) * (q-1)
Bước 4: Tìm một số e sao cho e nguyên tố cùng nhau với (n) vì khóa công khai được tạo ra từ hai giá trị e, n nên nếu p, q đã càng lớn thì giá trị n cũng lớn, đồng nghĩa với việc (n) lớn thì giá trị e này cũng lớn nhưng phải thỏa mãn điều kiên về việc tìm số nguyên tố như đã nêu ở trên
Bước 5: Tính giá trị d này là giá trị ngịch đảo của e trong modul (n) tức là: e*d mod (n) = 1
Bước 6: Như vậy, lúc này khóa cặp khóa công khai và khóa bí mật sẽ có kích thước khối là: Ku = (e, n); Kr = (d, n)
2.2.1.b Quá trình mã hóa và giải mã
Hình 4: Quá trình mã hóa, giải mã của giải thuật RSA
Việc mã hóa và giải mã sẽ được chia thành hai kiểu đó là bảo mật và chứng thực
Với bảo mật: Bản rõ M sẽ được mã hóa bằng khóa công khai Ku (khóa này
là khóa công khai tương ứng với khóa bí mật do chính bên nhận tạo ra) và bản mã C sẽ được tính theo công thức C = E(M, Ku) = mod n Để bên nhận giải mã bản mã C thì dùng khóa bí mật do bên nhận tạo ra để thu được bản rõ của bên gửi Bản rõ M sẽ được tính theo công thức: M’ = D(C, Kr) = mod n
Với xác thực: Bên gửi sẽ tạo ra cặp khóa bí mật và khóa công khai Khóa bí mật sẽ được bên gửi giữ lại để mã hóa bản rõ Còn bên nhận sẽ được bên gửi cung cấp khóa công khai để giải mã bản mã mà bên gửi gửi đến Bản rõ sẽ
Trang 10được mã hóa theo công thức C = E(M, Kr) = mod n và bên nhận sẽ giải
2.1.3 Ưu nhược điểm của giải thuật RSA
2.1.3.a Ưu điểm của giải thuật RSA
Xét về phạm vi ứng dụng: Thuật toán RSA được sử dụng rộng rãi trong kinh doanh thương mại điện tử (bảo mật các dữ liệu điện tử, chứng thực chữ kí điện tử ), hay qua các giao dịch thanh toán qua mạng
Xét về độ bảo mật của thuật toán: Không có thuật toán nào được coi là bảo mật tuyệt đối cả nhưng tính bảo mật thông tin của thuật toán này được cho là cũng rất an toàn Do thuật toán này bảo mật dựa trên việc chọn ra các số nguyên p, q phải rất lớn để tạo kích thước khóa lớn Việc càng tăng các giá trị p, q này càng lớn sẽ làm cho việc tính toán các giá trị e, d, n để có thể xác định khóa bí mật và công khai là hết sức nan giải đối với những kẻ tấn công
Giải thuật này dựa trên sự khó khăn của quá trình phân tích các số nguyên lớn thành các thừa số nguyên tố nhỏ hơn nhưng phải đủ lớn để có thể sinh khóa Quá trình sinh khóa là quá trình quan trọng nhất Nó ảnh hưởng đến tính bảo mật của thông tin dựa trên mã hóa bằng khóa công khai và khóa bí mật
2.1.3.b Nhược điểm của giải thuật RSA
Phần giải mã nếu mà các giá trị e nhỏ và bản rõ M có kích thước nhỏ thì dẫn đến việc kẻ tấn công có thể tính toán ra các giá trị p, q khá dễ dàng và từ đó có thể tìm ra khóa công khai và khóa bí mật Kẻ tấn công có thể giải mã thông tin người gửi và sẽ giả mạo hay thay đổi nội dung bản tin đến người nhận với mục đích xấu Lúc này bên gửi và bên nhận sẽ chịu sự điều khiển của kẻ tấn công.Vì vậy việc tạo khóa là hết sức quan trong khi sử dụng thuật toán RSA để tạo khóa phải hết sức chú ý đến các giá trị p, q, e
Kẻ tấn công có thể dựa trên thời gian hoạt động của giải thuật để xác định thời gian tạo khóa khi nào và từ đó sẽ nỗ lực tìm ra tích của 2 số nguyên tố để có thể xác định p, q nhằm tìm ra e, n, d để xác định được khóa bí mật để giải mã thông tin Điều cần lưu ý là sau khi tạo khóa bí mật và công khai thì phải lập tức xóa ngay hai số nguyên tố p, q trên cơ sở dữ liệu để tránh kẻ tấn công có thể biết được
Nếu kẻ tấn công dựa trên lỗi phần cứng thì kẻ tấn công sẽ gây ra các lỗi phần cứng trong bộ xử lí tạo ra các chữ kí số thì việc kẻ tấn công có thể dựa vào lỗi
đó để xác định bản mã từ đó đánh cắp thông tin
Kẻ tấn công có thể tấn công bằng việc thiết kế ra bảng tra giữa bản rõ và bản
mã để tra thông tin bản mã Khi gặp một bản mã nó dựa vào bản tra để lấy thông tin bản rõ
Trang 112.2 Thuật toán Diffie-Hellman
2.2.1 Giới thiệu về thuật toán Diffie-Hellman
Thuật toán trao đổi khóa Diffie-Hellman là một phương pháp trao đổi khóa bí mật một cách an toàn qua một kênh truyền công khai và được đặt theo tên của Whitfield Diffie và Martin Hellman Thuật toán Diffie-Hellman được phát triển bởi Whitfield Diffie và Martin Hellman vào năm 1976, đây là nghiên cứu sớm nhất được biết đến khi
đề xuất ý tưởng về khóa bí mật và khóa công khai tương ứng
Theo truyền thống, để quá trình trao đổi dữ liệu được an toàn giữa bên gửi và bên nhận thì yêu cầu trước tiên là họ phải trao đổi khóa bằng một số phương tiện vật lý an toàn Việc chuyển giao hay đúng hơn là tạo ra cùng một khóa bí mật ở cả hai bên một cách an toàn được thực hiện bởi thuật toán Diffie-Hellman
Phương thức trao đổi khóa Diffie-Hellman cho phép hai bên không biết trước về nhau cùng thiết lập, tạo ra khóa bí mật chung trên một kênh không an toàn mà không cần chuyển khóa này từ một đầu giao tiếp này sang đầu giao tiếp kia
Mặc dù thuật toán này hơi chậm nhưng chính sức mạnh tuyệt đối của thuật toán này đã khiến nó trở nên phổ biến Sau đó, khóa này có thể được sử dụng để mã hóa các giao tiếp tiếp theo bằng cách sử dụng mật mã khóa đối xứng
2.2.2 Hoạt động của thuật toán Diffie-Hellman
2.2.2.a Ý tưởng hoạt động chung của giải thuật trao đổi khóa Diffie-Hellman
Hình 5: Ý tưởng hoạt động chung của giải thuật trao đổi khóa Diffie-Hellman
Giải thuật trao đổi khóa Diffie-Hellman tạo ra một khóa bí mật chung được chia
sẻ giữa hai bên, khóa này có thể được sử dụng để trao đổi dữ liệu một cách bảo mật qua