ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THANH BÌNH NGHIÊN CỨU MỞ RỘNG PHƯƠNG PHÁP MÃ HÓA SỐ HỌC ỨNG DỤNG TRONG BẢO MẬT DỮ LIỆU Ngành: Công nghệ thông tin Chuyên ngành:
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THANH BÌNH
NGHIÊN CỨU MỞ RỘNG PHƯƠNG PHÁP MÃ HÓA SỐ HỌC ỨNG DỤNG TRONG BẢO MẬT DỮ LIỆU
Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 05
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS LÊ HỒNG LAN
Hà Nội – 2010
Trang 2MỤC LỤC
LỜI CẢM ƠN Error! Bookmark not defined LỜI CAM ĐOAN Error! Bookmark not defined
MỤC LỤC 2
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 4
DANH MỤC CÁC BẢNG 5
DANH MỤC CÁC HÌNH VẼ 5
Chương 1 GIỚI THIỆU CHUNG VỀ MÃ HÓA THÔNG TIN 8
1.1 Một số thuật ngữ và khái niệm 8
1.1.1 Một số thuật ngữ 8
1.1.2 Vì sao cần mã hóa 10
1.2 Vài nét về lịch sử 10
1.3 Khái niệm hệ mã hóa 14
1.4 Phân loại hệ mã hóa 15
1.4.1 Hệ mã hóa khóa đối xứng 15
1.4.1.1 Đặc điểm của hệ mã hóa khóa đối xứng 16
1.4.1.2 Nơi sử dụng hệ mã hóa khóa đối xứng 16
1.4.2 Hệ mã hóa khóa công khai 16
1.4.2.1 Đặc điểm của Hệ mã hóa khóa công khai 17
1.4.2.2 Nơi sử dụng Hệ mã hóa khóa đối xứng 17
1.5 Một số hệ mã hóa khóa đối xứng và mã hóa khóa công khai 18
1.5.1 Hệ mã hóa đối xứng cổ điển 18
1.5.1.1 Hệ mã hóa dịch chuyển 19
1.5.1.2 Hệ mã hóa thay thế (Hoán vị toàn cục) 19
1.5.1.3 Hệ mã Affine 20
1.5.2 Hệ mã hóa khóa công khai 21
1.5.2.1 Sơ đồ chung hệ mã hóa khóa công khai 21
1.5.2.2 Hệ mã hóa RSA (Rivest - Shamir - Adleman) 21
1.6 Các bài toán về an toàn thông tin 22
1.7 Thám mã và tính an toàn của các hệ mật mã 23
1.7.1 Vấn đề thám mã 23
1.7.2 Tính an toàn của một hệ mật mã 24
Chương 2 CƠ SỞ TOÁN HỌC CỦA PHƯƠNG PHÁP MÃ HÓA SỐ HỌC 26
2.1 Phép chiếu một điểm lên đoạn thẳng 26
2.1.1 Phép chiếu thu nhỏ đồng dạng 26
2.1.2 Phép biến đổi ngược 26
2.2 Phép chiếu một đoạn thẳng lên một đoạn thẳng 27
2.2.1 Phép chiếu thu nhỏ đồng dạng 27
2.2.1 Phép biến đổi ngược 27
2.2.3 Định lý 1 27
2.3 Một số tính chất của phép chiếu 29
2.3.1 Tính chất kết hợp 29
2.3.2 Tính chất chứa trong 30
2.3.3 Tính chất chứa trong của phép chiếu ngược 30
Chương 3 CẢI TIẾN PHƯƠNG PHÁP MÃ HÓA SỐ HỌC 31
3.1 Giới thiệu phương pháp mã hóa số học 31
3.2 Thuật toán mã hóa số học truyền thống 32
3.2.1 Thuật toán mã hóa 32
3.2.1.1 Thống kê tần suất và xác định miền phân bố của các ký tự trong bản rõ 32
Trang 33.2.1.2 Ý tưởng của thuật toán mã hóa 33
3.2.1.3 Thuật toán mã hóa 33
3.2.2 Thuật toán giải mã 34
3.2.2.1 Hàm g(x) trên [0,D) 34
3.2.2.2 Ý tưởng của thuật toán giải mã 34
3.2.2.3 Thuật toán giải mã 35
3.2.2.4 Chứng minh tính đúng đắn của thuật toán 35
3.2.2.5 Nhận xét về thuật toán giải mã 36
3.2.3 Ví dụ 37
3.3 Thuật toán mã hóa số học cải tiến 39
3.3.1 Thuật toán mã hóa cải tiến 39
3.3.2 Thuật toán giải mã cải tiến 41
3.4 So sánh độ phức tạp 42
3.4.1 Thuật toán mã hóa số học truyền thống 42
3.4.1.1 Thuật toán mã hóa 42
3.4.1.2 Thuật toán giải mã 42
3.4.2 Thuật toán mã hóa số học cải tiến 42
3.4.2.1 Thuật toán mã hóa 42
3.4.2.2 Thuật toán giải mã 42
3.4.3 So sánh độ phức tạp của 2 phương pháp 42
3.6 Một thuật toán cải tiến khác 43
3.6.1 Xác định miền phân bố 43
3.6.2 Thuật toán mã hóa cải tiến 44
3.6.3 Thuật toán giải mã cải tiến 45
3.7 Nghiên cứu tính bảo mật của phương pháp mã hóa số học 45
Chương 4 CÀI ĐẶT VÀ THỬ NGHIỆM 53
4.1 Giới thiệu thư viện xử lý số nguyên lớn 53
4.1.1 Cấu trúc của các lớp 53
4.1.2 Bảng luỹ thừa 2 (bảng h) 54
4.2 Thuật toán chuyển đổi 55
4.2.1 Thuật toán từ hệ thập phân sang hệ nhị phân 55
4.2.2 Thuật toán từ hệ nhị phân sang hệ thập phân 56
4.3 Thuât toán chia (div, mod) 56
4.4 Thuật toán phân rã nhị phân tính luỹ thừa mod 57
4.5 Phương pháp tính logarit 59
4.6 Phương pháp tính căn bậc hai 60
4.7 Kết quả thử nghiệm 61
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
Trang 4DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
1 DES Data Encryption Standard
2 PKC Public Key Cryptosystem
3 RAC Randomized Arithmetic Coding
4 RSA Rivest - Shamir – Adleman
5 SKC Secret Key Ctyptosystem
6 UCLN Ƣớc chung lớn nhất
Trang 5DANH MỤC CÁC BẢNG
Bảng 3.1 Bảng tần suất của các ký tự 32
Bảng 3.2 Bảng phân bố với D = 1000 và dựa theo tần suất 32
Bảng 3.3 Miền phân bố của các ký tự với bản rõ CABAB 38
Bảng 3.4 Miền phân bố của các ký tự với bản rõ BAABB 46
Bảng 3.5 Miền phân bố với bản rõ CABAB 49
Bảng 4.1 Dùng để lưu trữ giá trị thập phân của 2i 54
Bảng 4.2 Kết quả thử nghiệm 62
DANH MỤC CÁC HÌNH VẼ Hình 1.1 Mô tả phép mã chuyển vị 11
Hình 1.2 Bảng đĩa chữ cái 11
Hình 1.3 Minh họa mã khối 12
Hình 1.4 Hệ mã tích hợp 13
Hình 1.5 Ví dụ hệ mã tích hợp 13
Hình 2.1 Phép chiếu 1 điểm lên 1 đoạn thẳng 26
Hình 2.2 Phép chiếu 1 đoạn thẳng lên 1 đoạn thẳng 27
Hình 2.3 Chiếu B1B2 lên A1A2 28
Hình 2.4 Chiếu C1C2 lên X1X2 28
Hình 2.5 Chiếu Z1Z2 lên A1A2 28
Hình 3.1 Minh họa cách phân tách miền phân bố 47
Hình 3.2 Sơ đồ khối hệ thống kết hợp hoán vị và mã hóa số học phân tách khoảng 47
Trang 6MỞ ĐẦU
Mã hóa là một trong các phương pháp cơ bản của việc đảm bảo an toàn dữ liệu Thời kỳ sơ khai, con người đã sử dụng nhiều phương pháp để bảo vệ các thông tin bí mật, nhưng tất cả các phương pháp đó chỉ mang tính nghệ thuật hơn là khoa học Ban đầu, mã hóa được sử dụng phổ biến cho quân đội, qua nhiều cuộc chiến tranh, vai trò của mã hóa ngày càng quan trọng và mang lại nhiều thành quả không nhỏ như các hệ mã cổ điển Caesar, Playfair…chúng đều là nền tảng cho mật mã học ngày nay
Khi toán học được áp dụng cho mã hóa thì lịch sử của mã hóa đã sang trang mới Việc ra đời các hệ mã hóa đối xứng không làm mất đi vai trò của các hệ mã cổ điển mà còn bổ sung cho ngành mật mã nhiều phương pháp mã hóa mới
Từ năm 1976, khi hệ mã phi đối xứng ra đời, nhiều khái niệm mới gắn với mật mã học xuất hiện: chữ ký số, hàm băm, mã đại diện, chứng chỉ số vv Mật mã học không chỉ
áp dụng cho quân sự mà còn cho các lĩnh vực kinh tế xã hội khác
Hiện nay có nhiều phương pháp mã hóa, mỗi phương pháp có ưu, nhược điểm riêng Tùy theo yêu cầu của môi trường ứng dụng mà người ta có thể dùng phương pháp này hay phương pháp kia Có những môi trường cần phải an toàn tuyệt đối bất kể thời
gian và chi phí Có những môi trường lại cần giải pháp dung hòa giữa bảo mật và chi phí
Trong lĩnh vực bảo mật dữ liệu, phương pháp mã hóa số học được xem là một trong những phương pháp hay Tuy nhiên, việc ứng dụng phương pháp này vào thực tế gặp phải những khó khăn nhất định, bởi tốc độ thực hiện của thuật toán mã hóa và giải mã chậm, đồng thời độ bảo mật của phương pháp chưa cao Luận văn này tập trung đi sâu
vào nghiên cứu phương pháp mã hóa số học và các vấn đề liên quan Luận văn đưa ra một
số cải tiến trong thuật toán mã hóa và giải mã nhằm tăng tốc độ thực hiện và xây dựng mô hình mã hóa dựa trên ý tưởng của lược đồ RAC (do Marco Grangetto đề xuất) để nâng cao độ bảo mật của phương pháp
Ngoài phần mở đầu và kết luận, kết cấu của luận văn gồm 4 chương:
Chương 1 “Giới thiệu chung về mã hóa thông tin” trình bày những khái
niệm cơ bản về mã hóa thông tin
Trang 7 Chương 2 “Cơ sở toán học của phương pháp mã hóa số học” trình bày cơ
sở toán học cho phương pháp mã hóa số học
Chương 3 “Cải tiến phương pháp mã hóa số học” trình bày lịch sử ra đời
của phương pháp, thuật toán mã hóa số học truyền thống Đặc biệt trong chương này đề xuất một số cải tiến nhằm tăng tốc độ thực hiện của thuật toán bằng việc thay thế các phép nhân, chia bởi các phép dịch chuyển bít và đưa ra một số nhận xét về độ an toàn của phương pháp Dựa vào mô hình RAC của Grangetto [15] đưa ra một mô hình cải tiến nhằm nâng cao tính bảo mật của phương pháp mã hóa số học
Chương 4 “Cài đặt và thử nghiệm” giới thiệu thư viện xử lý số nguyên lớn,
một số kết quả thử nghiệm trên máy của chương trình mã hóa số học truyền thống và cải tiến
Trang 8
Chương 1 GIỚI THIỆU CHUNG VỀ MÃ HÓA THÔNG TIN
Tóm tắt chương: Trong chương này luận văn giới thiệu chung về mã hóa thông tin, lịch
sử mật mã, các hệ mã, các bài toàn an toàn thông tin và bài toán thám mã Đưa ra được một số khái niệm cơ bản nhất của mã hóa như: bản rõ, bản mã, hệ mã hóa thám mã, khóa
mã, mã hóa khóa công khai, mã hóa khóa đối xứng, mã theo khối, mã theo dòng.v.v… Các nội dung của chương này được tổng hợp từ các tài liệu [5]-[9]
1.1 Một số thuật ngữ và khái niệm
1.1.1 Một số thuật ngữ
Văn bản (plaintext) là một thông báo gốc cần chuyển, được ghi bằng hình ảnh, âm
thanh, chữ số, chữ viết, Về sau, khi đưa ra các ví dụ, ta thường xem các văn bản được viết bằng chữ viết, hoặc bằng chữ số Tuy nhiên, ngày nay mọi tín hiệu (âm thanh, hình
ảnh ) đều có thể được số hóa (thành các xâu ký tự số), cho nên việc nghiên cứu trên các
văn bản số không hạn chế các ứng dụng đa dạng của nó
Mã hóa (encrytion) là việc "ngụy trang" văn bản (thông tin nói chung) sang một
dạng khác để cho những người "ngoài cuộc" không thể đọc được, phục vụ cho nhu cầu trao đổi thông tin, dữ liệu và các giao dịch tài chính, thương mại, Quá trình "ngụy trang"
văn bản gọi là lập mã còn quá trình "khôi phục" lại văn bản nguồn (từ văn bản ngụy trang) gọi là giải mã Nguyên tắc chung của mã hóa là việc giải mã phải rất dễ dàng với
"người trong cuộc", nhưng rất khó khăn (thậm chí là không thực hiện được) đối với
"người ngoài cuộc" Văn bản gốc (trước khi mã hóa) thường được ký hiệu là PT (Plain Text), hay đơn giản là P Văn bản mã (đã được cải trang) thường được ký hiệu là CT
(Ciphertext), hay đơn giản là C
Hệ mã (Cryptosystem) là một phương pháp ngụy trang văn bản Nghệ thuật tạo ra
và sử dụng các hệ mã là thuật mã hóa hay mật mã học (Cryptography)
Phân tích mã (Cryptanalysis), hay thám mã, là nghệ thuật phá các hệ mã (nhìn
xuyên qua các phương pháp ngụy trang)
Trang 9Công nghệ mã (Cryptology) là việc nghiên cứu tổng hợp cả cryptography và cryptanalysis
Lập mã (encrypt) là việc biến văn bản nguồn thành văn bản mã
Giải mã (decrypt) là việc đưa văn bản đã mã hóa trở về dạng văn bản nguồn
Định mã (encode/decode) là việc định ra phép tương ứng giữa các chữ và số (việc
này không bao giờ được xem là bí mật, vì máy tính ngày nay dễ dàng tìm ra phép tương ứng này trong một thời gian ngắn)
Mã dòng (stream cipher) là việc tiến hành mã hóa liên tục trên từng ký tự (hay
từng bit)
Mã khối (block cipher) là việc tiến hành mã hóa trên từng khối văn bản (khi khối
văn bản là một cặp 2 ký tự thì gọi là digraph, còn khi nó là bộ 3 chữ thì gọi là trigraph)
Phép mã chuyển vị (transposition cipher) là việc tráo đổi vị trí giữa các ký tự (các
bit) trong văn bản
Phép mã thay thế (substitution) là việc thay thế một ký tự này bằng một ký tự khác
(mà không thay đổi vị trí)
Phép mã tích hợp (product cipher) là việc tiến hành xen kẽ 2 phép mã chuyển vị và thay thế
Chìa khóa mã (cipher key) là bí quyết lập mã và giải mã Nếu như quy trình mã
hóa được xem như một hàm y = f(x,k), trong đó x là đầu vào (văn bản nguồn), y là đầu ra (văn bản mã), f là phương pháp (hay thuật toán) mã hóa, còn k là một tham số điều khiển, thì bí quyết trước đây thường bao gồm cả phương pháp f, và tham số k Nhu cầu của thực tiễn hiện nay đã khiến công nghệ mã hóa hiện đại phải thay đổi quan điểm này Phương
pháp f là cái thường do không chỉ một người nắm, nên không thể giữ được bí mật lâu, và
do đó phải được xem là công khai Tham số điều khiển k, có tác dụng làm thay đổi kết quả
mã hóa (tùy thuộc vào giá trị của nó), được xem là chìa khóa mã Thông thường, nó là một xâu bit (hay một con số nào đó) mà người ta có thể giữ riêng cho mình
Trang 10Hệ mã bí mật (secret key cryptosystem - SKC) hay hệ mã đối xứng (symmetric
cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã cùng sử dụng chung một chìa
khóa mã (bí mật)
Hệ mã công khai (public key cryptosystem - PKC) hay hệ mã phi đối xứng
(asymmetric cryptosystem) là hệ mã mà trong đó việc lập mã và giải mã sử dụng 2 chìa
khóa mã riêng biệt, từ chìa này không thể tìm ra chìa kia một cách dễ dàng, chìa dùng để
lập mã thường được thông báo công khai, còn chìa dành cho việc giải mã phải luôn giữ bí
mật, thường được gọi là chìa khóa riêng
1.1.2 Vì sao cần mã hóa
Đó là một câu hỏi dễ trả lời, bởi vì trong mọi hoạt động của con người, nhu cầu trao đổi thông tin mật giữa những thành viên thuộc một nhóm nào đó với nhau là hết sức cần thiết Tuy nhiên, để thực sự thấy rõ yêu cầu cấp bách của mã hóa trong thời đại ngày nay, cần nhấn mạnh rằng với các phương tiện kỹ thuật hiện đại việc giữ giữ gìn bí mật ngày càng trở nên hết sức khó khăn Các hình ảnh trên mặt đất, các cuộc đàm thoại hữu tuyến và vô tuyến, các thông tin được truyền qua mạng internet, tất cả đều có thể dễ dàng thu được nhờ các thiết bị điện tử trên mặt đất hoặc từ vệ tinh Vì thế, phương pháp thông dụng nhất để giữ gìn bí mật thông tin là mã hóa chúng bằng một hệ mã nào đó trước khi truyền đi
Dĩ nhiên, việc mã hóa thông tin trước khi truyền đi và việc giải mã các thông tin nhận được sẽ tạo nên một số khó khăn: giảm tốc độ truyền tin, tăng chi phí Một hệ mã
lý tưởng là một hệ mã bảo đảm được các yêu câu: thời gian mã hóa và giải mã nhanh, độ bảo mật cao (gây khó khăn tối đa cho người thám mã) Các yêu cầu đó luôn mâu thuẫn nhau, và người sử dụng cần hiểu rõ công nghệ mã hóa để có thể lựa chọn hệ mã thích hợp cho từng việc và mục đích
1.2 Vài nét về lịch sử
Người Hi Lạp đã sử dụng phép mã chuyển vị từ 400 năm trước công nguyên
Người ta dùng một dải băng dài và mảnh quấn quanh một khối hình trụ tròn xoay rồi viết chữ lên đó theo cách thức thông thường (từ trái sang phải và từ trên xuống dưới) Mẩu tin
Trang 11được chuyển đi dưới dạng dải băng và chỉ có thể đọc ra được khi biết được bán kính của thiết diện khối trụ (và quấn lại dải băng quanh khối trụ như khi đã viết lên - hình 1.1)
Hoàng đế Caesar đã từng sử dụng phép mã thay thế trong quân sự, trong đó mỗi ký
tự được thay thế bởi ký tự đứng sau nó 3 vị trí trong bảng chữ cái alphabet, nghĩa là chữ
A được thay thế bởi chữ D, chữ B được thay bởi chữ E, Trong thực tế, việc triển khai một hệ mã như vậy là khá đơn giản (và cũng rất thuận tiện cho việc sử dụng), với việc dùng hai chiếc đĩa đồng tâm có bán kính khác nhau và có các bảng chữ cái alphabet rải đều trên mỗi vành đĩa (hình 1.2)
Hình 1.2 Bảng đĩa chữ cái
N G A Y M A I
T I E N V E
P H I A T A Y Hình 1.1 Mô tả phép mã chuyển vị
Trang 12Mã khối được xem là xuất hiện vào những năm đầu thế kỷ XX, với sự ra đời của
hệ mã British Playfair vào năm 1910, trong đó mỗi khối là một cặp 2 chữ (digraph) Phép
mã ở đây là thay thế theo chìa Người ta viết 26 chữ cái (của tiếng Anh) vào một bảng
hình vuông (5 cột, 5 dòng), trong đó 2 chữ I và J được viết vào cùng một chỗ Hai dòng
đầu tiên dành cho chìa khóa (gồm 10 ký tự không trùng lặp), 3 dòng dưới viết 16 chữ cái còn lại (không có trong chìa khóa) theo thứ tự thông thường (từ trái sang phải và từ trên
xuống dưới) Thí dụ, với chìa khóa là PALMERSTON thì bảng được xếp như sau:
Muốn mã hóa cặp 2 chữ trên cùng một dòng thì thay thế mỗi chữ bằng chữ kế tiếp bên phải nó trên cùng dòng đó (nếu là chữ cuối dòng thì thay bằng chữ đầu dòng) Thí dụ, cặp chữ SO sẽ được mã hóa thành TN, còn cặp CG sẽ biến thành cặp DB
Muốn mã hóa cặp 2 chữ nằm trên cùng một cột, ta thay mỗi chữ bằng chữ ngay bên dưới nó (nếu chữ nằm ở đáy cột thì được thay bằng chữ ở đỉnh cột) Thí dụ, SI sẽ biến thành CW Các chữ đúp sẽ được tách ra bằng chữ X trước khi cho mã hóa, thí dụ chữ BALLOON sẽ được xử lý thành BALXLOXON
Hệ mã tích hợp (product cipher) được sử dụng sớm nhất là của quân đội Đức trong
Đại chiến Thế giới lần thứ I, mang tên là ADFGVX Cho trước một bảng như hình 1.4
A D F G V X
A K Z W R 1 F
D 9 B 6 C L 5 Hình 1.3 Minh họa mã khối
Trang 13F Q 7 J P G X
G E V Y 3 A N
V 8 O D H 0 2
X U 4 I S T M
Phần thay thế cho phép thay mỗi ký tự bằng một cặp 2 ký tự ứng với "tung độ" và
"hoành độ" của chữ đó trong bảng Thí dụ chữ P sẽ biến thành cặp FG, chữ R biến thành
AG, và PRODUCTCIPHERS sẽ biến thành
FGAGVVDVFXADGXVDGXFFGVGGAAGXG
Phần chuyển vị được tiến hành tiếp theo sau và phụ thuộc vào chìa (với các chữ
không trùng lặp), thí dụ là DEUTSCH Hãy đánh số các chữ trong chìa theo thứ tự như
trong bảng chữ cái alphabet (thí dụ: chữ C sẽ được đánh số 1, chữ D sẽ được đánh số 2, ) Hãy đặt kết quả "mã hóa nửa vời" thu được ở trên theo từng dòng (nằm dưới chìa, nghĩa là
Trang 14thay thế lại không có chìa điều khiển Chính vì vậy, một hệ mã tích hợp khác, phức tạp
hơn, đã được sử dụng trong Thế chiến thứ II, đó là ENIGMA
Tuy nhiên, từ những năm cuối của thập kỷ 60, mối đe dọa về vấn đề "an toàn máy tính" đã trở thành hiện thực Người ta cần đến các chương trình mã hóa mạnh hơn để chống lại khả năng phá mã của các siêu máy tính với tốc độ ngày càng lớn Vấn đề này đã được quan tâm nghiên cứu tích cực trong các năm 1968-1975 và được đánh dấu bằng sự
ra đời của hệ mã Lucifer (1974) và sau đó được cải tiến thành hệ mã dữ liệu tiêu chuẩn DES (1975), một hệ mã khối đối xứng với chìa khóa dài 56 bits, kết hợp luân phiên 16 phép thay thế với 15 phép hoán vị Tiếp sau đó, sự ra đời của hệ mã hóa với kháo công
khai, vào cuối những năm 70 của thế kỷ vừa qua, đã khẳng định vai trò then chốt của các
phương pháp Toán học trong lĩnh vực mã hóa hiện đại
1.3 Khái niệm hệ mã hóa
Để bảo đảm an toàn thông tin lưu trữ trong máy tính (giữ gìn thông tin cố định) hay bảo đảm an toàn thông tin trên đường truyền tin (ví dụ trên mạng máy tính), người ta phải “Che Giấu” các thông tin này
“Che” thông tin (dữ liệu) hay “Mã hóa” thông tin là thay đổi hình dạng thông tin gốc, và người khác “khó” nhận ra
Nói cách khác “Mã hóa” thông tin là “che” đi “Ý nghĩa” của thông tin, và người khác “khó” hiểu được (“khó” đọc được) thông tin đã mã hoá
“Giấu” thông tin (dữ liệu) là cất giấu thông tin trong bản tin khác, và người khác cũng “khó” nhận ra
Việc mã hoá phải theo quy tắc nhất định, quy tắc đó gọi là Hệ mã hóa
Hệ mã hóa được định nghĩa là bộ năm (P, C, K, E, D), trong đó:
Trang 15Với khóa lập mã ke K, có hàm lập mã eke E, eke: P C
Với khóa giải mã kd K, có hàm giải mã dkd D, dkd: C P
sao cho dkd (eke (T)) = T, T P
Ở đây T được gọi là bản rõ, eke (T) được gọi là bản mã
Người gửi G eke(T) Người nhận N
(có khóa lập mã ke) (có khóa giải mã kd)
1.4 Phân loại hệ mã hóa
Hiện có hai loại mã hóa chính: mã hóa khóa đối xứng và mã hóa khoá công khai
Hệ mã hóa khóa đối xứng có khóa lập mã và khóa giải mã “giống nhau”, theo nghĩa biết được khóa này thì “dễ” tính được khóa kia Vì vậy phải giữ bí mật cả 2 khóa
Hệ mã hóa khóa công khai có khóa lập mã khác khóa giải mã (ke kd), biết được khóa này cũng “khó” tính được khóa kia Vì vậy chỉ cần bí mật khóa giải mã, còn công khai khóa lập mã
1.4.1 Hệ mã hóa khóa đối xứng
Mã hóa khóa đối xứng là Hệ mã hóa mà biết được khóa lập mã thì có thể "dễ" tính được khóa giải mã và ngược lại Đặc biệt một số Hệ mã hóa có khóa lập mã và khóa giải
mã trùng nhau (ke = kd), như Hệ mã hóa "dịch chuyển" hay DES (Data Encryption Standard)
Hệ mã hóa khóa đối xứng còn có tên gọi là Hệ mã hóa khoá bí mật hay khóa riêng,
vì phải giữ bí mật cả 2 khóa Trước khi dùng Hệ mã hóa khóa đối xứng, người gửi và
Trang 16người nhận phải thoả thuận thuật toán mã hóa và một khoá chung (lập mã hay giải mã), khoá này phải được giữ bí mật Độ an toàn của Hệ mã hóa loại này phụ thuộc vào khoá
1.4.1.1 Đặc điểm của hệ mã hóa khóa đối xứng
- Vấn đề thỏa thuận khóa và quản lý khóa chung là khó khăn và phức tạp Người gửi và người nhận phải luôn thống nhất với nhau về khóa Việc thay đổi khóa là rất khó
và dễ bị lộ Khóa chung phải được gửi cho nhau trên kênh an toàn Mặt khác khi hai người (lập mã, giải mã) cùng biết "chung" một bí mật, thì càng khó giữ bí mật
1.4.1.2 Nơi sử dụng hệ mã hóa khóa đối xứng
Hệ mã hóa khóa đối xứng thường được sử dụng trong môi trường mà khoá chung
có thể dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một mạng nội bộ Hệ mã hóa khóa đối xứng thường dùng để mã hóa những bản tin lớn, vì tốc độ mã hóa và giải mã nhanh hơn Hệ mã hóa khóa công khai
1.4.2 Hệ mã hóa khóa công khai
Hệ mã hóa khóa phi đối xứng là Hệ mã hóa có khóa lập mã và khóa giải mã khác nhau (ke ≠ kd), biết được khóa này cũng "khó" tính được khóa kia Hệ mã hóa này còn được gọi là Hệ mã hóa khóa công khai vì: khóa lập mã cho công khai (gọi là khóa công khai - public key), khóa giải mã giữ bí mật còn gọi là khóa riêng (private key) hay khóa bí mật Một người bất kỳ có thể dùng khóa công khai để mã hóa bản tin, nhưng chỉ người nào có đúng khóa giải mã thì mới có khả năng đọc được bản rõ Hệ mã hóa khóa công khai hay Hệ mã hóa phi đối xứng do Diffie và Hellman phát minh vào những năm 1970
Trang 171.4.2.1 Đặc điểm của Hệ mã hóa khóa công khai
- Người mã hóa dùng khóa công khai, người giải mã giữ khóa bí mật Khả năng lộ khóa bí mật khó hơn vì chỉ có một người giữ gìn Nếu thám mã biết khóa công khai, cố gắng tìm khóa bí mật, thì chúng phải đương đầu với bài toán "khó", số phép thử là vô cùng lớn, không khả thi
Hạn chế: Tốc độ mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng
1.4.2.2 Nơi sử dụng Hệ mã hóa khóa đối xứng
Hệ mã hóa khóa công khai thường được sử dụng chủ yếu trên các mạng công khai như internet, khi mà việc trao chuyển khóa bí mật tương đối khó khăn Đặc trưng nổi bật của hệ mã hóa khóa công khai là khóa công khai và bản mã đều có thể gửi đi trên một kênh truyền tin không an toàn Có biết cả khóa công khai và bản mã thì thám mã cũng không dễ khám phá được bản rõ Nhưng vì có tốc độ mã hóa và giải mã chậm, nên hệ mã hóa khóa công khai chỉ dùng để mã hóa những bản tin ngắn, ví dụ như mã hóa khóa bí mật gửi đi Hệ mã hóa khóa công khai thường được sử dụng cho cặp người dùng thỏa thuận khóa bí mật của Hệ mã hóa khóa riêng
Trang 181.5 Một số hệ mã hóa khóa đối xứng và mã hóa khóa công
khai
1.5.1 Hệ mã hóa đối xứng cổ điển
Khái niệm: Hệ mã hóa đối xứng đã đƣợc dùng từ rất sớm, nên còn gọi là Hệ mã
hóa đối xứng - cổ điển (gọi ngắn gọn là Hệ mã hóa đối xứng cổ điển) Bản mã và bản rõ
Mã hóa cổ điển gồm nhiều hệ, ví dụ:
Hệ mã hóa dịch chuyển: Khóa có 1 “chìa” (Thể hiện bằng 1 giá trị)
Hệ mã Affine: Khóa có 2 “chìa” (Thể hiện bằng 2 giá trị)
Hệ mã hóa thay thế: Khóa có 26 “chìa” (Thể hiện bằng 26 giá trị)
Hệ mã hóa VIGENERE: Khóa có m “chìa” (Thể hiện bằng m giá trị)
Trang 19Hệ mã hóa HILL: Khóa có ma trận “chìa” (chùm chìa khóa)
1.5.1.1 Hệ mã hóa dịch chuyển
Sơ đồ:
Đặt P = C = K = Z26 Bản mã y và bản rõ x Z26 Với khóa k K, ta định nghĩa:
Hàm mã hóa: y = ek(x) = (x+k) mod 26 Hàm giải mã : x = dk(y) = (y-k) mod 26
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE Chọn khóa k = 3
Bản rõ số: 3 0 8 7 14 2 2 14 13 6 7 4 Với phép mã hóa y = ek(x) = (x+k) mod 26 = (x+3) mod 26, ta nhận đƣợc:
Bản mã số: 6 3 11 10 17 5 5 17 16 9 10 7 Bản mã chữ: GDLKRFFRQJKH
Giải mã: từ bản mã chữ ở trên ta chuyển về bản mã số và với phép giải mã x =
dk(y) = (y-k) mod 26 = (y-3) mod 26, ta nhận đƣợc lại bản rõ số, sau đó chuyển bản rõ số trở về bản rõ chữ ban đầu
Độ an toàn: Độ an toàn của mã dịch chuyển rất thấp Tập khóa K chỉ có 26 khóa nên việc
phá khóa có thể thực hiện dễ dàng bằng cách thử kiểm tra từng khóa k = 1,2,…,26
1.5.1.2 Hệ mã hóa thay thế (Hoán vị toàn cục)
Sơ đồ:
Đặt P = C = Z26 Bản mã y và bản rõ x Z26 Tập khóa K là tập mọi hoán vị trên Z26
Với khóa k = п K, tức là một hoán vị trên Z26 ta định nghĩa Hàm mã hóa: y = eп(x) = п(x)
Hàm giải mã : x = dп(y) = п-1(y)
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE Chọn khóa k = п là hoán vị sau:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
X N Y A H P O G Z Q W B T S F L R C V M U E K J D I
Trang 20Mã hóa theo công thức y = eп(x) = п(x) ta được bản mã chữ Bản mã chữ: AXZGFYYFSOSOGH
Giải mã theo công thức x = dп(y) = п-1
(y) ta nhận lại được bản rõ ban đầu
Độ an toàn: Hệ mã hóa thay thế có số khóa có thể bằng số các phép hoán vị trên tập Z26, tức là 26! khóa, đó là một số rất lớn Do đó, việc duyệt lần lượt tất cả các khóa có thể để thám mã
là không thực tế, ngay cả dùng máy tính Tuy vậy, có những phương pháp thám mã khác hiệu quả hơn, làm cho hệ mã hóa thay thế không thể được xem là an toàn
1.5.1.3 Hệ mã Affine
Sơ đồ:
Đặt P = C = Z26 Bản mã y và bản rõ x Z26 Tập khóa K = {(a,b) với a,b Z26, UCLN(a,26) = 1}
Với khóa k = (a,b) K ta định nghĩa:
Hàm mã hóa: y = ek(x) = (ax+b) mod 26 Hàm giải mã : x = dk(y) = a-1(y-b) mod 26
Có điều kiện UCLN(a,26) =1 là để bảo đảm có phần tử nghịch đảo a-1
mod 26 của a, làm cho thuật toán giải mã dk luôn thực hiện được Có tất cả (26) = 12 số a Z26 nguyên tố với 26,
đó là các số: 1,3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 và các số nghịch đảo theo mod26 tương ứng của chúng là: 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25
Ví dụ:
Bản rõ chữ: DAIHOCCONGNGHE Chọn khóa k = (a,b) = (3,6)
Bản rõ số: x = 3 0 8 7 14 2 2 14 13 6 7 4
Mã hóa theo công thức y = ek(x) = (ax + b) mod 26 = (3x+6) mod 26 Bản mã số: 14 6 4 1 22 12 12 22 19 24 1 18
Bản mã chữ: OGEBWMMWTYBS Giải mã theo công thức: x = dk(y) = a-1(y-b) mod 26
= 3-1(y-6) mod 26 = 9(y-6) mod 26
Độ an toàn: Vì có 12 số thuộc Z26 nguyên tố với 26, nên số các khóa có thể có (do đó, số các hệ mật mã affine) bằng 12×26 = 312, một con số không lớn lắm nếu ta sử dụng máy tính để thực hiện việc thám mã bằng cách duyệt lần lượt tất cả các khóa có thể, như vậy, mã affine cũng không được xem là mã an toàn
Trang 211.5.2 Hệ mã hóa khóa công khai
1.5.2.1 Sơ đồ chung hệ mã hóa khóa công khai
y = E(K', x) - phép biến đổi x P thành y C, dùng để tạo mã
x = D(K", y) - phép biến đổi y C thành x P, dùng để giải mã
1.5.2.2 Hệ mã hóa RSA (Rivest - Shamir - Adleman)
a Ý tưởng và dữ liệu dùng trong hệ mật mã RSA
Ý tưởng dựa vào phép biến đổi thuận và ngược như sau:
y = xe (mod n)
x = yd (mod n)
d = e-1 (mod (n))
Dữ liệu gốc:
p, q: hai số nguyên tố lẻ khác nhau
Dữ liệu suy diễn: Từ p và q lần lượt tính
Mã hoá (lập mã):
y = E(K', x) = xe (mod n), x P Giải mã:
Trang 22x = D(K", y) = yd (mod n), y C
c Ví dụ về hệ RSA
Chọn hai số nguyên tố :
p = 3, q= 11 Tính:
y = 213 (mod 33) = 26 * 27 (mod 33) = 64*128 (mod 33) = 31*29 (mod 33) = 899 (mod 33) = 8
x = (17*17)*(17*17)*(17*31)
do
17*17 (mod 33) = 289 (mod 33) = 25 17*31 (mod 33) = 527 (mod 33) = 32 nên
x = 25*25*32 (mod 33) = 625*32 (mod 33)
= (625 mod 33)*32 (mod 33)
= 31*32 (mod 33) = 992 mod 33 = 2 Vậy:
x = 2
1.6 Các bài toán về an toàn thông tin
Có nhiều bài toán khác nhau về yêu cầu an toàn thông tin tùy theo những tình huống cụ khác nhau, nhưng tựu trung có một số bài toán chung nhất mà ta thường gặp trong thực tiễn là những bài toán sau đây:
Trang 23- Bảo mật: giữ thông tin được bí mật đối với tất cả mọi người, trừ một ít người có thẩm quyền được đọc, biết thông tin
- Toàn vẹn thông tin: bảo đảm thông tin không bị thay đổi hay xuyên tạc bởi những
kẻ không có thẩm quyền hoặc bằng những phương tiện không được phép
- Nhận thực một thực thể: xác nhận danh tính của một thực thể chẳng hạn một người, một máy tính cuối trong mạng, một thẻ tín dụng…
- Nhận thực một thông báo: xác nhận nguồn gốc của một thông báo được gửi đến
- Chữ ký: một cách để gắn kết một thông tin với một thực thể, thường dùng trong bài toán nhận thực một thông báo cũng như trong nhiều bài toán nhận thực khác
- Ủy quyển: chuyển cho một thực thể khác quyền được đại diện hoặc được làm một việc gì đó
- Cấp chứng chỉ: cấp một sự xác nhận thông tin bởi một thực thể được tín nhiệm
- Báo nhận: xác nhận một thông báo đã được nhận hay một dịch vụ đã được thực hiện
- Làm chứng: kiểm thử việc tồn tại một thông tin ở một thực thể khác với người chủ sở hữu thông tin đó
- Không chối bỏ được: ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết đã
có (thí dụ đã ký vào một văn bản)
- Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến trình nào
đó (thường dùng trong gia dịch điện tử)
- Thu hồi: rút lại một giấy chứng chỉ hay ủy quyền dã cấp
Trang 24mà tốt nhất là tìm ra được bản rõ gốc của bản mật mã đó Tình huống thường gặp là bản
thân sơ đồ hệ thống mật mã, kể cả các phép lập mã và giải mã (tức các thuật toán E và D), không nhất thiết là bí mật, do đó bài toán quy về việc tìm chìa khóa mật mã K, hay chìa khóa giải mã K’’, nếu hệ mật mã có khóa phi đối xứng Như vậy, ta có thể quy ước xem
bài toán thám mã cơ bản là bài toán tìm khóa mật mã K (hay khóa giải mã K‟‟) Để giải bài toán đó, giả thiết người thám mã biết thông tin về sơ đồ hệ mật mã được dùng, kể cả các phép lập mã và giải mã tổng quát E và D ngoài ra, người thám mã có thể biết thêm một số thông tin khác, tùy theo những thông tin được biết thêm này mà ta có thể phân loại bài toán thám mã thành các bài toán cụ thể như sau:
- Bài toán thám mã chỉ biết bản mã: là bài toán phổ biến nhất, khi người thám mã chỉ biết một bản mật mã Y;
- Bài toán thám mã khi biết cả bản rõ: người thám mã biết một bản mật mã Y cùng với bản rõ tương ứng X;
- Bài toán thám mã khi có bản rõ được chọn: người thám mã có thể chọn một bản
rõ X, và biết bản mật mã tương ứng Y Điều này có thể xảy ra khi người thám mã chiếm
- An toàn vô điều kiện: giả thiết người thám mã có được thông tin về bản mã Theo
quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã không thu hẹp được độ bất định về bản rõ đối với người thám mã, thì hệ mật mã là an toàn vô điều kiện, hay theo
thuật ngữ của C.Shannon, hệ là bí mật hoàn toàn Như vậy, hệ là an toàn vô điều kiện,
nếu độ bất định về bản rõ sau khi người thám mã có được các thông tin (về bản mã) bằng
Trang 25độ bất định về bản rõ trước đó Tính an toàn vô điều kiện đã được nghiên cứu cho một số
hệ mật mã khóa đối xứng mà ta sẽ trình bày trong chương 3
- An toàn được chứng minh: một hệ thống mật mã được xem là có độ an toàn được chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với hệ thống đó khó
tương đương với một bài toán khó đã biết, thí dụ bài toán phân tích một số nguyên thành tích các thừa số nguyên tố, bài toán tìm lôgarit rời rạc theo một mô đun nguyên tố, v.v
(khó tương đương có nghĩa là nếu bài toán này giải được thì bài toán kia cũng giải được
với cùng một độ phức tạp như nhau)
- An toàn tính toán: hệ mật mã được xem là an toàn (về mặt) tính toán, nếu mọi
phương pháp thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán vượt mọi khả năng (kể cả phương tiện thiết bị) tính toán của một kẻ thù giả định An toàn theo nghĩa này, nói theo ngôn ngữ của lý thuyết về độ phức tạp tính toán, là bao hàm cả khái niệm an toàn theo nghĩa “được chứng minh” nói trên
Tính an toàn theo nghĩa được chứng minh hay tính toán được sử dụng nhiều trong việc nghiên cứu các hệ thống mật mã hiện đại, đặc biệt là các hệ thống mật mã khóa công khai, ta sẽ trình bày riêng cho từng hệ mật mã được trình bày trong các chương về sau Ở mục 1.4 ta đã giới thiệu một số bài toán về an toàn thông tin nói chung Các bài toán đó đều có hạt nhân là tính an toàn của một hệ mật mã nào đó, cho nên việc nghiên cứu tính
an toàn của các hệ mật mã cũng góp phần giải quyết các vấn đề an toàn thông tin kể trên
Trang 26Chương 2 CƠ SỞ TOÁN HỌC CỦA PHƯƠNG PHÁP MÃ HÓA
SỐ HỌC
Tóm tắt chương: Trong chương này luận văn trình bày một số khái niệm toán học cho
phương pháp mã hóa số học như: phép chiếu thu nhỏ đồng dạng, phép biến đổi ngược và một số tính chất của phép chiếu Trong chương 3 sẽ dùng phép biến đổi thu nhỏ đồng dạng để trình bày thuật toán mã hóa số học và dùng phép biến đổi ngược để mô tả quá trình giải mã Việc sử dụng các phép biến đổi này sẽ cho một cái nhìn khái quát và bản chất về phương pháp mã hóa số học, giúp cho việc tìm hiểu và nghiên cứu về phương pháp này trở nên đơn giản và thuận lợi hơn
2.1 Phép chiếu một điểm lên đoạn thẳng
Trong suốt chương này ta xem đoạn [0,D] là miền không gian và mọi điểm, mọi đoạn thẳng đều nằm trong miền này
Ta gọi y là ảnh của x lên [a,b] và ký hiệu:
y = [a,b] x hoặc y = f[a,b]x (2.2)
Trang 272.2 Phép chiếu một đoạn thẳng lên một đoạn thẳng
2.2.1 Phép biến đổi ngược
Tương tự nếu:
x1 = [a,b] y1
x2 = [a,b] y2 thì ta nói:
[x1,x2] là nghịch ảnh của [y1,y2] theo [a,b]
và ký hiệu:
[x1,x2] = [a,b] [y1,y2] (2.6) hoặc:
[x1,x2] = [ y1,y2]
Nhận xét: Trong chương 3 sẽ dùng phép chiếu thu nhỏ đồng dạng để diễn đạt
thuật toán mã hóa và phép biến đổi ngược để trình bày thuật toán giải mã
2.2.3 Định lý 1
Cho đoạn [0,D] và các đoạn con A = [A1,A2], B = [B1,B2], C = [C1,C2]
Chiếu B lên A được X (hình 2.3): X = fAB (2.7) Chiếu C lên X được Y (hình 2.4): Y = fXC (2.8)
Trang 28= fBC Chứng minh:
B 2
B 1
Hình 2.3 Chiếu B1B2 lên A1A2
C 2
C 1
Hình 2.4 Chiếu C1C2 lên X1X2
Trang 29 Z1 = B1 + C1(B2-B1)/D (2.17) Tuơng tự, thay Y2 trong (2.13) vào (2.16) ta đƣợc:
2.3.1 Tính chất kết hợp
Đối với 2 phép chiếu ta có:
Đối với n phép chiếu (n2) ta có:
((A1 A2) …An-1)An = A1 (A2 …(An-1An)) (2.21) Chứng minh tính chất kết hợp đối với 2 phép chiếu:
Theo định lý 1 ta có:
Chiếu B lên A đƣợc X: X = fAB Chiếu C lên X đƣợc Y: Y = fXC
Trang 30Tính chất kết hợp của n phép chiếu (n2) ta chứng minh bằng cách tương tự
2.3.2 Tính chất chứa trong
Ảnh của [x1,x2] lên [a,b] luôn luôn thuộc [a,b] hay nói cách khác:
Nếu: [y1,y2] = [a,b] [x1,x2] thì [y1,y2] [a,b] (2.27)
2.3.3 Tính chất chứa trong của phép chiếu ngược
Nếu
y Y
X = BY (X là nghịch ảnh của Y theo B) thì
By X (nghịch ảnh của y theo B thuộc X)
Trang 31Chương 3 CẢI TIẾN PHƯƠNG PHÁP MÃ HÓA SỐ HỌC
Tóm tắt chương :
Chương 3 trình bày các kết quả chính của luận văn, gồm các nội dung sau : Mô tả thuật toán giải mã và mã hóa số học thông qua các phép chiếu thu nhỏ đồng dạng và phép biến đổi ngược Sử dụng các tính chất của phép chiếu để chứng minh tính đúng đắn của thuật toán giải mã So với cách trình bày về mã hóa số học truyền thống trong các tài liệu trước đây [14] [19] [20], cách trình bày và cách chứng minh trong chương này tỏ ra ngắn gọn và dễ hiểu hơn Hơn nữa trong chương này còn đề xuất một số cải tiến nhằm tăng tốc độ thực hiện của thuật toán bằng việc thay thế các phép nhân, chia bởi các phép dịch chuyển bít và đề xuất một mô hình mã hóa số học mới dựa trên ý tưởng của mô hình RAC [15] nhằm nâng cao khả năng bảo mật cho phương pháp
3.1 Giới thiệu phương pháp mã hóa số học
Phương pháp mã hóa số học được đề xuất bởi Shannon vào năm 1948, sau đó được tiếp tục phát triển bởi Elias nhưng không công bố kết quả nghiên cứu của mình Năm
1963 Abramson đã đưa vấn đề này trong bài viết của ông về lý thuyết thông tin Về mặt toán học phương pháp này khá đơn giản nhưng khi thực hiện lại đòi hỏi độ chính xác tuyệt đối cho nên nó chỉ được nghiên cứu về mặt lý thuyết chứ chưa được cài đặt trên máy tính [12] Việc cài đặt phương pháp mã hóa số học gặp phải vấn đề là tốc độ thực hiện của thuật toán mã hóa và giải mã chậm vì phải tính toán các phép nhân, chia trên các
số nguyên lớn có độ dài hàng trăm chữ số Tuy nhiên trong những năm gần đây mã hóa số học được nhiều người nghiên cứu nhằm ứng dụng vào thực tế
Trong chương này sẽ dùng phép chiếu thu nhỏ đồng dạng để mô tả thuật toán mã hóa số học, dùng phép biến đổi ngược để diễn đạt thuật toán giải mã và sử dụng các tính chất của phép chiếu để chứng minh tính đúng đắn của thuật toán giải mã So với cách trình bày về mã hóa số học truyền thống trong các tài liệu trước đây [14] [19] [20], cách trình bày và cách chứng minh trong chương này tỏ ra ngắn gọn và dễ hiểu hơn Hơn nữa còn đề xuất một số cải tiến nhằm tăng tốc độ thực hiện của thuật toán bằng việc thay thế các phép nhân, chia bởi các phép dịch chuyển bít Ngoài ra luận văn còn trình bày một mô
Trang 32hình mã hóa số học mới dựa trên ý tưởng của mô hình RAC [15] nhằm nâng cao khả năng bảo mật
3.2 Thuật toán mã hóa số học truyền thống
3.2.1 Thuật toán mã hóa
Để thực hiện thuật toán mã hóa số học, trước tiên cần xác định miền phân bố của tập ký tự khác nhau của bản rõ
3.2.1.1 Thống kê tần suất và xác định miền phân bố của các ký tự trong bản
rõ
Vấn đề này được trình bày thông qua một ví dụ Giả sử bản rõ là một chuỗi ký tự:
"CABAB" thì kết quả thống kê tần suất như sau:
ch[i] là ký tự thứ i trong bảng tần suất (ở ví dụ trên: ch[1] = „A‟, ch[3] = „C‟)
P(ch[i]) = [low_range(ch[i]), hi_range(ch[i])) là miền phân bố của ký tự ch[i]
Để xác định miền phân bố, đầu tiên chọn đoạn cơ sở [0,D] Sau đó chia [0,D] thành m đoạn con dựa theo tần suất của các ký tự Với bản rõ như trên và D =1000 thì miền phân bố của các ký tự như sau:
STT Ký tự Miền phân bố low_range hi_range
Bảng 3.2 Bảng phân bố với D = 1000 và dựa theo tần suất
Nhận xét: các miền phân bố không nhất thiết phải tính theo tần suất mà chỉ cần
xác định sao cho không giao nhau và thuộc [0,D] Trong mục 3.3 sẽ đề xuất các cách chọn miền phân bố hợp lý để cải tiến thuật toán mã hóa số học nhằm nâng cao tốc độ tính toán