EU ESPR Policy

數位產品護照 DPP

Digital Product Passport 測試平台與區塊鏈驗證

什麼是 DPP?

數位產品護照 (Digital Product Passport, DPP) 是歐盟《生態設計法規》(ESPR) 核心政策,旨在建立產品從原料、製造到回收的全生命週期透明度。其架構包含產品唯一識別碼、材料組成、環境足跡 (碳/水足跡)、維修資訊及回收指示,以數位格式 (如 QR Code) 記錄並供供應鏈、消費者及回收商查詢。

DPP 核心架構

  • 🔗
    1. 物理識別層 (Physical Identity) 通過 QR Code、RFID 或 NFC 晶片與實體產品綁定。
  • ⛓️
    2. 數據存儲層 (Data Storage) 使用區塊鏈、雲端資料庫或分散式帳本技術 (DLT),確保數據不可篡改。
  • 📊
    3. 信息披露層 (Information Layer) 包含基礎身分(UID/GTIN)、材質與環境(碳足跡)、循環與維修等16大類數據。

⚙️ 建立 DPP 數據 (以電池為例)

輸入產品資訊,我們將為您生成數位產品護照與專屬 QR Code。

📱 DPP 識別結果

尚未生成

區塊鏈數據預覽 (JSON)

等待數據輸入...
區塊鏈節點:待命中

⛓️ 區塊鏈瀏覽器 1 個區塊

每個區塊的資料都經過 SHA-256 雜湊處理,並與前一區塊的 Hash 鏈接,形成不可篡改的鏈式結構。

🔓 篡改偵測測試

模擬攻擊者竄改區塊資料,觀察區塊鏈如何自動偵測並標示異常。

區塊鏈與 DPP 運作原理

深入了解分散式帳本如何確保資料透明與不可篡改

🔗 區塊鏈核心原理與 DPP 上鏈流程

區塊鏈 (Blockchain) 是一種**去中心化的分散式帳本技術 (DLT)**。在數位產品護照 (DPP) 的應用中,它解決了傳統供應鏈資料容易被篡改、不透明的問題。

  • 1. 資料收集與雜湊 (Hashing): 產品在各個生命週期階段 (製造、運輸、回收) 產生的資料,會先被轉換為一組獨一無二的「數位指紋」(Hash 值)。👇 查看詳細原理
  • 2. 分散式儲存 (IPFS/Cloud): 由於區塊鏈儲存空間昂貴,完整的 DPP 數據 (如 JSON 檔案、檢驗報告) 通常會存放在 IPFS (星際文件系統) 或安全的雲端資料庫。
  • 3. 智能合約上鏈: 產品的 UUID 結合上述的資料 Hash 值與儲存位址 (CID),會透過「智能合約」寫入區塊鏈中。一旦上鏈,這筆紀錄將被廣播到全球所有節點,無法再被修改。

🔐 雜湊 (Hash) 原理深入解析

雜湊函數 (Hash Function) 是一種單向數學運算,能夠將任何長度的資料轉換為一組固定長度的字串(稱為「雜湊值」或「數位指紋」)。在區塊鏈與 DPP 中最常使用的是 SHA-256 演算法。

SHA-256 的四大核心特性

🎯
確定性

相同的輸入永遠產生相同的輸出。無論在世界任何角落、任何電腦上運算,只要輸入資料一樣,Hash 值就會完全相同。

🔒
不可逆性

無法從 Hash 值反推出原始資料。就像把一顆雞蛋打散後,無法再還原成完整的雞蛋一樣。這保護了原始資料的隱私。

🦋
雪崩效應

即使原始資料只改動了一個字元,產生的 Hash 值也會完全不同。這讓任何微小的篡改都無所遁形。

📏
固定長度

不論輸入資料是 1 個字元還是一整本書,SHA-256 的輸出永遠是 64 個十六進位字元 (256 bits)。

🧪 互動式 Hash 測試

在下方輸入任意文字,即時觀察 SHA-256 雜湊值的變化。試著只改動一個字元,觀察「雪崩效應」!

SHA-256 運算
計算中...

⚡ 雪崩效應對比

下方會自動將您的輸入「最後一個字元」替換為 *,觀察即使只改了一個字,Hash 值也完全不同。

原始輸入 - -
改動一個字元 - -

📦 在 DPP 中的實際應用場景

製造階段
原材料清單、鈷含量 15%、再生材料佔比 30%
→ Hash: a3f7c2...
運輸階段
出廠日期、運輸溫度紀錄、物流公司簽章
→ Hash: 8e1b4d...
回收階段
回收指引、可拆解元件清單、環保評分
→ Hash: 5c9f0a...

每個階段的資料都會獨立產生 Hash 值,並寫入區塊鏈。消費者掃描 QR Code 時,系統會重新計算下載到的資料的 Hash,與鏈上的 Hash 進行比對。只要有任何一個 Hash 不吻合,就代表該階段的資料被篡改過。

架構流程圖

📦 實體產品
貼有 QR Code
掃描 QR Code
📱 消費者 / 稽核員設備
HTTP 請求 (解析 UUID)
🌐 去中心化應用 (dApp Gateway)
1. 查詢智能合約
⛓️ 區塊鏈帳本
Ethereum / Polygon
回傳: Hash & CID
2. 請求完整資料
💾 分散式儲存
IPFS / 雲端資料庫
回傳: JSON 數據
🔍 3. 比對 Hash 值是否一致?
✅ 一致
呈現可信的 DPP 資訊
❌ 不一致
⚠️ 警告:資料可能遭到篡改

❓ 既然是分散式帳本,如何掃描 QR Code 取得各帳本資料?

分散式帳本雖然由全球成千上萬的「節點 (Nodes)」共同維護,但**每個節點都保存著相同的資料狀態**。

1. 單一入口 (Gateway) 的角色:
當您掃描 QR Code 時,QR Code 中的網址 (例如 dpp-verify.eu/item/UUID) 實際上是指向一個由政府或企業維護的**「前端閘道器 (Gateway)」**或 RPC 節點。

2. 向區塊鏈網路廣播查詢:
這個 Gateway 就像一個翻譯員,它會將您的 UUID 轉換為區塊鏈上的查詢指令,並向任一區塊鏈節點讀取智能合約狀態。因為所有節點的資料都是同步且一致的,所以問哪個節點都會得到相同的答案。

3. 雜湊驗證確保真實性:
為了防止 Gateway 造假,前端應用程式會將從 IPFS 下載下來的產品資料 (如您剛剛生成的 JSON) 重新進行一次 Hash 運算,並與從區塊鏈上讀取出來的 Hash 值進行比對。如果兩者完全相符,就證明這份資料是**原始且未被篡改**的。

資料上鏈 流程圖

從商品資料輸入到 SHA-256 雜湊、寫入區塊鏈的完整流程解析

📋 流程總覽

當使用者在 DPP 測試平台填寫商品資料並提交後,系統會依序執行以下步驟,將資料安全地寫入區塊鏈。

每一步都有其不可或缺的安全意義,確保資料的完整性可驗證性不可篡改性

1

使用者填寫商品資料

輸入層

使用者在表單中輸入產品的各項資訊(UUID、供應商、材料組成、碳足跡等)。

📝 原始表單資料
{
  "identity": {
    "uuid": "BAT-123456-ABCDE",
    "supplier": "ABC Battery Co."
  },
  "materials": {
    "cobalt_nickel_ratio": "15% / 20%",
    "recycled_percentage": "30%"
  },
  "environmental": {
    "carbon_footprint": "120 kgCO2e/kWh"
  }
}
💡 此時資料為明文 JSON 格式,尚未經過任何雜湊或加密處理。任何人都可以閱讀這份資料的內容。
JSON.stringify()
2

SHA-256 雜湊 → 產生 Data Hash

雜湊層

將整份 JSON 字串通過 SHA-256 演算法計算,產生一組 64 位十六進位字元的「數位指紋」(Data Hash)。

📄 JSON 字串 (任意長度)
{"identity":{"uuid":"BAT-123456-ABCDE", ...}}
SHA-256
🔑 Data Hash (固定 64 字元)
a3f7c2e91b4d...
🔐 這個 Hash 值就是商品資料的「數位指紋」。任何微小的資料變動(即使只改一個字元),都會導致 Hash 完全不同(雪崩效應)。
⚠️ 注意:Hash 是不可逆的。無法從 Data Hash 反推出原始的商品資料,因此可以保護資料隱私。
寫入 Block
3

建立新區塊 (Block)

區塊層

系統將 Data Hash 與其他區塊資訊打包成一個新的區塊。區塊的結構如下:

index 區塊編號(第幾個區塊) 1
timestamp 區塊建立的時間戳 2026-05-10T14:50:00Z
data 原始商品資料 (明文 JSON) {identity: {...}, ...}
dataHash 商品資料的 SHA-256 數位指紋 a3f7c2e9...
previousHash 前一個區塊的 Block Hash(形成「鏈」) 00e3b400...
nonce 工作量證明的計數器 0 (初始值)
🔗 previousHash 是讓區塊「鏈接」在一起的關鍵。每個區塊都記錄著前一個區塊的 Hash,形成一條不可斷裂的鏈。
工作量證明 (Mining)
4

挖礦 (Mining) — 計算 Block Hash

共識層

將區塊內所有資訊串接後,反覆進行 SHA-256 計算(不斷調整 nonce),直到找到一個符合難度條件的 Hash 值。

計算公式
Block Hash = SHA-256( index + previousHash + timestamp + dataHash + nonce )
nonce=0 SHA-256(...) → 7f3a2b... ✗ 不符合
nonce=1 SHA-256(...) → b91c4e... ✗ 不符合
nonce=2 SHA-256(...) → e05f7a... ✗ 不符合
⋮ 反覆嘗試...
nonce=126 SHA-256(...) → 00d9bb1c... ✓ 前2位為0!
⛏️ 難度 (difficulty) = 2 表示 Block Hash 的前 2 個字元必須為 "00"。難度越高,需要嘗試的 nonce 越多,計算時間越長。這就是「工作量證明 (Proof of Work)」。
上鏈完成
5

區塊加入鏈中 — 資料永久記錄

存儲層

挖礦成功後,新區塊被加入區塊鏈尾端。此時區塊鏈瀏覽器會即時更新,顯示完整的鏈式結構。

Block #0
Genesis
Hash: 00e3b4...
Block #1
NEW
prevHash: 00e3b4...
Hash: 00d9bb...
Block #2
下一筆...
prevHash: 00d9bb...
🛡️ 一旦資料上鏈,任何修改都會破壞整條鏈。因為修改一個區塊的資料會導致其 Data Hash 改變 → Block Hash 改變 → 下一個區塊的 previousHash 不匹配 → 連鎖失效。

🔍 「上鏈」到底是上到哪裡?

前面的流程都發生在你的電腦或伺服器上。但「上鏈」這一步,資料會被寫入一個由全球節點共同維護的分散式帳本。以下詳細說明。

⛓️ 上到什麼「鏈」?— 三種主要類型

🌐

公有鏈 (Public Chain)

Ethereum Polygon Solana
誰可以用任何人
需要申請❌ 不需要
費用Gas Fee (手續費)
節點數數千~數萬台
只要有「錢包 (Wallet)」就能寫入。Gas Fee 隨網路擁堵波動。
🏢

聯盟鏈 (Consortium Chain)

Hyperledger Fabric IOTA
誰可以用需申請加入
需要申請✅ 需要授權
費用依聯盟規定
節點數數十~數百台
由行業協會或企業聯盟管理,適合 B2B 供應鏈應用。
🏛️

政府鏈 (Government Chain)

EBSI (歐盟)
誰可以用成員國政府/企業
需要申請✅ 政府審批
費用政府補助
節點數歐盟各成員國
歐盟 2018 年建立,專用於數位身分、學歷認證、DPP 等政策。
📦 DPP 最可能使用 EBSI(歐盟官方)或 Polygon(低成本公有鏈,每筆交易 < $0.01)。

🤔 為什麼會有這些「鏈」?

👥
公有鏈 — 社群驅動

Ethereum 由全球開發者在 2015 年共同創建。任何人都可以下載軟體,運行一台「節點」加入網路。目前全球有超過 8,000 個節點共同維護同一份帳本。

🏛️
政府鏈 — 政策驅動

EBSI 由歐盟委員會在 2018 年主導建立,歐盟 27 個成員國各運行節點。專門服務歐盟的數位身分、學歷認證、DPP 產品護照等政策需求。

📝 上鏈需要「申請」嗎?

🌐 公有鏈 免申請
  1. 下載錢包 (如 MetaMask)
  2. 購買少量加密貨幣 (付 Gas Fee)
  3. 透過智能合約寫入資料
🏛️ 聯盟鏈 / EBSI 需申請
  1. 向管理方提交企業資格申請
  2. 通過 KYC (身分驗證) 審查
  3. 取得 API Key 或數位憑證
  4. 透過授權接口寫入資料

⚠️ 上鏈有什麼風險?

💰 Gas Fee 波動

公有鏈的手續費隨網路擁堵劇烈波動。Ethereum 曾高達每筆 $50+。

應對 使用 Layer 2 方案 (Polygon) 或聯盟鏈可降至 < $0.01
🐛 智能合約漏洞

寫入資料的程式碼若有 Bug,可能被攻擊者利用。

應對 上線前進行第三方安全審計 (Audit)
☠️ 鏈死亡風險

如果選用的鏈項目停止運營,資料可能無法存取。

應對 選擇主流鏈 (Ethereum/Polygon) 或政府支持的 EBSI
🔒 資料永久性

上鏈後無法刪除。若有個資需遵守 GDPR「被遺忘權」,需特別設計架構。

應對 鏈上只存 Hash,個資存鏈下(可刪除)
51% 攻擊

理論上,控制超過半數算力可篡改鏈。但主流公有鏈幾乎不可能。

應對 Ethereum 節點 8,000+,攻擊成本極高 (數十億美元)

⚠️ 本 Demo 與真實區塊鏈的差異

本平台為了方便展示,將完整商品 JSON + Hash 同時存入區塊。但在真實的區塊鏈應用中,做法截然不同:

📦 本 Demo 做法 🌐 真實區塊鏈做法
鏈上存什麼 完整 JSON + Hash 只存 Hash + CID
(內容定址識別碼)
完整資料放哪 也在鏈上 (Block.data) 鏈下 (Off-Chain)
IPFS / 雲端資料庫
原因 Demo 方便展示驗證流程 鏈上儲存非常昂貴
Ethereum: 每 32 bytes ≈ 20,000 gas

🌐 真實世界的資料流

📄
商品 JSON
💾
存到 IPFS
取得 CID
🔑
SHA-256
產生 Hash
⛓️
上鏈
只存 Hash + CID
🔍 驗證時:消費者掃描 QR Code → 系統用 CID 從 IPFS 下載完整 JSON → 重新計算 SHA-256 → 與鏈上的 Hash 比對。若一致,代表資料未被竄改。

❓ 商品資料是明碼,不需要加密嗎?

這是一個很好的問題。答案是:DPP 的資料故意用明碼,因為歐盟法規的核心目的就是資訊透明化

🔑

Hash (雜湊)

解決的問題

「資料有沒有被改過?」

→ 完整性驗證 (Integrity)
不可逆 固定長度 任何人可驗證
VS
🔒

加密 (Encryption)

解決的問題

「資料有沒有被偷看?」

→ 隱私保護 (Privacy)
可逆 (有金鑰) 任意長度 僅授權者可讀

📦 DPP 為什麼用明碼?

歐盟《生態設計法規》(ESPR) 要求 DPP 資料必須對以下對象公開透明

👤 消費者 材料成分、碳足跡、維修指引
♻️ 回收商 可拆解元件、有害物質清單
🏛️ 政府稽核 合規性資料、供應鏈來源
在 DPP 場景:需要 Hash(防止有人竄改碳足跡數據),不需要加密(資料本來就要給大眾看)。

🔒 什麼時候需要加密?

如果區塊鏈上的資料不想公開(例如醫療紀錄、商業機密),流程會變成:

原始資料
AES 加密 🔒 變成密文
密文存 IPFS
SHA-256(密文) Hash 上鏈
🔑 只有持有解密金鑰的人才能閱讀原始資料,但任何人都可以驗證資料是否被篡改。
📦 DPP (產品護照) 🏥 醫療 / 機密場景
資料要公開嗎? ✅ 是,法規要求透明 ❌ 否,需要隱私保護
需要 Hash? ✅ 需要,防篡改 ✅ 需要,防篡改
需要加密? ❌ 不需要 ✅ 需要 (AES等)
IPFS 存的是 明文 JSON 加密後的密文

🛡️ 為什麼這個流程是安全的?

🔑
Data Hash 保護內容

商品資料的 SHA-256 Hash 確保資料完整性。任何竄改都會被即時偵測。

🔗
previousHash 保護順序

每個區塊記錄前一個區塊的 Hash,形成不可斷裂的鏈。無法插入或刪除區塊。

⛏️
PoW 保護寫入權

工作量證明要求消耗算力才能新增區塊,防止惡意大量寫入。

🌐
分散式儲存防單點失效

區塊鏈資料同步到所有節點,任何單一節點被攻擊都不影響整體。