Luận văn thực hiện nghiên cứu lý thuyết trường hữu hạn, tổng quan về các hệ mật mã hóa khóa công khai và thuật toán chữ ký số. Từ đó, dựa trên những ưu điểm của hệ mật đường cong elliptic được áp dụng trong thuật toán chữ ký số, luận văn thực hiện nghiên cứu, phân tích các vấn đề an ninh của thuật toán chữ ký số trên đường cong elliptic và đưa ra lược đồ thực hiện thuật toán trên các thiết bị có tài nguyên hạn chế.
Trang 1NGHIÊN CỨU THUẬT TOÁN CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC
Trang 2Trang phụ bìa
Bản cam đoan
Mục lục
Tóm tắt luận văn
Danh mục các ký hiệu, viết tắt, các bảng, các hình vẽ
LỜI MỞ ĐẦU 1
CHƯƠNG 1: MẬT MÃ KHÓA CÔNG KHAI VÀ CHỮ KÝ SỐ 3
1.1 Mật mã khóa công khai 3
1.1.1 Thuật toán mã hóa khóa công khai 6
1.1.2 Các yêu cầu đối với mật mã khóa công khai 8
1.1.3 Các ứng dụng sử dụng mật mã khóa công khai 9
1.1.4 Ưu điểm của mật mã khóa công khai 10
1.2 Một số hệ mật mã khóa công khai quan trọng 10
1.2.1 Thuật toán Diffie-Hellman 11
1.2.2 Mật mã khóa công khai RSA 13
1.2.3 Mật mã khóa công khai ElGamal 16
1.3 Chữ ký số 20
1.3.1 Lược đồ chữ ký số 20
1.3.2 Phân loại lược đồ chữ ký số 22
1.3.3 Thuật toán chữ ký số (DSA) 23
1.3.4 Ưu điểm của chữ ký số 26
1.4 Kết luận chương 27
CHƯƠNG 2: HỆ MẬT DỰA TRÊN ĐƯỜNG CONG ELLIPTIC 28
2.1 Cơ sở toán học 28
2.1.1 Trường hữu hạn 28
Trang 32.2 Hệ mật trên đường cong Elliptic (ECC) 36
2.3 Vấn đề logarit rời rạc trên đường cong elliptic (ECDLP) 37
2.3.1 Tấn công Pohlig-Hellman 38
2.3.2 Tấn công Pollard’s rho 39
2.4 Kết luận chương 42
CHƯƠNG 3: XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC 44
3.1 Thuật toán chữ ký số trên đường cong elliptic 44
3.1.1 Các tham số miền ECDSA 44
3.1.2 Tạo và xác minh một đường cong elliptic ngẫu nhiên 46
3.1.3 Tạo miền tham số 51
3.1.4 Xác minh tham số miền 54
3.1.5 Cặp khóa ECDSA 56
3.1.6 Tính toán chữ ký ECDSA 58
3.2 Phân tích tính bảo mật 61
3.2.1 Vấn đề logarit rời rạc trên đường cong elliptic (ECDLP) 62
3.2.2 Các tấn công lên hàm băm 64
3.2.3 Các tấn công khác 66
3.3 Đề xuất ứng dụng với thiết bị có tài nguyên hạn chế 68
3.4 Kết luận chương 70
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 74
Trang 4Nghiên cứu thuật toán chữ ký số trên đường cong elliptic
Tóm tắt:
Luận văn thực hiện nghiên cứu lý thuyết trường hữu hạn, tổng quan về các hệ mật mã hóa khóa công khai và thuật toán chữ ký số Từ đó, dựa trên những ưu điểm của hệ mật đường cong elliptic được áp dụng trong thuật toán chữ ký số, luận văn thực hiện nghiên cứu, phân tích các vấn đề an ninh của thuật toán chữ ký số trên đường cong elliptic và đưa ra lược đồ thực hiện thuật toán trên các thiết bị có tài nguyên hạn chế
Trang 5Hình 1.1 Mật mã khóa công khai 5
Hình 1.2 Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực 8 Hình 1 3 Lược đồ trao đổi khóa Diffie-Hellman 13
Hình 1.4 Mô hình mã hóa/giải mã mật mã khóa công khai RSA 15
Hình 1.5: Lưu đồ mã hóa ElGamal 17
Hình 1 6: Lưu đồ ký ElGamal 19
Hình 1 7: Lược đồ chữ ký số DSA 24
Hình 2.1: Mô tả hình học của phép cộng hai điểm khác nhau trên đường cong elliptic: P + Q = R 32
Hình 2.2: Mô tả hình học của việc gấp đôi một điểm trên đường cong elliptic: P + P = R 33
Hình 2.3 Giới hạn chuỗi {Xi} trong thuật toán Pollard’s rho, trong đó t = độ dài đuôi và s = độ dài chu kỳ 41
Trang 6Bảng 3 1 Thuật toán snh chữ ký số ECDSA 59 Bảng 3 2 Thuật toán xác thực chữ ký số ECDSA 60
Trang 7Ký hiệu Tiếng Anh Tiếng Việt
ANSI American National Standard
Institute
Tổ chức tiêu chuẩn quốc gia Hoa Kỳ
DLP Discrete Logarithm Problem Vấn đề logarit rời rạc
DSA Digital Signature Algorithm Thuật toán chữ ký số
DSKS Duplicate-signature Key
Selection
Việc lựa chọn khóa bản sao chữ ký
DSS Digital Signature Standard Chuẩn chữ ký số
ECC Elliptic Curve Cryptography Mật mã hóa đường cong
elliptic ECDSA Elliptic Curve Digital Signature
gần NIST National Institute of Standards
and Technology
Tổ chức quốc gia về các tiêu chuẩn và công nghệ
Trang 9LỜI MỞ ĐẦU Ngày nay, sự phát triển của khoa học công nghệ thông tin và truyền thông
đã làm cho việc trao đổi, học hỏi thông tin trở nên không còn bị ảnh hưởng quá nhiều bởi khoảng cách về địa lý nữa Nhưng khi việc trao đổi thông tin trong một môi trường mở như thế lại là điều kiện thuận lợi cho các kẻ phá hoại có thể
dễ dàng đánh cắp và thay đổi thông tin Chính vì vậy, yêu cầu đặt ra khi trao đổi thông tin trong môi trường mở như thế đó là phải có tính an toàn và xác thực
Sự ra đời của các hệ mật mã hóa chính là nhằm đảm bảo an toàn thông tin trong quá trình trao đổi, nhất là sự ra đời của các hệ mật mã hóa công khai
đã tạo ra bước đột phá trong việc xác thực thông tin Diffie và Hellman chính
là những người đi tiên phong trong lĩnh vực mật mã khóa công khai với sự ra đời của thuật toán trao đổi khóa Sau đó là sự ra đời của hàng loạt các hệ mật
mã hóa khác như RSA, Elgamal, ECC… Và các hệ mật này đóng vai trò quan trọng trong thuật toán chữ ký số nhằm đảm bảo an toàn và tính xác thực của thông tin
Trong các hệ mật mã hóa khóa công khai thì hệ mật đường cong Elliptic (ECC) được cho là một hệ mật có độ bảo mật cao và an toàn hơn nhiều so với các thuật toán mật mã hóa khác Nó được ứng dụng trong rất nhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới Với các đặc tính của nó thì nó là thuật toán mà được áp dụng phổ biến nhất trên cá thiết bị có tài nguyên hạn chế như trong các thẻ NFC, RFID,… các thiết bị này có thể nói là phổ biến trong cuộc sống ngày nay và cũng yêu cầu các thuật toán xác thực an toàn và hiệu quả
Luận văn với tên gọi “Nghiên cứu thuật toán chữ ký số trên đường cong elliptic” với mục đích chính là nghiên cứu thuật toán chữ ký số trên đường cong elliptic (ECDSA), và dựa trên những ưu điểm của thuật toán này để đưa ra đề
Trang 10xuất cho việc áp dụng thuật toán trên thiết bị có tài nguyên hạn chế như trong các thẻ NFC, RFID,… Với mục tiêu trên, luận văn có bố cục như sau:
- Chương 1 - “Mật mã khóa công khai và chữ ký số”: Trong chương này, luận văn sẽ đi vào trình bày tổng quan về hệ mật mã khóa công khai và thuật toán chữ ký số
- Chương 2 - “Hệ mật dựa trên đường cong elliptic”: sẽ mang đến cho người đọc lý thuyết về đường cong elliptic và hệ mật dựa trên đường cong elliptic
- Chương 3 - “Xây dựng lược đồ chữ ký số trên đường cong elliptic”: dựa vào lý thuyết elliptic và hệ mật đường cong elliptic để trình bày lược đồ chữ ký số dựa trên đường cong elliptic và đề xuất ứng dụng thuật toán trên các thiết bị có tài nguyên hạn chế
Trang 11CHƯƠNG 1: MẬT MÃ KHÓA CÔNG KHAI VÀ CHỮ KÝ SỐ 1.1 Mật mã khóa công khai
Ý tưởng về mật mã khóa công khai được Diffie và Hellman đưa ra vào năm 1976 là hệ mật mã đối xứng Thuật toán mật mã khóa công khai dựa trên một khóa cho việc mã hóa và một mã khác cho việc giải mã Hay nói cách khác mật mã khóa công khai có tính chất bất đối xứng, nó bao gồm việc sử dụng hai khóa riêng biệt tương phản với mã hóa khóa đối xứng là chỉ có một khóa Việc
sử dụng hai khóa là quan trọng trong lĩnh vực cần tính bí mật và chứng thực
Sự phát triển của mật mã khóa công khai đóng một vai trò rất lớn và tạo ra một cuộc cách mạng trong kỹ thuật mật mã Trong đó, những giải thuật khóa công khai đều dựa trên những hàm toán học hơn là những phép thay thế và chuyển
vị trong những hệ mật mã cổ điển
Khái niệm mật mã khóa công khai đã tạo ra sự cố gắng để giải quyết hai vấn đề khó khăn nhất trong mã hóa quy ước đó là sự phân bố khóa và chữ ký số:
• Trong mã hóa quy ước sự phân bố khóa yêu cầu hai hoặc nhiều người truyền thông cùng tham gia một khóa mà bằng cách nào đó đã được phân bố với họ hoặc sử dụng một trung tâm phân phối khóa
• Nếu mật mã đã trở nên phổ biến thì những bản tin và tài liệu điện tử
sẽ cần những chữ ký tương đương mà đã sử dụng trong các tài liệu giấy Tức là một phương pháp có thể được nghĩ ra có quy định làm hài lòng tất cả những người dùng tham gia khi một đoạn tin số được gửi
đi bởi một cá nhân nào đó hay không
Những thuật toán mật mã khóa công khai có các đặc điểm sau [7]:
• Việc tính toán là không khả thi để giải mã khi mà chỉ dựa vào thuật toán mã hóa và khóa mã hóa
Trang 12• Một trong hai khóa có liên quan đến nhau được dùng để mã hóa, còn khóa còn lại thì được dùng để giải mã
Trong mật mã khóa công khai, tất cả những người tham gia đều được truy cập để biết khóa công khai của nhau, và khóa riêng là chỉ được tạo bởi mỗi cá nhân và do đó khóa riêng cần phải được giữ kín Khi nào khóa riêng của người dùng còn được bảo vệ bí mật, thông tin trao đổi là an toàn Tại bất kì thời điểm nào, một hệ thống có thể thay đổi khóa riêng của nó và đưa ra khóa công khai khác để thay thể khóa cũ của nó
Mật mã hóa công khai có thể được ứng dụng trong bảo mật truyền tin và chứng thực:
• Bảo mật trong truyền tin: bên A sẽ dùng khóa công khai của bên B để
mã hóa bản tin, bản mã này sẽ chỉ có thể giải được bằng khóa riêng của bên B (hình 1.1 a)
• Chứng thực: bên A kí lên tin cần gửi bằng cách mã hóa với khóa bí mật của A và gửi bản tin này cho B Khi B muốn kiểm tra tính tin cậy của tin nhận được, B chỉ việc kiểm tra bàng việc dùng khóa công khai của A để giải mã bản tin, nếu giải mã đúng thì bản tín đáng tin cậy (hình 1.1 b)
Trang 13a) Mã hóa với khóa công khai
b) Chứng thực với khóa riêng
Hình 1.1 Mật mã khóa công khai [7]
Trang 141.1.1 Thuật toán mã hóa khóa công khai
a Các bước tiến hành trong quá trình mã hóa khóa công khai
(i) Mỗi người dùng tạo một cặp khóa để dùng cho mã hóa và giải mã (ii) Mỗi hệ thống công bố rộng rãi khóa mã bằng cách đặt khóa vào một thanh ghi hay một file công khai Đây chính là khóa công khai, khóa còn lại được giữ riêng và bí mật
(iii) A muốn gửi cho B thì A phải mã hóa bản tin bằng khóa công khai của
B rồi gửi cho B, vì chỉ có B mới có khóa riêng được dùng để giải mã bản tin Khi A đã mã hóa bản tin bởi khóa công khai của B thì ngay cả
A cũng không thể giải mã được bản mã này khi chỉ biết khóa công khai của B
(iv) Khi B nhận được bản tin đã mã hóa từ A, B giải mã bằng khóa riêng của mình Không ai có thể giải mã được bản mã này bởi chỉ có B mới
có khóa riêng
b Mô hình đảm bảo tính tin cậy
Trong mô hình đảm bảo tính tin cậy, người nhận B sinh ra một cặp khóa: khóa công khai PUB và khóa riêng PRB Khóa công khai PUB được công bố cho tất cả các người dùng khác được biết, còn khóa riêng PRB thì chỉ có B mới biết Khi người A muốn gửi bản tin cho B, A sẽ dùng khóa công khai của người nhận
B để mã hóa Chỉ có B sử dụng khóa riêng PRB của mình để giải mã bản tin được
Với bản tin X và khóa PUB, người dùng A dùng một thuật toán mã hóa
E để tạo ra bản mã Y = {Y1,Y2,…,YN}:
Y = E(X,PUB) Người nhận B dùng thuật toán D để tạo lại bản tin X:
Trang 15Mô hình mật mã này không đảm bảo được tính tin cậy vì bản tin truyền
đi mặc dù không thể bị thay thế (không ai có thể mã hóa bằng một khóa khác
mà dùng khóa công khai của A giải mã ra bản tin có nghĩa được), nhưng bất kì
ai cũng có thể dùng khóa công khai của A để giải mã và đọc được bản tin này
Đê có thể đảm bảo được cả tính tin cậy thì phải sử dụng hai lớp mã hóa Người gửi A mã hóa bản tin dùng khóa riêng của mình là PRA để mã hóa bản tin của mình (tạo ra chữ ký số) Sau đó, dùng khóa công khai PUB của B để mã hóa lần hai cho bản mã đó Quá trình này yêu cầu bên nhận để giải mã được chính xác bản mã thì cần phải có hai khóa: khóa riêng PRB của B và khóa công khai PUA của A để giải mã
Trang 16E(X,PR A ) E(E(X,PR A ),PU B ) D(Z,PR B ) D(D(Z,PR B ),PU A )
Z
Bản rõ
X
Bản rõ X
• Nó phải được tính toán dễ dàng cho bên B để khởi tạo một cặp khóa (khóa công khai PUb, khóa riêng PRb)
• Nó phải tính toán dễ dàng cho bên gửi A, việc biết khóa công khai và bản tin M để mã hóa, để tạo ra từ mã tương ứng:
Trang 17• Việc tính toán là không thể đối với kẻ địch khi biết khóa công khai và bản mã để khôi phục bản tin gốc M
Trên đây là các yêu cầu bắt buộc, như dấu hiệu cho thấy rằng chỉ một vài thuật toán là được chấp nhận sử dụng phổ biến trong một vài thời kì từ khi mật
mã khóa công khai được đưa ra
Các yêu cầu được đúc rút lại để cần cho một hàm cửa sập một chiều Hàm một chiều là một hàm tương tự như mỗi hàm có một giá trị nghịch đảo duy nhất, với điều kiện phép tính của hàm là dễ dàng, nhưng trái lại phép tính nghịch đảo là không thể:
Y = f(x) là dễ
X = f-1(Y) là không thể tính được
Nói cách khác, “dễ dàng” ở đây được xác đinh bởi một bài toán là nó có thể giải quyết được trong một thời gian nhất định (có tính khả thi) Nếu hàm chiều dài đầu vào là n bit thì thời gian để tính tỉ lệ với na (a là hằng số) Nhằm đảm bảo tính bảo mật, người a sử dụng khóa có kích thước đủ lớn (thường là hàng trăm chữ số thập phân)
1.1.3 Các ứng dụng sử dụng mật mã khóa công khai
Tùy vào từng ứng dụng mà các người dùng có thể sử dụng hoặc khóa riêng của mình hoặc khóa công khai của người nhận, hoặc cả hai khóa để thực hiện một số ứng dụng sau đây:
(i) Giữ bí mật bản tin giữa hai bên: người gửi mã hóa bản tin bằng khóa công khai của người nhận, người nhận dùng khóa riêng của mình để giải mã
(ii) Chữ ký số: người gửi mã hóa đoạn tên (ký tên / xác thực) bằng khóa riêng của mình, người nhận dùng khóa công khai của người gửi để giải
Trang 18mã bản tin Chữ ký được áp dụng tới đoạn tin hay với một khối dữ liệu nhỏ mà được liên kết trong một số phương thức với đoạn tin
(iii) Trao đổi khóa: người gửi mã hóa bản tin hai lần, lần một là mã hóa bản tin bằng khóa riêng của mình, lần hai là mã hóa liên tiếp bản mã đã được mã trong lần một bằng khóa công khai của người nhận Người nhận giải mã bằng khóa riêng của mình, sau đó dùng khóa công khai của người gửi để giải mã
1.1.4 Ưu điểm của mật mã khóa công khai
Ưu điểm nổi bật của mật mã khóa công khai so với mật mã khóa bí mật
là khóa có thể công bố công khai, không cần phải có một kênh liên lạc bí mật
để truyền khóa Người dùng có thể công bố khóa công khai của mình trên một trang công khai tin cậy nào đó cùng với các người dùng khác để có thể công bố cho mọi người dùng khác biết Bất kỳ người dùng nào cũng có thể dùng khóa công khai của bạn để mã hóa bản tin và gửi cho người nhận và chỉ có người nhận mới có thể đọc được chính xác bản tin đó (vì chỉ người nhận mới có khóa
để giải mã bản mã đó) Mật mã khóa công khai ngoài việc mã hóa, trao đổi bản tin, xác thực còn được dùng làm chữ ký số
1.2 Một số hệ mật mã khóa công khai quan trọng
Theo [3], chỉ một vài thuật toán mã hóa khóa công khai là an toàn và thực tiễn Trong số đó, chỉ một số loại là thích hợp cho việc mã hóa Số khác chỉ thích hợp cho chữ kí số Trong số các thuật toán mã hóa khóa công khai, chỉ có 4 thuật toán là RSA (1978), ElGamal (1985), Schorr (1990) và ECC (1985) là được xem là thích hợp cho cả mã hóa và chữ ký số Một số thuật toán
mã hóa khóa công khai khác được thiết kế để chỉ thích hợp cho an toàn chữ kí
số là DSA (1991) Trong mục này, luận văn sẽ trình bày một số hệ mật mã khóa
Trang 19công khai nổi tiếng như Diffie-Hellman, RSA, ElGama và thuật toán mật mã đường cong Elliptic (ECC) sẽ được luận văn đề cập đến trong chương 2 1.2.1 Thuật toán Diffie-Hellman
Thuật toán Diffe-Hellman được đưa ra vào năm 1976 Thuật toán này sử dụng phép tính lũy thừa mô-đun q (q là một số nguyên tố) như một thuật toán trao đổi khóa Phép tính lũy thừa có ưu điểm là dễ dàng tính toán trên trường hữu hạn GF(q) nhưng lại gặp rất nhiều khó khăn trong việc tính toán logarit trên trường hữu hạn GF(q)
Thuật toán Diffie-Hellman có thể được mô tả như sau:
Gọi q là một số nguyên tố và a là một phần tử nguyên tố với q Sau đó, tính lũy thừa của a có thể tạo tất cả các giá trị nguyên từ 1 đến (q – 1) theo một thứ tự nào đó Với bất kì số nguyên Y được tạo bởi a mũ X được biểu diễn như sau:
Y º aX mod q Trong đó, 1 £ X £ q – 1
Sau đó, để có thể xác định được X thì phép tính logarit rời rạc theo a trên GF(q) là cần thiết:
Yi º aXi mod q
Trang 20đến người dùng j Tương tự, người dùng j cũng gửi đi:
Yj º aXj mod q đến người dùng i
Thật vậy, cả hai người dùng i và j đã trao đổi một khóa bí mật từ Xi và
Xj là riêng, các tham số công khai là (q, a, Yi, Yj) Do đó, kẻ tấn công buộc phải thực hiện phép tính logarit rời rạc, điều mà được cho là không thực tế, khi
mà số nguyên tố là rất lớn
Khi sử dụng trường hữu hạn GF(q), trong đó q là một số nguyên tố hay
q = pk (p là số nguyên tố, k là một số nguyên), là cần thiết để chắc chắn tham
số q – 1 là một số nguyên tố lớn, ngược lại thì nó có thể dễ dàng để có thể tính được phép tính logarit rời rạc trên trường GF(q)
Đây là thuật toán tiên phong trong việc sử dụng thuật toán trao đổi khóa
và là sơ khai của hệ mật mã khóa công khai sau này
Trang 21Tạo số nguyên ngẫu nhiên bí
Hình 1 3 Lược đồ trao đổi khóa Diffie-Hellman [3]
1.2.2 Mật mã khóa công khai RSA
Thuật toán RSA được phát minh bởi Rivest, Schamir và Adleman vào năm 1976, nó là thuật toán mã hóa khóa công khai đầu tiên và dựa trên thuật toán Diffie-Hellman Thuật toán RSA sử dụng hai khóa: khóa công khai và khóa riêng Mỗi người dùng sẽ giữ cho mình một khóa riêng và khóa này là bí mật Nếu khóa này sử dụng cho việc mã hóa thì khóa còn lại được sử dụng cho việc giải mã, bản tin đã bị mã hóa chỉ có thể được giải mã bằng khóa còn lại và ngược lại
Trang 22Theo [1], cơ sở thuật toán dựa trên tính khó của bài toán phân tích các số lớn thành tích các thừa số nguyên tố: không tồn tại thuật toán thời gian đa thức (theo độ dài biểu diễn nhị phân của số đó) cho bài toán này Chẳng hạn, việc phân tích một số là tích của 2 số nguyên tó lớn hàng trăm chữ số có thể sẽ mất hàng ngàn năm tính toán với một máy PC trung bình có CPU khoảng trên 2Ghz
Thuật toán RSA được mô tả như sau:
Cho một khóa côn khai e và mô-đun n, khóa riêng d được sử dụng cho việc giải mã phải được tìm dựa trên n Chọn hai số nguyên tố lớn p và q, và tìm mô-đun n được tìm bằng việc thực hiện phép nhân p và q:
n = p.q chọn khóa mã hóa e mà e và (n) là nguyên tố với nhau, nghĩa là gcd(e,(n)) =
1, trong đó (n) = (q – 1)(p – 1) được gọi là hàm Euler
Sử dụng thuật toán euclid, khóa riêng d thực hiện cho việc giải mã có thể được tính toán bằng việc thực hiện phép tính nghịch đảo của e:
d º e-1 mod (n) hoặc ed º 1 mod (n)
Khóa giải mã d và n là có quan hệ nguyên tố với nhau Các số e và n được gọi là các khóa công khai, trong khi đó d được gọi là khóa riêng
Để thực hiện mã hóa bản tin m, từ mã c tương đương với khối tin tức có thể được tìm thấy sử dụng theo công thức mã hóa sau:
c º me mod n
Để giải mã bản tin này, từ mã c được tính lũy thừa d mô-đun n để có thể khôi phục được bản tin m như sau:
m º cd (mod n) º med (mod n) º m (mod n)
do ed º 1 (mod (n)) theo định lý Euler
Trang 23Hình 1.4 Mô hình mã hóa/giải mã mật mã khóa công khai RSA [3] Thuật toán RSA
Xây dựng: Chọn các tham số
1 Chọn hai số nguyên tố lớn p và q Tính n = p.q và (n) = (p – 1)(q – 1)
2 Chọn e, 1 £ e £ (n) – 1 sao cho gcd(e, (n)) = 1
3 Tìm d sao cho e.d = 1 (mod (n))
Khóa công khai (PUb) là (e, n)
Trang 24Để mã hóa một chuỗi nhị phân, ta phải bẻ ra thành nhiều đoạn có độ dài
u bit, sao cho 2u £ 142 u = 7 Mỗi đoạn như vậy sẽ là một số nằm trong khoảng 0-127
Giả sử, ta cần mã hóa bản tin X = (0000010) = 2, ta có:
E(X) = X37 = 12 (mod 143) Y = (00001100)
Giải mã như sau:
X = D(Y) = 1213 = 2 (mod 143)
1.2.3 Mật mã khóa công khai ElGamal
Thuật toán ElGamal có thể được dùng cho cả mã hóa và chữ ký số An ninh của mô hình ElGamal dựa vào độ khó của phép tính logarit rời rạc trên GF(q), trong đó q là một số nguyên tố lớn
Để mô tả hệ thống ElGamal, ta chọn một số nguyên tố lớn p và hai số ngẫu nhiên g và x thỏa mãn g < p và x < p, tại đó x là khóa riêng Số ngẫu nhiên
g là một số có căn hai nguyên tố với p Khóa công khai được xác định bởi (y,
g, p) Sau đó, ta thực hiện phép tính y º gx (mod p) Để mã hóa bản tin m, 0 <
m £ p – 1, đầu tiên đặt một số ngẫu nhiên k sao cho gcd(k, p – 1) = 1 Bản tin
đã được mã hóa có thể được thực nhiện nhanh bởi cặp (r, s) như sau:
Trang 25mở rộng để tìm s Kĩ thuật cơ bản cho việc mã hóa và kí sử dụng thuật toán ElGamal như một hệ thống mật mã được mô tả như sau:
a Mã hóa ElGamal
Để tạo một cặp khóa, đầu tiên chọn một số nguyên tố p và hai số ngẫu nhiên g và x sao cho g, x < p Sau đó tính:
y º gx (mod p) Khóa công khai là (y, g, p) và khóa riêng là x < p
Để mã hóa bản tin m, 0 £ m £ p – 1, ta chọn một số ngẫu nhiên k sao cho gcd(k, p – 1) = 1 Bản tin đã được mã hóa được tạo theo cặp (r, s):
r º gk (mod p)
s º ykm (mod p) Chú ý: kích thước của bản mã là gấp đôi kích thước của bản tin Để giải
mã bản tin, ta thực hiện phép chia s cho rx được biểu diễn như sau:
rx º (gk)x (mod p) s/rx º ykm/(gk)x º (gx)km/(gk)x º m (mod p – 1)
Hình 1.5: Lưu đồ mã hóa ElGamal [3]
Trang 26Ví dụ 1.2: p = 11, g = 3, x = 6 Ta được y = gx = 36 = 3 (mod 11) Khóa công khai là (p,g,y) = (11,3,3) còn khóa riêng là x = 6
Để mã hóa bản tin m = 6, ta chọn một số ngẫu nhiên k = 7 và tính:
r = gk = 37 = 9 (mod 11), s = 37.6 = 10 (mod 11) Bản mã là (r, s) = (9,10)
Để giải mã bản tin, dựa vào bản mã thu được (r,s) = (9,10) và khóa riêng
x = 6 ta giải mã như sau:
x là khóa riêng Để thực hiện kí lên bản tin m, ta chọn một số ngẫu nhiên
k sao cho gcd(k, p – 1) = 1 Sau đó ta thực hiện:
r º gk (mod p) Bản tin kí cho m là cặp (r, s), với s được xác định như sau:
gm º yrrs (mod p) = (gx)r(gk)s (mod p) = gxr+ks (mod p)
Trang 27Hình 1 6: Lưu đồ ký ElGamal [3]
Ví dụ 1.3: p = 11, g = 7, x = 3 ta tính y = gx (mod p) = 73 (mod 11) = 2 Ta được khóa công khai (p, g, y) = (11, 7, 2) Để xác thực bản tin m = 6, ta chọn một số ngẫu nhiên k = 7, ta được:
Trang 281.3 Chữ ký số
Trong trao đổi thông tin, thông tin được truyền đi giữa bên gửi và bên nhận cần có các tiêu chuẩn cần xác minh, đó chính là xác thực Chữ ký số ra đời với mục đích xác thực, chứng thực và chống chối bỏ Nó cung cấp một bộ phương tiện đầy đủ cho một thực thể để gắn kết dịnh danh của nó với thông tin Quá trình ký gây ra sự biến đổi về thông tin mà chỉ người ký mới có thể thực hiện được sự thay đổi đó và một số thông tin được giữ bí mật bởi thực thể thành một cái được gọi là chữ ký
Theo [2], chữ ký số không phải là hình ảnh số hóa của một chữ ký tay, cũng không phải là một số nhận dạng cá nhân hay một mật khẩu, mà là một bộ
dữ liệu đính kèm vào một thông điệp điện tử Dữ liệu đính kèm này là một bản tóm lược toán học của thông điệp, được tạo bằng cách sử dụng mật mã khóa công khai Do vậy, chữ ký số là khác biệt đối với mỗi người ký và mỗi thông điệp
Một chữ ký số phụ thuộc vào khóa riêng của người ký và nội dung của bản ký và khóa này phải được một bên thứ ba có tính pháp lý và được hai bên tin tưởng Các chữ ký số phải xác minh được, nghĩa là nếu như có tranh chấp xảy ra thì bên thứ ba có nhiệm vụ xác minh bản ký và giải quyết tranh chấp một cách công bằng mà không cần biết khóa riêng của người ký Các tranh chấp có thể nảy sinh khi một người cố chối bỏ một chữ ký mà mình đã tạo ra, hoặc khi
có một kẻ giả mạo đưa ra một chứng cứ gian lận
1.3.1 Lược đồ chữ ký số
Một lược đồ chữ ký số thường được dùng bởi một người ký (signer) và một tập hợp người xác minh Người ký bắt đầu bằng việc khởi tạo một vài thuật toán tạo khóa để cung cấp một cặp khóa (PU, PR), trong đó PU là khóa công khai, PR là khóa riêng Người ký sau đó sẽ công bố khóa công khai của mình,
Trang 29ta giả thiết rằng bất kỳ người xác minh nào cũng có thể sở hữu một bản sao chính xác của khóa công khai PU của người ký Ta có thể tưởng tượng rằng có một thư mục công khai mà có thể kết nối người ký đến khóa công khai của mình cũng như của những người khác và thư mục này được quản lý theo cách
mà nó không khả thi cho một người nào đó đăng ký một khóa công khai mà không phải của mình Tuy nhiên, nói chung sẽ có nhiều người ký, sở hữu khóa công khai của riêng họ, và vì vậy bất cứ người xác minh nào cũng phải biết không chỉ khóa công khai của mình mà còn phải biết khóa công khai thuộc về những người ký khác nữa mà chữ ký của họ cần phải được xác minh
Khi một người ký đã thiết lập một khóa công khai PU như trên, lược đồ chữ ký số cho phép người ký chứng thực (ký lên) một bản tin theo cách mà bất
kỳ người nào – người biết khóa công khai của người ký cũng có thể xác minh rằng nguồn gốc của bản tin từ người ký là vẫn chưa bị thay đổi bằng bất kỳ cách nào Cụ thể hơn, đối với bất kỳ bản tin m nào, người ký có thể áp dụng thuật toán ký lên m bằng khóa riêng PR của mình; việc này trả về một chữ ký
S có thể được xác minh bởi bất kỳ người nào biết khóa công khai và sử dụng khóa công khai để xác minh nó
Giả thiết rằng bất kỳ bên thứ ba nào cũng có thể sở hữu một bản sao hợp pháp khóa công khai của người ký, người ký có thể truyền tải ít nhất một bản tin tin vậy và được xác thực Vì vậy, ta có thể tự hỏi là tại sao lược đồ chữ ký
số là cần thiết cho tất cả? Vấn đề là việc phân phối tin cậy của khóa công khai
PU là một nhiệm vụ khó, nhưng việc sử dụng một lược đồ chữ ký cần chính là việc công bố ngay lập tức, sau đó một số không giới hạn các bản tin có thể gửi thường xuyên và tin cậy Xa hơn nữa, lược đồ chữ ký tự bản thân chúng được dùng để đảm bảo phân phối tin cậy các khóa công khai khác như một phần của
cơ sở hạ tầng khóa công khai
Trang 301.3.2 Phân loại lược đồ chữ ký số
Lược đồ chữ ký số bao gồm một thuật toán tạo chữ ký số và thuật toán xác minh chữ ký số tương ứng Thuật toán tạo chữ ký số là phương pháp tạo ra một chữ ký số Thuật toán xác minh chữ ký số là phương pháp để xác minh rằng một chữ ký số là đích thực (tức là thực sự đã được tạo bởi một thực thể nào đó)
Có hai loại lược đồ chữ ký số:
(i) Lược đồ chữ ký số kèm thông điệp (digital signature scheme with
appendix): Lược đồ này yêu cầu thông điệp nguồn như là đầu vào của thuật toán xác minh
(ii) Lược đồ chữ ký số khôi phục thông điệp (digital signature scheme
with message recovery): Lược đồ này không yêu cầu thông điệp nguồn nhu là đầu vào của thuật toán xác minh Trong trường hợp này, thông điệp nguồn được khôi phục lại từ bản thân chữ ký Các lược đồ chữ ký số cơ bản được phân theo bài toán khó là cơ sở cho
độ mật của chúng:
(i) Các lược đồ thừa số hóa số nguyên: lược đồ RSA, Rabin,… Độ an
toàn của các lược đồ này dựa trên độ khó giải của bài toán thừa số hóa số nguyên
(ii) Các lược đồ logarit rời rạc: sơ đồ ElGamal, Schnorr, DSA…Độ an
toàn của các lược đồ này dựa trên độ khó giải của bài toán logarit rời rạc trên một trường hữu hạn
(iii) Các lược đồ trên đường cong Elliptic: Lược đồ ECDSA,
ECKCDSA… Độ an toàn của các lược đồ này dựa trên độ khó giải của bài toán logarit rời rạc trên đường cong Elliptic (bài toán ECDLA)
Trang 31(iv) Các lược đồ khác: lược đồ Feige-Fiat-Shamir, GQ… các lược đồ
này dựa trên các bài toán khó khác
1.3.3 Thuật toán chữ ký số (DSA)
Vào năm 1991, viện tiêu chuẩn và công nghệ quốc gia (NIST) Mỹ đã đề xuất ra thuật toán chữ ký số (DSA) cho các ứng dụng chữ ký số liên bang Họ
đã đề xuất chuẩn chữ ký số (DSS) mới bằng việc sử dụng một lược đồ chữ ký khóa công khai để xác minh tính toàn vẹn thông tin của dữ liệu mà người nhận nhận được và nhận diện người gửi dữ liệu
DSA cung cấp các ứng dụng thẻ thông minh cho chữ ký số Khóa khởi tạo trên DSA là nhanh hơn trên RSA Việc tạo chữ ký có cùng tốc độ như RSA nhưng việc xác thực chữ ký là chậm hơn nhiều so với RSA
DSA dựa trên độ khó của việc tính toán logarit rời rạc và được bắt nguồn
từ lược đồ được biểu diễn bởi ElGamal và Schnorr Khóa công khai bao gồm
ba thông số (p,q,g) và được công bố chung cho nhóm người dùng Chọn q có
đô dài 160 bit và p có độ dài lớn hơn 512 và nhỏ hơn 1024 bit là số nguyên tố sao cho q là một thừa số nguyên tố của (p – 1) Tiếp theo, chọn g > 1 để h’(p –
1)/q (mod p) sao cho h’ là một số nguyên thuộc khoảng giữa 1 và p – 1
Với ba số này, mỗi người dùng chọn một khóa riêng x nào đó trong dải
1 < x < q – 1 và khóa công khai y được tính từ x:
y º gx (mod p)
Để xác định được x từ y thì ta phải thực hiện hàm logarit rời rạc y với cơ
sở g (mod p) là quá khó để tính ra
Để ký lên một bản tin m, người gửi phải tính hai thông số là (r,s) dựa vào các cặp số công khai (p,q,g) và khóa riêng x với bản rút gọn của bản tin m là H(m) và một số k ngẫu nhiên (k < q) Tại bên nhận, việc xác minh dựa vào
Trang 32khóa công khai y của người gửi để giải mã bản mã và đối chiếu với bản gốc được trích ra từ bản tin m (H(m))
Khi hàm hash một chiều H hoạt động trên một bản tin m với một độ dài bất kỳ, một bản tin rút gọc có độ dài cố định (mã hash) h có thể được thực hiện sao cho h = H(m) Bản tin rút gọn h đến đầu vào tính toán DSA để tính chữ ký cho bản tin m Việc ký lên bản rút gọn chính là việc ký lên bản tin thường tận dụng hiệu quả của việc xử lý chữ ký, vì bản tin rút gọn h thường có kích thước nhỏ hơn bản tin chính m rất nhiều SHA là an toàn vì nó được thiết kế để không thể tính toán để khôi phục một bản tin tương đương như bản rút gọn đã cho Bất kỳ sự thay đổi nào ở bản tin chính trong khi truyền sẽ đưa ra một kết quả bản tin rút gọn khác và chữ ký sẽ lỗi khi xác thực Cấu trúc của thuật toán DSA được mô tả như trong hình 1.7
Hình 1 7: Lược đồ chữ ký số DSA[3]
Thuật toán ký DSA [3]:
Trang 33(i) Tạo cặp khóa
p: là một số nguyên tố có độ dài từ 512 đến 1024 bit
g: là một thừa số nguyên tố của p – 1 có độ dài 160 bit
g º h’(p – 1)/q (mod p) > 1 và h’ < p – 1
(p,q,g): là các thông số công khai
x < q: khóa riêng có độ dài 160 bit
y º gx (mod p): khóa công khai có độ dài 160 bit
(ii) Thực hiện ký (bên gửi)
Ví dụ 1.4 [3]: Chọn p = 23, q = 11 (q là thừa số nguyên tố của p – 1) Chọn h’
= 16 < p – 1, vậy g º 162 (mod 23) º 3 > 1 Chọn khóa riêng x = 7 < q và tính khóa công khai y º gx (mod p) º 37 (mod 23) º 2
Bên gửi (ký)
Trang 341.3.4 Ưu điểm của chữ ký số
Việc sử dụng chữ ký số mang lại nhiều ưu điểm khi cần xác định nguồn gốc, tính toàn vẹn của thông tin trong quá trình truyền tin trên mạng công cộng
(i) Khả năng xác định nguồn gốc: Các hệ mật mã hóa khóa công khai
cho phép xác định nguồn gốc của bản tin bằng việc sử dụng khóa riêng – chỉ người chủ của nó mới có thể dùng để tạo chữ ký cho bản tin
(ii) Tính toàn vẹn: khi người dùng tham gia vào quá trình trao đổi tin
tức trên đường truyền công cộng thì hoàn toàn có thể tin tưởng là bản tin không bị thay đổi trong khi truyền Vì nếu như văn bản này
bị thay đổi thì khi dùng khóa công khai của người ký giải mã bản
ký thì sẽ không khớp với bản chính vì chỉ có người ký mới có thể tạo chữ ký chính xác cho bản tin bằng khóa riêng của mình (iii) Không thể phủ nhận: trong giao dịch, một bên có thể phủ nhận một
văn bản nào đó là do mình gửi Để ngăn ngừa việc này, bên nhận
Trang 35sẽ yêu cầu bên gửi phải kèm theo một chữ ký số tương ứng cho văn bản số đó Khi có tranh chấp xảy ra, người nhận sẽ sử dụng chữ ký này như một chứng cứ để bên gửi không thể phủ nhận được văn bản đã ký
1.4 Kết luận chương
Trong chương này, luận văn đã trình bày tổng quan về mật mã khóa công khai và chữ ký số Theo đó, mật mã khóa công khai là một phần không thể thiếu được trong chữ ký số để đảm bảo tính xác thực và không thể chối bỏ của chữ
ký số Bằng việc dùng hai khóa (khóa công khai và khóa riêng) để mã hóa và xác thực bản tin, thuật toán mật mã khóa công khai đã tạo ra một quy trình khép kín và phù hợp với chữ ký số
Ngoài ra, trong chương này luận văn cũng đã đưa ra một số thuật toán
mã hóa khóa công khai được sử dụng phổ biến hiện nay Các hệ mật mã này đều có một đặc điểm chung là dựa trên độ khó của phép tính logarit rời rạc trên trường hữu hạn GF(p) (hay Fp) để tăng độ khó trong việc giải mã của mình Tiếp theo, trong chương 2 luận văn sẽ trình bày một thuật toán mã hóa khóa công khai dựa trên đường cong elliptic – một hệ mật mà được biết là an toàn hơn thuật toán RSA rất nhiều trong khi lại sử dụng khóa ngắn hơn
Trang 36CHƯƠNG 2: HỆ MẬT DỰA TRÊN ĐƯỜNG CONG ELLIPTIC 2.1 Cơ sở toán học
2.1.1 Trường hữu hạn
Một trường hữu hạn bao gồm một tập hợp hữu hạn các phần tử F cùng với hai phép toán nhị phân trên F là phép cộng và phép nhân thỏa mãn các tính chất số học nào đó Bậc của trường hữu hạn là số lượng các phần tử trong trường Tồn tại một trường hữu hạn bậc q khi và chỉ khi q là lũy thừa của một
số nguyên tố Nế q là lũy thừa của một số nguyên tố thì về cơ bản là chỉ có một trường hữu hạn bậc q; trường này được kí hiệu là Fq (hay GF(q)) Tuy nhiên,
có nhiều cách để biểu diễn các phần tử của Fq Một vài phép biểu diễn có thể dẫn đến việc thực hiện hiệu quả hơn các phép toán học trên phần cứng hay trong phần mềm
Nếu q = pm, trong đó p là số nguyên tố và m là một số nguyên dương thì
p được gọi là đặc trưng của Fq Hầu hết các chuẩn mà chọn kỹ thuật mật mã hóa đường cong elliptic giới hạn bậc trên trường hữu hạn là nguyên tố (q = p) hay lũy thừa của 2 (q = 2m)
a Trường hữu hạn Fp
Gọi p là một số nguyên tố Trường hữu hạn Fq được gọi là một trường nguyên tố là sự kết hợp của các số nguyên {0,1,2,…,p – 1} với các phép số học sau:
Phép cộng: Nếu a, b Î Fq thì a + b = r, trong đó r là số dư khi a + b chia cho p và 0 £ r £ p – 1 Đây là phép cộng mô-đun p
Phép nhân: Nếu a, b Î Fq thì a.b = s, trong đó s là số dư khi a.b chia cho
p và 0 £ s £ p – 1 Đây là phép nhâ mô-đun p
Trang 37 Phép nghịch đảo: Nếu a là một phần tử khác 0 trên Fq, nghịch đảo của a mô-đun p được ký hiêu là a-1 là số nguyên duy nhất c Î Fq sao cho a.c =
1
b Trường hữu hạn F2m
Trường F2m được gọi là một trường hữu hạn nhị phân, có thể được mô tả như một không gian vector m chiều trên trường F2, nó bao gồm hai phần tử 0
và 1 Tồn tại m phần tử a0, a1,…,am-1 thuộc F2m sao cho mỗi phần tử a ÎF2m
có thể được viết duy nhất dưới dạng:
a = a0a0 + a1a1 + … + am-1am-1, với ai Î {0,1} (2.1) Tập {a0, a1,…, am-1} được gọi là cơ sở của F2m trên F2 Các phần tử a
có thể được biểu diễn như một chuỗi bit (a0a1…am-1) Phép cộng các phần tử trong trường được thực hiện bằng phép XOR Phép nhân phụ thuộc vào cơ sở
đã lựa chọn
Có nhiều cơ sở khác nhau của F2m trên F2 Một vài thì đưa ra là hiệu quả với phần mềm hoặc thực hiện phần cứng số học trên F2m hơn là những loại khác
Ở đây, các phần tử thuộc F2m là cá đa thức nhị phân (các đa thức mà các
hệ số thuộc Trường F2 = {0,1}) có bậc lớn nhất là m-1:
F2m={am-1zm-1+am-2zm-2+…+a2z2+a1z+a0|aiÎ{0,1}} (2.2) Một đa thức nhị phân tối giản f(z) bậc m nghĩa là f(z) không thể phân tích thành tích của các đa thức nhị phân khác có bậc nhỏ hơn m Hơn nữa, các thành phần Trường thường là cộng các đa thức với hệ số số học được tính mô-đun 2 Phép nhân của các thành phần trong Trường được thực hiện theo mô-đun đa thức f(z) Cho bất kì đa thức nhị phân a(z), a(z) mod f(z) sẽ diễn đạt đa
Trang 38thức dư duy nhất là r(z) có bậc nhỏ hơn m khi thực hiện phép chia dài a(z) cho f(z); phép toán này được gọi là giảm cấp mô-đun f(z)
Các phép toán trên trường được định nghĩa trên các phần tử thuộc F2m
khi biểu diễn dưới dạng đa thức với đa thức f(x):
Phép cộng: Nếu a = (am-1…a1a0) và b=(bm-1…b1b0) là các phần tử thuộc
F2m thì a + b = c = (cm-1…c1c0), trong đó ci = (ai + bi) mod 2
Phép nhân: Nếu a = (am-1…a1a0) và b=(bm-1…b1b0) là các phần tử thuộc
F2m thì a.b = r = (rm-1…r1r0), trong đó đa thức rm-1xm-1 +…+ r1x + r0 là phần dư khi đa thức chia cho f(x) trên F2
Phép nghịch đảo: Nếu a là một phần tử khác 0 trên F2m, nghịch đảo của
a được ký hiệu là a-1 là phần tử duy nhất c Î F2m sao cho a.c = 1
Ví dụ 2.1: Các phần tử thuộc F24 có 16 đa thức nhị phân có bậc cao nhất là 3:
Trang 392.1.2 Đường cong Elliptic trên trường hữu hạn Fp
Đặt p > 3 là một số nguyên tố Một đường cong elliptic E trên Fp được định nghị bởi phương trình dạng:
Trong đó, a, b Î Fp và 4a3 + 27b2 0 (mod p) bao gồm tất cả các điểm (x,y), x Î Fp thỏa mãn công thức 2.3 cùng với điểm đặc biệt O gọi là điểm ở vô cực
Ví dụ 2.1: Đường cong elliptic trên F23, p = 23 và đường cong E có dạng: y2 =
x3 + x + 4 trên F23 (thỏa mãn 4.13+27.42 = 436 = 22 mod 23 0) Ta có các điểm (x,y) trên E(F23) như sau:
(0,2) (0,21) (1,11) (1,12) (4,7) (4,16) (7,3) (7,20) (8,8) (8,15) (9,11) (9,12) (10,5) (10,18) (11,9) (11,14) (13,11) (13,12) (14,5) (14,18) (15,6) (15,17) (17,9) (17,14) (18,9) (18,14) (22,5) (22,19) Công thức cộng:
Có một quy tắc được gọi là “chord-and-tangent” cho việc cộng hai điểm trên đường cong elliptic E(Fp) để tính ra điểm trên đường elliptic thứ 3 Cùng với phép toán cộng này, tập hợp các điểm E(Fp) tạo thành một nhóm cùng với
O phục vụ như nhận dạng Nghĩa là nhóm này được sử dụng trong cấu trúc hệ mật mã đường cong elliptic Quy tắc cộng được mở rộng tốt nhất về phương diện hình học Đặt P = (x1,y1) và Q = (x2,y2) là hai điểm khác nhau trên đường cong elliptic E thì tổng của P và Q được ký hiệu là R = (x3,y3) được định nghĩa như sau:
Trang 40Đầu tiên, vẽ đường thẳng đi qua P và Q; đường này cắt đường cong elliptic tại một điểm thứ 3 Sau đó, R là điểm phản xạ của điểm này qua trục x, điều này được biểu diễn qua hình 2.1 Đường cong elliptic trên hình này gồm
2 phần, phần giống hình ellip và phần cong vô hạn
Nếu P = (x1,y1) thì gấp đôi P được kí hiệu là R = (x3,y3) được định nghĩa như sau:
Đầu tiên, vẽ đường tiếp tuyến với đường cong elliptic tại điểm P Đường này cắt đường cong elliptic tại điểm thứ hai Sau đó, R là điểm phản xạ của điểm này qua trục x được biểu diễn qua hình 2.2
Hình 2.1: Mô tả hình học của phép cộng hai điểm khác nhau trên đường cong
elliptic: P + Q = R