Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng
Để đảm bảo tính toàn vẹn của thông tin, cần phải phải sử dụng khóa hợp lý. Khi
tăng độ dài khóa, sự tính toán tăng lên nhiều lần theo sự tăng lên của độ dài khoá [4].
Một khoá 32 bit đòi hỏi 232 bước thử. Điều này có thể được thực hiện tại một máy
tính cá nhân. Một khoá 40 bit đòi hỏi một máy tính cá nhân thử trong vòng khoảng
một tuần lễ. Một hệ thống mã hoá 56 bit đòi hỏi nhiều máy tính cá nhân hợp tác trong
vòng vài tháng nhưng có thể dễ dàng phá bởi một thiết bị phần cứng đặc biệt. Giá của
phần cứng này có thể chấp nhận được đối với một tổ chức tội phạm, một công ty hàng
đầu hay một chính phủ. Khoá 64 bit hiện nay có thể được phá bởi một chính phủ,
khoá 128 bit được coi là an toàn trong những năm gần đây.
Nhiều mã có thể bị phá không bằng cách thử mọi khả năng. Nói chung, rất khó
để thiết kế một thuật toán mã hoá mà không thể bị bẻ khóa. Rất khó để giữ bí mật cho
một thuật toán mã hoá bởi một người nào đó quan tâm có thể thuê một chuyên gia bẻ
khoá để dịch lại và khám phá ra phương pháp mã hoá của chúng ta. Thuật toán mã
hoá và chính sách sử dụng là những điểm quan tâm nhất trong việc phá vỡ một hệ
thống [4, 5].
Việc bảo mật, xác thực, đảm bảo tính toàn vẹn của dữ liệu hiện nay sử dụng
hàm băm kết hợp với mã hoá khoá công khai đang được đánh giá là hết sức hiệu quả.
Ví dụ, việc ứng dụng trong chữ ký số: Người gửi sẽ tạo một đoạn mã bǎm, mã hoá
đoạn mã bǎm bằng khoá riêng của mình và người nhận sẽ dùng khoá công khai của
người gửi để giải đoạn mã bǎm của người gửi, sau đó so sánh với đoạn mã bǎm của
thông điệp nhận được (được tạo bằng cùng một thuật toán). Nếu trùng nhau thì người
nhận có thể tin rằng thông điệp nhận được không bị thay đổi trong quá trình truyền
tải trên mạng và xuất phát từ người gửi xác định.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
********************************************
NGUYỄN TOÀN THẮNG
NGHIÊN CỨU XÂY DỰNG
MỘT LỚP HÀM BĂM MỞ RỘNG MỚI
VÀ KHẢ NĂNG ỨNG DỤNG
LUẬN ÁN TIẾN SĨ KỸ THUẬT
HÀ NỘI – 2017
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
********************************************
NGUYỄN TOÀN THẮNG
NGHIÊN CỨU XÂY DỰNG
MỘT LỚP HÀM BĂM MỞ RỘNG MỚI
VÀ KHẢ NĂNG ỨNG DỤNG
Chuyên ngành : Kỹ thuật Điện tử
Mã ngành : 62.52.02.03
LUẬN ÁN TIẾN SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC:
GS.TSKH. NGUYỄN XUÂN QUỲNH
HÀ NỘI – 2017
i
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của tôi. Các nội dung là
trung thực và kết quả trình bày trong luận án chưa được công bố ở bất kỳ công
trình nghiên cứu nào khác.
Tác giả
Nguyễn Toàn Thắng
ii
LỜI CẢM ƠN
Tôi xin tỏ lòng biết ơn đến thầy GS.TSKH. Nguyễn Xuân Quỳnh, người đã trực
tiếp định hướng, hướng dẫn và tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình
nghiên cứu.
Tôi xin chân thành cảm ơn Học viện Công nghệ Bưu chính Viễn thông - nơi tôi
làm luận án - đã tạo những điều kiện thuận lợi để giúp tôi hoàn thành chương trình
nghiên cứu. Tôi xin cảm ơn khoa Quốc tế và Đào tạo sau đại học, Ban Tuyên giáo
Tỉnh ủy, Sở Thông tin và Truyền thông tỉnh Ninh Bình, cũng như các đồng nghiệp
đã tạo điều kiện giúp đỡ tôi hoàn thành được đề tài nghiên cứu của mình.
Cuối cùng là sự biết ơn tới gia đình, bạn bè đã tạo điều kiện, động viên tôi, cho
tôi có đủ nghị lực để hoàn thành luận án.
Hà Nội, tháng 11 năm 2017
iii
MỤC LỤC
LỜI CAM ĐOAN ..................................................................................................... i
LỜI CẢM ƠN .......................................................................................................... ii
MỤC LỤC ............................................................................................................... iii
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT ............................................. vi
DANH MỤC CÁC BẢNG .................................................................................... viii
DANH MỤC CÁC HÌNH VẼ.................................................................................. x
PHẦN MỞ ĐẦU ...................................................................................................... 1
1. MỞ ĐẦU ....................................................................................................... 1
2. TÌNH HÌNH NGHIÊN CỨU ......................................................................... 2
3. LÝ DO CHỌN ĐỀ TÀI ................................................................................. 7
4. MỤC TIÊU NGHIÊN CỨU .......................................................................... 8
5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU .................................................... 9
6. PHƯƠNG PHÁP NGHIÊN CỨU ................................................................. 9
7. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI ............................ 9
CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ VÀ HÀM BĂM .............................. 10
1.1. GIỚI THIỆU ................................................................................................ 10
1.2. PHƯƠNG PHÁP XÂY DỰNG CÁC HỆ MẬT CƠ BẢN .......................... 10
1.2.1. Phương pháp xây dựng các hệ mật khóa bí mật .......................... 10
1.2.2. Phương pháp xây dựng các hệ mật khóa công khai .................... 24
1.3. HÀM BĂM .................................................................................................. 31
1.3.1. Mô tả hàm băm ............................................................................ 31
1.3.2. Các hàm băm có khóa ................................................................. 33
1.3.3. Các hàm băm không có khóa ...................................................... 34
1.3.4. Một số phương pháp toàn vẹn dữ liệu và xác thực thông báo .... 36
1.4. CẤP SỐ NHÂN CYCLIC............................................................................ 38
iv
1.4.1. Nhóm nhân của vành đa thức ...................................................... 38
1.4.2. Các cấp số nhân cyclic cấp n ....................................................... 38
1.4.3. Phân hoạch vành đa thức ............................................................. 39
1.5. KẾT LUẬN CHƯƠNG I ............................................................................. 41
CHƯƠNG 2. XÂY DỰNG CÁC HÀM BĂM MỚI ............................................ 43
2.1. GIỚI THIỆU ................................................................................................ 43
2.2. HÀM BĂM DỰA TRÊN HỆ MẬT THEO SƠ ĐỒ LAI-MASSEY ........... 43
2.2.1. Hệ mật sử dụng cấp số nhân cyclic theo sơ đồ LAI-MASSEY .. 43
2.2.2. Xây dựng hàm băm trên cơ sở hệ mật ......................................... 50
2.3. HÀM BĂM DỰA TRÊN HỆ MẬT MÃ LAI GHÉP .................................. 55
2.3.1. Bài toán Logarit rời rạc và hệ mật POHLIG-HELLMAN .......... 56
2.3.2. Đề xuất một phương pháp xây dựng hệ mật mã lai ghép ............ 59
2.3.3. Khả năng xây dựng hàm băm từ hệ mật ...................................... 66
2.4. HÀM BĂM SỬ DỤNG CÁC CẤP SỐ NHÂN CYCLIC ........................... 67
2.4.1. Sơ đồ hàm băm MDC-2 sử dụng lưu đồ FEISTEL ..................... 67
2.4.2. Xây dựng hàm băm và kết quả mô phỏng ................................... 68
2.5. KẾT LUẬN CHƯƠNG II ............................................................................ 74
CHƯƠNG 3. XÂY DỰNG MỘT LỚP CÁC HÀM BĂM MỞ RỘNG MỚI ...... 76
3.1. GIỚI THIỆU ................................................................................................ 76
3.2. XÂY DỰNG HÀM BĂM MỞ RỘNG MỚI MDC-3 .................................. 77
3.3. HÀM BĂM DỰA TRÊN HỆ MẬT MÃ KHỐI KẾT HỢP SƠ ĐỒ LAI-
MASSEY VỚI FEISTEL ............................................................................ 86
3.3.1. Hệ mật mã khối kết hợp sơ đồ LAI-MASSEY và FEISTEL ...... 87
3.3.2. Xây dựng hàm băm trên cơ sở hệ mật kết hợp ............................ 93
3.4. XÂY DỰNG HÀM BĂM MỞ RỘNG MỚI MDC 512 BÍT ....................... 98
3.4.1. Mô tả hệ mật mã khối 256 bít ..................................................... 98
3.4.2. Đánh giá độ khuếch tán của hệ mật ........................................... 102
v
3.4.3. Xây dựng hàm băm 512 bit trên cơ sở hệ mật .......................... 106
3.5. KẾT LUẬN CHƯƠNG III ........................................................................ 110
CHƯƠNG 4. KHẢ NĂNG ỨNG DỤNG CỦA HÀM BĂM XÂY DỰNG MỚI112
4.1. GIỚI THIỆU .............................................................................................. 112
4.2. CHỮ KÝ SỐ .............................................................................................. 112
4.3. KIỂM TRA TÍNH TOÀN VẸN CỦA THÔNG ĐIỆP .............................. 122
4.4. BẢO VỆ MẬT KHẨU .............................................................................. 125
4.5. KẾT LUẬN CHƯƠNG IV ........................................................................ 128
KẾT LUẬN VÀ KIẾN NGHỊ.............................................................................. 130
1. KẾT LUẬN ................................................................................................... 130
2. KIẾN NGHỊ HƯỚNG PHÁT TRIỂN .......................................................... 130
DANH MỤC CÁC CÔNG TRÌNH CÔNG BỐ CỦA TÁC GIẢ ........................ 132
TÀI LIỆU THAM KHẢO .................................................................................... 134
PHỤ LỤC A ......................................................................................................... 140
PHỤ LỤC B ......................................................................................................... 179
vi
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Ký hiệu Tiếng Anh Tiếng Việt
CAST Carlisle Adams and Stafford Tavares Hệ mật CAST
CBC Cipher Block Chaining Chế độ liên kết khối mã
CFB Cipher Feedback Block Chế độ phản hồi mã
CGP Cyclic Geometic Progressions Cấp số nhân cyclic
CMG Cyclic Multiplicate Group Nhóm nhân cyclic
CRC Cyclic Redundancy Check Kiểm tra độ dư tuần hoàn
CRF Collision Resistant Function Hàm kháng va chạm
CRHF Collision Resistant Hash Function Hàm băm kháng va chạm
0
d Hamming distance Khoảng cách Hamming
deg Degree Bậc của đa thức
DEA Data Encryption Algorithm Thuật toán mã dữ liệu
DES Data Encryption Standard Chuẩn mã dữ liệu
( )e x Equity Đa thức lũy đẳng
ECB Electronic Codebook Chế độ quyển mã điện tử
Field Trường
G Group Nhóm
GF(p) Group Field Trường đặc số p
h Hash Hàm băm
I Ideal Trường hợp lý tưởng
IDEA International Data Encryption
Algorithm
Thuật toán mã hóa dữ liệu
quốc tế
IV Initial Value Giá trị khởi tạo
MAC Message Authentication Code Mã xác thực thông báo
MDC Manipulation Detection Code Mã phát hiện sự sửa đổi
NIST National Institute for Standards and
Technology (US)
Viện Quốc gia về Tiêu
chuẩn và Công nghệ
OFB Output Feedback Chế độ phản hồi đầu ra
ord Order Cấp của đa thức
vii
OWF One-Way Function Hàm một chiều
OWHF One-Way Hash Function Hàm băm một chiều
R Ring Vành
RIPE Race Integrity Primitives Evaluation Đánh giá mức độ toàn vẹn
nguyên gốc.
RSA Rivest Shamir Adleman Thuật toán mã hóa RSA
SHA Secure Hash Algorithm Thuật toán băm SHA
SHS Secure Hash Standard Tiêu chuẩn băm an toàn
TDEA Triple Data Encryption Algorithm Thuật toán mã hóa TDEA
UOWHF Universal One-Way Hash Function Hàm băm một chiều phổ
thông
VEST Very Efficient Substitution
Transposition
Chuyển vị thay thế hiệu
quả cao
W Weight Trọng số
viii
DANH MỤC CÁC BẢNG
Bảng 2.1. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã ........................... 49
Bảng 2.2. Khoảng cách Hamming dH(C1,Ci) của hàm băm khi thay đổi .................. 52
Bảng 2.3. Khoảng cách Hamming dH(MD1,MDi) giữa các cặp giá trị băm ............ 53
Bảng 2.4. Giá trị hàm mũ và Logarit rời rạc cơ số 2 của các phân tử ...................... 57
Bảng 2.5. Hoán vị ban đầu (IP) ................................................................................. 59
Bảng 2.6. Hoán vị đảo (IP-1) ..................................................................................... 61
Bảng 2.7. Khoảng cách Hamming của một vài cặp bản mã khi thay đổi ................. 64
Bảng 2.8. Khoảng cách Hamming của một vài cặp bản mã khi thay đổi ................. 65
Bảng 2.9. Khoảng cách Hamming dH(MD1, MDi) khi các khối dữ liệu khác khối .. 69
Bảng 2.10. Khoảng cách Hamming dH(MD1, MDi) giữa các cặp giá trị băm ......... 72
Bảng 3.1. Bảng hoán vị ban đầu (IP) ........................................................................ 79
Bảng 3.2. Bảng hoán vị đảo (IP-1) ............................................................................. 80
Bảng 3.3. Khoảng cách Hamming dH(MD0, MDi) khi các bản tin dữ liệu .............. 82
Bảng 3.4. Khoảng cách Hamming dH(MD0, MDi) của 8 mã băm ........................... 84
Bảng 3.5. Trọng số của các khóa tại các bước băm .................................................. 85
Bảng 3.6. Khoảng cách Hamming dH(C0,CI) giữa các cặp bản mã ........................... 91
Bảng 3.7. Khoảng cách Hamming dH(C0,CI) giữa các cặp bản mã ........................... 92
Bảng 3.8. Khoảng cách Hamming dH(C0,CI) của các mã băm .................................. 95
Bảng 3.9. Khoảng cách Hamming dH(C0,CI) của các mã băm .................................. 96
Bảng 3.10. Độ khuếch tán giữa các cặp bản mã của một vài bước tính toán ......... 103
Bảng 3.11. Kết quả của 10 lần tính độ khuếch tán khi thay đổi bản rõ .................. 104
ix
Bảng 3.12. Độ khuếch tán giữa các cặp bản mã của một vài bước ........................ 106
Bảng 3.13. Độ khuếch tán của một vài mã băm khi thay đổi dữ liệu ..................... 108
Bảng 3.14. Kết quả 10 lần tính khuếch tán của hàm băm ....................................... 109
x
DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Lưu đồ Feistel ........................................................................................... 12
Hình 1.2. Lưu đồ hoạt động của chương trình .......................................................... 13
Hình 1.3. Lưu đồ Lai-Massey ................................................................................... 14
Hình 1.4. Lưu đồ mã hóa .......................................................................................... 16
Hình 1.5. Hàm f của DES .......................................................................................... 17
Hình 1.6. Tính bảng khóa DES ................................................................................. 21
Hình 1.7. Phân loại các hàm băm .............................................................................. 32
Hình 1.8. Sơ đồ MAC ............................................................................................... 33
Hình 1.9. Các sơ đồ hàm băm độ dài đơn ................................................................. 34
Hình 1.10. Thuật toán MDC-2 .................................................................................. 35
Hình 1.11. Thuật toán MDC-4 .................................................................................. 36
Hình 1.12. Toàn vẹn dữ liệu dùng MAC .................................................................. 37
Hình 1.13. Toàn vẹn dữ liệu dùng MDC và mã hóa ................................................. 37
Hình 1.14. Toàn vẹn dữ liệu dùng MDC và kênh tin cậy ......................................... 37
Hình 2.1. Sơ đồ khối bộ mã hóa ................................................................................ 45
Hình 2.2. Mạch điện mã hóa f với 2( ) 1a x x x ................................................ 47
Hình 2.3. Sơ đồ hàm băm Matyas-Mayer–Oseas .................................................... 51
Hình 2.4. Sơ đồ khối của hệ mật ............................................................................... 60
Hình 2.5. Sơ đồ mã hóa của hệ mật .......................................................................... 60
Hình 2.6. Tách các khóa con cho các vòng mã hóa .................................................. 62
Hình 2.7. Sơ đồ bộ mã hóa ........................................................................................ 67
xi
Hình 3.1. Sơ đồ hàm băm MDC-3 đề xuất ............................................................... 77
Hình 3.2. Sơ đồ khối mật mã E ................................................................................. 78
Hình 3.3. Sơ đồ khối mã hóa f với khóa 4 5
1 1K x x .......................................... 81
Hình 3.4. Sơ đồ mã hóa của hệ mật ............................................... ... + Hàm tính toán độ khuếch tán của hàm băm 512 bit theo sử dụng hệ mật
256 bit trên vành chẵn
function MD=bamMDC_2_512(x,H0,Ka)
% Thuc hien ham bam theo so do MDC -2 (Miyaguchi-Preneel)
%
% He mat Feistel_4b_256_2k
% Cu phap: MD = bamMDC_2_512(msg,H0,Ka)
% MD: Dau ra ma bam 512 bit
% msg: Ban tin ro dau vao
% H0: Ma bam khoi tao, 256 bit
% Ka: Phan tu sinh cua cap so nhan tao khoa dau tien, 64 bit
165
%------- Tao cac khoi 512 bit cua dau vao x-------------
msg=x;
sox = length(msg);
while mod(sox,512)~=0
msg=[msg 0]; % Chen them bit "0" cho moi khoi du 256 bit
sox=length(msg);
end
if sox == 512 % Chi co mot khoi ban tin
flag=0;
else
flag=1;
end
t=length(msg)/512;
msg=reshape(msg,512,t); % Chia ban tin thanh cac khoi 512 bit
msg=msg';
%--------- Tinh khoa k0 tu ma bam dau tien H0 --------
K0 = H0(1:4:252); % Lay 63 bit cho nua trai
Wk = mod(sum(K0),2); % Kiem tra tinh chan le
if Wk==1
K0(64)= 0; % trong so le --> bit 64 = 0
else
K0(64)= 1; % trong so chan --> bit 64 = 1
end
%$$$$$$$$$$$$$$$$$ Tinh toan buoc dau tien $$$$$$$$$$$$$$$$$$$$$$
XLi=msg(1,1:256);
XRi=msg(1,257:512);
EL = Feistel_4b_256_2k(XLi,K0,Ka); % Ma hoa nua trai
EL = xor(EL,XLi); % Cong voi ban tin vao
EL = xor_any(EL,K0); % Miyaguchi - Preneel
ER = Feistel_4b_256_2k(XRi,K0,Ka); % Ma hoa nua phai
166
ER = xor(ER,XRi); % Cong voi ban tin vao
ER = xor_any(ER,K0); % Miyaguchi - Preneel
HL = [EL(1:128) ER(129:256)]; % Trao nua dau ra ma bam nua trai
HR = [ER(1:128) EL(129:256)]; % Trao nua dau ra ma bam nua phai
%$$$$$$$$$$$$$$$$$$ Cac buoc tiep theo $$$$$$$$$$$$$$$$$$$$
if flag % Co hon 1 khoi ban tin
for jj=2:t % Bam tu khoi thu 2 den khoi t
%-------- tao khoa cho buoc tiep theo ----------------
KL = HL(1:4:252); % Lay 63 bit cho nua trai
Wk = mod(sum(KL),2); % Kiem tra tinh chan le
if Wk==1
KL(64)= 0; % trong so le --> bit 64 = 0
else
KL(64)= 1; % trong so chan --> bit 64 = 1
end
KR = HR(1:4:252);
Wk = mod(sum(KR),2); % Kiem tra tinh chan le
if Wk==1
KR(64)= 0; % trong so le --> bit 64 = 0
else
KR(64)= 1; % trong so chan --> bit 64 = 1
end
% --------- Bam khoi ban tin tiep theo------
msgi = msg(jj,:); % Khoi thu jj
XLi = msgi(1:256);
XRi = msgi(257:512);
EL = Feistel_4b_256_2k(XLi,KL,Ka); % Ma hoa voi khoa moi KL
EL = xor(EL,XLi);
167
EL = xor_any(EL,HL); % Miyaguchi - Preneel
ER = Feistel_4b_256_2k(XRi,KR,Ka); % Ma hoa voi khoa moi KR
ER = xor(ER,XRi);
ER = xor_any(ER,KR); % Miyaguchi - Preneel
HL = [EL(1:64) ER(65:128) EL(129:192) ER(193:256)];
% Trao nua dau ra ma bam nua trai
HR = [ER(1:64) EL(65:128) ER(129:192) EL(193:256)];
% Trao nua dau ra ma bam nua phai
end
end
%$$$$$$$$$$$$$$$$ Gia tri bam cuoi cung $$$$$$$$$$$$
MD = [HL HR];
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ Chương trình băm MDC-2-Feistel-New
function MD=bamMDC_2_Feistel_64(x,K0,Ka)
% Thuc hien ham bam theo so do MDC-2
% Ham ma hoa: Feistel_64
%
% Cu phap: MD = bamMDC_2_Feistel_64(msg,K0,Ka)
% MD: Dau ra ma bam 128 bit
% msg: Ban tin ro dau vao
% Ka: Phan tu dau cua CGP tao khoa dau tien x^53+1
% K0: Phan tu sinh cua CGP tao khoa dau tien
%------- Tao cac khoi n bit cua dau vao x-------------
msg=x;
168
sox = length(msg);
while mod(sox,128)~=0
msg=[msg 0]; % Chen them bit "0" cho du chieu dai moi khoi
128 bit
sox=length(msg);
end
if sox == 128 % Chi co mot khoi ban tin
flag=0;
else
flag=1;
end
t=length(msg)/128;
msg=reshape(msg,128,t); % Chia ban tin thanh cac khoi 128 bit
msg=msg';
%$$$$$$$$$$$$$$$$$ Tinh toan buoc dau tien $$$$$$$$$$$$$$$$$$$$$$
msgi=msg(1,:);
EL = Feistel_64(msgi(1:64),K0,Ka); % Ma hoa nua trai
EL = xor(EL,msgi(1:64)); % Cong voi ban tin vao
ER = Feistel_64(msgi(65:128),K0,Ka); % Ma hoa nua phai
ER = xor(ER,msgi(65:128)); % Cong voi ban tin vao
HL = [EL(1:32) ER(33:64)]; % Trao nua dau ra ma bam nua
trai
HR = [ER(1:32) EL(33:64)]; % Trao nua dau ra ma bam nua
phai
%$$$$$$$$$$$$$$$$$$ Cac buoc tiep theo $$$$$$$$$$$$$$$$$$$$
if flag % Co hon 1 khoi ban tin
169
for jj=2:t % Bam tu khoi thu 2 den khoi t
%-------- Trich tron khoa cho buoc tiep theo ----------------
%--- loai cac bit 8, 16, 24, 32, 40, 48, 56, 61,62 63,64
tg=reshape(HL,8,8);
tg=tg(1:7,:);
tg=reshape(tg,1,56);
KL = tg(1:53); % Lay 53 bit cho nua trai
Wk = mod(sum(KL),2); % Kiem tra tinh chan le
if Wk==1
KL(53)= xor(KL(53),[1]); % trong so le --> doi bit cuoi
end
tg=reshape(HR,8,8);
tg=tg(:,1:7);
tg=reshape(tg,1,56);
KR = tg(1:53); % Lay 53 bit cho nua trai
Wk = mod(sum(KR),2); % Kiem tra tinh chan le
if Wk==1
KR(53)= xor(KR(53),[1]); % trong so le --> doi bit cuoi
end
% --------- Bam khoi ban tin tiep theo------
msgi = msg(jj,:); % Khoi thu jj
EL = Feistel_64(msgi(1:64),K0,KL); % Ma hoa voi khoa moi KL
EL = xor(EL,msgi(1:64));
ER = Feistel_64(msgi(65:128),K0,KR); % Ma hoa voi khoa moi KR
ER = xor(ER,msgi(65:128));
HL = [EL(1:32) ER(33:64)]; % Trao nua dau ra ma bam
HR = [ER(1:32) EL(33:64)];
170
end
end
%$$$$$$$$$$$$$$$$ Gia tri bam cuoi cung $$$$$$$$$$$$
MD = [HL HR];
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ Chương trình tính toán khuếch tán khóa băm MDC-2-Feistel-New
% Tinh toan phan bo ham bam khi doi khoa
% Ham bam xay dung theo luoc do MDC-2 (Miyaguchi - Preneel) 128 bit;
% He mat Feistel_64
%---------- Chuan bi du lieu -------------------------
clear;
clc;
msg = double(rand(1,1280)>.5); % 10 khoi ban tin tao ngau nhien
%----------- Tao khoa khoi tao K0 -----------------------------
K01=[];
for ii=1:13
tg=dec2binvec(ii,4);
K01=[K01 tg];
end
Kihex=bin2hex(K01);
Kihex(14)='0'; % Hien thi bit cuoi cung la '0'
K01(53)=0; % Bit cuoi cua khoa = '0'
171
Ka=pol2bin([0 1 2]); % Phan tu dau cua cap so nhan K
ts = sum(K01);
%--------- Bam ban tin dau tien ---------------
E1=bamMDC_2_Feistel_64(msg,K01,Ka); % Du lieu bam khi chua thay
khoa
disp('Ket qua bam khi thay doi 1 bit du lieu');
disp(' Thu tu Khoa dau tien Ma bam
K/C Hamming Trong so (Ki)');
MDhex= bin2hex(E1);
fprintf('%5d %25s %35s %10d %14d\n',0,Kihex,MDhex,0,ts);
sohm=0; % Khoang cach Hamming ban ma dau
% ------ thay doi tung bit khoa ----------
for p=1:52
K0i=K01; % Lay lai khoa ban dau
% Phai thay doi 2 bit khoa de dam bao da thuc sinh co trong so le
K0i(p)=xor(K0i(p),[1]); % Thay doi bit khoa
K0i(53)=1; % Dam bao trong so le
ts=sum(K0i);
Ei=bamMDC_2_Feistel_64(msg,K0i,Ka); % Thuc hien Bam
hm=sum(xor(E1,Ei)); % Tinh so bit sai khac, khoang cach Hamming
Kihex=bin2hex(K0i);
Kihex(14)='1';
MDhex=bin2hex(Ei);
fprintf('%5d %25s %35s %10d %14d\n',p+1,Kihex,MDhex,hm,ts);
sohm=sohm+hm;
172
end
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/52);
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ Chương trình kiểm tra dữ liệu băm MDC-4-New
% Tinh toan do khuech tan cua ham bam MDC-4 512 bit, so do he mat LM
- Feistel 128 bit
% khi thay doi du lieu
% Khoa K la nhom nhan xay dung tren vanh X^61+1,
% voi khoa ban dau la H0
%---------- Chuan bi du lieu -------------------------
clear;
% clc;
msg1=[];
for ii=0:15
tg=dec2binvec(ii,4);
msg1=[msg1 tg ];
end
msg1 = [msg1 msg1]; % 128 bit
msg1=[msg1 msg1 msg1 msg1]; % 512 bit
msg2 = rand(1,9*512)>.5; % Cac khoi sau tao ngau nhien
msg =[msg1 msg2];
%----------- Khoa K ban dau (H0) (tren vanh 2 lop ke x61+1) --------
173
H0=[];
for ii=1:15
tg=dec2binvec(ii,4);
H0=[H0 tg ];
end
H0(61)=1;
%--------- Ma hoa ban tin dau tien ---------------
H1=bam_LM_Feistel_512(msg,H0); % Ban ma khi chua thay bit du lieu
msc=msg; % du lieu vao ban dau
disp('Ket qua khi thay doi 1 bit du lieu');
fprintf('%5s %15s %60s %85s\n','Thu tu','Bit thay doi','Ma
bam','Hamming');
% msghex=bin2hex(msg(1:512));
Chex= bin2hex(H1);
fprintf('%5d %10d %135s %10d\n',0,0,Chex,0);
% fid = fopen('5120.dat','a');
% fprintf('%10d %135s %10d\n',0,Chex,0);
% fprintf(fid,'%d %s %d\n',ii, ,pb); % Luu ket qua vao file Pb.dat
% fclose(fid);
sohm=0; % Tinh khoang cach Hamming
%------- Thay doi 1 bit trong dau tien cua ban tin dau vao ---------
for ii=1:1000
pp = round(3520*rand); % vi tri bit thay doi
msg = msc; % Ban tin ban dau
174
msg(pp) = xor(msg(pp),1); % thay doi 1 bit
% msg(ii) = xor(msg(ii),1); % thay doi 1 bit
Hi = bam_LM_Feistel_512(msg,H0);
hm=sum(xor(Hi,H1)); % Tinh so bit sai khac, khoang cach Hamming
%********************** Hien thi ket qua ***************************
% msghex=bin2hex(msg(1:512));
if (mod(ii,100)==0) | (mod(ii,100)==1) | (ii==2)|(ii==999)
Chex= bin2hex(Hi);
fprintf('%5d %10d %135s %10d\n',ii,pp,Chex,hm);
% fprintf('%5d %130s %135s %10d\n',pp,msghex,Chex,hm);
% fid = fopen('5120.dat','a');
% fprintf('%10d %135s %10d\n',ii,Chex,hm);
% % fprintf(fid,'%d %s %d\n',ii, ,pb); % Luu ket qua vao file
Pb.dat
% fclose(fid);
end
sohm=sohm+hm;
end
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/1000);
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ Chương trình kiểm tra khóa băm MDC-4-New
% Tinh toan do khuech tan cua ham bam MDC-4 512 bit, so do he mat LM
- Feistel 128 bit
% khi thay doi khoa
% Khoa K la nhom nhan xay dung tren vanh X^61+1,
% voi khoa ban dau la H0
175
%---------- Chuan bi du lieu -------------------------
clear;
clc;
msg = rand(1,5120)>.5; % Cac khoi sau tao ngau nhien
%----------- Khoa K ban dau (H0) (tren vanh 2 lop ke x61+1) --------
H0=[];
for ii=1:15
tg=dec2binvec(ii,4);
H0=[H0 tg ];
end
H0(61)=1;
%--------- Ma hoa ban tin dau tien ---------------
H1=bam_LM_Feistel_512(msg,H0); % Ban ma khi chua thay bit du lieu
H0hex=bin2hex(H0);
H0hex(16)=num2str(H0(61));
Chex= bin2hex(H1);
disp('Ket qua khi thay doi 2 bit khoa');
fprintf('%5s %20s %60s %85s %15s\n','Thu tu','Khoa','Ma
bam','Hamming','trong so H0');
fprintf('%5d %20s %135s %10d %10d\n',0,H0hex,Chex,0,sum(H0));
sohm=0; % Tinh khoang cach Hamming
%------- Thay doi 1 bit khoa khoi tao H0, bit 61 la bit kiem tra ---
for ii=1:60
H0i = H0; % Khoa ban dau
% p1 = round(60*rand);
% p2 = round(60*rand);
% if p1==p2
176
% p2 = mod(p1+5,60);
% end
%
% if p1==0
% p1=20; % Neu vao bit thu 0 thi thay bit 20 (khong co bit
thu tu 0)
% end
% if p2==0
% p2=40;
% end
% H0i(p1) = xor(H0i(p1),[1]); % Doi bit khoa
% H0i(p2) = xor(H0i(p2),[1]); % Doi bit khoa
H0i(ii)=xor(H0i(ii),[1]); %Thay doi bit khoa
% if xor(sum(H0i),2)==0 % Kiem tra trong so cua khoa
% H0i(61)=1;
% else
H0i(61)=0;
% end
Hi = bam_LM_Feistel_512(msg,H0i);
wH0i = sum(H0i);
hm=sum(xor(Hi,H1)); % Tinh so bit sai khac, khoang cach Hamming
%********************** Hien thi ket qua ***************************
H0hex=bin2hex(H0i);
H0hex(16)=num2str(H0i(61));
Chex= bin2hex(Hi);
fprintf('%5d %20s %135s %10d %10d\n',ii,H0hex,Chex,hm,wH0i);
sohm=sohm+hm;
% fid = fopen('Pb.dat','a');
% fprintf(fid,'%d %s %d\n',p+1, ,pb); % Luu ket qua vao file Pb.dat
177
% fclose(fid);
end
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/60);
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ Chương trình tính toán độ khuếch tán của hàm băm 512 bit theo sử dụng
hệ mật 256 bit trên vành chẵn, khi thay đổi dữ liệu
% Tinh toan phan bo ham bam khi doi du lieu
% He mat Feistel_4b_256_2k
% Ham bam xay dung theo luoc do MDC-2 (Miyaguchi - Preneel) 512 bit;
%---------- Chuan bi du lieu -------------------------
clear;
clc;
nmsg = 10; % So khoi ban tin 256 bit can bam
H0=[];
for ii=0:15 % Tao khioi ban tin dau x1 = (0123456789ABCDEF) x 2 x 2
tg=dec2binvec(ii,4);
H0=[H0 tg tg tg tg];
end
msg= double(rand(1,512*10)>.5); % 9 khoi tiep theo
%----------- Tao khoa khoi tao H0 -----------------------------
Ka=pol2bin([0 3 4]);
%--------- Bam ban tin dau tien ---------------
E1=bamMDC_2_512(msg,H0,Ka); % Du lieu bam khi chua thay bit du lieu
msghex=bin2hex(msg(1:512));
disp('Ket qua bam khi thay doi 1 bit du lieu');
disp(' Thu tu Vi tri thay doi Ma bam K/C Hamming');
Cihex= bin2hex(E1);
178
fprintf('%5d %10d %130s %10d\n',0,0,Cihex,0);
nol=100;
for jj=1:10
sohm=0; % Khoang cach Hamming ban ma dau
%------- Bam cac ban tin khac 1 bit voi ban tin dau tien ----------
for p = 1:nol % Thay ngau nhien 100 lan, moi lan 1 bit
msc = msg; % du lieu vao ban dau
posit = round(rand(1)*5120); %Vi tri bit thay doi
if posit==0
posit=1;
end
msc(posit) = xor(msc(posit),[1]);
E = bamMDC_2_512(msc,H0,Ka); % Bam ban tin da thay doi du lieu
hm = sum(xor(E1,E)); % Tinh khoang cach Hamming
%***** Hien thi ket qua ***************************
MDhex = bin2hex(E);
fprintf('%5d %10d %130s %10d\n',p,posit,MDhex,hm);
fprintf('%5d %10d %10d\n',p,posit,hm);
sohm = sohm + hm; % Tich luy tong khoang cach Hamming
end
fprintf('Khoang cach Hamming trung binh: ');
fprintf('%5d %6.2f\n',jj,sohm/nol);
end
%&&&&&&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
179
PHỤ LỤC B
THÔNG SỐ CỦA MỘT SỐ HÀM BĂM
MD5
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
180
Trạng thái:
Đầu ra:
RIPEMD-0
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
181
Trạng thái:
Đầu ra:
RIPEMD-128
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
182
Bước mã hóa:
Trạng thái:
Đầu ra:
RIPEMD-160
Các thông số:
Mở rộng thông báo:
183
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
RIPEMD-256 Giống RIPEMD-128
Các thông số:
184
Giá trị khởi tạo:
Bước mã hóa:
Giống RIPE-128: Sau bước 15 (và các bước 31, 47, 63 tương ứng) thay nội dung
12
LR bằng 12
RR (và 31
LR bằng 31
RR , 46
LR bằng 46
RR , 61
LR bằng 61
RR tương ứng).
Đầu ra:
RIPEMD-320 Giống RIPEMD-160
Các thông số:
Giá trị khởi tạo:
Bước mã hóa:
Giống RIPE-160: Sau bước 15 (và các bước 31, 47, 63, 79 tương ứng) thay nội
dung 14
LR bằng 14
RR (và 27
LR bằng 27
RR , 46
LR bằng 46
RR , 59
LR bằng 59
RR , 77
LR bằng 77
RR
tương ứng).
185
Đầu ra:
SHA-0 và SHA-1
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
186
SHA-256
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
187
Đầu ra:
SHA-512
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
188
Trạng thái:
Đầu ra:
SHA-224
SHA-224 giống với SHA-256
Các thông số:
189
Giá trị khởi tạo:
Đầu ra:
Đầu ra hàm nén giống SHA-256, nhưng đầu ra hàm băm chỉ lấy 224 bit.
SHA-384
SHA-384 giống với SHA-512
Các thông số:
Giá trị khởi tạo:
Đầu ra:
File đính kèm:
luan_an_nghien_cuu_xay_dung_mot_lop_ham_bam_mo_rong_moi_va_k.pdf
TomtatLANCSNguyenToanThang.pdf
Trang TTLA (TA) NCSNguyenToanThang.pdf
Trang TTLA (TV) NCSNguyenToanThang.pdf

