NGHIÊN CỨU LƯỢC ĐỒ CHỮ KÝ SỐ MỘT LẦN WINTERNITZ Chữ ký số là một trong những phương pháp hiệu quả phổ biến để bảo vệ thông tin, dữ liệu. Chữ ký số cung cấp cho người sử dụng một phương tiện để kiểm tra tính xác thực của nguồn gốc dữ liệu, tính toàn vẹn của dữ liệu và tính không thể chối bỏ của người ký. Đã có nhiều lược đồ chữ ký số được xây dựng và đề xuất sử dụng trong thực tế như: các lược đồ chữ ký số RSAPSS, DSA, ECDSA,.... Sự an toàn của các lược đồ chữ ký số này dựa trên độ khó khi giải bài toán phân tích số nguyên và bài toán logarit rời rạc. Ngày nay, chưa có thuật toán hiệu quả được biết để giải những bài toán này. Tuy nhiên, Peter Shor 11 đã chứng minh rằng các máy tính lượng tử có thể giải những bài toán trên trong thời gian đa thức, khi đó các lược đồ chữ ký số này sẽ trở thành không an toàn. Do đó, cần thiết phải xây dựng các lược đồ chữ ký số mới mà độ an toàn của nó không dựa vào độ khó của một bài toán và có thể chống lại các tấn công với sự hỗ trợ của máy tính lượng tử. Một trong những lược đồ chữ ký số như vậy là lược đồ chữ ký số dựa trên hàm băm. Một trong những nền tảng để phát triển lược đồ chữ ký số dựa trên hàm băm là lược đồ chữ ký số một lần (Onetime signature – OTS), được Leslie Lamport giới thiệu lần đầu vào năm 1979. Lược đồ OTS sử dụng mỗi cặp khóa để ký cho duy nhất một thông báo. Các lược đồ OTS được xây dựng từ một hàm một chiều (hàm băm một chiều) và có sự an toàn phụ thuộc cơ bản vào hàm một chiều được sử dụng. Hai ưu điểm chính của OTS là chúng có thể được xây dựng từ bất kỳ hàm một chiều nào, các thuật toán ký và xác minh rất nhanh và dễ tính toán (khi so sánh với chữ ký khóa công khai thông thường). Hạn chế cơ bản của lược đồ OTS là mỗi cặp khóa chỉ được sử dụng duy nhất cho một chữ ký. Hơn nữa, độ dài chữ ký, kích thước của khóa công khai và khóa riêng lớn. Mặc dù các lược đồ OTS còn tồn tại những hạn chế trong sử dụng, nhưng các lược đồ này đã được sử dụng để xác thực thông báo trong mạng cảm biến và để cung cấp nguồn xác thực cho xác thực phát đa hướng. Chữ ký số một lần cũng được sử dụng trong việc xây dựng các nguyên hàm khác, chẳng hạn như chữ ký số trực tuyếnngoại tuyến và mã hóa khóa công khai. Đặc biệt, chữ ký số một lần đã được sử dụng để xây dựng các lược đồ chữ ký số dựa trên hàm băm, đây là lược đồ chữ ký số có nhiều lợi thế hơn so với các lược đồ chữ ký số truyền thống như: có khả năng chống lại tấn công với sự hỗ trợ của máy tính lượng tử, và hiệu quả hơn khi thực thi trên các thiết bị nhúng. Xuất phát từ thực tiễn trên, em đã chọn đề tài Nghiên cứu lược đồ chữ ký một lần Winternitz làm đồ án tốt nghiệp. Việc nghiên cứu chi tiết về lược đồ chữ ký Winternitz và sự an toàn của nó là cơ sở quan trọng để tiếp tục phát triển các thuật toán mật mã hậu lượng tử như lược đồ chữ ký số dựa trên hàm băm. 2. Tổng quan về tình hình nghiên cứu Khái niệm về chữ ký số một lần (OTS) được Leslie Lamport 8 giới thiệu vào năm 1979. Lược đồ LDOTS được xây dựng từ một hàm một chiều (hàm băm một chiều) và có sự an toàn phụ thuộc cơ bản vào hàm một chiều được sử dụng. Chữ ký số một lần cũng đã được nghiên cứu bởi Winternitz từ năm 1979. Tuy nhiên lược đồ chữ ký số một lần WOTS lần đầu tiên được đề cập trong 11 và được mô tả chi tiết trong 6. Kích thước chữ ký trong lược đồ chữ ký số này ngắn hơn đáng kể so với kích thước chữ ký trong lược đồ chữ ký số LDOTS. Trong quá trình thực hiện nghiên cứu, em đã tìm hiểu, xem xét kết quả của một số nghiên cứu trước đó với mục đích phục vụ quá trình hoàn thiện nghiên cứu của mình. Một số tài liệu chính đã nghiên cứu bao gồm: Dynamic Cryptographic Hash Functions của tác giả William Speirs. Tài liệu này mô tả tổng quan về hàm băm mật mã và hàm băm mật mã động cùng các tính chất an toàn của nó. Hashbased Digital Signature Schemes của các tác giả Buchmann J., Dahmen E. và Szydlo M.. Tài liệu này khái quát chung về lược đồ chữ ký số dựa trên hàm băm và mô tả một số lược đồ chữ ký số dựa trên hàm băm tiêu biểu. On the Security of the Winternitz OneTime Signature Scheme của các tác giả Buchmann J., Dahmen E., Sarah E., Hulsing A. và Ruckert M. Tài liệu này mô tả về lược đồ chữ ký số một lần Winternitz và đánh giá độ an toàn của lược đồ chữ ký số này. WOTS+ – Shorter Signatures for HashBased Signature Schemes của tác giả Andreas Hulsing. Tài liệu này mô tả về lược đồ chữ ký số một lần WOTS+ và đánh giá độ an toàn của lược đồ chữ ký số này. Ngoài ra em còn tham khảo một số tài liệu khác có liên quan. 3. Mục tiêu nghiên cứu Nghiên cứu lược đồ chữ ký số một lần Winternitz và các đặc trưng an toàn của lược đồ này. Cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số một lần Winternitz. 4. Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu: Lược đồ chữ ký số một lần Winternitz Phạm vi nghiên cứu: Đề tài nêu khái quát những cơ sở lý thuyết về hàm băm mật mã và chữ ký số; Lược đồ chữ ký số một lần WOTS và WOTS+ , dựa trên đó đánh giá độ an toàn của hai lược đồ chữ ký số này; Xây dựng chương trình xác thực File sử dụng lược đồ chữ ký số một lần Winternitz. 5. Phương pháp nghiên cứu Đề tài sử dụng các phương pháp nghiên cứu như phương pháp thống kê, phương pháp tổng hợp, phương pháp so sánh, phương pháp phân tích, kế thừa một số kết quả nghiên cứu đã có, đồng thời thu thập thông tin, tài liệu để phục vụ cho việc nghiên cứu. 6. Những đóng góp của đồ án Về lý thuyết: Đồ án trình bày các vấn đề trọng tâm về hàm băm mật mã và chữ ký số. Trình bày quá trình hoạt động của lược đồ chữ ký Winternitz và đánh giá sự an toàn của lược đồ này. Về ứng dụng vào thực tiễn: Đồ án trình bày quá trình cài đặt chương trình xác thực File sử dụng lược đồ chữ ký số một lần Winternitz. Từ đó đánh giá hiệu quả thực thi của lược đồ chữ ký số này. 7. Kết cấu của đồ án tốt nghiệp Nội dung đồ án tốt nghiệp gồm 3 chương: Chương 1: Cơ sở lý thuyết về hàm băm mật mã và chữ ký số Phần này trình bày những kiến thức chung về hàm băm mật mã và chữ ký số, bao gồm: Định nghĩa hàm băm mật mã, các tính chất an toàn của hàm băm mật mã và một số hàm băm mật mã; Định nghĩa chữ ký số và các ưu điểm của chữ ký số. Chương 2: Lược đồ chữ ký số một lần Winternitz Phần này trình bày về lược đồ chữ ký số một lần WOTS và WOTS+ , quá trình tạo cặp khóa, tạo chữ ký và xác minh chữ ký. Dựa trên đó để đánh giá sự an toàn của hai lược đồ chữ ký trên và rút ra so sánh. Chương 3: Xây dựng chương tình xác thực File sử dụng thuật toán chữ ký số một lần Winternitz Phần này mô tả về lưu đồ thuật toán của lược đồ chữ ký số một lần Winternitz cũng như trình bày chi tiết quá trình và kết quả cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số một lần WOTS và WOTS+ . Dựa vào đó để đánh giá hiệu quả của hai thuật toán chữ ký số một lần này. Tìm hiểu cơ sở lý thuyết về hàm băm mật mã và chữ ký số; 2. Phân tích được các tham số, hoạt động của lược đồ chữ ký số một lần Winternitz và các đặc trưng an toàn của nó; 3. Xây dựng chương trình xác thực File sử dụng thuật toán chữ ký số một lần Winternitz bằng ngôn ngữ lập trình Java trên bộ công cụ lập trình Netbean, và đánh giá hiệu quả của thuật toán. Nghiên cứu một số lược đồ chữ ký số một lần khác; Tiếp tục tìm hiểu các tấn công lên các lược đồ chữ ký số một lần và đánh giá sự an toàn của các lược đồ.
ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ NGHIÊN CỨU LƯỢC ĐỒ CHỮ KÝ SỐ MỘT LẦN WINTERNITZ Nguyen Thanh Long Hà Nội - 2023 MỤC LỤC MỤC LỤC i LỜI CẢM ƠN Lỗi! Thẻ đánh dấu không được xác định LỜI CAM ĐOAN Lỗi! Thẻ đánh dấu không được xác định CÁC KÝ HIỆU, CHỮ VIẾT TẮT iii DANH MỤC HÌNH VẼ v DANH MỤC BẢNG BIỂU vi LỜI NÓI ĐẦU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ HÀM BĂM MẬT MÃ VÀ CHỮ KÝ SỐ 1.1 Hàm băm mật mã 1.1.1 Định nghĩa hàm băm 1.1.2 Định nghĩa tính chất an tồn 1.1.3 Một số hàm băm mật mã 11 1.2 Chữ ký số 13 1.2.1 Định nghĩa chữ ký số 14 1.2.2 Các ưu điểm chữ ký số 16 CHƯƠNG 2: LƯỢC ĐỒ CHỮ KÝ SỐ MỘT LẦN WINTERNITZ 18 2.1 Một số khái niệm định nghĩa 18 2.2 Lược đồ chữ ký số lần W-OTS 24 2.2.1 Q trình tạo khóa 25 2.2.2 Quá trình tạo chữ ký 25 2.2.3 Quá trình xác minh chữ ký 26 2.2.4 Sự an toàn lược đồ chữ ký số W-OTS 30 2.3 Lược đồ chữ ký số lần W-OTS+ 34 2.3.1 Q trình tạo khóa 34 2.3.2 Quá trình tạo chữ ký 35 2.3.3 Quá trình xác minh chữ ký 36 2.3.4 Sự an toàn lược đồ chữ ký số W-OTS+ 40 2.4 So sánh lược đồ chữ ký số lần W-OTS W-OTS+ 48 i CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH XÁC THỰC FILE SỬ DỤNG THUẬT TỐN CHỮ KÝ SỐ MỘT LẦN WINTERNITZ 50 3.1 Một số lưu đồ thuật tốn chương trình 50 3.1.1 Lưu đồ thuật toán lược đồ chữ ký số lần W-OTS 50 3.1.2 Lưu đồ thuật toán lược đồ chữ ký số lần W-OTS+ 53 3.2 Cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số lần W-OTS 56 3.2.1 Q trình tạo khóa 56 3.2.2 Quá trình tạo chữ ký 57 3.2.3 Quá trình xác minh chữ ký 59 3.3 Cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số lần W-OTS+ 61 3.3.1 Q trình tạo khóa 61 3.3.2 Quá trình tạo chữ ký 62 3.3.3 Quá trình xác minh chữ ký 64 3.4 Đánh giá hiệu thuật toán chữ ký số lần W-OTS W-OTS+ 66 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 69 ii CÁC KÝ HIỆU, CHỮ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt CMA A Chosen Message Attack Tấn công thông báo lựa chọn DSA Digital Signature Algorithm Thuật toán chữ ký số DSS Digital Signature Standard Chuẩn chữ ký số ECDSA Elliptic Curve Digital Thuật toán chữ ký số đường cong elliptic Signature Algorithm EU-CMA Existential unforgeability Không thể giả mạo tồn under adaptive chosen message cơng thơng báo attacks FIPS lựa chọn thích nghi Federal Information Processing Tiêu chuẩn xử lý thông tin Standards liên bang KCR Key Collision Resistance Kháng va chạm khóa KOW Key One-wayness Khóa chiều LD-OTS Lamport - Diffie One-Time Chữ ký số lần Lamport – Signature Diffie MSS Merkle Signature Scheme Lược đồ chữ ký Merkle NIST National Institute of Standards Viện tiêu chuẩn công nghệ and Technology quốc gia Hoa kỳ OTS One-time signature scheme Lược đồ chữ ký số lần OW One-wayness Một chiều Pk Public key Khóa cơng khai PRS Pseudorandom Function Hàm giả ngẫu nhiên RAM Random Access Machine Máy truy cập ngẫu nhiên RSA Ron Rivest – Adi Shamir – Hệ mật RSA Leonard Adleman RSA-PSS RSA – Probabilistic Signature Lược đồ chữ ký số xác suất Scheme RSA iii Viết tắt Tiếng Anh Tiếng Việt SHA Secure Hash Algorithm Thuật tốn băm an tồn Sk Secret key Khóa bí mật SKR Second Key Resistance Kháng khóa thứ hai SPR Second Preimage Resistance Kháng tiền ảnh thứ hai SU-CMA Strongly adaptive unforgeable chosen under Không thể giả mạo mạnh message cơng thơng báo attacks lựa chọn thích nghi UD Undetectability Tính khơng xác định W-OTS Winternitz one-time signature Lược đồ chữ ký lần scheme Winternitz iv DANH MỤC HÌNH VẼ Hình 1.1 Thực nghiệm kháng tiền ảnh Hình 1.2 Thực nghiệm kháng tiền ảnh thứ hai 10 Hình 1.3 Thực nghiệm kháng va chạm 11 Hình 1.4 Sơ đồ tạo kiểm tra chữ ký số 15 Hình 3.1 Lưu đồ thuật tốn tạo khóa W-OTS 50 Hình 3.2 Lưu đồ thuật tốn tạo chữ ký W-OTS 51 Hình 3.3 Lưu đồ thuật tốn xác minh chữ ký W-OTS 52 Hình 3.4 Lưu đồ thuật tốn tạo khóa W-OTS+ 53 Hình 3.5 Lưu đồ thuật tốn tạo chữ ký W-OTS+ 54 Hình 3.6 Lưu đồ thuật tốn xác minh chữ ký W-OTS+ 55 Hình 3.7 Kết sinh cặp khóa W-OTS 57 Hình 3.8 Kết tạo chữ ký W-OTS 59 Hình 3.9 Kết xác minh chữ ký W-OTS 60 Hình 3.10 Kết xác thực chữ ký W-OTS bị thay đổi số bit 60 Hình 3.11 Kết tạo khóa W-OTS+ 62 Hình 3.12 Kết tạo chữ ký số W-OTS+ 64 Hình 3.13 Kết xác minh chữ ký W-OTS+ 65 Hình 3.14 Kết xác thực chữ ký W-OTS+ bị thay đổi số bit 65 Hình 3.15 Biểu đồ so sánh thời gian tạo chữ ký số W-OTS W-OTS+ 67 Hình 3.16 Biểu đồ so sánh thời gian xác minh chữ ký số W-OTS W-OTS+ 67 v DANH MỤC BẢNG BIỂU Bảng 1.1 Các tham số hàm băm mật mã 13 Bảng 2.1 Bảng so sánh lược đồ chữ ký số lần W-OTS W-OTS+ 48 Bảng 2.2 Mức an toàn lược đồ chữ ký số lần W-OTS W-OTS+ 49 Bảng 3.1 Thời gian tạo kiểm tra chữ ký số W-OTS 66 Bảng 3.2 Thời gian tạo kiểm tra chữ ký số W-OTS+ 66 vi LỜI NĨI ĐẦU Tính cấp thiết đề tài Hiện nay, khoa học cơng nghệ, mạng máy tính, Internet phát triển mạnh mẽ ngày đóng vai trò thiết yếu lĩnh vực hoạt động toàn xã hội Tuy nhiên, việc sử dụng mạng máy tính Internet tạo hội cho “bên thứ ba” thực hành động bất hợp pháp như: chặn bắt thông tin để khai thác sửa đổi làm sai lệch nội dung thông tin, mạo danh đối tượng liên lạc để truyền thông tin giả mạo, Do đó, để sử dụng mạng máy tính Internet an tồn buộc người sử dụng phải dùng biện pháp bảo vệ thông tin, liệu Chữ ký số phương pháp hiệu phổ biến để bảo vệ thông tin, liệu Chữ ký số cung cấp cho người sử dụng phương tiện để kiểm tra tính xác thực nguồn gốc liệu, tính tồn vẹn liệu tính khơng thể chối bỏ người ký Đã có nhiều lược đồ chữ ký số xây dựng đề xuất sử dụng thực tế như: lược đồ chữ ký số RSA-PSS, DSA, ECDSA, Sự an toàn lược đồ chữ ký số dựa độ khó giải tốn phân tích số nguyên toán logarit rời rạc Ngày nay, chưa có thuật tốn hiệu biết để giải toán Tuy nhiên, Peter Shor [11] chứng minh máy tính lượng tử giải toán thời gian đa thức, lược đồ chữ ký số trở thành khơng an tồn Do đó, cần thiết phải xây dựng lược đồ chữ ký số mà độ an tồn khơng dựa vào độ khó tốn chống lại cơng với hỗ trợ máy tính lượng tử Một lược đồ chữ ký số lược đồ chữ ký số dựa hàm băm Một tảng để phát triển lược đồ chữ ký số dựa hàm băm lược đồ chữ ký số lần (One-time signature – OTS), Leslie Lamport giới thiệu lần đầu vào năm 1979 Lược đồ OTS sử dụng cặp khóa để ký cho thông báo Các lược đồ OTS xây dựng từ hàm chiều (hàm băm chiều) có an tồn phụ thuộc vào hàm chiều sử dụng Hai ưu điểm OTS chúng xây dựng từ hàm chiều nào, thuật toán ký xác minh nhanh dễ tính tốn (khi so sánh với chữ ký khóa cơng khai thơng thường) Hạn chế lược đồ OTS cặp khóa sử dụng cho chữ ký Hơn nữa, độ dài chữ ký, kích thước khóa cơng khai khóa riêng lớn Mặc dù lược đồ OTS tồn hạn chế sử dụng, lược đồ sử dụng để xác thực thông báo mạng cảm biến để cung cấp nguồn xác thực cho xác thực phát đa hướng Chữ ký số lần sử dụng việc xây dựng nguyên hàm khác, chẳng hạn chữ ký số trực tuyến/ngoại tuyến mã hóa khóa cơng khai Đặc biệt, chữ ký số lần sử dụng để xây dựng lược đồ chữ ký số dựa hàm băm, lược đồ chữ ký số có nhiều lợi so với lược đồ chữ ký số truyền thống như: có khả chống lại cơng với hỗ trợ máy tính lượng tử, hiệu thực thi thiết bị nhúng Xuất phát từ thực tiễn trên, em chọn đề tài "Nghiên cứu lược đồ chữ ký lần Winternitz" làm đồ án tốt nghiệp Việc nghiên cứu chi tiết lược đồ chữ ký Winternitz an tồn sở quan trọng để tiếp tục phát triển thuật toán mật mã hậu lượng tử lược đồ chữ ký số dựa hàm băm Tổng quan tình hình nghiên cứu Khái niệm chữ ký số lần (OTS) Leslie Lamport [8] giới thiệu vào năm 1979 Lược đồ LD-OTS xây dựng từ hàm chiều (hàm băm chiều) có an tồn phụ thuộc vào hàm chiều sử dụng Chữ ký số lần nghiên cứu Winternitz từ năm 1979 Tuy nhiên lược đồ chữ ký số lần W-OTS lần đề cập [11] mô tả chi tiết [6] Kích thước chữ ký lược đồ chữ ký số ngắn đáng kể so với kích thước chữ ký lược đồ chữ ký số LD-OTS Trong trình thực nghiên cứu, em tìm hiểu, xem xét kết số nghiên cứu trước với mục đích phục vụ q trình hồn thiện nghiên cứu Một số tài liệu nghiên cứu bao gồm: - "Dynamic Cryptographic Hash Functions" tác giả William Speirs Tài liệu mô tả tổng quan hàm băm mật mã hàm băm mật mã động tính chất an tồn - "Hash-based Digital Signature Schemes" tác giả Buchmann J., Dahmen E Szydlo M Tài liệu khái quát chung lược đồ chữ ký số dựa hàm băm mô tả số lược đồ chữ ký số dựa hàm băm tiêu biểu - "On the Security of the Winternitz One-Time Signature Scheme" tác giả Buchmann J., Dahmen E., Sarah E., Hulsing A Ruckert M Tài liệu mô tả lược đồ chữ ký số lần Winternitz đánh giá độ an toàn lược đồ chữ ký số - "W-OTS+ – Shorter Signatures for Hash-Based Signature Schemes" tác giả Andreas Hulsing Tài liệu mô tả lược đồ chữ ký số lần W-OTS+ đánh giá độ an toàn lược đồ chữ ký số Ngồi em cịn tham khảo số tài liệu khác có liên quan Mục tiêu nghiên cứu - Nghiên cứu lược đồ chữ ký số lần Winternitz đặc trưng an toàn lược đồ - Cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số lần Winternitz Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: Lược đồ chữ ký số lần Winternitz - Phạm vi nghiên cứu: Đề tài nêu khái quát sở lý thuyết hàm băm mật mã chữ ký số; Lược đồ chữ ký số lần W-OTS W-OTS+, dựa đánh giá độ an toàn hai lược đồ chữ ký số này; Xây dựng chương trình xác thực File sử dụng lược đồ chữ ký số lần Winternitz 3.2 Cài đặt chương trình xác thực File sử dụng thuật toán chữ ký số lần W-OTS Chương trình xác thực File sử dụng thuật toán chữ ký số lần WOTS xây dựng với mơ-đun chính: Mơ-đun tạo khóa, mơ-đun tạo chữ ký mơ-đun xác minh chữ ký Ngồi cịn có số hàm sở khác 3.2.1 Q trình tạo khóa Ta tạo khóa với 𝑤 = 16 sử dụng hàm băm SHA-256 (hàm 𝑓 𝑔 hàm băm SHA-256) Vì khóa bí mật khóa cơng khai có độ dài 18 chuỗi 256 bit Khóa cơng khai tính từ khóa bí mật cách sử dụng hàm băm SHA-256 2𝑤 − lần Thuật tốn tạo cặp khóa sau: //Tính public t1 t2 giá trị t1, t2, t void calculateLengths(Integer s, Integer w){ = (int)Math.ceil(new Double(s) / new Double(w)); = (int)Math.ceil((double)((int)Math.floor(bl.binlog((double) t1)) + + w)/(double)w); t = t1 + t2; } public void generatePairKey(Integer w) { calculateLengths(256, w); for(int i = 1; i 0){ for(int i = 0; i < temp; i++){ tempS += "0"; } CBinary = tempS + CBinary; } return CBinary; } // Chia chuỗi checksum thành t2 chuỗi độ dài w public Integer [] checkSumSeparate(Integer s, Integer w){ CBinary = checkSumAddZeros(CBinary, w); int tCheckSum = KeyPairGeneration.t2; Integer [] blocksOfCheckSum = new Integer[tCheckSum]; int k = 0; for(int i = 0; i < CBinary.length(); i = i + w) { String S1 = CBinary.substring(i, i + w); blocksOfCheckSum[k++] = Integer.parseInt(S1, 2); } return blocksOfCheckSum; } //Nối chuỗi checksum vào sau chuỗi băm mở rộng public Integer [] messagePlusCheckSum(String Message, Integer w){ Integer [] messageArray = messageSeparate(Message, w); Integer [] checkSumArray = checkSumSeparate(256, w); Integer [] fullArray = new Integer[KeyPairGeneration.t]; int temp = (int)Math.ceil(messageAddZeros(Message, w).length() / w); for(int i = 0; i < temp; i++){ fullArray[i] = messageArray[i]; } int k = 0; for (int j = temp; j < KeyPairGeneration.t; j++) { fullArray[j] = checkSumArray[k]; k++; } return fullArray; } //Tạo chữ ký public String SIGNATURE = ""; public void generateSignature(String Message, Integer w) { Integer[]b = messagePlusCheckSum(Message, w); String Xi = ""; for (int i = 0; i < KeyPairGeneration.t; i++) { Xi = KeyPairGeneration.X.substring(i * 256, i * 256 + 256); SIGNATURE += calculateSignatureI(Xi, b[i]); } } Kết thực trình tạo chữ ký số lần W-OTS thể Hình 3.8: Hình 3.8 Kết tạo chữ ký W-OTS 3.2.3 Quá trình xác minh chữ ký Sử dụng khóa cơng khai tạo để thực thuật toán xác minh chữ ký sau: //Tính hàm f với đầu vào chuỗi độ dài w chữ ký private String calculateSignatureI(String sigi, Integer bi, Integer w){ for (int i = 1; i