• 沒有找到結果。

第 4 章 區塊鏈數位鑑識證據監管鏈平台應⽤系統操作說明

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第 4 章 區塊鏈數位鑑識證據監管鏈平台應⽤系統操作說明

區塊鏈數位鑑識證據監管鏈應⽤提供網⾴介⾯供⽤⼾操作本平台四⼤作業 流程,分別為:註冊新⽤⼾、產⽣證據監管鏈表、傳送證據監管鏈表以及接收 證據監管鏈表。本應⽤系統執⾏於 Tomcat Web Server ,以 Java 語⾔開發,

透過 web3j 函式庫作為 Java 與 solidity 智能合約通訊的媒介,使應⽤系統能 做智能合約的部署及智能合約函式的調⽤。

以下以模擬⼀個情境說明本應⽤系統的功能,情境為:某蒐證單位(傳送

⽅)撰寫完⼀份證據監管鏈後,將該證據監管鏈遞交給數位鑑識實驗室(接收

⽅)。過程包含:註冊新⽤⼾、產⽣證據監管鏈表、傳送證據監管鏈表、接收 證據監管鏈表以及查詢證據監管鏈紀錄。

4-1. 執⾏環境

本驗證以⼀台 Windows VM 執⾏⼀個以太坊 PoA 區塊鏈(ChainID = 23816)、三個區塊鏈節點,啟動結果⾒圖 4-1、4-2、4-3、4-4。三個節點分別 為蒐證單位節點、數位鑑識實驗室節點以及負責產⽣區塊的 Authority nodes,

⽽三個節點各有⼀位⽤⼾,蒐證單位節點的⽤⼾位址為

(0x7ca9aa1d1b00a5be4d75de5a17c0e237743601ae)、數位鑑識實驗室節點⽤⼾

位址為(0xf9a6fb91d0e257651c97035ff0bbcf04a035792f)、 Authority nodes ⽤

⼾位址為(0xeae507601a21213c718b39ce0cd81448df87877b)。此外,蒐證單位 節點及數位鑑識實驗室節點各⾃建⽴ Web Service 應⽤系統及資料庫。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4-1(左上):作業系統系統資訊 圖 4-2(右上):蒐證單位節點 圖 4-3(左下):數位鑑識實驗室節點

圖 4-4(右下):Authority nodes

4-2. 系統⾴⾯導覽

本系統包含四⼤功能分類、五個功能⼦項,本章將詳細說明。

表 4-1:系統⾴⾯導覽

功能分類 功能⼦項 功能說明

⾸⾴

顯⽰通事項告知⽤⼾:先前送出的證 據監管鏈已被接收、有待接收的證據 監管鏈等。

產⽣證據監管鏈 產⽣證據資訊

登打證據資訊(Evidence Info)儲存於 資料庫,並於區塊鏈上建⽴證據監管 鏈智能合約及 ERC721 Token。

鏈表(Evidence Info + Evidence Chain)送出並⾄區塊鏈上授權接收⽅

Get CA Public key and Private key (ECDSA secp256k1) CA ECDSA Public Key =

X: a0b770cea96f494be41a5574f0d95f1949c407ec92709dffb98ee0f84af75aa6 Y: 7de9536f7c475427a0cfe8e3417d25fc53a73c2713b84b6246bac92a0488ae94 CA Public Key in HEX encode =

S: d202a95d2f93a80f8acd187c129ff230392761938ff06d81f2ed0e247ce45ed CA Private Key in HEX encode =

User generate Ru and set the UserInfo (U) ku =

5109474314882276936093245851907117465635581003864198835128276489850 9468233882

Ru = kuG =

X: 25bed0bde91f8f21e57801e6dfd7aa3b2936016e354daef56240a31c9c41e0cb Y: 3eed0e87552d6c0702f180f0c3786f012ba7ddb2fdba3148b11ea2a4a4381ac1 U =

CN=left,OU=NCCU,O=TAIWAN,C=TW

1-3 CA 產⽣ Public Reconstruction Data(r)及憑證(CertU),將 r 及 CertU 給新⽤⼾

表 4-4:註冊新⽤⼾ step1-3 CA gen Public Reconstruction Data and CertU

n =

X: 4837357a2965d1e6a4722e1de1bcde5a7cb0100f321679c2c98306a1710e9972 Y: 9e35657bb42cc5819f0dfdb5da97c798fd1aec9c11bfb2f11126bad888d176e5 Pu = Ru + kG =

033E50EFC3E2F3E422351383504B4EB78CDD28AF39624A95AA9B62F449D9 907FCB

curveCurve||issuerID||serialNumber||subjectID||validDuration||validFrom =

{"curveCurve":"secp256k1","issuerID":"CN=MYCA,OU=ECQVCA,O=TAIWAN, C=TW","serialNumber":"1","subjectID":"CN=left,OU=NCCU,O=TAIWAN,C=T W","validDuration":"2020-11-15","validFrom":"2018-11-15"}

Certu =

U||curveCurve||issuerID||serialNumber||subjectID||validDuration||validFrom||Pu = 7B2263757276654375727665223A22736563703235366B31222C2269737375657 24944223A22434E3D4D5943412C4F553D4543515643412C4F3D54414957414E 2C433D5457222C2273657269616C4E756D626572223A2231222C227375626A6 563744944223A22434E3D6C6566742C4F553D4543515643412C4F3D544149574

User generate ECDSA key pair

Certu = U||Pu =

X: 36f66dcff3c2efddb74c6a26ab8ca4c0d94034434ad374215c1043b8bd6f98e6 Y: e814a6fc1dd726a84be6f2dcf754e48ed1c16af55175a03fb00262e098132675 User Public Key in HEX encode =

3056301006072A8648CE3D020106052B8104000A0342000436F66DCFF3C2EF DDB74C6A26AB8CA4C0D94034434AD374215C1043B8BD6F98E6E814A6FC1 DD726A84BE6F2DCF754E48ED1C16AF55175A03FB00262E098132675

User Public Key in ASN.1 encode =

n =

S: eb0f6bb68ec33bd1287608bfdd90b391e42a004edc0b179982aa639c2ea87829 User Private Key in HEX encode =

3047020100301006072A8648CE3D020106052B8104000A0430302E0201010420 EB0F6BB68EC33BD1287608BFDD90B391E42A004EDC0B179982AA639C2EA 87829A00706052B8104000A

User Private Key in ASN.1 encode =

User Verify Key Pair

驗證⽅法:QU = dU * G

isKeyPair = true

2 新⽤⼾以私鑰到以太坊搜證單位節點建⽴新⽤⼾位址(Account Address),

詳細步驟如下:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

2-3 重新查詢搜證單位節點的 Account 清單。

圖 4-8:註冊新⽤⼾ step2-3

2-4 確認 KeyStore File。

圖 4-9:註冊新⽤⼾ step2-4

2-5 透過第三⽅⼯具(https://www.myetherwallet.com)查看 KeyStore File ,並 建⽴帳⼾ QRCode。

圖 4-10:註冊新⽤⼾ step2-5

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

3 透過 EthereumJS 函式庫(https://github.com/ethereumjs),以新⽤⼾的 ECDSA 公鑰計算出以太坊帳⼾位址,以驗證⼄太坊區塊鏈上使⽤的 EC ⾦鑰 與鏈下 ECQV 憑證產⽣的⾦鑰是⼀致的。執⾏步驟如下:

3-1 執⾏ isValidPublic 函式,確認公鑰的正確性後,再執⾏ publicToAddress 函式,以公鑰值計算出⼄太坊帳⼾位址。

圖 4-11:註冊新⽤⼾ step3-1

3-2 函式輸出結果

圖 4-12:註冊新⽤⼾ step3-2

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

4-4. 查詢及產⽣證據監管鏈表

當發⽣數位鑑識案件時,蒐證單位(傳送⽅)⾄本應⽤系統登打證據監資 訊,登打完將該證據資訊儲存於蒐證單位公司內部資料庫並部署證據監管鏈以 太坊智能合約、產⽣ ERC721 Token ,操作步驟如下:

1 點選「產⽣證據資訊」⾴籤,登打證據資訊(Evidence Info),包含:案件 編號、證據編號、證據名稱、機關名稱、蒐集⽇期、蒐集時間、現場鑑識⼈

員、攝影記錄⼈員、儲存媒體序號以及證據描述。登打完點擊「確認」,系統 將計算證據資訊的訊息摘要值(evidenceMAC),並將證據資訊及訊息摘要值 儲存於資料庫。

圖 4-13:產⽣證據監管鏈表 step1

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

2 系統⾄區塊鏈上部署證據監管鏈以太坊智能合約,透過該智能合約建⽴⼀個 ERC721 Token。

圖 4-14:產⽣證據監管鏈表 step2

3 取得智能合約合約位址(Contract Address)及 ERC721 TokenID。

圖 4-15:產⽣證據監管鏈表 step3

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

4 將合約位址(Contract Address)及 ERC721 TokenID 更新⾄資料庫。

圖 4-16:產⽣證據監管鏈表 step4

在證據監管鏈表送出之前,若證證據資料內容有誤,除了案件編號、合約 位址、 TokenID 及證據驗證碼四個欄位不可變更外,其他欄位均可變更。變更 結果會寫⼊資料庫,並重新計算證據資料訊息摘要值(evidenceMAC)。變更 步驟如下:

1 點選「查詢及維護證據資訊」⾴籤,會看到狀態為已建⽴但尚未送出的證據 監管鏈表清單,⽤⼾可點選「點我查看」逐筆查看各證據資訊內容。

圖 4-17:異動未送出的證據監管鏈表 step1

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

2 查看該證據資訊的詳細資料。若⽤⼾想變更證據資訊,可點選「編輯」做變 更,其中案件編號、合約位址、 TokenID 及證據驗證碼四個欄位不可變,其餘 欄位均可變更。

圖 4-18:異動未送出的證據監管鏈表 step2

3 變更完點選「儲存」,系統會⾃動重新計算證據資訊的訊息摘要值

(evidenceMAC),並將異動結果及訊息摘要值變更⾄資料庫。

圖 4-19:異動未送出的證據監管鏈表 step3

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

4 顯⽰證據資訊變更結果。

圖 4-20:異動未送出的證據監管鏈表 step4

圖 4-21:異動未送出的證據監管鏈表 step4

4-5. 查詢及傳送證據監管鏈表

蒐證單位(傳送⽅)可透過此功能看到所有經⼿過的證據監管鏈表清單以 及該證據監管鏈表的詳細資訊。若傳送⽅欲登打⼀筆新的證據監管鏈資訊

(Evidence Chain),該證據監管鏈表的所有權必須在傳送⽅⼿上才可登打。因 此,在⽤⼾登打證據監管鏈資訊前,系統將⾃動執⾏智能合約 ownerOf 函式確 認 Token 是否為登打者所有,否則不可登打。詳細步驟如下:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

1 點選「查詢及新增證據監管鏈表」⾴籤,可查詢⽤⼾曾經⼿過的所有證據監 管鏈清單。

圖 4-22:查詢證據監管鏈表 step1

2 選擇任⼀筆證據監管鏈表點選「點我查看」,可查看詳細資訊。

圖 4-23:查詢證據監管鏈表 step2

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

3 蒐證單位點選「新增」可新增⼀筆證據監管鏈資訊(Evidence Chain)。新 增前,系統會檢核該證據監管鏈表在區塊鏈上的 ERC721 Token 的所有權是否 為蒐證單位所有,是才可新增,反之無法。

圖 4-24:新增證據監管鏈表資訊 step3

4 蒐證單位登打證據監管鏈資訊,包含:交付的⽇期及時間、部⾨交付⼈員、

部⾨接收⼈員、⽬的、交付單位聯絡⽅式(公司名稱、公司統編、聯絡⼈姓 名、聯絡電話、聯絡 e-Mail),登打完點選「確認」。

圖 4-25:新增證據監管鏈表資訊 step4

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

5 證據監管鏈資訊新增成功,系統將證據監管鏈資訊更新⾄資料庫。

圖 4-26:新增證據監管鏈表資訊 step5

6 重新查看該筆證據監管鏈表,可看到⼀筆新的證據監管紀錄。但是因為尚未 傳遞出去,所以傳送 BlockNo 和接收 BlockNo 都是沒有值。

圖 4-27:新增證據監管鏈表資訊 step6

登打完證據證據監管鏈資訊,蒐證單位就可以透過區塊鏈以及鏈下的 WebService API將證據監管鏈表傳遞給數位鑑識實驗室(接收⽅)。為增加安 全強度,在傳送前會透過 ECQV 憑證認證數位鑑識實驗室的⾝份並將資料作 加密。操作步驟如下:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

1 點選「傳送證據監管鏈」查看待傳送的證據監管鏈清單(無傳送 BlockNo 的證據監管鏈表,即資料庫有資料但尚未⾄區塊鏈上做授權的 Token)。選擇 任⼀筆證據監管鏈表點選「點我查看」,可查看詳細資訊。

圖 4-28:傳送證據監管鏈表資訊 step1

2 點選「設定傳送對象」可指定欲傳送的節點。

圖 4-29:傳送證據監管鏈表資訊 step2

3 指定數位鑑識實驗室為接收⽅,系統⾄資料庫查詢該數位鑑識實驗室的節點 CN 及節點 IP 。點選「送出節點資訊請求」,系統透過 WebService API 發出 GetNodeInfo Request 向接收⽅請求 ECQV 憑證及以太坊節點位址。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4-30:傳送證據監管鏈表資訊 step3

4 數位鑑識實驗室(接收⽅)GetNodeInfo Response 其 ECQV 憑證及以太坊 節點位址。蒐證單位收到 ECQV 憑證後,可剖析憑證內容以確認憑證的 Common Name 及有效⽇期,再透過公式計算出數位鑑識實驗室的公鑰,接著 由公鑰計算出其太坊節點位址,最後,⽐對接收到的節點位址與計算出的節點 位址即可驗證數位鑑識實驗室節點的⾝份。

圖 4-31:傳送證據監管鏈表資訊 step4

5 在證據監管鏈表送出前,做最後的表單內容確認及接收者資訊確認。確認無 誤後,點選「傳送」,執⾏智能合約 approve 函式授權數位鑑識實驗室(接收

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

⽅)取得證據監管鏈表 ERC721 Token ,同時發出 TransferEvidenceChain Request ,鏈下將該證據監管鏈表做簽章、加密後傳給數位鑑識實驗室。

圖 4-32:傳送證據監管鏈表資訊 step5

6 系統執⾏智能合約 approve 函式,產⽣⼀個 Transaction , Miner 將 Transaction 放到鏈上,產⽣⼀個 Block(BlockNo = 1304)。系統取得 Block number 後,將 Block number 儲存於資料庫中。

圖 4-33:傳送證據監管鏈表資訊 step6

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4-34:傳送證據監管鏈表資訊 step6

7 重新查詢證據監管鏈表,可在證據監管紀錄中看到先前做 Approve Transaction 的 Block number(即傳送 BlockNo )。

圖 4-35:傳送證據監管鏈表資訊 step7

8 鏈上的所有節點⽤⼾,隨時可透過 Block number ⾄鏈上查詢 Block 內容以 及 Transaction 資訊(Approve Transaction 的 input 包含:接收⽅ Node

Address、TokenID 以及 Token 特徵值)。

在 go-ethereum Geth console 上輸⼊ eth.getBlock(‘1340’) ,取得先前執⾏智 能合約 Approve 函式的 Block 內容,包含: difficulty 、 gasLimit 、 gasUsed 、 hash 、 transactions 等。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4-36:傳送證據監管鏈表資訊 step8

9 在 go-ethereum Geth console 上輸⼊

eth.getTransactionFromBlock(‘1340’).input ,取得先前執⾏智能合約 Approve 函式的 Transaction input 內容,但因函式的輸出結果有編碼過,因此需透過⼯

具解碼後才能看到原始內容。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 4-37:傳送證據監管鏈表資訊 step9

10 解碼 Transaction input 內容,輸⼊智能合約的 abi 及 Approve 函式的 Transaction input,點選 「decode」。

圖 4-38:傳送證據監管鏈表資訊 step10

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

11 Approve 函式的 Transaction input 內容為數位鑑識實驗室(接收⽅)的 Node Address 、 ERC721 TokenID 以及 Token 特徵值。其中 Token 特徵值 內容包含:蒐證單位(傳送⽅)的 ECQV 憑證及簽章值。

圖 4-39:傳送證據監管鏈表資訊 step11

4-6. 接收證據監管鏈表

當鑑識實驗室(接收⽅)收到來⾃蒐證單位(傳送⽅)的證據監管鏈表,

鑑識實驗室透過本系統將證據監管鏈表解密並驗證蒐證單位的⾝份及簽章值。

鑑識實驗室可根據驗證結果決議要接收或駁回該證據監管鏈表,若決議接收,

則執⾏智能合約的 Transfer 函式將 token 的擁有權移轉給⾃⼰;若決議駁回

則執⾏智能合約的 Transfer 函式將 token 的擁有權移轉給⾃⼰;若決議駁回

相關文件