BỘ THƠNG TIN VÀ TRUYỀN THƠNG
HỌC VIỆN BƯU CHÍNH VIỄN THÔNG
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGHIÊN CỨU MỘT SỐ TẤN CƠNG TÌM KHĨA
RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ
NONCE TRONG CHUẨN KÝ SỐ ECDSA
SECP256K1
Giảng viên hướng dẫn
Học viên thực hiện
Lớp
Khóa
Chun ngành
: TS. Nguyễn Đại Phúc
: Ngơ Trung Bảo
: K28
: 28
: Công nghệ thông tin
Hà Nội, 2023
BỘ THƠNG TIN VÀ TRUYỀN THƠNG
HỌC VIỆN BƯU CHÍNH VIỄN THÔNG
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGHIÊN CỨU MỘT SỐ TẤN CƠNG TÌM KHĨA
RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ
NONCE TRONG CHUẨN KÝ SỐ ECDSA
SECP256K1
Giảng viên hướng dẫn
Học viên thực hiện
Lớp
Khóa
Chun ngành
: TS. Nguyễn Đại Phúc
: Ngơ Trung Bảo
: K28
: 28
: Công nghệ thông tin
Hà Nội, 2023
LỜI CẢM ƠN
Trước tiên, em xin tỏ lòng biết ơn sâu sắc tới tồn thể các thầy, cơ giáo
trường HỌC VIỆN BƯU CHÍNH VIỄN THƠNG, đặc biệt là các thầy, cô giáo
trong Khoa công nghệ thông tin đã dạy dỗ, truyền đạt những kiến thức quý báu
cho em trong suốt 5 năm học tập và rèn luyện tại trường. Vốn kiến thức mà các
thầy, cô đã truyền đạt không chỉ là nền tảng cho quá trình nghiên cứu đồ án tốt
nghiệp mà còn là hành trang quý báu để em bước vào thực tế cơng việc.
Qua gần 5 tháng tìm hiểu, em đã hoàn thành đồ án tốt nghiệp của mình.
Đặc biệt, để có thể hồn thành đồ án này, em xin gửi lời cảm ơn chân thành tới
thầy giáo TS. Nguyễn Đại Phúc đã tận tình hướng dẫn, chỉ bảo, nhắc nhở và giúp
đỡ em trong suốt thời gian làm đồ án vừa qua.
Được hoàn thành trong thời gian hạn hẹp và với vốn kiến thức còn hạn chế,
đồ án của em chắc chắn có nhiều thiếu sót, khuyết điểm. Em kính mong nhận
được những nhận xét và góp ý từ q thầy cơ để em có thể tiếp tục đi sâu tìm hiểu
và mở rộng nhằm hồn thiện và phát triển đề tài.
Em xin chân thành cảm ơn!
i
LỜI CAM ĐOAN
Tôi xin cam đoan bản đồ án này do tôi tự nghiên cứu dưới sự hướng dẫn
của thầy giáo TS. Nguyễn Đại Phúc.
Để hoàn thành đồ án này, tôi chỉ sử dụng những tài liệu đã ghi trong mục
tài liệu tham khảo, ngồi ra khơng sử dụng bất kỳ tài liệu nào khác mà không
được ghi.
Nếu sai tôi xin chịu mọi hình thức kỷ luật theo quy định của Học viện.
Hà Nội, ngày tháng năm 2023
Học viên thực hiện
(Ký và ghi rõ họ tên)
Ngô Trung Bảo
ii
MỤC LỤC
LỜI CẢM ƠN ........................................................................................................ i
LỜI CAM ĐOAN.................................................................................................. ii
MỤC LỤC ............................................................................................................ iii
CÁC KÝ HIỆU, CHỮ VIẾT TẮT ........................................................................ v
DANH MỤC HÌNH VẼ ....................................................................................... vi
LỜI MỞ ĐẦU ..................................................................................................... vii
CHƯƠNG 1: Tổng quan về chữ ký số .................................................................. 1
1.1. Khái niệm ................................................................................................... 1
1.2. Một số lược đồ ký số phổ biến hiện nay .................................................... 4
1.2.1. Lược đồ chữ ký số RSA ...................................................................... 4
1.2.2. Lược đồ chữ ký số Elgamal ................................................................ 7
1.3. Vai trò, ứng dụng của chữ ký số .............................................................. 10
1.4. Kết luận chương 1 .................................................................................... 12
CHƯƠNG 2: Nghiên cứu một số tấn công lên ECDSA SECP256K1 liên quan
giá trị Nonce ........................................................................................................ 13
2.1. Lược đồ ký số ECDSA SECP256K1 ....................................................... 13
2.1.1. Các tham số miền của ECDSA SECP256K1 .................................... 13
2.1.2. Thuật toán tạo khóa ........................................................................... 17
2.1.3. Thuật tốn ký..................................................................................... 18
2.1.4. Thuật tốn kiểm tra ........................................................................... 19
2.1.5. Nhận xét độ an toàn của lược đồ ECDSA......................................... 21
2.2. Tấn công lược đồ ký số ECDSA SECP256K1 liên quan giá trị Nonce .. 23
2.2.1. Tấn cơng tìm khóa riêng ECDSA SECP256K1 từ rị rỉ giá trị Nonce
..................................................................................................................... 23
iii
2.2.2. Tấn cơng tìm khóa riêng ECDSA SECP256K1 với giá trị Nonce
tương tự đã dùng ......................................................................................... 24
2.3. Biện pháp phòng chống ............................................................................ 26
2.4. Ứng dụng của ECDSA SECP256K1 trong Blockchain ........................... 27
2.4.1. Ký và xác minh giao dịch trong Blockchain ..................................... 28
2.4.2. Địa chỉ và dẫn xuất địa chỉ trong blockchain .................................... 31
2.5. Kết luận chương 2 .................................................................................... 32
CHƯƠNG 3: Thực thi một số tấn cơng tìm khóa riêng liên quan giá trị Nonce
trong ECDSA SECP256K1 ................................................................................. 33
3.1. Cài đặt ECDSA SECP256K1 ................................................................... 33
3.1.1. Một số lưu đồ giải thuật chính trong chương trình ........................... 33
3.1.2. Cài đặt và thử nghiệm chương trình thử nghiệm chương trình ........ 37
3.2. Thực thi tấn cơng...................................................................................... 42
3.2.1. Tấn cơng tìm khóa riêng khi sử dụng lại nonce bởi cùng một người
dùng ............................................................................................................. 42
3.2.2. Tấn cơng tìm khóa riêng khi sử dụng lại nonce bởi hai người dùng 43
3.3. Cài đặt giải pháp và đánh giá ................................................................... 45
3.3.1. Cài đặt giải pháp................................................................................ 45
3.3.2. Đánh giá ............................................................................................ 49
3.4. Kết luận chương 3 .................................................................................... 49
KẾT LUẬN ......................................................................................................... 50
TÀI LIỆU THAM KHẢO ................................................................................... 51
iv
CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Viết tắt
Tiếng Anh
Tiếng Việt
ANSI
American National Standard
Viện tiêu chuẩn quốc gia Hoa Kỳ
Institute
DLP
Discrete Logarithm Problem
Bài toán logarithm rời rạc
ECC
Elliptic Curve Cryptosystem
Hệ mật trên đường cong Elliptic
ECDSA
Elliptic Curve Digital Signature
Thuật toán chữ ký số trên đường
Algorithm
cong Elliptic
Federal Information
Tiêu chuẩn xử lý thông tin liên
Processing Standard
bang
Hash - based Message
Mã xác thực thông báo dựa trên
Authentication Code
hàm hash
International Organization for
Tổ chức tiêu chuẩn hóa quốc tế
FIPS
HMAC
ISO
Standardization
OS2I
Octet String to Integer
NIST
The National Institute of
Hàm biến đổi chuỗi octet thành
số nguyên
Viện tiêu chuẩn và cơng nghệ
Standards and Technology
quốc gia
PoS
Proof of Stake
Thuật tốn bằng chứng cổ phần
PoW
Proof of Work
Thuật tốn bằng chứng cơng việc
RFC
Request for Comments
Đề nghị duyệt thảo và bình luận
RSA
Rivest–Shamir–Adleman
Thuật tốn mã hóa khóa cơng
khai RSA
RNG
Random Number Generator
Sinh số ngẫu nhiên
SHA
Secure Hash Algorithm
Thuật tốn băm an tồn
v
DANH MỤC HÌNH VẼ
Hình 1.1. Sơ đồ tạo và kiểm tra chữ ký số ............................................................ 3
Hình 1.2: Sơ đồ hoạt động của lược đồ chữ ký số RSA ....................................... 5
Hình 1.3: Sơ đồ hoạt động của lược đồ chữ ký số Elgamal.................................. 7
Hình 2.1: Đường cong y2 = x3 + 7 ................................................................ 15
Hình 2.2: Quy trình tính tốn chữ ký .................................................................. 18
Hình 2.3: Quy trình kiểm tra chữ ký ................................................................... 20
Hình 2.4: Khuyến nghị NIST về độ bảo mật và thời gian sử dụng các thuật toán
mật mã cơ bản năm 2020 .................................................................................... 22
Hình 2.5: Các bước thực hiện giao dịch trong Blockchain ................................. 29
Hình 3.1: Lưu đồ thuật tốn tạo khóa chữ ký số ECDSA SECP256K1 ............. 33
Hình 3.2: Lưu đồ thuật toán tạo chữ ký số ECDSA SECP256K1 ...................... 34
Hình 3.3: Lưu đồ thuật tốn kiểm tra chữ ký số ECDSA SECP256K1.............. 36
Hình 3.4: Giao diện Mơ-đun sinh khóa............................................................... 37
Hình 3.5: Giao diện mơ-đun Tạo chữ ký ............................................................ 38
Hình 3.6: Giao diện mơ-đun Xác minh chữ ký ................................................... 38
Hình 3.7: Mơ tả kết quả sinh khóa dùng cho ký số............................................. 39
Hình 3.8: Mơ tả kết quả tạo chữ ký ..................................................................... 40
Hình 3.9: Kết quả kiểm tra chữ ký (hợp lệ) ........................................................ 40
Hình 3.10: Kết quả kiểm tra chữ ký (khơng hợp lệ) ........................................... 41
Hình 3.11: Giao diện phần mềm mơ phỏng tấn cơng tìm khóa riêng khi sử dụng
lại nonce bởi cùng một người dùng..................................................................... 42
Hình 3.12: Kết quả tấn cơng tìm khóa bí riêng khi sử dụng lại nonce bởi cùng
một người dùng ................................................................................................... 43
Hình 3.13: Giao diện phần mềm mơ phỏng tấn cơng tìm khóa riêng khi sử dụng
lại nonce bởi hai người dùng ............................................................................... 44
Hình 3.14: Kết quả tấn cơng tìm khóa bí riêng khi sử dụng lại nonce bởi bởi hai
người dùng........................................................................................................... 44
Hình 3.15: Lưu đồ thuật toán sinh k theo RFC 6979 .......................................... 46
vi
LỜI MỞ ĐẦU
1. Tính cấp thiết của đề tài
Hiện nay, sự bùng nổ mạnh mẽ của mạng Internet đóng vai trò quan trọng
và to lớn cho sự phát triển của xã hội. Bên cạnh những lợi ích lớn lao mạng lại thì
mạng Internet ln tiềm ẩn những rủi ro gây mất an tồn dữ liệu người dùng, tính
bảo mật và sự riêng tư. Do đó cần có các biện pháp để ngăn chặn các nguy cơ này.
Chữ ký số là một trong những phương pháp hiệu quả nhằm đảm bảo tính xác thực
nguồn gốc dữ liệu. Mọi thay đổi sau khi tài liệu được ký đều không hợp lệ, do đó
ngăn chặn việc giả mạo và chống chối bỏ. Hiện nay đã có nhiều thuật tốn chữ ký
số được sử dụng và một trong số đó là thuật tốn chữ ký số dự trên đường cong
Elliptic (ECDSA – Elliptic Curve Digital Signature Algorithm). ECDSA lần đầu
tiên được đề xuất vào năm 1992 bởi Scott Vanstone và được phê duyệt thành tiêu
chuẩn của ANSI (Viện tiêu chuẩn quốc gia Hoa Kỳ) vào năm 1999 (ANSI X9.621998). ECDSA được ứng dụng rộng rãi trong rất nhiều lĩnh vực cần tính bảo mật,
đặc biệt như trong Blockchain.
Công nghệ Blockchain trở thành xu hướng chính trong cuộc cách mạng
cơng nghệ 4.0. Để đảm bảo cho một chuỗi khối hoạt động thì chữ ký số đóng một
vai trị rất quan trọng. Chữ ký số có liên quan đến hai giai đoạn là giai đoạn ký và
giai đoạn xác minh các giao dịch. Lược đồ chữ ký số điển hình được sử dụng
trong cơng nghệ Blockchain là ECDSA, đặc biệt là ECDSA trên đường cong
SECP256K1. Tuy nhiên việc sử dụng giá trị Nonce không đúng trong ECDSA
trên đường cong SECP256K1 có thể dẫn đến các tấn cơng tìm được khóa riêng.
Trên cơ sở từ thực tiễn đấy, em đã chọn đề tài "Nghiên cứu một số tấn cơng
tìm khóa riêng liên quan việc thực thi giá trị Nonce trong chuẩn ký số ECDSA
SECP256K1" làm đồ án tốt nghiệp của mình. Việc nghiên cứu giúp em hiểu rõ
hơn về chuẩn ký số ECDSA đặc biệt về các nguy cơ mất an tồn và giải pháp
phịng chống.
vii
2. Mục tiêu đề tài:
- Tìm hiểu lược đồ ký số ECDSA trên đường cong SECP256K1;
- Nghiên cứu các tấn công lên ECDSA SECP256K1 liên quan giá trị Nonce;
- Thực thi tấn cơng lên ECDSA SECP256K1 tìm khóa riêng liên quan giá trị
Nonce.
3. Kết cấu của đồ án tốt nghiệp
Sau khi tìm hiểu, nghiên cứu, nội dung và kết quả đồ án sẽ được trình bày
trong ba chương như sau:
Chương 1: Tổng quan về chữ ký số
Chương này trình bày những kiến thức nền tảng về chữ ký số và các lược
đồ chữ ký số phổ biến hiện nay.
Chương 2: Nghiên cứu một số tấn công lên ECDSA SECP256K1 liên
quan giá trị Nonce
Chương này giới thiệu về lược đồ ký số ECDSA SECP256K1 và phân tích
các tấn cơng lược đồ ký số ECDSA SECP256K1 liên quan giá trị Nonce từ đó
đưa ra các biện pháp để phịng chống các nguy cơ tấn công này.
Chương 3: Thực thi một số tấn cơng tìm khóa riêng liên quan giá trị
Nonce trong ECDSA SECP256K1
Chương này thực thi tấn cơng tìm khóa riêng liên quan giá trị Nonce trong
ECDSA SECP256K1.
Cuối cùng là phần kết luận, tóm lược lại những kết quả đã đạt được và đề
xuất hướng phát triển trong tương lai.
viii
CHƯƠNG 1: TỔNG QUAN VỀ CHỮ KÝ SỐ
1.1. Khái niệm
Chữ ký thơng thường (chữ ký tay) đã có từ lâu đời và là một phần vật lý
của tài liệu, là phương tiện để xác thực nguồn gốc và nội dung của tài liệu đó.
Ngồi ra, chữ ký tay cịn có khả năng chống chối bỏ, tức là người gửi sau khi đã
ký vào tài liệu thì khơng thể chối bỏ chữ ký của mình và tài liệu sau khi được ký
thì khơng thể thay đổi được nội dung. Chữ ký tay là đại diện duy nhất cho người
ký, không ai khác có thể giả mạo được và dễ dàng được nhận ra khi nhìn thấy.
Việc kiểm tra tính xác thực của chữ ký tay cũng được thực hiện bằng những
phương pháp đơn giản (so sánh chữ ký tay trên tài liệu với các chữ ký đã đăng ký
trước của người ký) nhằm khẳng định chữ ký đúng là của người ký và nội dung
của tài liệu không bị sửa đổi hoặc thêm bớt.
Đối với tài liệu điện tử, chữ ký tay khơng cịn đảm bảo được tính năng của
nó. Do đó cần phải có một phương tiện mới để thay thế chữ ký tay. Chữ ký số
(hay còn gọi là chữ ký điện tử) đã ra đời và được đưa vào sử dụng một cách hiệu
quả.
Định nghĩa 1.1[1]: Chữ ký số (Digital Signature) là một dãy số, là kết quả
của phép biến đổi mật mã trên thông báo nhằm cung cấp một phương tiện để kiểm
tra tính xác thực của nguồn gốc thơng báo, tính tồn vẹn của thơng báo và tính
khơng thể chối bỏ của người ký. Thơng thường, chữ ký số được biểu diễn dưới
dạng một dãy số nhị phân.
Chữ ký số được tạo ra trên cơ sở sử dụng tập hợp các quy tắc và tập hợp
các tham số để xác định danh tính người ký cũng như kiểm tra tính tồn vẹn của
dữ liệu. Trong đó, phương tiện cơ bản để thực hiện chữ ký số là công nghệ thông
tin. Mỗi chữ ký số được tạo và được kiểm tra tính xác thực thơng qua các lược đồ
chữ ký số. Mỗi lược đồ chữ ký số bao gồm thuật toán ký 𝑆𝑖𝑔𝐾 và thuật toán kiểm
tra 𝑉𝑒𝑟𝐾 . Mỗi người có một cặp khóa bao gồm khóa riêng 𝐷𝐾 và khóa cơng khai
𝐸𝐾 , trong đó khóa cơng khai thường được cơng bố một cách cơng khai hoặc phân
phối thơng qua chứng thực khóa cơng khai, cịn khóa riêng được giữ bí mật tuyệt
1
đối và khơng thể tìm ra khóa riêng từ khóa cơng khai. Người gửi sử dụng thuật
tốn ký 𝑆𝑖𝑔𝐾 và khóa riêng 𝐷𝐾 để tạo ra chữ ký số, người nhận sử dụng thuật tốn
kiểm tra 𝑉𝑒𝑟𝐾 và khóa cơng khai 𝐸𝐾 tương ứng để kiểm tra tính xác thực của
thơng báo và tính xác thực của chữ ký số do người gửi tạo ra. Trong quá trình tạo
và kiểm tra chữ ký, thông báo được thu gọn nhờ áp dụng thuật tốn băm an tồn.
Một người khơng biết khóa riêng của người đã ký thơng báo thì khơng thể tạo ra
được chữ ký số đó nên chữ ký số là khơng thể bị giả mạo. Khi sử dụng khóa công
khai tương ứng của người ký, bất kỳ ai cũng có thể kiểm tra tính xác thực của chữ
ký số trên thông báo đã được ký.
Trong thực tế sử dụng, các thơng báo thường có độ dài bất kỳ và nói chung
là dài. Trong khi đó một lược đồ chữ ký số chỉ ký được các thông báo ngắn. Để
ký được các thông báo dài người ta phải chia thông báo ra thành nhiều phần ngắn
và ký vào tất cả các phần này rồi gửi đi. Những hạn chế cơ bản của giải pháp này
là:
- Có quá nhiều chữ ký số cho một thông báo làm giãn tin quá mức.
- Do quá trình ký một chữ ký số cần thực hiện các phép tốn tốn thời gian
do đó thời gian để ký thông báo là không thể chấp nhận được.
Các nhà phát triển mong muốn như trong trường hợp chữ ký viết tay, chữ
ký có độ dài ngắn và hạn chế cho dù thơng báo có độ dài bằng bao nhiêu. Vì chữ
ký số được ký cho từng bit của thơng báo, nếu muốn chữ ký có độ dài hạn chế
trên thơng báo có độ dài tùy ý thì ta phải tìm cách rút gọn độ dài thơng báo. Nhưng
bản thân thông báo không thể rút ngắn được, nên chỉ cịn cách tìm cho mỗi thơng
báo một thơng báo thu gọn có độ dài hạn chế và thay việc ký trên thông báo, ta ký
trên thông báo thu gọn. Để giải quyết vấn đề này ta sử dụng hàm băm mật mã.
Trong lược đồ chữ ký số, với đầu vào là thơng báo có độ dài hữu hạn tùy
ý, hàm băm sẽ biến đổi thông báo này thành một thông báo rút gọn và sau đó sẽ
dùng thuật tốn ký để ký lên thơng báo rút gọn đó. Cụ thể, khi người ký cần ký
vào thông báo R anh ta ký trên bản tóm lược thơng báo 𝑧 = ℎ(𝑅) như sau: 𝑦 =
𝑆𝑖𝑔𝐾 (𝑧) và truyền cặp (𝑅, 𝑦) lên kênh truyền thơng. Q trình kiểm tra được thực
2
hiện thơng qua việc tính 𝑧 = ℎ(𝑅) dùng hàm băm công khai h và kiểm tra xem
hàm 𝑉𝑒𝑟𝐾 (𝑧, 𝑦) có nhận giá trị “đúng” hay khơng.
Cụ thể, q trình tạo và kiểm tra chữ ký số được mơ tả trong hình 1.1.
Hình 1.1. Sơ đồ tạo và kiểm tra chữ ký số
Quá trình tạo chữ ký số: Khi A cần gửi một thông báo cho B, A sử dụng
thuật tốn hàm băm để thu gọn thơng báo ban đầu nhằm tạo ra bản tóm lược của
thơng báo. Tiếp đến, A sử dụng thuật toán ký với đầu vào là bản tóm lược của
thơng báo và khóa riêng của A để tạo ra một chữ ký số. Sau đó chữ ký số và chứng
chỉ cung cấp khóa cơng khai của A được gắn vào thông báo đã được ký rồi gửi
cho B.
Quá trình kiểm tra chữ ký số: B cũng sử dụng thuật toán hàm băm tương tự
như của A để tạo bản tóm lược của thơng báo đã nhận. B sử dụng khóa cơng khai
được cung cấp để giải mã chữ ký và thu được một dãy bit, so sánh kết quả này với
bản tóm lược vừa tạo. Nếu kết quả là giống nhau thì thơng báo trên chính là của
A gửi cho B.
3
Trong trường hợp thơng báo cần giữ bí mật thì A có thể mã hóa dữ liệu
được ký trước khi gửi.
Một lược đồ chữ ký số là bộ 5 (ℛ, 𝒜, 𝒦, 𝒮, 𝒱), trong đó:
1. ℛ là tập hữu hạn các thơng báo có thể.
2. 𝒜 là tập hữu hạn các chữ ký số có thể.
3. 𝒦 khơng gian khóa là tập hữu hạn các khóa có thể.
4. Với mỗi khóa 𝐾 ∈ 𝒦, tồn tại một thuật tốn ký 𝑆𝑖𝑔𝐾 ∈ 𝒮 và một thuật
toán kiểm tra chữ ký 𝑉𝑒𝑟𝐾 ∈ 𝒱. Mỗi thuật toán ký 𝑆𝑖𝑔𝐾 : 𝑅 → 𝒜 và thuật
toán kiểm tra chữ ký 𝑉𝑒𝑟𝐾 : ℛ × 𝒜 →{đúng, sai} là những hàm thỏa
mãn điều kiện dưới đây:
đú𝑛𝑔, 𝑛ế𝑢 𝑦 = 𝑆𝑖𝑔𝐾 (𝑥)
𝑉𝑒𝑟𝐾 (𝑥, 𝑦) = {
𝑠𝑎𝑖, 𝑛ế𝑢 𝑦 ≠ 𝑆𝑖𝑔𝐾 (𝑥)
với mọi thông báo 𝑥 ∈ ℛ và mọi chữ ký 𝑦 ∈ 𝐴.
Với mỗi khóa 𝐾 ∈ 𝒦, các hàm 𝑆𝑖𝑔𝐾 và 𝑉𝑒𝑟𝐾 là các hàm thời gian đa thức.
𝑉𝑒𝑟𝐾 sẽ là hàm cơng khai cịn 𝑆𝑖𝑔𝐾 là hàm bí mật. Hàm 𝑆𝑖𝑔𝐾 là khó tính được
nếu khơng biết khóa riêng 𝐾, điều này đảm bảo cho tính bí mật của chữ ký và
chống việc giả mạo chữ ký. Nghĩa là cho trước thơng báo x, chỉ có người có khóa
riêng K mới có thể tính được chữ ký y để 𝑉𝑒𝑟𝐾 (𝑥, 𝑦) = đú𝑛𝑔.
1.2. Một số lược đồ ký số phổ biến hiện nay
1.2.1. Lược đồ chữ ký số RSA
Lược đồ chữ ký RSA có độ phức tạp tính tốn phụ thuộc vào việc giải quyết
bài toán lũy thừa theo modulo các số rất lớn.
Lược đồ chữ ký RSA được đề xuất năm 1977 bởi 3 nhà nghiên cứu Rivest,
Shamir và Adleman, đây là lược đồ có ứng dụng thực tế rộng rãi nhất dựa trên
cơng nghệ sử dụng khóa chung. Các phương pháp tấn công RSA đầu tiên
(Multicative Property) và các vấn đề khác liên quan tới chữ ký RSA được đưa ra
bởi Davia và Jonge và Chaum.
Bài toán xác thực bằng chữ ký số có thể xem là bài toán "đối ngẫu" với bài
toán bảo mật bằng mật mã, do đó dùng ngược thuật tốn lập mã RSA ta có thể
được một lược đồ chữ ký RSA. Lược đồ chữ ký số RSA được xây dựng như sau:
4
Gửi ( R, S A ) cho B
B
A
DA = d A
Công bố EA
EB = (nB , eB )
Công bố EB
E A = (n A , e A )
Lấy EA
DB = d B
Kiểm tra: R = S AeA mod n A
Ký: S A = R d A mod n A
Hình 1.2: Sơ đồ hoạt động của lược đồ chữ ký số RSA
Tạo khóa: Mỗi đầu mối trong mạng liên lạc cần tạo một cặp khóa: khóa
cơng khai và khóa riêng bí mật:
1. Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau 𝑝, 𝑞; trong đó 𝑝 và 𝑞
có độ lớn xấp xỉ nhau.
2. Tính 𝑛 = 𝑝. 𝑞 và 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1).
3. Chọn một số nguyên ngẫu nhiên 𝑒, (0 < 𝑒 < 𝜙(𝑛)) sao cho 𝑔𝑐𝑑
(𝑒, 𝜙(𝑛)) = 1.
4. Tính 𝑑 = 𝑒 −1 𝑚𝑜𝑑 𝜙(𝑛) bằng cách dùng thuật toán Euclide mở rộng.
5. Đặt 𝛼𝑅 = 𝐴 = 𝑍𝑛 , 𝐾 = {(𝑛, 𝑒, 𝑑): 𝑒𝑑 ≡ 1 𝑚𝑜𝑑 𝜙(𝑛)}ta có khóa cơng
khai là 𝐸𝐾 = (𝑒, 𝑛), khóa riêng bí mật là 𝐷𝐾 = 𝑑.
Tạo chữ ký số: Giả sử A phải tạo một chữ ký số để xác thực cho thông báo
𝑅 gửi cho B. Khi đó A làm như sau:
1. Biểu diễn bản rõ 𝑅 dưới dạng một số nguyên trong đoạn [0, 𝑛 − 1].
2. Sử dụng thuật toán ký với khóa riêng của mình để tạo chữ ký số trên
thông báo R:
𝑆 = 𝑆𝑖𝑔𝐷𝐾 (𝑅) = 𝑅𝑑 𝑚𝑜𝑑 𝑛.
3. Gửi thông báo R kèm theo chữ ký số S cho B.
Kiểm tra chữ ký: Với chữ ký S và thơng báo R, B có thể kiểm tra chữ ký số
S để xác thực thông báo R theo các bước sau:
1. Nhận khóa cơng khai 𝐸𝐴 = (𝑒, 𝑛) của người ký A.
2. Sử dụng thuật toán kiểm tra công khai 𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑆) của A để kiểm tra
chữ ký S theo công thức sau:
5
𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑆) = đú𝑛𝑔 ⇔ 𝑅 ≡ 𝑆 𝑒 𝑚𝑜𝑑 𝑛
Ví dụ: Giả sử A cần ký một chữ ký S lên thơng báo 𝑚 = 43
Tạo khóa: Chọn số nguyên tố 𝑝 = 31, 𝑞 = 29,
Tính 𝑛 = 𝑝 ∗ 𝑞 = 31 ∗ 29 = 899
𝜙(𝑛) = (𝑝 − 1)(𝑝 − 1) = 30 ∗ 28 = 840
Chọn khóa cơng khai 𝑒(0 < 𝑒 < 𝜙(𝑛)) ⇒ 𝑒 = 613. Ta có 𝑔𝑐𝑑(𝑒, 𝜙(𝑛)) =
𝑔𝑐𝑑(613, 840) = 1. Tính khóa riêng: 𝑑 = 𝑒 −1 𝑚𝑜𝑑𝜙(𝑛) = 613−1 𝑚𝑜𝑑 840 =
37
Ta có khóa cơng khai là 𝐸𝐾 = (𝑒, 𝑛) = (613, 899), khóa riêng là 𝐷𝐾 =
𝑑 = 37.
Tạo chữ ký: Chữ ký trên m là 𝑆 = 𝑚𝑑 𝑚𝑜𝑑 𝑛 = 4337 𝑚𝑜𝑑 899 = 148
Kiểm tra chữ ký: Tính 𝑚′ = 𝑆 𝑒 𝑚𝑜𝑑 𝑛 = 148613 𝑚𝑜𝑑 899 = 43
Chữ ký đúng vì 𝑚’ = 𝑚 .
Độ an tồn của lược đồ chữ ký số RSA: Giả mạo chữ ký đối với lược đồ
chữ ký số RSA là khó như giải bài tốn phân tích số ngun n ra thừa số ngun
tố, hoặc giải phương trình 𝑅 = 𝑆 𝑒 𝑚𝑜𝑑 𝑛. Bài toán giả mạo chữ ký được hiểu là:
cho trước 𝑛, 𝑅, 𝑒 hãy tạo ra chữ ký số S sao cho 𝑅 = 𝑆 𝑒 𝑚𝑜𝑑 𝑛.
Vì 𝑆 = 𝑆𝑖𝑔𝐷 (𝑅) = 𝑅𝑑 mod 𝑛, nên muốn tạo ra được S thì đối phương phải
tính được d. Vì 𝑑 ≡ 𝑒 −1 𝑚𝑜𝑑 𝜑 (𝑛) nên để tính d đối phương phải tính được
𝜙(𝑛). Mà 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1) nên để tính 𝜙(𝑛) đối phương phải biết p và q.
Tức là đối phương sẽ phải giải bài tốn phân tích n thành tích của hai thừa số
nguyên tố p và q. Như trên đã trình bày, đây là bài tốn khó giải trong thời gian
đa thức với n đủ lớn.
Tuy nhiên, đối phương cũng có thể tìm S bằng cách giải phương trình đại
số tuyến tính 𝑅 = 𝑆 𝑒 mod 𝑛 trên vành 𝑍𝑛 . Đây là loại bài tốn khơng giải được
trừ khi biết phân tích 𝑛 = 𝑝. 𝑞 để đưa bài tốn giải phương trình đại số này về bài
tốn trên vành 𝑍𝑝 , 𝑍𝑞 và hồn tồn giải được để tìm S nhờ định lý phần dư Trung
hoa.
6
Tóm lại, để tính S thì đối phương phải tính được d bằng cách phân tích 𝑛 =
𝑝. 𝑞 giống như việc phá hệ mật RSA. Từ lược đồ RSA nguyên thủy, các lược đồ
mã hóa và ký số RSA an toàn đã được xây dựng và thành một chuẩn mật mã được
sử dụng rộng rãi trên thế giới cũng như ở Việt Nam.
1.2.2. Lược đồ chữ ký số Elgamal
Lược đồ chữ ký số Elgamal được đề xuất năm 1985. Đây là một lược đồ
chữ ký số không tất định, có nghĩa là có nhiều chữ ký hợp lệ trên thơng báo R cho
trước bất kỳ, và thuật tốn kiểm tra chữ ký phải có khả năng chấp nhận bất kỳ chữ
ký hợp lệ nào khi xác thực.
Lược đồ chữ ký số Elgamal có độ an tồn dựa trên độ khó của bài tốn
logarit rời rạc và được thiết kế với mục đích dành riêng cho chữ ký số. (Lược đồ
RSA dùng cho cả hệ thống mã khóa cơng khai lẫn chữ ký số). Lược đồ chữ ký số
Elgamal được xây dựng như sau:
Gửi ( R, S A ) cho B
B
A
DA = a A
Công bố EA
EB = ( pB , g B , y B )
Công bố EB
EA = ( pA, g A, yA )
Lấy EA
Ký: S A = (u, v)
DB = aB
Kiểm tra: y uu v = g A R mod p A ?
u = g Ak mod p A
v = ( R − a Au )k −1 mod( p A − 1)
Hình 1.3: Sơ đồ hoạt động của lược đồ chữ ký số Elgamal
Tạo khóa: Mỗi đầu mối trong mạng liên lạc cần tạo một cặp khóa: khóa
cơng khai và khóa riêng bí mật:
1. Tạo 1 số ngun tố lớn 𝑝 và một phần tử sinh 𝑔 của nhóm nhân 𝑍𝑝∗ . Đặt
𝛼𝑅 = 𝑍𝑝∗ , 𝐴 = 𝑍𝑝∗ × 𝑍𝑝−1 .
2. Chọn một số nguyên ngẫu nhiên 𝑎, 2 ≤ 𝑎 ≤ 𝑝 − 2 và tính:
𝑦 = 𝑔𝑎 𝑚𝑜𝑑 𝑝.
7
3. Đặt 𝐾 = {(𝑝, 𝑔, 𝑎, 𝑦): 𝑦 ≡ 𝑔𝑎 𝑚𝑜𝑑 𝑝}ta có khóa cơng khai là bộ ba tham
số 𝐸𝐾 = (𝑝, 𝑔, 𝑦), khóa riêng bí mật là 𝐷𝐾 = 𝑎.
Tạo chữ ký số: Giả sử A phải tạo một chữ ký số để xác thực cho thơng báo
𝑅 gửi cho B. Khi đó A làm như sau:
1. Biểu diễn thông báo 𝑅 dưới dạng một số nguyên trong đoạn [1, 𝑝 − 1].
2. Chọn số nguyên ngẫu nhiên bí mật 𝑘, 2 ≤ 𝑘 ≤ 𝑝 − 2.
3. Sử dụng thuật tốn ký với khóa riêng của mình để tạo chữ ký số trên
thơng báo R:
𝑆 = 𝑆𝑖𝑔𝐷𝐾 (𝑅, 𝑘) = (𝑢, 𝑣), trong đó:
𝑢 = 𝑔𝑘 𝑚𝑜𝑑 𝑝
𝑣 = (𝑅 − 𝑎𝑢)𝑘 −1 𝑚𝑜𝑑( 𝑝 − 1)
4. Gửi thông báo R kèm theo chữ ký số S cho B.
Kiểm tra chữ ký: Với chữ ký 𝑆 = (𝑢, 𝑣) và thơng báo R, B có thể kiểm tra
chữ ký số S để xác thực thông báo R theo các bước sau:
1. Nhận khóa cơng khai 𝐸𝐴 = (𝑝, 𝑔, 𝑦) của người ký A.
2. Sử dụng thuật tốn kiểm tra cơng khai 𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑆) của A để kiểm tra
chữ ký S theo công thức sau:
𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑢, 𝑣) = đú𝑛𝑔 ⇔ 𝑦 𝑢 𝑢𝑣 ≡ 𝑔𝑅 𝑚𝑜𝑑 𝑝
Chữ ký số 𝑆 = (𝑢, 𝑣) là một cặp hai số trên thông báo R. Ta dễ thấy rằng
lược đồ chữ ký được xây dựng như trên là thoả mãn các điều kiện trong định nghĩa
của lược đồ chữ ký số. Thật vậy, nếu 𝑆𝑖𝑔𝐷𝐾 (𝑅) = (𝑢, 𝑣) thì:
𝑦 𝑢 𝑢𝑣 ≡ 𝑔𝑎𝑢 𝑔𝑘𝑣 𝑚𝑜𝑑 𝑝 ≡ 𝑔𝑅 𝑚𝑜𝑑 𝑝
vì 𝑘𝑣 + 𝑎𝑢 ≡ 𝑅 𝑚𝑜𝑑 (𝑝 − 1). Do đó 𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑢, 𝑣) nhận giá trị ”đúng”.
Ví dụ: Giả sử A cần ký một chữ ký S lên thông báo 𝑅 = 31
Tạo khóa: A chọn số nguyên tố lớn 𝑝 = 41 và một phần tử sinh 𝑔 =2 của nhóm
∗
nhân 𝑍47
. A chọn một số nguyên ngẫu nhiên 𝑎 = 23 và tính 𝑦 =
𝑔𝑎 𝑚𝑜𝑑 𝑝 = 223 𝑚𝑜𝑑 41 = 8 .
Ta có:
Khóa cơng khai của A là bộ ba tham số 𝐸𝐾 = (𝑝, 𝑔, 𝑦) = (41,2,8)
Khóa riêng của A bí mật là 𝐷𝐾 = (𝑎) = 23.
8
Tạo chữ ký: Để ký trên thông báo 𝑅 = 31 gửi cho B. Khi đó A làm như sau:
Chọn số nguyên ngẫu nhiên bí mật 𝑘 = 21.
Sử dụng thuật tốn ký với khóa riêng của mình để tạo chữ ký số trên thông
báo R: 𝑆𝐴 = 𝑆𝑖𝑔𝐷𝐾 (𝑅) = (𝑢, 𝑣)trong đó:
𝑢 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 = 221 𝑚𝑜𝑑 41 = 2097152 𝑚𝑜𝑑 41 = 2
𝑣 = (𝑅 − 𝑎𝑢)𝑘 −1 𝑚𝑜𝑑( 𝑝 − 1) = (31 − 23 ∗ 2)21−1 𝑚𝑜𝑑 40 = 5
(21−1 𝑚𝑜𝑑 40 = −19 𝑚𝑜𝑑 40 = 21)
Sau đó A gửi thơng báo và chữ ký số (𝑅, 𝑆𝐴 ) cho B.
Kiểm tra chữ ký: Với chữ ký 𝑆 = (𝑢, 𝑣) và thơng báo R, B có thể kiểm tra chữ
ký số S để xác thực thông báo R theo các bước sau:
Nhận khóa cơng khai 𝐸𝐴 = (𝑝, 𝑔, 𝑦) = (41,2,23) của người ký A.
Sử dụng thuật toán kiểm tra công khai 𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑆) của A để kiểm tra chữ
ký S theo công thức sau: 𝑉𝑒𝑟𝐸𝐾 (𝑅, 𝑢, 𝑣) = đú𝑛𝑔 ⇔ 𝑦 𝑢 𝑢𝑣 ≡ 𝑔𝑅 𝑚𝑜𝑑 𝑝
𝑦 𝑢 𝑢𝑣 = 82 25 𝑚𝑜𝑑 41 = 39
𝑔𝑅 𝑚𝑜𝑑 𝑝 = 231 𝑚𝑜𝑑 41 = 39
Ta có: 𝑦𝐴 𝑢 𝑢𝑣 ≡ 𝑔𝐴 𝑅 𝑚𝑜𝑑 𝑝𝐴 , vậy chữ ký là hợp lệ.
Độ an toàn của lược đồ chữ ký số Elgamal: Bài toán giả mạo chữ ký số
Elgamal được hiểu là biết thông báo R và các tham số cơng khai 𝑝, 𝑔, 𝑦. Hãy tìm
cặp (𝑢, 𝑣) sao cho:
𝑦 𝑢 𝑢𝑣 ≡ 𝑔𝑅 𝑚𝑜𝑑 𝑝
Lược đồ chữ ký số Elgamal địi hỏi phải gửi kèm đi cả thơng báo R và chữ
ký số của nó (𝑢, 𝑣). Đối phương khơng biết khóa riêng 𝐷𝐾 = 𝑎 mà muốn giả mạo
chữ ký số trên R là một việc khó tương đương với việc tính logarit rời rạc.
Giả sử đối phương chọn được giá trị u và cố gắng tìm v. Khi đó, đối phương phải
tính 𝑣 = 𝑙𝑜𝑔𝑢 𝑔𝑅 𝑦 −𝑢 (𝑚𝑜𝑑 𝑝).
Thật vậy, ta có: 𝑣 = (𝑅 − 𝑎𝑢)𝑘 −1 𝑚𝑜𝑑 (𝑝 − 1).
- Vì 𝑢 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 nên 𝑘 −1 = 𝑙𝑜𝑔𝑢 𝑔, suy ra 𝑣 = ((𝑅 − 𝑎𝑢) 𝑙𝑜𝑔𝑢 𝑔)
𝑚𝑜𝑑 (𝑝 − 1).
- Vì 𝑦 = 𝑔𝑎 𝑚𝑜𝑑 𝑝, nên 𝑎 = 𝑙𝑜𝑔𝑔 𝑦, suy ra −𝑎𝑢 = 𝑙𝑜𝑔𝑔 𝑦 −𝑢 .
9
- Mà 𝑅 = 𝑙𝑜𝑔𝑔 𝑔𝑅 , suy ra 𝑅 − 𝑎𝑢 = 𝑙𝑜𝑔𝑔 ( 𝑔𝑅 𝑦 −𝑢 ).
- Do đó: 𝑣 = 𝑙𝑜𝑔𝑔 ( 𝑔𝑅 𝑦 −𝑢 ) 𝑙𝑜𝑔𝑢 𝑔, hay 𝑣 = 𝑙𝑜𝑔𝑢 𝑔𝑅 𝑦 −𝑢 .
Ngược lại nếu đối phương chọn trước v, sau đó tìm u thì đối phương phải
giải phương trình 𝑦 𝑢 𝑢𝑣 ≡ 𝑔𝑅 𝑚𝑜𝑑 𝑝. Đây là phương trình khó giải, và để giải hai
phương trình này, đối phương cần phải tính logarit rời rạc trên trong trường 𝑍𝑝 .
Như vậy, ta có thể tin rằng khả năng giả mạo chữ ký trên một thơng báo cho trước
khi khơng biết khóa riêng là rất khó. Do đó, lược đồ chữ ký số Elgamal là an tồn.
Lược đồ chữ ký số Elgamal có nhược điểm là chữ ký số dài gồm 2 thành
phần (𝑢, 𝑣) và phải gửi đi kèm theo thông báo R. Thật vậy, để lược đồ an tồn thì
phải sử dụng số modulus p lớn, nhiều người cho rằng độ dài tối thiểu của p là
1024 bít. Khi đó, độ dài của chữ ký số sẽ là 2048 bít. Tuy vậy, do có nhiều tính
chất an tồn tốt nên lược đồ này được sử dụng rộng rãi hơn lược đồ chữ ký số
RSA và đặc biệt chuẩn chữ ký số được phát triển từ lược đồ chữ ký số Elgamal.
1.3. Vai trò, ứng dụng của chữ ký số
Chữ ký số có một vai trị quan trọng trong việc đảm bảo an tồn thơng tin
cho các giao dịch điện tử, là phương tiện hữu ích cho các doanh nghiệp trong
thương mại điện tử. Chữ ký số trong môi trường điện tử cũng có giá trị như một
chữ ký bình thường trong các giấy tờ, văn bản. Cụ thể thì chữ ký số phục vụ ba
mục đích: Xác thực nguồn gốc dữ liệu, toàn vẹn dữ liệu và chống chối bỏ.
Xác thực nguồn gốc: Mặc dù thơng báo thường có thể bao gồm thông tin
về thực thể gửi thư nhưng mà thông tin đó có thể khơng chính xác. Chữ ký số có
thể được sử dụng để xác thực nguồn gốc thơng báo. Khi quyền sở hữu khóa riêng
chữ ký số bị ràng buộc với một người dùng cụ thể, chữ ký hợp lệ cho biết rằng
thông báo được gửi bởi người dùng đó. Tầm quan trọng của độ tin cậy cao về tính
xác thực của người gửi đặc biệt rõ ràng trong bối cảnh tài chính. Ví dụ: giả sử văn
phịng chi nhánh của ngân hàng gửi hướng dẫn đến văn phòng trung tâm yêu cầu
thay đổi số dư tài khoản. Nếu văn phịng trung ương khơng bị thuyết phục rằng
một thông báo như vậy thực sự được gửi từ một nguồn được ủy quyền, hành động
theo yêu cầu như vậy có thể là một sai lầm nghiêm trọng.
10
Tính tồn vẹn: Trong nhiều trường hợp, người gửi và người nhận thơng
báo có thể cần phải tự tin rằng thơng báo khơng bị thay đổi trong q trình truyền.
Mặc dù việc mã hóa đã giấu nội dung của một thơng báo, nhưng mà vẫn có thể
thay đổi một thơng báo được mã hóa mà khơng hiểu nó. (Một số thuật tốn mã
hóa, được gọi là thuật tốn mã hóa, ngăn chặn điều này, nhưng cịn lại thì khơng.)
Tuy nhiên, nếu thông báo được ký điện tử, mọi thay đổi trong thư sau khi ký sẽ
làm mất hiệu lực chữ ký. Hơn nữa, khơng có cách hiệu quả để sửa đổi một thơng
báo và chữ ký của nó để tạo ra một thông báo mới với một chữ ký hợp lệ, bởi vì
điều này vẫn được coi là khơng thể thực hiện được bởi hầu hết các hàm băm mật
mã.
Tính chống chối bỏ: Chống chối bỏ, hoặc cụ thể hơn là chống chối bỏ
nguồn gốc, là một khía cạnh quan trọng của chữ ký số. Trong giao dịch, một bên
có thể từ chối nhận một văn bản nào đó là do mình gửi. Để ngăn ngừa khả năng
này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với văn bản. Khi có
tranh chấp, bên nhận sẽ sử dụng chữ ký số này như một chứng cớ để bên thứ ba
giải quyết.
Dựa trên các tính năng cơ bản trên, chữ ký số được sử dụng rộng rãi trong
các cơng việc như:
Chữ ký số có thể dùng thay thế chữ ký tay trong tất cả các giao dịch thương
mại điện tử trong mơi trường số. Có giá trị về mặt pháp lý tương đương chữ ký
tay đối với cá nhân và tương đương như con dấu và chữ ký của người đại diện đối
với tổ chức, doanh nghiệp. Có thể dùng trong các giao dịch thư điện tử, email,
tham gia đầu tư chứng khoán trực tuyến, bán hàng trực tuyến, thanh toán trực
tuyến, chuyển tiền trực tuyến mà không sợ bị mất cắp tiền như với đối với dùng
các tài khoản VISA, Master.
Trong các cơ quan Nhà nước, ứng dụng chữ ký số là một yếu tố khơng thể
thiếu để xây dựng Chính phủ điện tử và cải cách thủ tục hành chính. Chữ ký số
dùng trong kê khai, nộp thuế trực tuyến với cơ quan hải quan và tiến hành thông
quan trực tuyến mà không cần phải in ấn các tờ kê khai, đóng dấu của công ty rồi
mất một khoảng thời gian đến cơ quan thuế để chờ nộp tờ khai,...
11
Sự ra đời của chữ ký số là khẳng định lợi ích to lớn về chiến lược và kinh
tế. Việc ứng dụng chữ ký số giúp tiết kiệm chi phí (chi phí in ấn và thời gian gửi
văn bản); giảm thiểu sức lao động trong công tác quản lý, bảo mật dữ liệu cá nhân
và dữ liệu chuyên môn; giảm thời gian, tiết kiệm chi phí đi lại của người dân và
doanh nghiệp; quan trọng nhất là minh bạch hóa thông tin, làm thay đổi phương
pháp, tác phong công tác, phương thức làm việc....
1.4. Kết luận chương 1
Chương này trình bày những hiểu biết cơ bản về chữ ký số trong đó tập
trung tìm hiểu về các khái niệm, mơ hình chung của lược đồ chữ ký số quá trình
tạo, kiểm tra chữ ký số cũng như là một số lược đồ chữ ký số khác nhau, cụ thể
gồm lược đồ chữ ký số RSA và lược đồ chữ ký số Elgamal. Kết quả tìm hiểu trong
chương này sẽ là nền tảng kiến thức cơ bản để tìm hiểu, nghiên cứu về lược đồ
ECDSA SECP256K1 trong các chương tiếp theo.
12
CHƯƠNG 2: NGHIÊN CỨU MỘT SỐ TẤN CÔNG LÊN ECDSA
SECP256K1 LIÊN QUAN GIÁ TRỊ NONCE
Chữ ký số dựa trên mật mã đường cong Elliptic (ECDSA) được giới thiệu
lần đầu vào năm 1991 bởi các cơng trình nghiên cứu độc lập của Neal Koblitz và
Victor Miller. Từ những năm 2000, các nước Mỹ, Nga, Nhật Bản, Hàn Quốc và
một số nước Châu Âu đã đầu tư nghiên cứu về vấn đề này và đưa vào các hệ thống
tiêu chuẩn như ANSI X9.62, FIPS 186-2, IEEE 1363-2000 và ISO/IEC 15946-2.
ECDSA hiện đang được ứng dụng mạnh mẽ vào trong đời sống đặc biệt trong lĩnh
vực Blockchain đang nổi lên gần đây. Các đặc tính của ECDSA góp phần tạo nên
sự an tồn, minh bạch và ẩn danh trong công nghệ Blockchain. Trong chương này
tìm hiểu về lược đề ký số ECDSA trên đường cong SECP256K1 – đường cong sử
dụng hầu hết trên các blockchain như Bitcoin, Ethereum, …
2.1. Lược đồ ký số ECDSA SECP256K1
2.1.1. Các tham số miền của ECDSA SECP256K1
Các tham số miền của ECDSA bao gồm những lựa chọn phù hợp cho môđun p, giá trị (𝑎, 𝑏) và điểm cơ sở 𝐺(𝑥, 𝑦) của đường cong elliptic trên trường hữu
hạn 𝐹𝑝 , các tham số miền đó có thể được chia sẻ trong một nhóm các thực thể
hoặc cụ thể cho một người dùng trong mạng. Các tham số đường cong phải được
lựa chọn cẩn thận để tránh sử dụng đường cong yếu và điều đó có thể chống lại
được tất cả các cuộc tấn công đã biết.
Theo SEC 2 [6], một bộ tham số miền đầy đủ của ECDSA bao gồm bộ 6
thành phần:
𝐷 = (𝑝, 𝑎, 𝑏, 𝐺, 𝑛, ℎ)
- Số 𝑝 là một số nguyên tố được định nghĩa là bậc của trường hữu hạn 𝐹𝑝 .
- Hai thành phần 𝑎, 𝑏 ∈ 𝐹𝑝 được mô tả trên đường cong elliptic theo phương
trình: 𝐸: 𝑦 2 = 𝑥 3 + 𝑎𝑥 + 𝑏 (𝑚𝑜𝑑 𝑝).
- Điểm cơ sở 𝐺 (còn gọi là điểm sinh), 𝐺 = (𝑥𝐺 , 𝑦𝐺 ) nằm trên đường cong
𝐸(𝐹𝑝 ) , 𝑥𝐺 và 𝑦𝐺 là các phần tử thuộc trường 𝐹𝑝 .
13
- Số nguyên tố 𝑛 là bậc của G, giá trị của n thỏa mãn 𝑛 > 2160 và 𝑛 > 4 √𝑝.
Các số vô hướng cho phép nhân điểm được chọn trong khoảng [0, 𝑛 − 1].
- Số nguyên ℎ được gọi là đồng thừa số: ℎ = #𝐸(𝐹𝑝 )/𝑛 𝑣ớ𝑖 # 𝐸(𝐹𝑝 ) là số
điểm trên đường cong.
Tham số đường cong được sử dụng phổ biến cho lược đồ ký số ECDSA
trong công nghệ Blockchain là SECP256K1. Đường cong này gần như chưa bao
giờ được sử dụng trước khi công nghệ Blockchain trở nên bùng nổ, nhưng hiện
nay SECP256K1 đang trở nên phổ biến và đã trở thành lựa chọn đường cong
elliptic mặc định trong hầu hết các dự án blockchain bởi có một số đặc tính
tốt. Hầu hết các đường cong thường được sử dụng đều có cấu trúc ngẫu nhiên,
nhưng SECP256K1 được xây dựng theo một cách đặc biệt khơng ngẫu nhiên cho
phép tính tốn đặc biệt hiệu quả. Do đó, nó thường nhanh hơn 30% so với các
đường cong khác nếu việc triển khai được tối ưu hóa đầy đủ [8]. Trong Tiêu chuẩn
SEC 2 [6], các tham số đường cong elliptic SECP256K1 được xác định dưới dạng
thập lục phân với các thông số như sau:
- Trường hữu hạn 𝐹𝑝 được xác định bởi:
𝑝 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
p = 2256 − 232 − 29 − 28 − 2 7 − 26 − 24 − 1 = 2256 − 232 − 977
- Đường cong 𝐸: 𝑦 2 = 𝑥 3 + 𝑎𝑥 + 𝑏 trên 𝐹𝑝 được xác định bởi:
𝑎 = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
𝑏 = 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000007
tức đường có có dạng 𝐸: 𝑦 2 = 𝑥 3 + 7
14
Hình 2.1: Đường cong 𝑦 2 = 𝑥 3 + 7
Điểm cơ bản 𝐺 có tọa độ là 𝐺(𝑥, 𝑦) được biểu diễn dưới dạng hex bằng
cách nối 04 với x và tiếp theo là y ta được một chuỗi gọi là dạng khơng nén
(Uncompressed). Vì có thể xác định được y khi biết x thông qua 𝑦 2 = 𝑥 3 + 7,
nên để lưu trữ lượng dữ liệu ít hơn, ta chỉ cần giá trị x. Nhưng, khi giải hàm số
tìm y, ta sẽ tìm được 2 giá trị y thỏa mãn y(+) và y(-), trong trường hữu hạn số
nguyên tố thì y(+) và y(-) tương ứng là y chẵn và lẽ, do đó khi lưu x cần thêm ký
tự phía trước x để xác định y là chẵn hay lẻ. Thêm 02 nếu y chẵn và 03 nếu y lẽ.
Chuỗi mới này gọi dạng nén (Compressed).
Ở dạng nén là:
G = 02 79BE667E F9DCBBAC 55A06295 CE870B07
029BFCDB 2DCE28D9 59F2815B 16F81798
Và ở dạng không nén là:
G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9
59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8
FD17B448 A6855419 9C47D08F FB10D4B8
Cuối cùng bậc n của G:
n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE
BAAEDCE6 AF48A03B BFD25E8C D0364141
Giá trị cụ thể là:
15