Posted at

IoTデバイスのスマートコントラクト登録・認証について考える


リアルなデバイスの認証をスマートコントラクトでやる場合についてのシミュレーション(議論用)

思いついたことあったらコメントお願いします。

次の場合を想定する。

目的:無人ホテル(ルームシェア)を作る

条件:

・シーツ・布ものは各自持参。あるのは洗わなくて良い物だけ。

・API・P2Pを受け付けられる鍵がドアにかかっている

・各デバイス(テレビ・冷蔵庫・ボイラーコントロール等)は全てラズベリーパイで制御。

鍵認証で使えるようになる

・入ってくる人間は一切の現金を持たず、持っているのはスマホとEthereumのアカウントと10ETHだけ。


問題1:入室&デバイスアクティベート

実装:1つの部屋に1つNFTを割当

・NFTを持っていたら次のフローで解錠認証を許す

・デバイスについても同様

・NFTは時間失効し、新規に発行され買い取られる(=入室支払い)


問題2:デバイスのビザンチン故障あるいは盗聴対策

最悪な状況:無人であるため、デバイスのラズパイの中を勝手にオーバーライドされて変なソフトを走らされる

→ コントラクトから監視する必要性


実装1:

スマホのアプリで、スマホと繋いだラズパイの中身を可視化する機能を実装。中のソフトのバイナリからのハッシュ値がスマコンに登録されたハッシュと違ったらアラートを出す。(ソフト置き換え検知)

→入室後まず、ラズパイ全てをスマホにつないでチェック(めんどくさい)

→つなぐ際のセキュリティは???

→サブ実装として(部屋番号→デバイス名→バイナリハッシュ)のテーブルが必要

→登録していないデバイスへの通信制限+電力供給のストップの必要


実装2: 

実装1がめんどいのは各デバイスラズパイを束ねる中央デバイスがないから

→中央デバイスを設置、ここで1つのコントロールソフトウェアが全部のラズパイを監視

→この1つのソフトのバイナリハッシュだけスマホでチェックすれば、あとはコントロールソフトが勝手にスマコンのテーブルと下位ラズパイのソフトのバイナリハッシュを比較し、問題があればアラートを出す。

→さらに、登録していないデバイスの排除・アラートも自動で出来る


問題3:たまに掃除しろ

→みんな頑張って

→たぶん、最後の奴を特定できるからKYCしてれば汚いやつ特定可能