• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

Share "Hệ mật trên đường cong elliptic"

Copied!
62
0
0

Texto

(1)

MỤC LỤC

MỤC LỤC...1

DANH MỤC HÌNH VẼ VÀ BẢNG...5

DANH SÁCH CÁC TỪ VIẾT TẮT...5

Chương I : GIỚI THIỆU VỀ MAPLE...8

Giới thiệu chung...8

1.1. Giới thiệu chung...8

Hình 1.1: Giới thiệu về phần mềm Maple...8

1.1.1. Lịch sử phát triển...9

1.1.2. Các tính năng cơ bản của Maple...10

1.1.3. Cấu trúc và giao diện...11

Hình 1.2: Giao diện của maple...11

1.2. Lập trình tính toán với Maple...11

1.3. Lưu giữ và trích xuất dữ liệu...12

1.4. Các môi trường làm việc trong Maple...12

1.5. Lệnh của Maple...12

1.6. Các dấu phép toán, hàm và hằng số cơ bản...13

Hình 1.3: Vẽ đồ thị bằng phần mềm Maple...21

Chương II : HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC...22

2.1. Đường cong Elliptic...22

2.1.1. Mở đầu và đặt bài toán...22

2.1.2. Định nghĩa...22

2.1.3. Tính chất của đường cong elliptic...23

2.1.4. Đường cong elliptic trên trường hữu hạn...24

2.1.5. Các phép toán trên đường cong Elliptic...24

2.1.5.1. Phép cộng...25

Hình 2.1: phép cộng trên đường cong Elliptic...26

2.1.5.2. Phép nhân...27

2.1.6. Đếm số điểm trên đường cong elliptic trên trường Fq...27

2.1.7. Trường K...28

2.1.8. Dạng của đường cong elliptic...28

2.1.9. Phương pháp lựa chọn...29

Hình 2.2: Đường cong Elliptic...30

2.1.10. Các đường cong elliptic...30

Hình 2.3:Đồ thị phương trình y2 = x3 – 6x...31

Hình 2.4:phần tử nghịch đảo của P...32

(2)

Hình 2.6: Trường hợp PQ là tiếp tuyến của đồ thị tại P...33

Hình 2.7:Đồ thị minh họa P+P=-R...33

Hình 2.8: Đồ thị minh họa P+P=-P...34

2.2. Hệ mật trên đường cong elliptic...34

2.2.1. Mở đầu và đặt bài toán...34

2.2.2. Nhúng bản rõ lên đường cong...35

2.2.3. Logarit rời rạc trên đường cong Elliptic( Discrete logarithm on Elliptic)...37

2.2.4. Vấn đề trao đổi khoá Diffie- Hellman(D- H) trên Elliptic...37

2.2.5. Hệ mật Elgamal trên đường cong Elliptic...38

2.2.6. Hệ mật mã dựa trên đường cong elliptic...39

2.2.7. Giao thức SSL (Secure Sockets Layer)...39

2.2.7.1. Quá trình bắt tay đầy đủ dựa vào mã hoá RSA...40

Hình 2.9 : Quá trình bắt tay dựa vào RSA...40

2.2.7.2. Quá trình bắt tay đầy đủ dựa vào mã hoá ECC...41

Hình 2.10: Quá trình bắt tay dựa vào EEC...41

2.2.7.3. Mã hóa công khai trong SSL trong hai chế độ...42

2.2.7.4. So sánh...42

Bảng 1: So sánh sử dụng RSA và ECC trong quá trình bắt tay của SSL...43

Chương III. MỘT VÀI ỨNG DỤNG HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC...44

3.1. Lược đồ chữ ký số trên đường cong elliptic (Elliptic Curve Signature Algorithm ) - ECDSA 44 3.1.1. Lược đồ ký ECDSA...44

3.1.2. Độ an toàn của sơ đồ chữ ký ECDSA...45

3.2. Một số chuẩn sử dụng hệ mật ECC...46

Chương IV : DEMO TRÊN MAPLE...49

4.1. Ví dụ 1: Mã hóa và giải mã Elgamal trên Elliptic...49

4.1.1. Mô tả...49

Hình4.1: đồ thị y2 = x3 + x + 6...49

4.1.2. Mã hóa và giải mã...49

4.1.2.1. Mã hóa thông tin...49

4.1.2.2. Giải mã...53

4.2. Ví dụ về ký và kiểm tra chữ ký Elgamal...55

4.2.1. Ký lên thông báo...55

Hình4.1: đồ thị y2 = x3 + x + 6...58

4.2.2. Kiểm tra chữ ký...59

KẾT LUẬN...60

(3)

DANH MỤC HÌNH VẼ VÀ BẢNG

MỤC LỤC...1

DANH MỤC HÌNH VẼ VÀ BẢNG...5

DANH SÁCH CÁC TỪ VIẾT TẮT...5

Chương I : GIỚI THIỆU VỀ MAPLE...8

Giới thiệu chung...8

1.1. Giới thiệu chung...8

Hình 1.1: Giới thiệu về phần mềm Maple...8

1.1.1. Lịch sử phát triển...9

1.1.2. Các tính năng cơ bản của Maple...10

1.1.3. Cấu trúc và giao diện...11

Hình 1.2: Giao diện của maple...11

1.2. Lập trình tính toán với Maple...11

1.3. Lưu giữ và trích xuất dữ liệu...12

1.4. Các môi trường làm việc trong Maple...12

1.5. Lệnh của Maple...12

1.6. Các dấu phép toán, hàm và hằng số cơ bản...13

Hình 1.3: Vẽ đồ thị bằng phần mềm Maple...21

Chương II : HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC...22

2.1. Đường cong Elliptic...22

2.1.1. Mở đầu và đặt bài toán...22

2.1.2. Định nghĩa...22

2.1.3. Tính chất của đường cong elliptic...23

2.1.4. Đường cong elliptic trên trường hữu hạn...24

2.1.5. Các phép toán trên đường cong Elliptic...24

2.1.5.1. Phép cộng...25

Hình 2.1: phép cộng trên đường cong Elliptic...26

2.1.5.2. Phép nhân...27

2.1.6. Đếm số điểm trên đường cong elliptic trên trường Fq...27

2.1.7. Trường K...28

2.1.8. Dạng của đường cong elliptic...28

2.1.9. Phương pháp lựa chọn...29

Hình 2.2: Đường cong Elliptic...30

2.1.10. Các đường cong elliptic...30

Hình 2.3:Đồ thị phương trình y2 = x3 – 6x...31

Hình 2.4:phần tử nghịch đảo của P...32

(4)

Hình 2.6: Trường hợp PQ là tiếp tuyến của đồ thị tại P...33

Hình 2.7:Đồ thị minh họa P+P=-R...33

Hình 2.8: Đồ thị minh họa P+P=-P...34

2.2. Hệ mật trên đường cong elliptic...34

2.2.1. Mở đầu và đặt bài toán...34

2.2.2. Nhúng bản rõ lên đường cong...35

2.2.3. Logarit rời rạc trên đường cong Elliptic( Discrete logarithm on Elliptic)...37

2.2.4. Vấn đề trao đổi khoá Diffie- Hellman(D- H) trên Elliptic...37

2.2.5. Hệ mật Elgamal trên đường cong Elliptic...38

2.2.6. Hệ mật mã dựa trên đường cong elliptic...39

2.2.7. Giao thức SSL (Secure Sockets Layer)...39

2.2.7.1. Quá trình bắt tay đầy đủ dựa vào mã hoá RSA...40

Hình 2.9 : Quá trình bắt tay dựa vào RSA...40

2.2.7.2. Quá trình bắt tay đầy đủ dựa vào mã hoá ECC...41

Hình 2.10: Quá trình bắt tay dựa vào EEC...41

2.2.7.3. Mã hóa công khai trong SSL trong hai chế độ...42

2.2.7.4. So sánh...42

Bảng 1: So sánh sử dụng RSA và ECC trong quá trình bắt tay của SSL...43

Chương III. MỘT VÀI ỨNG DỤNG HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC...44

3.1. Lược đồ chữ ký số trên đường cong elliptic (Elliptic Curve Signature Algorithm ) - ECDSA 44 3.1.1. Lược đồ ký ECDSA...44

3.1.2. Độ an toàn của sơ đồ chữ ký ECDSA...45

3.2. Một số chuẩn sử dụng hệ mật ECC...46

Chương IV : DEMO TRÊN MAPLE...49

4.1. Ví dụ 1: Mã hóa và giải mã Elgamal trên Elliptic...49

4.1.1. Mô tả...49

Hình4.1: đồ thị y2 = x3 + x + 6...49

4.1.2. Mã hóa và giải mã...49

4.1.2.1. Mã hóa thông tin...49

4.1.2.2. Giải mã...53

4.2. Ví dụ về ký và kiểm tra chữ ký Elgamal...55

4.2.1. Ký lên thông báo...55

Hình4.1: đồ thị y2 = x3 + x + 6...58

4.2.2. Kiểm tra chữ ký...59

KẾT LUẬN...60

(5)

DANH SÁCH CÁC TỪ VIẾT TẮT

TT TỪ VIẾT TẮT TIẾNG ANH THUẬT NGỮ MẬT MÃ

1 DHP Diffie-Helman Problem Bài toán Diffie-Hellman 2 DLP Discrete Logarithm

Problem

Bài toán logarithm rời rạc trên trường hữu hạn

3 EC Elliptic Curve Đường cong elliptic 4 ECC Elliptic Curve

Cryptosystem

Hệ mật Elliptic

5 ECDLP Elliptic Curver Discrete Logarithm Problem

Bài toán logarithm rời rạc trên đường cong elliptic 6 MOV Menezes-Okamoto-Vanstone attack Tấn công MOV 7 SSL

8 SSLHP SSL Handshake protocol Giao thức bắt tay 9 SSLRP SSL Record Layer

protocol

(6)

LỜI NÓI ĐẦU

Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin, truyền thông nói chung và Internet nói riêng đã giúp cho việc trao đổi thông tin nhanh chóng, dễ dàng, E-mail cho phép người ta nhận hay gửi thư ngay trên máy tính của mình, E-business cho phép thực hiện các giao dịch trên mạng. Do vậy một vấn đề phát sinh là thông tin có thể bị trộm cắp, có thể bị sai lệch, hoặc bị giả mạo. Điều đó có thể ảnh hưởng tới các tổ chức, các công ty hay an ninh của một quốc gia. Những bí mật kinh doanh, tài chính là mục tiêu của các đối thủ cạnh tranh. Những tin tức về an ninh quốc gia là mục tiêu của các tổ chức tình báo trong và ngoài nước.

Để giải quyết tình hình trên an toàn thông tin được đặt ra cấp thiết và kỹ thuật mật mã là một trong những giải pháp của an toàn truyền thông. Kỹ thuật này có từ ngàn xưa nhưng nó đơn giản, ngày nay khi có mạng máy tính người ta dùng mật mã hiện đại. Các nhà khoa học đã phát minh ra những hệ mật mã như các hệ mật: RSA, Elgamal…, nhằm che dấu thông tin cũng như là làm rõ chúng để tránh sự nhòm ngó của những kẻ cố tình phá hoại. Mặc dù rất an toàn nhưng có độ dài khoá lớn nên trong một số lĩnh vực không thể ứng dụng được. Chính vì vậy người ta đã phát minh một hệ mật đó là hệ mật trên đường cong elliptic, hệ mật này được đánh giá là hệ mật có độ bảo mật an toàn cao và hiệu quả hơn nhiều so với hệ mật công khai khác, nó đã được ứng dụng trên nhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới tuy nhiên còn mới mẻ ở Việt Nam. Trong tương lai gần Hệ mật trên đường cong Elliptic sẽ được sử dụng một cách phổ biến và thay thế những hệ mật trước nó. Vì lý do đó, em đã chọn đề tài “Tìm hiểu Hệ mật trên đường cong elliptic và khả năng ứng dụng” để nghiên cứu. Đồ án của em gồm 4 chương:

Chương I: Giới thiệu về Maple

Chương này giới thiệu tổng quan về phần mềm Maple, lịch sử phát triển, các tính năng cơ bản, giao diện của Maple…,môi trường làm việc,các hàm số, hằng số và các câu lệnh cơ bản trong Maple

(7)

Chương II: Hệ mật trên đường cong Elliptic

Trong chương 2 trình bày một cách tổng quan về đường cong Elliptic và hệ mật trên đường cong Elliptic

Chương III: Một vài ứng dụng hệ mật trên đường cong Elliptic

Trong chương 3 nêu ra một vài ứng dụng hệ mật trên đường cong Elliptic như lược đồ chữ ký số trên đường cong Elliptic và một số chuẩn sử dụng hệ mật ECC

Chương IV: Demo trên Maple

Chương cuối cùng trình bày một số ví dụ về hệ mật trên đường cong Elliptic bằng phần mềm Maple

Sau một thời gian tìm hiểu và nghiên cứu cùng với sự giúp đỡ của các thầy cô trong khoa An toàn thông tin và đặc biệt là Cô giáo Trần Thị Lượng – Giảng

viên Khoa An toàn thông tin – Học viện Kỹ thuật Mật Mã, cuối cùng em đã hoàn

thành đồ án của mình.

Em xin chân thành cảm ơn các thầy cô !

Hà Nội, ngày 08 tháng 06 năm 2011 Sinh viên

(8)

Chương I : GIỚI THIỆU VỀ MAPLE

1.1. Giới thiệu chung

Hình 1.1: Giới thiệu về phần mềm Maple

Maple là một hệ thống tính toán trên các biểu thức đại số và minh họa toán học mạnh mẽ của công ty Warterloo Maple, ra đời khoảng năm 1991, đến nay đã phát triển đến phiên bản 14. Maple có cách cài đặt đơn giản, chạy trên tất cả các hệ điều hành, có cấu trúc linh hoạt để sử dụng tối ưu cấu hình máy và đặc biệt có trình trợ giúp (Help) rất dễ sử dụng. Từ phiên bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắn liền với toán phổ thông và đại học. Ưu điểm đó làm cho nhiều nước trên thế giới lựa chọn sử dụng Maple cùng các phần mềm toán học khác trong dạy học toán trước đòi hỏi của thực tiễn và sự phát triển của ngành giáo dục.

(9)

1.1.1. Lịch sử phát triển

Maple là gói phần mềm toán học thương mại phục vụ cho nhiều mục đích. Tên “Maple” đơn giản là để chỉ hình tượng “Lá Phong “ (trong tiếng anh gọi là Maple) trên quốc kì Canada.

Tháng 11/1980, khái niệm đầu tiên về Maple xuất phát từ một cuộc họp tại Đại học Waterloo. Những nhà nghiên cứu tại đại học muốn mua một máy tính đủ mạnh để chạy Macsyma nhưng chi phí tốn kém. Thay vào đó, người ta quyết định họ sẽ phát triển hệ thống đại số máy tính riêng để có thể chạy được những máy tính có giá thành hợp lý hơn. Do đó, dự án bắt đầu với mục tiêu là tạo ra một hệ thống đại số hình thức mà các nhà nghiên cứu và sinh viên có thể truy cập được.

Những nhà nghiên cứu đã thử nghiệm và loại bỏ nhiều ý tưởng khác nhau để tạo ra một hệ thống liên tục cải tiến. Maple được trình diễn đầu tiên tại những hội nghị bắt đầu vào năm 1982.

Đến cuối năm 1983, trên 50 trường đại học đã cài Maple trên máy của họ. Do số lượng hỗ trợ và yêu cầu giấy phép lớn, vào năm 1984, nhóm nghiên cứu đã sắp xếp với WATCOM Products Inc để cấp phép và phân phối Maple.

Vào năm 1988, do số lượng hỗ trợ ngày càng tăng, Waterloo Maple Inc. được thành lập. Mục tiêu đầu tiên của công ty là quản lý những bản phân phối phần mềm. Cuối cùng, công ty cũng phải mở ra phòng R&D ở đó khá nhiều sự phát triển cho Maple được thực hiện đến ngày nay. Sự phát triển đáng kể của Maple tiếp tục diễn ra tại những phòng thí nghiệm trường đại học, bao gồm: Phòng thí nghiệm Tính toán hình thức tại Đại học Waterloo; Trung tâm nghiên cứu Tính toán hình thức Ontario tại Đại học Tây Ontario; và những phòng thí nghiệm khắp nơi trên thế giới.

Vào năm 1989, giao diện đồ họa người dùng đầu tiên của Maple được phát triển và bao gồm trong bản 4.3 dành cho Macintosh. Những phiên bản trước của Maple chỉ gồm giao diện dòng lệnh với ngõ ra hai chiều. Bản X11 và Windows với giao diện mới tiếp bước vào năm 1980 với Maple 5.

Vào năm 1999, với việc phát hành Maple 6, Maple đã đưa vào một số Thư viện Số học NAG, được mở rộng độ chính xác ngẫu nhiên.

(10)

Vào năm 2003, giao diện "chuẩn" hiện nay được giới thiệu trong Maple 9. Giao diện này được viết chủ yếu bằng Java (mặc dù có nhiều phần, nhưng luật cho việc gõ công thức toán học, được viết bằng ngôn ngữ Maple). Giao diện Java bị phê phán là chậm; những sự phát triển được thực hiện trong các bản sau, mặc dù tài liệu Maple 11 documentation khuyến cáo giao diện (“cổ điển”) trước đây dành cho người với bộ nhớ vật lý ít hơn 500 MB. Giao diện cổ điển này không còn được bảo trì.

Giữa 1995 và 2005 Maple đã mất khá nhiều thị phần vào tay đối thủ do có giao diện người dùng yếu hơn. Nhưng vào năm 2005, Maple 10 giới thiệu một “chế độ văn bản” mới, như một phần của giao diện chuẩn. Tính năng chính của chế độ này là phép toán được đưa vào bằng ngõ nhập hai chiều, do đó nó xuất hiện tương tự như công thức trong sách. Vào năm 2008, Maple 12 đã thêm những tính năng giao diện người dùng giống như Mathematica, gồm có những kiểu trình bày theo mục đích đặc biệt, quản lý phần đầu và cuối trang, số trùng mở đóng ngoặc, vùng thực hiện tự động, mẫu hoàn thành lệnh, kiểm tra cú pháp và vùng tự động khởi tạo. Những tính năng khác được thêm để làm cho Maple dễ dùng hơn như một hộp công cụ Maple.

Phiên bản hiện tại là Maple 14 được phát hành năm 2010 .Đối thủ cạnh tranh chính của nó là Mathematica.

Maple 14 là một phần mềm tính toán kỹ thuật cần thiết cho các kỹ sư và các nhà khoa học ngày nay. Khi cần thực hiện tính toán thật nhanh,trình bày bảng tính và cho ra những kết quả có tính chuyên môn với độ chính xác cao thì Maple 14 có đầy đủ những công cụ cần thiết để thực hiện được điều đó và giúp giảm bớt những lỗi sai cho những người không chuyên về tính toán thông qua những mẫu cấu trúc được Maple thiết kế sẵn.

1.1.2. Các tính năng cơ bản của Maple.

Có thể nêu vắn tắt các chức năng cơ bản của Maple như sau: Là một hệ thống tính toán trên các biểu thức đại số:

 Có thể thực hiệc được hầu hết các phép toán cơ bản trong chương trình toán đại học và phổ thông.

(11)

 Cung cấp các công cụ minh họa hình học thuận tiện gồm: vẽ đồ thị tĩnh và động của các đường và mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau.

 Là một ngôn ngữ lập trình đơn giản và mạnh mẽ có khả năng tương tác với các ngôn ngữ lập trình khác.

 Cho phép trích xuất ra các định dạng khác nhau như LaTex,Word, HTML,...

 Một công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với các lớp học tương tác trực tiếp.

1.1.3. Cấu trúc và giao diện

 Khi khởi động Maple, chương trình chỉ tự động kích hoạt nhân của Maple bao gồm các phép toán và chức năng cơ bản nhất. Phần nhân chiếm khoảng 10% dung lượng của toàn chương trình.

 Các dữ liệu và chương trình còn lại của Maple được lưu giữ trong thư viện Maple và được chia ra 2 nhóm: nhóm các lệnh cơ bản và nhóm các gói lệnh.

Hình 1.2: Giao diện của maple

(12)

Maple là một ngôn ngữ lập trình hướng chu trình (procedure). Chúng ta có thể làm việc với Maple bằng hai chế độ khác nhau: Chế độ tương tác trực tiếp thông qua việc nhập từng lệnh đơn lẻ ngay tại dấu nhắc lệnh của Maple và nhận được ngay kết quả của lệnh đó. Chế độ chu trình được thực hiện bằng cách đóng gói một dãy các lệnh xử lý cùng một công việc vào trong một chu trình (procedure) duy nhất, sau đó ta chỉ cần gọi chu trình này và Maple tự động thực hiện các lệnh có trong chu trình đó một cách tuần tự và sau đó trả lại kết quả cuối cùng.

Maple chứa một lượng rất lớn các hàm tạo sẵn đáp ứng cho những yêu cầu tính toán khác nhau trong nhiều lĩnh vực. Các hàm này được lưu trữ trong các gói chu trình (package) và người sử dụng có thể dễ dàng gọi đến mỗi khi cần thiết. Tuy nhiên, người dùng Maple có thể tự tạo cho riêng mình những gói chu trình cũng như có thể trao đổi dùng chung những gói chu trình nào đấy, phục vụ cho công việc mang tính đặc thù riêng của mình.

1.3. Lưu giữ và trích xuất dữ liệu

 Trang làm việc của Maple sẽ được lưu giữ bằng file có đuôi ".mws". File được lưu giữ bằng trình File|Save. Một file đã có được mở bằng File|Open.

 Ngoài việc lưu giữ bằng định dạng của Maple như trên, dữ liệu có thể được trích xuất thành các định dạng khác như Word,LaTex hay HTML. Trích xuất bằng File|Export.

1.4. Các môi trường làm việc trong Maple

Maple có 2 môi trường: làm việc là toán và văn bản. Sau khi khởi động, Maple tự động bật môi trường toán. Muốn chuyển sang môi trường văn bản, kích chuột vào biểu tượng T trên thanh công cụ hay vào trình Insert->Text. Ngược lại, từ môi trường văn bản, kích chuột vào dấu "[>" trên thanh công cụ hay vào Insert để chuyển sang môi trường toán.

1.5. Lệnh của Maple

 Lệnh được gõ vào trang làm việc (worksheet) tại dấu nhắc lệnh ">" và theo ngầm định được hiển thị bằng font Courier màu đỏ. Một lệnh đựợc kết

(13)

thúc bởi dấu ":" hoặc dấu ";" và được ra lệnh thực hiện bằng việc nhấn Enter khi con trỏ đang ở trên dòng lệnh.

> factor(2*x^102+x^100-2*x^3-x+60*x^2+30);

Kết quả của lệnh được hiển thị ngay bên dưới dòng lệnh nếu dùng dấu ";". Có thể dễ dàng dùng chuột và bàn phím để thực hiện các chức năng bôi đen, copy, paste, cut, delete...đối với dữ liệu trên dòng lệnh hay kết quả thực hiện.

Sử dụng dịch vụ trợ giúp (Help) trong Maple: Maple có dịch vụ trợ giúp khá đầy đủ và thuận lợi, bao gồm cú pháp, giải thích cách dùng và các ví dụ đi kèm. Để nhận được trợ giúp, có thể ấn F1 hoặc bôi đen vào câu lệnh ấn SHIFT+F2

 Nếu đã biết tên lệnh thì từ dấu nhắc gõ vào > ?factor

 Nếu dùng một gói lệnh thì khi nạp gói lệnh, Maple sẽ hiển thị toàn bộ lệnh trong gói đó.

 Một cách thông dụng nữa là dùng trình Help|Topic Search rồi gõ vào từ khóa cần tìm.

1.6. Các dấu phép toán, hàm và hằng số cơ bản

Các phép toán và dấu phép toán

Cú pháp Giải thích Ví dụ ! ^ + -* / > < >= <= Giai thừa Lũy thừa Cộng Trừ hoặc số âm Nhân Chia Lớn hơn Nhỏ hơn Lớn hơn hoặc bằng Nhỏ hơn hoặc bằng 10! a^2 a+b x-y 2*x 10/5 a>10 b<10 x>=10 x<=10

(14)

= := Bằng Phép gán a=b x:=10 Các hàm thông dụng: Cú pháp Giải thích Ví dụ

sin, cos, tan,… arcsin, arccos, arctan

abs exp log hay ln log[10] sqrt Các hàm lượng giác Các hàm lượng giác ngược Hàm trị tuyệt đối Hàm mũ cở số e Hàm logarit cơ số e Hàm logarit cơ số 10 Khai căn bậc 2 sin(x) arcsin abs(x) exp(x) hay e^x log(x) hay ln(x) log[10](x) sqrt(3) Các hằng số thông dụng:∞ Cú pháp Hằng số Pi exp infinity π e ∞ Các tính toán số học

Maple có thế làm việc như một máy tính bỏ túi hiện đại >5*3

(15)
(16)

Kết quả của các phép toán quan hệ là:

True đúng

False sai

FAIL không so sánh được

Chú ý: Các thành phần trên có thể được xếp vào những mục (section) cho dễ tìm hoặc mục con (subsection) trong worksheet

Cấu trúc dữ liệu:  Tập hợp (Set)

 Tập hợp là dãy được bao trong cặp dấu ngoặc nhọn {...}.  Trong tập hợp thứ tự các phần tử không quan trọng.

 Các phép toán trên tập hợp như union (hợp), intersect (giao), minus (trừ). > s:=sin,cos,tan; > a:= {exp,sin,cos}; > b:= {s}; > a union b; > a intersect b;

Kiểm tra phần tử có trong tập hợp hay không? > member (sin,b);

(17)

 Danh sách (List)

 Danh sách là dãy được bao trong cặp dấu ngoặc vuông [..].  Các phần tử của danh sách có thể là bất cứ gì.

> c := [1, 2, 3, 2, 1];

Tìm số phần tử của list bằng nops(L); > nops (c);

Truy cập các phần tử của list > op (2,c);

 Tính toán với các số thập phân

Ta có thể thực hiện các phép tính số học trên các số thập phân với dấu chấm động hoặc với độ chính xác theo ý muốn. Trong thực tế, Maple có thể xử lý các số với độ chính xác hàng trăm nghìn chữ số thập phân bằng hàm evalf (f, m)

Ví dụ: Ta tính giá trị của số Π với độ chính xác 20 chữ số thập phân

> evalf(Pi,20);

 Tính toán theo Modul

 Tính modul m trên tập số nguyên Cú pháp: e mod m với các dạng riêng:

 modp (e, m): Lấy biểu diễn dương của e theo modul m (trong

tập giá trị từ 0 đến 1 - m ).

 mods (e, m): Lấy biểu diễn đối xứng của e theo modul m

(trong tập (|m-1|)/2..(|m|/2))

(18)

Toán tử mod tính giá trị biểu thức e trên tập số nguyên modul m. Nó hợp nhất việc tính toán trên trường số hữu hạn và các phép toán số học đối với đa thức, ma trận trên trường hữu hạn, kể cả phép phân tích ra thừa số. Việc ấn định mod p hay mod s được thực hiện thông qua biến môi trường mod (giá trị modp được xem là mặc định). Khi ta cần tính q mod m với q là một số nguyên thì không nên sử dụng cú pháp hiển nhiên như q^n mod m, bởi vì phép lũy thừa sẽ chuyển số thứ nhất thành số nguyên (có thể là rất lớn) trước khi rút gọn theo modul m. Thay vào đó nên dùng toán tử trơ &^ nghĩa là q&^n mod m. Trong dạng đó lũy thừa sẽ được biến đổi khéo léo theo phép lấy mod. Tương tự, Powmod (a,n,b,x) mod m tính Rem (a^n,b,x) mod m (a và b là những đa thức của x) không cần tính a^n mod m.

Những phép toán modul số học khác được biểu diễn dưới dạng tự nhiên của chúng: j + i mod m; j - i mod m; j * i mod m; i / j mod m; j^(-1) mod m; Ví dụ: Tính > 12 mod 7; modp(12,7); > mods(12,7); > 5*3 mod 7; > 11+5*3 mod 7;

(19)

> (11+5*3)^(-1) mod 7;

> 5 &^1000 mod 31;

 Tính modul khi e không là số

Khi biểu thức e không là một số mà là một đa thức thì phép lấy modul của nó được hiểu là phép lấy modul của tất cả các hệ số của đa thức.

Ví dụ: Tính

> a:=15*x^2+4*x-3 mod 11;

Vì phép lấy modul mặc định sử dụng biểu diễn dương (modp). Muốn chuyển sang dạng đối xứng thì ta dùng lệnh:

> mod`:=mods:

b:=3*x^2+8*x+9 mod 11;

Đối với các phép toán khác như tìm ước chung lớn nhất, phân tích ra thừa số nguyên tố (với cả số và đa thức),… cũng được thực hiện theo phương thức thông thường ngoại trừ một khác biệt nhỏ là các lệnh trong phép tính modul được bắt đầu bằng chữ hoa.

Ví dụ:

> Gcd(a,b) mod 11;

 Giải phương trình với modul

Cú pháp: msolve (eqns, vars, q) hoặc msolve (eqns, q)

Trong đó:

(20)

 vars: Tập các biến.  q: Số nguyên.

Lệnh msolve thực hiện việc giải phương trình trong Z theo m. Lệnh msolve giải các phương trình eqns trên các số nguyên (theo mod q). Nó giải theo mọi ẩn bất định có trong các phương trình. Nếu là nghiệm vụ định, thì họ các nghiệm được biểu diễn thông qua các biến có tên được cho trong tập biến vars, nếu như vars được bỏ qua thì được thay thế bằng các tên mặc định toàn cục _Z1~, _Z2~, _Z3~,…Những tên này không trùng với các ẩn vô định và được phép lấy mọi giá trị nguyên.

Ví dụ:

> restart:

> msolve({3*x-4*y=1, 7*x+y=2},19); > msolve(8^i=2,17);

> msolve(3*x=6,12);

Nếu phương trình không có nghiệm trên các số nguyên (mod m) thì Maple sẽ không cho kết quả nào.

Vẽ đồ thị Cú pháp: plot(biểu thức) Ví dụ: vẽ đồ thị hàm số y2=x3+2x+5 > p1:= plot x2+2x+5; > p2:= plot(- x2+2x+5); > plots[display](p1,p2);

(21)

Hình 1.3: Vẽ đồ thị bằng phần mềm Maple

Maple là một phần mền tính toán khá phong phú, hỗ trợ hầu hết các lĩnh vực của toán học. Do đó, ứng dụng Maple vào tự học , tự nghiên cứu có thể kiểm tra được kiến thức toán học của mình và tạo ra những tư duy mới về toán học

(22)

Chương II : HỆ MẬT TRÊN ĐƯỜNG CONG ELLIPTIC

2.1. Đường cong Elliptic

2.1.1. Mở đầu và đặt bài toán

Lý thuyết đường cong Elliptic được xác định trên trường số hữu hạn đã có ứng dụng đáng lưu ý trong lĩnh vực mật mã. Lý do cơ bản là đường cong Elliptic trên trường hữu hạn đã cung cấp cho chúng ta một cơ sở xây dựng thuật toán mà không thể dùng thuật toán vét cạn để thám mã của nhóm Abelian ngay cả khi nhóm đó có cấp không lớn lắm.

Đường cong elliptic là tập hợp các điểm có toạ độ (x, y) thoả mãn phương trình có dạng sau đây:

Y2 + a

1xy + a3y = x3 + a2x2 + a4x + a6

Trên trường số phức C, phương trình đầy đủ của đường cong Elliptic gọi là phương trình Weiretrass có dạng

Y2 + a

1xy + a3y =x3 + a2x2 + a4x + ai (*) với ai ∈ C

Xét đường cong E trên trường nguyên tố hữu hạn Fp (p nguyên tố, p>3 ) với công thức biến đổi như sau:

X→X − b a2 , Y→ Y − 2 3 1x a a + Khi đó phương trình Weierstrass có dạng: X3 + aX + b Vậy trong trường Fp (*) trở thành: Y2 = X3 + aX + b

2.1.2. Định nghĩa

Giả sử K là một trường có đặc số khác 2 và khác 3 ta xét đa thức X3 + aX + b (với a, b

K)

Khi đó đường cong elliptic trên trường K: Y2 = X3 + aX +b

(23)

Tức là đường cong Elliptic là tập hợp S:

S = { (x, y) : y2 = x3 + ax + b, x, y ∈ K } ∈ {O} .

Với a, b Є K cho trước sao cho 4a3 + 27b2≠ 0 theo mod p.

Nếu K là trường đặc số 2 thì ta định nghĩa:

S = { (x, y) : y-2 + y = x3 + ax +b}

{O} (2)

Nếu K là trường đặc số 3 thì ta định nghĩa:

S = { (x, y) : y-2 + y = x3 + ax +bx + c }

{O} (3)

2.1.3. Tính chất của đường cong elliptic

 Nếu hai điểm P1(x1, y1 ) và P2(x2, y2) với x1 ≠ x2 nằm trên cùng một đường

cong elliptic E, thì đường thẳng qua hai điểm P1 và P2 sẽ cắt một điểm duy nhất P3(x3, y3) có thể xác định thông qua P1 và P2 nằm trên đường cong E.

 Tiếp tuyến của đường cong tại điểm bất kỳ P(x, y) trên đường cong E cắt đường cong elliptic E tại một điểm duy nhất nằm trên đường E, điểm này cũng có thể xác định được thông qua P.

Dựa vào những tính chất đó người ta đã nghiên cứu và phát hiện ra một khả năng mới cho kỹ thuật mã hoá nói chung và chứng thực nói riêng, kỹ thuật mã hoá dựa trên đường cong elliptic.

Người ta đã chỉ ra rằng các hệ mã hoá bằng đường cong elliptic có độ bảo mật cao hơn nhiều so với các hệ mã hoá công khai khác như RSA, Elgamal… Độ bảo mật dựa trên độ khó phân tích số nguyên thành các thừa số nguyên tố cũng như bài toán logarit rời rạc, độ dài khoá giảm đi nhiều lần và do đó tốc độ thực hiện cũng sẽ nhanh hơn rất nhiều. Chính vì vậy người ta đã áp dụng kỹ thuật mã hoá bằng đường cong elliptic vào nhiều lĩnh vực khác nhau. Các kỹ thuật mã hoá bằng phương pháp đường cong elliptic được sử dụng hiệu quả nhất trong việc xây dựng các giải pháp bảo mật thông tin cho các thẻ thông minh(Smart Card), các thiết bị điện tử có khả năng tính toán và không gian bộ nhớ hạn chế.

(24)

2.1.4. Đường cong elliptic trên trường hữu hạn

Xét trường hữu hạn Fq của q = pr phần tử trên trường hữu hạn K. Giả sử E là

đường cong elliptic được định nghĩa trên Fq. Nếu đặc số của trường p=2 hoặc p=3 thì E được cho bởi phương trình ở (2) và (3) .

Dễ dàng thấy rằng một đường cong như vậy có thể có nhiều nhất là 2p+1 điểm trong Fq, nghĩa là điểm vô cùng với 2q cặp (x, y) trong đó x, y ∈ Fq thoả

mãn (1) (2) (3) (nếu p=2 hoặc 3), tức là với mỗi q giá trị x có thể có tồn tại nhiều nhất 2 giá trị y thoả mãn (1). Nhưng vì chỉ có một nửa các phần của Fq có căn bậc 2 người ta kỳ vọng (nếu x3 + ax + b là các phần tử ngẫu nhiên của trường )

chỉ có khoảng một nửa số các điểm của Fq. Chính xác hơn, giả sử λ đặc trưng

toàn phương của Fq (lấy λ (0) = 0).

Ví dụ: Nếu q = p là 1 số nguyên tố thì λ (x) =(x/p ) là ký hiệu Legedre Symbol). Do đó trong tất cả mọi trường hợp số các nghiệm y

Fq thoả mãn phương trình

y2 = u là bằng 1 + λ (u). Vì vậy số các nghiệm ở phương trình 1 và điểm vô hạn

là: 1 +x

Fq (1+ λ(x3 + ax + b)) = q + 1 +

Fq x (1 + λ(x 3 + ax + b)) (6) Ta hy vọng rằng λ( x3 + ax + b) bằng +1 và -1.

Lấy tổng ngẫu nhiên: tung đồng xu q lần. Người ta thấy rằng x

Fq (x3+ax+b) bị

chặn bởi 2 q đó chính là định lý Hasses được phát triển như sau:

Định lý: Gọi N là số các điểm trên đường cong elliptic được định nghĩa trên Fq. Khi đó | N−(q + 1) | ≤ 2 q

2.1.5. Các phép toán trên đường cong Elliptic

Giả sử p là một số nguyên tố >3. Người ta chứng minh được rằng bằng phép biến đổi tuyến tính, ta có thể quy phương trình đường cong elliptic về dạng Weierstrass như sau:

Y2 = X3 + aX + b

(25)

Y2 = X3 + aX + b mod p

Cùng với một phần tử đặc biệt ký hiệu là O là phần tử trung hoà. Tập hợp đó được ký hiệu là E.

2.1.5.1. Phép cộng

Giả sử P= (x1, y1) và Q (x2, y2) là hai điểm của E.

Nếu x1= x2 và y1 = - y2 thì ta định nghĩa P + Q = O Ngược lại thì : P + Q = (x3, y3)

E trong đó x3= λ2 - x1 – x2 ; y3 = λ(x1 – x3 ) –y1 Với λ= (y2 - y1) / (x2 – x1), khi P # Q (nếu x1 = x2 thì λ là hệ số góc đường thẳng qua P và Q (*) (3x2 + a) / 2y

1, , khi P = Q (λ là đạo hàm của đường cong tại P) (**)

Vậy nếu P ≠ Q tức là x1 ≠ x2 x3 = λ2 – x1 – x2 (*) y3 = λ (x1 – x3) – y1 Nếu P =Q X3 = λ2 – 2x1 (**) Y3 =λ(x1 – x3) – y1

(26)

Hình 2.1: phép cộng trên đường cong Elliptic Chú ý rằng các điểm (x3, y3), (x3, -y3) cũng nằm trên đường cong E và xét về mặt hình học, thì các điểm (x1, y1), (x2, y2), (x3, -y3) cũng nằm trên một đường thẳng. Ngoài ra ta định nghĩa thêm: P + O = O + P = P. Tính chất:

Dễ thấy rằng tập E với phép toán cộng đó tạo thành một nhóm Abelian:

 Tính đóng: Nếu P, Q ∈E thì P + Q ∈E.

 Tính kết hợp: Nếu P, Q, R

E thì P + ( Q + R ) = R + ( Q + P ).

 Tồn tại phần tử trung hoà O: với mọi P ∈ E thì P + O = O + P = P (theo định nghĩa).

 Tồn tại phần tử nghịch đảo: với mỗi P(x, y) ∈ E thì luôn tồn tạ phần tử -P(x, -y) ∈E để P + (-P) = O.

(27)

2.1.5.2. Phép nhân

Phép nhân một số nguyên k với một điểm P thuộc đường cong elliptic E là điểm Q được xác định bằng cách cộng k lần điểm P và dĩ nhiên Q ∈ E: k × P = P + P + P……+ P ( k phép cộng điểm P).

Vì vậy nếu G là một điểm thuộc đường cong elliptic E thì với mỗi số nguyên dương k luôn dễ dàng xác định được điểm Q = k ×G

MỆNH ĐỀ : Cho E là một đường cong elliptic xác định bởi phương trình y2 = x3 + Ax + B. Gọi P

1(x1,y1) và P2(x2,y2) là các điểm trên E với P1,P2 # 0. Khi

đó P1 + P2 = P3 = (x3,y3) với x3,y3 được tính như sau : 1) (Công thức cộng điểm) Nếu x1 # x2 thì x3 = λ 2 – x1 – x2 y3 = λ (x1 - x3) – y1 Với λ = (y2-y1)/(x2-x1) 2) Nếu x1 = x2 nhưng y1 # y2, thì P1 + P2 = 0

3) (Công thức nhân đôi điểm) Nếu P1 = P2 và y1 # 0, thì

x3 = λ 2 – 2x1

y3 = λ (x1 - x3) – y1

Với λ = (3x12+ A)/2y1

4) Nếu P1 = P2 và y1 = 0, P1 + P2 = 0

2.1.6. Đếm số điểm trên đường cong elliptic trên trường F

q

Việc xây dựng các hệ mật mã trên đường cong elliptic 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 . Ước lượng thô số điểm của E (kí hiệu là #E) là p

 Định lý Hasse

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

|N – (q +1)| ≤ 2 q .

(28)

 Định nghĩa

Bậc của điểm G thuộc E là số k dương bé nhất sao cho kG = O; Khi k = #E(Fq) thì G là điểm cơ sở của E.

Phương pháp chọn đường cong Elliptic phù hợp và điểm cơ sở :

Việc chọn một đường cong elliptic thế nào ảnh hưởng đến tốc độ, tính hiệu quả, độ dài khoá và tính an toàn của hệ mật mã trên đường cong này. Dù E, K và điểm cơ sở B ∈E cố định và công khai nhưng việc chọn các tham số này phù hợp là bước quan trọng nhất.

2.1.7. Trường K

Trước hết chúng ta xem xét sự ảnh hưởng của trường K đến cấu trúc nhóm của E(K) và các hệ mật mã trên E(K).

Một đường cong elliptic trên một trường hữu hạn tạo thành nhóm Abelian được sử dụng trong mật mã học. Một ví dụ là việc chọn trường F2T giúp thực

hiện các phép tính nhanh và dễ dàng triển khai được trên các thiết bị cứng. Các đường cong elliptic trên trường số nguyên tố Fp và trên trường Fqn có các tính

chất giúp chúng có thể thực thi được trên các thiết bị mà vẫn đảm bảo an toàn. Một chú ý nữa là việc tính số điểm trên #E(K). Với #E(K) thích hợp có thể là điều kiện cho phép thực hiện tấn công Pohlig – Hellman. Có thể dùng thuật toán đơn định thời gian đa thức Shoof để tính trên trường hữu hạn Fq với

đặc số khác 2 hoặc 3. Tốc độ của thuật toán Shoof phụ thuộc vào kích thước và đặc số của trường K. Ví dụ với r nhỏ, tính # E(F2T) có thể nhanh hơn một chút so

với tính # E(Fp), trong đó p lớn hơn đáng kể so với 2r, nhưng khi r tăng thì tính

# E(F2T) mất nhiều thời gian hơn tính # E(Fp).

2.1.8. Dạng của đường cong elliptic

Trước hết, chúng ta cần xem các dạng đường cong elliptic. Trên trường Fq có

hai lớp đường cong elliptic được dùng trong các hệ mã hoá là supersinggular. Xét Fq có đặc số là 2 (g = 2m). Khi đó:

 Tập tất cả các cặp nghiệm (x, y) của phương trình y2 + ax = x3 + bx + c với

(29)

 Tập tất cả các cặp nghiệm (x, y) của phương trình y2 + ax = x3 + bx + c với

a, b, c ∈ Fq và b = 0 (mod q) cùng với điểm trung hoà O tạo thành một

đường cong elliptic dạng non-supersingular.

Supersingular Curve: Menezes và Vanstone đã tìm ra các ưu điểm của các

đường cong elliptic supersingular cho các hệ mật mã, đặc biệt trên trường F2T.

Nonsupersingular Curve: Ưu điểm của các đường cong nonsupersingular là nó

cung cấp độ bảo mật tương đương như các đường cong supersingular nhưng với các trường nhỏ hơn. Độ dài khoá ngắn giúp chúng có thể triển khai trên các thiết bị như smart card. Hơn nữa, các đường cong nonsupersingular có thể chống lại tấn công MOV

2.1.9. Phương pháp lựa chọn

Có nhiều cách chọn các đường cong elliptic và điểm cơ sở B thuộc đường cong đó. Một cách chọn điển hình là:

Phương pháp- Phương pháp chọn ngẫu nhiên Kobliz: 1. Chọn ngẫu nhiên 3 phần tử từ Fq là x, y, a

2. Tính b = y2 – (x3 + ax)

3. Kiểm tra 4a3 + 27b2 ≠ 0 để đảm bảo phương trình x3+ ax + b =0 không có

nghiệm kép.

4. Nếu điều kiện trên không thoả mãn quay lại bước 1.

5. Còn lại, đặt P = (x, y) và đường cong y2 = x3+ ax + b là đường cong cần chọn.

Tuy nhiên phương pháp này có thể tạo ra các đường cong không đảm bảo một số yêu cầu định trước. Một kỹ thuật cải tiến là xây dựng các đường cong với các tính chất cho trước. Cũng có thể chọn những đường cong để tạo các hệ mã hoá không phụ thuộc vào bài toán EDLP, chẳng hạn các hệ elliptic dựa trên RSA.

Các hệ mật mã elliptic làm việc với các nhóm con cylic của E với phần tử sinh là điểm P. Vì vậy, việc lựa chọn P phù hợp là rất quan trọng. Để đảm bảo việc chọn điểm thích hợp ta hãy chọn đường cong elliptic của chúng ta và trường hữu hạn sao cho số N các điểm của đường cong là một số nguyên tố. Nếu chọn được như vậy thì mọi điểm B ≠ 0 đều là phần tử sinh.

(30)

Tóm lại: Một đường cong elliptic là một vật thể với một tính chất kép:  Một mặt, nó là một đường cong, một vật thể hình học.

 Mặt khác, chúng ta có thể "thêm vào" các điểm trên đường cong như thể nếu chúng là những con số, do đó, nó là một đối tượng đại số.

Ngoài ra theo luật trên một đường cong elliptic có thể được mô tả:

 Về mặt hình học bằng cách sử dụng nút giao nhau của đường cong  Về mặt đại số bằng cách sử dụng các phương trình đa thức

 Về mặt phân tích bằng cách sử dụng các chức năng với các biến số phức tạp

Hình 2.2: Đường cong Elliptic

Đường cong elliptic xuất hiện trong các lĩnh vực đa dạng của toán học, từ lý thuyết số đến phân tích phức tạp, và từ mật mã học đến vật lý toán học. Một đường cong Elliptic là một đường cong tạo ra bởi một phương trình dạng mẫu E : y2 = x3 + Ax + B

2.1.10. Các đường cong elliptic

Dễ thấy rằng các đường cong elliptic được miêu tả trong nhiều loại bài toán khác nhau. Ta có thể đưa ra một ví dụ đó là việc chứng minh lý thuyết Ferma của An-drew đã sử dụng các đường cong elliptic. Các đường cong elliptic có một vai trò quan trọng trong việc tìm các thừa số nguyên, kiểm tra tính nguyên thủy, và gần đây nhất chúng được sử dụng trong hệ mã hóa công khai. Ý tưởng

(31)

sử dụng các đường cong elliptic trong mã hóa công khai do N. Koblitz và V. Miller đề xuất đầu tiên năm 1985.

Ta định nghĩa một đường cong elliptic như sau: đó là một đường cong trên trường F - một trường không có đặc tính 2 hoặc 3, và giả sử a, b

F để x3+ax+b

không có các nghiệm bội điều này cũng tương đương với điều kiện 4a3+27b2 #

0

Đồng thời, mọi cặp điểm (x, y)

F

×

F đều thỏa mãn phương trình sau: y2 = x3+ax+b mod p (1)

cùng với một phần tử đặc biệt O được gọi là điểm vô cực.

Chú ý rằng, một đường cong elliptic nếu kết hợp với một phép toán được định nghĩa đặc biệt sẽ trở thành một nhóm Abel. Ban đầu, có thể quan sát phép toán này một cách tốt nhất về phương diện hình học khi áp dụng nó với đường cong elliptic trên tập các số thực.

Ví dụ ta có thể quan sát đồ thị sau với các cặp được sắp (x, y) thoả mãn phương trình y2 = x3 – 6x trên tập số thực. Chú ý rằng đồ thị này đối xứng qua

trục x.

Hình 2.3:Đồ thị phương trình y2 = x3 – 6x

Bây giờ ta sẽ xây dựng phép toán để khi áp dụng với những điểm thuộc đồ thị trên và điểm vô cực O ta sẽ thu được đường cong elliptic E có cấu trúc

của một nhóm Abel. Phép toán đó là một phép cộng với các đặc điểm sau: 1. Điểm vô cực là phần tử trung hoà của nhóm. Vì vậy ta định nghĩa:

(32)

P+ O = O +P = P với mọi điểm P

E

2. Với mọi điểm P = (x, y) trong đồ thị y2 = x3 – 6x, chúng ta định nghĩa

phần tử phủ định (hay phần tử nghịch đảo) của P là –P = (x, -y). Điều này được minh hoạ ở hình sau:

Hình 2.4 : Phần tử nghịch đảo của P

3. Giả sử P và Q là hai điểm trong đồ thị y2 = x3 – 6x với P # Q, và đường

nối PQ không phải là đường tiếp tuyến của đồ thị tại P hoặc Q. Tuy nhiên, sẽ khó khăn để chỉ ra rằng PQ cắt đồ thị tại một điểm duy nhât R. Ta định nghĩa P+Q = -R. Minh hoạ trên hình sau:

(33)

Hình 2.6: Trường hợp PQ là tiếp tuyến của đồ thị tại P

4. Giả sử P nằm trên đồ thị y2 = x3 – 6x với x # 0 và P không phải là điểm

trong phần cong bên phải của đồ thị. Tuy nhiên sẽ khó khăn để chỉ ra đường tiếp tuyến của đồ thị tại P cắt đồ thị tại một điểm R duy nhất. Ta định nghĩa P + P = -R

Hình 2.7:Đồ thị minh họa P+P=-R

5. Giả sử điểm P nằm trên đồ thị y2 = x3 – 6x và P là một điểm trong phần

(34)

Hình 2.8: Đồ thị minh họa P+P=-P

Phép toán này rõ ràng là có tính giao hoán. Và ta giả sử rằng nó có tính kết hợp.

2.2. Hệ mật trên đường cong elliptic

Hiện nay, hệ mật RSA là giải thuật khoá công khai được sử dụng nhiều nhất, nhưng hệ mật dựa trên đường cong Elliptic (ECC) có thể thay thế cho RSA bởi mức an toàn và tốc độ xử lý cao hơn. Ưu điểm của ECC là hệ mật mã này sử dụng khoá có độ dài nhỏ hơn so với RSA. Từ đó làm tăng tốc độ xử lý một cách đáng kể, do số phép toán dùng để mã hoá và giải mã ít hơn và yêu cầu các thiết bị có khả năng tính toán thấp hơn, nên giúp tăng tốc độ và làm giảm năng lượng cần sử dụng trong quá trình mã hoá và giải mã. Với cùng một độ dài khoá thì ECC có nhiều ưu điểm hơn so với các giải thuật khác, nên trong một vài năm tới có thể ECC sẽ là giải thuật trao đổi khoá công khai được sử dụng phổ biến nhất.

2.2.1. Mở đầu và đặt bài toán

Năm 1976, Diffie và Hellman giới thiệu hệ mã hoá khoá công khai đầu tiên mà sự an toàn của nó dựa trên độ khó của bài toán DLP. Năm 1985, Lenstra thành công trong việc sử dụng các đường cong elliptic cho các số nguyên. Kết quả này mang lại khả năng áp dụng các đường cong elliptic trong các hệ mật mã khoá công khai. Miller và Kobliz giới thiệu những hệ mật mã elliptic. Họ không

(35)

elliptic cho các hệ khoá công khai. Miller đề xuất một giao thức trao đổi khoá tựa như Diffie – Hellman vào năm 1985 (nhanh hơn 20% so với giao thức Diffie - Hellman). Kobliz đưa ra thuật toán mã hoá tương tự như hệ Elgamal và Massey – Omura vào năm 1987. Sơ đồ đầu tiên tương tự như sơ đồ RSA và 3 hàm một chiều (có cửa sập) mới dựa trên đường cong Elliptic được đưa ra năm 1991 bởi Koyama, Maurer, Okamoto và Vanstone (thuật toán này tốc độ thực hiện nhanh gấp 6 lần so với RSA). Cùng thời điểm đó, Kaliski chứng minh rằng các hàm cửa sập một chiều đòi hỏi thời gian là hàm mũ để thực hiện phép tính nghịch đảo. Menezes, Okamoto và Vanstone đã đưa ra một phương pháp tấn công MOV để giải bài toán EDLP trong một số trường hợp riêng. Ngay sau đó, Miyaji đã đề xuất một ứng dụng thực tế của các đường cong elliptic cho các sơ đồ chữ ký và định danh trên Smart Card. Năm 1993, Demytko đưa ra một thuật toán mới tương tự như RSA cho các đường cong Elliptic trên vành Z vượt qua các hạn chế của các phiên bản trước, và Menezes và Vanstone đã đưa ra phương pháp thực thi trên các thiết bị cứng có thể cài thiện các tính toán trên elliptic trên một trường hữu hạn.

Những năm 1997, 1998 việc tìm ra các hệ mật mã trên các đường cong Elliptic ngày càng thu hút nhiều sự chú ý và một số thuật toán đã được đưa thành các chuẩn

2.2.2. Nhúng bản rõ lên đường cong

Nhúng một bản rõ lên E là biểu diễn lại bản rõ đó như là các điểm trên E mà nhờ đó chúng ta có thể thực hiện được các tính toán trên E. Có một số phương pháp thực hiện việc này. Trong đó có 2 phương pháp chính là imbedding và mask.

Muốn mã hoá bản rõ m trên một đường cong elliptic cho trước được định nghĩa trên trường Fq trước hết ta phải tìm cách nhúng nó lên E. Giả sử m được

coi là một số nguyên dương nào đó. Bản rõ m được ứng với điểm Pm trên E.

Trước khi thực hiện “nhúng” điểm m lên E ta cần lưu ý:

 Sau khi nhận được bản mã, người ta nhận đích thực phải có thể giải được bản mã một cách dễ dàng.

(36)

 Không có một thuật toán tất định với thời gian đa thức (trong log q) để biết được một số lớn các điểm trên đường cong elliptic tuỳ ý trên E cả trường Fq. Tuy nhiên lại tồn tại một thuật toán xác suất mà đối với nó xác

suất sai là rất bé.

 Việc tạo ra các điểm ngẫu nhiên của E là không đủ để mã hoá một số lượng lớn tuỳ ý các bản rõ m. Trong lúc đó bản rõ mà ta cần nhúng lại có thể rất lớn.

Do đó, một phương pháp xác suất có thể cho phép nhúng (imbed) các bản rõ m được coi là một điểm trên đường cong elliptic E được định nghĩa trên trường Fq với q = pn được giả thiết là đủ lớn.

Gọi k là một số nguyên dương đủ lớn sao cho thoả mãn xác suất sai xấp xỉ 1/2k.

Giả sử khi chúng ta muốn nhúng một bản rõ m, giả sử k là một số nào đó(k =20, 30 hoặc k = 50 là đủ). Với m kà một số nguyên sao cho 0≤ m ≤M (M là số nguyên dương lớn hơn mọi khối rõ m cần nhúng )

Trường hữu hạn đã chọn sao cho q > Mk .Biểu diễn các số nguyên từ 1 đến Mk dưới dạng:

{mk + j} 1≤ j ≤ k

Ta lập một ánh xạ 1- 1 tương ứng giữa các số nguyên trên với tập hợp các phần tử của Fp. Ví dụ có thể viết một số nguyên như là một số nguyên cơ số p có độ

dài r và coi r như là một phần tử của Z/pZ , là hệ số của một đa thức cấp r – 1 tương ứng với một phần tử của Fq. Nghĩa là số nguyên (ar-1, ar-2,…….a1, a0 )p

đặt tương ứng với đa thức mà nó được xem như modulo đa thức bất khả quy cấp r cố định trên Fp, cho một phần tử của Fq. Do đó cho trước m với j =

1, 2,3…..k sẽ nhận được một phần tử của Fq tương ứng với mk + j

Đối với số x đó ta tính: Y2 = f(x) = x3 + ax + b và tìm căn bậc 2 của giá trị

f(x) Nếu tìm được một số y sao cho y2 = f(x) thì lấy P

m = (x, y). Nếu kết quả

f(x) là không bình phương thì tăng x thêm 1 và tiếp tục tính toán từ đầu cho đến khi tìm được một số x sao cho f(x) là một bình phương cho đến khi j nhận giá trị

(37)

2.2.3. Logarit rời rạc trên đường cong Elliptic( Discrete logarithm

on Elliptic)

Định nghĩa: Nếu E là đường cong Elliptic trên trường Fq và B là một điểm

trên E. Khi đó bài toán logarit rời rạc trên E (theo cơ số B) là một bài toán, cho trước một điểm P ∈ E, tìm số nguyên x ∈Z sao cho xB = P (nếu số x như vậy tồn tại)

Hầu như bài toán tính logarit rời rạc trên đường cong elliptic sẽ khó hơn bài toán logarit rời rạc trên trường hữu hạn. Các kỹ thuật mạnh nhất đã được phát triển để sử dụng trong các trường hữu hạn dường như không có giá trị đối với đường cong elliptic. Kết quả này đặc biệt đúng trong trường hợp trường có đặc số 2. Như đã được chứng tỏ bởi Odlzko rằng có một số phương pháp đặc biệt để giải bài toán logarit rời rạc trong G*

2r với chúng dễ dàng tính được logarit

rời rạc và do đó phá vỡ được hệ mật mã, trừ ra trường hợp số r được chon đủ lớn. Dường như các hệ thống tương tự sử dụng đường cong elliptic được định nghĩa trên trường F2r sẽ đảm bảo an toàn kể cả trong trường hợp giá trị r khá bé.

2.2.4. Vấn đề trao đổi khoá Diffie- Hellman(D- H) trên Elliptic

Giả sử A và B muốn thống nhất một khoá chung để liên lạc có bảo mật giữa hai người bằng mật mã truyền thống. Trước hết hai bên thống nhất công khai chọn một trường hữu hạn Fq và một đường cong elliptic trên nó khoá chung

của họ sẽ được xây dựng từ một điểm ngẫu nhiên P của đường cong vừa cho, họ làm cách này bằng cách chọn toạ độ x của P là ngẫu nhiên trong Fq. Sau đó nó

được chuyển đổi thành số nguyên cơ số P có r số( q = pr) được coi là khoá đối

với hệ mã truyền thống của họ. Cụ thể như sau:

Trước hết A, B chọn công khai một điểm B

E. B đóng vai trò như là phần tử sinh g trong trường hữu hạn của hệ thống Diifie-Hellman. Chúng ta muốn có một nhóm con được sinh ra bởi B là lớn, tốt nhất là có cùng cấp như E. Bây giờ giả sử B là công khai và cố định trên E mà cấp của nó là đủ lớn (chẳng hạn hoặc là N hoặc là một nhân tử lớn của N).

Để tạo ra khoá, trước hết A chọn ngẫu nhiên một số nguyên a có cấp q (nó xấp xỉ như số N). Số a được giữ bí mật. Trên cơ sở đó, A tính aB

E, aB là công khai. Đến lượt B cũng làm như vậy, anh ta chọn ngẫu nhiên số b và tính

(38)

bB

E, bB cũng được công khai. Khoá bí mật mà chỉ có hai người A, B mới có đó là: P =abB ∈ E. Người thứ ba bất kỳ không thể suy ra abB từ aB và bB nếu không giải bài toán logarit rời rạc trên E của trường Fpr

2.2.5. Hệ mật Elgamal trên đường cong Elliptic

Hệ mật Elgamal làm việc với nhóm Cyclic hữu hạn. Năm 1978, Kobliz đã đưa một hệ trên ECC dựa trên hệ Elgamal. Để xây dựng hệ mã hoá dựa trên đường cong elliptic 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 khoá bí mật nA là một số nguyên, và sinh khoá công khai PA = nA * G.

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

 Thuật toán mã hoá

Giả sử người dùng A muốn gửi thông điệp cần mã hoá 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ã hoá Cm được tính như sau:

Cm = {k * G, Pm + k * PB }

(PB là khoá công khai của B)

 Thuật toán giải mã

Để giải mã thông điệp Cm = { k * G, Pm + k * PB }, người dùng B thực hiện tính

như sau:

Pm + k * PB – nB * k * G = Pm + k * PB – k * nB * G = Pm + k * PB - k * PB = Pm

Chỉ có B mới có thể giải mã vì B có nB (là khoá bí mật). Chú ý rằng ở đây Pm là

một điểm thuộc đường cong elliptic, quá trình mã hoá giải mã được thực hiện trên các điểm thuộc đường cong E. Trong thực tế, để sử dụng được người ta phải tương ứng một số với một điểm thuộc đường cong elliptic. Khi đó mỗi thông điệp cần mã hoá sẽ tương ứng với một dãy số. Mỗi số sẽ tương ứng với một điểm trên đường cong elliptic.

Tính bảo mật : Nếu kẻ tấn công giữa đường, Oscar, có thể giải bài toán EDLP thì anh ta có thể biết được khoá bí mật từ nB của B từ các thông tin công

(39)

khai G và nBG, và có thể giải mã thông điệp mà A gửi. Như vậy độ an toàn (bảo

mật) của thuật toán trên dựa vào độ khó của bài toán EDLP.

2.2.6. Hệ mật dựa trên đường cong elliptic

ECC thực hiện việc mã hoá và giải mã dựa trên toạ độ của các điểm dựa trên đường cong Elliptic. Xét đẳng thức Q=kP, với Q,P là các điểm nằm trên đường cong Elliptic. Có thể khá dễ dàng tính Q nếu biết k và P, nhưng rất khó xác định k nếu biết Q và P. (Phép nhân được xác định bằng cách cộng liên tiếp cùng điểm P. Ví dụ: 4P = P+P+P+P ; 9P = 2(2(2P)) + P). Hệ mật dựa trên đường cong Elliptic dựa trên độ khó khi biết được điểm P và Q và phải tìm ra giá trị k. Bên cạnh công thức của đường cong Elliptic, thì một thông số quan trọng khác của đường cong Elliptic là điểm G (còn gọi là điểm cơ sở), điểm G đối với mỗi đường cong elliptic là cố định, trong hệ mật mã ECC thì một số nguyên lớn k đóng vai trò như một khoá riêng, trong khi đó kết quả của phép nhân giữa k với điểm G được coi như là khoá công khai tương ứng.

Việc trao đổi khoá theo Diffie Hellman dựa trên đường cong Elliptic (ECDH – Elliptic Curve Diffie Hellman) và thuật toán chữ ký số dựa trên đường cong Elliptic (ECDSA - Elliptic Curve Digital Signature Algorithm) là những ứng dụng cụ thể của đường cong Elliptic trong lĩnh vực mật mã. Trong trao đổi khoá ECDH, hai bên A và B sử dụng các tham số đường cong Elliptic giống nhau. Mỗi bên tạo ra khoá riêng kA và kB và tạo ra các khoá công khai QA=kAG

và QB=kBG. hai bên trao đổi khoá công khai và nhân khoá riêng của nó với khoá

công khai của bên kia, điều này dẫn đến thông tin mật được chia sẻ kAQB = kBQA = kAkBG. Còn ECDSA hoàn toàn tương tự như DSA.

2.2.7. Giao thức SSL (Secure Sockets Layer)

Giao thức SSL (Secure Sockets Layer) là giao thức an toàn được sử dụng rộng rãi nhất trên Internet hiện nay. SSL là giao thức dùng để thiết lập bảo mật giữa server và client. SSL mã hoá tất cả dữ liệu truyền qua lại giữa chủ và khách ở mức IP sockets.

SSL thực hiện mã hoá, xác định quyền và bảo vệ thông tin toàn vẹn khi trao đổi dữ liệu trong một môi trường mạng vốn có nhiều người dùng và không an toàn.

(40)

Hai thành phần chính của ECC là giao thức bắt tay SSLHP (SSL Handshake protocol) và giao thức lớp ghi SSLRP (SSL Record Layer protocol). SSLHP cho phép server và client thực hiện thoả thuận về bộ mã sử dụng, xác nhận lẫn nhau và thiết lập một khoá chính chia sẻ (thường sử dụng các thuật toán mã hoá công khai). SSLRP được xuất phát từ khoá chính chia sẻ và sử dụng chúng cùng với các thuật toán công khai để mã hoá các dữ liệu.

2.2.7.1. Quá trình bắt tay đầy đủ dựa vào mã hoá RSA

Hình 2.9 : Quá trình bắt tay dựa vào RSA

Quá trình bắt tay dựa vào RSA của nó được mô tả qua Hình 2.3

Đầu tiên, client gửi một bản tin ngẫu nhiên tới server để thoả thuận bộ mật mã hoá thông qua việc trao đổi các bản tin ClientHello và ServerHello.Sau đó, server sẽ gửi lại khoá công khai RSA cho client trong bản tin ServerCertificate. Do client cũng có khoá công khai của server; nó sẽ kiểm tra

(41)

mã hoá một số ngẫu nhiên 48 byte (còn được gọi là premaster). Số sau khi được mã hoá sẽ được gửi kèm bản tin ClientKeyExchange tới server. Server sẽ dùng khoá mật RSA để giải mã bản tin premaster này. Cả hai phía sẽ sử dụng bản tin premaster để tạo ra bản tin master đồng thời với việc trao đổi bản tin lúc đầu trước đó sẽ được dùng để trao đổi khoá mã hoá; vector khởi đầu và khoá MAC (Message Authentication Code) nhằm phục vụ cho mã hoá và chứng thực bởi SSLRP.

2.2.7.2. Quá trình bắt tay đầy đủ dựa vào mã hoá ECC

Hình 2.10: Quá trình bắt tay dựa vào EEC

Quá trình bắt tay dựa vào ECC được thể hiện thông qua Hình 2.

Thông qua hai bản tin đầu (được xử lí giống như RSA); client và server thoả thuận bộ khoá mật ECC. Bản tin ServerCertificate chứa khoá ECDH công khai của server được xác nhận bởi một nhà cấp quyền ECDSA. Sau khi đã chứng thực chữ kí ECDSA, client sẽ chuyển khoá chung ECDH của nó tới server thông qua bản tin ClientKeyExchange. Tiếp theo, mỗi bên lại sử dụng

(42)

khoá riêng ECDH của chính nó và khoá chung của bên kia để thực hiện mã hoá và giải mã ECDH và đạt đến việc chia sẻ một khoá mật premaster secret. Việc kế thừa khoá mật chính và khoá đối xứng không thay đổi so với RSA.

2.2.7.3. Mã hóa công khai trong SSL trong hai chế độ

Hoạt động mã hoá công khai trong SSL được thực hiện bởi một client và server trong các chế độ khác nhau của quá trình bắt tay SSL như sau:

 Bắt tay dựa vào RSA: client thực hiện hai hoạt động mã hoá công khai: một để kiểm chứng việc chứng thực của server và một để mã hoá các khoá mật premaster với khoá công khai của server. Server thực hiện một hoạt động với khoá mật RSA để giải mã bản tin ClientKeyExchange và khôi phục lại premaster.

 Bắt tay dựa vào ECDH-ECDSA: client thực hiện chứng thực ECDSA để kiểm chứng lại chứng thực của server và sau đó thực hiện ECDH bằng việc sử dụng khoá riêng ECDH và khoá chung ECDH của server để tính ra premaster chia sẻ. Tất cả các server cần thực hiện cùng một hoạt động ECDH để thu được mã mật tương ứng.

2.2.7.4. So sánh

Để thực hiện việc so sánh việc sử dụng RSA và ECC trong quá trình bắt tay của SSL, người ta sử dụng hai bộ mã khác nhau

TLS_RSA_WITH_RC4_128_SHA và

TLS_ECDH_ECDSA_WITH_RC4_128_SHA. Với mỗi bộ mã người ta sử dụng ba cấp độ an ninh khác nhau. Đối với RSA người ta sử dụng khoá có độ dài 1024 bit, 1536 bit và 1048 bit, Với ECC sử dụng khoá có độ dài 160 bit, 192 bit và 224 bit. Người ta sử dụng một công cụ để thực hiện nhiều phiên giao dịch đồng thời một lúc nhằm đo hai thông số trên một server. Và kết quả được thể hiện ở bảng 1.

(43)

Bảng 1: So sánh sử dụng RSA và ECC trong quá trình bắt tay của SSL ECC-160 RSA-1024 ECC-192 RSA-1536 ECC-224 RSA-2048 Thời gian(ms) 3.69 8.75 3.87 27.47 5.12 56.18 Số lệnh thực hiện / s 271.3 114.3 258.1 36.4 195.5 17.8 So sánh thời gian thực hiện 2.4:1 7.1:1 11:1 So sánh độ dài khoá 1:6.4 1:8 1:9.1

Việc sử dụng ECC mang lại những hiệu quả sau: tăng tốc độ, yêu cầu khả năng tính toán thấp hơn, tiết kiệm dải thông đường truyền, tăng hiệu quả lưu trữ, giảm độ dài các chứng nhận…Các ưu điểm trên của hệ mật ECC có thể phát huy hiệu quả trong các ứng dụng mà đường truyền, khả năng tính toán, tốc độ và lưu trữ bị hạn chế. Và các ứng dụng đó được thể hiện rất hiệu quả trong thương mại điện tử, web servers…

(44)

Chương III. MỘT VÀI ỨNG DỤNG HỆ MẬT TRÊN ĐƯỜNG

CONG ELLIPTIC

3.1. Lược đồ chữ ký số trên đường cong elliptic (Elliptic Curve

Signature Algorithm ) - ECDSA

3.1.1. Lược đồ ký ECDSA

Sơ đồ chữ ký ECDSA được xây dựng tương tự như sơ đồ chữ ký ElGamal tuy nhiên các thuật toán ký và thuật toán kiểm thử được xây dựng dựa trên đường cong Elliptic. Để thiết lập sơ đồ chữ ký ECDSA, cần xác định các tham số: lựa chọn đường cong E trên trường hữu hạn Fq với đặc số p sao cho phù hợp và công khai cho tất cả mọi người, điểm cơ sở G∈ E(Fq).

Một số khuyến nghị khi lựa chọn các tham số:

 Kích thích q của trường, hoặc q = p (p>2) hoặc q= 2m.

 Hai phần tử a, b thuộc Fq xác định phương trình đường cong Elliptic: y2

= x3 + ax + b (p>2) hoặc y2 +xy = x3 +ax2 + b (p = 2).

 Hai phần tử xG và yG thuộc Fq xác định điểm cơ sở G = (xG, yG).

 Bậc n của điểm G với n> 2160 và n > 4 q.

Sinh khoá

 Chọn số ngẫu nhiên d trong khoảng [2, n-1 ] làm khoá bí mật  Tính Q = dG làm khoá công khai.

Thuật toán ký trên bản rõ m

Người dùng A ký lên thông điệp m theo các bước sau: 1. Chọn một số ngẫu nhiên k, 2≤ k ≤ n −1

2. Tính kG = (x1, y1).

3. Tính r = x1 mod n. Nếu r =0, quay lại bước 1.

Referências

Documentos relacionados

Aos 7 dias após a implantação foram observados os primeiros sinais de degradação da membrana (Figuras 2C,D), com aumento dos seus espaços interfibrilares e um intenso

O objetivo do presente trabalho foi analisar a diversidade genética, por meio de marcadores molecu- lares ISSR, entre 20 genótipos do gênero Citrus, repre- sentados

Pintura acrílica sobre massa Rodapé cerâmico Altura:.. Cerâmica em todas

Após a divulgação dos resultados da primeira fase de seleção, os candidatos têm um prazo de 10 dias úteis, após a divulgação, para se pronunciarem, querendo, em sede de

No entanto, apesar do potencial para eficácia de tratamento da depressão e da ansiedade, esses itens não costumam constar nos guias oficiais de tratamento (4, 46) nem ser avaliados

Como resultado do mapeamento das atividades diárias e da definição das atividades definidas como críticas ao trabalho dos colaboradores avaliados, foram

Alterações psíquicas e do Sistema Nervoso Central (SNC): Em alguns pacientes foram observados efeitos graves no SNC, em particular depressão, ideação suicida e tentativa de

(iv) Preparar os alunos para utilizarem as ferramentas informáticas disponíveis nos Sistemas de Gestão de Bases de Dados de modelo relacional, ou SGBDr, para prototipificação