DS10 — Gói container FES (gcpn.zip)
Kích hoạt S4, hoàn tất Phần II
Người kiểm tra (hoặc đối tác kinh doanh) muốn xem chuỗi — không chỉ
bản tóm tắt. Họ không nhận được repo, không có quyền truy cập Git, không có lịch sử.
Họ nhận được một gói: *.gcpn.zip — bộ xác minh vật lý
của quy trình ký.
Manifest và kho ZIP — hai nhiệm vụ tách biệt
| Nhiệm vụ | Vật mang | Nội dung |
|---|---|---|
| Manifest | bản thân .gcpn.md |
Liệt kê tất cả các artifact kèm SHA-256 (bảng xác minh + các artifact JSON nhúng) — nó xác định những gì thuộc về quy trình |
| Kho ZIP | *.gcpn.zip |
Các tệp vật lý để bàn giao: các artifact dạng văn bản (được trích xuất từ .gcpn.md dưới dạng .json/.txt/.md/.gc.md) cộng với các artifact nhị phân dưới dạng tệp riêng |
Các artifact dạng văn bản (.json, .txt, .md, .gc.md) tồn tại trong
.gcpn.md (MD-Fences) — trong ZIP chúng được hiển thị dưới dạng tệp riêng lẻ
(có thể trích xuất). Các artifact nhị phân (PDF, PNG, SVG, …) không thể tồn tại trong
tệp MD — chúng được đưa vào ZIP dưới dạng tệp riêng; thông thường chúng đã được
tham chiếu hoặc xác định bằng hash SHA-256 trong các cấu trúc dữ liệu
artifact JSON (ví dụ
evidence.facsimile_ref.sha256) — hash là sự xác định, còn
ZIP cung cấp phần thân.
Cấu trúc gói
GCPN-SIG-260913-001.gcpn.zip
│
├── container.gcpn.md ← Manifest + các artifact dạng văn bản (JSON-Fences) + .gc.md
│ (giống hệt với dạng trong repo Git)
├── MANIFEST.json ← danh mục đọc được bằng máy (tất cả SHA-256, package_sha256)
│
├── source/ ← dạng văn bản: tài liệu nguồn, có thể trích xuất từ container
│ ├── gvb.md ← tài liệu nguồn (referenced_doc)
│ └── gvb.md.gc.md ← Sidecar
├── signature/ ← dạng văn bản: tài liệu chữ ký + sự kiện (từ MD-Fences)
│ ├── signature-doc.json ← tài liệu chữ ký (DS02) + .gc.md
│ ├── event-offered.json ← sự kiện (DS03) + .gc.md
│ ├── event-accepted.json
│ ├── event-signed.json
│ ├── facsimile.svg ← NHỊ PHÂN: đồ họa vật lý (tiêu chuẩn) — trong JSON chỉ được tham chiếu bằng SHA-256
│ ├── facsimile.png ← NHỊ PHÂN: dự phòng
│ └── facsimile.sha256 ← Checksum
├── fes/ ← các artifact FES nhị phân
│ ├── fes-envelope-report.json ← báo cáo Envelope (DS09) + .gc.md (dạng văn bản)
│ ├── contract-signed.pdf ← NHỊ PHÂN: PDF đã ký (PAdES)
│ ├── certificate-of-completion.pdf ← NHỊ PHÂN: báo cáo dịch vụ
│ └── pdfsig-report.txt ← kiểm tra mật mã (công cụ bên ngoài)
└── README.md ← hướng dẫn xác minh (quy trình DS04)
Cách đọc: Manifest (.gcpn.md) liệt kê từng artifact kèm SHA-256 —
ZIP cung cấp phần thân tương ứng. Các artifact dạng văn bản được chứa trong chính
manifest (và trong ZIP còn được trích xuất thêm dưới dạng tệp riêng lẻ);
các artifact nhị phân chỉ tồn tại vật lý trong ZIP, nhưng trong manifest
được xác định đầy đủ bằng SHA-256 của chúng. Vì vậy người kiểm tra có thể xác minh từng
phần thân so với thông tin hash trong manifest.
Manifest xác minh
MANIFEST.json tập hợp tất cả SHA-256 của gói:
{
"$schema": "https://gitcover.org/schemas/gcpn-manifest-1.0.schema.json",
"docUid": "<deterministische uuidV7>",
"package": "GCPN-SIG-260913-001",
"created_at": "2026-09-13T16:45:00Z",
"created_by": "E1",
"artifacts": [
{"path": "container.md", "sha256": "…"},
{"path": "source/gvb.md", "sha256": "…"},
{"path": "signature/signature-doc.json", "sha256": "…"},
{"path": "signature/event-offered.json", "sha256": "…"},
{"path": "signature/event-accepted.json", "sha256": "…"},
{"path": "signature/event-signed.json", "sha256": "…"},
{"path": "signature/facsimile.svg", "sha256": "8fcffe0b…1006"},
{"path": "signature/facsimile.png", "sha256": "d330348e…81fef"},
{"path": "fes/fes-envelope-report.json", "sha256": "…"},
{"path": "fes/contract-signed.pdf", "sha256": "7a054fa5…272b"}
],
"verification_routine": "xem README.md (quy trình DS04)",
"package_sha256": "<SHA-256 của chính tệp ZIP>"
}
Quy tắc Facsimile: vật lý với FES, còn lại là tham chiếu
Quan trọng (quy tắc cốt lõi của Saga):
| Phương thức | Facsimile trong gói | Lý do |
|---|---|---|
| Dạng văn bản (Phần I) | Tham chiếu (SHA-256 + dấu guid) | Đồ họa nằm trong thư mục PII của repo tenant; chuỗi tham chiếu, gói ghi nhận tham chiếu |
| FES (Phần II) | Vật lý (SVG + PNG) | Gói là bản bàn giao đầy đủ; người kiểm tra cần đồ họa để kiểm tra mà không cần quyền truy cập repo |
Sự khác biệt là có chủ đích: với dạng văn bản, asset vẫn ở nơi được duy trì liên quan đến GoBD (thư mục PII, Sidecar, xác minh SHA); với FES, nó được sao chép — gói là bản đầy đủ (bản gốc vẫn không thay đổi trong repo; SHA-256 chứng minh tính đồng nhất).
Quy trình xác minh trong gói
README.md dẫn người kiểm tra qua quy trình (DS04, gói-native):
# 1. Manifest-Integrität
sha256sum -c <(jq -r '.artifacts[] | "\(.sha256) \(.path)"' MANIFEST.json)
# 2. Kette prüfen (Quell-Dokument → Signatur-Doc → Events)
jq -r '.target.sha256' signature/signature-doc.json # = sha256(source/gvb.md)
# 3. Event-Kette
jq -r '.prev_event_sha256' signature/event-*.json # Verkettung prüfen
# 4. Facsimile
sha256sum signature/facsimile.svg # = 8fcffe0b…1006 (Tabelle)
# 5. PDF-Signatur (externes Tool, optional)
pdfsig fes/contract-signed.pdf # VALID, PAdES-B-T
ZIP xuất khẩu so với repo Git: định nghĩa manifest
Hai dạng trình bày của cùng một container:
| Dạng | Tên | Vai trò |
|---|---|---|
| Trong repo Git | <Referenced-Doc-Basisname>.gcpn.md |
Bản thân container — các artifact JSON nhúng + bảng xác minh của nó chính là manifest (repo hiển thị nội dung trực tiếp; tệp ZIP không thể hiển thị trong Git) |
| Dưới dạng xuất | <Referenced-Doc-Basisname>.gcpn.zip |
Bàn giao vật lý (ZIP) — kèm thêm MANIFEST.json (tất cả SHA-256 + package_sha256) như danh mục đọc được bằng máy |
Vậy định nghĩa manifest có hợp lệ không? Có — ở cả hai dạng: Trong
repo Git, .gcpn.md thực hiện chức năng manifest (nó liệt kê từng
artifact kèm SHA-256, quy trình xác minh kiểm tra dựa trên các thông tin
nhúng); trong ZIP xuất khẩu, cùng chức năng manifest đó còn được đính kèm
vật lý dưới dạng MANIFEST.json để người nhận có thể kiểm tra mà không cần
MD-Parser (sha256sum -c). Cả hai dạng đều tương đương —
SHA-256 của các artifact chứa bên trong là sự xác định (luôn luôn và
ở mọi nơi).
| Hậu tố | Ý nghĩa |
|---|---|
.gcpn |
Container GitCover-PrimaNota (gộp các giao dịch kinh doanh) |
.md |
Dựa trên Markdown (các artifact JSON trong MD-Fences, tương thích Typora) — chức năng manifest trong repo |
.zip |
Dạng xuất (bàn giao vật lý, kèm MANIFEST.json) |
Saga khép lại Phần II
Vòng tròn đã khép kín:
- Phần I: chuỗi dạng văn bản (tài liệu nguồn, tài liệu chữ ký, sự kiện, Sidecar, container GCPN) — § 126b BGB, đánh giá chứng cứ tự do.
- Phần II: kết nối FES (các cấp eIDAS, lớp Facsimile, bảng chữ ký, báo cáo Envelope, gói vật lý).
- Phần III (dự kiến): vòng PII/GPG — quản lý khóa, lược đồ JSON Signing-Identity, cơ chế SSH so với OpenPGP, Trust-Registry.
Saga cho thấy: GitCover không thay thế các dịch vụ ký — nó neo chúng. Repo vẫn là lớp bằng chứng; các phương thức bên ngoài kết nối vào mà không làm đứt chuỗi.
Tạo: 260913 | Phần II, bài viết DS10 | Chuỗi: digital-signage