1. Trang chủ
  2. » Thể loại khác

bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal

61 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình Mã Hóa Và Giải Mã Elgammal
Tác giả Vũ Tuấn Dũng, Lê Đình Dương, Nguyễn Thái Dương, Nguyễn Văn Dương
Người hướng dẫn Ths. Trần Phương Nhung
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành An Toàn Và Bảo Mật Thông Tin
Thể loại Bài Tập Lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 61
Dung lượng 6,48 MB

Cấu trúc

  • 1.2 Một số thuật toán trên Zn (13)
  • Chương 2: NỘI DUNG THUẬT TOÁN (25)
    • 2.5 Ưu nhược điểm (0)
    • 2.6 Hướng phát triển (31)
  • Chương 3: THIẾT KẾ XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG (31)
  • KẾT LUẬN (60)

Nội dung

Như vậy, để tìm các số đối của các số nguyên ở cột bên trái bảng cộng bằng cách quét lần lượt các phần từ trong dòng để tìm phần tử 0 và khi đó phần tử ở dòng đầu tiên ứng với cột này là

Một số thuật toán trên Zn

1.2.1 Tìm s ngh ch đ o ố ị ả Định nghĩa: Phần tử nghịch đảo

+ Cho a e Zn + Phần tử nghịch đảo (ngược theo phép nhân) của a mod n là một số nguyên xe Z, sao cho: ax = 1 mod n)

+ Nếu x tồn tại thì nó là duy nhất, a được gọi là khả nghịch Phần tử nghịch đảo của a được ký hiệu là a-.

Thuật toán (Tính các nghịch đảo trong Z ): n

RA: a mod n (nếu tồn tại) -1

(1) Dùng thuật toán Euclide mở rộng để tìm các số nguyên x và y sao cho ax + ny = d trong đó d = (a, n).

(2) Nếu d > 1 thì a mod n không tồn tại Ngược lại return(x) -1

Bảng 1.4 Minh họa cho ví dụ tính phần tử nghịch đảo

Tính giá trị biểu thức z = A mod n k

₋ Thuật toán “bình phương và nhân”

₋ Biểu diễn k dạng nhị phân bibi - 1bi - 2…b b1 0, bi ∈ {0, 1}

Hình 1.2 Các bước của thuật toán bình phương và nhân

Ví dụ: Bảng sau chỉ ra các bước tính toán a mod n, với a = 7, k = 560 = k

Bảng 1.5 Các bước tính của thuật toán bình phương và nhân

Giá trị f cuối cùng = 1, là đáp số cần tìm

Như chúng ta đã biết số nguyên tố là các số nguyên dương chỉ có ước số là 1 và chính nó Chúng không thể được viết dưới dạng tích của các số khác I là số nguyên tố, nhưng không quan tâm đến nó Xét các số nhỏ hơn 10 ta có:

2, 3, 5, 7 là số nguyên tố, vì chúng không có ước số khác 1 và chính nó; 4, 6,

8, 9, 10 không phải là số nguyên tổ Có thể nói 2 là số chẵn duy nhất là số nguyên tố Các số nguyên tố là trung tâm của lý thuyết số Số các số nguyên tố là vô hạn.

Ví dụ Sau đây là danh sách các số nguyên tố nhỏ hơn 200:

● Phân tích thừa số nguyên tố

₋ Một trong những bài toán cơ bản của số học là phân tích ra thừa số nguyên tố số a, tức là viết nó dưới dạng tích của các số nguyên tố Lưu ý rằng phân tích là bài toán khó hơn rất nhiều so với bài toán nhân các số để nhận được tích.

₋ Ta có kết luận, mọi số nguyên dương đều có phân tích duy nhất thành tích các lũy thừa của các số nguyên tố;

₋ Thông thường để tìm phân tích trên, ta phải kiểm tra tính chia hết cho các số nguyên tố từ nhỏ đến lớn và thực hiện phép chia liên tiếp cho các số nguyên tố, rồi gộp thành lũy thừa của các số nguyên tố

● Số nguyên tố cùng nhau và GCD

₋ Hai số nguyên dương a và b không có ước chung nào ngoài 1, được gọi là nguyên tố cùng nhau.

₋ Ví dụ: 8 và 15 là nguyên tố cùng nhau, vì ước của 8 là 1, 2, 4, 8, còn ước của 15 là I, 3, 5, 15 Chỉ có 1 là ước chung của 8 và 15.

₋ Ngược lại có thể xác định ước chung lớn nhất bằng cách trong các phân tích ra thừa số của chúng, tìm các thừa số nguyên tố chung và lấy bậc lũy thừa nhỏ nhất trong hai phân tích của hai số đó.

Ví dụ Ta có phân tích: 300 = 21 * 31 * 52 và 18 = 21 * 32

● Định lý Fermat (định lý Fermat nhỏ) a p - 1 mod p = 1 trong đó: p là số nguyên tố, a là số nguyên bất kỳ khác bội của p; GCD(a, p) = 1

₋ Hay với mọi số nguyên tốp và số nguyễn a không là bội của p, ta luôn có: a p = a mod p

₋ Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên dương nhỏ hơn

Ví dụ Vi 5 và 7 là các số nguyên tố 2 và 3 không là bội tương ứng của 7 và 5, nên theo định lý Fermat ta có:

₋ Kết quả trên được dùng trong khoa công khai Nó cũng được sử dụng để kiểm tra tính nguyên tố của một số nguyên p nào đó, bằng cách lấy ngẫu nhiên các số a và kiểm tra xem có tính chất nêu trên không, kết luận là p nguyên tố cảng thuyết phục nếu phép thử trên dùng với nhiều lần chọn ngẫu nhiên các số a

₋ Cho n là một số nguyên dương Khi thực hiện phép tính đồng dư n của mọi số nguyên khác ta nhận được tập đầy đủ các phần dư có thể có là: 0, 1, 2…, n - 1

₋ Từ tập trên ta tìm tập rút gọn bao gồm các số nguyên tố cùng nhau với n và quan tâm đến số lượng các phần tử như vậy đối với số nguyên dương n cho trước.

+ Tập đầy đủ các phần dư là {0,1,2,3,4,5,6,7,8,9}

+ Tập rút gọn các phần dư nguyên tố với 10 là {1,3,7,9}

+ Số các phần tử của tập rút gọn trên là giá trị của hàm Euler (n) Vậy φ φ (10) = 4

₋ Muốn tính (n), việc đếm số các số nguyên tố cùng nhau với n và nhỏ hơnφ n được loại bỏ vì đây là bài toán tổn nhiều công sức.

₋ Nói chung có thể tính hàm Euler của một số dựa trên biểu thức phân tích ra thừa số của số đó

+ Dễ dàng thấy, nếu p là số nguyên tố: (p) = p - 1φ

+ Nếu p và q là hai số nguyên tố khác nhau, thì có thể chứng minh: (p.q)φ

+ Nếu p là số nguyên tố, thì: (p ) = p - pφ n n n - 1

+ Nếu s và t là hai số nguyên tố cùng nhau, thì (s.t) = (s) (t) φ φ φ

₋ Định lý Euler là tổng quát hóa của định lý Fermat: a 𝛟 (n) mod n = 1 với mọi cặp số nguyên dương nguyên tố cùng nhau a và n; gcd(a, n) = 1

● Kiểm tra tính nguyên tố

 Trong một số thuật toán mã hóa ta cần chọn một hoặc một số nguyên tố rất lớn một cách ngẫu nhiên Như vậy, ta cần phải giải quyết bài toán xác định liệu xem một số lớn có phải là số nguyên tố hay không Như vậy, việc áp dụng thuật toán kiểm tra một số nhỏ là nguyên tố hay không để kiểm tra một số rất lớn là không phù hợp

 Để kiểm tra một số lớn có phải là nguyên tố hay không ta dựa vào hai tính chất của số nguyên tố: oTính chất thứ nhất: Nếu p là số nguyên tố và a là số nguyên dương nhỏ hơn p thì: a mod p = 1 khi và chỉ khi a mod p = 1 hoặc a mod p = -1 mod 2 p = p–1 Theo quy tắc của module số học (a mod p)(a mod p) = a mod p 2

+ Nếu a mod p = 1 hoặc a mod p = -1 thì a mod p = 1 2

+ Ngược lại: Nếu a mod p = 1 thì (a mod p) = 1 Nó chỉ đúng với a 2 2 mod p = 1 hoặc a mod p = -1 oTính chất thứ hai: Cho p là số nguyên tố lớn hơn 2 Sau đó ta có thể viết p

– 1 = 2 k q với k > 0 và q là số lẻ Cho a là số nguyên bất kỳ trong dãy (1 < a < p–1) thì một trong hai điều kiện sau là đúng:

1 a là phù hợp với 1 modulo p đó là a mod p =1 hoặc a ≡ 1(mod p) q q q

2 Một trong những số a , a , a , a q 2q 4q 2(k-1)q thích hợp với -1 mod p, tức là có 1 số j trong dải (1 ≤ j ≤ k) Như vậy a 2(j-1)q mod p = - 1 mod p = p - 1. Tương đương với a 2(j-1)q ≡ -1(mod p)

 Thuật toán Miller-Rabin thường được sử dụng để kiểm tra một số lớn là số nguyên tố Trước khi giải thích thuật toán, ta cần một số kiến thức căn bản Bất kì một số dương lẻ nào n ≥ 3 có thể được biểu diễn như sau: n – 1 = 2k q với k > 0, q là số lẻ.

 Để thấy điều này, lưu ý rằng (n – 1) là 1 số nguyên Sau đó chia (n– 1) cho 2 đến khi kết quả là số lẻ q, với tổng số lần chia là k Nếu n được biểu diễn dưới dạng nhị phân số, thì kết quả đạt được bằng cách dịch chuyển số sang bên phải cho đến khi số bên phải là số 1, với tổng số k lần dịch chuyển.

 Chi tiết về thuật toán: Nếu n là số nguyên tố thì phần tử đầu tiên trong danh sách dư lượng hoặc phần dư, modulo n bằng một hoặc một số phần tử trong danh sách bằng (n–1), nếu không n là hỗn hợp (như là, không phải là số nguyên tố) Mặt khác, nếu điều kiện được đáp ứng, điều đó không nhất thiết có nghĩa là n là số nguyên tố.

+ Ta tính 21023 mod 2047 = 1, lên 2047 thỏa mãn điều kiện nhưng phải là số nguyên tố.

+ Ta có thể sử dụng thuộc tính trước để tạo ra một phép thử cho tính nguyên tố Cách thức kiểm tra: Lấy 1 số nguyên tố n là đầu vào và trả kết quả “hỗn hợp” nếu n chắc chắn không phải số nguyên tố và kết quả trả về là “chưa đi đến kết quả” nếu n có thể hoặc không thể là 1 số nguyên tố.

+ Các bước để kiểm tra như sau:

1 Tìm số nguyên k, q với k > 0, q là số lẻ Sao cho (n – 1) = 2 k

2 Lựa chọn 1 số nguyên ngẫu nhiên a: 1< a < n - 1

3 Nếu a mod n thì trả về kết quả là “chưa đi đến kết quả” q

- Nếu a (2^j)q mod n = n – 1 thì trả về “chưa đi đến kết quả”.

- Ngược lại trả về “hỗn hợp”.

Hình 1.3 Các bước của thuật toán Miller-Rabin

+ Ta tính 10 mod 29 = 17 (a mod n): Kết quả này không phải 1 hay 28 7 q + Vậy nên ta tiếp tục kiểm tra.

+ Tính toán tiếp theo ta thấy (10 mod 29 = 28 và kiểm tra trả về là “chưa 7 ) 2 đi đến kết quả” Tức là 29 có thể là số nguyên tố.

+ Ta thử với a = 2 (a mod n) = 2 mod 29 = 12; [(a mod n] = 2 mod 29 q 7 q ) 2 14

= 28 Lần này vẫn trả về là chưa đi đến kết quả.

NỘI DUNG THUẬT TOÁN

Hướng phát triển

Thuật toán mã hóa ElGamal có thể ứng dụng để phát triển trong các ứng dụng nhắn tin, hoặc tạo chữ ký số nhằm tăng cường khả năng bảo mật, ngăn chặn rò rỉ thông tin và xác định trách nhiệm của người dùng.

THIẾT KẾ XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG

3.1 Thiết kế giao diện và mô tả kịch bản

Hình 3.1 Giao diện chương trình mã hóa và giải mã Elgammal

Bước 1: Bấm nút ‘Sinh khóa tự động’, chương trình sẽ tạo ra ngẫu nhiên khóa công khai và khóa bí mật cho người dùng.

Hình 3.2 Minh họa quá trình sinh khóa

Bước 1: Trong phần ‘Mã hóa, người dùng nhập bản rõ muốn mã hóa vào ô

‘Bản rõ’, sau đó nhấn nút ‘ Mã hóa ‘ , hệ thống sẽ mã hóa và hiển thị kết quả trong ô ‘Bản mã’.

Hình 3.3 Minh họa quá trình mã hóa

Bước 2: Người dùng nhấn nút ‘Chuyển’ để chuyển bản mã sang ô ‘Bản mã’ trong phần ‘Giải mã’.

Hình 3.4 Minh họa quá trình chuyển bản mã sang bản rõ

Bước 1 : Người dùng nhấn nút ‘Giải mã’ để giải mã Bản rõ sẽ được hệ thống hiển thị trong ô ‘Bản rõ’ của phần ‘Giải mã’.

Hình 3.5 Minh họa quá trình giải mã

Bước 2: Người dùng nhấn nút ‘Lưu file’, hệ thống hiển thị cửa sổ lưu file, người dùng nhập tên file và dạng file là txt hoặc docx theo ý muốn rồi nhấn

‘Save’ Hệ thống hiển thị thông báo lưu thành công

Hình 3.6 Minh họa quá trình lưu file

Trường hợp khác: Nếu người dùng có sẵn file bản rõ hoặc bản mã

Bước 1: Người dùng nhấn nút ‘Chọn file’ Hệ thống hiển thị cửa sổ chọn file

Hình 3.7 Minh họa quá trình mở file

Người dùng nhấn vào file muốn mở rồi nhấn nút ‘Open’ Hệ thống sẽ hiển thị nội dung file đã chọn vào ô ‘Bản mã’ hoặc ‘Bản rõ’ tùy theo vị trí nút ‘Chọn file’ Sau đó người dùng có thể chọn mã hóa hoặc giải mã theo ý muốn sử dụng

Hình 3.8 Minh họa quá trình mã hóa và giải mã sau khi mở file

3.2.1 Đặc tả code JavaScript (Nguyễn Thái Dương)

3.2.1.1 LÝ THUYẾT a, Tìm ước chung lớn nhất

- Đặc tả : Hàm tìm ước chung lớn nhất được truyền vào 2 tham số a và b để tìm ước chung lớn nhất của chúng bằng giải thuật đệ quy.

Bước 1: Kiểm tra điều kiện của tham số b, nếu b = 0 thì ước chung lớn nhất của a và b là a vì a chia hết cho chính nó và b cũng chia được cho a Nếu b khác 0 chuyển sang bước 2.

Bước 2: Nếu b khác 0, hàm sẽ gọi lại chính nó với hai tham số mới: b và a % b (phần dư của phép chia a cho b) Hàm sẽ gọi lại chính nó đến khi b = 0 và tìm được ước chung lớn nhất của 2 số. b, Thuật toán bình phương và nhân

- Đặc tả: Thuật toán bình phương và nhân tìm kết quả phép tính α mod p a

Bước 1: Tạo hàm chuyển đổi số hệ thập phân sang nhị phân để chuyển số a từ hệ thập phân sang nhị phân Truyền tham số decimal vào hàm,nếu số đó bằng 0 thì ở hệ nhị phân cũng bằng 0

Bước 2: Tiếp theo ta khai báo chuỗi rỗng binary và sự dụng vòng lặp while, nếu decimal > 0, cộng dồn chuỗi binary ban đầu với phần dư của decimal khi chia cho 2 để được bit 0 hoặc 1 Sau đó làm tròn decimal sau khi chia cho 2 vì sau khi chia có thể nó là số lẻ Vòng lặp sẽ kết thúc đến khi decimal 1 ta vào vòng lặp while.

Bước 3: Tạo biến q là kết quả của phép chia a / b, r2 là kết quả của phép chia lấy dư a % b Khi này ta tính được ti = t0 – q * t1 và gán lại các giá trị t0 = t1 ; t1 = ti ; a = b ; b = r2 Vòng lặp sẽ kết thúc khi b

Ngày đăng: 25/06/2024, 16:24

HÌNH ẢNH LIÊN QUAN

Bảng 1.3. Minh họa thương số và phần dư khi thực hiện phép chia a cho n - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Bảng 1.3. Minh họa thương số và phần dư khi thực hiện phép chia a cho n (Trang 8)
Bảng 1.2 sau minh họa phép toán số học cộng, nhân, số đối và số nghịch đảo  trên modulo 8 - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Bảng 1.2 sau minh họa phép toán số học cộng, nhân, số đối và số nghịch đảo trên modulo 8 (Trang 9)
Hình 1.1. Thuật toán euclid mở rộng - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 1.1. Thuật toán euclid mở rộng (Trang 12)
Bảng 1.3. Minh họa thuật toán Euclid mở rộng - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Bảng 1.3. Minh họa thuật toán Euclid mở rộng (Trang 12)
Hình 1.2. Các bước của thuật toán bình phương và nhân - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 1.2. Các bước của thuật toán bình phương và nhân (Trang 16)
Bảng 1.4. Minh họa cho ví dụ tính phần tử nghịch đảo - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Bảng 1.4. Minh họa cho ví dụ tính phần tử nghịch đảo (Trang 16)
Hình 3.1. Giao diện chương trình mã hóa và giải mã Elgammal - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.1. Giao diện chương trình mã hóa và giải mã Elgammal (Trang 32)
Hình 3.2. Minh họa quá trình sinh khóa - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.2. Minh họa quá trình sinh khóa (Trang 32)
Hình 3.3. Minh họa quá trình mã hóa - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.3. Minh họa quá trình mã hóa (Trang 33)
Hình 3.4. Minh họa quá trình chuyển bản mã sang bản rõ - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.4. Minh họa quá trình chuyển bản mã sang bản rõ (Trang 34)
Hình 3.6. Minh họa quá trình lưu file - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.6. Minh họa quá trình lưu file (Trang 35)
Hình 3.7. Minh họa quá trình mở file - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.7. Minh họa quá trình mở file (Trang 36)
Hình 3.8. Minh họa quá trình mã hóa và giải mã sau khi mở file - bài tập lớn môn an toàn và bảo mật thông tin xây dựng chương trình mã hóa và giải mã elgammal
Hình 3.8. Minh họa quá trình mã hóa và giải mã sau khi mở file (Trang 37)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w