1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo giữa kỳ lý thuyết mật mã cơ sở toán học của lý thuyết mật mã

22 5 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 đề Cơ sở toán học của lý thuyết mật mã
Tác giả Vũ Xuân Thịnh, Phạm Bá Độ, Trương Quang Huy, Nguyễn Chí Cường
Người hướng dẫn Nguyễn Trọng Tuấn
Trường học Đại Học Bách Khoa Hà Nội, Trường Điện – Điện Tử
Chuyên ngành Lý Thuyết Mật Mã
Thể loại Báo cáo giữa kỳ
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 2,38 MB

Nội dung

MÔ PHỎNG HỆ THỐNG TRUYỀN THÔNG 3.1 Nguyên lý và quy trình truyền thông...17 1.. Nguyên lý của hệ thống mô phỏng truyền thông có bảo mật...17 2... Cơ sở toán học của lý thuyết mật mãI.1 T

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG ĐIỆN – ĐIỆN TỬ

BÁO CÁO GIỮA KỲ

Vũ Xuân Thịnh - 20203596 Phạm Bá Độ - 20203362 Trương Quang Huy - Nguyễn Chí Cường -

Trang 2

Hà Nội, 29/11/2023

MỤC LỤC

BẢNG PHÂN CÔNG VÀ TỰ CHẤM ĐIỂM

………4

1 CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ 1.1 TỔNG QUAN LÝ THUYẾT MẬT MÃ 5

1.1.1 SƠ LƯỢC LỊCH SỬ KHOA HỌC MẬT MÃ 5

1.1.2 CÁC LOẠI MẬT MÃ 5

1.2 CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ 5

1.2.1 Tính chia hết của các số nguyên: 5

1.2.2 Ước chung lớn nhất và bội chung nhỏ nhất 5

1.2.3 Thuật toán Euclide 5

a) Tìm Ước Chung Lớn Nhất 5

b) Thuật toán Euclide mở rộng 5

1.2.4 Đồng dư và phương trình đồng dư tuyến tính 5

a) Đồng dư 5

b) Phương trình đồng dư tuyến tính 5

1.2.5 Thặng dư thu gọn và phần tử nguyên thủy 5

a) Thặng dư thu gọn 5

b) Phần tử nguyên thủy 6

1.2.6 Xác Suất Thống Kê 6

2 LÝ THUYẾT HỆ MẬT HIỆN ĐẠI 2.1 Data Encryption Standard (DES) 7

2.1.1 Giới thiệu 7

2.2.2 Cách hoạt động (Trình bày bằng tiếng anh để đảm bảo thuật ngữ không bị nhầm lẫn) 7

a) Overview 7

b) Detail for each part 8

2.2 Advanced encryption standard 13

2.2.1 Xây dựng bảng S-box 13

a Bảng S – box thuận 13

b Bảng S-box nghịch đảo 13

2.2.2 Giải thuật sinh khóa phụ 14

2.2.3 Quá trình mã hóa 14

Trang 3

a Sơ đồ tổng quát 14

b Hàm AddRoundKey 15

c Hàm SubBytes 15

d Hàm ShiftRow 15

e Hàm MixColumns 16

3 MÔ PHỎNG HỆ THỐNG TRUYỀN THÔNG 3.1 Nguyên lý và quy trình truyền thông 17

1 Nguyên lý của hệ thống mô phỏng truyền thông có bảo mật 17

2 Quy trình và thực hiện 17

2.1 Mã hóa và Giải mã File ảnh/Text với DES, AES, RC4 17

2.2 Mô phỏng hệ thống truyền thông 18

A) Mục tiêu 18

B) Thực hiện 18

3.2 Kiểm thử chương trình mô phỏng 20

1 Các testcase của nhóm 20

2 Kết quả kiểm thử 20

3.3 ĐÁNH GIÁ VÀ NHẬN XÉT 21

Trang 4

Bảng phân công và tự chấm điểm

thành viên mỗi tuần

- Chỉnh sửa báo cáo giữa kì

- Làm hệ mật cổ điển: Ceasar, Pad

Hoàn thành

- Làm slides giới thiệu thành viênnhóm

Hoàn thành

Trang 5

Phần 1 Cơ sở toán học của lý thuyết mật mã

I.1 TỔNG QUAN LÝ THUYẾT MẬT MÃ

I.1.1 SƠ LƯỢC LỊCH SỬ KHOA HỌC MẬT MÃ

Người Ai Cập cổ đại bắt đầu sử dụng mật mã hạn chế khoảng 4000 năm về trước Thuật ngữ “mật mã cryptography” dịch từ tiếng Hy Lạp có nghĩa là “chữ viết bí mật”

-Sự phát triển và ngày càng phổ biến của máy tính và hệ thống thông tin liên lạc trong những năm 1960

đã tạo ra nhu cầu bảo vệ thông tin dưới dạng số và cung cấp dịch vụ an ninh thông tin

Mật mã là một lĩnh vực quan trọng trong khoa học máy tính và an ninh thông tin, nó đóng vai trò quantrọng trong việc bảo vệ thông tin và dữ liệu khỏi việc truy cập trái phép

I.1.2 CÁC LOẠI MẬT MÃ

Mật mã học cổ điển: Đây là các hệ thống mật mã truyền thống trước khi công nghệ số hóa trở nên phổ

biến Ví dụ, mật mã Caesar sử dụng việc dịch chữ cái theo một khoảng cố định trong bảng chữ cái để mãhóa thông tin

Mật mã học hiện đại: Đối với mật mã học hiện đại, có nhiều hệ thống phức tạp hơn, bao gồm mật mã

đối xứng (AES, DES) và mật mã không đối xứng (RSA, ECC) Mật mã này sử dụng các thuật toán phứctạp để mã hóa và giải mã thông tin

Mật mã học thông tin: Mật mã học thông tin là một lĩnh vực mới nổi trong mật mã học, nó liên quan

đến việc sử dụng thông tin và lý thuyết thông tin để thiết kế các hệ thống mật mã mới.

I.2 CƠ SỞ TOÁN HỌC CỦA LÝ THUYẾT MẬT MÃ

Z là tập hợp các số nguyên: Z = { ,-2,-1,0,1,2, }, Z+ là tập hợp các số nguyên không âm, Z+={0,1,2, }

Tập hợp Z là đóng kín đối với các phép cộng, trừ và nhân, nhưng không đóng kín đối với phép chia

1.2.1 Tính chia hết của các số nguyên:

Cho a, b≠0 là các số nguyên. Ta nói a chia hết cho b nếu tồn tại 1 số c sao cho: a=b.c

Ký hiệu: b|a: a là bội số của b, b là ước số của a VD: 2|6.

Tính chất: Với a, b, c, d, e 𝜖 Z, ta có:

- Nếu a|b và b|c thì a|c

- Nếu a|b, thì ac|bc với mọi C

- Nếu c|a và c|b thì c|da+be với mọi d,e

- Nếu a|b và b≠0 thì |a| ≤ |b|

- Nếu a|b và b|a thì |a|=|b|

Trang 6

1.2.2 Ước chung lớn nhất và bội chung nhỏ nhất

UCLN: Cho hai số a, b 𝜖 Z\{0}, c 𝜖 Z được gọi là ước chung của a và b nếu c|a và c|b C được gọi là

UCLN, ký hiệu là gcd(a,b) nếu nó là số nguyên lớn nhất a, b chia hết

BCNN: Cho hai số a, b 𝜖 Z\{0}, c 𝜖 Z được gọi là bội chung của a và b nếu a|c và b|c C được gọi là

BCNN, ký hiệu là lcm(a,b) nếu nó là số nguyên nhỏ nhất chia hết a, b

1.2.3 Thuật toán Euclide

b) Thuật toán Euclide mở rộng

Thuật toán Euclide mở rộng dùng để tìm hai số x,y thỏa mãn phương trình sau: ax+by =gcd(a,b)

Input: hai số nguyên không âm a và b với a>= b

Output: d=gcd(a,b) và hai số x,y sao cho a.x +b.y =d

Thuật toán:

B1: Nếu b=0 thì đặt d←a, x ←1, y ←0 và cho ra (d,x,y)

B2: Đặt x2=1, x1=0, y2=0, y1=1

B3: Trong khi còn b>0, thực hiện:

B4: q ←a div b, r ← a mod b, x ←x2-q.x1, y ←y2-q.y1, a ←b, b ←r, x2 ←x1, x1 ←x, y2 ←y1 và y1

←y

B5: Đặt d ←a, x ←x2, y ←y2 và cho ra kết quả (d,x,y)

1.2.4 Đồng dư và phương trình đồng dư tuyến tính

a) Đồng dư

Hai số nguyên a và b là đồng dư với nhau theo môđun n, và viết a ≡ b (mod n), nếu (a-b) chia hết cho n.Hai số nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúng cho cùng một số dư nếu chia cho n

Mỗi lớp tương đương được đại diện bởi một số duy nhất trong tập hợp: Zn = {0, 1, 2, 3, , n -1} là số

dư chung khi chia các số trong lớp đó cho n

Ví dụ: với Z25 = {0, 1, 2, , 24

b) Phương trình đồng dư tuyến tính

Cho a ∈ Zn Một số nguyên x ∈ Zn được gọi là nghịch đảo của a theo mod n , nếu a.x ≡ 1 (mod n) Nếu có số x như vậy thì ta nói a là khả nghịch, và ký hiệu x là a^-1 mod n

Phép chia trong Zn được định nghĩa như sau: a: b (mod n) = a.b^-1 (mod n) Phép chia chỉ thực hiện được khi b là khả nghịch theo (mod n)

Phương trình đồng dư tuyến tính: là phương trình có dạng: a.x ≡ b(mod n) trong đó a, b, n là các số

nguyên, n > 0, x là ẩn số

Phương trình đó có nghiệm khi và chỉ khi d = gcd(a, n ) b, và khi đó nó có đúng nghiệm d theo (mod n)⏐

Trang 7

Định lý: Giả sử các số nguyên n1, n2,… , nk là từng cặp nguyên tố với nhau Khi đó, hệ phương trình

đồng dư tuyến tính sau có một nghiệm duy nhất theo (mod n)

Tập các thặng dư thu gọn theo mod n được định nghĩa là tập Zn* = {a ∈ Zn: gcd(a , n) = 1} , tức Zn* làtập con của Zn bao gồm tất cả các phần tử nguyên tố với n Nếu p là một số nguyên tố thì Z*p = {1,2, …, p – 1}

b) Phần tử nguyên thủy

Số các phần tử trong một nhóm là cấp 𝜑(n) của nhóm đó

Một phần tử g ∈ Zn* có cấp m , nếu m là số nguyên dương bé nhất sao cho g^m = 1 trong Zn*

Nhóm Z*n có 𝜑(n) , và nếu p là số nguyên tố thì nhóm Z*p có cấp p - 1 khi đó ∀b ∈ Z*p ∶ b^p-1 ≡ 1(mod p)

Nếu b có cấp p - 1, tức p - 1 là số mũ bé nhất thoả mãn công thức trên, thì các phần tử b, b^2,… , b^p-1 đều khác nhau và theo mod p, chúng lập thành Z*plà một nhóm cyclic và b là một phần tử sinh, hay

phần tử nguyên thuỷ của nhóm.

Các tính chất của phân tử nguyên thủy:

- Phương trình đồng dư bậc 2 là phương trình có dạng: 𝑥^2 ≡ a(mod n) trong đó n là một số nguyên dương, a là số nguyên với gcd(a, n) = 1,và x là ẩn số

- Nếu phương trình có nghiệm thì a là thặng dư bậc 2 (mod n)

- Nếu phương trình vô nghiệm thì a là bất thặng dư bậc 2 (mod n)

- Tập các số nguyên nguyên tố với n được phân hoạch thành hai tập con: tập Qn các thặng dư bậc hai mod n, và tập Qn các bất thặng dư mod n

- Tiêu chuẩn Euler: Số a là thặng dư bậc hai (mod p) nếu và chỉ nếu𝑎^((𝑝−1)/2)

Số pi được coi là xác suất của sự kiện sơ cấp si Tập con E ⊆ Ω được gọi là một sự kiện Xác suất của

sự kiện E được định nghĩa bởi p(E) = ∑s∈E p(s)

Trang 8

Cho Ak và B là hai sự kiện, với p(B)> 0, xác suất có điều kiện của Ak khi có B , p(Ak|B) được định nghĩa là:

Phần 2 Lý thuyết các hệ mật hiện đại

2.1 DATA ENCRYPTION STANDARD (DES)

2.2.2 Cách hoạt động (Trình bày bằng tiếng anh để đảm bảo thuật ngữ không bị nhầm lẫn)

a) Overview

DES is a block cipher, has two inputs: 

 Plaintext: 64 bits 

 Cipher key: 64 bits (Which will be droped to 56 bits) 

One output for equivalent stage: Cipher text/Plain text 

 

A DES cipher includes four parts: 

Initial Permutation: 

 Input: 64 bit plain text 

 Output: 64 bit of the plain text which has been permuted by the IP tables 

Round-key generator: 

 Input: key with 64 bits 

 Output: 16 round key, each round key  is a 48 bits key 

16 Rounds: 

 Input: 64 bit from Initial permutation for the first round, 64 bits output from previous round forthe next rounds 

Trang 9

 Output: 64 bits 

Final permutation 

 Input: 64 bits from the sixteenth round 

 Ouput: Cipher text with 64 bits which has been permuted by the FP table 

 

 

b) Detail for each part 

Initial permutation 

The Initial permutation table contains position of each bits from the plain text 

We need to map each old position of bit in the 64 bit plain text with it’s new position in the IP table 

   

Round key Generator 

We will generate 16 round keys 48 bits which will be used to XOR with 48 bits from the plain text in 16rounds 

 Step 1: the origin 64 bits cipher key will be permuted by PC-1 table (the parity-bit drop tablebelow), after that we have a 56 bit key, 8 bits are reduced: 

Trang 10

 Step 2: We divided 56 bit into two part with 28 bit: Left and Right 

 Step 3:  

Left round shift k* bits for the Left part, Right round shift k bits for the Right part 

 Combine two part into 56 bits key 

 Use D-box to convert 56 bits to 48 bits, this 48 bits will be outputed as the first roundkey 

         

 

 Step 4: Repeat the step 3, the 28 bits of left part and righr part are from the shifted part of step 3

=> 16 round will output 16 round key 48 bits

*k: k = 1 for round key 1,2,9,16, k = 2 for the left 

16 Rounds 

Trang 11

 Next figure is the general structure of a round, which has:  

 Input:  LI-1 and RI-1 from previous round or from the Initial permutation for the first round androunding keys from the Round-key Generator 

 Output: the next LI  and RI which go to the next round or the final permuatation box if it is thefinal round 

 Step 1: Divide M which is 64 bit from the initial permutatio step into two blocks: 32 bits left and

32 bits right, we call L1, R1 

 Step 2: DES function, have the general structure as below, where RI-1 is the 32 bits Right, KI is

the round key Ith from the Round key Generator 

 Step 1: R1 is maped in the D-box, resulting in 48 bit, below is the D-box: 

 

 Step 2: The 48 bit from the D-box are XOR with the round key KI 

Trang 12

 Step 3: Convert 48 bit to 32 bit using 8 S-boxes: The 48 bits are divided into eight 6-bitchunks, each chunk is fed into the equivalent S-box Result of each S-box is 4 bit, combineeight box, we will have the final result is 32 bit 

 Step 4: Use Straight D-box to permute 32 bit from S-boxes: 

 

 Step 3: 32 bit đầu ra của DES function XOR với 32 bit của 32 bit Left, sau đó dùng 32 bit đầu ralàm 32 bit Right cho Next Round, 32 bit Right ban đầu của đầu vào chuyển sang làm 32 bit Left chonext Round 

 Step 4: Repeat from the step 2 for 16 times, use the equivalent Round-key. 

 Step 5: After finisjh 16 round, we got 64 bits from the 16th round 

Trang 13

 Công thức tính các giá trị bảng S-box và bảng S- box tương ứng:

Trang 14

b Bảng S-box nghịch đảo.

 S-box nghịch đảo chỉ đơn giản là S-box chạy ngược Nó được tính bằng phép biến đổi affine nghịch đảo các giá trị đầu vào Phép biến đổi affine nghịch đảo được biểu diễn như sau:

2.2.2 Giải thuật sinh khóa phụ

Quá trình sinh khóa gồm 4 bước:

 Rotword: quay trái 8 bít

 SubBytes

 Rcon: tính giá trị Rcon(i) Trong đó :

Rcon(i) = x(i-1) mod (x8 + x4 + x3 + x + 1).

 ShiftRow

Trang 16

 Trong đó giá trị dịch shift (r, Nb) phụ thuộc vào số hàng r như sau:

Shift (1,4) = 1, shift (2,4) = 2, shift (3,4) = 3

 Hàng đầu tiên không bị dịch, ba hàng còn lại bị dịch tương ứng:

o Hàng thứ 1 giữ nguyên

o Hàng thứ 2 dịch vòng trái 1 lần

o Hàng thứ 3 dịch vòng trái 2 lần

o Hàng thứ 4 dịch vòng trái 3 lần

Trang 17

e Hàm MixColumns.

 Biến đổi MixColumns() tính toán trên từng cột của state Các cột được coi như là đa thức trong trường GF(28) và nhân với một đa thức a(x) với:

a(x) = (03)x^3 +(01)x^2 +(01)x + (02)

 Biến đổi này có thể được trình bày như phép nhân một ma trận, mà mỗi byte được hiểu như là một phần

tử trong trường GF(28): s’(x) = a(x)  s(x):

 Mô tả bằng ma trận như sau :

Phần 3 Mô phỏng hệ thống truyền thông

Trang 18

3.1 NGUYÊN LÝ VÀ QUY TRÌNH TRUYỀN THÔNG

3.1.1 Nguyên lý của hệ thống mô phỏng truyền thông có bảo mật

- File cần truyền sẽ được mã hóa sử dụng Key và thuật toán mã hóa đã cho tại máy A, sau đó được chia nhỏ thành các gói tin để truyền

- Sử dụng kết nối Bluetooth giữa 2 máy để truyền các gói tín đã được mã hóa sang máy B

- Máy B tổng hợp các gói tin, sử dụng Key và thuật toán đã thống nhất với máy A để giải mã, lưu lại File

3.1.2 Quy trình và thực hiện

a) Mã hóa và Giải mã File ảnh/Text với DES, AES, RC4

 Bước 1: Lấy đầu vào là đường dẫn của file và key, đọc file dưới dạng bytes:

 # Part 1: Get input image and key:

     path = input ( r ' Enter path of Image : ')

     key = input ( Enter Key for encryption of Image : ' )

     print ( ' The path of file : ' , path)

     print ( ' Key for encryption : ' , key)

     # Part 2: Read image in binary mode and

     fin = open (path, ' rb ' )

     image = fin read ()

     fin close ()

- Bước 2: Padding và chia file thành các N-bit blocks:

- #Part 3: Padding if image is not diviable to N/8 bytes (N bits)

-     if len (image) % N != 0 :

-         image = pad (image)

- # Part 4: Get blocks of N bits of file

-     len_arr = int( len (image) / N )

Trang 19

-       arr += binary (byte)

-         count += N

-         image_bin append (arr)

- Bước 3: Mã hóa từng N-bit blocks và ghép lại thành file gốc:

# Part 5: Create key and encrypt our image N-bit block by N-bit block

    cipher_text = []

    print ( " Encrypting " )

    for block in image_bin:

        cipher_text append ( encrypt (block,key))

    print ( " Done encryption! " )

    return cipher_text

b) Mô phỏng hệ thống truyền thông

A) Mục tiêu

- Hệ thông mô phỏng cần truyền được thực giữa 2 máy

- Hệ thống cần có đủ các bước quan trọng trong truyền thông mật mã: Mã hóa -> đóng thành các gói -> truyền qua sóng -> nhận các gói -> giải mã

- Kênh truyền: Sóng Bluetooth

B) Thực hiện

- Máy gửi – Client:

- print ( " Type 1/2/3 to choose type of encryption you want to use: " )

- print ( " 1: DES \n2: AES \n 3: RC4 "

- encrypt_type = int( input ( " I choose: " ))

- # Devide data into many 2048-byte packages and transfer them

- for i in range(math ceil ( len (data) / 2048 )):

-     start = i * 2048

-     end = start + 2048

-     block = data[start : end]

-     s send (block)

- # Send the final package to announce finishing the transfering

- s send (bytes( END " , encoding= " utf-8 " ))

- s close ()

Trang 20

size = 2048 # Set size of each package is 2048 bytes

s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)

# Start connection and listening

        data = client recv (size)

# If the received package is not the final package:

        if data and data != bytes( " END " , encoding= " utf-8 " ):

      cipher_text += data

      client send (data)

# Else is the final package, finish listenning

        elif data == bytes( " END " , encoding= " utf-8 " ):

      break

    # Start choosing type or crypto and input key to decrypt the data

print ( " Type 1/2/3 to choose type of encryption you want to use: " )

    print ( " 1: DES \n2: AES\n3: RC4 " )

    encrypt_type = int( input ( " I choose: " ))

Ngày đăng: 14/06/2024, 18:50

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w