1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài toán logarithm rời rạc và hệ mật elgamal có sửa đổi

80 327 0

Đ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 80
Dung lượng 2,98 MB

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

Nội dung

Hệ mật mã với khóa công khai cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó; mật mã hóa khóa công khai được thiết kế sao cho

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ

CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN

BÀI TOÁN LOGARITHM RỜI RẠC VÀ HỆ MẬT

ELGAMAL CÓ SỬA ĐỔI

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ

BÀI TOÁN LOGARITHM RỜI RẠC VÀ HỆ MẬT

ELGAMAL CÓ SỬA ĐỔI

Trang 3

LỜI CAM ĐOAN

Luận văn thạc sĩ đánh dấu cho những thành quả, kiến thức tôi đã tiếp thu được trong suốt quá trình rèn luyện, học tập tại trường Tôi xin cam đoan luận văn “Bài toán Logarithm rời rạc & Hệ mật ElGamal có sửa đổi” đã được hoàn thành bằng quá trình học tập và nghiên cứu của tôi dưới sự hướng dẫn, góp ý và chỉnh sửa của

GS TS Nguyễn Bình

Trong toàn bộ nội dung nghiên cứu của luận văn, các vấn đề được trình bày là những tìm hiểu và nghiên cứu của cá nhân tôi hoặc là trích dẫn các nguồn tài liệu và một số trang web hợp pháp được đưa ra ở phần Tài liệu tham khảo

Tôi xin cam đoan những lời trên là sự thật và chịu mọi trách nhiệm trước thầy

cô và hội đồng bảo vệ luận văn thạc sĩ

Hà Nội, ngày 12 tháng 12 năm 2017

HỌCVIÊN

Lê Thanh Phúc

Trang 4

LỜI CẢM ƠN

Học viên xin bày tỏ lời cảm ơn chân thành tới tập thể các thầy cô giáo Viện Đại học Mở Hà Nội và Viện công nghệ thông tin đã mang lại cho học viên kiến thức vô cùng quý giá và bổ ích trong suốt quá trình học tập chương trình cao học tại trường Đặc biệt học viên xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo GS.TS Nguyễn Bình- Học viện Bưu chính viễn thông đã định hướng khoa học và đưa ra những góp ý, gợi ý, chỉnh sửa quý báu, quan tâm, tạo điều kiện thuận lợi trong suốt quá trình nghiên cứu hoàn thành luận văn này

Cuối cùng, học viên xin chân thành cảm ơn các bạn bè đồng nghiệp, các bạn học Viên lớp CNTT khóa 2015 - 2017, những người đồng hành trong suốt khóa học

và có nhiều góp ý bổ ích cho tôi Cảm ơn gia đình và người thân đã quan tâm, giúp

đỡ và chia sẻ với học viên trong suốt quá trình học tập

Do thời gian và kiến thức có hạn nên luận văn chắc không tránh khỏi những thiếu sót nhất định Học viên rất mong nhận được những sự góp ý quý báu của thầy

cô và các bạn

Một lần nữa học viên xin được gửi lời cảm ơn chân thành và sâu sắc

Hà Nội, ngày 12 tháng 12 năm 2017

HỌCVIÊN

Lê Thanh Phúc

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v

DANH MỤC CÁC BẢNG BIỂU vi

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

MỞ ĐẦU 1

CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN LOGARITHM RỜI RẠC VÀ CÁC HỆ MẬT MÃ 4

1.1 Tổng quan về bài toán logarithm rời rạc [1] 4

1.1.1 Bài toán Logarithm trên trường số thực R 4

1.1.2 Bài toán Logarithm trên trường hữu hạn 5

1.1.3 Thuật toán logarithm rời rạc 8

1.1.3.1 Phương pháp đơn định 8

1.1.3.2 Thuật toán Adleman 10

1.1.3.3 Thuật toán vét cạn 11

1.1.3.5 Thuật toán Shank 11

1.1.3.6 Thuật toán tính logarithm rời rạc đối với nhóm cyclic 13

1.1.3.7 Tính chỉ số trên GF(p) 14

1.1.3.8 Tính chỉ số trên GF(2n) 15

1.2 Tổng quan mật mã học [4, Tr.11] 17

1.3 Vấn đề về mã hóa [4, Tr.12-15] 18

1.3.1 Khái niệm mật mã 18

1.3.2 Khái niệm về mã hóa 19

1.3.3 Phân loại mã hóa [4, Tr.20-97] 20

1.3.3.1 Hệ mã hóa khóa đối xứng 20

1.3.3.2 Hệ mã hóa khóa bất đối xứng 24

Hệ mật đường cong Eliptic 30

Hệ mã hóa RSA [4, tr.74-79] 31

Hệ mã hóa Paillier 32

Trang 6

1.4 Lý thuyết độ phức tạp của thuật toán [1] 33

1.5 Kết luận chương 1 36

CHƯƠNG 2 XÂY DỰNG HỆ MẬT ELGAMAL CÓ SỬA ĐỔI 38

2.1 Hệ mật mã Elgamal [2, tr.5] 38

2.1.1 Thuật toán mật mã ElGamal cổ điển 38

2.2 Hệ mã hóa ElGamal sửa đổi 43

2.2.1 Thuật toán thứ nhất [5] 43

2.2.2 Thuật toán thứ hai [3, tr.17-20] 45

2.3 Chương trình thực nghiệm hệ mã hóa công khai Elgamal sửa đổi 49

2.4 Kết luận chương 2 51

CHƯƠNG 3 PHÂN TÍCH HIỆU NĂNG AN TOÀN CỦA HỆ MẬT ELGAMAL CÓ SỬA ĐỔI & ỨNG DỤNG TRONG KỸ THUẬT MÃ HÓA PGP ĐỂ BẢO MẬT EMAIL 52

3.1 Đánh giá Hệ mật ElGamal [5] 52

3.2 Hệ mật ElGamal sửa đổi: 53

3.3 Tìm hiểu kỹ thuật mã hóa PGP sử dụng hệ mã hóa khóa công khai Elgamal, RSA trong mã hóa Email [13] 55

3.3.1 Giới thiệu về hệ mã hóa PGP 55

3.3.2 Các thuật toán sử dụng trong PGP 55

3.4 Tổng kết chương 3 69

KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO 70

1 Hạn chế: 70

2 Hướng phát triển 70

TÀI LIỆU THAM KHẢO 71

Tiếng Việt 71

Tiếng nước ngoài 71

Internet 71

Trang 7

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT

1 CA Certificate Authority Cơ quan chứng thực chữ ký số

2 DS Digital Signatures Chữ ký số

3 DSA Digital Signature Algorithm Giải thuật chữ ký điện tử

4 DES Data Encryption Standard Chuẩn mã hóa dữ liệu

5 EMAIL Electronic Mail Thƣ điện tử

7 RSA Rivest, Shamir and Adleman Giải thuật mã hóa công khai

8 PGP Pretty Good Privacy Phần mềm mã hóa dữ liệu và xác

thực

9 PKI Public Key Infrastructure Cơ sở hạ tầng khóa công khai

10 SHA Secure Hash Algorithm Giải thuật băn an toàn

11 SSL Secure Socket Layer Giao thức an ninh thông tin

14 NSA National Security Agency Cơ quan An ninh Quốc gia Mỹ

Trang 8

DANH MỤC CÁC BẢNG BIỂU

Trang

Bảng 1.1 Các giá trị của y = 2x mod 19 trên Z*19 05

Bảng 1.2 Các giá trị log2x(mod 19) trên Z*19 06

Bảng 1.3 Bài toán logarithm rời rạc trên Z*19 07

Bảng 1.4 Bảng chi phí thời gian phân tích sốnguyên n ra thừa số nguyên tố 34

Bảng 3.1 Bảng so sánh tốc độ mã hóa 53

Bảng 3.2 Bảng so sánh tốc độ giải mã 53 Bảng 3.3 Bảng kết quả so sánh thời gian mã hóa của hệ mật trước và sau sửa đổi 54

Trang 9

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

Trang

Hình 1.1 Đồ thị hàm số y=ax và y = logax 05

Hình 1.2 Quá trình mã hoá và giải mã 20

Hình 1.3 Sơ đồ hoạt động của mã hóa khóa đối xứng 21

Hình 1.4 Sơ đồ hoạt động của mã hóa khóa bất đối xứng 25

Hình 1.5 Mã hoá thông điệp sử dụng khoá công khai 26

Hình 1.6 Giải mã thông điệp sử dụng khoá riêng của người nhận 26

Hình 1.7 Hệ mật Omura- Massey xây dựng trên bài toán lôgarith rời rạc 29

Hình 1.8 Quá trình truyền tin sử dụng hệ mật Omura – Massey 29

Hinh 2.1 Hệ mã Emlgamal 40

Hình 2.2 Sơ đồ chứng nhận khóa công khai 42

Hình 2.3 Giao diện sinh khóa 49

Hình 2.4 Kết quả sinh khóa 50

Hình 2.6 Mã hóa và giải mã 50

Hình 3.1 Quá trình mã hóa một thông điệp trong PGP 56

Hình 3.2 Quá trình giải mã một thông điệp trong PGP 58

Trang 10

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Cùng với sự phát triển của công nghệ thông tin và truyền thông, mạng máy tính đang trở thành một phương tiện điều hành thiết yếu trong mọi lĩnh vực hoạt động của xã hội Việc trao đổi thông tin và dữ liệu trong môi trường mạng ngày càng trở nên phổ biến và đang dần thay thế các phương thức truyền tin trực tiếp Khi ngày càng nhiều thông tin được trao đổi thì nhu cầu về bảo mật thông tin là một vấn đề đặt ra cho nhiều ngành, lĩnh vực và nhiều quốc gia Để bảo vệ các thông tin khỏi sự truy cập trái phép cần phải kiểm soát được những vấn đề như: thông tin được tạo ra, lưu trữ và truy nhập như thế nào, ở đâu, bởi ai và vào thời điểm nào Giải quyết các vấn đề trên, kỹ thuật mật mã hiện đại phải đảm bảo các dịch vụ an toàn cơ bản: (1) bí mật (Confidential); (2) xác thực (Authentication); (3) đảm bảo tính toàn vẹn (Integrity)

Hệ mật mã ra đời nhằm đảm bảo các dịch vụ an toàn cơ bản trên như: hệ mật

mã với khóa sở hữu riêng (Private Key Cryptosystems), hệ mã với khóa bí mật (Secret Key Cryptosystems), hệ mã truyền thống (Conventional Cryptosystems) đều

là những hệ mật mã sử dụng mã khóa đối xứng Hệ mật mã với khóa công khai cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó; mật mã hóa khóa công khai được thiết kế sao cho khóa sử dụng trong quá trình mã hóa khác biệt với khóa sử dụng trong quá trình giải mã; khóa sử dụng dùng để mã hóa và ngược lại, tức là hai khóa này có quan hệ với nhau

về mặt toán học nhưng không thể suy diễn được ra nhau Một trong những thuật toán mã khóa công khai được phát triển dựa trên Hệ mật mã ElGamal cho phép giải quyết tốt các yêu cầu bảo mật thông tin thực hiện đồng thời việc xác thực về nguồn gốc và tính toàn vẹn của thông tin Luận văn sẽ trình bày về hệ mật mã ElGamal và xem xét các biến thể của nó

2 Mục tiêu, đối tượng, phạm vi và phương pháp nghiên cứu

Mục tiêu nghiên cứu: Tìm hiểu hoạt động của hệ mật mã khóa công khai và

các biến thể thuật toán ElGamal để đưa ra sửa đổi đối với hệ mật Đánh giá tính bảo

Trang 11

mật thông tin, xác thực về nguồn gốc thông tin, xác thực về tính toàn vẹn của thông tin của hệ thống

Đối tượng nghiên cứu: Hệ mật mã ElGamal là đối tượng chính nghiên cứu của

đề tài nhằm phát hiện các phương pháp tấn công qua đó tìm hiểu các ứng dụng thử nghiệm đánh giá mã hóa với thuật toán ElGamal

Phạm vi nghiên cứu: Đề tài nghiên cứu và đánh giá hiệu quả tính an toàn của

hệ mật ElGamal sửa đổi Xây dựng hoặc tìm hiểu các thuật toán thử nghiệm trên chữ ký số giúp tăng tính an toàn cho chữ ký số Elgamal/ RSA

Phương pháp nghiên cứu

* Phương pháp lý thuyết

- Tìm hiểu nghiên cứu về mật mã, cơ sở toán học của hệ mật mã

- Tìm hiểu bài toán logarithm rời rạc và hệ mật ElGamal; thủ tục trao đổi khóa Diffie- Hellman; các phương pháp che giấu dữ liệu và các điều kiện lũy đẳng và giao hoán của các hệ mật

- Lý thuyết chung về hệ mật khóa công khai từ đó đưa ra những sửa đổi của hệ mật ElGamal

* Phương pháp thực nghiệm

- Sửa đổi hệ mật bằng cách giữ nguyên cấu trúc trao đổi khóa Diffie-Hellman, sửa đổi kiểu che giấu dữ liệu

- Đánh giá hiệu quả và tính an toàn của Hệ mật ElGamal

3 Cấu trúc luận văn

Luận văn được tác giả trình bày trong 3 chương, có phần mở đầu, danh mục hình vẽ, danh mục từ viết tắt, danh mục bảng, phần kết luận, phần mục lục, phần tài liệu tham khảo Các nội dung cơ bản của luận văn được trình bày theo cấu trúc sau:

Chương 1: Tổng quan về bài toán Logarithm rời rạc và các hệ mật mã

Trong chương này, luận văn trình bày một số khái niệm cơ bản trong toán học

mà các hệ mã hoá thường sử dụng như: modulo, số nguyên tố, vành Z n , các phép toán cộng, nhân, bài toán logarithm rời rạc trên không gian Z n, Z n * , Sau đó đưa ra

các khái niệm mật mã, các thuật toán mã hoá, chữ ký số phục vụ cho việc mã hoá và giải mã thông tin

Trang 12

Chương 2: Xây dựng hệ mật Elgamal có sửa đổi

Tập trung nghiên cứu hệ mật mã Elgamal cổ điển và đưa ra những đánh giá về

ưu nhược điểm từ đó đưa ra những sửa đổi đối với thuật toán hệ mật mã khóa công khai ElGamal, tính chất đồng cấu của hệ mật mã ElGamal và sơ đồ chia sẻ bí mật theo ngưỡng Shamir

Chương 3: Phân tích hiệu năng an toàn của hệ mật Elgamal có sửa đổi và tìm hiểu các ứng dụng có sử dụng thuật toán mã hóa khóa công khai

Cài đặt thử nghiệm chương trình mô phỏng thuật toán hệ mật mã khóa công khai ElGamal sửa đổi và kỹ thuật chia sẻ khóa bí mật Demo ứng dụng mã hóa và giải mã trong việc gửi nhận thư điện tử

Trang 13

CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN LOGARITHM RỜI

RẠC VÀ CÁC HỆ MẬT MÃ

1.1 Tổng quan về bài toán logarithm rời rạc [1]

Bài toán Logarithm rời rạc là sự kết nối của phép tính logarithm trên trường số thực vào các nhóm hữu hạn Với hai số thực x,y và cơ số a>0, a 1, nếu ax - y =0 thì

x được gọi là logarithm cơ số a của y, ký hiệu x = logay Bài toán logarithm rời rạc

là bài toán khó Trong khi bài toán ngược lũy thừa rời rạc lại không khó (có thể sử dụng thuật toán bình phương và nhân)

1.1.1 Bài toán Logarithm trên trường số thực R

Bài toán thuận:

Hàm số y =a x với a,x R việc tính toán hàm mũ này có thể được thực hiện dễ dàng bằng thuật toán nhân và bình phương

Ví dụ 1:

Cho p là một số nguyên tố, xét nhóm nhân các số nguyên modulo p:

Zp* = { 1,2….,p } với phép nhân modulo p

Nếu ta tính lũy thừa bậc k của một số trong nhóm rồi rút gọn theo modulo p thì ta được một số trong nhóm đó Quá trình này được gọi là lũy thừa rời rạc modulo p Chẳng hạn với p = 17, lấy a = 3, k = 4 ta có: 34 = 81 = 13 mod 17

Logarithm rời rạc là phép tính ngược lại :

Biết: 3k = 13 (mod 17) hãy tìm k?

 Thực hiện tương tự như thuật toán Shank → k=4 Tuy nhiên đây là một bài toán tương đối khó Trong trường hợp p lớn (có ít nhất 150 chữ số) thì bài toán trở thành bất khả thi → an toàn

Bài toán ngược:

Phép tính ngược của hàm mũ chính là hàm logarithm y= logax, việc tính toán hàm ngược logarithm này khó khăn hơn nhiều so với hàm thuận Tuy nhiên, cả hai phép mũ và logarithm đều là các hàm đồng biến cho nên có thể xác định giá trị tương đối của hàm logarithm như hình dưới đây

Trang 14

Hình 1.1: Đồ thị hàm số y=a x và y = logax

Một số tính chất của hàm logarithm

 y =logabc =logab +logac

 y = loga = logab - logac

 loga1 = 0

 y = logax -1 = - logax

1.1.2 Bài toán Logarithm trên trường hữu hạn

Xét với vành đa thức Z p * với p là số nguyên tố thì theo định lý nếu p là nguyên

Trang 15

+ Nếu a là phần tử nguyên thủy thì ai cũng là nguyên thủy với (i,p-1)= 1(p là

số nguyên tố)

Trong ví dụ trên các giá trị của i thỏa mãn (i, 18)=1 là i = (1,5,7,11,13,17) Số

lƣợng các giá trị của i bằng giá trị hàm (p-1)

Ni = (p-1) = (18)=6

Cách tính hàm Phi-Euler nhƣ sau:

(1)= 1, và (n) = (p-1)pk-1 với n là lũy thừa bậc k của số nguyên tố p; nếu m

và n là hai số nguyên tố cùng nhau thì (mn)= (m) (n)

Một số tính chất của hàm logarit rời rạc a-1

+ y = logabc = (logab + logac)modp- 1 + y = loga = (logab - logac)modp-1

+ loga-1x = - logax = p - 1 - loga

+ loga1 = 0 = p - 1( coi 0 = p - 1)

Nhận xét: Từ hai bảng trên ta thấy hai hàm thuận và ngƣợc đều không phải là

p|n

Trang 16

hàm đồng biến, khi biết bài toán thuận thì mới tìm được bài toán ngược Do đó việc giải bài toán ngược giống bài toán vét cạn, phải thử lần lượt các trường hợp

Việc xác định logarithm của một phần tử bất kỳ trong trường hợp là bài toán khó giải

Bài toán thuận:

Cho Z*pvới plà số nguyên tố, a là một phần tử nguyên thủy a Z *

p

Yêu cầu tìm y = logax với a, x Z*p

Nhận xét: x Z*

p thì:

- Bài toán có nghiệm khi α là phần tử nguyên thủy

- Bài toán có thể không có nghiệm khi α là phần tử bất kỳ

Ví dụ:

Với trường hợp p = 19 ta đã tính được 6 phần tử nguyên thủy như trong bảng 1.1 Ta sẽ đi tìm bài toán logarithm rời rạc với cơ số 6 phần tử nguyên thủy này Tuy nhiên ta có thể áp dụng tính chất của hàm logarithm rời rạc để tính logarithm với cơ số là các cặp số nghịch đảo

loga-1x= - logax = p - 1 - logax, hayloga-1x+ logax = p - 1

Tức là (2,10) là cặp số nghịch đảo, khi đó log10x = p - 1 - log2 x = 18 - log2x Tương tự (13,3) và (14,15)là các cặp nghịch đảo nênlog3x = 18 - log13x và

Trang 17

Có thể tính 13x thông qua 2x, ta thấy 13 = 25 do đó 13x= 25x,

tương tự như thế có thể tính 14x

= 27x

Phương pháp – Pollaid đối với bài toán logarithm rời rạc

Bài toán logarithm rời rạc theo modulo là số nguyên tố p Chúng ta muốn giải phương trình ax b(modp)

Để làm việc này chúng ta xem 3 dãy số:{ui}, {vi}, {zi}, i = 0,1,2, ,Được xác định

như sau:

u0=v0=0, z0=1

ui+1 ui + 1(modp-1), nếu như 0 <zi<p/3;

ui+1 2ui(modp-1), nếu như p/3 <zi<2/3p;

ui+1 ui(modp-1), nếu như 2/3p<zi<p;

vi+1 Vi (modp -1), nếu như 0 < zi<p/3;

Vi+1 2vi(modp -1), nếu như p/3 <zi< 2/3p;

Vi+1 Vi +1(modp -1), nếu như 2/3p < zi< p;

Zi+1 bui+1 avi+1(modp -1)

Tiếp theo chúng ta xem tập hợp (Zi, ui, vi, Z2i, U2i, V2i), i = 1,2,3, , chúng ta tìm vị trí i, sao cho zi=z2i Từ đẳng thức cuối cùng ta rút ra

Nếu như gcd(u2i - ui, p -1) = 1, thì khi l Z, l(u2i- ui) 1(modp -1)chúng ta thu được

b a l(v i v 2i)(mod p)

từ đây giá trị x cần tìm bằng logab l(vi – v2i)(mod p -1)

1.1.3 Thuật toán logarithm rời rạc

Trang 18

Bài toán logarithm rời rạc có vai trò rất lớn trong ứng dụng của mật mã Đặc biệt quan trọng trong trường hợp G = F(q)*, với q = pl, p là số nguyên tố, l N, tức

là trong trường Galois, cũng như trong trường hợp G là một nhóm điểm của đường cong Elliptic trong trường hữu hạn

Chúng ta xem phương trình

trong nhóm Z* p, với p là số nguyên tố Chúng ta giả sử rằng bậc của a (modp) bằng p-1 Khi đó phương trình giải được, và nghiệm x là một phần tử của Zp – 1 Trong phần này chúng ta miêu tả phương pháp đơn định để xác định nghiệm của (3.1) Nếu với sự giúp đỡ của phương pháp chọn thì có thể giải phương trình (3.1) cần O(p)lệnh số học

Nghiệm logab của phương trình (3.1) có thể tìm theo công thức sau:

logab(1aj)1bj(mod p1), thế nhưng độ phức tạp nếu tính theo công thức này thi

sẽ tồi hơn cách lựa chọn

Thuật toán tiếp theo giải phương trình (3.1) có độ phức tạp là O(p1/2log p) lệnh số học

Thuật toán tương hợp

Bước 1 Gán H:= [p12]+1

Bước 2 Tìm c≡aH(modp)

Bước 3 Lập bảng giá trị cu

(modp),1≤ u≤H, sắp xếp nó

Bước 4 Lập bảng giá trị b.av(modp),0 ≤v ≤ H, sắp xếp nó

Bước 5 Tìm sự trùng nhau phần tử từ bảng thứ nhất và bảng thứ hai Để làm điều

Chúng ta chứng minh sự đúng đắn của thuật toán Bất kỳ số nguyên x,

0≤x ≤ p-2, có thể biểu diễn dưới dạng x≡Hu -v(mod p-1),

Trang 19

1.1.3.2 Thuật toán Adleman

Trong phần này chúng ta xem thuật toán giải phương trình

Tầng 3 Chọn số lượng đủ lớn biểu thức (3.3), giải hệ phương trình tuyến tính thu

được ứng với các ẩn logaq -logarithmh rời rạc của phần tử của cơ sở nhân tử

Tầng 4 Bằng cách lựa chọn chúng ta tìm ra một giá trị của r, sao cho

Tầng 5 Bằng cách tính toán tương tự như tầng 2 và 3 của thuật toán, tìm ra

logarithm rời rạc loga p i đối với các số nguyên tố p 1 , ,p k ở tầng 4

Tầng 6 Xác định giá trị cần tìm loga b:

Trang 20

Kết thúc thuật toán

1.1.3.3 Thuật toán vét cạn

Đây là thuật toán tự nhiên nhất và kém hiệu quả nhất để tính logarithmth rời rạc Người ta cứ thử tính 0, 1, 2, … cho đến khi nào đạt được β thì thôi Phương pháp này đòi hỏi O(n) phép toán nhân với n là cấp của α và do đó không hiệu quả khi n lớn và rõ ràng là hàm mũ thực sự theo logn

1.1.3.4 Thuật toán bước đi lớn bước đi nhỏ (Baby-step giant-step)

Giả sử m = [√ ] với n là cấp của α

Thuật toán bước đi lớn bước đi nhỏ là sự thoả hiệp giữa thời gian và bộ nhớ của phương pháp vét cạn và dựa trên quan sát sau là nếu β = αx thì chúng có thể viết:

x = im + j với 0 i,j < m Từ đó x= im j hay ( -m)i = j Vậy nên người ta có thể

lập bảng (j, j) với 0  j < m Sau đó lần lượt tính β( -m)-i với i lần lượt chạy từ 0

đến (m – 1) và tra trong bảng (j, j) chừng nào có được đẳng thức β( -m)i = αj thì dừng lại

Thuật toán này đòi hỏi không gian lưu trữ là O(√ ) phần tử nhóm và đòi hỏi O(√ ) phép nhân để xây dựng và O(√ logn) phép so sánh để sắp xếp Ngoài ra nó cũng cần O(√ ) phép toán nhân và O(√ ) phép toán tra bảng Tựu chung là nó có thời gian chạy O(√ ) phép toán nhóm

1.1.3.5 Thuật toán Shank

Thuật toán này có tên gọi khác là thuật toán thời gian và bộ nhớ Tư tưởng của thuật toán là nếu ta có đủ bộ nhớ thì có thể sử dụng bộ nhớ đó để giảm thời gian thực hiện của thuật toán

Input: Số nguyên tố p, phần tử nguyên thủy a cua Z*

p, số nguyên y

Output: Cần tìm a sao cho beta =alphaa mod p

Thuật toán :

Gọim = [(p-1)1/2](lấy phần nguyên)

 Bước 1: Tính alphamj mod p với 0 ≤ j ≤ m-1

Trang 21

 Bước 2:Sắp xếp các cặp (j, alphamj mod p) theo alphalmj mod p và lưu vào danh sách L1

 Bước 3: Tính beta*alpha-i mod p với 0 i m-1

Lưu ý: Vì alphamj= beta*alpha-I alphamj-i = beta nên bước 5 luôn thành công

 Bước 6: Tính a=logalphabeta=(mj+ i) mod (p-1) Kết quả này có thể kiểm chứng từ công thức:

alphamj mod p= beta*alpha-imod p

=>alphamj+i mod p= beta mod p

=> logalpha beta =(mj + i) mod (p–1) = a

Ví dụ: Với bài toán trên người ta thám mã chỉ có khóa công khai:

Kp= ( p,a,y ) = ( 97,5,44 )

m = [(p-1)1/2] = [( 97-1)1/2] = 10

Bước 1: Tính alphamj mod p với 0 j m-1

Bước 2: Sắp xếp các cặp (j, alphamj mod p) theo alphamj mod p và lưu vào danh sách L1

J(0≤j≤m-1) 5 10j mod 97(alpha mj mod p)

Trang 22

Bước 3: Tính beta*alpha-i mod p với 0≤i≤m-1

Dựa vào bảng 2 bảng danh sách L1 và L2 khi j = 6 và i = 2 thì:

alphamj mod p = beta*alpha-imod p = 33

Bước 6:Tính a= (mj + i) mod (p - 1) Kết quả này có thể kiểm chứng từ công thức alphamj mod p = beta*alpha-imod p = alphamj+i mod p => a=( mj + i ) mod (p – 1) Vậy ta có a = (10 * 6 +2) mod (97 – 1) = 62

1.1.3.6 Thuật toán tính logarithm rời rạc đối với nhóm cyclic

Input: Phần tử sinh α của nhóm cyclic G có cấp n và phần tử β G

Output: Logarithm rời rạc y = (3.4)

B1: Chọn cơ sở phân tích S: Chọn tập con S = {p1, p2, …, pt } của G sao cho “một

tỷ lệ đáng kể” của tất cả các phần tử của G có thể được biểu diễn hiệu quả như là tích của các phần tử của S

B2: Chọn các quan hệ tuyến tính liên quan đến logarithm của các phần tử của S B2.1:Chọn số ngẫu nhiên k, 0 k n – 1 và tính k

B2.2:Thử biểu diễn kthành tích các phần tử trong S:

Trang 23

i

c k

i i

Lặp lại các bước (B2.1 và B2.2) chừng nào t + c các quan hệ như trên đạt được (c là

số tự nhiên nhỏ chẳng hạn c = 10 sao cho hệ phương trình đã cho với t + c phương trình sẽ có nghiệm duy nhất với xác xuất cao )

B3: Tìm các logarithm của các phương trình trong S: Tính theo mod n giải hệ

phương trình có t + c phương trình với t ẩn số giống như trên tại bước 2 để đạt được logɑpi, với 1  i  t

B4: tính y

B4.1: chọn số nguyên ngẫu nhiên k, 0    i k n 1 và tính  . k

B4.2: cố gắng biểu diễn  . kthành tích của các phần tử trong S:

1 i

t d k

i i

là tích của các số nguyên tố trong S hay không

Trang 24

Ví dụ: Thuật toán tính logarithm rời rạc trên Z*229 với p = 229 Phần tử sinh α = 6

có cấp n = 228 Xét trường hợp β = 13 Khi log613 được tính như sau đây sử dụng

kỹ thuật tính chỉ số:

B1: Cơ sở phân tích được chọn là 5 số nguyên tố đầu tiên S = {2, 3, 5, 7, 11}

B2: Sáu quan hệ sau đây liên quan đến các phần tử của cơ sở phân tích đã đạt được:

100 = 2log62 + 2log63 + log65 (mod 228)

18 = 4log62 + log611 (mod 228)

12 = log63 + log65 + log611 (mod 228)

62 = log62 + log67 + log611 (mod 228)

143 = log62 + 2log63 + log611 (mod 228)

206 = log62 + log63 + log65 + log67 (mod 228)

B3: Giải hệ phương trình tuyến tính có sáu phương trình với năm ẩn số chúng ta thu được lời giải log62 = 21, log63 = 208, log65 = 98, log67 = 107 và log611 = 162 B4: Giả sử số nguyên k = 77 được chọn thì vì rằng

F được biểu diễn thành các đa thức trên

Z2[x] có bậc cao nhất là n – 1 với phép nhân được thực hiện modulo một đa thức bất khả quy f(x) có bậc n trên Z2[x] Cơ sở phân tích S được chọn là tập các đa thức bất

Trang 25

khả quy trên Z2[x] có bậc cao nhất là một cận b nào đó Quan hệ phân tích được sinh bằng cách tính kmod f(x) và sử dụng phép chia thông thường để kiểm tra xem đa thức này có là tích của các đa thức trong S không

Ví dụ:

Thuật toán tính logarithm trên 7

* 2

F Đa thức f(x) = x7 + x + 1 bất khả quy trên

Z2 Từ đó các phần tử của trường hữu hạn GF(27) có cấp 128 được biểu diễn là một tập của tất cả các đa thức trên Z2[x] có bậc cao nhất là 6 với các phép nhân được thực hiện modulo f(x) Cấp của 7

* 2

Để cho thuận tiện chúng ta kí hiệu p1 = logxx, p2 = logx(x+1), p3 = logx(x2 + x +1),

p4 = logx(x3 + x +1), p5 = logx(x3 + x2 +1) Sau đó chúng ta có các phương trình:

Trang 26

4 3 2 66 5 3 2 2 ( 1) mod ( ) ( 1)

Nếu chúng ta biểu diễn hàm thời gian chạy của thuật toán A với đầu vào là các phần

tử của trường hữu hạn GF(q) như sau đây:

Thuật toán chỉ số trên GF(q) trong cả hai trường hợp q = p với p nguyên tố và q = 2n đều có thời gian chạy kỳ vọng là Lq[1

2,c] với c>0 là hằng số Thời gian chạy kỳ vọng của thuật toán tính chỉ số là tiểu hàm mũ tốt hơn so với các thuật toán thời gian chạy là hàm mũ thực sự trước đây nhưng chưa phải là tốt nhất cả về lý thuyết

và thực hành hiện nay

Người ta tìm ra những thuật toán là biến thể của thuật toán tính chỉ số theo nghĩa sử dụng những kỹ thuật toán học và môi trường tính toán đặc biệt để thiết kế thành các thuật toán có thời gian chạy tốt hơn về lý thuyết và thực hành Một loại thuật toán như vậy chính là thuật toán sàng trường số với thời gian chạy là Lq[1

3,c] với q = p nguyên tố và c = 1.923

1.2 Tổng quan mật mã học [4, Tr.11]

Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa Đây là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân

sự, quốc phòng…, cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng…

Trang 27

Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết: chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sở hữu mã khóa (chứng nhận khóa công cộng), các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn trên mạng Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp ứng yêu cầu đa dạng của các

hệ thống ứng dụng khác nhau trong thực tế, ví dụ như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh của các đơn vị vớihướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí tuệ đối với thông tin số

1.3 Vấn đề về mã hóa [4, Tr.12-15]

1.3.1 Khái niệm mật mã

Mật mã học là một lĩnh vực liên quan với các kỹ thuật ngôn ngữ và toán học

đểđảm bảo an toàn thông tin, cụ thể là trong thông tin liên lạc Về phương diện lịch

sử, mật mã học gắn liền với quá trình mã hóa

Trước đây mật mã chỉ được dùng trong ngành an ninh quốc phòng, ngày nay việc bảo đảm an toàn thông tin là nhu cầu của mọi ngành, mọi người (do thông tin chủyếu truyền trên mạng công khai), vì vậy kĩ thuật mật mã là công khai cho mọi người dùng Điều bí mật nằm ở khóa mật mã

Hiện nay có nhiều kĩ thuật mật mã khác nhau, mỗi kĩ thuật có ưu và nhược điểm riêng Tùy theo yêu cầu của môi trường ứng dụng ta dùng kĩ thuật này hay kĩ thuật khác Có môi trường cần phải an toàn tuyệt đối, bất kể thời gian và chi phí Có môi trường lại cần phải dung hòa giữa bảo mật và chi phí thực hiện

Mật mã cổ điển chủ yếu dùng để “che dấu” dữ liệu Với mật mã hiện đại ngoài khả năng “che dấu” dữ liệu, còn dùng để thực hiện: Ký số (ký điện tử), tạo giao diện thông điệp, giao thức bảo toàn dữ liệu, xác thực thực thể, giao thức thỏa thuận, giao

Trang 28

thức phân phối khóa…

Theo nghĩa hẹp, mật mã dùng để bảo mật dữ liệu, người ta quan niệm: Mật mã học là môn khoa học nghiên cứu mật mã: tạo mã và phân tích mã (thám mã)

Vai trò của mật mã:

 Bảo đảm bí mật (Bảo mật): Thông tin không bị lộ đối với người không được

phép

 Bảo đảm toàn vẹn (Bảo toàn): Ngăn chặn hay hạn chế việc bổ sung, loại bỏ

và sửa chữa dữ liệu không được phép

 Bảo đảm xác thực (Chứng thực): Xác thực đúng thực thể cần kết nối, giao dịch Xác thực đúng thực thể có trách nhiệm về nội dung thông tin (xác thực nguồn

gốc thông tin)

Bảo đảm sẵn sàng: Thông tin sẵn sàng cho người dùng hợp pháp

Thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa Thám mã có thể được thực hiện bởi những kẻ tấn công, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống

1.3.2 Khái niệm về mã hóa

Mã hóa là phương pháp để biến thông tin (như phim ảnh, văn bản, hình

ảnh…) dạng hiểu được sang dạng thông tin không thể hiểu được nếu không có phương tiện giải mã

Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng

thôngtin ban đầu, quá trình ngược của mã hóa

Hệ mã hóa:

Việc mã hóa 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 đó:

P (Plaintext) là tập hữu hạn các bản rõ có thể

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

K (Key) tập hữu hạn các khóa có thể

E (Encrytion) là tập hợp các qui tắc mã hoá có thể

Trang 29

D (Decrytion) là tập hợp các qui tắc giải mã có thể

Vớ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 (x)) = x, x P

Ở đây x được gọi là bản rõ, eke(x) được gọi là bản mã

Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C

Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã

Hình 1.2: Quá trình mã hoá và giải mã

Thuật toán mã hóa hay giải mã là thủ tục để thực hiện mã hóa hay giải mã

Khóa mã hóa là một giá trị làm cho thuật toán mã hóa thực hiện theo cách

riêng biệt và sinh ra bản rõ riêng Thông thường khóa càng lớn thì bản mã càng an toàn Phạm vi các giá trị có thể có của khóa được gọi là không gian khóa

1.3.3 Phân loại mã hóa [4, Tr.20-97]

Có 2 loại mã hóa: mã hóa khóa đối xứng và mã hóa khóa bất đối xứng

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 dữ bí mật cả hai khóa

Hệ mã hóa khóa bất đối xứng có khóa lập mã khác khóa giải mã, biết được

khóa này cũng khó tìm đượ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.3.3.1 Hệ mã hóa khóa đối xứng

Khái niệm:

Mã hóa khóa đối xứng là hệ mã mà biết được khóa lập mã thì có thể “dễ” tính

Trang 30

được khóa giải mã và ngược lại Đặc biệt có 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ã dịch chuyển hay hệ mã DES

Hệ mã hóa khóa đối xứng còn gọi là hệ mã hóa khóa 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à người nhận phải thỏa thuận thuật toán mã hóa và khóa chung, khóa 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 khóa

Ban đầu, bản rõ được người gửi A mã hóa với khóa k Sau đó bản mã được gửi tới người nhận B Khi nhận được bản mã, người B sử dụng khóa k giải mã để thu được bản rõ Do đó, nếu một người khác có được khóa k thì hệ thống mã hóa này sẽ bị tấn công

Hình 1.3: Sơ đồ hoạt động của mã hóa khóa đối xứng

Ví dụ:

+ Hệ mã hóa cổ điển là mã hóa khóa đối xứng, dễ hiểu, dễ thực thi nhưng có

độ an toàn không cao Vì giới hạn tính toán chỉ trong bảng chữ cái sử dụng trong bản tin cần mã, ví dụ Z26 nếu dùng chữ cái tiếng Anh Với hệ mã hóa cổ điển, nếu biết khóa lập mã hay thuật toán lập mã, có thể “dễ” xác định được bản rõ, vì thế

Mã hóa khóa đối xứng chưa thật an toàn với lý do sau: Người mã hóa và người

giải mã phải có chung một khóa Khóa phải được giữ bí mật tuyệt đối, vì biết khóa

Trang 31

này “dễ” xác định được khóa kia và ngược lại 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ã và giải mã) cùng biết chung một bí mật, thì càng khó giữ được bí mật

Tấn công đối với các mật mã đối xứng

Các mã đối xứng thường rất dễ bị ảnh hưởng bởi các loại tấn công gọi là tấn công với văn bản thuần túy biết trước (known-plaintext attacks), tấn công với văn bản thuần túy chọn trước (chosen plaintext attacks), thám mã vi phân (differentialcryptanalysis) và thám mã tuyến tính (linear cryptanalysis) Nếu mỗi hàm số sử dụng trong các vòng tính toán được thiết kế một cách cẩn thận, thì nó sẽ giảm khả năng chìa khóa của mã bị tấn công rất nhiều

Nhận xét:

- Trong các giao dịch trên mạng, khóa k phải được truyền đi trên môi trường này Do đó nó có thể bị lấy cắp Để an toàn hơn, việc bảo mật cho khóa k cần phải được chú trọng Thường 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ượng

- Nội dung của bản rõ không thể xác thực được nguồn gốc cũng như không có tính chất không thể phủ nhận của chủ thể

- Khi số lượng khóa bí mật tăng lên, việc quản lý các khóa này trở nên phức tạp và khó khăn cho công việc khi một người phải giữ nhiều khóa bí mật khi giao dịch với nhiều đối tượng khác nhau

Những nhược điểm trên dẫn đến hệ mã với khóa mã đối xứng khó có thể áp dụng rộng rãi Trong nội dung của đề tài này, các phương pháp mã hóa với khóa mã công khai được nghiên cứu để thực hiện mục đích của đề tài

Trang 33

Bản mã số: 18 21 25 25

Bản mã chữ: S V Z Z

Giải mã theo công thức:

x = dk(y) = a-1(y–b) mod 26 = 5-1*(y–8) mod 26 = 21*(y–8) mod 26

c Các dạng tấn công vào Affine: Tìm cách xác định khóa k

Khóa mã Affine có dạng k = (a, b) với a, b Z26 và gcd (a, 26)= 1

Kí tự mã y và kí tự bản rõ x tương ứng có quan hệ: y = (a.x + b) mod 26

Thám mã sử dụng phương pháp xác suất thống kê, dựa vào tần suất xuất hiện của các kí tự trong Tiếng Anh Từ đó biết được 2 cặp (x,y) khác nhau và có được hệ phương trình tuyến tính 2 ẩn, giải hệ đó tìm ra giá trị a, b tức là tìm ra khóa k Kết hợpvới 12 số thuộc Z26 nguyên tố với 26, nên số khóa là: 12 * 26 = 312

→ Giải pháp phòng tránh tấn công:

Mở rộng vùng không gian khóa lớn Ví dụ như bảng chữ cái tiếng Việt có thanh (gồm 94 ký tự) Số kí tự nhiều thì tần suất xuất hiện của các chữ cái cũng không khác biệt nhau nhiều lắm, do đó để phát hiện được kí tự “nổi bật” cũng khó khăn hơn.Và khi đó số khóa có thể có lớn hơn 312, việc thử tất cả các trường hợp sẽ lâu hơn

1.3.3.2 Hệ mã hóa khóa bất đối xứng

Hệ thống mã hóa bất đối xứng hay còn gọi là mã hóa với khóa công khai đã được Martin Hellman, Ralph Merkle và Whitfield Diffie thuộc Đại học Stanford giới thiệu vào năm 1976

Hệ mã này được áp dụng các kết quả của toán học đã khắc phục được các hạn chế của các phương pháp mã hóa khóa đối xứng Phương pháp mã hóa bất đối xứng

sử dụng hai loại khóa trong cùng một cặp khóa:

Khóa công khai (public key) được công bố rộng rãi và sử dụng để mã hóa các thông điệp, khóa riêng (private key) chỉ do chủ thể nắm giữ và được sử dụng để giải

mã thông điệp đã được mã hóa bằng khóa công khai

Các lý thuyết toán học dựa trên cơ sở khai thác những ánh xạ f mà việc thực hiện ánh xạ ngược f-1 rất khó so với việc thực hiện ánh xạ f được sử dụng trong các phương pháp mã hóa này Việc thực hiện ánh xạ ngược f-1 chỉ tiến hành được khi

Trang 34

biết được khóa riêng

Hình 1.4: Sơ đồ hoạt động của mã hóa khóa bất đối xứng

Các hệ mật này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải

mã, nghĩa là khoá để mã hoá và giải mã là khác nhau Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã phải giữ bí mật Do đó trong thuật toán này có 2 loại khoá: Khoá để mã hoá được gọi là khóa công khai-Public Key, khoá để giải mã được gọi là khóa bí mật – PrivateKey Một

số thuật toán mã hoá công khai nổi tiếng: Diffle-Hellman, RSA, Rabin, ElGamal, Trong mô hình mật mã cổ điển mà cho tới nay vẫn còn đang được nghiên cứu Alice (người gửi) và Bob( người nhận) bằng cách chọn một khóa bí mật K Sau đó Alice dùng khóa K để mã hóa theo luật ek và Bod dùng khóa K đó để giải mã theo luật giải dk Trong hệ mật này, dk hoặc ek hoặc dễ dàng nhận được từ nó vì quá trình giải mã hoàn toàn tương tự như quá trình mã hóa, nhưng thủ tục khóa thì ngược lại Nhược điểm lớn của hệ mật này là nếu ta để lộ ek thì làm cho hệ thống mất an toàn, chính vì vậy chúng ta phải tạo cho các hệ mật này một kênh an toàn mà kinh phí để tạo kênh an toàn không rẻ Ý tưởng xây dựng một hệ mật khóa công khai là tìm một

hệ mật có khả năng tính toán để xác định dk nếu biết được ek Nếu thực hiện được như vậy thì quy tắc mã ek có thể được công khai bằng cách công bố nó trong danh

bạ, và khi Alice (người gửi) hoặc bất cứ một ai đó muốn gửi một bản tin cho Bob (người nhận) thì người đó không phải thông tin trước với Bob (người nhận) về khóa mật, mà người gửi sẽ mã hóa bản tin bằng cách dùng luật mã công khai ek Khi bản tin này được chuyển cho Bob (người nhận) thì chỉ có duy nhất Bob mới có thể giải được bản tin này bằng cách sử dụng luật giải mã bí mật dk

Để giải quyết vấn đề phân phối và thoả thuận khoá của mật mã khoá đốixứng, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khoá công khai và

Trang 35

một phương pháp trao đổi công khai để tạo ra một khoá bí mật chung mà tính an toàn được bảo đảm bởi độ khó của một bài toán toán học cụ thể (là bài toán tính

“logarithm rời rạc”) Hệ mật mã khoá công khai hay còn được gọi là hệ mật mã phi đối xứng sử dụng một cặp khoá, khoá mã hoá còn gọi là khoá công khai (public key) và khoá giải mã được gọi là khoá bí mật hay khóa riêng (private key) Trong

hệ mật này, khoá mã hoá khác với khoá giải mã Về mặt toán học thì từ khoá công rất khó tính được khoá riêng Biết được khoá này không dễ dàng tìm được khoá kia Khoá giải mã được giữ bí mật trong khi khoá mã hoá được công bố công khai Một người bất kỳ có thể sử dụng khoá công khai để mã hoá tin tức, nhưng chỉ có người nào có đúng khoá giải mã mới có khả năng xem được bản rõ.Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B sẽ giải mã thông điệp với khoá riêng tương ứng của mình

Quá trình này được mô tả trong hình sau:

Hình 1.5: Mã hoá thông điệp sử dụng khoá công khai

Hình 1.6: Giải mã thông điệp sử dụng khoá riêng của người nhận

Hệ mật ElGamal được đề xuất vào năm 1984 trên dự trên bài toán logarithm rời rạc là bài toán được dùng nhiều trong thủ tục mật mã Sau đó, các chuẩn chữ ký

số DSS của Mỹ và GOST R43.10-94 của Liên Bang Nga đã được phát triển trên cơ

Trang 36

sở thuật toán chữ ký số của hệ mật này, còn thuật toán mật mã khóa công khai ElGamal đã được sử dụng bởi Cơ quan An ninh Quốc gia Mỹ - NSA ( National Security Agency) Hệ mật phải đảm bảo những tính chất sau [4, tr.12-15]:

* Tính bí mật: đảm bảo thông tin chỉ được hiểu bởi những ai biết chìa khóa bí mật

* Tính toàn vẹn: đảm bảo thông tin không thể bị thay đổi mà không bị phát hiện

* Tính xác thực: người gửi hoặc người nhận có thể chứng minh đúng họ Có thể sử dụng một mật khẩu dựa trên một thuật toán mã hóa hoặc một bí mật chia sẻ giữa hai người để xác thực

* Tính không chối bỏ: người gửi hoặc người nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin Thông thường điều này được thực hiện thông qua một chữ kí điện tử

* Tính nhận dạng: người dùng một hệ thống, một tài nguyên sở hữu một chứng minh thư như một chìa khóa đầu sẽ xác định những chức năng của người dùng giới hạn cho phép của người dùng cũng như các thuộc tính có liên quan

Mức an toàn

Về khía cạnh an toàn, mã hóa khóa bất đối xứng cũng không khác nhiều với mãhóa khóa đối xứng Có những thuật toán được dùng rộng rãi, có thuật toán chủ yếu trênlý thuyết; có thuật toán vẫn được xem là an toàn, có thuật toán đã bị phá vỡ Cũng cầnlưu ý là những thuật toán được dùng rộng rãi không phải lúc nào cũng đảm bảo antoàn

Một số thuật toán có những chứng minh về độ an toàn với những tiêu chuẩn khác nhau Nhiều chứng minh gắn việc phá vỡ thuật toán với những bài toán nổi tiếngvẫn được cho là không có lời giải trong thời gian đa thức

Nhìn chung, chưa có thuật toán nào được chứng minh là an toàn tuyệt đối Vìvậy, cũng giống như tất cả các thuật toán mật mã nói chung, các thuật toán mã hóa khóa công khai cần phải được sử dụng một cách thận trọng

Các ứng dụng

Ứng dụng rõ ràng nhất của mã hóa khóa công khai là bảo mật: một văn

Trang 37

bảnđược mã hóa bằng khóa công khai của một người dùng thì chỉ có thể giải mã với khóa bí mật của người đó

Các thuật toán tạo chữ kí số (khóa công khai) có thể dùng để xác thực Một người dùng có thể mã hóa văn bản với khóa bí mật của mình Nếu người khác có thể giải mã với khóa công khai của người gửi, thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó

Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa,

Một số hệ mã khóa công khai

Hệ mật Omura- Massey [3]

Sơ đồ hệ mật Omura - Massey

Ý tưởng của Hệ mật Omura - Massy được mô tả trong hình dưới

Hai bên liên lạc A và B sử dụng hai khóa bí mật khác nhau là KA và KB, đầu tiên bản tin M được A mã hóa bằng khóa bí mật của A là KA và gửi bản mã cho B, tất nhiên trên đường truyền thám mã không thể có được bản tin M vì không có khóa

KA Bên B nhận được bản mã lại thực hiện mã hóa một lần nữa bằng khóa KBvà gửi lại bản mã mới cho A Khi A nhận lại bản mã thì tiến hành giải mã bằng khóa KA, lúc này bản tin M chỉ được mã hóa bằng khóa KB A gửi bản mã này cho B, bên B nhận được và tiến hành giải mã bằng khóa KB để lấy lại bản tin M

Hệ mật này rất an toàn, tuy nhiên có nhược điểm là bản mã truyền giữa A và B phải thực hiện 3 lần, tức là tốc độ mã thấp hay dung lượng thông tin cần truyền sẽ tăng lên

Trang 38

Hình 1.7: Hệ mật Omura- Massey xây dựng trên bài toán lôgarith rời rạc

Hai bên liên lạc A và B chọn trước ¢ pvới p là số nguyên tố

A chọn m,n ngẫu nhiên thỏa mãn m n = 1 mod p -1 Khóa bí mật của A là m, n

B chọn u,v ngẫu nhiên thỏa mãn uv= mod p -1 Khóa bí mật của B là u, v Giả sử A cần gửi một bản tin M cho B, quá trình truyền tin bảo mật sử dụng

hệ mật Omura - Massey được mô tả dưới đây

Hình 1.8: Quá trình truyền tin sử dụng hệ mật Omura - Massey

Trang 39

+ B chọn βB =11 Z*16

+ A chọn m=5 Z*

16 và tính mβB mod p-1= 5.11 mod16=7 Z*16+ Tính A: 7-1 = 7 = n Z*

16

+ B chọn u = 7 Z*16 và tính uβA mod p -1 = 7.13 mod16 = 11

+ Tính toán 11-1 = 3 = v Z*16

- Quá trình trao đổi khóa chọn k = 10

+ A tính 1011.5 mod17 = 5 và gửi cho B

+ B tính 57.13mod17 = 3 và gửi cho A

+ A tính 117mod17 = 3 và gửi cho B

+ B tính k = 33mod17 = 10

- Để tìm bản tin M thám mã phải giải bài toán logarithm rời rạc

Về mặt hiệu quả truyền tin thì hệ mật Omura- Massey cho tốc độ truyền tin thấp R=1/3, phương pháp này chỉ thích hợp cho việc truyền tin ngắn hoặc truyền

khóa (phân phối khóa cho một hệ mật khóa bí mật)

Hệ mật đường cong Eliptic

Định nghĩa

Cho p > 3 là số nguyên tố Đường cong Eliptic y2 = x3 + ax + b trên Zp là tập các nghiệm (x,y) Zp x Zp của đồng dư thức y2 = x3 + ax + b(mod p)

Trong đó a, b Zp là các hằng số thỏa mãn 4a3 + 27b2≠ 0(mod p)

(để đa thức x3 + ax + b không có nghiệm bội) cùng với điểm đặc biệt 0 được gọi là điểm vô hạn [1]

Định lý Hasse

Việc xây dựng các hệ mật mã trên dường cong Eliptic bao gồm việc lựa chọn

đường cong E thích hợp và một điểm G trên E gọi là điểm cơ sở Xét trường K là

Fq

N là số điểm của E trên Fq (trường hữu hạn q phần tử) Khi đó:

|N - (q +1)| <2y√ Từ định lý Hasse suy ra #E(Fq) = q +1 - t trong dó |t| <2

Hệ mật trên đường cong Eliptic

Hệ ElGamal làm việc với nhóm Cyclic hữu hạn Năm 1978, Kobliz đã đưa

Trang 40

một hệ trên ECC dựa trên hệ ElGamal

Để xây dựng hệ mã hóa dựa trên đường cong Eliptic ta chọn đường cong E(a,b) và một điểm G trên đường cong làm điểm cơ sở Mỗi người dùng A một khóa bí mật nA là một số nguyên và sinh khóa công khai PA = nA *G

Khi đó hệ mã hóa đường cong Eliptic được xây dựng tương tự hệ mã hóa ElGamal, trong đó thuật toán mã hóa và giải mã được xác định như sau:

Thuật toán mã hóa: Giả sử người dùng A muốn gửi thông điệp cần mã hóa Pm

tới người dùng B, chọn một số ngẫu nhiên k và gửi thông điệp mã hóa Cm được tính

như sau: C = {k * G, Pm + k * PB} (PB là khóa công khai của B)

Thuật toán giải mã: Để giải thông điệp C m = {k * G, Pm + k * PB}, người dùng

- Tính d sao cho e.d = 1 (mod( (n))

Khóa công khai (n,e)

Khóa bí mật (n, d)

Mã hóa:

Giả sử B muốn gửi đoạn thông tin M cho A Đầu tiên B chuyển M thành một

số m<n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa

Ngày đăng: 03/09/2018, 16:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w