解決策
Ars Technicaは2020年12月、Let's Encryptが独立した認証局へ移行中であると報じた。迅速に開始するため、Let's Encryptは確立された認証局であるIdenTrustからのクロス署名を利用しており、2016年には独自のルート証明書ISRG Root X1も発行していた。IdenTrustのDST Root X3は2021年9月に期限切れとなる予定だったため、クロス署名も失効することになっていた。
Let's EncryptはAndroidのCAストアにバージョン7.1.1(2016年12月)で追加され、アクティブなAndroidユーザーの33.8%がそれより古いバージョンを使用しており、Arsはこれを約8億4500万人が2016年に凍結されたルートストアを使っていると表現した。証明書が期限切れになれば、Androidのシステムストアを使用するアプリやブラウザが壊れていただろう。
Let's Encryptは、IdenTrustがDST Root CA X3からISRG Root X1への3年間のクロス署名を発行することに同意し、それが当該ルート証明書自身の有効期限を超えて有効となることを発表した。これが機能するのは、Androidがトラストアンカーの有効期限を意図的に適用せず、ルートストアが完全な証明書ではなく鍵としてそれらを保持しているためである。ISRGとIdenTrustは監査人およびルートプログラムに相談し、加入者は両方の証明書チェーンを取得することになった。
達成したこと
Androidはトラストアンカーの有効期限を決して確認しないため、IdenTrustに自身のルート証明書より長く存続するクロス署名を発行させること。
機能した理由
古いAndroid端末は中央から更新できないため、新しいルート証明書はそれらに到達できなかった。
Androidのルートストアはトラストアンカーを鍵として扱い、そのnotAfterフィールドを無視する。
クロス署名はアンカーの鍵に対して検証されるため、アンカーの証明書より長く存続できる。
監査人およびルートプログラムとの確認により、この計画がコンプライアンス上の懸念を生じさせないことが確認された。
応用できること
最も厳格に見えるクライアントが実際にどのように検証するかを読み解くこと。それが決して適用しないルールが抜け道となり得る。
その後
新しいクロス署名は2024年初頭に期限切れとなる予定であり、その時点までにLet's Encryptは2016年以前のバージョンのAndroidがなくなっていることを望んでいた。記事時点で、Android 4.2は市場の0.8%を占めていた。Arsは発表された計画を報じたものであり、2021年9月の結果については報じていない。
出典をたどる
出典
- Let's Encrypt comes up with workaround for abandonware Android devices Ars Technica · arstechnica.com ·