やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

認証について調べてみた

Webサービスを使うときに必須の「認証」について調べてみた。

参考

http://www.kogures.com/hitoshi/webtext/sec-password-shurui/index.html
【プログラマ英語】それ認証って意味じゃないですよ(厳密には) - Qiita

背景

Webサービスを使うときの認証手続きが煩雑化してきた。たとえばGitHubでは以下の通り。

認証と認可

和訳 英語 読み 意味
認証 Authentication オーセンティケーション Basic認証 いわゆるログイン。身元確認し入場する。全権限がある。
認可 Authorization アソリゼーション OAuth いわゆるOAuth。情報操作の許可をする。ログインの権限限定版。

セキュリティ向上のために

  • 2FA有効化し、ふだんはTokenを使ってAPI発行により操作する
    • 通信傍受などによりTokenが漏洩してもScopeにより操作権限が限定されているため被害を抑えられる
    • Basic認証できればTokenはいつでも破棄できる

しかしBasic認証のパスワードが漏洩するとアカウントが乗っ取られる。よって2FAで強化しつつ、Tokenを使うのが最強。

実際はどうするか

  • 2FAを有効にするとBasic認証時に毎回OTPが必要になる

OTPにも脆弱性がある。

2要素認証のTOTPとHOTP、どちらがより安全か? – yohgaki's blog

所感

手間とセキュリティのトレードオフ。2FA使うならパスワードの強度を高めてTokenを使うほうがバランス取れてるかもしれない。