Upgrade to Pro — share decks privately, control downloads, hide ads and more …

cris (supplementary material)

ktr
January 11, 2018

cris (supplementary material)

supplementary material

ktr

January 11, 2018
Tweet

More Decks by ktr

Other Decks in Programming

Transcript

  1. Blockchain を 利用したファイル改竄検知 [email protected]

  2. ファイルの完全性の検証 ハッシュアルゴリズムによる検証

  3. ファイルの完全性の検証 ハッシュアルゴリズムによる検証 hash := H(content) md5('hello') = b1946ac92492d2347c6235b4d2611184

  4. ファイルの完全性の検証 ハッシュアルゴリズムによる検証 hash := H(content) md5('hello') = b1946ac92492d2347c6235b4d2611184 'hello' b1946ac92492d2347c6235b4d2611184

  5. ファイルの完全性の検証 ハッシュアルゴリズムによる検証 hash := H(content) md5('hello') = b1946ac92492d2347c6235b4d2611184 'hello' b1946ac92492d2347c6235b4d2611184

    hash := H(received_content) md5('hello') = b1946ac92492d2347c6235b4d2611184
  6. ファイルの完全性の検証 ハッシュアルゴリズムによる検証 hash := H(content) md5('hello') = b1946ac92492d2347c6235b4d2611184 'bad hello'

    b1946ac92492d2347c6235b4d2611184 hash := H(received_content) md5('hello') = b1946ac92492d2347c6235b4d2611184
  7. ファイルの完全性の検証 ハッシュアルゴリズムによる検証 hash := H(content) md5('hello') = b1946ac92492d2347c6235b4d2611184 'bad hello'

    b1946ac92492d2347c6235b4d2611184 hash := H(received_content) md5('bad hello') = 842dc2b34384799a1f1a3a1315ab1f5b
  8. ファイルの完全性の検証 署名 + ハッシュアルゴリズムによる検証 hash := H(content) signature := SignByPrivateKey(hash)

  9. ファイルの完全性の検証 署名 + ハッシュアルゴリズムによる検証 hash := H(content) signature := SignByPrivateKey(hash)

    content public key signature
  10. ファイルの完全性の検証 署名 + ハッシュアルゴリズムによる検証 hash := H(content) signature := SignByPrivateKey(hash)

    content public key signature expectedHash := decodeByPublicKey(signature) actualHash := H(content) check expectedHash == actualHash
  11. ファイルの完全性の検証 ファイル自体が改竄されると検出できない hash := H(badContent) signature := SignByPrivateKey(hash) content public

    key signature expectedHash := decodeByPublicKey(signature) actualHash := H(content) check expectedHash == actualHash
  12. Blockchain • bitcoin のコアを支える技術 • P2P のシステム • 記録された情報への改竄を検出でき、復元可能

  13. Blockchain

  14. Ethereum • bitcoin の Blockchain をベースにした派生 • スマートコントラクトを実装している

  15. スマートコントラクト • Blockchain ネットワーク上で動くアプリケーション • アプリケーションの状態を変更する様なアクション (command) は Blockchain に記録される

    • アプリケーションの保有するデータを改竄できない
  16. 今回のアプリのアーキテクチャ 1. generate keypair Upload File

  17. 今回のアプリのアーキテクチャ 1. generate keypair 2. create Ethereum account Upload File

  18. 今回のアプリのアーキテクチャ 1. generate keypair 3. store H(content) and own account

    address 2. create Ethereum account Upload File
  19. 今回のアプリのアーキテクチャ 1. generate keypair 4. upload content with signature and

    public key 3. store H(content) and own account address 2. create Ethereum account Upload File
  20. 今回のアプリのアーキテクチャ 1. generate keypair 4. upload content with signature and

    public key 3. store H(content) and own account address 5. verify content by signature 2. create Ethereum account Upload File
  21. 今回のアプリのアーキテクチャ 1. generate keypair 4. upload content with signature and

    public key 3. store H(content) and own account address 5. verify content by signature 2. create Ethereum account Upload File 6. store the content
  22. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL

  23. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL 2.

    share the URL https://example.com/{hash}
  24. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL 2.

    share the URL https://example.com/{hash} 3. open the URL
  25. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL 2.

    share the URL https://example.com/{hash} 3. open the URL 4. verify hash and it's owner
  26. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL 2.

    share the URL https://example.com/{hash} 3. open the URL 5. verify hash and it's owner 4. verify hash and it's owner
  27. 今回のアプリのアーキテクチャ Share / Download File 1. generate shared URL 2.

    share the URL https://example.com/{hash} 3. open the URL 5. verify hash and it's owner 6. return shared content 4. verify hash and it's owner
  28. demo

  29. 応用 • KYC (Known Your Customer)

  30. KYC (例: GMO グローバルサイン)