Hai nguyên tắc của an toàn bảo mật thông tin: - Việc thẩm định về bảo mật phải là khó và cần tính tới tất cả các tình huống khả năng tấn công có thể được thực hiện.. Lịch sử phát triển:
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN
HỌC PHẦN: AN TOÀN BẢO MẬT TÊN BÀI TẬP LỚN: CHAT NỘI BỘ VỚI MÃ HÓA RSA
Sinh viên thực hiện Khó
2
19748020127 6
2
19748020126 0
2
19748020125 8
2
19748020125 3 Nguyễn Hoàng Anh
CNTT 2
19748020127 0
2
19748020129 1
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN
HỌC PHẦN: AN TOÀN BẢO MẬT
Nhóm:
ST
T Sinh viên thực hiện
Điểm bằng số
Điểm bằng chữ
Ký tên
5 Nguyễn Hoàng Anh Quân
CÁN BỘ CHẤM 1
(Ký và ghi rõ họ tên)
CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên)
Bắc Ninh, Năm 2022
Trang 3Mục Lục
CHƯƠNG 1 TỔNG QUAN LÝ THUYẾT 5
1 Khái niệm an toàn bảo mật thông tin 5
2 Khái niệm mật mã học 6
CHƯƠNG 2 HỆ MÃ HÓA RSA 9
1 Mô tả sơ lược 10
2 Tạo khóa 11
3 Mã hóa 11
4 Giải mã 11
CHƯƠNG 3 THIẾT KẾ GIAO DIỆN VÀ DEMO ỨNG DỤNG 13
1 Thiết kế giao diện 13
CHƯƠNG 4 KẾT LUẬN 16
Trang 4DANH MỤC HÌNH ẢNH
Hình 1 Đội ngũ RSA tại lề nhận Giải thưởng Turing năm 2003 11
Hình 2 Giao diện màn hình chính 14
Hình 3.Giao diện khi tham gia phòng chat 15
Hình 4.Giao diện những người khác tham gia chat 16
Hình 5.Người nhận giải mã nội dung 17
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
Leonard Adleman, tên của loại mã hóa và tên của tác giả
Trang 6Lời mở đầu
Trên thực tế, Chat là một ứng dụng trên mạng đã được phổ biến rộng rãi Một số ứng dụng về Chat phổ biến hiện nay như Yahoo, Skype, Zing Chat… Người ta sử dụng các chương trình Chat với mục đích trao đổi thông tin như trò chuyện, làm quen bạn bè, bàn bạc công việc gián tiếp qua môi trường Internet - một cách đơn giản để kết nối mọi người lại với nhau Khi xây dựng một chương trình Chat cần phải đảm bảo các yêu cầu
về kết nối, dữ liệu trong quá trình truyền đi phải đảm bảo toàn vẹn và an toàn
Là một ứng dụng mạng nên các chương trình Chat hoạt động dựa trên mô hình Client – Server hoặc Point to Point và kết nối bằng một trong 2 giao thức TCP hoặc UDP Trên cơ sở đó, tôi đã xây dựng chương trình Chat hoạt động theo mô hình Client – Server
và sử dụng giao thức kết nối TCP
Khi xây dựng một chương trình Chat một vấn đề cũng rất quan tâm đó là vấn đề bảo mật thông tin truyền đi Do đó mã hóa thông tin trước khi truyền đi là việc làm hoàn toàn cần thiết Ở đây, tôi đã chọn thuật toán RSA để mã hóa dữ liệu trong quá trình truyền tin
Trong phạm vi đề tài này sẽ giới thiệu về phương thức hoạt động, ứng dụng lập trình Socket để xây dựng một chương trình Chat và giới thiệu về thuật toán mã hóa RSA
vào quá trình mã hóa dữ liệu trước khi dữ liệu được truyền đi hay còn gọi “Chat nội bộ với mã hóa RSA”
Trang 7CHƯƠNG 1 TỔNG QUAN LÝ THUYẾT
1 Khái niệm an toàn bảo mật thông tin
1.1 Khái niệm thông tin:
Thông tin là một bộ phận quan trọng và là tài sản thuộc quyền sở hữu của các tổ chức, sự thiệt hại và lạm dụng thông tin không chỉ ảnh hưởng đến người sử dụng hoặc các ứng dụng mà nó còn gây ra các hậu quả tai hại cho toàn bộ tổ chức đó Thêm vào đó,
sự ra đời của Internet đã giúp cho việc truy cập các thông tin ngày càng trở nên dễ dàng hơn Tuy nhiên, bên cạnh việc truy cập thông tin dễ dàng thì cũng có những rủi ro như việc bị đánh mất, đánh cắp dữ liệu thông tin thông qua hình thức sử dụng mạng lưới Internet Để tránh tình trạng đáng tiếc đó xảy ra, các tổ chức đã bảo mật thông tin bằng việc mã hóa và ẩn giấu những thông tin cần thiết đi
1.2 Khái niệm an toàn bảo mật thông tin
An toàn bảo mật thông tin dữ liệu cá nhân, tổ chức nhằm tránh khỏi sự đánh cắp, phá hoại từ những kẻ xấu, tin tặc Việc bảo mật tốt những dữ liệu thông tin sẽ tránh những rủi ro không đáng có cho chính cá nhân và doanh nghiệp của tổ chức
1.3 Hai nguyên tắc của an toàn bảo mật thông tin:
- Việc thẩm định về bảo mật phải là khó và cần tính tới tất cả các tình huống khả năng tấn công có thể được thực hiện
- Tài sản được bảo vệ cho tới khi hết gía trị sử dụng hoặc hết ý nghĩa bí mật.[1]
1.4 Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin:
Tính bí mật: Tài sản của hệ thống chỉ được truy cập bởi những người có thẩm
quyền Các loại truy cập gồm có: đọc(reading), xem(viewing), in ấn(printing), sử dụng chương trình, hoặc hiểu biết về sự tồn tại của một đối tượng trong tổ chức Tính bí mật có thể được bảo vệ nhờ việc kiểm soát truy cập (theo nhiều kiểu khác nhau) hoặc nhờ các
Trang 8thuật toán mã hóa dữ liệu Kiểm soát truy cập chỉ có thể được thực hiện với các hệ thống phần cứng vật lý Còn đối với các dữ liệu công cộng thì thường phương pháp hiệu quả là các phương pháp của mật mã học
Tính toàn vẹn dữ liệu: tài sản của hệ thống chỉ được thay đổi bởi những người có
thẩm quyền
Tính sẵn dùng: tài sản luôn sẵn sàng được sử dụng bởi những người có thẩm
quyền.[1]
2 Khái niệm mật mã học
2.1 Lịch sử phát triển:
Mật mã học là một ngành có lịch sử từ hàng nghìn năm nay.Trong phần lớn thời gian phát triển của mình(ngoại trừ vài thập kỷ trở lại đây),lịch sử mật mã học chính là lịch sử của những phương pháp mật mã học cổ điển - các phương pháp mật mã hóa với bút và giấy,đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản.Vào đầu thế kỷ XX,sự xuất hiện của các cơ cấu cơ khí và điện cơ,chẳng hạn như máy Enigma,đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho việc mật
mã hóa.Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính trong những thập kỷ gần đây đã tạo điều kiện để mật mã học phát triển nhảy vọt lên một tầm cao mới.
2.2 Một số loại mật mã:
Những bằng chứng sớm nhất về sử dụng mật mã học là các chữ tượng hình không tiêu chuẩn tìm thấy trên các bức tượng Ai Cập cổ đại(cách đây khoảng 4500) Những ký hiệu tỏ ra không phải để phục vụ mục đích truyền thông tin bí mật mà có vẻ như là nhằm mục đích gợi nên những điều thần bí, trí tò mò hoặc thậm chí để tạo sự thích thú cho người xem
Có người cho rằng,người đầu tiên áp dụng mật mã chính là nhà quân sự thiên tài của La Mã cổ đại,Julius Caesar.Mật mã này được dùng trong hoạt động quân sự.Đó chính
là mã Caesar,ông thay thế một cách đơn giản từng chữ cái trong thư bằng chữ cái cách nó3vị trí trong bảng chữ cái.Sau này được gọi là mã dịch chuyển Caesar,một hình thức
Trang 9của mã thế,làm nền tảng cho các hệ mã phức tạp sau này.
Trong thời kì phục hưng khoa học mật mã ở Châu Âu thực sự phát triển.Sự xuất hiện và phát triển của phương pháp phân tích mã ở Châu Âu đã đẩy các nhà giải mã lên ngôi.Các nhà lập mã buộc phải lao vào cuộc tìm kiếm những mã mới:playfair cipher,hill cipher
Blaise de Vigenère(1523-1596)l à một nhà ngoại giao người Pháp đã hoàn thiện ý tưởng mã hóa nhiều bảng mã, mật mã này được gọi là mã Vigenère Điểm mạnh của mã Vigenère là sử dụng tới 26 bảng mã khác nhau Do đó mà nó không bị phá trong một thời gian dài.Tuy nhiên năm 1863 ông Kasiski đã công phá thành công bằng kỹ thuật tấn công thống kê
Trong thế chiến thứ II,những máy mã hóa dạng Enigma đã được sử dụng để vận chuyển các thông tin quân sự bí mật.Sau đó mã này cũng bị trung tâm giải mã ở Bletchley Park công phá
Các nhà tạo mã đã sớm nhận ra rằng,mật mã máy phức tạp không phải là cách thức gửi thư an toàn nhất,điều đó đã thúc đẩy việc tạo thêm một số mã mới với tính bảo mật cao hơn,làm tiền đề xây dựng nên hệ mật mã khóa công khai
2.3 Hệ mã hóa công khai
Mã hóa khóa công khai là một dạng mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó.Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau.Một hệ mã khóa công khai sử dụng hai loại khóa:
- Khóa công khai(public key)được công bố rộng rãi và được sử dụng trong việc mã hóa
- Khóa riêng(private key)chỉ do một người nắm giữ và được sử dụng để giải
mã thông tin đã được mã hóa bằng khóa công khai
Các phương pháp mã hóa này khai thác những ánh xạ f mà việc thực hiện ánh xạ ngược f-1 rất khó so với việc thực hiện ánh xạ f Chỉ khi biết được khóa riêng K thì mới có thể thực hiện được ánh xạ ngược f-1
Tính an toàn của mã hóa khoá công khai phụ thuộc vào tính khó của những vấn đề
Trang 10tính toán và dựa trên số lượng khóa tiềm năng Thuật toán mã hóa khóa công khai thường phải thao tác trên các con số khá lớn để đảm bảo vấn đề tính toán có độ khó đủ để không
có lời giải khả thi.Cũng chính vì vậy các thuật toán mã hóa khóa công khai thường chạy chậm
Hệ thống mã hóa khóa công khai có thể sử dụng với các mục đích:
- Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
- Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa
bí mật nào đó hay không
- Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa hai bên
Thông thường, các kỹ thuậ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 để đảm bảo tính bí mật của thông tin,làm nền tảng cho chữ kí điện tử, được sử dụng để trao đổi khóa
Trang 11CHƯƠNG 2 HỆ MÃ HÓA RSA
Trong mật mã học, RSA là một thuật toán mật 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 được Ron Rivest,Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại “Học viện Công nghệ Massachusetts(MIT)”.Tên của thuật toán lấy từ BA chữ cái đầu của tên3tác giả
Trước đó,vào năm 1973, Clifford Cocks,một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự.Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm.Tuy nhiên,phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật
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áng9nă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ư khô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 năm 2002,ba tác giả của hệ mật mã RSA được trao tặng giải thưởng Turing,giải thưởng cao nhất của Tin học,đánh dấu sự thừa nhận chính thức của giới Tin học đối với RSA
Trang 12Hình 1 Đội ngũ RSA tại lề nhận Giải thưởng Turing năm 2003
1 Mô tả sơ lược
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 (bí mật) mới có thể giải mã được
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: 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ở sẵn 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( như loại khoá thông thường chỉ cần sập chốt lại,sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọ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
Trang 13chính là khóa bí mật.
3 Tạo khóa
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, mỗi người sử dụng sẽ được tạo một RSA publickey và một RSA privatekey tương ứng Khóa được tạo theo thuật toán sau:
Sinh ra 2 số nguyên tố “lớn” p và 4 phân biệt, lựa chọn ngẫu nhiên và có cỡ
“tương tự nhau”
Tính n=p*q
Tính giá trị hàm số p(n)=(p-1)*(q-1)
Chọn một số tự nhiên ngẫu nhiên e sao cho1<e<¢(n)và là số nguyên tố cùng nhau với p(n):gcd(e,p(n))=1
Tính số nguyêndsao cho:1<d<p(n)vàd*e=1(mod(n)) Alice gửi khóa công khai cho Bob,và giữ bí mật khóa cá nhân của mình Ở đây, p và 4 giữ vai trò rất quan trọng Chúng
là các phân tố của n và cho phép tính d khi biết e Publickey là{e,n} và Privatekey là {d,n} hoặc {d,p.q}
4 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 Lúc này Bob cómvà 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
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun) bằng (thuật toán bình phương và nhân).Cuối cùng Bob gửi c cho Alice
5 Giải mã
Alice nhận c từ Bob và biết khóa bí mật d Alice có thể tìm được m từ c theo công thức sau:
Trang 14Biế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ó e*d đồng dư với 1 modul ∅(n) do vậy ta có
e∗d=1+k∗∅(n).
Khi đó nếu gcd(m,p)=1thì theo định lý Fermat ta sẽ có: m p−1 đồng dư với
1 modul pvậy thì: m 1+k ( p−1)(q−1)
=m(mod p)=¿m ed
Nếu gcd (m , p)= pthì m ed=m(mod p).
Tương tự ta chứng minh được m ed=m(mod q ).
Cuối cùng do p, q là 2 số nguyên tố phân biệt nên ta có
m ed=m(mod n).Vậy c d=(m e)d=m(mod n).Tức m=(m e)d mod n=c d mod n.
Trang 15CHƯƠNG 3 THIẾT KẾ GIAO DIỆN VÀ DEMO
ỨNG DỤNG
1 Thiết kế giao diện
Hình 2 Giao diện màn hình chính
- Người dùng khi khơi động ứng dụng sẽ có giao diện chính
Trang 16Hình 3.Giao diện khi tham gia phòng chat
- Người dùng sau khi nhập tên đề đăng ký tham gia phòng chat
- Người dung có thể mới thêm nhiều người tham gia hơn
Trang 17Hình 4.Giao diện những người khác tham gia chat
Với nhu cầu mã khóa nội dụng thì người gửi sẽ gửi tin nhắn đã được mã hóa
Trang 18Người nhận muốn xem được thông tin đoạn chat thì cần lấy nội dụng và xin được khóa công khai để giải mã nội dung
Hình 5.Người nhận giải mã nội dung
CHƯƠNG 4 KẾT LUẬN
Qua quá trình học tập môn an toàn bảo mật chúng em đã biết được nguyên lý hoạt động
các loại bảo mật qua đó ứng dụng trong bài báo cáo này Tuy còn nhiều sai sót kiến thức app dụng còn nhiều hạn chế xong dưới sự hướng dẫn tận tính của ThS Nguyễn Viết Hùng mà chúng em có thể hoàn thành bài báo cáo này
TÀI LIỆU THAM KHẢO
manhhomienbienthuy (n.d.) manhhomienbienthuy Retrieved from
https://manhhomienbienthuy.github.io/2017/02/20/he-ma-hoa-rsa-va-chu-ky-so.html
Trang 19wikipedia (n.d.) RSA Retrieved from https://vi.wikipedia.org/wiki/RSA_(m%C3%A3_h
%C3%B3a)