Với sự phát triển nhanh chóng của công nghệ, các giao dịch, thông tin dần được thực hiện thông qua mạng Internet. Chữ ký số là một trong số các công cụ nhằm giúp các giao dịch hoặc thông tin trở nên minh bạch hơn. Chữ ký số có thể hiển đơn giản là chữ ký, con dấu đại diện cho một cá nhân hay một tập thể dùng để ký lên các hồ sơ, chứng từ điện tử. Chữ ký này chỉ do người sử dụng nắm giữ, không cần phải gửi đi cùng với văn bản được ký giúp đảm bảo tính bí mật cho chữ ký. Người nhận có thể định danh xác nhận được văn bản. Chữ ký số có thể được cung cấp bởi 1 bên thứ 3 nhằm giúp dễ dàng trong việc định danh người ký. Chữ ký số có chi phí thấp, độ an toàn cao, dễ dàng trong việc sử dụng. Chẳng hạn, khi công bố các văn bản phát hành của nhà nước, việc sử dụng chữ ký số để ký lên văn bản được công bố là điều cần thiết để tránh văn bản bị giả mạo. Tất cả mọi người đều có thể xác thực văn bản đó với khóa công khai do nhà nước cung cấp. Các thông tin của người ký có thể được định danh nhanh chóng nếu chữ ký được cung cấp bởi một bên thứ 3, bên cạnh đó người ký có thể thêm các thông tin của chính mình vào văn bản được ký. Với những tính năng này, người sở hữu chữ ký có thể ký trên mọi văn bản và có thể gửi đi bất cứ đâu. Người nhận có thể dễ dàng nhận và xác thực chữ ký, định danh người gửi mọi nơi, mọi lúc. Khóa bí mật chỉ do người ký nắm giữ nên việc đảm bảo tính bí mật cho chữ ký hoàn toàn khả thi và thuận tiện. ECDSA là một thuật toán sinh khóa bí mật và khóa công khai của chứ ký số. Thuật toán dự trên lý thuyết về Hệ mật dựa trên đường cong Elliptic (ECC). Đây là một trong số các thuật toán sinh chữ ký số được áp dụng trong thực tế và đạt hiệu quả cao. Ưu điểm của ECDSA là có độ an toàn cao cho khóa bí mật mà dung lượng lại nhỏ hơn rất nhiều so với các thuật toán khác. Với mục tiêu như vậy, bố cục của đồ án sẽ bao gồm bốn chương theo cấu trúc như sau:Chương 1: Tổng quan về chữ ký sốGiới thiệu tổng quan về chữ ký số, nguyên lý hoạt động của chữ ký số, quá trình ký và xác thực chữ ký số, ứng dụng của chữ ký số trong đời sống.Chương 2: Chữ ký số dựa trên đường cong EllipticTrình bày các lý thuyết về Hệ mật trên đường cong Elliptic, cách hoạt động của chữ ký sô dựa trên lý thuyết về đường cong Elliptic.Chương 3: Xây dựng ứng đụng phần mềm ký số ECDSA trên điện thoại AndoridTrình bày quá trình xây dựng ứng dụng ký số ECDSA trên điện thoại Andorid. Đánh giá ưu điểm, nhược điểm của ứng dụng. Kết luận và hướng phát triểnTổng kết, tóm tắt những kết quả đã đạt được và còn chưa đạt được. Từ đó đề xuất các hướng phát triển tiếp theo.
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG CHỮ KÝ SỐ
CHO THIẾT BỊ DI ĐỘNG
Giảng viên hướng dẫn :TS ĐẶNG MINH TUẤN
Sinh viên thực hiện : NGUYỄN MINH ĐỨC
Trang 2LỜI CẢM ƠN
Để đạt được thành quả tốt đẹp như ngày hôm nay, trước tiên em xin gửi lời cảm ơnchân thành nhất đến TS Đặng Minh Tuấn – đã tận tình chỉ bảo và hướng dẫn em hoàn thànhtốt đồ án tốt nghiệp của mình trong thời gian qua
Em xin gửi lời cảm ơn chân thành đến các thầy cô giáo trong khoa Công nghệ thôngtin, các thầy cô giáo trong Học viện Công nghệ Bưu chính Viễn thông đã dạy dỗ, động viên
em trong suốt quá trình học tập 4 năm tại học viện
Cuối cùng em rất biết ơn gia đình và bạn bè luôn tạo điều kiện, quan tâm, giúp đỡ để
em vượt qua những khó khăn trong quá trình học tập và cuộc sống
Em xin chân thành cảm ơn!
Hà Nội, ngày 16 tháng 10 năm 2020Nguyễn Minh Đức
Trang 3MỤC LỤC
LỜI CẢM ƠN i
DANH MỤC CÁC HÌNH ẢNH v
DANH MỤC BẢNG BIỂU vii
DANH MỤC TỪ VIẾT TẮT viii
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ CHỮ KÝ SỐ 3
1.1 Giới thiệu về chữ ký số 3
1.1.1 Lịch sử hình thành 3
1.1.2 Chữ ký số là gì 4
1.1.3 Yêu cầu cần thiết để trở thành một chữ ký số 4
1.1.4 Luật pháp và thực tế 4
1.2 Nguyên lý hoạt động của chữ ký số 5
1.3 Các đặc điểm của chữ ký số 7
1.3.1 Khả nâng xác thực nguồn gốc 7
1.3.2 Tính toàn vẹn của thông điệp 7
1.3.3 Tính không thể phủ nhận 7
1.4 Ứng dụng chữ ký số trong thực tế 7
1.5 Sự nổi bật của thuật toán chữ ký số ECDSA với RSA 9
1.5.1 Chữ ký số dựa trên RSA 9
1.5.2 Chữ ký số dựa trên ECC 11
1.5.3 So sánh các kết quả thử nghiệm 13
1.5.4 Kết luận và đánh giá sự phát triển trong tương lai 17
CHƯƠNG 2: CHỮ KÝ SỐ DỰA TRÊN ĐƯỜNG CONG ELLIPTIC 19
Trang 42.1.1 Hàm băm là gì 19
2.1.2 Tính chất của hàm băm 19
2.1.3 Hàm băm SHA-256 20
2.2 Kiến thức cơ sở về đường cong Elliptic 20
2.2.1 Tổng quan về đường cong Elliptic 20
2.2.2 Cộng các điểm trên đường cong Elliptic 22
2.2.3 Nhân vô hướng các điểm trên đường cong Elliptic 24
2.2.4 Đường cong hữu hạn trên trường Fq 25
2.3 Ứng dụng của đường cong elliptic trong chữ ký số 29
2.3.1 Quá trình sinh khoá 29
2.3.2 Thuật toán ký trên bản rõ 29
2.3.3 Kiểm tra chữ ký 29
2.3.4 Tính đúng đắn của thuật toán 30
2.3.5 Đánh giá bảo mật 30
2.4 Đảm bảo tính bí mật cho khóa bí mật 31
2.4.1 Tầm quan trọng của việc bảo mật khóa bí mật 31
2.4.2 Ưu điểm của hệ mật AES 31
2.4.3 Mã hóa và giải mãi file khóa bí mật sử dụng AES 33
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG PHẦN MỀM KÝ SỐ ECDSA TRÊN ĐIỆN THOẠI ANDROID 35
3.1 Khảo sát yêu cầu về ứng dụng 35
3.1.1 Khảo sát sơ bộ 35
3.1.2 Khảo sát chi tiết 35
3.2 Phân tích yêu cầu ứng dụng 40
3.2.1 Biểu đồ Usecase chính 40
3.2.2 Sinh khoá dựa trên thuật toán ECDSA 41
Trang 53.2.4 Xác thực chữ ký số sử dụng thuật toán ECDSA 42
3.2.5 Các chức nâng phụ trợ 43
3.2.6 Các giao diện chính của ứng dụng 45
3.3 Thiết kế ứng dụng 50
3.3.1 Quá trình tạo mật khẩu 50
3.3.2 Quá trình sinh khoá 51
3.3.3 Quá trình đổi mật khẩu 54
3.3.4 Quá trình ký số 55
3.3.5 Quá trình xác thực 59
3.4 Đánh giá 61
3.4.1 Ưu điểm của ứng dụng 61
3.4.2 Nhược điểm của ứng dụng 63
KẾT LUẬN 64
TÀI LIỆU THAM KHẢO 66
Trang 6DANH MỤC CÁC HÌNH ẢN
Hình 1 1 Biểu diễn sơ đồ từng bước của quá trình tạo chữ ký và xác minh thuật toán
Chữ ký số tổng quát 6
Hình 1 2 Hình ảnh USB token của nhà cung cấp Viettel 8
Hình 1 3 Quy trình sinh chữ ký RSA được sử dụng ký lên văn bản 10
Hình 1 4 Triển khai từng bước của Thuật toán xác minh chữ ký RSA 10
Hình 1 5 Sơ đồ quá trình tạo chữ ký ECDSA 12
Hình 1 6 Sơ đồ xác thực chữ ký ECDSA 13
Hình 1 7 Biểu đồ thời gian sinh khóa của RSA 14
Hình 1 8 Biểu đồ thời gian sinh khóa của ECC 14
Hình 1 9 Biểu đồ thời gian sinh chữ ký của RSA 15
Hình 1 10 Biểu đồ thời gian sinh chữ ký của ECC 16
Hình 1 11 Biểu đồ thời gian xác thực chữ ký số của RSA 17
Hình 1 12 Biểu đồ thời gian xác thực chữ ký số của ECC 17
Y Hình 2 1 Cộng hai điểm trên đường cong Elliptic 23
Hình 2 2 Phép nhân đôi trong đường cong Elliptic 24
Hình 2 3 Đường cong E trên trường hữu hạn F 2 m 26
Hình 2 4 Sơ đồ mã hóa và giải mã của thuật toán AES 33
Hình 3 1 Giao diện ứng dụng Adope Fill & Sign 36
Hình 3 2 Hình ảnh chữ ký trên ứng dụng khảo sát Adobe Fill & Sign 37
Hình 3 3 Các trường thông tin trong chữ ký số của ứng dụng Adobe Fill & Sign37 Hình 3 4 Ký bằng cách ghi thông tin lên văn bản cần ký (Ứng dụng Adobe) 38
Hình 3 5 Ký bàng cách sử dụng chữ ký đã được tạo từ trước (Ứng dụng Adobe)39 Hình 3 6 Biểu đồ usecase của ứng dụng 40
Hình 3 7 File publicKey.pem và thư mục PrivateKey trên điện thoại Mi8 Lite 41 Hình 3 8 Chức năng ký số của ứng dụng 42
Hình 3 9 Chức năng xác thực chữ ký số của ứng dụng 42
Hình 3 10 Màn hình đăng nhập khi bị khoá 43
Hình 3 11 Giao diện chức năng tạo/thay đổi mật khẩu 44
Trang 7Hình 3 13 Giao diện đăng nhập 45
Hình 3 14 Giao diện sinh khoá 46
Hình 3 15 Giao diện đổi mật khẩu 47
Hình 3 16 Giao diện ký số 48
Hình 3 17 Giao diện xác thực 49
Hình 3 18 Giao diện tạo mật khẩu cho ứng dụng 50
Hình 3 19 Biểu đồ tuần tự cho quá trình tạo mật khẩu 51
Hình 3 20 Thông số N và tọa độ điểm G 51
Hình 3 21 Phần xử lý sinh khóa công khai 52
Hình 3 22 File khoá bí mật được đọc sau khi đã được mã hoá 52
Hình 3 23 Quá trình sinh khóa 53
Hình 3 24 Biểu đồ tuần tự cho quá trình sinh khoá 53
Hình 3 25 Thông báo về độ mạnh yếu của mật khẩu nhập vào 54
Hình 3 26 File khoá bí mật sau khi được giải mã trên một ứng dụng khác 54
Hình 3 27 Biểu đồ tuần tự cho quá trình thay đổi mật khẩu 55
Hình 3 28 File HeMatDuongCongElliptic.pdf được chọn 55
Hình 3 29 Thông báo tạo khoá trước khi ký số 56
Hình 3 30 Xử lý quá trình ký số 57
Hình 3 31 Lưu file ký vào trong bộ nhớ 57
Hình 3 32 Hình ảnh file chữ ký đã được lưu vào bộ nhớ thiết bị 57
Hình 3 33 Hỗ trợ chia sẻ nhiều file 58
Hình 3 34 Biểu đồ tuần tự cho quá trình ký số 58
Hình 3 35 Chọn file để xác thực chữ ký 59
Hình 3 36 Hàm xác thực theo thuật toán ECDSA 60
Hình 3 37 Kết quả xác thực đúng 60
Hình 3 38 File tài liệu bị chọn sai ở file khoá công khai và được thông báo lỗi 61 Hình 3 39 Biểu đồ tuần tự cho quá trình xác thực 61
Trang 8DANH MỤC BẢNG BIỂU
Bảng 1 1 So sánh thời gian sinh khóa của RSA và ECDSA 13
Bảng 1 2 So sánh thời gian ký số của RSA và ECDSA 15
Bảng 1 3 So sánh thời gian xác thực chữ ký số của RSA và ECDSA 16
Bảng 2 1 Bảng chấm điểm các thuật toán dự thi tuyển chọn AES 32
Trang 9DANH MỤC TỪ VIẾT TẮT
Standard
Tiêu chuẩn mã hóa tiên tiến
machine
Máy rút tiền tự động
Cryptography
Hệ mật dựa trên đường cong Elliptic
Thuật toán chữ kí số đường cong Elliptic
Agreement
Thoả thuận người dùng cuối
Viện Tiêu chuẩn và Công nghệ
Algorithm
Thuật toán băm an toàn
Trang 10Adleman tích ra thừa số nguyên tố do
Rivest-Shamir-Adleman phát triển
Trang 11LỜI MỞ ĐẦU
Với sự phát triển nhanh chóng của công nghệ, các giao dịch, thông tin dần đượcthực hiện thông qua mạng Internet Chữ ký số là một trong số các công cụ nhằm giúpcác giao dịch hoặc thông tin trở nên minh bạch hơn Chữ ký số có thể hiển đơn giản làchữ ký, con dấu đại diện cho một cá nhân hay một tập thể dùng để ký lên các hồ sơ,chứng từ điện tử Chữ ký này chỉ do người sử dụng nắm giữ, không cần phải gửi đicùng với văn bản được ký giúp đảm bảo tính bí mật cho chữ ký Người nhận có thểđịnh danh xác nhận được văn bản Chữ ký số có thể được cung cấp bởi 1 bên thứ 3nhằm giúp dễ dàng trong việc định danh người ký Chữ ký số có chi phí thấp, độ antoàn cao, dễ dàng trong việc sử dụng Chẳng hạn, khi công bố các văn bản phát hànhcủa nhà nước, việc sử dụng chữ ký số để ký lên văn bản được công bố là điều cần thiết
để tránh văn bản bị giả mạo Tất cả mọi người đều có thể xác thực văn bản đó với khóacông khai do nhà nước cung cấp
Các thông tin của người ký có thể được định danh nhanh chóng nếu chữ ký đượccung cấp bởi một bên thứ 3, bên cạnh đó người ký có thể thêm các thông tin của chínhmình vào văn bản được ký
Với những tính năng này, người sở hữu chữ ký có thể ký trên mọi văn bản và cóthể gửi đi bất cứ đâu Người nhận có thể dễ dàng nhận và xác thực chữ ký, định danhngười gửi mọi nơi, mọi lúc Khóa bí mật chỉ do người ký nắm giữ nên việc đảm bảotính bí mật cho chữ ký hoàn toàn khả thi và thuận tiện
ECDSA là một thuật toán sinh khóa bí mật và khóa công khai của chứ ký số.Thuật toán dự trên lý thuyết về Hệ mật dựa trên đường cong Elliptic (ECC) Đây làmột trong số các thuật toán sinh chữ ký số được áp dụng trong thực tế và đạt hiệu quảcao Ưu điểm của ECDSA là có độ an toàn cao cho khóa bí mật mà dung lượng lại nhỏhơn rất nhiều so với các thuật toán khác
Với mục tiêu như vậy, bố cục của đồ án sẽ bao gồm bốn chương theo cấu trúc như sau:
Chương 1: Tổng quan về chữ ký số
Trang 12Giới thiệu tổng quan về chữ ký số, nguyên lý hoạt động của chữ ký số, quá trình
ký và xác thực chữ ký số, ứng dụng của chữ ký số trong đời sống
Chương 2: Chữ ký số dựa trên đường cong Elliptic
Trình bày các lý thuyết về Hệ mật trên đường cong Elliptic, cách hoạt động củachữ ký sô dựa trên lý thuyết về đường cong Elliptic
Chương 3: Xây dựng ứng đụng phần mềm ký số ECDSA trên điện thoại Andorid
Trình bày quá trình xây dựng ứng dụng ký số ECDSA trên điện thoại Andorid.Đánh giá ưu điểm, nhược điểm của ứng dụng
Kết luận và hướng phát triển
Tổng kết, tóm tắt những kết quả đã đạt được và còn chưa đạt được Từ đó đề xuấtcác hướng phát triển tiếp theo
Trang 13CHƯƠNG 1: TỔNG QUAN VỀ CHỮ KÝ SỐ
1.1 Giới thiệu về chữ ký số
1.1.1 Lịch sử hình thành
Tại sao người ta lại chọn chữ ký số?
Tiết kiệm thời gian: Chúng ta không cần phải in bất kỳ tài liệu nào
Tiết kiệm cho phí: Các chi phí liên quan đến dịch vụ chuyển phát nhanhđược giảm xuống
Hiệu quả của quy trình làm việc: Cải thiện hiệu quả và tính lặp lại củacác hoạt động
Phòng trống giả mạo: Chữ ký điện tử sẽ là duy nhất cho mọi người dùng
do đó không thể giả mạo Điều đó sẽ giúp đảm bảo tính toàn vẹn của dữliệu[1]
Con người đã sử dụng các hợp đồng dưới dạng điện tử từ hơn 100 năm nay vớiviệc sử dụng mã Morse và điện tín Vào năm 1889, tòa án tối cao bang NewHampshire (Hoa kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử Tuy nhiên, chỉ vớinhững phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi vào cuộcsống một cách rộng rãi
Vào thập kỷ 1980, các công ty và một số cá nhân bắt đầu sử dụng máy fax đểtruyền đi các tài liệu quan trọng Mặc dù chữ ký trên các tài liệu này vẫn thể hiện trêngiấy nhưng quá trình truyền và nhận chúng hoàn toàn dựa trên tín hiệu điện tử
Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các
số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị mànhình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản người dùng (EULA) khicài đặt phần mềm máy tính, ký các hợp đồng điện tử online [2]…
1.1.2 Chữ ký số là gì
Chữ ký số là một chương trình toán học cho việc xác minh tính xác thực củathông điệp hoặc văn bản số Để tạo ra một chữ ký điện tử hợp lệ là đảm bảo người
Trang 14nhận có thể chắc chắn rằng văn bản được ký bởi đúng người đã gửi đi (tính xác thực)
và thư không bị thay đổi khi chuyển tiếp (tính toàn vẹn)
Chữ ký điện tử chỉ cung cấp tính toàn vẹn, tính xác thực và tính trống chối bỏ tàiliệu hoặc email, nhưng không thể cung cấp tính bảo mật
1.1.3 Yêu cầu cần thiết để trở thành một chữ ký số
Chữ ký số là một cách có độ hiệu quả tương tự như chữ ký thực Nó giúp ngườinhận có thể xác định và chắc chắn chính xác đó là của người gửi đã ký Giống như chữ
ký thực, chữ ký số dùng để xác nhận nội dung của một thông điệp[3]
Chữ ký số cần phải đạt được các điều kiện cơ bản sau:
Không thể giả mạo: Nếu A ký vào thông điệp M với chữ ký S của A, thì khôngmột ai có thể giả mạo được cặp M và S
Xác thực: Nếu bên nhận nhận được cặp M và S thì bên nhận có thể kiểm trađược chính xác đó là chữ ký và văn bản của người gửi
Không thể thay đổi: Sau khi được gửi đi, thông điệp M không thể được thay đổibởi bất kỳ ai, nếu có bất kỳ sự thay đổi nào bên nhận sẽ phát hiện ra ngay lậptức[4]
Chất lượng của phần mềm/ phần cứng thực hiện thuật toán;
Khóa bí mật phải được giữ an toàn;
Quá trình phân phối khóa công khai phải đảm bảo mối liên hệ giữa khóa
và thực thể sở hữu khóa là chính xác Việc này thường được thực hiện bở
hạ tần khóa công khai (PKI) và mối liên hệ khóa tương đương với người
sở hữu được chứng thực bởi những người điều hành PKI Đối với hệthống PKI mở, nơi mà tất cả mọi người đều có thể yêu cầu chứng thực
Trang 15trên khi khả năng sai sót rất thấp Tuy nhiên các PKI thương mại cũng đãgặp phải nhiều vấn đề có thể dẫn đến văn bản bị ký sai
Nhưng người sử dụng (và phần mềm) phải thực hiện các quá trình đúngthủ tục (giao thức)
Chỉ khi tất cả các điều khiện trên được thỏa mãn thì chữ ký số mới là bằng chứngxác định người chủ (hoặc người có thẩm quyền) của văn bản
Một số cơ quan luật pháp, dưới tác động của các doanh nghiệp hy vọng thu lợi từPKI hoặc với mong muốn là người đi tiên phong trong lĩnh vực mới, đã ban hành cácđiều luật cho phép, xác nhận hay khuyến khích việc sử dụng chữ ký số Các nước kháccũng thông qua những đạo luật và quy định và cả Liên hợp quốc cũng có những dự ánđưa ra những bộ luật mẫu trong vấn đề này Tuy nhiên, các quy định này lại thay đổitheo từng nước trùy theo điều kiện và trình độ khoa học (mật mã học) Chính sự khácnhau này làm bối rối những người sử dụng tiềm năng, gây khó khăn cho việc kết nốigiữa các quốc gia và do đó làm chậm lại tiến trình phổ biến chữ ký số
1.2 Nguyên lý hoạt động của chữ ký số
Để thực hiện được chữ ký số, người ta xây dựng trên cơ sở kết hợp mã hóa khóacông khai với hàm băm như được mô tả trong hình dưới đây
Trang 16Hình 1 1 Biểu diễn sơ đồ từng bước của quá trình tạo chữ ký và xác minh thuật toán
Chữ ký số tổng quát.
Bên gửi cần tạo chứ ký số cho thông điệp (văn bản cần ký) Đầu tiên bên gửi sẽbăm thông điệp bằng hàm băm không khóa, khi đó ta được một mã băm đầu ra, mãbăm này được mã hóa bằng một hệ mật khóa công khai bằng khóa bí mật của bên gửi.Kết quả ta thu được chữ ký số của A Cuối cùng chữ ký này được ghép với thông điệp
và chuyển cho người nhận
Bên người nhận tiến hành kiểm tra chữ ký số bằng cách:
Tách chữ ký số ra khỏi thông điệp
Dùng khóa công khai của bên gửi để giải mã chữ ký thu được hàm băm củathông điệp khi chưa mã hóa với khóa bí mật
Tiến hành băm thông điệp gốc theo đúng thuật toán của bên gửi để thu được mãbăm của thông điệp nhận được
Tiến hành so sánh 2 hàm băm đó để xác thực chữ ký và thông điệp có hợp lệkhông
Trang 17Qua sơ đồ chữ ký số ta nhận thấy rằng việc sử dụng hàm băm để xác thực nộidung thông điệp, còn hệ mật khóa công khai dùng để xác thực chủ thể đã ký văn bản
thông điệp cần phải được mã hóa bằng hàm băm sau đó sử dụng khóa bí mật của
người chủ sở hữu để mã hóa, khi đó ta được chữ ký số Khi cần kiểm tra, người nhận
sẽ sử dụng khóa công khai để giải mã thông điệp để ra hàm băm của bản ký Sau đó kiểm tra với hàm băm của văn bản nhận được Nếu 2 giá trị băm này khớp nhau thì bên nhận có thể tin tưởng chữ ký được ký bởi người sở hữu khóa bí mật
1.3.2 Tính toàn vẹn của thông điệp
Cả 2 bên tham gia trao đổi chữ ký số đều có thể tin tưởng rằng văn bảo khôngthể bị sử đổi, bởi vì khi văn bản bị sử đổi, nội dung hàm băm cũng sẽ bị thay đổi ngaylập tức Quá trình truyền đi không thẻ tránh được việc bên thứ 3 có thể sử đổi vàotrong văn bản truyền đi Việc ký số sẽ đảm bảo tính toàn vẹ cho văn bản gửi đi
1.3.3 Tính không thể phủ nhận
Trong giao dịch bên nhận có thể từ chối trách nghiệm với chính văn bản domình gửi đi Để ngăn ngừa khả năng này, bên nhân có thể yêu cầu bên gửi gửi kèmtheo chữ ký số với văn bản Khi có tranh chấp, bên nhận sẽ sử dụng chữ ký này nhưmột bằng chứng cho bên thứ 3 giải quyết tranh chấp Nhưng tuy nhiên khóa bí mật vẫn
có thể bị lộ nên tính không thể phủ nhận không được đáp ứng hoàn toàn[5]
1.4 Ứng dụng chữ ký số trong thực tế
Nhằm đảm bảo an toàn cho những giao dịch điện tử, nên sử dụng chữ ký số làcần thiết Chữ ký số được sử dụng để bảo đảm tính toàn vẹn, tính chống chối bỏ củacác thông tin giao dịch trên mạng Internet Chữ ký số tương đương với chữ ký tay nên
Trang 18có giá trị sử dụng trong các ứng dụng giao dịch điện tử với máy tính và mạng Internetcần tính pháp lý cao.
Tại Việt Nam hiện nay, chữ ký số có thể sử dụng cho các giao dịch như muahàng trực tuyến, chuyển tiền ngân hàng, thanh toán trực tuyến Hơn nữa Bộ Tài Chínhcũng đã áp dụng ứng dụng chữ ký số vào kê khai thuế, nộp thuế trực tiếp qua mạngInternet
Với việc sắp tới Chính Phủ sẽ làm việc với người dân hoàn toàn toàn trựctuyến, nên có thể trong tương lai chữ ký số sẽ có thể sử dụng với các ứng dụng củachính phủ khi làm thủ tục hành chính hay một sự xác nhận với cơ quan nhà nước
Đối với dịch vụ chứng thực chữ ký số công cộng chỉ có thể sử dụng trong cácgiao dịch điện tử liên quan đến người sử dụng cá nhân và tổ chức, doanh nghiệp, trongcác giao dịch giữa người dân, doanh nghiệp với các cơ quan nhà nước Riêng các giaodịch nội bộ của các cơ quan nhà nước hoặc giữa các cơ quan nhà nước với nhau là cácgiao dịch đặc thù, không dùng được hệ thống chứng thực công cộng mà phải dùng hệthống riêng[6]
Tính tới thời điểm ngày 13/6/2019 đã có 12 công ty được cấp phép cung cấpchữ ký số trên thị trường[7] Chữ ký số thường được lưu trong các USB token của nhàcung cấp Nhà cung cấp sẽ cung cấp chứng chỉ và chữ ký số cho người dùng và bánchữ ký đó theo các gói từ 1 đến 3 năm
Trang 19Hình 1 2 Hình ảnh USB token của nhà cung cấp Viettel.
1.5 Sự nổi bật của thuật toán chữ ký số ECDSA với RSA
Chữ ký số hiện đang thay thế công việc trên giấy tờ để giúp cuộc sống củakhách hàng và nhân viên trong cách ngành khác nhau trở nên dễ dàng hơn RSA vàElliptic Curve CrCryptography (ECC) là các thuật toán nghiêm ngặt về bảo mật được
sử dụng cho các thuật toán mật mã khóa công khai Ngày nay, ECDSA (Thuật toánchữ ký số trên đường cong Elliptic) đang trở nên phổ biến hơn thuật toán RSA vì hiệusuất của ECDSA tốt hơn Ưu điểm chính của ECC so với RSA là trong khi ECC cungcấp cùng mức độ bảo mật nhưng với chi phí và kích thước khóa thấp hơn so với RSA.Dưới dây sẽ trình bày ngắn gọn về hiệu suất của RSA với ECDSA trong các khía cạnhkhác nhau như thời gian, bảo mật và năng lượng tiêu thụ Và sẽ cho thấy lý do tại saoECC đã và đang trở thành xu hướng được sử dụng mới nhất trong hiện tại và tươnglai[1]
1.5.1 Chữ ký số dựa trên RSA
Thuật toán chữ ký số RSA là một thuật toán khóa bất đối xứng được sử dụng để
ký tài liệu Quy trình gồm 3 bước: Sinh khóa RSA, Sinh chữ ký RSA, Xác thực chữ kýRSA
a) Sinh khóa RSA:
Trang 20Bước đầu tiên, hàm sinh khóa RSA xuất ra cặp khóa công khai và khóa bí mậtcho người gửi với khóa bí mật là (d) và khóa công khai (e) Các bước bao gồm nhưsau:
BƯỚC 1: Lấy hai số nguyên tố phân biệt rất lớn là a và b sao cho chúng khác
BƯỚC 1: Lấy thông điệp m.
BƯỚC 2: Tạo mã băm của thông điệp m, h = H (m).
BƯỚC 3: Tạo chữ ký điện tử bằng khóa riêng [d, n] S = h.d mod n.
BƯỚC 4: Gửi thông điệp có chữ ký [m, S].
Hình 1 3 Quy trình sinh chữ ký RSA được sử dụng ký lên văn bản.
c) Xác thực chữ ký RSA
BƯỚC 1: Chấp nhận [m, S].
BƯỚC 2: Lấy khóa công khai [e, n].
Trang 21BƯỚC 3: Tạo mã băm từ thông điệp: h1 = S e mod n
BƯỚC 4: Chỉ chấp nhận nếu h1 = h.
Hình 1 4 Triển khai từng bước của Thuật toán xác minh chữ ký RSA.
1.5.2 Chữ ký số dựa trên ECC
Thuật toán chữ ký số trên đường cong Elliptic (ECDSA) là một cách tiếp cầnhoạt động theo cách tương tự như chữ ký số RSA, nhưng với kích thước khóa nhởhơn Nó sử dụng phương trình đường cong Elliptic để mã hóa thông điệp và sau đóđính kèm chữ ký lên đó để đảm bảo tài liệu an toàn trước việc sửa đổi trái phép.ECDSA phụ thuộc vào đường cong Elliptic trong bài toán logarit rời rạc (ECDLP)[4]
Nó được định nghĩa: Cho các tham số miền đường cong Elliptic và một số điểm
trên đường cong Elliptic P ∈ E (Fp), tìm số nguyên ngẫu nhiên và duy nhất k, 0 ≤ k≤
n, sao cho P = kG, trong đó n là bậc của Đường cong Elliptic và G là điểm sinh.
a) Sinh cặp khóa bằng thuật toán ECDSA:
BƯỚC 1: Chọn ngẫu nhiên một số nguyên phân biệt d trong khoảng [1, n-1] BƯỚC 2: Tìm Q = d.G (trong đó d là Khóa riêng của người gửi)
BƯỚC 3: Khóa công khai của người gửi bao gồm (E, G, n, Q)
b) Tạo chữ ký sử dụng ECDSA:
Trang 22BƯỚC 1: Chọn một số nguyên k riêng biệt và ngẫu nhiên trong khoảng [1, 1].
n-BƯỚC 2: Xác định kG = (x, y), với x là số nguyên.
BƯỚC 3: Xác định R = x mod n; Nếu R = 0, lặp lại các bước với giá trị khác nhau của k.
BƯỚC 4: Xác định h = H (m), trong đó H là hàm băm.
BƯỚC 5: Xác định s = k−1 (h + dr) mod n; Nếu s = 0 thì chuyển sang bước 1 BƯỚC 6: Chữ ký cho thông điệp m là (r, s).
Hình 1 5 Sơ đồ quá trình tạo chữ ký ECDSA
c) Xác thực chữ ký số sử dụng ECDSA:
BƯỚC 1: Lấy khóa công khai của người gửi (E, q, n, Q)
BƯỚC 2: Xác minh rằng các giá trị r và s nằm trong khoảng [1, n-1]
Trang 23BƯỚC 8: Xác định V = x1 mod n
BƯỚC 9: Chỉ chấp nhận khi và chỉ khi V = R
Hình 1 6 Sơ đồ xác thực chữ ký ECDSA
1.5.3 So sánh các kết quả thử nghiệm
Thuật toán chữ ký số ECDSA hoạt động tốt hơn về việc tạo khóa
Không có nhiều sự khác biệt về thời gian giữa RSA và ECC trong quá trình tạochữ ký số cho tới khi kích thước khóa tăng lên thì ECC cho thấy hiệu quả tốthơn RSA
Chỉ một số tham số của RSA vượt trội hơn ECC nhất là trong quá trình xácminh chữ ký
Các thông số trong các bảng dưới đây sẽ cho ta thấy tổng thời gian cần thiết để
ký và xác minh tài liệu được ký điện tử bằng chữ ký điện tử dựa trên RSA vàECDSA
a) Quá trình sinh khóa
Bảng 1 1 So sánh thời gian sinh khóa của RSA và ECDSA
Độ dài khóa (bit) Thời gian (s)
Trang 243072 283 9.80 0.27
Hình 1 7 Biểu đồ thời gian sinh khóa của RSA
Hình 1 8 Biểu đồ thời gian sinh khóa của ECC
b) Sinh chữ ký
Trang 25Bảng 1 2 So sánh thời gian ký số của RSA và ECDSA
Độ dài khóa (bit) Thời gian (s)
Trang 26Hình 1 10 Biểu đồ thời gian sinh chữ ký của ECC
c) Xác thực chữ ký
Bảng 1 3 So sánh thời gian xác thực chữ ký số của RSA và ECDSA
Độ dài khóa (bit) Thời gian (s)
Trang 27Hình 1 11 Biểu đồ thời gian xác thực chữ ký số của RSA
Hình 1 12 Biểu đồ thời gian xác thực chữ ký số của ECC
1.5.4 Kết luận và đánh giá sự phát triển trong tương lai.
Từ các nghiên cứu trên, chúng ta có thể kết luận rằng thuật toán chữ ký sốECDSA tốt hơn RSA về khả năng tạo khóa cũng như tạo chữ ký trong khi về việc xácthực chữ ký, RSA vượt trội hợn ECDSA Do đó, RSA vẫn là một lựa chọn tốt hơn khiviệc xác thực chữ ký phổ biến hơn việc tạo khóa và tạo chữ ký Hơn nữa, ECDSA cầnkích thước khóa bé hơn so với RSA trong khi có cùng mức độ bảo mật tương tự nhau,
Trang 28vì vậy RSA được ưu tiên hơn trong các ứng dụng sử dụng tài nguyên hạn chế như thểthông minh và hệ thống nhúng Đã có một số cuộc tấn công vào ECDSA như Pollard’sRho và Pohlig-Hellman nhưng nó rất chậm so với các cuộc tấn công vào RSA Trongtương lai người ta có thể được thực hiện theo hướng làm cho ECDSA an toàn hơnbằng cách áp dụng số học phức tạp hơn trong ECC[8].
Trang 29CHƯƠNG 2: CHỮ KÝ SỐ DỰA TRÊN ĐƯỜNG CONG ELLIPTIC
2.1 Tổng quan về hàm băm
2.1.1 Hàm băm là gì
Hàm băm là các giải thuật để tạo ra các bản tóm tắt của thông điệp, thường
được sử dụng để nhận dạng và đảm bảo tính toàn vẹn của thông điệp Độ dài của thôngđiệp là bất kỳ, nhưng đầu ra thường có độ dài cố định
2.1.2 Tính chất của hàm băm
Hàm băm là một ánh xạ h(x) thoả mãn 2 tính chất chính:
Tính chất nén: h sẽ ánh xạ một dữ liệu đầu vào x có độ dài bit hữu hạn tuỳ
ý với một đầu ra h(x) có độ dài bit m hữu hạn.
Tính dễ dàng tính toán: với h cho trước và một đầu vào x, có thể dễ dàng tính được h(x)[9].
Bên cạnh các tính chất cô hữu trên hàm băm còn có các tính chất sau:
Tính trung độ: Theo định lý Diricle thì nếu có (n+1) con thỏ được bỏ vào
n cái chuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất
2 con thỏ ở chung Rõ ràng với không gian giá trị băm nhỏ hơn nhiều so với không gian thông điệp về mặt kích thước thì chắc chắn sẽ tồn tại đụng
độ, tức là có hai tin x khác x' có giá trị băm giống nhau, khi đó h(x) = h(x')
Tính chất hàm băm không va chạm yếu:
Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x, không thể tiến hành về mặt tính toán để tìm ra một bức điện x' khác x mà có h(x) = h(x')
Tính chất hàm băm không va chạm mạnh:
Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để tìm ra
hai bức thông điệp x và x' mà x khác x' và h(x) = h(x')
Tính chất hàm băm một chiều:
Hàm băm h là một chiều nếu khi cho trước một bản tóm lược của thông báo z, không thể thực hiện về mặt tính toán để tìm được bức điện x sao cho h(x) = z[10]
Trang 302.1.3 Hàm băm SHA-256
SHA-256 là Thuật toán băm bảo mật 256bit và dùng để tạo ra các hàm băm
không thể đảo ngược và duy nhất Số lượng hàm băm có thể có càng lớn, thì xác suất
để hai giá trị sẽ tạo ra cùng một giá trị băm càng nhỏ SHA-256 được sử dụng rộng rãi cho chữ ký số, và cũng góp phần vào sự thành công của các công nghệ như
Blockchain nói chung và đồng tiền ảo Bit Coin nói riêng
SHA-256 là một trong những hàm băm kế thừa của SHA-1 được gọi chung là
SHA-2, là một trong những hàm băm mạnh nhất hiện tại SHA-256 không phức tạp hơn nhiều so với thuật toán băm SHA-1 và chưa thể bị phá theo bất kỳ cách nào Nó được định nghĩa theo tiêu chuẩn NIST[11]
Tính chất của SHA-256:
Đối với một giá trị nhất định được tạo nên bởi một trong những thuật toán SHA, việc tính toán là không khả thi để:
Tìm một thông điệp tương ứng với thông điệp đã được mã hóa
Tìm được hai đoạn dữ liệu khác nhau có cùng kết quả băm[12]
2.2 Kiến thức cơ sở về đường cong Elliptic
2.2.1 Tổng quan về đường cong Elliptic
Hệ mật mã hoá khoá công khai dựa trên việc sử dụng các bài toán khó giải quyết
về số lượng phép tính cần để tìm ra lời giải cho bài toán là rất lớn Có rất nhiều bài
toán được đề xuất nhưng hiện tại chỉ còn 2 bài toán còn tồn tại bền vững tới thời điểm hiện tại bài toán Logarit rời rạc (discrete logarithhm problem) và bài toán phân tích thừa số của số nguyên
Năm 250 sau Công nguyên, Diophant khi giải bài toán tìm số tầng của tháp các quả cầu mà khi trải ra mặt đất có thể xếp thành một hình vuông đã dẫn đến giải
phương trình (y là số quả cầu trên 1 cạnh hình vuông; x là số tầng của tháp):
y2 = 12 +22 + 32 + · · · + x2 = x(x +1)(2 x+1)6
Trang 31Phương trình y2 = x(x + 1)(2x + 1)/6 là một dạng của đường cong Elliptic Năm
1637, nhà toán học và vật lý học người Pháp Pierre de Fermat công bố định lý Fermat cuối cùng khi viết trên lề bản copy công trình của Diophant: Phương trình sau đây là
vô nghiệm:
x n + y n = z n , n > 2
Hơn ba thế kỷ, đã có rất nhiều nhà toán học cố gắng chứng minh định lý này
xong đều thất bại, mãi cho đến năm 1994, Andrew Wiles, giáo sư trường Princeton đã gây một tiếng vang lớn trong cộng đồng toán học thế giới vào thời điểm đó khi sử
dụng đường cong Elliptic có dạng y2 = x(x − a n )(x + b n ) cùng với lý thuyết về Modul
để chứng minh định lý Fermat cuối cùng[13]
Trong lĩnh vực mật mã, vào năm 1985, Victor S Miller công bố bài báo đầu tiên
về ứng dụng đường cong EC trong mật mã “Use of Elliptic Curves in Cryptography”
và sau đó là Neal Koblitz với “Elliptic curve cryptosystem” vào năm 1987 Từ đó cho đến nay đã có rất nhiều công bố nghiên cứu về EC về lý thuyết và trong thực tiễn càng ngày ứng dụng ECC càng được sử dụng rộng rãi
Một số điểm khác biệt của đường cong Elliptic trên trường hữu hạn với các bài toán khác:
Tính bảo mật: Tính bảo mật của đường cong Elliptic dựa trên độ phức tạp của bài toán logarithm rời rạc trong hệ thống đại số Không giống như các bài toán logarithm khác, bài toán logarithm rời rạc trên đường cong Elliptic chưa có
thuật toán nào có thời gian thực hiện nhỏ hơn cấp lũy thừa
Số hữu hạn các điểm: đường cong Elliptic phân bố trên trường hữu hạn sẽ có hữu hạn các điểm, điều này khác hoàn toàn trên trường số thực Do khi trên
trường số thực, đường cong chứa một số điểm rời rạc mà khi nối lại thì đồ thị sẽkhông rõ ràng là đường cong Bên cạnh đó, các quy luật đại số khi tình toán đều
có thể được chuyển về các đường cong Elliptic trên trường hữu hạn
Tính toán: Các phép toán của đường cong Elliptic trên trường hữu hạn không chứa lỗi làm tròn – một đặc tính quan trọng yêu cầu cho một hệ thống mã hóa
Trang 32Ưu điểm của hệ mật sử dụng đường cong Elliptic (ECC) là có độ dài khóa nhỏ (160bit tương đương với khóa độ dài 1024 Bit trong hệ mật RSA), do sử dụng độ dài khóa nhỏ nên tài nguyên phục vụ cho ECC thường nhỏ hơn rất nhiều, bên cạnh đó hiệunăng tính toán cũng được nâng cao rõ rệt Hiện nay ECC đang là xu thế để thay thế cho RSA
Hạn chế lớn nhất hiện nay của ECC là việc chọn sử dụng các tham số đường
cong và điểm quy ước chung như thế nào để đạt được độ bảo mật cần thiết Hầu hết các đường cong được đưa ra đều thất bại khi áp dụng vào thực tiễn Do đó hiện nay số lượng đường cong thật sự được sử dụng không được phong phú NIST đề xuất một số đường cong Elliptic đã được kiểm định là an toàn để đưa vào sử dụng thực tế trong tài liệu FIPS 186-2 Ngoài ra, đối với các tham số mang giá trị nhỏ, mức độ bảo mật của ECC không bằng RSA Đối với một số trường hợp, RSA vẫn là lựa chọn tốt do RSA
đã chứng minh được tính ổn định trong một khoảng thời gian khá dài[9]
2.2.2 Cộng các điểm trên đường cong Elliptic
Xét 2 điểm P1=(x1+y1)và P2=(x2+y2)trên đường cong Elliptic E:
y2+a1xy +a3y=x3+a2x2+a4x+a6.Phép cộng giữa hai điểm trên đường cong E được địnhnghĩa như sau:
P3(x3, y3)=P1(x1, y1)+P2(x2, y2)
Trong đó P3(x3, y3)=−P3(x3, y '
3)là giao điểm của đường cong E và đường thẳng điqua P1v à P2.Vì 2 điểm P3(x3, y3)v à−P3(x3, y '
3)đều nằm trên đường cong E nên
P3(x3, y3)v à−P3(x3, y '3)phải thỏa mãn phương trình y2+a1xy +a3y=x3+a2x2+a4x+a6 Công thức để tính các giá trị ( x3, y3) sẽ được chứng minh ở dưới đây.
Trang 33Hình 2 1 Cộng hai điểm trên đường cong Elliptic.
Đường thẳng đi qua 2 điểm P1v à P2có phương trình là: y = λx + µx + µ
Trong đó λ là hệ số góc của đường thẳng đi qua P1, P2 Ta có:
Trang 34Khi đó x1=x2v à y1=y2do đó công thức tính λ không sử dụng được vì xuất hiện phép chia số 0 Trong trường hợp này λ chính là hệ số góc của đường thẳng tiếp tuyến đường cong E tại P1h ay P2 K h i đó ta c ó :
Hình 2 2 Phép nhân đôi trong đường cong Elliptic.
Như vậy trong tất cả các trường hợp điểm P3 là tổng của 2 điểm P1, P2 sẽ là điểm có tọa độ là
P3(x3, y3)=(λ2
−x1−x2+a1λ−a2,− y1+λ(x1−x3)−a1x3−a3)
2.2.3 Nhân vô hướng các điểm trên đường cong Elliptic
Với n ∈ N \ {0} định nghĩa phép nhân vô hướng của điểm P nằm trên đường cong
E là phép cộng n lần chính bản thân điểm P:
Trang 35Một số điểm cần lưu ý:
Không tồn tại phép nhân 2 điểm trên đường cong E, có nghĩa là không tồn tại P
× Q với P, Q ∈ E
Không tồn tại thuật toán chia vô hướng Q: n Biết rằng Q = nP, bài toán tìm số
n là bài toán Logarithm rời rạc Đây là bài toán khó, thông thường phải thử lần lượt n = 1, 2, , n − 1 phép cộng điểm P, cho đến khi tổng bằng Q, tuy nhiên
có một số thuật toán tối ưu hơn để tìm n nhưng vẫn không thể giải được bài
toán này trong thời gian đa thức vì thế dựa vào độ khó này có thể xây dựng ra
hệ mật đường cong Elliptic với các giao thức cho mã hóa, xác thực và trao đổi khóa
2.2.4 Đường cong hữu hạn trên trường F q
q là một số nguyên tố hoặc có dạng q = p m với p là một số nguyên tố và m là một
số nguyên dương Khi này p được gọi là đặc số char(q) = p và m là bậc mở rộng của Fq.
Trang 36Đường cong E trên trường hữu hạn F2m là đường cong có các hệ số thuộc trường
F2m , đường cong này có chút khác biệt so với trên Fq: y2+xy= x3+ax=b với a,b,x,y ∈
F2m
Hình 2 3 Đường cong E trên trường hữu hạn F2m
Trong thực tế và đặc biệt trong các thiết bị phần cứng, người ta thường sử dụng trường hữu hạn F2m Khi đó phép cộng trong trường này đơn giản chỉ là phép toán
XOR (Exclusive OR) Nhiều tài liệu cho thấy làm việc với F2m hiệu quả hơn 40% so với làm việc với trường Fq Trường F2m thường được biểu diễn dưới dạng tổ hợp tuyến tính của các vector gồm m phần tử {α0, α1, , αm−1}, mọi phần tử α ∈ F2m đều có thể
được biển diễn dưới dạng:
α = a0α0 + a0α0 + + am-1αm-1, ai ∈ {0,1}
Có nhiều phương pháp để xây dựng cơ sở của F2m: đa thức cơ sở và cơ sở chuẩntắc Các thuật toán để thực hiện các phép toán trên EC có thể tìm thấy trong[14]
2.2.4.2 Đa thức cơ sở
Xét đa thức f(x) = x m + fm−1x m−1 + + f2x 2 + f1x + f0 (với fi ∈ F2,i = 0, , m−1) là một đa thức bất khả quy bậc m trên trường F2, nghĩa là không thể phân tích f(x) thành các đa thức thừa số khác có bậc nhỏ hơn m f(x) gọi là đa thức rút gọn Trường hữu hạn
F2m sẽ là tập tất cả các đa thức trên F2có bậc nhỏ hơn hoặc bằng m.
Trang 37F2m = {am-1x m−1 + + a2x 2 + a1x + a0: ai ∈ {0,1}}
Các phần tử (am−1x m−1 + +a2x 2 +a1x+a0) thường được biểu diễn dưới dạng chuỗi bit (am−1 a1a0) có độ dài là m.
Các phép toán trong trường F2m:
a i β2i , a i ∈{0,1}và cũng được biểu diễn dưới dạng chuỗi bit (a0a1
am−1) có độ dài là m Với cơ sở này phép bình phương sẽ thực hiện rất đơn giản chỉ
bằng cách quay bit Các phép toán trong trường F2m:
Trang 382.2.4.4 Tổng số điểm của đường cong Elliptic trên trường hữu hạn Fq
E là đường cong Elliptic trên trường Fq, bởi vì cặp (x,y) với x,y ∈ Fq là hữu hạn
do đó nhóm E(Fq) cũng sẽ là nhóm hữu hạn Các giá trị x,y là các số nguyên, dễ dàng nhận thấy không phải với mọi giá trị x đều tìm được giá trị nguyên y bởi vì không phải bao giờ y2 cũng là một số nguyên dương Xác định số điểm trên đường cong E nhằm
xác định không gian khóa của hệ mật
Với E là đường cong Elliptic trên trường Fq, và #E(Fq) là tổng số điểm trên
đường cong đó
Ta có ánh xạ Probenius được định nghĩa như sau:
φq(x,y) = (x q ,y q ), φq(∞) = ∞ Khi đó số điểm trên đường cong E sẽ là:
#E(Fq) = deg(φq − 1) [13].
2.3 Ứng dụng của đường cong elliptic trong chữ ký số
2.3.1 Quá trình sinh khoá
Người gửi muốn gửi một thông điệp có chữ ký cho người nhận Ban đầu, họ phải đồng ý với nhau các tham số đường cong (CURVE, G, n) Ngoài các trường và
phương trình của đường cong, cần điểm cơ sở G; n là bậc của điểm G Người ký sẽ
chọn số d làm khóa bí mật và tạo ra khóa công khai là Q A = d A G
Trang 39Bước 1: Chọn số ngẫu nhiên d trong khoảng [1, n-1] làm khóa bí mật
Bước 2: Tính Q A = d A G làm khóa công khai.
2.3.2 Thuật toán ký trên bản rõ
Người gửi sử dụng hàm băm H để tạo ra giá trị tóm lược văn bản e của văn bản
m Chữ ký số sẽ là cặp (r, s) được tính theo các bước như sau[9]:
Bước 1: Tính e = HASH(m), với HASH là hàm băm, ví dụ như SHA-256 Bước 2: Cho z bằng L n bit trái nhất của e, với L n là độ dài bit của n
Bước 3: Chọn một số nguyên ngẫu nhiên k trong khoảng [1, n-1]
Bước 4: Tính điểm C ( x1, y1¿=k G
Bước 5: Tính r = x1 mod n Nếu r = 0, quay lại bước 3
Bước 6: Tính s = k−1 (z + r d A )mod n Nếu s = 0 thì quay lại bước 3
sau[9]:
Bước 1: Kiểm tra r và s có thuộc khoảng [1, n-1] hay không
Bước 2: Tính e' = HASH(m'), với HASH là hàm băm
Bước 3: Cho z' bằng L n bit trái nhất của e
Bước 4: Tính w = s−1 mod n