Xoá chữ ký số khỏi file XML được không, bỏ hay sửa ngày ký được không? Kết quả 10 lần thử thật, cách xoá đúng, cách ký lại và trường hợp tờ khai thuế.
Câu hỏi "cách xoá chữ ký khỏi file XML" thường đến từ hai tình huống: ký nhầm chứng thư hoặc nhầm file và muốn ký lại, hoặc cần sửa một con số sau khi đã ký. Để trả lời bằng kết quả thật thay vì phỏng đoán, tác giả đã ký một file XML mẫu theo chuẩn XMLDSig rồi thử xoá, sửa từng phần và kiểm tra lại chữ ký sau mỗi lần thử.
Chữ ký số nằm ở đâu trong file XML
Chữ ký số trên file XML theo chuẩn XMLDSig của W3C là một phần tử Signature, thường đặt ở cuối file và có thể mang tiền tố như ds:Signature. Phần tử Signature chứa SignedInfo (danh sách phần được ký cùng giá trị băm của từng phần), SignatureValue (giá trị chữ ký tạo bằng khoá bí mật trong USB Token) và KeyInfo (chứng thư của người ký).
Ngày ký không bắt buộc trong chuẩn XMLDSig. Khi phần mềm ký có ghi ngày ký, thẻ SigningTime thường nằm trong một phần tử Object hoặc phần SignedProperties ngay trong khối Signature, và phần đó cũng được liệt kê trong SignedInfo để được ký cùng dữ liệu. Nhờ vậy người nhận không sửa được ngày ký mà không bị phát hiện.
Thử nghiệm: xoá, sửa từng phần rồi kiểm tra lại
Cách thử: một file XML mẫu dạng tờ khai (mã số thuế, kỳ khai, tổng tiền) được ký kiểu enveloped, phủ toàn bộ file, kèm ngày ký trong phần được ký. Chữ ký dùng RSA 2048 bit, băm SHA-256, chứng thư tự tạo để thử nghiệm. Việc ký và kiểm tra chạy bằng thư viện System.Security.Cryptography.Xml của Microsoft .NET 9, ngày 02/11/2026. Mỗi dòng dưới đây là một lần sửa trên bản sao của file vừa ký.
| Lần thử | Thao tác | Kết quả kiểm tra |
|---|---|---|
| 1 | Không sửa gì | Hợp lệ |
| 2 | Sửa tổng tiền từ 15000000 thành 16000000 | Không hợp lệ |
| 3 | Xoá trọn khối Signature | File không còn chữ ký; dữ liệu giống hệt bản trước khi ký |
| 4 | Sửa ngày ký từ 20/10 sang 25/10 | Không hợp lệ |
| 5 | Xoá riêng phần ghi ngày ký, giữ phần còn lại của chữ ký | Không hợp lệ (thư viện báo tham chiếu hỏng) |
| 6 | Chỉ thêm một lần xuống dòng giữa hai thẻ dữ liệu | Không hợp lệ |
| 7 | Ký lại file đã xoá chữ ký ở lần thử 3 | Hợp lệ |
Kết quả thử cho thấy ba điều. Thứ nhất, xoá trọn khối Signature là thao tác sạch: file quay về đúng trạng thái trước khi ký và ký lại được bình thường. Thứ hai, ngày ký được bảo vệ như dữ liệu: sửa hay xoá ngày ký đều làm chữ ký hỏng. Thứ ba, chữ ký XML nhạy với cả khoảng trắng: chỉ cần mở file bằng phần mềm tự định dạng lại rồi lưu, chữ ký cũng báo không hợp lệ.
File có nhiều người ký: xoá chữ ký này có làm hỏng chữ ký kia không?
Lần thử tiếp theo dùng cùng file mẫu, cho hai người ký lần lượt theo cùng một cách: mỗi chữ ký phủ toàn bộ file và chỉ tự loại chính nó ra khỏi phần được ký (phép biến đổi enveloped).
| Lần thử | Thao tác | Kết quả kiểm tra |
|---|---|---|
| 8 | Hai người ký lần lượt, không sửa gì | Chữ ký người ký trước: không hợp lệ. Chữ ký người ký sau: hợp lệ |
| 9 | Xoá chữ ký của người ký sau | Chữ ký người ký trước hợp lệ trở lại |
| 10 | Xoá chữ ký của người ký trước | Chữ ký người ký sau không hợp lệ |
Lần thử 8 trông như lỗi nhưng đúng với chuẩn XMLDSig: chữ ký thứ hai được chèn vào file sau khi chữ ký thứ nhất đã tính giá trị băm, nên với chữ ký thứ nhất, file đã bị thêm nội dung. Ngược lại, chữ ký thứ hai đã ký lên cả chữ ký thứ nhất, nên xoá chữ ký thứ nhất cũng là sửa dữ liệu của chữ ký thứ hai. Vì vậy định dạng XML cho nhiều người ký phải chỉ rõ phần được ký của từng chữ ký, ví dụ chỉ ký vào một phần dữ liệu có mã định danh riêng, hoặc loại mọi chữ ký khác ra khỏi phần được ký.
Với file nhiều chữ ký, chỉ xoá chữ ký của người ký sau cùng, và kiểm tra lại các chữ ký còn lại sau khi xoá. Nếu cần bỏ chữ ký của người ký giữa chừng, cách an toàn là quay về file trước khi người đó ký và cho những người sau ký lại.
Vì sao XML phải chuẩn hoá trước khi băm, và nhiều người cùng ký PDF khác XML thế nào
Cách xoá chữ ký số khỏi file XML
- 1
Giữ một bản sao file đã ký
Sao chép file XML đã ký sang thư mục khác trước khi sửa. Bản đã ký là bằng chứng người ký đã ký nội dung gì, không nên mất.
- 2
Mở bằng trình soạn thảo văn bản thuần
Dùng Notepad++ hoặc Visual Studio Code. Không mở rồi lưu bằng trình duyệt hay phần mềm tự định dạng lại file, vì khoảng trắng thay đổi sẽ làm hỏng các chữ ký còn lại.
- 3
Xoá trọn khối Signature
Tìm thẻ mở Signature (có thể là ds:Signature) và thẻ đóng tương ứng, xoá toàn bộ từ thẻ mở đến hết thẻ đóng. Không xoá lẻ từng phần bên trong như ngày ký hay chứng thư: chữ ký còn lại sẽ là một chữ ký hỏng.
- 4
Lưu đúng bảng mã cũ
Lưu file với bảng mã như ban đầu, thường là UTF-8. Đổi bảng mã làm hỏng chữ tiếng Việt và các chữ ký khác trong file.
- 5
Kiểm tra lại
Tải file lên công cụ kiểm tra chữ ký số: file chỉ có một chữ ký sẽ báo không có chữ ký; file nhiều chữ ký thì các chữ ký còn lại phải vẫn hợp lệ.
Muốn bỏ hoặc đổi ngày ký thì sao?
Không bỏ hay đổi được ngày ký mà vẫn giữ chữ ký, như lần thử 4 và 5 đã cho thấy. Cách duy nhất là xoá chữ ký và ký lại, và ngày ký mới là thời điểm ký lại. Ngày ký mà phần mềm ghi thường lấy từ đồng hồ máy tính của người ký; chỉnh giờ máy để ký lùi ngày là ghi một thời điểm ký không có thật vào văn bản. Nếu chữ ký có dấu thời gian do tổ chức cung cấp dịch vụ cấp, thời điểm ký do máy chủ dấu thời gian xác nhận và người ký không tự đặt được.
Giờ ký trên máy người ký khác dấu thời gian thế nào, và vì sao thời điểm ký quan trọng khi chứng thư hết hạn
Tờ khai thuế XML: sửa ở phần mềm kê khai, không sửa tay file
Tờ khai thuế XML có cấu trúc do cơ quan thuế quy định. Sửa tay một con số trong file XML đã ký rồi ký lại có thể làm lệch các chỉ tiêu tính toán với nhau, còn ký lại đúng file XML đã nộp lỗi là một nguyên nhân hay gặp của lỗi "Chữ ký điện tử trên tờ khai không hợp lệ".
- Tờ khai chưa nộp: mở lại tờ khai trong phần mềm kê khai (HTKK hoặc phần mềm của tổ chức T-VAN), sửa số liệu, kết xuất file XML mới vào một thư mục mới rồi ký file mới.
- Tờ khai đã nộp và phát hiện sai sót: không xoá chữ ký để nộp lại file cũ, mà lập hồ sơ khai bổ sung. Theo khoản 5 Điều 12 Luật Quản lý thuế số 108/2025/QH15 (hiệu lực từ 01/7/2026), người nộp thuế được khai bổ sung trong thời hạn 05 năm kể từ ngày hết thời hạn nộp hồ sơ khai thuế của kỳ tính thuế có sai sót, trừ các trường hợp luật loại trừ như đang trong phạm vi thanh tra, kiểm tra.
- Ký nhầm chứng thư (ví dụ chứng thư cá nhân thay vì chứng thư doanh nghiệp) mà chưa nộp: xoá file đã ký, kết xuất lại và ký bằng đúng chứng thư đã đăng ký với cơ quan thuế.
Ký tờ khai XML trên thuế điện tử, cổng dịch vụ công thuế và TaxOnline
Nộp tờ khai bị báo "Chữ ký điện tử trên tờ khai không hợp lệ": nguyên nhân và 3 cách xử lý
Kiểm tra lại file XML sau khi xoá hoặc ký lại
Sau khi xoá chữ ký hay ký lại, hãy kiểm tra file trước khi gửi đi. Công cụ kiểm tra chữ ký số của GoSign nhận file XML tối đa 10 MB, đọc từng khối Signature và báo hợp lệ, có cảnh báo hay không hợp lệ kèm lý do. Hồ sơ cần căn cứ chính thức thì đối chiếu thêm trên trang kiểm tra chữ ký số của Trung tâm Chứng thực điện tử quốc gia (neac.gov.vn).
Tải file XML lên để xem từng chữ ký còn hợp lệ không, không cần cài phần mềm
Căn cứ pháp lý & nguồn tham khảo