セキュリティとアカウント管理と近況
1
そういえばOSをmojaveにあげるついでに、macをクリーンインストールした。 そしてこの前誕生日を迎え29歳になった。平成最後の冬、そして20代最後の冬。
定期的にmacをクリスコ(以下クリーンインストールの略)するとYosaがある。
クリスコすると再びログインすることになる、主にwebサービスにそして使っている、依存しているサービスを否応に意識される。
サービス間の依存が強いもの、重要なアカウント、デバイス。もしもこれがハックされたらどうヤバくて何をすればいいんだっけ?
みんな〜意識してる〜?
2
まず意識するべきものの区別、ハックされた時の未知数が大きいかどうか、これに尽きる。 そして、自分が保持しているものとそうでないもの、物理的かどうかといっても問題なさそうだけど、ここは難しい。
とりあえず挙げていく。
保持しているもの * iPhone * Mac * USBとかSSDとかのストレージ * yubikey
してないもの * iCloud * google account * microsoft account * github * keybase
各々色々なリスクや攻撃のされ方があるけど、一旦整理するために列挙しておく 特にデバイスがハックされた場合だいたいwebへの攻撃に繋がるので、先にデバイス。
2 iPhone
リスク
- iPhoneにはSIMが刺さっているSIM内情報、電話番号及びSMSへのアクセス権限。
- 入っているアプリケーションへのアクセス権
- btc wallet (pinが必要)
- 1password (faceid もしくは1passwordのmaster password)
- etc
- メールアカウントへのアクセス権
- Google Authenticator
考えられる攻撃経路
- ロックされていない状態でiPhoneを強奪される
- ロックされている状態でiPhoneを紛失もしくは強奪され
- パスコードがソーシャルハックされるorされている
- 自分自身が拘束されるもしくは意識がない状態でFaceIDを強制的に解除される
まとめ
列挙してみるとあまりにも高いリスク、幽遊白書のS級妖怪を思い起こされる。 モバイルデバイスではあるので紛失盗難リスクが割合としては多く考える必要がある。 メールアカウントへのアクセスがある時点で、多くの重要ではないアカウントへのアクセス権を得ることになる。 また、二段階認証にSMSを採用しているアプリケーションは多いので、 しかも攻撃経路もターゲット型の攻撃時はそこまで難しくないように思える。 紛失に対してはパスコードが日常で不便にならない程度に長ければ問題ないようにも思える。
以下は拘束されてた時にFacaIDを解除させられない顔にする訓練をしている図
2 Mac
Macはハックされるレベル感を分け他方がいい考えている。
フルコントロールを奪われる場合
部分的なアクセス権
リスク
- keychain情報 (フルコントロール)
- localに保存された秘匿情報(これは定期的にクリスコするので少ないはず
- ブラウザでログインしているメールアカウントへのアクセス権
攻撃経路
盗難などはiPhoneと同じような方法が考えられるが、macのpasswordの方がpinよりソーシャルハックしにくいと考えている。 ただ、touch idに対しては精度の点で評価が迷う。正直macにもface idをつけて、touch id とface idの両方を揃っていないといけないようなオプションが欲しい。
また、macの場合の方が自由にアプリケーションが入れられてsandbox化されていないので、脆弱性などにより一部ファイルがreadされることは危惧した方がいいように感じる。
まとめ
ssh鍵は置いてないので危惧する必要はなし。 hiroqn.hatenablog.com
危惧しているのは、keychainアクセスやうっかり保存してしまったセキュリティトークン。 iPhoneの場合は紛失に気づきやすいが、macの場合気づかないうちに流出した場合が怖い(特にロックしないで離席したケースなど)。
2 ストレージ
これは普段使いのストレージの話ではなく、ある一定上のセキュリティ情報を保存するためのストレージである。 例えば2faが設定されたアプリケーションのバックアップコード(え、適切に保存してない人いませんよね??)とかbitcoinのウォレットのバックアップとか。
自分はmacの暗号化されたディスクイメージの作成を使って、ストレージの中に暗号化した状態で保存している。
これのパスワードは気合で覚える必要がある、もしくは何かに依存させても良いのかもしれない(1passwordなど)。 ただ依存させた場合、依存先のセキュリティ担保が結局必要になる。
まとめ
こちらは自分がパスワードをどこにも保存しない&ストレージをローカルにもつという前提から、突破されないようにしている。 正確な言い方をすると "突破されない"ことを前提とした運用にしている。
2 yubikey
こちらは前回紹介した通り、普段使いのpgp鍵を入れておくデバイスとして使っている。 pinコードを数回間違えるとハードウェアレベルでブロックされるの盗難に対してはかなり有効と考えている。
ちょっとしたファイルならこれで暗号化するのがいいと思う。 ただ、pin自体は盗み見などでソーシャルハックできる可能性があるので、定期的にローテーションすることが必須と考えている。
3
パスワードを記憶する運用はパスワードが安易になるという危険性やローテーションがめんどくさいといった理由でなるべくはしたくない。 だが1passwordやどうしても記憶しなければいけない部分が出てくる。 記憶に頼った運用も自分の脳が単一障害点となるため、死亡時、記憶喪失時に復旧が困難になる。
これに対しては、死亡時などに許容するアカウントの切り分けができていないので現状は運用に載せていないのだがアイデアとしては持っていて、 vaultを使うという手法を考えている。
こちらはunseal keyというものを生成することができて、3つ生成したkeyのうち2以上が揃えば復号できるというような運用が可能になる。 なので、死後のアカウントを任せる人間に配るといったことによって対応することができる。 配る際は配る相手のpgp鍵で暗号化しておく必要があるのでそれを忘れてはいけない。
ただ、情報のアップデートが難しくアップデート込みの運用となると、本当にコアな情報を暗号化するためのpgp鍵を生成し、鍵をyubikeyに入れバックアップをvaultに入れるのがいいかもしれない。
ちなみにvaultを使わなくてもできるが、inerfaceや容易さとしてvaultを使う。
4
振り返ると、 iPhone紛失時など、流出時に適切にアプリケーションに対してセッションをログアウトしたりパスワードを変えたりする仕組みづくりが欠けている。
またiPhoneに二段階認証などが偏りすぎている可能性もある。また、SMSが安全ではないのでSMSの二段階認証は辞めていきたい。
とはいえ利便性は大事である。
トイレでうんこを垂れている間は鍵をかけていたいが、入る時に鍵を開けなければならないとしたら時には垂れながらドアを開ける事になりそうだ
今回web アプリケーション周りが書けなかったので。。。
続く