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

Bài tập lớn thông tin di động THỰC HIỆN HỆ THỐNG TRUYỀN TIN BẢO MẬT SỬ DỤNG MÃ HOÁ AES VÀ ĐIỀU CHẾ QPSK

19 11 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 đề Thực Hiện Hệ Thống Truyền Tin Bảo Mật Sử Dụng Mã Hoá AES Và Điều Chế QPSK
Tác giả Nhóm 16
Người hướng dẫn T.s Nguyễn Văn Đức
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Thông Tin Di Động
Thể loại Báo Cáo
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 1,79 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ~~~~~~~~~~~~ BÁO CÁO Thông Tin Di Động Đề tài THỰC HIỆN HỆ THỐNG TRUYỀN TIN BẢO MẬT SỬ DỤNG MÃ HOÁ AES VÀ ĐIỀU CHẾ QPSK Giáo viên hướng dẫn T s.

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ- VIỄN THÔNG

~~~~~~*~~~~~~

BÁO CÁO Thông Tin Di Động

Đề tài: THỰC HIỆN HỆ THỐNG TRUYỀN TIN BẢO MẬT SỬ DỤNG MÃ HOÁ AES VÀ ĐIỀU CHẾ QPSK

HÀ NỘI - 2021

Giáo viên hướng dẫn : T.s Nguyễn

Văn Đức

Thành Viên

Hoàng

: 20172578 Phùng Tiến Đạt : 20172456

Vũ Trọng Tùng : 20172902

Trang 2

MỤC LỤC

DANH MỤC HÌNH ẢNH

1 ĐIỀU CHẾ VÀ GIẢI ĐIỀU CHẾ QPSK 4

1.1 Điều chế số 4

1.2 Các phương pháp điều chế số thông dụng 4

1.3 Điều chế QPSK 4

1.3.1 Điều chế 4

1.3.2 Bộ dao động 6

1.3.3 Mô phỏng điều chế 7

1.3.4 White noise 8

1.3.5 Giải điều chế 9

1.3.6 Kiểm tra 10

2 HỆ MẬT AES 11

2.1 Mã hóa AES - 128 bit 11

2.1.1 Chức năng AddRoundKey 12

2.1.2 Chức năng SubBytes 13

2.1.3 Chức năng ShiftRows 14

2.1.4 Chức năng MixColumns 15

2.1.5 Chức năng KeyExpansion 16

2.2 Triển khai bằng Python 18

2.2.1 Hàm băm tạo khoá 18

2.2.2 Hàm mã hoá và giải mã hoá 18

2.2.3 Kiểm tra thử bản tin 19

Hình 1 Sơ đồ khối hệ thống mã hoá QPSK 5

Hình 2 Tín hiệu QPSK và biểu đồ vector 5

Hình 3 Kết quả mô phỏng quá trình tạo sóng mang 6

Hình 4 448 bit đầu vào 7

Hình 5 Tín hiệu QPSK đầu ra miền thời gian 8

Hình 6 Tín hiệu sau khi thêm nhiễu 8

Hình 7 Sơ đồ khối mạch giải điều chế QPSK 9

Trang 3

Hình 8 Kênh I trước tích phân 9

Hình 9 Mô hình mã hoá và giải mã AES 12

Hình 10 Ví dụ về dữ liệu và mã khoá dưới dạng ma trận 12

Hình 11 Add Roundkey 13

Hình 12 S-Box của AES 13

Hình 13 Ví dụ về Sub - bytes 14

Hình 14 Shift Row 14

Hình 15 Ma trận chuyển đổi sử dụng trong chức năng MixColumns 15

Hình 16 Chức năng MixColumns 15

Hình 17 Chức năng KeyExpansion 16

Hình 18 Thực thi RotWord 16

Hình 19 Thực thi SubWord 17

Hình 20 Giá trị Rcon của các vòng 17

Hình 21 AddRcon 17

Hình 22 Thực thi AddW 18

Trang 4

1 ĐIỀU CHẾ VÀ GIẢI ĐIỀU CHẾ QPSK

1.1 Điều chế số

Là quá trình 1 trong ba thông số biên độ, tần số và pha của sóng mang được thay đổi theo tín hiệu (hay luồng số) đưa vào điều chế để thông tin của sóng mang phù hợp với đường truyền

1.2 Các phương pháp điều chế số thông dụng

Tùy theo các thông số được sử dụng để mang tin có thể là: biên độ A, tần số f, pha φ hay tổ hợp giữa chúng mà ta có các kiểu điều chế khác nhau: ASK, FSK, PSK, QAM…

 Điều chế khoá dịch biên độ ASK (Amplitude Shift Keying): sóng điều biên được tạo ra bằng cách thay đổi biên độ sóng mang theo biên độ tín hiệu băng gốc

 Điều chế khoá dịch tần số FSK (Frequency Shift Keying): sóng điều tần được tạo ra bằng cách thay đổi tần số sóng mang theo biên độ tín hiệu băng gốc

 Điều chế khoá dịch pha PSK (Phase Shift Keying): sóng điều tần được tạo

ra bằng cách thay đổi pha sóng mang theo biên độ tín hiệu băng gốc

 Điều chế vừa kết hợp biên độ và pha hay điều chế cầu phương QAM (Quadrature Amplitude Modulation)

1.3 Điều chế QPSK

QPSK viết tắt của từ Quadature Phase Shift Keying, tiếng Việt gọi là điều chế pha trực giao QPSK là 1 kỹ thuật điều chế tín hiệu số, mã hóa 2 bit thành 1 symbols QPSK (Quadrature phase-shift keying) thỉnh thoảng cũng được gọi là PSK, PSK, 4-QAM QPSK là dùng trục tọa độ cắt vòng tròn ra 4 pha (phases) để chuyển đổi 2 bits thành một symbol

1.3.1 Điều chế

Trong điều chế này, gọi là điều chế góc phần tư (QPSK), sóng mang hình sin lấy 4 giá trị pha cách nhau 90 độ và được xác định bởi tổ hợp 2 bit (Dibit) của tín hiệu

dữ liệu

Trang 5

Hình 1 Sơ đồ khối hệ thống mã hoá QPSK

Tín hiệu băng gốc được đưa vào bộ biến nối tiếp thành song song, đầu ra được hai luồng số liệu có tốc độ bit giảm đi một nửa, đồng thời biến đổi tín hiệu đơn cực thành tín hiệu Hai sóng mang đa tới bộ trộn làm lệch nhau 90 độ Tổng hợp hai tín hiệu đầu ra bộ trộn được tín hiệu QPSK

Hình 2 Tín hiệu QPSK và biểu đồ vector

1.3.2 Bộ dao động

Trang 6

Ta sử dụng python mô phỏng bộ dao động tạo 2 sóng sin ngược pha nhau với Ts=1, fc

= 1 Với mục đích mô phỏng đồ thị của song sin ở miền thời gian nên ta lấy 100 mẫu trên một đơn vị thời gian (thường là giây)

Kết quả mô phỏng:

Hình 3 Kết quả mô phỏng quá trình tạo sóng mang

1.3.3 Mô phỏng điều chế

Trang 7

Đầu tiên ta tách chuỗi bit data thành 2 phần gồm các odd bits (các bit có thứ tự chẵn)

và các even bits (các bit có thứ tự lẻ) sau đó đưa vào tạo xung vuông NRZ (xung có biên độ -1 đến 1) ta được 2 kênh I và Q Sau đó cộng 2 kênh lại ta nhận được tín hiệu QPSK đã được điều chế trên miền thời gian

Mô phỏng bằng python:

Kết quả mô phỏng trên 448 bit đầu vào ta có 224 symbol như sau:

Hình 4 448 bit đầu vào

Trang 8

Hình 5 Tín hiệu QPSK đầu ra miền thời gian

1.3.4 White noise

Ta mô phỏng nhiễu Gauss có biên độ nhỏ (từ 0 đến 0.1) và cộng vào tín hiệu QPSK ở đầu ra, ta được kết quả đồ thị thể hiện các pha của tín hiệu trên cùng một khoảng thời gian sau khi có nhiễu:

Hình 6 Tín hiệu sau khi thêm nhiễu

1.3.5 Giải điều chế

Trang 9

Hình 7 Sơ đồ khối mạch giải điều chế QPSK

Được thực hiện với 2 mạch tách sóng tích, chúng được hình hành bởi tín hiệu QPSK và hai tín hiệu sóng mang tách biệt có cùng một tần số dùng trong khi truyền và lệch đi 90 °

Đặc trưng chủ yếu của QPSK là :

 Áp dụng trong các modem truyền dữ liệu và trong truyền vô tuyến số

 Yêu các mạch có độ phức tạp cao

 Ít lỗi hơn FSK nhưng nhiều hơn 2.PSK

 Hiệu suất truyền bằng 2

Để giải điều chế QPSK ta cần có một bộ dao động giống với bộ điều chế Đầu tiên ta nhân tín hiệu QPSK với 2 tín hiệu hình sin vuông pha nhau tạo bởi bộ dao động, ta tách được tín hiệu QPSK về 2 kênh I và Q

Kết quả mô phỏng sau khi nhân tín hiệu QPSK với tín hiệu từ bộ dao động ta được một trong 2 kênh (kênh I) như sau:

Hình 8 Kênh I trước tích phân

Để đưa tín hiệu về dạng digital ta lấy tích phân của tín hiệu trên miền thời gian, với tích phân có giá trị lớn hơn 0 thì bit được giải điều chế có giá trị là 1 và ngược lại thì bit được giải điều chế có giá trị là 0, tương tự với kênh Q Sau khi gộp 2 chuỗi bit

đã giải điều chế (odd bits và even bits) ta nhận được chuỗi bit ban đầu

Trang 10

Mô phỏng bằng python:

1.3.6 Kiểm tra

Sau khi nhận được chuỗi bit sau khi giải điều chế, ta tiến hành kiểm tra tỉ lệ bit

bị truyền lỗi (bit error ratio), với môi trường mô phỏng cho thấy tỉ lệ bit lỗi bằng 0

Kiểm tra bằng python:

2 HỆ MẬT AES

AES là viết tắt của Advanced Encryption Standard, chuẩn mã hóa dữ liệu rất

phổ biến, là một thuật toán mã hóa khối được thiết kế bởi Rijndael, Nó được dùng cho nhiều mục đích và được cả chính phủ Mỹ sử dụng để bảo vệ các dữ liệu tuyệt mật

Trang 11

AES là kiểu mã hóa đối xứng dạng khối, nghĩa là mỗi khối văn bản có một kích thước nhất định được mã hóa (dựa vào độ dài khóa), khác với mã hóa dạng chuỗi khi từng kí

tự được mã hóa Đối xứng nghĩa là khóa để mã hóa và giải mã đều là một

AES được xây dựng trên nguyên lý thiết kế lưới giao hoán – thay thế (substitution-permutation network) Đây là một hệ mã có tốc độ tốt trong cả cài đặt phần mềm cũng như phần cứng Khác với DES, AES không theo mẫu thiết kế mạng Feistel Thay vào đó các thao tác cơ bản được thực hiện trên các khối ma trận dữ liệu 4*4 (bytes), được gọi là các trạng thái (state) Số vòng lặp của AES là một tham số xác định trên cơ sở kích thước khóa: 10 vòng lặp cho khóa 128bit, 12 cho 192 bit, 14 cho 256bit

Mã hóa dùng AES gồm nhiều chu trình, các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa con Rijndael Số vòng lặp (kí hiệu là Nr) phụ thuộc vào độ dài khóa :

 Nr = 10 nếu khóa dài 128 bit

 Nr = 12 nếu khóa có độ dài 192 bit

 Nr = 14 nếu độ dài của khóa là 256 bit

2.1 Mã hóa AES - 128 bit

Mã hóa AES được thực hiện thông qua 5 chức năng chính là AddRoundKey, SubBytes, ShiftRows, MixColumns và KeyExpansion Năm chức năng này được

sắp xếp để thực hiện ba bước cơ bản

 Bước 1 Bước khởi tạo: dữ liệu cần được mã hóa Plaintext kết hợp

với Key bằng chức năng AddRoundKey

 Bước 2 Bước lặp mã hóa: kết quả bước trên được sử dụng để thực hiện tuần tự

các chức năng SubBytes, ShiftRows, MixColumns và AddRoundKey Bước này được lặp lại 9 lần Chú ý, KeyExpansion thực hiện song song với bước AddRoundKey để tạo khóa vòng cho chức năng này.

 Bước 3 Bước tạo ngõ ra: Sau 9 lần lặp ở bước 2, kết quả được sử dụng để thực

hiện tuần tự các chức năng SubBytes, ShiftRows và AddRoundKey để tạo

ngõ ra Ciphertext

Trang 12

Hình 9 Mô hình mã hoá và giải mã AES

Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte Trong quá trình mã hóa, ma trận dữ liệu ban đầu sẽ bị biến đổi bởi các chức

năng AddRoundKey, SubBytes, ShiftRows hoặc MixColumns để tạo ra các dữ liệu

trung gian gọi là ma trận trạng thái (State) Ma trận khóa mã sẽ bị biến đổi bởi chức

năng KeyExpansion để tạo ra các khóa mã trung gian gọi là khóa vòng.

Hình 10 Ví dụ về dữ liệu và mã khoá dưới dạng ma trận

2.1.1 Chức năng AddRoundKey

Chức năng AddRoundKey thực hiện ở:

 Bước khởi tạo: XOR khóa mã với ma trận dữ liệu

 Bước lặp mã hóa và bước tạo ngõ ra: XOR khóa vòng (round key) với ma trận trạng thái

Trang 13

Đây là ví dụ về AddRoundKey cho bước khởi tạo Đối với bước lặp mã hóa và bước tạo ngõ ra, vị trí "khóa mã" là các "khóa vòng" còn dữ liệu là của lần tính trước đó

Hình 11 Add Roundkey

2.1.2 Chức năng SubBytes

Chức năng SubBytes là thực hiện thay thế từng byte của ma trận trạng thái, ngõ

ra của AddRoundKey, bằng một giá trị đã quy định trong chuẩn AES Bảng quy định giá trị thay thế gọi là S-box

Hình 12 S-Box của AES

Ví dụ, byte cần thay thế là H08 thì dò ở hàng số 0 và cột số 8 trong bảng S-box

sẽ được kết quả là 30

Trang 14

Hình 13 Ví dụ về Sub - bytes

2.1.3 Chức năng ShiftRows

Chức năng ShiftRows thực hiện quay trái từng hàng của ma trận trạng thái, ngõ

ra của SubBytes, theo byte với hệ số quay tăng dần từ 0 đến 3 Hàng đầu tiên có hệ số quay là 0 thì các byte được giữ nguyên vị trí Hàng thứ hai có hệ số quay là 1 thì các byte được quay một byte Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte

Hình 14 Shift Row

2.1.4 Chức năng MixColumns

Chức năng MixColumns thực hiện nhân từng cột của ma trận trạng thái, ngõ ra của ShiftRows, với một ma trận chuyển đổi quy định bởi chuẩn AES Việc biến đổi

Trang 15

một cột của ma trận trạng thái được thực hiện bởi hai phép toán là nhân (.) và XOR (+)

Hình 15 Ma trận chuyển đổi sử dụng trong chức năng MixColumns

Hình 16 Chức năng MixColumns

2.1.5 Chức năng KeyExpansion

Chức năng KeyExpansion thực hiện tính toán khóa vòng cho bước lặp mã hóa

và bước tạo ngõ ra Kết quả của một lần thực thi KeyExpansion là một khóa vòng sử

Trang 16

dụng cho chức năng AddRoundKey Với mã hóa AES-128, số khóa vòng là 10 tương ứng với 9 lần AddRoundKey ở bước lặp mã hóa và 1 lần AddRoundKey ở bước tạo ngõ ra Chức năng KeyExpansion được thực hiện thông qua 4 chức năng là RotWord, SubWord, AddRcon và AddW

Hình 17 Chức năng KeyExpansion

Mỗi khóa vòng có 128 bit được chia làm 4 word, mỗi word là 4 byte và ký hiệu

là w[j] với j là số nguyên Mã hóa AES-128 có 1 khóa mã và 10 khóa vòng nên tổng

số từ là 44 và được đánh số từ 0 đến 43 Khóa mã có 4 từ là w[0], w[1], w[2] và w[3] Khóa vòng 1 có 4 từ là w[4], w[5], w[6] và w[7] Tương tự, khóa vòng 10 có 4 từ là w[40], w[41], w[42] và w[43]

 RotWord: thực hiện quay trái từ w[j] một byte

Hình 18 Thực thi RotWord

 SubWord: thực hiện thay thế các phi tuyến từng byte của kết quả RotWord theo bảng S-box

Trang 17

Hình 19 Thực thi SubWord

 AddRcon: thực hiện XOR kết quả SubWord và giá trị Rcon[j/4] với j là bội số của 4 Số lượng giá trị Rcon[j/4] là 10 tương ứng với 10 lần tính khóa vòng Chức năng AddRcon sẽ tạo ra kết quả cuối cùng của biến đổi trans(w[j-1])

Hình 20 Giá trị Rcon của các vòng

Hình 21 AddRcon

 AddWord: Chức năng AddW thực hiện XOR w[j-4] với w[j-1] để tạo ra khóa vòng

Trang 18

Hình 22 Thực thi AddW

2.2 Triển khai bằng Python

2.2.1 Hàm băm tạo khoá

#Key is changed able

key = hashlib.sha256(b'16-character key').digest()

Khoá được tạo bằng hàm băm sha.256 tiêu chuẩn Khoá truyền vào là dạng byte 2.2.2 Hàm mã hoá và giải mã hoá

Dùng phương thức pad và unpad để phòng trường hợp dữ liệu mã hoá bị lẻ Thuật toán AES sẽ luôn tạo ra bản mật có số byte chẵn để khi chuyển thành chuỗi bit là chẵn Do QPSK dùng 2 bit làm 1 từ mã nên dòng bit đầu vào phải chẵn

def encrypt(raw):

BS = AES.block_size

pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)

raw = base64.b64encode(pad(raw).encode('utf8'))

iv = get_random_bytes(AES.block_size)

cipher = AES.new(key= key , mode= AES.MODE_CFB,iv= iv)

return base64.b64encode(iv + cipher.encrypt(raw))

Dùng encode base64 và cả hàm pad, ta sẽ thu được bản mật chẵn IV – Initial Vector được xoay ngẫu nhiên tạo nên hiệu ứng rối của hệ mật

def decrypt(enc):

unpad = lambda s: s[:-ord(s[-1:])]

enc = base64.b64decode(enc)

iv = enc[:AES.block_size]

cipher = AES.new( key , AES.MODE_CFB, iv)

Trang 19

return unpad(base64.b64decode(cipher.decrypt(enc[AES.block_size:])).decode('utf 8'))

Khi giải mã thì bản mật được unpad

Hai hàm phụ để chuyển kí tự byte thành bit, đầu vào cho quá trình QPSK

def bytetobit(s):

return ''.join(format(byte, '08b') for byte in cipertext)

def bittobyte(s):

return int(s, 2).to_bytes((len(s) + 7) // 8, byteorder='big')

2.2.3 Kiểm tra thử bản tin

Ngày đăng: 08/12/2022, 21:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w