ふぉっふぉっふぉ、今日はワシのかんがえた最強の入退室システムの話じゃ。

はじめに

石垣です。

前回の記事続編としてIoT特有のセキュリティ対策具体例をご紹介したいと思います。

弊社ではハードウェア診断を行っているため、お客様から具体的な対策を教えてほしい等の相談を受けますが、診断報告書による大まかな脆弱性修正方法および参考資料、報告会での技術的な回答、相談を受けた際のコンサルティングのみとなっており実際に製品を作るお仕事はしておらず、お見せする実装がございませんでした。

もしかするとセキュリティ診断会社は指摘事項を見つけるだけで、実際のところ設計とか実装とかできないでしょ!!!???と思われているかもしれませんので実証もかねてIoT特有のセキュリティ対策を行った入退室システムを本気で作ってみました。

tatac1_20200731113809

Yubikey 5 NFCをカードリーダにかざすことでドアが開く仕組みとなっています。

皆さんが利用されているSuica/PASMO等FeliCaを利用したICカードと同じ使い勝手ですが、内部の仕組みや利用技術は全く異なります。

※モザイク適当なのとデモ向けなのでPINが初期値なのはご愛嬌です

昨年9月頃から作業を開始し今年の2月頃に基本構成が完成しました。

実は今年2月にカルフォルニアで行われたRSAカンファレンスで展示も行っております。

作ったもの

今回はNFCカードリーダ側とドアの開閉制御を行うサーバ側を含め開発しました。

設計は一から考えると大変なので米国連邦政府の規格であるPhysical Access Control System (PACS1)

BACnet

http://www.bacnet.org/Bibliography/BACnet-Today-06/28889-Ritter.pdf

の規格を参照し実装しています。

しかしながら参照規格では、NFCカードリーダ、認証サーバ等をどのようにセキュアにすべきかIoT特有のセキュリティ対策について記述はないため以下の実装を行っています。

  • デバイス認証、署名のために証明書を利用、秘密鍵はTPMを利用し保護(ユニーク性/真正性の担保)
  • Secure bootで改ざんを検知(完全性の担保)
  • Full Disk Encryption(FDE)対応でディスクデータを暗号化(機密性の担保)
  • 各NFCカードリーダ、認証サーバ間はwebsocket over TLS1.3通信(機密性/完全性の担保)
tatac1_20200721154333

構成図

tatac1_20200720165157

シーケンス図

通信はすべてTLS1.3となっているので、クライアント認証を突破しない限りTLSより上位レイヤーヘの攻撃は到達しません。したがってアプリケーションおよびアプリケーションミドルウェアに脆弱性が見つかったとしても正規証明書が無い限り攻撃は到達しない為、結果的に緩和策となります。

弊社では過去に警備会社や重電メーカの入退室管理システムを利用していましたが、全く他のシステムと連動できなかったためActive Directory/LDAPとの連動を前提として設計し運用を楽にする集中一括管理の仕組みを取り入れています。

またログに関しても解錠要求記録は電子署名されているため改ざん対策のログとして利用可能です。

上記の動画で見ていただいたハードウェアですがTPMが組み込まれた産業システム向けのCPUボードを利用しており耐久性も考慮しています。

最終的なイメージ

tatac1_20200720214142
tatac1_20200720214210

上記イメージのディスプレイにはkindle等で利用されているe-ink社のディスプレイを備える予定です。

今回e-ink ディスプレイを採用した理由ですが

  • 電力が喪失しても画面が表示可能であることから、有事の際の避難経路等のメッセージ表示が可能
  • 視認性のよいお知らせ、案内表示が可能
  • タッチパネルが備わっているため簡単な操作が可能

となります。

秋月や千石等では、様々な電子ペーパーディスプレイが販売されていますが、6インチ、解像度:758 x 1024 pixels,、タッチパネル、LEDバックライト、応答速度すべてを備えたディスプレイは販売されていないため、実はe-ink社からディスプレイの調達を行い、表示やバックライト、タッチパネル向けの制御ボードを自社開発しました。

tatac1_20200731124840

ディスプレイコントローラボード

またサーバも同様にTPMが組み込まれた産業システム向けのCPUボードを利用しており汎用製品で構成しているのでコストは専用製品と比べ廉価です。

電気錠を開ける制御ですがFPGAで回路を組みつつ、制御ボードをフルスクラッチから作りました。

tatac1_20200731113802

左からIO制御ボード+FPGAボード、サーバ側ボード

なお初期バージョンの電気錠制御はリレースイッチでした。

tatac1_20200804112639

リレースイッチ

ドッグフードを食べる

作成した入退室管理システムを実際に利用するために、社内すべての扉に工事を行っています。

美和ロック等2一般に販売されている電気錠であれば制御が可能な構成となっており、既存のカードリーダを置き換え3ることが可能です。

動画に映っていた黄色いケーブルは光ファイバーです。光ファイバーを利用することでLANケーブルの100m制約は無くなります。動画内で利用しているメディアコンバータでは最大50kmまで延長することが可能であり、ノイズ、落雷等による影響を抑えることが可能です。

動画ではドアを解錠したYubikey 5 NFCでWindowsにスマートカード認証ログオンを行っています。この認証の仕組みはActive Directoryに備わっている標準機能ですので、サーバ、クライアントともに別途ソフトウェアのインストールを行う必要はありません。またウェブアプリケーションへのアクセスの際にもクライアント証明書認証を行っています。

LinuxでもSSO認証(kerberos認証)が可能であることを社内では検証済みです。なおコロナの影響で検証はまだ行えていませんがActive Directoryと連動しMacでもスマートカード認証+SSOが行える事はApple公式資料で確認済みです。したがってWindows同様にMac標準機能でも実現可能です。

弊社ではYubikey内の証明書とOS標準機能を利用して

  • 802.1xを利用しWiFi, LAN接続時にEAP-TLS認証
  • VPN接続時のクライアント証明書認証
  • SMTP接続時のクライアント証明書認証
  • ウェブにおけるクライアント証明書認証

等を実現し物理セキュリティ、ネットワークセキュリティからアプリケーションレイヤーまでをカバーするパスワードレス認証、アカウントの窃取対策を行っています。

したがって

  • ドアや壁の破壊できればもちろん侵入は可能ですが、入退はYubikeyが無い限り侵入はとても難しいです。
  • 掃除の方が気軽にLANポートやWiFiにつなごうとしても、Yubikeyが無い限りネットワークにつながらないので社内ネットワークに接続することはとても難しいです。
  • 社内ネットワークに接続できたとしても、Yubikeyが無い限りアプリケーションレイヤーへのアクセスすることはとても難しいです。

弊社でのYubikey活用具体例の記事がありますので興味がある方はご覧ください。

余談:Suica/PASMO等のFeliCaを利用した入退室管理システム製品 ~ IDmの闇

IDmを使った認証の問題をご存じの方は読み飛ばしていただければと。

入退室管理システムではよく使われるICカードとしてFeliCaが利用されていますが、利用/実装方法を誤った製品のセキュリティ問題が指摘されています。

IPA:入退管理システムにおける情報セキュリティ対策要件チェックリスト

itmedia: なりすましの問題について記事

またフェリカネットワークスから公式に注意が行われています。

引用: モバイル FeliCa IC チップにおける製造 ID(IDm)の取り扱いについてhttps://www.felicanetworks.co.jp/assets/pdf/rule_plugin_idm.pdf

· モバイルFeliCa ICチップのIDmは、比較的容易に読み出しが出来るコードであり、FeliCa技術方式のセキュリティ機能をフルに活用したものではありません。セキュリティの観点から次の点にご注意ください。 · IDmは誰でも読み出すことができますので、これのみを用いたアプリケーションは、正規カードになりすました偽造カードやカードエミュレータにより攻撃を受ける可能性があります。 · 通信路での暗号化をしておりませんので、盗聴される可能性があります。 · セキュリティが要求されるアプリケーションにおいては、FeliCa技術方式の相互認証機能の利用を推奨します。 また、ユニークなIDを必要とするFeliCaサービスアプリケーションを開発する際には、IDmではなくサービス事業者がサービスレベルで付番管理するコードを利用することを推奨します。

実際にIDmのみを参照し認証を行っている製品を弊社ではいくつかの製品で確認しています。

FeliCaのセキュアエレメント領域を利用し無い限りセキュアな認証を実現することは難しく、以下の様なSDKを利用する必要があります。

FeliCaは公開鍵4ではなく共通鍵AES/DESを利用しています。共通鍵を利用し高速処理を実現することと引き換えに安全な鍵管理・保護の仕組みが必要となります。

そのためNFCカードリーダには、AES/DES等の鍵をセキュアに保存するSAMチップを利用する必要があります。

また一部入退室管理システムのスタンドアロン方式ではカードリーダは電気錠をコントロールするIOコントロールボードへ結線され、開錠、施錠信号が送信される仕組みとなっている構成があります。つまりカードリーダからIOコントロールボードへ伸びたケーブルの通信をタッピングしリプレイ攻撃が有効となるケースも考えられます。

通信ケーブルのタッピングは弊社の過去記事で取り上げていますので、現実的な脅威と考えられます。

皆さんのオフィスの入退室システムはどのような方式で開閉を行っているか把握されているでしょうか?

お手持ちのPASMOやSuica等を入退室以外で利用されているのであれば何処で利用したか把握されているでしょうか? IDmが何処で読み取られたか把握されているかたはいるでしょうか?

もし現在ご利用の入退室管理システムに「お手持ちのICカードで○○機能がご利用できます」と記載がある場合どのような認証方式であるか穿ったみかたをした方がよいかもしれません。

物理はセキュリティ対策の根幹であり非常に重要ですので、是非一度はIPAから提供された資料を参考にチェックを行ってみることをおすすめします。

  • 本サイトに掲載されている商品またはサービスなどの名称は、各社の商標または登録商標です。
  • 本サイトはリスク把握・対策を目的としており、著作権侵害や不正アクセス行為等の教唆、幇助を目的としたものではありません。

  1. ※FIPS140対応の暗号モジュールを利用し、PACSテストにパスをすれば米国連邦政府でも利用可能となります。国産では残念ながらPACS認証を取得した入退室管理システムは有りません。 ↩︎

  2. ゴール等他社の電気錠もFPGA側の変更で対応可能となっています。 ↩︎

  3. LANケーブルと電源ケーブルがあればカードリーダ側を取り替えるだけとなります。 ↩︎

  4. 公開鍵はサポートしていないためWindows/Macのスマートカード認証、TLSクライアント認証,802.1x等の利用はOS標準機能では実現できません。 ↩︎

© 2016 - 2024 DARK MATTER / Built with Hugo / テーマ StackJimmy によって設計されています。