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

Hệ mật mã khóa công khai ứng dụng bảo mật thông tin trong thương mại điện tử

123 1K 5

Đ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 123
Dung lượng 1,51 MB

Nội dung

Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và ba chương nội dung được tổ chức như sau: Chương 1: Giới thiệu các khái niệm về mật mã, các phương pháp mã hoá, trình bày các cơ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 2

MỤC LỤC

DANH MỤC CÁC BẢNG - 7 -

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

MỞ ĐẦU - 9 -

Chương 1 - 12 -

CƠ SỞ LÝ THUYẾT MẬT MÃ - 12 -

1.1 TỔNG QUAN VỀ MẬT MÃ 12

1.1.1 Một số khái niệm cơ bản 12

1.1.2 Mô hình mật mã biểu diễn dưới dạng toán học 13

1.1.3 Các yêu cầu đối với một hệ mật mã 13

1.1.4 Phương pháp mã hoá dữ liệu 14

1.1.4.1 Mã hoá khoá đối xứng 14

1.1.4.2 Mã hoá khoá không đối xứng 16

1.1.5 Mật mã dựa trên những bài toán khó tính toán 16

1.2 LÝ THUYẾT SỐ 17

1.2.1 Các phép toán số học modul 17

1.2.2 Một số định lý và định nghĩa quan trọng 19

1.3 CÁC THUẬT TOÁN THƯỜNG DÙNG 21

1.3.1 Tìm phần tử nghịch đảo nhân 21

1.3.2 Thuật toán kiểm tra tính nguyên tố 22

1.3.3 Thuật toán luỹ thừa nhanh 24

-Chương 2 - 26 -

CÁC HỆ MẬT MÃ KHÓA CÔNG KHAI - 26 -

VÀ MÔ HÌNH CHỮ KÝ ĐIỆN TỬ - 26 -

2.1 LÝ THUYẾT CHUNG VỀ HỆ MẬT MÃ KHÓA CÔNG KHAI 26

2.1.1 Nguyên lý cơ bản của hệ mật mã khoá công khai 27

2.1.2 Hoạt động của hệ mật mã khoá công khai 27

2.1.3 Khả năng ứng dụng của hệ mật mã khoá công khai 29

2.1.4 Các yêu cầu của hệ mật mã khoá công khai 30

Trang 3

2.2 HỆ MẬT MÃ KHÓA CÔNG KHAI BA LÔ 31

2.2.1 Bài toán ba lô 31

2.2.2 Bài toán ba lô siêu tăng 31

2.2.3 Hệ mật mã khoá công khai ba lô MerkleHellman 32

2.2.3.1 Mô tả các quá trình tạo khoá, mã hoá, giải mã 32

2.2.3.2 Tính đúng của quá trình giải mã 35

2.2.4 Đánh giá hệ mật mã khoá công khai ba lô 37

2.2.4.1 Độ an toàn 37

2.2.4.2 Hiệu suất thực hiện và ứng dụng 38

2.3 HỆ MẬT MÃ KHÓA CÔNG KHAI ELGAMAL 38

2.3.1 Bài toán logarithm rời rạc 38

2.3.2 Định nghĩa các tập làm việc của hệ mật mã ElGamal 39

2.3.3 Mô tả các quá trình tạo khoá, mã hoá, giải mã 39

2.3.4 Tính đúng của quá trình giải mã 40

2.3.5 Đánh giá hệ mật mã công khai Elgamal 42

2.3.5.1 Độ an toàn 42

2.3.5.2 Hiệu suất thực hiện và ứng dụng 43

2.4 HỆ MẬT MÃ KHÓA CÔNG KHAI RSA 43

2.4.1 Bài toán phân tích số nguyên 43

2.4.2 Định nghĩa các tập làm việc của hệ RSA 44

2.4.3 Mô tả các quá trình tạo khoá, mã hoá và giải mã 44

2.4.5 Chi phí thực hiện các phép tính cơ bản trong mã hoá và giải mã 48

2.4.6 Một số phương pháp thám mã hệ mật mã RSA 49

2.4.7 Các thuận toán phân tích ra thừa số 52

2.4.7.1 Phân tích theo mục đích đặc biệt 52

2.4.7.2 Phân tích theo mục đích tổng quát 53

2.4.8 Đánh giá hệ mật mã khoá công khai RSA 53

2.4.8.1 Độ an toàn 53

2.4.8.2 Hiệu suất thực hiện và ứng dụng 54

2.5 HÀM BĂM VÀ CHỮ KÝ ĐIỆN TỬ 55

Trang 4

2.5.1 Hàm băm 55

2.5.1.1 Yêu cầu của một hàm băm 56

2.5.1.2 Hàm băm MD5 56

2.5.1.3 Hàm băm SHA1 62

2.5.2 Chữ ký số 65

2.5.2.1 Yêu cầu của một hệ thống chữ ký số 65

2.5.2.2 Lược đồ chung của chữ ký điện tử 66

2.5.2.3 Lược đồ chữ ký điện tử RSA 69

2.5.2.4 Lược đồ chữ ký điện tử ElGamal 70

2.5.2.5 Lược đồ chữ ký điện tử DSA 71

2.5.2.6 Tóm tắt và kết luận ứng dụng 73

-Chương 3 - 74 -

MỘT SỐ MÔ HÌNH TIỀN ĐIỆN TỬ - 74 -

3.1 GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ 74

3.1.1 Các hình thức thanh toán trong thương mại điện tử 74

3.1.2 Tiền điện tử là gì? 75

3.1.3 Cấu trúc chung của chuyển tiền điện tử 76

3.1.4 Các đặc trưng quan trọng của tiền điện tử 77

3.1.5 Thanh toán offline và online 78

3.1.5.1 Offline 78

3.1.5.2 Online 79

3.2 MỘT SỐ THUẬT TOÁN TRONG HỆ THỐNG TIỀN ĐIỆN TỬ 79

3.2.1 Chữ ký mù 79

3.2.2 Lược đồ chữ ký Schnorr 80

3.2.3 Chia cắt và lựa chọn (Cut and Choose) 81

3.2.4 Chia sẻ bí mật 83

3.2.5 Giao thức truyền bit 83

3.2.6 Bài toán biểu diễn trong nhóm nguyên tố 84

3.3 HỆ THỐNG TIỀN ẨN DANH (ChaumFiatNaor) 85

3.3.1 Giao thức rút tiền 85

Trang 5

3.3.2 Giao thức thanh toán 86

3.3.3 Giao thức gửi tiền 86

3.3.4 Khả năng đáp ứng các đặc trưng 86

3.3.5 Chi phí về tiền và thời gian 88

3.3.6 Khả năng tấn công 88

3.4 HỆ THỐNG TIỀN ẨN DANH KHÔNG CÓ KHẢ NĂNG GHI NHẬN 88

3.4.1 Giao thức rút tiền 89

3.4.2 Giao thức thanh toán 93

3.4.3 Giao thức gửi tiền 93

3.4.4 Khả năng đáp ứng các đặc trưng 93

3.4.5 Khả năng tấn công 94

3.5 LƯỢC ĐỒ BRAND 94

3.5.1 Giao thức mở tài khoản 95

3.5.2 Giao thức rút tiền 96

3.5.3 Giao thức thanh toán 98

3.5.4 Giao thức gửi tiền 99

3.5.5 Khả năng đáp ứng các đặc trưng 99

3.5.6 Khả năng tấn công 101

3.5.7 Chi phí về tiền và thời gian 102

3.5.8 Khó khăn 102

3.5.9 Thuận lợi 102

3.6 TIỀN ĐIỆN TỬ CÓ THỂ CHIA NHỎ 104

3.6.1 Biểu diễn cây nhị phân 104

3.6.2 Giao thức mở tài khoản 106

3.6.3 Giao thức rút tiền 106

3.6.4 Giao thức thanh toán 107

3.6.5 Giao thức rút tiền 109

3.6.6 Khả năng đáp ứng các đặc trưng 109

3.6.7 Khả năng tấn công 112

3.6.8 Chi phí về tiền và thời gian 113

Trang 6

3.6.9 Nhược điểm 113

3.7 TIỀN ĐIỆN TỬ TRONG THỰC TẾ 113

3.7.1 So sánh 113

3.7.2 Một số khía cạnh cài đặt 115

3.7.3 Khả năng chấp nhận của người dùng 116

3.7.4 Thẻ thông minh 116

3.7.5 Sử dụng chữ ký điện tử trong hệ thống thẻ thông minh 116

3.8 Kết luận 117

-KẾT LUẬN - 119 -

TÀI LIỆU THAM KHẢO 121

Trang 7

-DANH MỤC CÁC BẢNG

Bảng 1.1 Kết quả minh họa phép cộng với modulo n=5 18

Bảng 1.2 Kết quả minh họa phép nhân modulo n=5 18

Bảng 2.1 Qui tắc chuyển đổi ký tự  5-bits nhị phân ( - khoảng trắng) 33

Bảng 2.2 Các bước tạo khoá, mã hoá, giải mã của Hệ ba lô Merkele-Hellman 34

Bảng 2.3 Các bước toạ khoá, mã hoá, giải mã của Hệ ElGamal 40

Bảng 2.4 Các bước tạo khoá, mã hoá, giải mã của hệ RSA 45

Bảng 2.5 Bảng chi phí thời gian cần thiết để phân tích các số nguyên N 54

Bảng 3.1 Một số hệ thống tiền điện tử Off-line 79

Trang 8

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

Hình 1.1 Sơ đồ quá trình viết bí mật thông tin 12

Hình 1.2 Mô hình mã hóa khóa đối xứng 15

Hình 1.3 Mô hình mã hóa không đối xứng 16

Hình 2.1 Sơ đồ nguyên lý cơ bản của hệ mật mã khóa công khai 27

Hình 2.2 Sơ đồ hoạt động của hệ mật mã khóa công khai 28

Hình 2.3 Sơ đồ minh họa tính mật của hệ mật mã khóa công khai 29

Hình 2.4 Sơ đồ minh họa tính xác thực của hệ mật mã khóa công khai 29

Hình 2.5 Sơ đồ minh họa tính mật và tính xác thực của hệ mật mã khóa công khai 30

Hình 2.6 Sơ đồ minh họa hàm băm 55

Hình 2.7 Sơ đồ thực hiện tổng quát của thuật toán MD5 58

Hình 2.8 Sơ đồ xử lý một khối 512 bits thứ i 61

Hình 2.9 Sơ đồ xử lý một bước, trong 64 bước của thuật toán MD5 61

Hình 2.10 Mô tả hình tổng quát của chữ ký điện tử 66

Hình 2.11 Sơ đồ minh hoạ các bước tạo chữ ký điện tử 67

Hình 2.12 Sơ đồ minh hoạ các bước kiểm tra chữ ký điện tử 68

Hình 2.13 Mô hình chữ ký điện tử dùng quá trình mã hóa và giải mã 69

Hình 3.1 Vòng đời của đồng tiền điện tử 77

Hình 3.2 Giao thức rút tiền của lược đồ Ferguson 92

Hình 3.3 Giao thức thanh toán của lược đồ Ferguson 93

Hình 3.4 Giao thức mở tài khoản 95

Hình 3.5 Khách hàng chứng minh có sở hữu I 96

Hình 3.6 Giao thức rút tiền của lược đồ Brand 97

Hình 3.7 Giao thức thanh toán của lược đồ Brand 99

Hình 3.8 Cây nhị phân của đồng tiền $100 105

Hình 3.9 Giao thức rút tiền của hệ thống Okamoto 107

Hình 3.10 Sử dụng giá trị  và  trong cây nhị phân 108

Trang 9

MỞ ĐẦU

Trong những thập kỷ gần đây, con người đang đứng trước sự bùng nổ thông tin

và sự phát triển mạnh mẽ của mạng toàn cầu Internet Nhu cầu trao đổi thông tin giữa các máy tính ngày càng nhiều, trong những thông tin trao đổi có những thông tin mang tính chất công khai và cũng có những thông tin có giá trị vô cùng quan trọng đối với cá nhân, tổ chức, hoặc có thể là đối với cả quốc gia Đặc biệt trong nền kinh tế toàn cầu, thương mại điện tử và kinh doanh điện tử đã trở thành một yếu

tố cần thiết của chiến lược kinh doanh và là một chất xúc tác mạnh mẽ cho sự phát triển kinh tế Việc lồng ghép công nghệ thông tin và truyền thông vào kinh doanh đã tăng cường năng suất, khuyến khích sự tham gia nhiều hơn của khách hàng và tạo điều kiện cho việc phục vụ khách hàng trên diện rộng, bên cạnh việc giảm chi phí Xét trên nhiều phương diện, thanh toán trực tuyến là nền tảng của các hệ thống thương mại điện tử Sự khác biệt cơ bản giữa thương mại điện tử với các ứng dụng khác cung cấp trên Internet chính là nhờ khả năng thanh toán trực tuyến này Do vậy, việc phát triển thanh toán trực tuyến sẽ hoàn thiện hóa thương mại điện tử, để thương mại điện tử được theo đúng nghĩa của nó Một khi thanh toán trong thương mại điện tử an toàn, tiện lợi, việc phát triển thương mại điện tử trên toàn cầu là một điều tất yếu với dân số đông đảo và không ngừng tăng của mạng Internet

Thanh toán trong thương mại điện tử với ưu điểm đẩy mạnh quá trình lưu thông tiền tệ và hàng hóa Thanh toán điện tử giúp thực hiện thanh toán nhanh, an toàn, đảm bảo quyền lợi cho các bên tham gia thanh toán, hạn chế rủi ro so với thanh toán bằng tiền mặt, mở rộng thanh toán không dùng tiền mặt, tạo lập thói quen mới trong dân chúng về thanh toán hiện đại

Tiến cao hơn một bước, thanh toán điện tử tạo ra một loại tiền mới, tiền số hóa, không chỉ thỏa mãn các tài khoản tại ngân hàng mà hoàn toàn có thể dùng để mua hàng hóa thông thường Quá trình giao dịch được đơn giản và nhanh chóng, chi phí giao dịch giảm bớt đáng kể và giao dịch sẽ trở nên an toàn hơn Tiền số hóa không

Trang 10

chiếm một không gian hữu hình nào mà có thể chuyển một nửa vòng trái đất chỉ trong chớp mắt bằng thời gian của ánh sáng Đây sẽ là một cơ cấu tiền tệ mới, một mạng tài chính hiện đại gắn liền với mạng Internet Vì vậy, vấn đề đảm bảo an toàn trong giao dịch điện tử nhất là vấn đề thanh toán điện tử là rất quan trọng Công nghệ thông tin được phát triển một cách nhanh chóng thì các nguy cơ xâm nhập thông tin dữ liệu vào các hệ thống truyền tin, các mạng dữ liệu ngày càng gia tăng Bảo vệ an toàn thông tin dữ liệu là một chủ đề khó đánh giá được như thế nào là tối

ưu Vấn đề dẫn đến sự lựa chọn hoặc căn cứ vào tiêu chí tham số nào để đánh giá,

ví dụ độ bảo mật, tính hiệu quả, tính kinh tế hoặc độ phức tạp của hệ thống…Trước những yêu cầu cấp thiết đó việc nghiên cứu ứng dụng giải pháp mật mã là cách tốt nhất có thể đáp ứng đầy đủ những vấn đề đặt ra Hiểu một cách sơ lược về giải pháp này là: người gửi phải sử dụng một kỹ thuật mã hoá để xáo trộn nội dung thông tin nhằm đảm bảo tính an toàn tại nơi lưu trữ cũng như khi truyền đi trên mạng Nếu thông tin bị đánh cắp hoặc bị chặn trên đường truyền, muốn hiểu được hacker phải tốn một thời gian rất lớn (có thể mất hàng trăm năm) cho việc giải mã Tuy nhiên đối với người nhận hợp pháp thì công việc giải mã và xác thực thông tin lại trở nên

dễ dàng Vì giữa người gửi và người nhận luôn có một sự thống nhất về các thuật toán, các tham số cần thiết cho việc mã hoá giải mã và xác thực thông tin

Trong quá trình học tập, nghiên cứu, hoạt động thực tiễn cùng với sự gợi ý của thầy PGS.TS Đoàn Văn Ban tôi chọn đề tài cho luận văn tốt nghiệp Cao học ngành

Công nghệ thông tin: “ Hệ mật mã khoá công khai ứng dụng bảo mật thông tin

trong thương mại điện tử”

Bố cục của luận văn bao gồm phần mở đầu, phần kết luận và ba chương nội dung được tổ chức như sau:

Chương 1: Giới thiệu các khái niệm về mật mã, các phương pháp mã hoá, trình bày các cơ sở toán học cơ bản và các thuật toán quan trọng thường được sử dụng trong các hệ mật mã khoá công khai

Chương 2: Trình bày lý thuyết chung về hệ mật mã khóa công khai và một số các hệ mật mã khoá công khai cụ thể như: hệ mật mã khoá công khai Ba lô, hệ mật

Trang 11

mã khoá công khai ELGAMAL, hệ mật mã khoá công khai RSA, lý thuyết về hàm băm và chữ ký số

Chương 3: Giới thiệu về tiền điện tử Trình bầy về một số hệ thống tiền điện tử

cụ thể như: Hệ thống tiền ẩn danh (Chaum – Fiat – Naor), Hệ thống tiền ẩn danh không có khả năng ghi nhận, lược đồ Brand, tiền điện tử có thể chia nhỏ

Luận văn đã hệ thống được một cơ sở lý thuyết cơ bản, giúp cho việc nghiên cứu, tìm hiểu về hệ mã khoá công khai và mô hình chữ ký điện tử Đồng thời tìm hiểu một số mô hình tiền điện tử, khai thác những khía cạnh cài đặt, một số tồn tại

và quan điểm của người dùng đối với tiền điện tử Từ đó có thể mở rộng và hoàn thiện thêm một số chức năng để đưa vào ứng dụng thực tiễn

Trang 12

Chương 1

CƠ SỞ LÝ THUYẾT MẬT MÃ 1.1 TỔNG QUAN VỀ MẬT MÃ

1.1.1 Một số khái niệm cơ bản

Mật mã (Criptography): là một khoa học nghiên cứu cách viết bí mật Có thể

một cách khái quát, đó là phương thức đảm bảo sự bí mật thông tin tại nơi lưu trữ cũng như khi chuyền đi trên mạng Cho dù sự trao đổi này diễn ra trên môi trường truyền thông không an toàn

Mã hoá (Encription): Là quá trình chuyển đổi thông tin có thể chuyển đổi thông

tin từ dạng có thể hiểu được, sang dạng không hiểu được để đảm bảo tính bí mật thông tin

Giải mã (Decryption): là quá trình khôi phục lại thông tin ban đầu, từ dạng

thông tin đã được mã hoá

Bản rõ (Plaintext): lưu thông tin chưa mã hoá (có thể đọc được)

Bản mã (Ciphertext): lưu thông tin đã mã hoá (không thể đọc được)

Khoá mã (Key): là dãy các ký tự và số dùng làm biến cho các quá trình mã hoá

hay giải mã thông tin

Thám mã (Cryptanalysis): là những người phân tích các bản mã

Bộ lập mã (Encipher)

Trang 13

1.1.2 Mô hình mật mã biểu diễn dưới dạng toán học

Định nghĩa 1.1: Hệ thống mật mã, là một bộ bao gồm 5 thành phần (P, C, K, E, D) thoả mãn các điều kiện sau [1]:

 P là tập hợp hữu hạn các bản rõ (plaintext) hoặc thông điệp (message) có thể

 C là tập hợp hữu hạn các bản mã (ciphertext) có thể

 K là tập hợp hữu hạn các khoá có thể

 Với mỗi khoá k  K, có một phép biến đổi mã hóa Ek  E và một phép biến đổi giải mã tương ứng Dk  D Trong đó Ek: P  C và Dk: C  P là các hàm thoả mãn Dk(Ek(x)) = x với bất kỳ thông điệp x  P

Ở đây mỗi phép biến đổi mã hoá Ek được xác đinh bởi thuật toán mã hoá E chung cho mọi phép biến đổi và một khoá k riêng để phân biệt với các phép biến đổi khác tương tự, mỗi phép biến đổi giả mã Dk được xác định bởi thuật toán giải mã D chung và một khoá k phân biệt Yêu cầu đặt ra cho quá trình giải mã là: Ek (x1)  Ek(x2) nếu x1  x2 Mặt khác nếu Ek(x1) = Ek(x2) mà x1  x2 là giải mã không duy nhất,

và người nhận sẽ không thể quyết định thông điệp giải mã được là x1 hay x2

1.1.3 Các yêu cầu đối với một hệ mật mã

 Dễ tính toán: các phép biến đổi mã hoá và giải mã phải hiệu quả đối với mọi khoá trong không gian khoá

 Sự an toàn: phụ thuộc vào tính mật của các khoá k  K, không phụ thuộc vào tính phức tạp và tính mật của các thuật toán mã hoá E hay giải mã D

 Dễ sử dụng

 Đối với hệ mật thì tính mật và tính xác thực phải được bảo đảm

 Yêu cầu của tính mật:

 Đối với những người thám mã, thì công việc tính toán là không thể thực hiện được, để xác định một cách có hệ thống phép biến đổi giải mã Dk từ bản mã

C, ngay cả khi biết bản rõ M tương ứng cũng không thể giải mã C

 Đối với những người thám mã, thì công việc tính toán là không thể thực hiện được, để xác định một cách có hệ thống bản mã M từ bản mã chặn được C nếu không có phép biến đổi giải mã Dk

Trang 14

 Yêu cầu cho tính xác thực:

 Người thám mã không thể thay thế bản mã sang C‟ thay cho bản mã C mà không bị phát hiện

 Đối với người thám mã việc tính toán là không làm được, để xác định một cách hệ thống phép biến đổi lập mã Ek khi cho phép C, ngay cả khi đã biết bản rõ M (nghĩa là, không thể mã hoá bản rõ M‟ để thay thế bản mã giả C‟

= Ek(M‟) cho bản mã thật C)

 Đối với những người thám mã thì về mặt tính toán là không nổi để tìm một cách hệ thống bản mã C‟ sao cho Dk(C‟) là bản rõ hợp thức trong tập P

1.1.4 Phương pháp mã hoá dữ liệu

Có hai phương pháp mã hoá khoá, đó là phương pháp mã hoá khoá đối xứng và phương pháp mã hoá khoá không đối xứng Những hệ mật mã dựa trên phương pháp mã hoá khoá đối xứng gọi là hệ mật mã khoá đối xứng (Symmetric key Cryptography) ngược lại, các hệ mật mã dựa trên phương pháp mã hoá không đối xứng, gọi là hệ mật mã khoá không đối xứng (Asymmetric key Cryptography), hay

hệ mật mã khoá công khai (Public key Cryptography)

1.1.4.1 Mã hoá khoá đối xứng

Trong phương pháp mã hoá khoá đối xứng [4], người gửi và người nhận sẽ dùng chung một khoá k duy nhất cho cả hai quá trình mã hoá và giải mã dữ liệu (hình 1.2) Trước khi thực hiện việc trao đổi thông tin bí mật thông qua môi trường mạng, hai bên gửi và nhận phải có khoá trước (bên gửi chuyển khoá bí mật cho bên nhận), đồng thời phải thống nhất các thuật toán dùng cho quá trình mã hoá và giải Hiện tại

có nhiều hệ mật mã được xây dựng trên phương pháp mã hóa khóa đối xứng như: DES, 3DES-Triple, RC2-Rivest Cipher 2…

Trang 15

 Ƣu điểm:

 Tốc độ thực hiện rất nhanh do quá trình mã hoá và giải mã đều sử dụng các phép toán trên dãy bits nhị phân đơn giản, như: AND, OR, XOR, SHIFT (phép dịch), ROTATE (phép quay), (phép nối),… gần với lệnh mã máy

 Dễ dàng thực hiện trên các ứng dụng cho cả phần cứng lẫn phần mềm Do tính chất đơn giản của các phép toán trên dãy bits nhị phân

 Chiều dài của bản mã (Ciphertext) bằng với chiều dài bản rõ (Plaintext) vì không sinh thêm những thông tin phụ trong quá trình mã hoá và giải mã

 Nhƣợc điểm:

 Nhược điểm chính của các hệ là khoá bí mật được chuyền đi trên môi trường mạng Cho nên vẫn tồn tại nguy cơ khoá bí mật có thể bị đánh cắp Vì vậy đòi hỏi công việc quản lý khoá là rất phức tạp, phải dùng thêm các cơ chế

và giải thuật khác trong việc quản lý, trao đổi khóa giữa các đối tác

 Không có tính chất xác định được chủ nhân của thông tin đã mã hoá, cũng như không có tính chất không thể phủ nhận (Non-Repudiation) thông tin

Do đó khó có thể ứng dụng vào các nhu cầu cần xác định nguồn gốc của thông tin như chữ kí điện tử (Digital signature)…

 Đối với một hệ thống lớn có nhiều đối tác giao tiếp với nhau, tạo nên sự khó khăn trong việc quản lý khoá vì một người sử dụng phải giữ quá nhiều khoá bí mật của các đối tác muốn trao đổi thông tin với họ

Trang 16

 Ứng dụng

 Mã hoá dữ liệu đường truyền (tranmission encryption): cũng do những ưu thế về tính bảo mật, tốc độ và thực hiện đơn giản

 Mã hoá dữ liệu lưu trữ (Data storage encryption): cũng do những ưu thế trên,

mà hệ này được dùng phổ biến trong việc mã hoá cơ sở dữ liệu, mã hoá hệ thống file an toàn (secure file system),…

Nhận xét: Do những nhược điểm trên nên luận văn sẽ không đi sâu nghiên cứu chi

tiết mật mã dựa theo phương pháp mã hoá khoá đối xứng Vì phương pháp mã hoá này rất khó đáp ứng được mục tiêu của đề tài đã đặt ra

1.1.4.2 Mã hoá khoá không đối xứng

Phương pháp mã hoá không đối xứng [1], [4], [6] đã giải quyết được những nhược điểm của phương pháp mã hoá khoá đối xứng Đây chính là phương pháp mã hoá mà luận văn này sẽ đi sâu nghiên cứu chi tiết để giải quyết vấn đề đã đặt ra Trong phương pháp này sử dụng hai khoá có vai trò trái ngược nhau bao gồm một khoá công khai (public key), được công bố rộng dãi dùng cho quá trình mã hoá Khoá riêng (private key) tương xứng còn lại được giữ bí mật của từng người, dùng cho quá trình giải mã (hình 1.3) Tuy nhiên, hai khóa này có quan hệ toán học với nhau, từ khoá riêng có thể tính toán để đưa ra được khoá công khai nhưng điều ngược lại về mặt tính toán là không thể làm nổi với điều kiện chiều dài khoá đủ lớn

1.1.5 Mật mã dựa trên những bài toán khó tính toán

Trong bài báo đưa ra năm 1976, Diffie và Hellman gợi ý áp dụng độ phức tạp

tính toán để thiết kế các bài toán mã hoá Các tác giả này đã lưu ý những bài toán

Trang 17

NP-đầy đủ có thể là những ứng cử viên tuyệt vời để thiết kế các hệ mật mã khoá công khai Vì chúng không thể giải được trong thời gian đa thức với bất kỳ kỹ thuật nào đã biết (những bài toán có độ phức tạp tính toán lớn hơn bài toán NP không tích hợp, vì các phép biến đổi mã hoá và giải mã cần phải có tốc độ thực hiện nhanh)

Để xây dựng những hệ mật mã như vậy, một thông tin “cửa sập” bí mật được chèn thêm vào bài toán khó bao gồm việc nghịch đảo một hàm một chiều

Định nghĩa 1.2: Cho các tập hữu hạn S, T Hàm  : S T được gọi là hàm một

chiều (a one-way function) nếu như:

 Hàm (x) dễ tính toán, nghĩa là x  S, có thể dễ dàng tính y = (x)

 Hàm ngược -1 (y) khó tính, nghĩa là cho y  T thì khó tính được x = -1

(y)

Định nghĩa 1.3: Hàm một chiều cửa sập (a trapdoor one-way function) là hàm một

chiều f được thêm vào thông tin cửa sập (trapdoor information) để có thể dễ dàng tính x khi biết bất kỳ y  T thoả mãn x = -1

(y)

 Ví dụ hàm một chiều:

 : pq  N là một hàm một chiều với p, q là các số nguyên tố lớn Thực vậy

ta có thể dễ thực hiện phép nhân N = p q (độ phức tạp đa thức), nhưng khi tính -1

lại là bài toán cực khó (đây chính là bài toán phân tích ra thừa số nguyên tố có tốc độ phức tạp dạng mũ)

 k, N :x  xk mod N là hàm một chiều, với N = p q, p và q là các số nguyên

tố lớn, k k‟  1 (mod  (N)) Thực vậy phép tính xk mod N có độ phức tạp

đa thức Nhưng khi tính -1 lại cực khó Tuy nhiên nếu biết k‟ thì dễ dàng tính được x khi biết xk từ công thức (xk)k‟ = x

Trang 18

âm) được định nghĩa như sau: với bất kỳ số x  Zn  y  Zn : (x + y) mod n = 0

Ghi chú: Tương tự như phép cộng, phép nhân modulo n cũng có phần tử nghịch

đảo được định nghĩa như sau: cho a  Zn nếu  x  Zn sao cho: a * x  1 (mod n) thì x gọi là phần tử nghịch đảo nhân của a mod n, ký hiệu x = a-1

mod n Ví dụ như

2 là phần tử nghịch đảo của 3 mod 5 vì ta có (3 * 2) mod 5 = 1

c = (a * b) mod n = [(a mod n) * (b mod n)] mod n

Trang 19

1.2.2 Một số định lý và định nghĩa quan trọng

Ở phần này sẽ trình bày một số các định lý quan trọng [1], được áp dụng để chứng minh tính đúng của các thuật toán trong các thế hệ mật khoá công khai

 Hàm -Euler (Euler’s totient function)

Định nghĩa 1.4: Cho n là số nguyên dương, hàm -Euler của n, ký hiệu (n), là

số các số nguyên dương nhỏ hơn hoặc bằng n và nguyên tố cùng nhau với n

Công thức tính tổng quát hàm -Euler nhƣ sau:

Giả sử n được phân tích thành các số nguyên tố: n =  piei, với pi là các số nguyên

 Định nghĩa 1.5: Một trường hữu hạn là một trường F chứa một số hữu hạn

các phần tử Bậc của nhóm F là số các phần tử tồn tại trong F

 Định nghĩa 1.6: Cho Fq là một trường hữu hạn và một phần tử g  Fq, định nghĩa bậc (order) của g là số nguyên dương m nhỏ nhất sao cho: gm  1 (mod q), và ký hiệu là: Ordq(g) = m

 Định nghĩa 1.7: Một phần tử sinh g của trường hữu hạn Fq, nếu g có bậc

q – 1:

Phát biểu tương đương: g là phần tử sinh (chính), nếu luỹ thừa của g có thể sinh

ra tất cả các phần tử khác không của Fq* Nghĩa là: gx : 0 ≤ x ≤ q - 2 = Fq*

a (p - 1)  1 (mod p)

a(n)  1 (mod n)

Trang 20

 Định lý 1.3: Mỗi trường hữu hạn đều có phần tử sinh Nếu g là một phần tử

sinh của Fq* thì gj

cũng là phần tử sinh nếu và chỉ nếu gcd(j, q – 1) = 1 Vậy

có tổng cộng (q–1) phần tử sinh khác nhau của Fq* (gcd: greatest common divisor)

 Định nghĩa 1.8: aZn* được gọi là thặng dư bậc hai theo modul n nếu tồn tại

xZn* sao cho x2  a mod n Tập tất cả các thặng dư bậc hai modul n được

ký hiệu là Qn

 Định nghĩa 1.9: Cho aQn Nếu x Zn* thỏa mãn x2  a mod n thì x được gọi là căn bậc hai modul n

 Định nghĩa 1.10: Cho p là số nguyên tố và a là số nguyên Ký hiệu Jacobi

(a/p) bằng 1 nếu a là thặng dư bậc hai của p, ngược lại thì bằng -1

 Định nghĩa 1.11: Nếu n không phải số nguyên tố thì ký hiệu Jacobi được

định nghĩa như sau:

n a

a n a

p a p

a p

p a n

 Định nghĩa 1.13: N=pq được gọi là số Williams nếu p=3 mod 8 và q=3 mod

8 Số Williams là một dạng đặc biệt của số Blum nên có tất cả những đặc trưng của số Blum

Chú ý: (Số lượng căn bậc hai)

(i) Mỗi thặng dư bậc hai có hai căn bậc hai nếu n là số nguyên tố Một số nhỏ hơn (n/2) và một số lớn hơn (n/2)

(ii) Nếu n không phải số nguyên tố thì mỗi thặng dư bậc hai có bốn căn bậc hai Bốn số này thuộc bốn tập khác nhau:

1 Số thứ nhất có giá trị nằm giữa 1 và pq và có (a/p)=1, (a/q)=1

Trang 21

(i) Tính kết hợp: a(bc)=(ab)c với mọi a, b, c  G

(ii) Có môt phần tử 1G được gọi là phần tử đơn vị sao cho:

a1=1a=a với mọi aG

(iii) Với mỗi aG, tồn tại một phần tử a-1G được gọi là phần tử nghịch đảo của

a sao cho: aa-1=a-1a=1

1.3 CÁC THUẬT TOÁN THƯỜNG DÙNG

1.3.1 Tìm phần tử nghịch đảo nhân

Thuật toán tìm phần tử nghịch đảo [1] còn được gọi là thuật toán Euclide mở rộng Cho phép tính phần tử nghịch đảo của một số theo modulo, được sử dụng hầu hết trong tất cả các hệ mật mã khóa công khai ở các quá trình tạo khóa và giải mã

Thuật toán 1.2: Tìm phần tử nghịch đảo của một số nguyên theo modulo n

Trang 22

1.3.2 Thuật toán kiểm tra tính nguyên tố

Các thuật toán kiểm tra tính nguyên tố của một số nguyên bằng xác suất Monte Carlo [2], [4] như thuật toán Miller-Rabin, Soloway-Strassen, đều có tốc độ thực

hiện khá nhanh (khoảng 0(n 2 ), với n là số bits của số cần kiểm tra) Tuy nhiên,

những thuật toán này không đưa ra một kết luận chính xác về tính nguyên tố của con số, mà luôn có một xác suất sai sót Như vậy để có một sai số cực nhỏ chấp nhận được, ta phải thực hiện thuật toán kiểm tra nhiều lần Một câu hỏi khác đặt ra

là với khoảng bao nhiêu số nguyên dương ngẫu nhiên (có chiều dài xác định) thì có thể tìm ra được một số nguyên tố? Lý thuyết số nguyên tố đã chứng minh được số

các số nguyên tố nhỏ hơn N là: N/ln(N) Như vậy, nếu p là một số nguyên ngẫu nhiên thì xác suất để p trở thành số nguyên tố là: 1/ln(p) Giả sử nếu chọn p là số

nguyên tố có chiều dài 512-bits, thì xác suất để số p nguyên tố là 1/354 Mặt khác,

do chúng ta chỉ quan tâm đến những số lẻ, nên xác suất để p nguyên tố là 2/354 = 1/177 Nghĩa là, trung bình khoảng 177 số lẻ ngẫu nhiên sẽ có 1 số nguyên tố

Người ta đã cũng chứng minh được, thuật toán Miller-Rabin dùng kiểm tra tính nguyên tố của một số nguyên dương lẻ với sai số nhiều nhất là1/4 Do đó, nếu thực hiện thuật toán này t lần thì sai số nhiều nhất là 1/4t, trong thực hành nên chọn số t >

20 để đảm bảo chắc chắn tính nguyên tố cho kiểm tra Thuật toán này được sử dụng trong quá trình tạo khoá ở hệ mật mã RSA và hệ mật mã ELGamal mà luận văn này nghiên cứu trong chương hai

Trang 23

Thuật toán 1.3: (thuật toán Miller-Rabin) kiểm tra tính nguyên tố của một số

Unit Testprime

Input n > 2

Output [True, False] (True: n là sốnguyên tố, False: n là hợp số)

1 Đặt n = 2km + 1; (với m lẻ, dùng thuật toán 2km);

8 Return True; /*n là số nguyên tố */

Thuật toán 1.4: Kiểm tra tính nguyên tố của một số với t lần thực hiện (t > 20)

Unit Testprime_t

Input n > 2 Output True, False (True: n là số nguyên tố, False: n là hợp số)

1 Đặt n = 2km + 1; (sử dụng thuật toán 2km ở trên)

2 For (j = 1; j ≤ t; j++) Chọn số ngẫu nhiên a 2,…, n - 1

Trang 24

i = i + 1;

If (b <> (n – 1)) Return False; /* n là hợp số*/ 

3 Return True; /* n là số nguyên tố */

1.3.3 Thuật toán luỹ thừa nhanh

Thuật toán luỹ thừa nhanh modulo N (y = xe mod N) [5] được sử dụng rất nhiều trong các thế hệ mật mã khoá công khai Tốc độ thực hiện của các quá trình mã hoá

và giải mã của hệ mật mã phụ thuộc rất nhiều vào phép tính này với toán hạng là những số nguyên cực lớn Vì vậy đòi hỏi cần phải có một thuật toán thực hiện phép tính luỹ thừa modulo càng nhanh càng tốt Trong phần này sẽ trình bầy chi tiết về thuật toán và chi phí thực hiện của thuật toán thường được sử dụng nhất hiện nay

gọi là: “Thuật toán luỹ thừa nhanh”

Thuật toán này, dựa vào biểu diễn nhị phân của số mũ để thực hiện phép tính luỹ thừa modulo của một số nguyên, chỉ với một vài phép tính nhân và phép tính bình phương Thuật toán có các tham số đầu vào là: số M, số N và biểu diễn nhị phân của số mũ: e = e(k – 1)e(k – 2) e(1)e(0) = 

1

0 *2

k i

i i

e

M = 

1 0

k i

i i

e

M 2 mod N

Đầu tiên gán biến C = 1, sau đó duyệt từng giá trị bít, thông qua biểu diễn nhị phân của số mũ, bắt đầu từ phía bên trái sang phía bên phải Tại mỗi vòng lặp thứ I, thực hiện một phép tính bình phương của kết quả hiện tại (Ci = Ci – 1 * Ci – 1 mod N) Nếu giá trị bít tại vị trí đang xét ei = 1 thì kết quả vừa tính được nhân với M modulo

N, (C = C * Mod N) Khi kết thúc lần lặp thứ k ta có kết quả là: C = M e

mod N

Thuật toán 1.5: Tính luỹ thừa nhanh của một số theo modulo N

Unit Fastexp

Input M, e, N Output C (với C = Me mod N)

1 Biểudễn nhị phân số mũ e = (ek – 1, ek – 2,…, e0)2;

2 C = 1;

Trang 25

 Chi phí thực hiện thuật toán:

Mỗi lần lặp thuật toán đều thực hiện một phép tính bình phương (C = C * C mod N), ngoại trừ bước đầu tiên khi C = 1 và một phép nhân (C = C * M mod N) với xác suất xảy ra khoảng 1

/2 Như vậy với k lần lặp (k là số bits biểu diễn nhị phân của số

mũ e)  Thuật toán thực hiện tất cả khoảng (3k/2 – 1) phép nhân modulo N, mà chi phí thời gian để thực hiện một phép nhân modulo N (có chiều dài n-bits) là: 2n2+ 2n Như vậy chi phí tổng cộng của thuật toán là (3k – 2) * (n2 + n), nếu số mũ e có kích cỡ gần bằng với số N (k  n, số bít của số mũ xấp xỉ với số bít của số n) Thì chi phí thời gian tổng cộng của thuật toán là :3n3 + n2 + 0(n2)

Trang 26

Chương 2 CÁC HỆ MẬT MÃ KHÓA CÔNG KHAI

VÀ MÔ HÌNH CHỮ KÝ ĐIỆN TỬ 2.1 LÝ THUYẾT CHUNG VỀ HỆ MẬT MÃ KHÓA CÔNG KHAI

Vào năm 1976, một hệ thống có kiểu mã hoá mới gọi là hệ thống mật mã khoá

công khai được đưa ra bởi các nhà khoa học Whitfield Diffie, Martin Hellman và Ralph Merkle [1], [7] Nhưng trong khi hai nhà nghiên cứu đầu tiên đã công bố

những phát minh của mình vào thời điểm đó và nhận được nhiều sự quan tâm của đồng nghiệp, thì Ralph Merkle lại thiếu may mắn hơn Chính vì vậy mà những nghiên cứu của ông mãi đến năm 1978 mới được công bố Ngày nay người ta đều công nhận rằng tất cả các nhà khoa học trên là cha đẻ của hệ mật mã khoá công khai

Độ an toàn của hệ thống mật mã mới này, không phải được đo bằng độ phức tạp của các thuật toán mã hoá, mà nó dựa vào một khám phá mới vô cùng quan trọng ngành khoa học máy tính, gọi là lý thuyết độ phức tạp tính toán lý thuyết độ phức tạp chủ yếu đề cập đến sự phân tích các thuật toán và đặc biệt là số các bước tính toán cần thiết để hoàn thành thuật toán Từ đó xác định độ an toàn của bất kì hệ mật

mã khoá công khai nào, đều được đo bằng tổng thời gian cần dùng cho một máy tính có thể bẻ gẫy hệ mật mã đó

Trong hệ mật mã khoá công khai, khóa mã hoá ke (khoá công khai) và khoá giải

mã kd (khoá riêng) là hoàn toàn khác nhau Người sử dụng có thể công bố phương pháp mã hoá Eke của mình mà không sợ bị tiết lộ thông tin Điều này có nghĩa rằng, người thám mã cũng biết được Eke do đó về mặt lý thuyết thì họ có thể biết được phương pháp giải mã Dkd bởi vì hai quá trình này là nghịch đảo lẫn nhau Tuy nhiên, trên thực tế người thám mã rất khó tìm được Dkd từ Eke Vì vậy, việc mã hoá thông tin (bản rõ) bằng phương pháp mã hoá Eke vẫn giữ được độ an toàn cho những thông tin bí mật

Trang 27

2.1.1 Nguyên lý cơ bản của hệ mật mã khoá công khai

Hệ mật mã khoá công khai được xây dựng dựa trên ba quan điểm [7] sau:

 Hệ mật mã khoá công khai dựa trên quan điểm hàm một chiều (one-way function) và khoá công khai, để biến đổi một bản rõ thành bản mã với thời gian tính toán hợp lý Nhưng nếu muốn hàm tính ngược (inverse funcition) thì phải mất nhiều thời gian, đến mức không thực hiện nổi Vì vậy, các hacker khó có thể tính toán để thu được bản rõ từ bản mã chặn được

 Một quan điểm khác dùng trong hệ mật mã hoá công khai đó là thông tin “ cửa sập” (trap door) mà hàm một chiều phải có Thông tin bí mật này (khoá riêng) chỉ có thể được đưa vào bởi người sở hữu cặp khoá Khi có được thông tin “ cửa sập” thì công việc giải mã sẽ trở nên dễ dàng

 Hầu hết các hệ mật mã khoá công khai được xây dựng dựa trên những bài toán khó đã viết như: hệ Ba lô dựa trên bài toán tổng quan, hệ EIGamal dựa trên bài toán logrithm rời rạc trong trường hữu hạn Zp và hệ RSA dựa trên bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố

2.1.2 Hoạt động của hệ mật mã khoá công khai

Trong hệ thống mã hoá khoá công khai [4], mỗi người sử dụng đều tạo riêng cho mình một cặp khoá Trong đó, một khoá gọi là khoá công khai (public key) cùng với thuật toán mã hoá E, được công bố rộng rãi tại thư mục dùng chung cho mọi

Trang 28

người sử dụng (giống như số điện thoại) Khoá còn lại gọi là khoá riêng (private key) và thuật toán giải mã D được giữ bí mật bởi từng người sử dụng

Giả sử người A muốn gửi thông điệp M đến người B (hình 2.2) Người A sẽ tìm khoá công khai keB của người B trong thư mục dùng chung, và tính C = EkeB (M) rồi gửi bản mã C cho người nhận B Khi nhận được bản mã C, người B sẽ giải mã dựa vào khoá riêng kdB của mình để tính M = DkdB (C) Trong quá trình trao đổi, mặc dù người thám mã có thể chặn được bản mã C, và biết khoá lập mã keB, nhưng

để giải mã thông điệp, họ phải đối mặt với bài toán rất khó đến mức không thể giải nổi Như vậy hệ mã hoá khoá công khai đã loại bỏ được sự cần thiết phải có kỹ thuật quản lý và phân phối khoá phức tạp như ở hệ thống mã hoá khoá đối xứng Do tất cả các thành viên đều có thể dùng khoá công khai của thành viên khác để mã hóa thông tin gửi cho họ Nhưng chỉ có duy nhất một thành viên có khoá riêng tương ứng, mới giải mã được thông điệp Đây chính là yếu tố rất quan trọng cho sự xây dựng thành công các hệ thống tiền điện tử mà luận văn này quan tâm

Thám mã

Giải mã

B Thông điệp

Key pulic

Mã hóa Thông điệp

A

Hình 2.2 Sơ đồ hoạt động của hệ mật mã khoá công khai Hình 2.2 Sơ đồ hoạt động của hệ mật mã khoá côngkhai

Khoá B công khai

Trang 29

2.1.3 Khả năng ứng dụng của hệ mật mã khoá công khai

Tuỳ thuộc vào những lĩnh vực ứng dụng cụ thể mà người gửi sử dụng khoá bí mật của mình, khoá công khai của người nhận hoặc cả hai để hình thành một số các

mô hình ứng dụng phù hợp như sau [4], [8]:

Mã hoá và giải mã: Người gửi A thực hiện mã hoá thông điệp M bằng khoá

công khai keB của người nhận B: C = Ekeb (M) Còn người nhận giải mã bằng khoá riêng kdB của mình: M = DkdB(C) Như vậy chỉ có duy nhất người

B mới giải mã được thông điệp, điều này gọi là tính mật của hệ

Chữ ký điện tử: Người gửi A thực hiện mã hoá (hay ký) một thông điệp M

bằng khóa riêng kdA: C = EkdA(M) Người nhận B giải mã bằng khóa công khai keA của người gửi A: M = DkeA(C) Như vậy chỉ có thứ duy nhất A là người có khóa riêng để mã hóa, cho nên thông điệp nhận được là của A,

điều này gọi là tính xác thực của hệ

Trang 30

Chuyển đổi khóa: Người gửi A thực hiện mã hóa thông điệp hai lần, lần thứ

nhất sử dụng khóa bí mật kdA của mình EkdA(M), lần thứ hai sử dụng khóa công khai keB của người nhận B: EkeB(EkdA(M)) Khi nhận bản mã, người nhận B cũng thực hiện giải mã hai lần, đầu tiên dùng khóa riêng kdB của mình DkdB(EkeB[EkdA(M)]), sau đó dùng khóa công khai keA của người gửi A: DkeA{DkdB(EkeB[EkdA(M)])} = M Như vậy chỉ người gửi mới có khóa riêng để mã hóa và chỉ người nhận mới có khóa riêng để giải mã, đây chính

là tính xác thực và tính mật của hệ

2.1.4 Các yêu cầu của hệ mật mã khoá công khai

 Cộng việc tính toán thì dễ dàng đối với các thành viên khi muốn tạo một cặp khoá (bao gồm khoá công khai ke và khoá riêng kd)

 Công việc tính toán thì dễ dàng cho người gửi, khi biết khoá công khai và thông điệp M cần hoá thành một văn bản mã tương ứng C = EKe(M)

 Công việc tính toán thì dễ cho người nhận, sử dụng khóa riêng để giải mã bản mã C, khôi phục lại đoạn tin ban đầu: M = DKdB(C) = DkdB [EKeB(C)]

 Tính toán không tính nổi đối với người thám mã, khi biết được khoá công khai ke, muốn xác định khoá bí mật kd

 Tính toán không tính nổi, đối với các thám mã khi biết được khoá công khai

ke và bản mã C để khôi phục lại thông điệp M ban đầu

Hình 2.5 Sơ đồ minh họa tính mật và tính xác thực của hệ mật mã khóa công khai

Trang 31

Nhận xét: Hệ thống mã hoá khoá công khai không hẳn là đảm bảo được tính an

toàn tuyệt đối Bởi vì với mật mã C quan sát được, về mặt lý thuyết người thám mã đều có thể tìm ra bản rõ M sao cho C là bản mã được mã hoá từ bản rõ M Tuy nhiên, việc giải bài toán ngược là rất khó, mất rất nhiều thời gian Thông thường thuật toán để giải bài toán loại này có chi phí rất lớn (độ phức tạp có dạng mũ), cho nên khó có thể giải mã nổi trong một thời gian hợp lý

2.2 HỆ MẬT MÃ KHÓA CÔNG KHAI BA LÔ

Vào năm 1977, Ralph Merkel đưa ra ý tưởng của mình về hệ mật mã khoá công

khai, ông đã xây dựng được thông tin “cửa sập” (trap door) chèn vào hàm một chiều

ba lô, để phát triển thành hệ mật mã khoá công khai ba lô (knapsack public key cryptosystem) [1], [4], có độ an toàn phụ thuộc vào độ khó giải bài toán ba lô tổng quát (bài toán tổng con) Hiện nay có nhiều hệ mật mã ba lô khác nhau, nhưng hầu hết các hệ này chỉ khác nhau ở kỹ thuật thiết kế thông tin “cửa sập”

2.2.1 Bài toán ba lô

Bài toán 2.1: Giả sử (a1, a2,…, an) là những số nguyên dương, cho bất kỳ số nguyên dương S là tổng của một tập con có các phần tử ai Hãy tìm một vector nhị phân

(x1, x1,…, x1) với xi = {0, 1} thgoả mãn: S = n

i =1 ai * xi, i = 1, 2,…,n)

Đây là bài toán “khó” nổi tiếng thuộc lớp NP, vì với một tập con bất kỳ, dễ dàng kiểm tra để thấy được tổng các phần tử ai có bằng số nguyên S hay không Nhưng điều ngược lại, việc tìm một tập con có tổng các phần tử bằng S là khó hơn rất nhiều, có thể tìm kiếm hết mọi khả năng, yêu cầu thực hiện kiểm tra 2n

tập con có thể Phương pháp tốt nhất được biết để giải bài toán ba lô yêu cầu khoảng 2n/ 2 bước tính Như vậy nếu chọn phần tử n = 100 thì máy tính khó có thể giải nổi bài toán Tuy nhiên, ta có thể tìm các giá trị (a1, a2,…, an) có tính chất nào đó để bài toán ba

lô được giải một cách dễ dàng hơn

2.2.2 Bài toán ba lô siêu tăng

Các số nguyên (a1, a2,…,an) được gọi là dãy số siêu tăng nếu và chỉ nếu mỗi phần tử aj đều lớn hơn tổng tất cả các phần tử đứng trước nó Nghĩa là: aj >j -1

i =1 ai với j = 2, 3,…, n

Trang 32

Bài toán 2.2: Giả sử có một dãy các số nguyên (a1, a2,…,an) siêu tăng và S là tổng các phần tử trong một tập hợp con bất kỳ của dãy Hãy tìm vector x = (x1,

Cách giải bài toán ba lô siêu tăng như sau:

Đầu tiên xác định phần tử xn của vector theo qui tắc:

j i

i i

n

j

i

j i i

j

a a x s

a a x s

x

1

1

*,

0

*,

1

Với j = n-1, n-2, … , 2, 1

Thuật toán 2.1: Giải bài toán ba lô siêu tăng

Unit Super_knapsack Input (a1, a2,…,an), S Output (x1, x1,…, xn)

1 For (i = n; i > 0; i ) { if (S > ai)

{xi = 1; S = S – ai;}

else xi = 0;

}

2 Return (x1, x1,…, xn);

2.2.3 Hệ mật mã khoá công khai ba lô Merkle-Hellman

Ý tưởng của hệ mật mã khoá công khai ba lô Merkle-Hellman [1], [4] là: đầu

tiên chọn bài toán ba lô siêu tăng “dễ giải” Sử dụng bài toán ba lô “khó” làm khoá công khai, còn bài toán ba lô siêu tăng ban đầu sẽ được giữ bí mật làm khóa riêng

2.2.3.1 Mô tả các quá trình tạo khoá, mã hoá, giải mã

 Tạo khoá:

Nếu S > an

Nếu S < an

Trang 33

Để sử dụng hệ mật mã khoá công khai ba lô Merkle-Hellman [1], [4], mỗi người

sử dụng phải tạo riêng một cặp khoá gồm khoá công khai, và khoá riêng như sau:

 Chọn một vector ba lô siêu tăng a = (a1, a2,…, an) (khoảng 100 phần tử)

 Chọn một số nguyên m > n

i =1ai và một số w sao cho gcd (w, m) = 1

 Nhân các phần tử của vector a với w modulo m, kết quả thu được là vector

ba lô b = (b1, b2,…,bn), trong đó bi = w * ai mod m, và i = 1,…,n

 Công bố vector ba lô b = (b1, b2,…,bn) như khoá công khai, các số w, m và vector ba lô siêu tăng a = (a1, a2,…, an) được giữ bí mật làm khoá riêng

 Mã hoá:

Hệ mật mã khoá công khai ba lô Merkle-Hellman, thực hiện mã hoá theo từng

khối n-bits với n là số phần tử của vector ba lô lập mã b Giả sử người sử dụng A muốn mã hoá thông điệp M để gửi cho B, thì phía A phải thực hiện như sau:

 Biến đổi các ký tự trong thông điệp thành chuỗi nhị phân theo qui tắc sau:

Trang 34

 Chia thông điệp thành từng khối có chiều dài n-bits với n là số phần tử của vector ba lô b, kết quả thu được một dãy gồm k khối M1, M2,…,Mk, mỗi khối là một vector Mi = (xi1, xi2,…, xin), với:

 Giải mã:

Khi nhận được bản mã C, người nhận B giải mã lần lượt từng số Ci như sau:

 Tính các tổng Si = Ci * w-1 mod m, với i = 1,…, k ở đây w-1 là phần tử nghịch đảo của w mod m: w * w-1 1 (mod m)

 Giải lần lượt bài toán ba lô siêu tăng với vector a = (a1, a2,…,an) với các số Sitính được Kết quả là một dãy các khối số M1, M2,…,Mk trong đó mỗi khối

là một vector Mi = (xi1, xi2,…, xin), với xij = {0, 1}, 1 ≤ i ≤ k và 1 ≤ j ≤ n

 Thực hiện phép biến đổi ngược từ các chuổi bits thành các ký tự tương ứng,

để phục hồi lại thông điệp M ban đầu

Bảng 2.2 Các bước tạo khoá, mã hoá, giải mã của Hệ ba lô Merkele-Hellman

Trang 35

2.2.3.2 Tính đúng của quá trình giải mã

Giả sử (a1, a2,…, an), m, w-1, w, (b1, b2,…, bn) được định nghĩa như trên, ta có:

Để tính toán đơn giản, trong ví dụ này chỉ chọn vector ba lô siêu tăng có 10 phần

tử nhằm mục đích minh hoạ các bước mà không xét đến độ an toàn của hệ

 Chọn vector ba lô siêu tăng a = (1, 3, 5, 11, 21, 24, 44, 87, 175, 349, 701)

 Chọn số m = 1590 thoả mãn m > 2an = 2 * 701 = 1402, và chọn số w = 43 thoả mãn gcd (43, 1590) = 1

 Nhân các phần tử của vector a với 43 modulo 1590 ta được vector ba lô tổng quát b = (43, 129, 215, 473, 903, 302, 516, 1165, 697, 1523)

 Chọn (43, 129, 215, 473, 903, 302, 516, 1165, 697, 1523) làm khoá công khai Các số 43, 1590, (1, 3, 5, 11, 21, 44, 87, 175, 349, 701) là khoảng riêng

 Mã hoá:

Trang 36

Giả sử người A muốn mã hoá thông điệp M = “LOP CAO HOC CNTT” để gửi cho người B thì phía A thực hiện các bước như sau:

 Biến đổi các ký tự thành các chuỗi nhị phân như sau: ( khoảng trắng)

Khi nhận được bản mã C phía B thực hiện các bước giải mã như sau:

 Nhân các phần tử của vector C với 37 modulo 1590 (43 * 37  1 mod 1590),

Trang 37

Vậy khối bản rõ đầu tiên dược giải mã là: M1 = (0110001111)

Tiếp tục giải bài toán trên với các số Si cnf lại thu được kết quả như sau:

0110001111 10000000000 0001100001 0111100000

0100001111 0001100000 0001101110 1010010100

 Chia chuỗi bits giải mã được thành các khối 5-bits và thực hiện qui tắc biến đổi ngược lại từ khối 5-bits  1 ký tự tương ứng để khôi phục lại thông điệp M = “LOP CAO HOC CNTT” giống như ban đầu

2.2.4 Đánh giá hệ mật mã khoá công khai ba lô

2.2.4.1 Độ an toàn

Khi đưa ra hệ mật mã ba lô, Ralph Merkle cho rằng hệ mật mã này là an toàn, và ông đưa ra một giải thưởng cho bất kỳ ai bẻ gãy được hệ mật mã này Năm 1982 Adi Shamir đã tìm ra cách tấn công lược đồ mật mã ba lô Merkle-Hellman một lần

lặp (singly-iterated Merkle-Hellman scheme) với thuật toán thực hiện trong thời

gian đa thức Cách tấn công này đã chứng minh rằng sự che dấu cấu trúc vector ba

lô siêu tăng bằng phép toán nhân modulo là không an toàn [4] Sau khi cải tiến và

đưa ra lược đồ Merkle-Hellman nhiều lần lặp (Imultiply- iterated Merkle-Hellman

scheme) ông lại có một giải thưởng khác cho bất kỳ ai có thể bẻ gãy được phiên bản

mới này Chỉ sau đó hai năm, 1984 Merkle đành phải trao thưởng cho Ernest

Brickell người đã tìm được phương pháp tấn công lưựoc đồ ba lô Merkle-Hellman

Trang 38

lặp nhiều lần, kỹ thuật này nhận biết được bản rõ mà không cần tìm vector ba lô siêu tăng ban đầu

Một hệ mật mã với vector ba lô có 100 phần tử và thực hiện 20 lần lặp xử lý để che giấu cấu trúc có thể bị bẻ gãy trong thời gian 2 giờ trê máy tính Cray-1

2.2.4.2 Hiệu suất thực hiện và ứng dụng

Hệ mật mã khoá công khai ba lô Merkle-Hellman cũng như một số hệ ba lô khác

có một đặc điểm là tốc độ thực hiện rất nhanh Vì vậy mà hệ mật mã này rất được chú ý vào những năm 1978, hơn cả hệ mật mã nổi tiếng RSA nhờ có tốc độ mã hoá

và giải mã nhanh, đặc biệt lúc này còn có những con chips điện tử dùng trong các ứng dụng bảo mật được cài đặt để thi hành hệ mật mã ba lô Ngày nay hệ mật mã ba

lô dường như không còn được ứng dụng nữa Vì kỹ thuật tấn công hệ mật mã ba lô được phát triển rất mạnh, bất kỳ hệ mật mã ba lô nào dùng phép nhân modulo để biến đổi cấu trúc vector siêu tăng đều có thể bị bẻ gãy trong thời gian hợp lý [4]

2.3 HỆ MẬT MÃ KHÓA CÔNG KHAI ELGAMAL

Hệ mật mã khóa công khai ElGamal [2], [9] được giới thiệu vào năm 1985 bởi

T ElGamal, độ an toàn của hệ này phụ thuộc vào độ khó giải bài toán logarithm rời rạc trong trường số hữu hạn Zp Vì vậy số nguyên tố p cần phải được chọn sao cho bài toán logarithm là khó tính toán Trong trường hợp đặc biệt để ngăn ngừa sự tấn công, thì số nguyên tố p cần phải được chọn sao cho số (p – 1) có ít nhất một thừa

số nguyên tố p Mục đích của hệ này được thiết kế chủ yếu ứng dụng vào mục đích chữ ký điện tử

2.3.1 Bài toán logarithm rời rạc

Độ an toàn của nhiều kỹ thuật mã phụ thuộc vào việc khó giải nổi bài toán logarithm rời rạc (discrete logarithm problem) Một phần danh sách đó bao gồm: lược đồ trao đổi khoá Diffie-Helllman, lược đồ mã hoã ElGamal, lược đồ chữ ký ElGemal và một số các lược đồ mật mã khác…

Định nghĩa 2.1: Cho G là một nhóm vòng (cyclic) hữu hạn có bậc n và g là phần tử

sinh của G Logarithm rời rạc của y cơ số g biểu thị loggy, là một số nguyên duy nhất x, với 0 ≤ x ≤ n – 1 sao cho y = gx

Trang 39

Bài toán 2.3: Cho số nguyên tố p, một phần tử sinh g của Zp*, và một phần tử y

Zp, tìm số nguyên x, 0 ≤ x ≤ p – 2 sao cho y = gx (mod p) (tìm x = loggy)

2.3.2 Định nghĩa các tập làm việc của hệ mật mã ElGamal

 Tạo số nguyên tố p lớn sao cho bài toán logarithm rời rạc trong Zp là khó giải nổi và số p – 1 có ít nhất một thừa số nguyên tố q lớn

 Chọn số g  Zp* là phần tử chính (primitive element) Các giá trị p và g thường được sử dụng chọn ngẫu nhiên số x sao cho 0 < x < p –2, và định nghĩa: K = {(p, g, x, y): y = gx

 Lấy khoá công khai đích thực của người nhận B (p, g, y)

 Đầu tiên dùng thuật toán để chia thông điệp m ra nhiều khối có chiều dài cố định, và mỗi khối được biến đổi thành một số nguyên tương ứng Mi < p, (i

= 1,…, k) theo một thuật toán nào đó Ví dụ dùng thuật toán như sau:

Trang 40

- Biến đổi các ký tự trong nội dung của thông điệp thành các số tương ứng theo qui tắc  00, A  01, B  02,…,Z  26

- Chia thông điệp số vừa biến đổi thành 1 nhóm số có chiều dài bằng nhau, mỗi nhóm biểu diễn một số nguyên Mi < p với (1 ≤ i ≤ 1)

 Chọn ngẫu nhiên một số nguyên k sao cho 0 ≤ k ≤ (p – 2)

 Mã hoá lần lượt từng số Mi (1 ≤ i ≤ 1) với khoá công khai của người nhận bằng cách tính: Ci = Eke(Mi) = (Ci1, Ci2) Với Ci1 = gk mod p và Ci2 = Mi * ykmod p

Tập số {C1, C2,…, Ck}, với Ci = (Ci1, Ci2), i = 1,…, 1 là bản mã gửi cho B

 Giải mã:

Để giải mã bản mã {C1, C2,…, Ck}, người nhận B thực hịên các bước như sau:

 Giải mã lần lượt các cặp số Ci = (Ci1, Ci2), với 1 ≤ i ≤ 1 bằng cách:

 Tạo số nguyên tố p chọn sao cho

bài toán Logarithm rời rạc trong

2.3.4 Tính đúng của quá trình giải mã

Ta có: y = gx

(mod p) (định nghĩa)

Ngày đăng: 25/03/2015, 09:41

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Nguyễn Đình Thức, Đoàn Doãn Khanh (2004), Giáo trình mã hóa thông tin lý thuyết và ứng dụng, NXB Lao Động Sách, tạp chí
Tiêu đề: Giáo trình mã hóa thông tin lý thuyết và ứng dụng
Tác giả: Nguyễn Đình Thức, Đoàn Doãn Khanh
Nhà XB: NXB Lao Động
Năm: 2004
[11] Brands S. (1993), An efficient Off-line electronic cash system based on the representation problem. Technical report, Centrum voor Wiskunde en Informatica, CSR9323, http://www.cwi.nl/~brands/cash.html Link
[1] PGS Hồ Thuần (2000), Giáo trình lý thuyết mật mã và an toàn dữ liệu Khác
[3] PGS.TS Đoàn Văn Ban (2004), Giáo trình xử lý song song Khác
[4] Deninis Luciano, Gordon Prichett, January 1978, From Caesar Ciphers To Public Key Cryptosystems Khác
[5] Dr Tsuyoshi Takagi, Juniorprofessor (2003) Efficiency Comparison Of Several Rsa Variants Khác
[6] RHUL M.Sc Advanced Cryptography, Spring 2004, Week 7: Pubblic Key Cryptography + RSA Khác
[7] Dr. Andreas Steffen (2000), Secure Netword Communication Part II Public Key Cryptography Khác
[8] Ph.D William. Stallings, (1999) Cryptography And Internetword Security Principles And Practice, PRENTICE HALL Khác
[9] Dr. Cunsheng Ding, HKUST Hong Kong (September 2004), Cryptography And Security, Lecture 10: The ElGamal Public Key Cryptosystem Khác
[10] Brands S. (1993), Untraceable Off-Line Cash in Wallets with observers, Advances in Cryptology CRYPT „93, Springer-Verlag, pp. 302-318 Khác
[13] Ferguson N. (1993), Single Term Off-Line Coins, Centrum voor Wiskunde en Informatica Computer science/department of algorithmics and architecture, CSR9318 Khác
[14] Okamoto T. (1995), An Efficient Divisible Electronic Cash Scheme, Advances in Cryptology CRYPTO „95, Springer-Verlag, pp. 438-451 Khác
[15] Okamoto T. and Ohta K. (1991), Universal electronic Cash, Advances in Cryptology CRYPTO „91, Springer-Verlag, pp. 324-337 Khác
[16] Schneier B. (1996), Applied cryptography, second ed. Wiley Khác

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

w