前回、スマートロックの制御方法を考えました。
スマホから鍵の操作はVPSに構築したWEBアプリを経由することとし、VPSから鍵の操作は自宅のラズパイで制御することにしました。
今回は具体的な通信手段を考えます。
通信内容は「施錠」「解錠」等の単純な信号であるため単純なsocket通信で賄うこととします。
ただ、万が一、悪質なハッカーが通信を傍受して飛ばしているデータが自宅の鍵のデータだと判明してしまうとデータを改竄されネットワークのみならず自宅への侵入を許してしまうことになりかねません。
別にそこまで考えなくても、接続先のIPアドレス(VPSサーバー)を指定してそこからのアクセスのみ通信する。とすれば良いかもしれません。
しかし万が一には備えるべきです。
スマホからWEBアプリへは現時点で安全性の確立されたセキュアなhttps(SSL)通信を行なうのでデータが漏洩することはまあまず無いでしょう。
<過去記事>
WEBアプリのように「どこからでもどの端末からでもユーザー情報を持っていればアクセス可能」とする場合は上のような公開鍵を用いたSSL通信が有効です。
今回はWEBサーバーから自宅のラズパイという決まった相手とsocket通信で簡単なコマンドを送るだけですので共有鍵が1つあれば解決するように思います。
問題点として、共有鍵が1度判明してしまえば後の通信内容は全て判明してしまうことになります。
ましてや素人がお手軽に作ったような暗号文ならばプロにかかればひとたまりも無いでしょう。
【ここから先は、noteの有料記事として投稿しました。】
申し訳ありません。このままブログで書き続けたいところなのですが、スマートロックの肝となるセキュリティーに係る重要な部分ですので限定的な公開とさせていただくことにしました。
有料記事の内容は
・複合されにくい暗号の工夫
・複合を試みる気を無くす工夫
・実際の暗号化したsocket通信の外部からの見え方
を記載しています。
※有料記事にも実際のコードは記載していません。オリジナル暗号通信の作成方法だけでコピペで使える内容ではございませんのでご注意ください。
※今回の記事内容を飛ばしましても次回「3Dプリンターを使ってスマートロックを自作する⑦」の記事以降に特に影響はございません。
<この記事の続き(note記事)>
次回、スマートロックを組み立てていきます。