それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

gmail のSMTPサーバにログインして使う(xoauth)

gmailSMTP・POP・IMAPに「パスワード」が使えなくなる。

GmailSMTPサーバーには、ID/PWだけでログインができた。

ただし、ID/PWをPC内部に平文で保存するために、安全とは言い難い状況が続いた。

といっても、アプリごとにストレージが分けられて、ディスクが暗号化されている現在において特に問題はないと思うんだけど、悪意のあるアプリを排除できないわけですし。SMTPサーバーに総当りされるとパスワードが盛れちゃうわけで。SMTPサーバはログイン総当り対策が難しいわけで。認証を強化するのは仕方ないともいます。

対応策 2FA+app パスワード

2FAでアプリパスワードを生成すれば、何とかなります。

ですが、2FAは利用場面でいろいろと考えることが増えます。

2FAをスマホに仕込んで、ログインするたびに通知が来るのも割とうざいですし、サブアカウントのように使ってる多数のアカウントや、職場・学校のアカウントはどうすればいいのでしょうか。自分のスマホで2FAしろというのでしょうか。公私混同ではないですか。職場アカウントを私用スマホに登録は社内規定で禁止してたりとかありますけど、今後どうなっていくんでしょうか。ということで2FAは現実的な解決とは限らないですよね。

対応策 XOAUTH2

GoogleSMTPサーバーは XOAUTH があります。

XOAUTH2 という独自のログイン方式がサポートされています。これでログインができます。

$ openssl s_client -connect  smtp.gmail.com:465
EHLO gsmtp
250-smtp.gmail.com at your service, 
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
AUTH XOAUTH2
334

OAuthしたら、GmailAPI経由でしか使えないみたいと思うかもしれませんが、OAuthしたアクセストークンでSMTPが使えるのです。

XOAUTH2とは、つぎのように、アクセストークンから裸トークン作成しログイン・パスワードの代替とするものです。

base64("user=" + userName + "^Aauth=Bearer " + accessToken + "^A^A")

メールクライアント側でXOAUTH2ログインに対応すれば、SMTPはそのまま使えるのです。

xoauth2 を実装しログインすれば、IMAP/SMTPが使えるので、問題は無いのだけど。Google様の独自プロトコルというのは不安が常に付きまとう。

XOAUTH2 以外にも PLAIN-CLIENTTOKENOAUTHBEARER があるので、そちらも試そうか思ったがドキュメントが見つからなかった。

Google の案内は相変わらず不親切。

SMTPサーバーの説明→ less secure apps を有効にしろ→ less scure app は終わるぞ。(急に出現した)

less scure app ( 安全性の低いアプリ)を使ってる人に通知くらはいほしいと思いました。いきなり60日後に使えなくなります。Google怖いです。対応策もよくわからないです。

https://support.google.com/mail/answer/7104828?hl=ja#zippy=%2C%E3%83%A1%E3%83%BC%E3%83%AB-%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88

f:id:takuya_1st:20220314173210p:plain

f:id:takuya_1st:20220314173241p:plain

2FA強制に対する愚痴など。

2FAでいいというが、2FAも問題である。

事の発端

https://security.srad.jp/story/22/03/09/1617212/

もとの告知がいつ行われたのかはハッキリしないのだが、Googleは5月30日にユーザー名とパスワードのみでGoogle アカウントにログインする「安全性の低い」アプリとデバイスに関するサポートを終了するそうだ(安全性の低いアプリと Google アカウント)。これだけだと分かりにくいが過去記事に書かれたコメントによれば、同日以降はアプリ側でOAuth 2.0への対応が必須になるという意味だそうだ。OAuth 2.0非対応のメーラーなどを利用している場合は対策が必要になる。昨年話題となった秀丸メールでの対策事例が参考になると思われる(窓の杜)。

なお、Googleの告知ではAppleバイスに関する注意も記載されている。Google側の説明によると、Appleバイス上でユーザー名とパスワードのみを使用しているユーザーが最近ログインしていない場合、2月28日以降はGoogleアカウントの種類を使用する新しいログイン操作しか受け付けなくなるとしている。

2FAのアカウントは誰の管理?

職場アカウントの2FAを自分のスマホでやるのか?職場アカウントは職場配布のスマホにするのか。では、職場は社員にスマホを支給するのか。その管理はどうするのか。

ゼロベース認証とか、多要素認証/MFAや、二要素認証/2FAと、耳障りの心地よい言葉を叫んでも、アカウントの管理がデバイスに依存するだけである。そのデバイスの所有者は誰になるのか、デバイスに紐付いたアカウントの所有者は誰になるのか、管理者は誰なのか

たとえば、マイクロ・アカウントで自分のPCにログインすると、PCとMSアカウントが紐づく。PCはMSアカウントの管理化に入る。Win11のアカウントに学校・職場アカウントを紐付けてしまうと、「削除できないのである」。ローカルアカウントとローカルPC・ローカルドメインの管理者は誰になっているのだろうか。自宅PCも職場PCとしての扱いを受ける。アカウントは必要に応じて使い分けると言う割には、特定アプリケーションを特定アカウントで使うことが困難になりつつある。

以下のスクショは、Windows10 pro のローカルアカウントに、職場アカウントを紐付けた例である。「Manage」ボタンしか無いのがわかるでしょうか。

そうですPCにMSアカウントを紐付けたら解除できないのです。困ったものです。もう私のPCは私のPCなのか職場のPCなのか区別がよくわからなくなります。職場からの強権発動で職場MSアカウントを通してPC制御されそうです。怖いです。調べようにも情報が足りなくて困ります。Win11ではMSアカウントでのログインが必須化されます、学校・職場のMSアカウントでログインしたばあい、そのPCの管理者は誰になるのだろうか。

f:id:takuya_1st:20220314174555p:plain

2FA/MFAの場合、紛失・盗難リスクに加え、デバイスの管理問題が出てくる。

いったい誰が管理責任を持つのか、全く未解決じゃないか。

多要素認証とは「本人」をデバイスで確認するのであって、デバイスを確認するわけではないはずである。

個人的には、アカウントにアカウントを紐づけて、メインのGoogle アカウントやMSアカウントで2FAログインすると、紐づくサブアカウントも「2FA認証済み」にしてほしいのである。1ユーザが1アカウントではないことは当たり前なのに、デバイス認証は、1アカウント単位が想定されており、アカウント毎にAuthenticatorを2FA設定しなくてはいけないのである。明らかに不便である。稀にしか見ないアカウントに2FAは流石に邪魔である。たまに使うアカウントで2FAなどフィッシング標的になりかねない。控えめにいって害悪だと思う。アカウント単位2FAではなく、サブアカウントもまとめて2FAするような、有意2FAの在り方を考える段階に入ってる。

バイスの管理責任は誰が負うのだろうか。

機種変更も容易でなくなるのは辛い。

とくに機種変更時が辛い。全部のアカウントをチマチマ2FA設定し直しをやってられないのである。何のためのバックアップか、何のための移行機能か。機種変更時、銀行のアレゲなアプリを始め、apple id / ms / google / LINE / +message / docomo / au /suica .... をいったいいくつやるんだ。疲れ果てる。げんなりした。購入時に契約書類と説明で数時間拘束され、帰宅後にデータ移行と2FAで更に数時間を消耗する。なんだんだ・・・本当に。

SMTP専用ID/PWが欲しい。

元を正せば、SMTPサーバ/IMAPサーバーのようにHTTPSを介さない通信プロトコルが存在することが認証の足枷になっており、SMTPIMAPのように使うには使うが必要ないとは言い切れなプロトコルがある。認証方式にID/PWだけを想定してるので問題である。SMTPのように総当り・リバースブルートフォースアタックからの防衛困難プロトコルが生きていることも問題だが、なくすわけにも行かない。それがSMTPプロトコルである。

だったら、SMTPIMAPの専用に「十分に長いパスワードとID」を発行してくれたらかなりの問題が解決するはずである。しかし、Google 様はアプリ・パスワード発行に2FAが必須化した。もし2FA 回避するとアプリパスワードは使えない。完璧を求めたGoogle 様の設計がむしろ中途半端になっているのではないだろうか。2FAの問題点は先の述べたとおりであり、すべてのユーザーが2FAに移行可能と限らない。SMTPは必要だが2FAは不必要・アプリパスワードは欲しいという可能性は、バッサリとGoogle強権で排除された。強権発動はとても怖いですよね。せめてSMTPだけでも緩和してほしい。彼らにはなにか理由があるのでしょうか説明がないので不安で仕方ない。代替手段はSMTP認証をxoauth2に変えるという選択肢だけです。

xoauth2

xoauth2 はSMTPGoogle・MSが導入している従来にない認証手段で、SMTPパスワードをxoauth のアクセストークンから生成する。アクセストークンはリフレッシュトークンで更新される。

base64("user=" + userName + "^Aauth=Bearer " + accessToken + "^A^A")

xoauth2もよくわからない。SMTPにはlogin/ CRAM-MD5/ plain もあるのに、なぜ他の手段でないくxauth2なのだろうか。チャレンジレスポンスによるCRAM-MD5もあるし、POP before SMTP のように、2FA Login before SMTP Enabled でも良かった気もする。平文アクセストークンを渡さずともハッシュ値でも良かった気もする。新しいプロトコルを定義するのだったらDH鍵交換でもいいじゃないか。平文(base64)でトークンを送るなら従来通りのパスワードとほとんど変わらない。アクセストークンをSMTP LOGIN/PLAINでは使わせないのもよくわからない。つまりGoogle様が専用プロトコルを新しく作った意味がよくわからない。謎だ。xoauth2の経緯がわからないので違和感がずっと残る。

自動入力パスワードを含めてGoogle に囲い込まれるのは嫌だ。

Google、パスワードのみに頼らない2段階認証を自動で有効化すると発表

Google アプリでログインすると、Chromeパスワードが有効になり、一般の人達のパスワードを吸い上げて、Chromeへ依存させようとしている。

2FAログインをしていると、パスワードも有効になり、自然とその方向に誘導しようとすら思える。非常にこわい

 これ以外に、GoogleではChromeAndroidiOSにパスワードマネージャーを提供しており、Googleアカウントにログインした状態でほかのウェブサイトやアプリを利用することで、Googleアカウントに保存されているパスワードを自動入力できる。パスワードマネージャーはGoogleのセキュリティ診断に統合されており、保存されているパスワードに漏えいの可能性などがある場合などはユーザーに通知される。

最近のGoogle は、ウクライナで火遊びしているロシア大統領プーチンや、北朝鮮を放置する中共主席、彼らと同等に強権発動で強引に仕様を変えていく。ちょっと怖すぎる。