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
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
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
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
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
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
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
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.
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.
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.
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
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
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
= := 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
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);
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))
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;
> (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 đó:
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);
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
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
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ế.
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ìnhy2 = 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
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) / 2y1, , 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
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.
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
qViệ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 .
Đị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
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.
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
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+bkhô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:
P+ O = O +P = P với mọi điểm P
∈
E2. 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:
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
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
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.
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ị
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ínhbB
∈
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 Fpr2.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
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.
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
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
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.
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…
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.