iT邦幫忙

0

是否有可利用簽章或憑證的方式來證明資料庫裡的資料沒被竄改?

fenn 2012-06-05 17:19:563501 瀏覽

我的公司要建立一個雲端軟體租賃服務網站,會提供客戶租賃使用
所以這些客戶註冊後會在網站上輸入一些資料,而因應個資法即將施行,不管是輸入的個人資料,甚至於軌跡資料都要受到保護
現在我們已經規劃網站會使用SSL的憑證,但是在資料儲存這一塊,希望能做到當客戶在儲存時也一併能夠儲存簽章或憑證,以可用來證明說資料並未被竄改,而這簽章或憑證希望是由第三公正方發出(如CA),所以可能必須要我們開發商也可以發出簽章或是憑證給客戶才能做到這需求
不知道是不是有什麼CA的廠商提供這樣的服務?

fenn提到:
不知道是不是有什麼CA的廠商提供這樣的服務?


你們申請SSL憑證的廠商
應該就有提供這樣的服務

所謂的CA基本上只管憑證
憑證很單純
申請->交錢->使用->交錢(展期)->使用->交錢(展期)

至於你要簽章、證明資料沒被竄改
都得要自行開發系統建置
(或許搭配CA提供的函式庫)

貴公司這種應用憑證的想法
立意甚佳
但通常會在列出「憑證費用(申請、年費)」之後
就列入「下一階段目標」
huezo iT邦新手 5 級 ‧ 2012-06-08 08:48:00 檢舉
在討論此問題之前,我們先來解析這三個名詞:

數位簽章
簽章憑證
憑證單位


數位簽章(Digital Signature)
一種使用公鑰加密的技術,來驗證數位資訊。例如文件、電子郵件訊息和巨集。數位簽章有: (http://www.tw.sgs.com/sgssites/rohs/zh_tw/digital-signature-faq.htm)

驗證性:數位簽章有助於確保簽署者即為簽署者本人。
完整性:數位簽章有助於確保內容在數位簽署之後,沒有經過變更或遭到竄改。
不可否認性:數位簽章有助於向各方證明所簽署內容的來源。

簽章憑證(Certificate)
http://office.microsoft.com/zh-hk/word-help/HA010354667.aspx
建立數位簽章,您必須要有簽章憑證,這會證明身分識別。當您傳送數位簽章的巨集或文件時,也會傳送您的憑證和公開金鑰。憑證是由憑證授權單位所發出,這和駕駛執照一樣,都可能遭撤銷。憑證的有效期通常是一年,到期時,簽章者就必須更新,或取得新的簽章憑證,來證明身分識別。

憑證授權單位 (CA)
憑證授權單位是類似公證處的單位。該單位會發出數位憑證、簽章憑證以驗證有效性,以及追蹤哪些憑證已遭撤銷或已過期。
VeriSign、GeoTrust是兩個具有國際權威性的CA組織。
8
singlong
iT邦新手 5 級 ‧ 2012-06-05 17:52:17
最佳解答

1.最簡單的方式是把該筆所有欄位資料做hash 運算, 這是一個單向的運算,
若資料被異動, 則 hash 值一定不同
2.若您的公司要發憑證給客戶, 也就是要當 RA 的角色, 去向CA 申請憑證發給客戶, 憑證可能是放在瀏覽器內或是pfx 檔案
3. 儲存資料時用客戶的私鑰對該筆所有欄位資料做簽章, 提取資料時則以公鑰做驗章, 確保資料的完整性與不可否認性
4.台灣CA或RA 可參考 台灣網路認證公司, 或 全景軟體

6
lukeshei
iT邦新手 3 級 ‧ 2012-06-06 06:27:54

1.如果使用你的程式去修改資料,還能檢查的出來?
2.程式如果是使用php ruby python... 如果只是簽章,那麼hacker 不只會把你的db 複製,連程式會一併
3.發憑證給客戶....., 那麼代表這個服務只有少數人可使用服務,只能對admin
4.去找kms(密鑰管理系統) 就能發憑證,但資安的問題不是單點

4
pojen
iT邦新手 2 級 ‧ 2012-06-06 10:31:52

singlong 大的解答是我知不須額外授權的最佳解. 一般正常有兩種方法可以在有限的程度上控制/監視有權限的人更改資料的方法. 其一是利用稽核產品 (如 Oracle Audit Valut) 另一種是使用 Change data capture 的機制. (如 SQL EE 版的 CDC, 或是 Oracle 的 Total Recal) 只要 Data 有變動, 不管是有權限的帳號直接更改或是經過正常程式更新的資料都會 Log 起來.

當然能 log 起來並不能保證所有資料都沒有被變更過. 有權限的人還是可以去清 log. 資安要求分工也是一層額外的保險.

CA 說起來應該算 Authentication, 能否改資料應該算是 Authorization 吧.

我要發表回答

立即登入回答