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

Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin

99 971 1

Đ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

Định dạng
Số trang 99
Dung lượng 2,07 MB

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

Nội dung

Bài toán phân tích một số tự nhiên ra thừa số nguyên tố Các thuật toán mã hóa công khai hiện đại được nghiên cứu và đề xuất dựa trên việc nghiên cứu lý thuyết độ phức tạp của thuật toán

Trang 1

-

NGUYỄN QUÝ HÀO

NGHIÊN CỨU PHỐI HỢP HAI PHƯƠNG PHÁP NÉN

và MÃ HOÁ THÔNG TIN

Ngành: Công nghệ thông tin

Chuyên ngành: Truyền dữ liệu và mạng máy tính

Mã số: 60 48 15

LUẬN VĂN THẠC SĨ NGÀNH CNTT

Giảng viên hướng dẫn: PGS TS TRỊNH NHẬT TIẾN

Trang 2

MỤC LỤC

MỤC LỤC 2

DANH MỤC CÁC BẢNG 4

DANH MỤC CÁC HÌNH VẼ 5

LỜI MỞ ĐẦU 6 Chương 1: MỘT SỐ KHÁI NIỆM CƠ BẢN 8

1.1 CÁC ĐỊNH LÝ QUAN TRỌNG 8

1.1.1 Định lý Euler 8

1.1.2 Định lý Fermat (hệ quả của định lý Euler) 8

1.1.3 Định lý đồng dư Trung Quốc 8

1.1.4 Định lý Bezout 9

1.2 MỘT SỐ THUẬT TOÁN 9

1.2.1 Thuật toán Euclidean 9

1.2.2 Thuật toán Euclidean mở rộng 10

1.2.3 Thuật toán bình phương và nhân 11

1.2.4 Thuật toán xác suất kiểm tra số nguyên tố 12

1/ Thuật toán Miller – Rabin 12

1.3 KHÁI NIỆM ENTROPY 13

1.3.1 Định nghĩa Entropy 13

1.3.2 Tính chất của Entropy 14

Chương 2: PHƯƠNG PHÁP MÃ HOÁ 15

2.1 CÁC KHÁI NIỆM CƠ BẢN 15

2.1.1 Hệ mã hoá khoá đối xứng 16

2.1.2 Hệ mã hoá khoá phi đối xứng 16

2.1.3 Hệ mã hoá RSA 17

2.1.3.1 Lịch sử hình thành hệ mã hoá RSA 17

2.1.3.2 Hệ mã hoá RSA đầu tiên 17

2.1.3.3 Định nghĩa hệ mã hoá RSA 18

2.2 CÁC CHUẨN KỸ THUẬT TRONG PKCS 19

2.2.1 Tổng quan về PKCS và PKCS#1 v2.1 19

2.2.1.1 PKCS 19

2.2.1.2 PKCS#1 v2.1 19

2.2.2 Các ký hiệu trong PKCS#1 v2.1 20

2.2.3 Các kiểu khóa 21

2.2.3.1 Khóa công khai RSA 22

2.2.3.2 Khóa bí mật RSA 22

2.2.4 Cơ sở chuyển đổi dữ liệu I2OSP và OS2IP 23

2.2.4.1 Chuyển đổi dữ liệu I2OSP 24

2.2.4.2 Chuyển đổi dữ liệu OS2IP 24

2.2.5 Cơ sở của hệ mật mã 25

2.2.5.1 Cơ sở hệ mã hóa RSAEP 25

2.2.5.2 Cơ sở hệ mã hóa – RSADP 26

2.2.6 Lược đô mã hóa 28

2.2.6.1 Tổng quan về lược đồ mã hóa 28

2.2.6.2 Các kỹ thuật hỗ trợ 28

2.2.6.3 Lược đồ RSAES – OAEP 29

2.2.7 Ý nghĩa của việc áp dụng EME - OAEP trước khi mã hóa RSA 34

2.2.8 Vấn đề sinh khóa RSA 35

2.3 CHUẨN MÃ HÓA DỮ LIỆU TIÊN TIẾN – AES 37

Trang 3

2.3.1 Mục đích nghiên cứu chuẩn AES 37

2.3.2 Tổng quan 38

2.3.3 Các khái niệm cơ sở 38

2.3.3.1 Input, Output, Key 38

2.3.3.2 Byte 38

2.3.3.3 Ma trận trạng thái (State Matrix) 39

2.3.3.4 Hộp thay thế S – Box và InvS – Box 40

2.3.4 Đặc tả thuật toán 41

2.3.4.1 Sinh khóa con 41

2.3.4.2 Hoạt động mã hóa 42

2.3.4.3 Hoạt động giải mã 43

Chương 3: PHƯƠNG PHÁP NÉN DỮ LIỆU 44

3.1 TỔNG QUAN VỀ NÉN DỮ LIỆU 44

3.1.1 Mã nén dữ liệu 44

3.1.1.1 Nén dữ liệu, bít trung bình 44

3.1.1.2 Mã tổng và mã phân tách 46

3.1.2 Định lý Shannon 47

3.2 MÔ HÌNH THỐNG KÊ 51

3.2.1 Mô hình thống kê tĩnh 51

3.2.2 Mô hình thống kê động 51

3.2.3 Một số mã nén cơ bản 52

3.2.3.2 Mã Huffman 57

3.2.3.3 Lưu đồ giải mã Fanon, Shannon, Huffman 60

3.3 MÔ HÌNH TỪ ĐIỂN 62

3.3.1 Giới thiệu 62

3.3.2 Kỹ thuật từ điển 62

3.3.2.1 Nguyên lý LZ 62

3.3.2.2 Các thuật toán nén LZ 66

Chương 4: PHỐI HỢP HAI PHƯƠNG PHÁP NÉN VÀ MÃ HOÁ THÔNG TIN 80

4.1 MÔ HÌNH PHỐI HỢP HAI PHƯƠNG PHÁP NÉN VÀ MÃ HOÁ THÔNG TIN 80 4.1.1 Về không gian lưu trữ 80

4.1.2 Vấn đề an ninh 81

4.1.3 Vấn đề thời gian xử lý dữ liệu 82

4.2 Mô hình phối hợp hai phương pháp nén và mã hoá dữ liệu 82

4.3 CHƯƠNG TRÌNH THỬ NGHIỆM 86

4.3.1 Mô tả chung 86

4.3.2 Ý tưởng cài đặt 86

4.3.2.1 Ngôn ngữ lập trình 86

4.3.2.2 Cấu trúc chương trình 87

4.3.3 Thực hiện 92

4.3.4 Đánh giá 94

KẾT LUẬN 98

TÀI LIỆU THAM KHẢO 99

Trang 4

DANH MỤC CÁC BẢNG

1 Bảng 2.1: Thay thế dãy 4 bit sang cơ số 16 40

6 Bảng 3.4: Quá trình nén xâu “bcabbcbccbababc” theo thuật toán LZ77 68

7 Bảng 3.5: Quá trình giải nén theo thuật toán LZ77bản mã

bca[3,1,b][4,1,b][2,1,c][3,1a][2,2,b][5,1,””] 68

8 Bảng 3.6:

Quá trình nén xâu “ aaabbabaabaaabab” bằng thuật toán LZ78 72

9 Bảng 3.7: Quá trình nén bằng thuật toán LZ78 bản mã

“(0,a)(1,a)(0,b)(3,a)(4,a)(5,a)(4,b)” 73

10 Bảng 3.8: Quá trình nén xâu “aabababaaababb” bằng thuật toán LZW 79

11 Bảng 3.9: Quá trình giải nén bản mã “001352411” theo thuật toán

12 Bảng 4.2: Bảng kết quả thử nghiệm đánh giá về mặt hiệu quả nén 96

13 Bảng 4.2: Bảng kết quả thử nghiệm đánh giá về mặt thời gian 97

Trang 5

DANH MỤC CÁC HÌNH VẼ

1 Hình 2.1: Nguy cơ bị tấn công khi truyền thông tin trên mạng máy tính 16

2 Hình 2.2: Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12] 17

3 Hình 2.3: Mô hình truyền thông sử dụng hệ mã hoá khoá công khai

[12]

18

5 Hình 2.5: Tóm lƣợc quy trình xử lý RSAES – OAEP - ENCRYPT 33

6 Hình 2.6: Tóm lƣợc quy trình xử lý RSAES – OAEP – DECRYPT 35

8 Hình 2.8: Hộp S –Box sử dụng trong quá trình mã hoá AES [14] 41

9 Hình 2.9: Hộp InvS –Box sử dụng trong quá trình mã hoá AES [14] 41

13 Hình 3.4: Mã hoá theo mô hình thống kê động 52

14 Hình 3.5: Giải mã hoá theo mô hình thống kê động 53

22 Hình 3.13: Sơ đồ nén dữ liệu thuật toán LZW 75

23 Hình 3.14: Sơ đồ giải nén dữ liệu thuật toán LZW 78

Trang 6

LỜI MỞ ĐẦU

Quá trình lưu trữ và truyền tải thông tin luôn luôn có 2 yếu tổ được quan tâm hàng đầu là: tính an toàn bảo mật và kích thước của tệp tin

Đã có rất nhiều các phần mềm, các chương trình được viết để giải quyết hai vấn

đề được đặt ra Tuy nhiên các phần mềm phần lớn chỉ quan tâm tới một trong hai yếu

tố chỉ nén dữ liệu Winzar, Winzip, 7Zip… hoặc chỉ mã hoá như: Enterprise, TrueCrypt… tuy nhiên nếu chỉ nén dữ liệu kích thước tệp tin được giảm nhưng lại không bảo đảm tính an toàn thông tin Ngược lại nếu chỉ mã hoá chỉ đảm bảo tính an toàn nhưng không giải quyết được vấn đề giảm dung lượng lưu trữ hơn thế mã hoá tệp tin lớn tốn nhiều thời gian và băng thông để truyền tải cũng tăng theo

Trong khi đó nếu phối hợp cả hai quá trình trên sẽ đem lại rất nhiều lợi ích: giảm dung lượng lưu trữ, giảm băng thông truyền tải, giảm thời gian mã hoá, tăng tính bảo mật cho tệp tin so với tệp tin chỉ mã hoá đơn thuần

Từ ý nghĩa thực tiễn quan trọng nêu trên là động lực để tôi nghiên cứu đề tài:

“Nghiên cứu phối hợp hai phương pháp nén và mã hoá thông tin”

Trong luận văn sẽ đề xuất mô hình và giải pháp phối hợp hai phương pháp nén

và mã hoá thông tin: sử dụng các thuật toán nén để nén dữ liệu sau đó dùng phương pháp mã hoá đối xứng để mã hoá tệp tin sau, cuối cùng là dùng mã khoá khoá bất đối xứng RSA để mã hoá khoá chung của AES

Luận văn được trình bày theo cấu trúc sau:

- Chương 1: trình bày cơ sở toán học được sử dụng trong quá trình nén và mã hoá thông tin gồm: các khái niệm, các định lý, định nghĩa và một số thuật toán cơ bản

- Chương 2: trình bày về các thuật toán mã hoá: AES, RSA và các kỹ thuật

có liên quan được sử dụng trong quá trình mã hoá

- Chương 3: trình bày về các phương pháp nén: Fanno, Shanon, Huffman, Lzw…

- Chương 4: trình bày về hướng nghiên cứu phối hợp các phương pháp nén và

mã hoá thông tin Giải pháp thực hiện và đánh giá mô hình nghiên cứu Ngoài ra còn trình bày về quá trình cài đặt chương trình thử nghiệm mô hình phối hợp bằng ngôn ngữ lập trình C#.Net

Học viên: Nguyễn Quý Hào

Trang 7

Cuối cùng tôi xin cảm ơn tất cả các bạn trong lớp đã góp ý, trao đổi hỗ trợ cho tôi trong suốt thời gian vừa qua

Tôi xin chân thành cảm ơn!

Học viên: Nguyễn Quý Hào

Trang 8

Chương 1: MỘT SỐ KHÁI NIỆM CƠ BẢN

1.1.1 Định lý Euler

Định lý:

Cho a Z, m N, m > 1 Nếu UCLN (a, m) = 1 thì a (m) 1 (mod m)

1.1.2 Định lý Fermat (hệ quả của định lý Euler)

Định lý:

Cho a Z và k là một số nguyên tố khi đó ak a (mod k)

Nếu UCLN(a, k) = 1 thì ak-1 1 (mod k)

1.1.3 Định lý đồng dư Trung Quốc

Định lý:

Cho m1, m2, …, mr là các số nguyên tố cùng nhau từng đôi một nghĩa là UCLN(m1, m2) = 1 i, j = 1, 2, …, r ; i ≠ j Giả sử a1, a2, … ar Z khi đó hệ phương trình đồng dư

) (mod

) (mod

) (mod

2 2

1 1

r

a x

m a

x

m a

i M y a

)3(mod6

)2(mod3

x x x

Giải:

M = 2 x 3 x 7 = 42 M1 =3 x 7 = 21; M2 = 2 x 7 = 14; M3 = 2 x 3 = 6

y1 = 21-1 mod 2 = 1; y2 = 14-1 mod 3 = 2; y3 = 6-1 mod 7 = 6

x = 3 x 21 x 1 + 6 x 14 x 2 + 8 x 6 x 6 =519 mod 42 = 15

Trang 9

1.1.4 Định lý Bezout

Định lý:

Cho a, b N, a > b 1; ta có:

+ Tồn tại x, y Z sao cho ax + by = UCLN(a, b)

+ Nếu a, b nguyên tố cùng nhau thì tồn tại x,y Z | ax + by = 1

+ a, b nguyên tố cùng nhau khi và chi khi tồn tại x, y Z | ax + by = 1

1.2.1 Thuật toán Euclidean

Cơ sở số học của thuật toán:

Cho a, b, d Z, d ≠ 0 nếu a  d và b  d thì a mod b  d

Nội dung thuật toán:

INPUT: r0, r1 N, r0 > r1 0

OUPUT: d = UCLN(r0, r1)

Thuật toán:

Bước 1: Nếu r1 = 0 trả về d := r0, kết thúc thuật toán

Nếu r1 ≠ chuyển sang bước 2 Bước 2: r := r0 mod r1; r0 := r1; r1 = r; quay lại bước 1

Trang 10

1.2.2 Thuật toán Euclidean mở rộng

Cơ sở số học của thuật toán: trong thuật toán Euclidean tìm UCNL của hai số

nguyên r0 > r1 0, ta thấy thuật toán là quá trình thực hiện chuỗi phép chia lấy phần dư

dễ dàng ta thấy

UCLN(r0, r1) = UCLN(r1, r2) = UCLN(r2, r3) = … = UCLN(rm-1, rm)

Với r2 = r0 mod r1 r3 = r1 mod r2 …

Dựa trên thuật toán Euclidean người ta mở rộng thuật toán trên để tính được

số nghịch đảo theo modulo m trong vành Zm

Xét dãy tuần tự các số nguyên t0, t1, … tm như sau:

Với mọi j, 0 j 2 ta có rj tjr1 (mod r0)

Nội dung thuật toán:

Trang 11

7.3 if temp < 0 then temp = n – ((-temp) mod n) 7.4 t0 = t

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

Giả sử có các số nguyên x, b và n Ta phải tính xb

mod n Thuật toán: “Bình phương và nhân” sau đây sẽ giúp ta tính lũy thừa này khá đơn giản Đây là một thuật toán quan trọng được sử dụng trong qui trình mã hóa cũng như giải mã của hệ mã hoá RSA

Nội dung thuật toán:

Trang 12

1.2.4 Thuật toán xác suất kiểm tra số nguyên tố

INPUT: một số nguyên dương n

OUPUT: n là hợp số

Sau đây ta sẽ đi xem thuật toán Miller - Rabin giải quyết bài toán này

1/ Thuật toán Miller – Rabin

Kiểm tra Miller:

Giả sử n là một số nguyên dương lẻ, khi đó ta biểu diễn được n – 1 = 2st với s là một số nguyên không âm, t là một số nguyên dương lẻ Ta nói n vượt qua được kiểm tra Miller cơ sở a (a Z, a > 0) nếu at

1 (mod n) hoặc a2k t -1 (mod n) với k nào đó

0 k < s

Mệnh đề:

Nếu n là một số nguyên tố thì n vượt qua kiểm tra Miller cơ sở a, 0 < a < n

Định nghĩa:

Nếu n vượt qua Miller cơ sở a thì n được gọi là số nguyên tố giả cơ sở a

Số nguyên dương n > 1 được gọi là số giả nguyên tố mạnh cơ sở a nếu nó là hợp số và vượt qua được kiểm tra Miller cơ sở a

Thuật toán Miller – Rabin

INPUT: n N, lẻ, N > 1

OUTPUT: “n là nguyên tố” hoặc “n là hợp số”

Nội dung thuật toán:

Miller – Rabin – Test(n)

Trang 13

Miller – Rabin – Test(n)

Thuật toán Miller – Rabin với t lần thực hiện kiểm tra Miller:

INPUT: n N, lẻ, n > 1, t N, số lần kiểm tra

OUTPUT: “n là nguyên tố” hoặc “n là hợp số”

Xác suất sai khi trả lời n là số nguyên tố không vượt quá (1/4)t

1.3.1 Định nghĩa Entropy

Định nghĩa Độ bất định :

Xét không gian mẫu = {w 1 , w 2 , w 3 , , w m } với xác suất của các sự kiện ngẫu

nhiên cơ bản tương ứng là p 1 , p 2 , p 3 , , p m Entropy của không gian mẫu Ω sinh ra do phép thử ngẫu nhiên mà kết quả là một trong số các sự kiện của không gian mẫu Ω hay

độ bất định của việc đoán nhận sự kiện ngẫu nhiên cơ bản xảy ra được ký hiệu H(Ω) là một số tính theo công thức sau:

Giả sử chúng ta lấy việc đoán nhận sự kiện nào trong 2 sự kiện đồng xác suất

Trang 14

Độ bất định xác định không phụ thuộc vào việc chọn đơn vị để đo Nếu chọn

độ bất định của việc đánh số đề tức là đoán nhận 1 trường hợp trong số 100 trường hợp đồng khả năng làm đơn vị đo và nếu có một việc có độ bất định là 3, tức là H(k) = log100(k) = 3 Khi dùng đơn vị đo là việc đoán nhận một trường hợp trong số 10 khả năng làm đơn vị thì chỉ số đo sẽ là 6, vì H(k) = log10(k) = 2.log100(k) = 6 Chính vì vậy

mà chúng ta có thể chọn đơn vị đo bất kỳ, ví dụ δ = 2

Sau này, chúng ta sẽ dùng công thức log ( )

1

2 i m

i

p để tính độ bất định

(entropy) cho một không gian mẫu Ω với xác suất các phần tử là p 1 , p 2 , p 3 , , p m Lưu

ý, H( ) càng lớn thì việc đoán nhận sự kiện ngẫu nhiên cơ bản nào sẽ xảy ra càng khó (càng bất định)

1.3.2 Tính chất của Entropy

Tính chất:

a) Entropy là một đại lượng luôn luôn dương hoặc bằng không H(Ω)≥ 0

b) Entropy bằng 0 khi có một sự kiện ngẫu nhiên cơ bản có xác suất bằng 1 và xác suất của tất cả các sự kiện ngẫu nhiên cơ bản còn lại bằng 0 Nghĩa là có một sự kiện ngẫu cơ bản luôn luôn xảy ra Như vậy thì việc đoán nhận một kết quả xảy ra khi thực hiện một phép thử là không có ý nghĩa gì nữa

c) Entropy đạt giá trị cực đại khi xác suất của các sự kiện ngẫu nhiên cơ bản của không gian mẫu bằng nhau Lúc đó độ bất định của việc đoán nhận một sự kiện ngẫu nhiên cơ bản nào đó xảy ra là lớn nhất

Như vậy, định lý khẳng định rằng entropy của không gian đồng xác suất là lớn nhất trong số các không gian mẫu có cùng số các sự kiện ngẫu nhiên cơ bản

Ví dụ:

Ví dụ đơn giản để minh hoạ như sau: giả sử chúng ta tung con xúc sắc mà ở mặt 1 chúng ta gắn chì vào Do khối lượng chì nặng nên đa số trường hợp mặt 6 xuất hiện (mặt 6 đối diện với mặt 1) Vì thế việc đoán xem mặt nào xuất hiện trở nên dễ hơn

Trang 15

Chương 2: PHƯƠNG PHÁP MÃ HOÁ

Trong một phạm vi hẹp, có thể hiểu nhiệm vụ cơ bản của mật mã học là nghiên cứu những phương pháp cho phép hai người có thể truyền thông với nhau trên một kênh thông tin không an toàn, sao cho người thứ ba dù có thể lấy cắp được thông tin cũng không thể hiểu được nội dung những thông tin truyền đi đó

Thông điệp mà Alice muốn gửi tới Bob được gọi là bản rõ (plaintext), kí hiệu

là x Để bảo vệ thông tin Alice cần sử dụng một cơ chế để truyền bản rõ x sang một

dạng biểu diễn khác – bản mã (ciphertext), được kí hiệu là y và gửi bản y Bob sau khi

nhận được bản mã y anh sử dụng một cơ chế để chuyển đổi bản mã y về bản rõ x

Công việc của Alice chuyển từ bản rõ x sang bản mã y được gọi là mã hóa

(encryption), công việc ngược lại của Bob chuyển đổi từ bản mã y sang bản rõ x được

gọi là giải mã (decryption

Yêu cầu cơ bản nhất với mỗi hệ mã hoá là bảo đảm qui tắc mã hóa và giải mã phải có khả năng tính toán hiệu quả, đồng thời đối phương khi có bản mã y, khả năng tìm ra bản rõ x hoặc khóa K là khó (rất khó thực hiện trong thời gian cho phép) Sau đây là định nghĩa một hệ mã hoá dưới hình thức toán học:

Định nghĩa:

Một hệ mật mã là một bộ 5 (P, C, K, E, D) trong đó:

1 P là một tập hợp hữu bạn các bản rõ có thể

2 C là một tập hợp hữu hạn các bản mã có thể

3 K, không gian khóa, là một tập hữu hạn các khóa có thể

4 Với mỗi khóa k K, tồn tại một qui tắc mã hóa ek E và một qui tắc giải

mã tương ứng dk D, trong đó et: P C và dk : C P là các ánh xạ thỏa mãn dk(ek(x)) = x x P

Hình 2.1 Nguy cơ bị tấn công khi truyền thông tin trên mạng máy tính

Trang 16

2.1.1 Hệ mã hoá khoá đối xứng

Theo mô hình chung của các hệ mã hoá khoá đối xứng, Alice và Bob bí mật chọn khóa K, sau đó K được sử dụng cho quy tắc mã hóa cũng như giải mã Theo phương pháp mã hóa này thì khóa để mã hóa chính là khóa để giải mã hoặc trong một

số hệ mật thì khóa để mã hóa và khóa để giải mã tuy khác nhau nhưng dễ dàng tính được thành phần này khi đã biết thành phần kia Từ đó mà các hệ mã hoá khoá đối xứng còn được gọi với tên khác là hệ mã hoá khóa bị mật, hay hệ mã hoá khóa đối xứng Dưới đây là mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng

Hình 2.2: Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12]

2.1.2 Hệ mã hoá khoá phi đối xứng

Một hạn chế của một hệ mã hoá khoá đối xứng là nó yêu cầu việc truyền đi khóa

K giữa Alice và Bob trên một kênh an toàn trước khi bất kì thông điệp mã hóa nào được truyenf đi Trên thực tế điều này rất khó thực hiện khi mà hai người ở xa nhau

Từ mặt hạn chế của các hệ mã hoá khoá đối xứng đã phân tích ở trên, người ta nghiên cứu và đề xuất các hệ mã hoá công khai (hệ mã hoá bất đối xứng) Tư tưởng chung của các hệ mã hoá khoá phi đối xứng là mỗi khóa K trong hệ mã hoá bao gồm hai thành phần: thành phần thứ nhất dành cho quá trình mã hóa, được gọi là khóa công khai và thành phần thứ hai dành cho quá trình giải mã, được gọi là khó bí mật (khóa riêng) Có thể hình dung Bob là người sẽ nhận các thông điệp bí mật từ những người khác, anh tìm một qui tắc mã hóa eK và một quy tắc giải mã tương ứng dK Bob công bố công khai khoá eK

và giữ bí mật khoá dK Sau đó Alice và những người khác có thể sử dụng eK để mã hoá các thông điệp trước khi gửi tới Bob Về mặt lý thuyết, Bob phải đảm bảo người khác không thể tìm ra dK tương ứng từ eK trong thời gian thực Ý tưởng về hệ mã hoá công khai được Diffie và Hellman đề xuất vào năm 1976 Và sự hiện thực hoá đầu tiên của ý tưởng này vào năm 1977 là công của Rivest, Shamir và Adleman họ là những người phát minh ra hệ

mã hoá RSA

Trang 17

Hình 2.3: Mô hình truyền thông sử dụng hệ mã hoá khoá công khai [12]

2.1.3 Hệ mã hoá RSA

2.1.3.1 Lịch sử hình thành hệ mã hoá RSA

RSA (Ron Rivers, Adi Shamir và Len Adleman) là một hệ mã hoá khoá phi đối xứng Nó là thuật toán đầu tiên phù hợp với việc tạo ra chữ kí điện tử và đánh dấu một sự tiến bộ vượt bậc trong mật mã học RSA đang được ứng dụng phổ biến trong giao dịch điện tử, đảm bảo an toàn với điều kiện độ dài đủ lớn Thuật toán được mô tả lần đầu tiên vào năm 1977 tại Học viện công nghệ Massachusettes (MIT)

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh đã 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 cài đặt thực nghiệm Phát minh này chỉ được công bố năm 1977 vì được xếp vào loại tuyệt mật

2.1.3.2 Hệ mã hoá RSA đầu tiên

1/ Bài toán phân tích một số tự nhiên ra thừa số nguyên tố

Các thuật toán mã hóa công khai hiện đại được nghiên cứu và đề xuất dựa trên việc nghiên cứu lý thuyết độ phức tạp của thuật toán và tính khó của các bài toán mà thuật toán tốt nhất được tìm ra là để giải quyết bài toán đó cũng không chấp nhận được trong thời gian thực với các máy tính hiện đại

Thuật toán RSA là thuật toán mã hóa dựa trên tính khó của bài toán phân tích một số nguyên tố tự nhiên (đủ lớn) ra thừa số nguyên tố Giả sử có n là một số tự nhiện

Trang 18

có thuật toán trong thời gian đa thức Với các máy tính hiện đại thì chƣa thể giải quyết bài toán này trong thời gian thực

mod n Từ đó đƣa ra định nghĩa hệ mã hoá RSA

2.1.3.3 Định nghĩa hệ mã hoá RSA

Định nghĩa:

Cho bộ số RSA (n, p, q, a, b) trong đó p, q là những số nguyên tố cỡ 512 bit hoặc lớn hơn Hệ mã hoá RSA với khóa K = (n, p, q, a, b) là hệ mã hoá với P = C = Zn, qui tắc mã hóa và giải mã nhƣ sau:

Qui tắc mã hóa: với mỗi x P = Zn

Trang 19

2.2 CÁC CHUẨN KỸ THUẬT TRONG PKCS

2.2.1 Tổng quan về PKCS và PKCS#1 v2.1

2.2.1.1 PKCS

PKCS là viết tắt của Publick – Key Cryptography Standards, là một tập hợp các chuẩn trong mã hoá hóa công khai, được đánh thứ tự PKCS#1 tới PKCS #15 PKCS được phát triển bởi phòng thí nghiệm RSA (RSA Laboratories) – một bộ phận của Tổ chức an toàn dữ liệu RSA (RSA Data Security Inc), cùng sự hợp tác rộng rãi với các nhà phát triển các hệ thống an ninh, nhằm đẩy nhanh tốc độ triển khai các ứng dụng các hệ mã hoá khoá phi đối xứng

2.2.1.2 PKCS#1 v2.1

Chuẩn PKCS#1 v2.1 được phòng thí nghiệm RSA công bố trong tài liệu PKCS#1 v2.1: RSA Cryptopraphy Standard, ngày 14/6/2002 Mục đích là đưa ra các khuyến nghị trong việc cài hệ mã hoá công khai dựa trên cơ sở của thuật toán RSA

Chuẩn PKCS#1 v2.1 đề cập tới các vấn đề cơ bản sau:

+ Các cơ sở của hệ mã hoá

+ Lược đồ mã hóa

+ Lược đồ chữ ký số

+ Cú pháp ASN.1 để biểu diễn khóa và nhận dạng lược đồ

Điểm mới trong PKCS#1 v2.1 so với các phiên bản trước ở sự dựa vào thuật toán RSA – đa nguyên tố (Multi prime RSA) và lược đồ chữ ký RSASSA – PSS Trong RSA – đa nguyên tố thể hiện ở modulo RSA n là tích của nhiều hơn hai số

nguyên tố (trong các phiên bản trước đó n tích của hai số nguyên tố n = p.q)

Trang 20

d số mũ RSA bí mật, sử dụng cho quá trình giải mã

di số mũ CRT của ri, là một số nguyên dương thỏa mã:

e số mũ RSA công khai, sử dụng trong quá trình mã hóa

EM thông điệp đã mã hóa, là một chuỗi octet (kết quả của quá trình áp dụng phương thức độn EME – OAEP trên thông điệp M)

emBit chiều dài tính theo số bit của một thông điệp đã được mã hóa EM

emLen chiều dài tính theo số octet của một thông điệp đã được mã hóa EM GCD( , ) WCLN của hai số nguyên không âm

Hash hàm băm bảo mật

hLen chiều dài đầu ra, tính theo octet của hàm băm Hash

k chiều dài tính theo số octet của modulo RSA n

K khóa bí mật RSA

L nhãn sử dụng trong RSAES – OAEP, một chuỗi octet

LCM ( , … , ) bội chung nhỏ nhất của các số nguyên không âm

M biểu diễn thông điệp (bản rõ) dạng số nguyên, 0 m n – 1 (là đầu vào của cơ

sở mã hóa RSAEP, và là đầu ra của cơ sở giải mã RSADP)

M thông điệp, là một chuỗi octet (là đầu vào của hoạt động mã hóa RSAES – OAEP – ENCRYPT, và là đầu ra của hoạt động giải mã RSAES – OAEP – DECRYPT)

Trang 21

mask đầu ra của MGF, là một chuỗi octet

maskLen chiều dài tính theo octet của mask

MGF hàm sinh mặt nạ

mgfSeed hạt giống từ đó sinh ra mặt lạ mask, là một chuỗi octet

mLen chiều dài tính theo số octet của thông điệp M

n Modulo RSA, n = r1 r2 r3 .ru, u 2

(n, e) khóa công khai RSA

p, q hai thừa số nguên tố đầu tiên của modulo RSA n

qInv hệ số CRT của p (hay hệ số CRT đầu tiên), một số nguyên dương nhỏ hơn p và thỏa mãn: q qInv 1 (mod p)

ri thừa số nguyên tố của modulo RSA n, trong đó bao gồm r1 = p, r2 = q, và các thừa số khác nếu có

ti hệ số CRT của thừa số nguyên tố ri, một số nguyên dương nhỏ hơn ri thỏa r1 r2

… ri-1ti 1 (mod ri), ti < ri, I = 3, … , u

u số các thừa số nguyên tố của modunlo RSA, u 2

x một số nguyên không âm

X một chuỗi octet tương ứng với x

xLen chiều dài tính theo octet của xâu X

(n) LCM (r1 – 1, r2 – 1, … , ru - 1)

phép XOR bit trên 2 chuỗi octet

.

hàm sàn; x là số nguyên nhỏ nhất, lớn hơn hoặc bằng số thực x

|| toán tử nối các chuỗi octet

kí hiệu đồng dư, a b (mod n) có nghĩa là (a – b) n

Ghi chú: thuật ngữ octet có ý nghĩa tương đương với byte (8 - bit)

2.2.3 Các kiểu khóa

Có hai kiểu khóa được sử dụng trong các cơ sở của hệ mật cũng như trong các lược đồ, được định nghĩa trong tài liệu PKCS#1 v2.1 là khóa bí mật RSA và khóa công

Trang 22

2.2.3.1 Khóa công khai RSA

Một khóa công khai RSA bao gồm hai thành phần:

+ n modulo RSA, một số nguyên dương

+ e số mũ công khai RSA, một số nguyên dương

Trong một khóa công khai RSA hợp lệ thì:

+ Modulo RSA n là tích của u số nguyên tố lẻ phân biệt ri, i = 1, 2, 3, ,u; u 2 + số mũ công khai RSA e là số nguyên thỏa 3 e n – 1, UCLN(e, (n)) = 1

2.2.3.2 Khóa bí mật RSA

Có thể sử dụng một trong hai cách biểu diễn khóa bí mật RSA

Dạng 1: theo cách biểu diễn này thì một khóa bí mật RSA bao gồm hai thành

phần:

+ n modulo RSA, một số nguyên dương

+ d số mũ bí mật RSA, một số nguyên dương

Dạng 2: trong cách biểu diễn này thì một khóa bí mật RSA bao gồm một bộ

năm số (p, q, dP, dQ, qInv) và các bộ ba (khuyết nếu u = 2) (ri, di, ti) Ý nghĩa của các thành phần như sau:

+ p thừa số nguyên tố đầu tiên của n

+ q thừa số nguyên tố thứ hai của n

+ dP số mũ CRT của thừa số thứ nhất p

+ dQ số mũ CRT của thừa số nguyên tố thứ hai q

+ qInv hệ số CRT đầu tiên

+ ri thừa số nguyên tố thứ i

+ di số mũ CRT của thừa số nguyên tố thứ i

+ ti hệ số CRT của thừa số thứ i

Trong một khóa bí mật RSA hợp lệ ở dạng biểu diễn thứ nhất thì:

+ n mang ý nghĩa như trong khóa công khai RSA

+ d số mũ bí mật RSA, là một số nguyên dương nhỏ hơn n và thỏa mãn e.d

1 (mod ( (n)) Trong đó e là số mũ công khai RSA, và (n) đã được định nghĩa trong mục 3.2

Trang 23

Một khóa bí mật RSA hợp lệ ở dạng biểu diễn thứ hai thì phải thỏa mãn:

+ p, q là hai thừa số nguyên tố đầu tiên của modulo RSA n Các số mũ CRT

dP, dQ là những số nguyên dương tương ứng nhỏ hơn p và q thỏa mãn:

e.dP 1 (mod (p – 1)) e.dQ 1 (mod(q – 1)) + Hệ số CRT đầu tiên qInv là một số nguyên dương nhỏ hơn p, thỏa mãn q.qInv 1 (mod p)

+ Nếu u > 2 thì trong khóa bí mật RSA dạng hai bao gồm các bộ ba (ri, di, ti), I

= 3, 4, … u.trong đó ri là thừa số nguyên tố thứ I của modulo RSA n Với số mũ CRT

dI (i = 3, 4,…,u) phải thỏa mãn e.di 1 (mod(ri – 1)), di < ri Mỗi hệ số CRT ti (i = 3, 4,

…, u) là một số nguyên dương nhỏ hơn ri và thỏa mãn Ri ti 1 (mod ri), Ri = r1.r2 ri-1

2.2.4 Cơ sở chuyển đổi dữ liệu I2OSP và OS2IP

Có hai kiểu cơ sở chuyển đổi dữ liệu được sử dụng trong PKCS#1 v2.1:

+ I2OSP: Integer – to – Octet – String Primitive: chuyển đổi từ dạng số nguyên sang chuỗi octet

+ OS2IP: Octet – String – to – Integer Primitive: chuyển đổi từ dạng chuỗi octet sang dạng số nguyên

Các cơ sở chuyển đổi dữ liệu này sẽ được sử dụng trong lược đồ mã hóa RSAES – OAEP Về mặt toán học thực chất I2OSP và OS2IP là hai song ánh ngược nhau Việc chuyển đổi này là quan trọng, vì trên thực tế, đầu vào và đầu ra của quy trình mã hóa và giải mã thực chất là chỉ là những chuỗi octet, trong khi đó thuật toán RSA chỉ làm việc trên các số nguyên

Trong thực tế để đảm bảo tính an toàn thuật toán RSA yêu cầu việc xử lý trên

số nguyên rất lớn, chúng nằm ngoài phạm vi biểu diễn của một từ máy, vì vậy người ta phải biểu diễn số nguyên trong một cấu trúc dữ liệu nào đó Vì vậy, các cơ sở chuyển đổi dữ liệu sẽ làm việc trên chuỗi octet và cấu trúc dữ liệu này

Ghi chú: một chuỗi octet là một dãy tuần tự của các octet, trong đó mỗi octet

là một byte Dãy tuần tự đó được đánh dấu chỉ mục từ octet đầu tiên (leftmost) cho đến octet cuối cùng (rightmost)

Trang 24

2.2.4.1 Chuyển đổi dữ liệu I2OSP

I2OSP chuyển đổi một số nguyên không âm về dạng một chuỗi octet với độ dài được chỉ định trước

I2OSP (x, xLen)

INPUT: x số nguyên không âm sẽ được chuyển đổi

xLen biểu diễn chiều dài của chuỗi octet đầu ra OUTPUT: X chuỗi octet tương ứng với chiều dài xLen

Lỗi: “số nguyên quá lớn”

Các bước chuyển đổi:

1 Nếu x 256xLen, ra “số nguyên quá lớn” và kết thúc

2 Viết số nguyên x ở dạng biểu diễn của nó với chiều dài xLen trong cơ sở 256:

x = xxLen – 1 256xLen – 1 + xxLen – 2 256xLen – 2+ … + x1256 + x0

trong đó 0 xi 256 (chú ý rằng ở đó có một hoặc nhiều hơn chữ số bằng không nếu x nhỏ hơn 256xLen – 1

)

3 Lấy octet Xi có giá trị nguyên xxLen – I với mỗi 1 i xLen Ta được chuỗi octet đầu ra: X = X1X2…XxLen

2.2.4.2 Chuyển đổi dữ liệu OS2IP

OS2IP chuyển đổi một chuỗi octet về một số nguyên không âm

OS2IP(X)

INPUT: X chuỗi octet sẽ được chuyển đổi

OUTPUT: x số nguyên không âm tương ứng

Các bước chuyển đổi:

1 Lấ y X1X2…XxLen là dãy octet của X từ octet đầu tiên cho tới octet cuối cùng, lấy xxLen -i là giá trị nguyên của octet Xi với mỗi i: 1 i xLen

2 Tính x = xxLen – 1 256xLen – 1 + xxLen – 2 256xLen – 2+ … + x1256 + x0

3 Ra x

Trang 25

2.2.5 Cơ sở của hệ mật mã

Một cơ sở mã hóa sẽ tạo ra ra một biểu diễn bản mã từ biểu diễn của một thông điệp với sự tham gia (điều khiển) của khóa công khai Một cơ sở giải mã sẽ khôi phục lại biểu diễn của thông điệp ban đầu từ biểu diễn của bản mã dưới sự tham gia (điều khiển) của khóa bí mật tương ứng Mỗi thông điệp hay bản mã ở đây đều là các

số nguyê Một cặp cơ sở mã hóa và giải mã được định nghĩa và ứng dụng trong PKCS#1 v2.1 là RSAEP và RSADP RSAEP và RSADP đều bao gồm trong đó các phép toán số học tương ứng nhau, nhưng khác nhau ở khóa điều khiển với vai trò như một tham số đầu vào Phép toán số học chính được sử dụng trong mỗi cơ sở là phép

tính mũ và có sự rút gọn theo modulo

2.2.5.1 Cơ sở hệ mã hóa RSAEP

RSAEP((n, e), m)

INPUT:

(n, e) khóa công khai RSA

m biểu diễn thông điệp, một số ngyên giữa 0 và n – 1

OUTPUT:

c biểu diễn bản mã, một số nguyên giữa 0 và n – 1

Lỗi: “biểu diễn thông điệp ngoài giớ hạn”

Giả định: khóa công khai RSA(n, e) hợp lệ

Trang 26

2.2.5.2 Cơ sở hệ mã hóa – RSADP

m: biểu diễn thông điệp, một số nguyên nằm giữa 0 và n – 1

Error: “Biểu diễn thông điệp nằm ngoài giới hạn”

Giải định: Khóa bí mật RSA K là hợp lệ

Các bước:

1 Nếu biểu diễn bản mã c không nằm giữa 0 và n – 1, ra “Biểu diễn bản mã nàm ngoài giới hạn” và dừng

2 Biểu diễn thông điệp m được tính như dưới đây

a Nếu sử dụng khóa K ở hình thức thứ nhất (n, d), tính m = cd mod n

b Nếu sử dụng khóa K ở hình thức thứ hai (p, q, dP, dQ, qInv) và (rI, di, ti), tiến trình tính toán như sau:

Tính h = (mi – m) ti (mod ri) Tính m = m + R.h

Lưu ý: e, p, q, r3 được chọn có chủ ý để thỏa mã điều kiện:

UCLN (e, p – 1) = UCLN(e, q – 1) = UCLN(e, r3 – 1) = 1

Trang 27

Với ví dụ này ta có tập bản rõ là các số nguyên m: 0 m 934

Trước tiên, ta sẽ đi tính các thành phần của khóa công khai và khóa bí mật

Khóa công khai: n = 935

Trang 28

2.2.6 Lược đô mã hóa

2.2.6.1 Tổng quan về lược đồ mã hóa

Một lược đồ là sự kết hợp các cơ sở hệ mã hoá với các kỹ thuật khác để đạt được những mục đích an ninh của hệ mã hoá Có hai kiểu lược đồ đặc tả trong PKCS#1 v2.1 là các lược đồ mã hóa và các lược đồ chữ ký Sau đây sẽ chỉ đề cập tới các lược đồ mã hóa Các lược đồ đặc tả ở đây chỉ giới hạn trong phạm vi xem xét các toán tử mà chúng sử dụng, tập trung vào các bước của tiến trình xử lý dữ liệu với sự tham gia của khóa công khai và khóa bí mật RSA, không bao hàm việc sinh khóa cũng như thẩm định tính hợp lệ của RSA

Một lược đồ mã hóa bao gồm một hoạt động mã hóa và một hoạt động giải

mã, trong các hoạt động mã hóa sinh ra một bản mã từ một thông điệp với khóa RSA công khai của người nhận, và các hoạt động giải mã từ các bản mã của người nhận bằng khóa RSA bí mật tương ứng

Có hai lược đồ mã hóa đặc trưng được môt tả trong tài liệu PKCS#1 v2.1 là RSAES – OAEP và RSAES – PKCS#1 v1.5 Trong đó, RSAES – OAEP được khuyến nghị sử dụng trong các ứng dụng mới Theo quyết định số 58/2008/QĐ – BTTTT ngày

31 tháng 12 năm 2008 cả Bộ thông tin và truyền thông, RSAES – OAEP là lược đồ quy định bắt buộc áp dụng để mã hóa Trong tài liệu này chỉ nghiên cứu về lược đồ mã hóa RSAES – OAEP

2.2.6.2 Các kỹ thuật hỗ trợ

Lược đồ mã hóa RSAES – OAEP cần sử dụng một hàm băm và một hàm sinh mặt nạ trong quy trình trộn thông điệp EME – OAEP trước khi mã hóa Dưới đây sẽ giới thiệu sơ lược hàm băm SHA1 và mô tả hàm sinh mặt nạ MGF1 – hai hàm này được sử dụng rộng rãi trong thực tế Tất nhiên, hàm băm và hàm sinh mặt nạ là tùy chọn trong lược đồ, không nhất theiets là SHA1 và MGF1

1/ Hàm băm SHA1

SHA1 là một hàm băm mã hoá được thiết kế bởi National Security Agency (NSA) và được công bố bởi NIST theo chuẩn FIPS PUBS 180 – 1 ngày 17/4/1995 Hàm băm SHA1 nhận đầu vào là một thông điệp có chiều dài tối đa là 264

– 1, và sản xuất ra một thông điệp rút rọn với chiều dài 160bit Chi tiết vè SHA1 có thể tham khảo trong FIPS PUBS 180 – 1 tại website: http://www.itl.nist.gov/fipspubs/fip180-1.htm

Trang 29

2/ Hàm sinh mặt nạ MGF1

MGF1 (mgfseed, maskLen)

Tùy chọn: Hash hàm băm (chiều dài đầu ra hLen octet)

Input: mgfSeed hạt giống để sinh mặt nạ, một chuỗi octet

maskLen chiều dài theo octet dự kiến của mặt nạ mask, tối đa là 232

hLen

Output: Mask mặt nạ, một chuỗi octet với chiều dài maskLen

Error: “mask too long”

Các bước:

1 Nếu lấy maskLen > 232 hLen, ra “mask too long” và dừng

2 Lấy T là một chuỗi octet rỗng

3 For counter: 0 to maskLen/hLen - 1 do

a Chuyển conter sang mộc chuỗi C dài 4 octet

b Ghép chuỗi ontet:T = T || Hask (mgfseed||C)

4 Ra maskLen octet đầu tiên của T, đó là mask cần tính

2.2.6.3 Lược đồ RSAES – OAEP

Lược đồ RSAES - OAEP là sự kết hợp các cơ sở mã hóa và giải mã RSAES, RSADP cùng với phương thức mã hóa EME – OAEP (OAEP là viết tắt của cụm từ:

“Optimal Asymmetric Encryption Padding” – chuyển đổi mã hóa bất đối xứng tối ưu) Phương thức mã hóa EME – OAPEP dựa trên cơ sở lược đồ chuyển đổi mã hóa bất đối xứng tối ưu (OAEP) được phát minh bởi Mihir Bellare và Phillip Rogaway (1994), sau được phát triển bởi Don B Johnson và Stephen M Matyas (1996) Nó tương thích với lược đồ IFES được định nghĩa trong chuẩn IEEE Std 1363 – 2000 Trong đó, cơ sở mã hóa và giải mã là IFEP – RSA và IFDP – RSA, phương thức mã hóa thông điệp là EME – OAEP Lược đồ mã hóa RSAES - OAEP có thể hoạt động trên một thông điệp với độ dài tới k - 2hLen – 2 octet, trong đó hLen là độ dài đầu ra của hàm băm được

sử dụng và k là độ dài tính theo octet của modulo RSA của người nhận Thực chất phương thức mã hóa EME - OAEP là phương pháp độn thông điệp (thông thường có chiều dài ngắn hơn chiều dài modulo RSA) để có khối dữ liệu (EM) có chiều dài bằng modulo RSA trước khi áp dụng các RSAES mã hóa thông điệp

Trang 30

1/ Hoạt động mã hóa

EME - OAEP – ENCRYPT(n, e), M, L)

Tùy chọn: hàm băm Hash (chiều dài đầu ra là hLen octet)

L nhãn (không bắt buộc) để kết hợp với thông điệp M; giá trị mặc định cho

L nếu L không được cung cấp là một xâu rỗng

Output:

C Bản mã, một chuỗi octet với chiều dài k

Error: “thông điệp quá dài”; “nhãn quá dài”

Giả định: Khóa công khai RSA(n, e) là hợp lệ

Các bước:

1/ Kiểm tra các độ dài

a Nếu chiều dài của L lớn hơn giới hạn cho đầu vào của hàm băm (261– 1 octet đối với SHA – 1), ra “nhãn quá dài” và dừng

b Nếu mLen > k – 2hLen – 2, ra “Thông điệp quá dài” và dừng 2/ EME - OAEP encoding (hình bên dưới)

a Nếu nhãn L không được cung cấp, cho L là một xâu rỗng Tính lHash

= Hash(L), một chuỗi octet với chiều dài hLen (xem ghi chú bên dưới)

b Sinh một chuỗi octet PS gồ có k – mLen – 2hLen – 2 zero – octet Chiều dài của PS có thể là 0

c Ghép lHash, PS, một octet đơn với giá trị trong hệ cơ số 16 là 0x01,

và thông điệp M để được một khối dữ liệu DB với chiều dài k – hLen – 1 octet:

DB = lHash || PS || 0x01 || M

d Sinh ngẫu nhiêu một chuỗi octet seed (hạt giống) với chiều dài hLen

e dbMask = MGF (seed, k – hLen – 1)

f maskedDB = DB dbMask

g seedMask = MGF (maskedDB, hLen)

h maskedSeed = seed seedMask

Trang 31

i Ghép một octet đơn với giá trị trong hệ cơ số 16 là 0x00, maskedSeed, và maskedDB để đƣợc một thông điệp mã hóa EM với chiều dài k octet:

EM = 0x00 || maskedSeed || maskedDB 3/ RSA encryption

a Chuyển đổi thông điệp mã hóa EM sang dạng số nguyên m biểu diễn thông điệp:

m = OS2IP (EM)

b Áp dụng nguyên thủy mã hóa RSAEP với khóa công khai RSA (n, e)

và biểu diễn thông điệp m để sinh ra một số nguyên biểu diễn bản mã c:

c = RSAEP ((n, e), m)

c Chuyển đổi biểu diễn bản mã c sang dạng biểu diễn C gồm k octet

C = I2OSP (c, k) 4/ Ra bản mã C

Hình 2.4: Sơ đồ mã hoá EME – OAEP [13]

Trang 32

Ghi chú: Nếu L là một xâu rỗng giá trị băm lHash tương ứng có thể mang các

giá trị như dưới đây, ứng với hàm băm được sử dụng

SHA – 1: (0x) da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709

SHA – 256: (0x) e3b0c442 98fc1c14 9afbf4c8 996fb924 649b934c a495991b 7852b855

SHA – 384: (0x) 38b060a7 51ac9638 4cd9327e b1b1e36a 21fdb711 14be0743 4c0cc7bf 63f6e1da 274edebf e76f65fb d51ad2f1 4898b95b SHA – 512: (0x) cf83e135 7eefb8bd f1542850 d668007 d620e405 ob5715dc 83f4a921 d36ce9ce 47d0d13c 5d85f2b0 ff8318d2 877eec2f 63b931bd 47417a81 a538327a f927da3e

Hình 2.5: Tóm lược quy trình xử lý RSAES – OAEP - ENCRYPT

2/ Hoạt động giải mã

Tùy chọn: hàm băm (chiều dài đầu ra là hLen octet)

MGF hàm sinh mặt nạ

Input:

K: Khóa bí mật RSA của người nhận (k là chiều dài modulo RSA n)

C: bản mã, một chuỗi octet với chiều dài k, trong đó k 2hLen + 2

L: nhãn tùy chọn, kết hợp với thông điệp được thẩm định; giá trị mặc định cho

l, nếu L không được cung cấp, là một xâu rỗng

Trang 33

Output:

M: thông điệp, một chuỗi octet với chiều dài mLen, trong đó mLen k – 2hLen – 2

Error: “Lỗi giải mã”

Các bước:

1/ Kiểm tra độ dài:

a Nếu chiều dài của L lớn hơn giới hạn đầu vào của hàm băm (261 – 1 octet đối với SHA – 1), ra lỗi “Lỗi giải mã” và dừng

b Nếu chiều dài của bản mã C khác k octet, ra “Lỗi giải mã” và dừng

c Nếu k < 2hLen + 2, ra “Lỗi giải mã” và dừng

2/ RSA decryption:

a Chuyển đổi bản mã C sang dạng biểu diễn số nguyên của bản mã c:

c = OS2IP©

b Áp dụng nguyên thủy giải mã RSADP với khóa bí mật RSA K và biểu diễn bản

mã c để sinh ra một thông điệp ở dạng số nguyên m: m = RSADP(K, c)

Nếu RSADP đƣa ra “Biểu diễn bản mã nằm ngoài phạm vi” (có nghĩa là c n), ra “Lỗi giải mã” và dừng

c Chuyển đổi biểu diễn thông điệp m về dạng thông điệp mã hóa EM với chiều dài k octet: EM = I2OSP(m, k)

3/ EME - OAEP decoding:

a Nếu nhãn L không đƣợc cung cấp, L là một xâu rỗng Gán lHash = Hash (L), một chuỗi octet với chiều dài hLen

b Tách rời thông điệp mã hóa EM ra một octet đơn Y, một chuỗi octet maskedSeed với chiều dài hLen, và một chuỗi octet maskedDB với chiều dài k – hLen – 1:

EM = Y || maskedSeed || maskedDB

c seedMask = MGF (maskedDB, hLen)

d seed = maskedSeed seedMask

e dbMask = MGF (seed, k – hLen – 1)

f DB = maskedDB dbMask

g Tách DB ra một chuỗi octet lHash’ với chiều dài hLen, một chuỗi độn (có thể rỗng) PS bao gồm octet với giá trị biểu diễn trong cơ số 16 là 0x00 và một thông điệp M:

DB = lHash’ || PS || 0x01 || M Nếu không có octet với giá trị 0x01 (cơ số 16) ngăn cách PS và M, nếu

Trang 34

Hình 2.6: Tóm lược quy trình xử lý RSAES – OAEP - DECRYPT

2.2.7 Ý nghĩa của việc áp dụng EME - OAEP trước khi mã hóa RSA

Nếu không thực hiện việc độn thông điệp M, quá trình chuyển đổi M sang dạng số nguyên m sẽ có thể rơi vào một số trường hợp sau:

1/ m = 0 hoặc m = 1 thì RSADP sẽ tạo ra các bản mã có giá trị tương ứng (với khóa bất kỳ)

2/ Khi mã hóa với số mũ nhỏ (chẳng bạn e = 3) và m cũng có giá trị nhỏ (m <

nl/e) khi đó phép tính modulo là không có ý nghĩa, như vậy đối phương sẽ dễ tìm ra bản rõ m bằng việc khai căn bậc e của c

Mặt khác, RSA là thuật toán mã hóa tất định (xác định) nghĩa là với một bản

rõ ban đầu, cùng một khóa công khai được sử dụng để mã hóa thì một bản mã duy nhất được tạo ra Do đó đối phương có thể tấn công hệ mật bằng phương pháp tấn công lựa chọn bản rõ Phương pháp chuyển đổi bản rõ EME - OAEP được áp dụng nhằm tránh các vấn đề nêu ở trên (chú ý rằng quá trình độn thông điệp M có thể sinh ra tương ứng nhiều thông điệp mã hóa EM khác nhau vì có sự tham gia của nhiều yếu tố - Seed và

do đó có thể sinh ra nhiều bản mã C tương ứng với một bản rõ M), EME - OAEP cũng được các nhà nghiên cứu phân tích kỹ lưỡng để hệ mật tránh được các dạng tấn công phức tạp khác

I2OISP RSADP

Trang 35

2.2.8 Vấn đề sinh khóa RSA

Như đã nói trong mục 3.6.1 kỹ thuật sinh khóa và kiểm tra tính hợp lệ khóa RSA không bao hàm trong các chuẩn PKCS#1 v2.1 Tuy nhiên để tiện theo dõi, kỹ thuật sinh khóa RSA sẽ được trình ngày ngay dưới đây

1/ Thuật toán sinh số nguyên tố ngẫu nhiên

PG(r,s,e)

Input: r – cận dưới cho số nguyên tố sẽ được sinh ra

s – cận trên cho số nguyên tố sẽ được sinh ra

6/ Nếu UCLN(p – 1, e) ≠ 1 thì quay lại bước 2

7/ Lấy v, w sao cho w là số lẻ và p – 1 = w.2w

8/ Chọn một số nguyên dương t sao cho việc kiểm tra tính nguyên tố ở bước 8 thành công với xác suất lớn

Ghi chú: phương pháp sinh số nguyên tố ngẫu nhiên ở trên sử dụng thuật toán

xác suất Rabin – Miller kiểm tra số nguyên tố tại bước 8

Trang 36

2/ Thuật toán sinh khóa RSA

RSAKG(L, e)

Input: L – chiều dài tính theo bit của modulo n

e – số mũ công khai, một số nguyên lẻ lớn hơn 1

3 Tính n = p.q được khóa công khai (n, e)

4 Tính các tham số cần thiết cho khóa bí mật K

5 Ra khóa công khai và khóa bí mật

Ghi chú:

Thuật toán trên đây sinh khóa cho trường hợp modulo RSA n là tích của 2 số nguyên tố Việc cài đặt thuật toán RSA đa nguyên tố yêu cầu việc sinh khóa với n là tích của 3 số nguyên tố trở lên, khi đó thuật toán cũng tương tự như trên nhưng cần thay đổi một vài thông số

Trang 37

2.3 CHUẨN MÃ HÓA DỮ LIỆU TIÊN TIẾN – AES

2.3.1 Mục đích nghiên cứu chuẩn AES

Việc phải tính toán trên các số nguyên lớn làm cho tốc độ của thuật toán RSA chậm đáng kể so với các thuật toán mã hóa khóa đối xứng (như DES, AES) vì lý do này người ta thường không sử dụng thuật toán RSA để xử lý (mã hóa và giải mã) trực tiếp các thông điệp dài Thuật toán RSA thường được sử dụng kết hợp với một thuật toán mã hóa đối xứng Điển hình nhất, người ta sử dụng thuật toán mã hóa đối xứng như DES hay AES để mã hóa trực tiệp thông điệp và sử dụng thuật toán RSA đẻ mã hóa khóa bí mật của DES hay AES

Ta sẽ sử dụng thuật toán RSA đa nguyên tố kết hợp với AES để xây dựng chương trình ứng dụng Vì mục đích này, việc nghiên cứu và đưa vào lý thuyết về chuẩn mã hóa tiên tiến AES là cần thiết

Hình 2.7: Sơ đồ kết hợp RSA và AES

Plaintext ASE Encryption Ciphertex ASE Decryption Plaintext

RSA Decryption ASE

RSA Private key

Bob

Bob

Trang 38

2.3.2 Tổng quan

AES (viết tắt của Advanced Encryption Standard) là một thuật toán mã hoá được sử dụng để bảo vệ dữ liệu điện tử, được chính phủ Hoa Kỳ áp dụng làm tiểu chuẩn mã hóa, thay thế chuẩn DES AES được NIST (viện tiêu chuẩn và công nghệ quốc gia của Hoa Kỳ) công bố trong FIPS PUPS 197 (Federal Information Processing Standard Publication 197) ngày 21/11/2001 AES được thiết kế bởi hai nhà mã hoá học người Bỉ: Joan Daemen và Vincent Rijmen, lấy tên chung là Rijndael

Người ta có cách gọi khác nhau về thuật toán AES: AES – 128, AES – 129, AES – 256, tương ứng chiều dài khóa sử dụng Hiện nay thuật toán AES - 128 được sử dụng rộng rãi trong giao dịch điện tử Phần cài đặt sẽ sử dụng thuật toán AES – 128, nên các phần còn lại của chương chỉ đề cập đến thuật toán AES – 128, khi nói thuật toán AES ngầm hiều là AES – 128;

2.3.3 Các khái niệm cơ sở

2.3.3.1 Input, Output, Key

Input, Output, Key cho thuật toán AES đều là các chuỗi 128 bit (tương ứng 16 byte) Một chuỗi như thế thường được gọi là một khối (block), số bit chứa trong một chuỗi được gọi là chiều dài chuỗi Các bit trong chuỗi được đánh số từ 0, bắt đầu từ bit đầu tiên cho tới bit cuối cùng Nếu i là chỉ số cho bit nào đó trong block 128, thì i nằm trong khoảng: 0 i 128

2.3.3.2 Byte

Đơn vị cơ sở được xử lý trong thuật toán AES là byte Input, output, key đều được xử lý như mảng một chiều 16 byte Các byte cũng được đánh số thứu tự bắt đầu

từ 0 cho byte đầu tiên Nếu n là chỉ số cho một byte nào đó, thì n nằm trong khoảng: 0

n 16 Các mảng 16 byte được biểu diễn (ký hiệu) dưới dạng sau: a0a1a2 a15

Mỗi byte là một chuỗi tuần tự 8 bit ta thường biểu diễn một byte như sau {b7,

b6, b5, b4, b3, b2, b1, b0), bi = 0 hoặc 1 Mỗi byte tương ứng với một đa thức nhị phân, với bậc cao không cao hơn 7:

Theo cách biểu diễn này, ta thấy sự tương ứng này là 1 – 1 giữa các byte trong tập 256 byte và các phần tử của trường hữu hạn GF(28

Trang 39

Bit Pattern Character Bit Pattern Character

Bảng 2.1: Thay thế dãy 4 bit sang cơ số 16

Một vài toán tử của trường hữu hạn yêu cầu việc đưa vào một bit (b8) vào bên trái của một byte – 8bit Khi có thếm bit mở rộng này thì ta biểu diễn byte – 9bit bằng việc thêm vào {01} trước byte 8 – bit Ví dụ: {01} {1b}

2.3.3.3 Ma trận trạng thái (State Matrix)

Thuật toán AES bao gồm một tập các toán tử thực thi và làm thay đổi một ma trận hai chiều được gọi là ma trận trạng thái Ma trận trạng thái là ma trận cỡ 4x4 chứa

16 byte

Quy trình mã hóa AES như sau: ban đầu 16 byte của Input được nạp vào ma trận trạng thái, khi đó ma trận trạng thái được khởi tạo trạng thái đầu Tiếp theo là dãy các toán tử thực thi trên ma trận trạng thái, với sự tham gia của khóa mật AES (thực ra

là 44 khóa con sinh bởi khóa ban đàu 16 byte, mỗi khó con là một word – 4byte) Kết thúc quá trình, trạng thái cuối của ma trận trạng thái được nạp vào output Quy trình giải mã diễn ra ngược lại

Ta giả sử Input = in0, in1, in2,… in15 Khi đó ta có trạng thái khởi đầu ma trận trạng thái:

n0 n4 n8 n12

n1 n5 n9 n13

n2 n6 n10 n14

Trang 40

2.3.3.4 Hộp thay thế S – Box và InvS – Box

S – Box là một bảng 16x16 các byte Các cột và dòng của S – Box được đánh số thứ tự 0, 1, … 9, a, b, c, d, e, f

Đầu vào của S – Box là một byte, giả thiết {x, y} (biểu diễn theo hệ cơ số 16 Hexadecimal) thì đầu ra của S – Box là byte nằm trên dòng x cột y của bảng S – Box

Tương ứng với bảng S – Box có bảng InvS – Box thỏa mãn:

InvS – Box(S – Box(b)) = b, trong đó b là một byte bất kỳ

InvS – Box được sử dụng cho quá trình giải mã Dưới đây là hai bảng S – Box và InvS – Box được sử dụng:

Hình 2.8: Hộp S –Box sử dụng trong quá trình mã hoá AES [14]

Hình 2.9: Hộp InvS –Box sử dụng trong quá trình mã hoá AES [14]

Ngày đăng: 25/03/2015, 11:26

HÌNH ẢNH LIÊN QUAN

Hình 2.2: Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12] - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 2.2 Mô hình truyền thông sử dụng hệ mã hoá khoá đối xứng [12] (Trang 16)
Hình 2.3: Mô hình truyền thông sử dụng hệ mã hoá khoá công khai [12] - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 2.3 Mô hình truyền thông sử dụng hệ mã hoá khoá công khai [12] (Trang 17)
Hình 2.4: Sơ đồ mã hoá EME – OAEP [13] - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 2.4 Sơ đồ mã hoá EME – OAEP [13] (Trang 31)
Hình 2.6: Tóm lược quy trình xử lý RSAES – OAEP - DECRYPT - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 2.6 Tóm lược quy trình xử lý RSAES – OAEP - DECRYPT (Trang 34)
Hình 2.7: Sơ đồ kết hợp RSA và AES - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 2.7 Sơ đồ kết hợp RSA và AES (Trang 37)
Bảng 2.1: Thay thế dãy 4  bit sang cơ số 16 - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Bảng 2.1 Thay thế dãy 4 bit sang cơ số 16 (Trang 39)
Hình 3.7: Xây dựng mã Huffman - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 3.7 Xây dựng mã Huffman (Trang 58)
Hình 3.8: Lưu đồ giải mã Fanon, Shanon, Huffman - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 3.8 Lưu đồ giải mã Fanon, Shanon, Huffman (Trang 60)
Bảng 3.4: Quá trình nén xâu “bcabbcbccbababc” theo thuật toán LZ77 - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Bảng 3.4 Quá trình nén xâu “bcabbcbccbababc” theo thuật toán LZ77 (Trang 67)
Sơ đồ nén - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Sơ đồ n én (Trang 69)
Bảng 3.7: Quá trình nén  bằng thuật toán LZ78 bản mã - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Bảng 3.7 Quá trình nén bằng thuật toán LZ78 bản mã (Trang 72)
Sơ đồ giải nén - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Sơ đồ gi ải nén (Trang 77)
Bảng 3.9: Quá trình giải nén bản mã “001352411” theo thuật toán LZW - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Bảng 3.9 Quá trình giải nén bản mã “001352411” theo thuật toán LZW (Trang 79)
Hình 4.8: Giao diện chương trình thử nghiệm - Nghiên cứu phối hợp hai phương pháp nén và mã hóa thông tin
Hình 4.8 Giao diện chương trình thử nghiệm (Trang 92)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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