bài tập lớn an toàn bảo mật thông tin. bài tập lớn an toàn bảo mật thông tin. bài tập lớn an toàn bảo mật thông tin. bài tập lớn an toàn bảo mật thông tin. bài tập lớn an toàn bảo mật thông tin. bài tập lớn an toàn bảo mật thông tin.
TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu về hệ mật mã
Để đảm bảo an toàn trong việc truyền tin và kiểm tra tính toàn vẹn của thông tin, việc mã hóa thông tin trước khi truyền là cần thiết, sử dụng các hệ mật như DES, Triple DES (3DES), RC4, AES, RSA, Rabin, Diffie-Hellman, và Elgamal Một hệ thống mật mã bao gồm 5 thành phần: P (Plaintext), C (Ciphertext), K (Key), E (Encryption), và D (Decryption), và phải thỏa mãn các tính chất nhất định.
P (Plaintext) là tập hợp hữu hạn các bản rõ có thể (hay còn gọi là không gian bản rõ).
C (Ciphertext) là tập hợp hữu hạn các bản mã có thể (hay còn gọi là không gian bản mã).
K (Key) là tập hợp các bản khóa có thể (hay còn gọi là không gian khóa).
E (Encryption) là tập hợp các quy tắc mã hóa có thể (hay còn gọi là không gian các hàm mã hóa).
D (Decryption) là tập hợp các quy tắc giải mã có thể (hay còn gọi là không gian các hàm giải mã)
Quá trình mã hóa được tiến hành bằng cách áp dụng hàm tóan học E lên thông tin P để trở thành thông tin đã mã hóa C
Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã.
Quá trình mã hóa và giải mã.
Khóa
1.2.1 Độ dài khóa Độ an toàn của thuật toán mã hoá cổ điển phụ thuộc vào hai điều đó là độ dài của thuật toán và độ dài của khoá Nhưng độ dài của khoá dễ bị lộ hơn Giả sử rằng độ dài của thuật toán là lý tưởng, khó khăn lớn lao này có thể đạt được trong thực hành Hoàn toàn có nghĩa là không có cách nào bẻ gãy được hệ thống mã hoá trừ khi cố gắng thử với mỗi khoá Nếu khoá dài 8 bits thì có 2 8 = 256 khoá có thể Nếu khoá dài 56 bits, thì có 2 56 khoá có thể Giả sử rằng siêu máy tính có thể thực hiện 1 triệu phép tính một giây, nó cũng sẽ cần tới 2000 năm để tìm ra khoá thích hợp Nếu khoá dài 64 bits, thì với máy tính tương tự cũng cần tới xấp xỉ 600,000 năm để tìm ra khoá trong số 2 64 khoá có thể Nếu khoá dài
Hệ thống mã hóa với độ dài 128 bit cần tới 10^25 năm để bẻ gãy, trong khi vũ trụ chỉ tồn tại khoảng 10^10 năm, cho thấy thời gian này là đủ dài Tuy nhiên, khi phát minh ra hệ mã hóa với độ dài khóa 8 Kbyte, cần lưu ý rằng thuật toán cũng phải an toàn, nghĩa là không thể bị phá vỡ trừ khi tìm được khóa thích hợp Độ an toàn của hệ thống mã hóa nên phụ thuộc vào khóa, không phải vào chi tiết của thuật toán Nếu độ dài của hệ thống mã hóa được tin tưởng, kẻ tấn công sẽ không thể biết nội dung bên trong của thuật toán Việc giữ bí mật nội dung của thuật toán không đảm bảo an toàn hơn là phân tích lý thuyết chung, và thật ngây thơ khi nghĩ rằng ai đó không thể gỡ mã nguồn hoặc đảo ngược thuật toán của bạn.
Nếu một số kẻ thám mã biết tất cả chi tiết về thuật toán của bạn và có trong tay nhiều bản mã cũng như một khối lượng bản rõ tấn công phong phú, thì hệ thống mã hóa của bạn cần phải đảm bảo độ an toàn dư thừa trong mọi khía cạnh Chỉ khi đó, bạn mới có thể yên tâm về mức độ bảo mật cần thiết cho dữ liệu của mình.
1.2.2 Quản lý khóa công khai
Quản lý khóa là thách thức lớn nhất trong an toàn hệ thống mã hóa, với việc thiết kế thuật toán mã hóa an toàn không dễ dàng, trong khi việc tạo và lưu trữ khóa bí mật còn khó khăn hơn Kẻ thám mã thường tấn công cả hệ mã hóa đối xứng lẫn công khai thông qua hệ thống quản lý khóa Mặc dù quản lý khóa trong hệ mã hóa công khai dễ hơn so với hệ mã hóa đối xứng, nhưng nó cũng gặp phải vấn đề riêng, đó là mỗi người chỉ có một khóa công khai, bất kể số lượng người dùng trên mạng.
1.2.3 Chứng nhận khoá công khai
Chứng nhận khoá công khai xác định quyền sở hữu khoá của một cá nhân, được giám sát bởi một bên đáng tin cậy Chứng nhận này nhằm ngăn chặn việc thay thế khoá bằng một khoá khác, đảm bảo tính toàn vẹn và bảo mật cho hệ thống.
Thông tin về Bob, bao gồm tên và địa chỉ, được lưu trữ bởi một cơ quan chứng nhận (CA) mà Eva tin tưởng CA xác nhận tính chính xác của thông tin và khóa công khai thuộc về Bob Sau khi kiểm tra các dấu hiệu, Eva có thể sử dụng khóa công khai để đảm bảo an toàn cho Bob mà không ai khác biết.
1.2.4 Quản lý khóa phân phối
Trong một vài trường hợp, trung tâm quản lý khoá có thể không làm việc.
Eva và Bob có thể không tin tưởng vào bất kỳ cơ quan chứng thực nào, chỉ đặt niềm tin vào bạn bè thân thiết hoặc hoàn toàn không tin vào ai cả Quản lý khoá phân phối trong các chương trình miền công khai giúp giải quyết vấn đề này thông qua người giới thiệu, người mà hệ thống công nhận và có thể xác nhận khoá công khai của bạn.
Hệ mật mã gồm 2 loại:
Hệ mật mã đối xứng, hay còn gọi là hệ mật mã khóa bí mật, là loại hệ thống mã hóa sử dụng chung một khóa cho cả quá trình mã hóa và giải mã thông tin.
Do đó khóa phải được giữ bí mật tuyệt đối Một số thuật toán nổi tiếng trong mã hóa đối xứng là: DES, Triple DES(3DES), RC4, AES,
Hệ mật mã bất đối xứng, hay còn gọi là mật mã khóa công khai, sử dụng hai khóa khác nhau: một khóa để mã hóa thông tin và một khóa khác để giải mã Điều này cho phép bảo mật cao hơn, vì chỉ cần chia sẻ khóa công khai mà không cần tiết lộ khóa riêng tư.
Các khóa trong thuật toán mã hóa công khai tạo thành cặp chuyển đổi ngược nhau, trong đó không thể suy ra khóa này từ khóa kia Khóa dùng để mã hóa được gọi là khóa công khai (Public Key) và có thể được chia sẻ, trong khi khóa dùng để giải mã, gọi là khóa bí mật (Private Key), cần được giữ kín Một số thuật toán mã hóa công khai nổi tiếng bao gồm Diffie-Hellman, Elgamal, RSA và Rabin.
Hệ mật mã công khai
Hệ mật mã công khai đánh dấu một bước tiến quan trọng trong ngành mật mã, phá vỡ tư duy cũ và mang lại nhiều ứng dụng lớn như phân phối khóa và chữ ký số Mặc dù khắc phục được điểm yếu của hệ mật mã khóa đối xứng, nhưng hệ mật mã khóa công khai lại gặp phải vấn đề về tốc độ do phải xử lý các số lớn, như trong trường hợp RSA Để đảm bảo an toàn cho hệ mật mã RSA, cần phải tìm cách cải thiện thời gian tính toán bằng cách giảm độ dài khóa mà vẫn giữ được tính bảo mật Đây chính là xu hướng hiện nay trong lĩnh vực mật mã học.
Nhóm 14 chúng em đã quyết định nghiên cứu hệ mã hóa công khai RSA nhằm hiểu rõ phương pháp mã hóa và giải mã thông tin, cũng như các thuật toán liên quan Qua chương trình demo mà chúng em tạo ra, chúng em muốn nhấn mạnh lợi ích của việc mã hóa trong việc bảo vệ thông tin và đảm bảo tính toàn vẹn khi truyền tải Hệ mã hóa RSA đóng vai trò quan trọng trong việc đảm bảo an toàn thông tin trong quá trình truyền tin.
Thám mã
Mục tiêu của thám mã là xác định những lỗ hổng trong phương thức mã hóa, nhằm nâng cao độ an toàn cho hệ thống Hoạt động này có thể do kẻ tấn công thực hiện để phá hoại, hoặc do các nhà thiết kế hệ thống thực hiện với mục đích đánh giá tính bảo mật.
Có nhiều loại hình tấn công thám mã, được phân loại dựa trên kiến thức và khả năng của kẻ tấn công trong việc truy cập thông tin bí mật Các kịch bản tấn công bao gồm tấn công bản mã, nơi kẻ tấn công chỉ có bản mã; tấn công biết bản rõ, khi kẻ tấn công biết hoặc đoán được một phần bản rõ; và tấn công chọn lựa bản rõ, trong đó kẻ tấn công có khả năng chọn ngẫu nhiên các bản rõ để mã hóa.
Trong lĩnh vực thám mã, có hai phương pháp chính: thám mã thuần túy, tập trung vào các điểm yếu của thuật toán mật mã, và thám mã dựa trên sự thi hành, hay còn gọi là các tấn công kênh bên Nếu kẻ tấn công nắm được thời gian mà thuật toán cần để mã hóa một bản rõ, họ có thể áp dụng phương pháp tấn công thời gian để giải mã Bên cạnh đó, việc phân tích các mẫu và độ dài của thông điệp cũng giúp kẻ tấn công thu thập thông tin quan trọng, được gọi là thám mã lưu thông.
Hệ thống mật mã sử dụng khóa từ mật khẩu có nguy cơ bị tấn công bằng phương pháp brute force do kích thước và tính ngẫu nhiên của mật khẩu không đủ lớn Đây là một điểm yếu phổ biến trong các hệ thống bảo mật Đối với các ứng dụng mạng, giao thức thỏa thuận khóa chứng thực mật khẩu có thể giúp giảm thiểu một số hạn chế của mật khẩu Trong khi đó, các ứng dụng độc lập nên áp dụng các biện pháp an toàn để lưu trữ dữ liệu chứa mật khẩu và cụm từ kiểm soát truy cập.
Thám mã tuyến tính và thám mã vi phân là hai phương pháp chính trong mật mã hóa khóa đối xứng Những phương pháp này dựa vào các vấn đề toán học phức tạp, tương tự như độ khó NP trong thuật toán khóa bất đối xứng Đặc biệt, việc phân tích thừa số nguyên tố có thể trở thành công cụ hữu ích trong việc thám mã.
Có 6 phương pháp chung để phân tích tấn công (Chỉ có bản mã; Biết bản rõ; Lựa chọn bản rõ; Mô phỏng lựa chọn bản rõ; Lựa chọn bản mã; Lựa chọn khóa) Mỗi phương pháp trong số chúng giả sử rằng kẻ thám mã hoàn toàn có hiểu biết về thuật toán mã hoá được sử dụng.
Giới thiệu chung về hệ mật mã Elgamal
Hệ elgamal là 1 hệ mật mã công khai.
Hệ elgamal dựa trên bài toán logarit rời rạc Tính an toàn của nó tùy thuộc vào độ phức tạp của bài toán logarit.
Hệ Elgamal là 1 biến thể của sơ đồ phân phối khóa Diffie – Hellman, được Tiến sĩ Taher Elgamal đưa ra năm 1985.
So với RSA, hệ Elgamal không có nhiều rắc rối về vấn đề bản quyền sử dụng.
Ưu và nhược điểm của hệ mật mã Elgamal
Độ phức tạp của bài toán logirit lớn nên độ an toàn cao.
Bản mã phụ thuộc vào bản rõ x và giá trị ngẫu nhiên nên từ 1 bản tõ ta có nhiều bản mã khác nhau.
Tốc độ chậm (do phải xử lý số nguyên lớn).
Dung lượng bộ nhớ dành cho việc lưu trữ khóa cũng lớn.
Tính an toàn của hệ mật mã ElGamal
Giả sử C có được bản mã, để giải mã được thì C phải đối mặt với bài toán sau:
C cần xác định số a sao cho h ≡ g^a (mod p) để áp dụng phương pháp giải mã tương tự như B; hoặc C cũng có thể tìm số b sao cho y1 ≡ g^b (mod p) nhằm tính trực tiếp hb và từ đó xác định được r.
Cả hai phương pháp này đều yêu cầu C giải quyết bài toán logarithm rời rạc, một bài toán phức tạp, vì vậy hệ mã ElGamal được coi là tương đối an toàn.
KẾT QUẢ NGHIÊN CỨU
Giới thiệu
- Tên đề tài nghiên cứu: Xây dựng chương trình mã hóa và giải mã Elgamal.
- Các bước thực hiện triển khai đề tài bao gồm:
Nghiên cứu nội dung các thuật toán.
Thiết kế và cài đặt chương trình demo thuật toán
- Hình thức sản phẩm: Sản phẩm ứng dụng.
- Kết quả đạt được : Cài đặt thành công chương trình xây dựng mã hóa và giải mã Elgamal.
Nội dung thuật toán
2.2.1 Thuật toán Euclid mở rộng
- Bổ đề bezout: cho 2 số nguyên r0, r1, tồn tại 2 số nguyên khác s và t sao cho : s.r0+t.r1 = gcd(r0,r1) khi đó t = r1 -1 theo mod r0.
- Thuật toán Euclid mở rộng tìm phần tử nghịch đỏa cho 2 số nguyên r0 , r1 Tìm r -1 theo mod r0.
Sử dụng thuật toán Euclid mở rộng để tìm các số nguyên s và t sao cho s.r0 + t.r1 = gcd(r0, r1) = d Nếu d > 1, thì r -1 mod r0 tồn tại; ngược lại, nếu d = 1, cũng tồn tại Để tính toán s và t, áp dụng công thức sau: s0 = 1, t0 = 0, s1 = 0, t1 = 1, và si = s(i – 2) – q(i-1)*s(i-1), ti = t(i-2) – q(i-1)*t(i-1).
Trong đó ta có : với i = 0,1,2,3… ri = qi+1 * ri+1+ri+2
Thuật toán dừng lại khi phần dư ri+2 = 0.
2.2.2.Thuật toán bình phương và nhân
- Là thuật toán nhằm giúp tính nhanh lũy thừa tự nhiên của một số thực hoặc nguyên
- Mô tả bải toán tính lũy thừa
Phép nâng lên lũy thừa tự nhiên bậc n của số x ( x được gọi là cơ số) được định nghĩa từ hệ thức sau. x n = x*x*x*….*xn với n lớn số phép nhân
- Công thức đệ quy: để tính lũy thừa tự nhiên bậc n của x ta thực hiện như sau:
2,với n > 0 ta có công thức bình phương và nhân
Như vậy phép tính x n được quy về 1 phép bình phương và nhân
Trong giải thuật đệ quy, để xác định tính chẵn lẻ của n, ta liên tục chia n cho 2: nếu dư 0 thì n là chẵn, nếu dư 1 thì n là lẻ Quá trình này tiếp tục cho đến khi n trở thành 0, thực chất là tìm các bit của n và chuyển đổi n ra số nhị phân Để tính x^n mod m, ta biểu diễn n dưới dạng nhị phân với n = bkbk-1… , trong đó bi thuộc {0,1} và 0 Open Project.
B2: Chọn nơi lưu Project và nhấn vào Open Project
B3: Nhấn Run Project hoắc F6 để chạy chương trình
B4: Thêm vào văn bản hoặc tệp văn bản, thực hiện chạy chương trình và kiểm tra kết quả:
2.5.2 Nguyễn Tử Nghĩa – Ngôn ngữ C#
B1: Ở giao diện làm việc của Visual Studio, chọn open project or solution rồi chọn project cần chạy.
B2: Chọn project, chọn file sln và nhấn Open
B3: Nhấn “Attach ” để chạy chương trình
B4: Thêm vào văn bản hoặc tệp văn bản, thực hiện chạy chương trình và kiểm tra kết quả:
2.5.3 Nguyễn Thiện Đức Anh -Ngôn ngữ python
B1: Ở giao diện làm việc của Visual Studio code, chọn Project, chọn Open, chọn Project cần chọn.
B2: Di chuyển đến nơi lưu file và chọn vào file Nhấn Mở.
Vào env cài đặt riêng cho Project
+ Nhập: myenv\\Scripts\\activate pip install PyQt5 pip install python-docx pip install pyperclip
+ python py python \NguyenThienDucAnh_2020605927.py
B4: Thêm vào văn bản hoặc tệp văn bản, thực hiện chạy chương trình và kiểm tra kết quả:
2.5.4 Nguyễn Tiến Đạt - Ngôn ngữ C++
B1: Ở giao diện làm việc của Dev C++, trên thanh công cụ, chọn File, chọn
B2: Di chuyển đến nơi lưu file và chọn vào file Nhấn mở.
B3: Trên thanh công cụ, Nhấn Execute, Nhấn Compile and Run (F11)
B4: Nhập vào dữ liệu và kiểm tra kết quả:
KIẾN THỨC LĨNH HỘI VÀ BÀI HỌC KINH NGHIỆM
Nội dung đã thực hiện
Các kiến thức đã học được thông qua thực hiện bài tập lớn:
Thuật toán mã hóa và giải mã Elgamal
Thuật toán hình thành tham số và khóa
Cơ sở lý thuyết xây dựng hệ mật mã Elgamal
Tính đúng đắn của hệ mật mã Elgamal
Ưu và nhược điểm của hệ mật mã Elgamal
Độ an toàn của hệ mật mã Elgamal
Các kỹ năng đã học được thông qua thực hiện bài tập lớn:
Đánh giá được vai trò của bảo mật thông tin, các cơ chế, chính sách bảo mật, các kiểu tấn công và phương pháp phòng chống.
Phân tích được các kỹ thuật sử dụng để mã hóa và xác thực thông tin.
Nắm vững và áp dụng các thuật toán trong hệ mã hóa Elgamal, bao gồm thuật toán sinh khóa, mã hóa và giải mã, cùng với các thuật toán hỗ trợ như nghịch đảo của phép nhân modulo và thuật toán bình phương nhân trong modulo, sẽ giúp giải quyết hiệu quả các bài toán thực tiễn liên quan đến mã hóa và giải mã thông tin.
Tổ chức được hoạt động nhóm.
Áp dụng được các phương pháp thuyết trình hiệu quả trong công việc.
Những bài học kinh nghiệm được rút ra sau khi kết thúc bài tập lớn:
Các tài liệu chính thống về hệ mật mã Elgamal chủ yếu bằng tiếng Anh, do đó, các thành viên trong nhóm cần nâng cao khả năng ngoại ngữ để có thể hiểu và nghiên cứu các tài liệu liên quan đến hệ mã hóa Elgamal, cũng như các công cụ và ngôn ngữ lập trình liên quan.
Trong quá trình phát triển chương trình, nhóm đã gặp nhiều khó khăn trong việc mã hóa và giải mã dữ liệu qua file, đặc biệt là khi mở file docx để lấy bản rõ Qua trải nghiệm này, các thành viên đã rút ra bài học quan trọng về việc xử lý file và nhận thức rõ hơn về trách nhiệm đối với dữ liệu người dùng Người dùng có thể nhập bản rõ vào phần mềm bằng nhiều phương thức khác nhau, do đó cần có giải pháp hiệu quả để đảm bảo dữ liệu hoạt động mượt mà và trơn tru.
Hướng phát triển
Tính khả thi của chủ đề nghiên cứu
Nhóm nghiên cứu của chúng em đã chọn chủ đề phù hợp với thời gian hoàn thiện bài tập lớn, với các thuật toán và mã hóa đã được thử nghiệm bởi các nhà nghiên cứu bảo mật Trong quá trình nghiên cứu, nhóm nhận thấy cần phải hiểu rõ về hệ mật mã Elgamal và có kỹ năng lập trình ở mức khá để hoàn thiện đề tài nghiên cứu.
Những thuận lợi, khó khăn trong quá trình nghiên cứu
Với kiến thức lập trình đã được tích lũy từ năm học trước, việc phân chia ngôn ngữ lập trình cho các thành viên trong nhóm trở nên dễ dàng Hơn nữa, việc chuyển đổi giữa các ngôn ngữ lập trình khác nhau cũng diễn ra suôn sẻ mà không gặp nhiều khó khăn.
Có thể đọc hiểu được tài liệu tiếng anh nên có thể dễ dàng tiếp cận các nguồn tài liệu chính thống
Các thuật toán hiện có có thể được áp dụng dễ dàng với một số kỹ thuật xử lý về Form và File, giúp hoàn thành bài toán của đề tài một cách hiệu quả.
Các thành viên trong nhóm rất hòa đồng và cởi mở, thường xuyên tương tác sôi nổi với nhau, điều này giúp cho công việc chung của nhóm diễn ra một cách suôn sẻ.
Công đoạn thiết giao diện phần mềm mã hóa chưa được bắt mắt do chưa có nhiều kinh nghiệm trong kỹ thuật xử lý giao diện.
Hướng phát triển và mở rộng của đề tài
Hệ mật mã Elgamal mang lại nhiều lợi ích trong việc bảo mật thông tin, tuy nhiên sản phẩm của nhóm chỉ có khả năng mã hóa một thông điệp duy nhất.
Nhóm đã đề xuất phát triển chức năng nhập file Excel, cho phép người dùng nhập nhiều bản rõ và mã hóa đồng thời Điều này sẽ mang lại sự thuận tiện trong nhiều tình huống thực tế, khắc phục bất tiện khi chỉ có thể gửi một thông điệp từ một người đến một người.
Triển vọng phát triển máy tính lượng tử đặt ra yêu cầu cải tiến đáng kể cho mã hóa Elgamal trong tương lai Nhóm nghiên cứu nên tìm hiểu và mở rộng kiến thức về các vấn đề liên quan đến mã hóa Elgamal khi máy tính lượng tử trở nên phổ biến Điều này sẽ giúp họ có cái nhìn sâu sắc và tổng quan hơn về mã hóa cũng như ngành mật mã nói chung.