SHA-1によるリポジトリーの認証を無効にする提案
APT(Advanced Package Tool)はパッケージ管理システムで使用されるソフトウェアであり、毎日のようにUbuntuユーザーが利用している仕組みでもあります。APTにて、SHA-1によるリポジトリーの認証を無効にする提案が出されています。
APTの基本的な話
APTはパッケージのインストールやアップデート、アンインストールなど、パッケージ操作に欠かせないソフトウェアです。意識することなしにユーザーはAPTを利用している
多くのデスクトップユーザーはAPTの存在を意識することなく、APTを利用しています。例えばユーザーが「ソフトウェアの更新」を起動してソフトウェアを更新したり、「Synaptic」でパッケージの操作を行ったり、そして「Ubuntuソフトウェア」によるアプリのインストールやアンインストールなどパッケージに関する操作を行うと、裏でAPTが動作し必要な処理を行います。
ラインタイムの個別インストールの手間
一般的なソフトウェアのインストールやアップデートに関する話の中に、ランタイム及びランタイムバージョンに関する話があります。例えば、ユーザーが利用したいと考えているアプリAがあるとします。
アプリAを利用するには、ランタイムBとランタイムCが必要です。
またラインタイムBのバージョンは「2.0」を必要とし、ラインタイムCのバージョンは「3.1」を必要とします。
もしアプリAが起動に必要なランタイムを同梱していなかった場合、ユーザーは自分でそれらのランタイムを探し出し、別途インストールしなければなりません。
PCに詳しい人であればそれほど難しい話ではないかもしれません。
しかしそうではないユーザーにとって、何をインストールすればよいのか、それがどこにあるのか、ランタイムのインストール作業に煩雑さを感じるでしょう。
いずれにせよアプリAを利用するためにひと手間必要になります。
(Visual C++ランタイムコンポーネントやDirect X エンドユーザーランタイムなど、身に覚えのある人もいるでしょう。)
面倒な作業はAPTが面倒を見てくれる
上記のようなアプリを利用するために必要なランタイム等のソフトウェアは、APTでは依存パッケージという仕組みにより、自動的に必要なソフトウェアを探し出しアプリのインストール時にまとめてインストールしてくれます。ユーザーがアプリAを(少なくとも最低限)利用するために行わなければならないことは、アプリAをインストールすることだけです。
後はAPTが必要なソフトウェアを探し出し、それらのソフトウェアをインストールします。
上記の例で言えば、アプリAをインストールするだけで、「ラインタイムB 2.0」と「ラインタイムC 3.1」をインストールしてくれます。
もしラインタイムがさらに他のソフトウェアを必要とするならば、それらのソフトウェアもまとめてインストールしてくれます。
さらにAPTは提案パッケージという仕組みにより、アプリを活用するために多くのユーザーがインストールする便利なソフトウェアもまとめてインストールしてくれます。
ユーザーの作業をパッケージ作成者が肩代わりしている
上記のようなAPTの動作は、パッケージに設定されている依存関係によるものです。パッケージの依存関係の指定は、パッケージの作成者が行います。
そしてAPTはその情報を読み取り、依存パッケージや提案パッケージなどパッケージの依存関係に基づいた処理を行います。
言い換えればランタイムを探し出してインストールするという作業は、パッケージ作成者やAPTが肩代わりしているということになります。
ランタイムのインストールをユーザーに任せるより、そのランタイムに詳しい開発者が必要な依存関係を指定し、そしてAPTが一定のルールに基づいて処理を行ったほうが、双方にとって良い結果を生みます。
この仕組みは、非常に理にかなった仕組みです。
リポジトリーやパッケージの検証
ようやく本題です。ユーザーがリポシトリーを登録してそのリポジトリーに配置されているパッケージをインストールする際、リポジトリーやパッケージの検証(認証)が行われます。
この検証はリポジトリーに配置されている署名ファイル(Release.gpg)及び、ユーザーの環境にインストールされている秘密鍵に対応した公開鍵を利用することで検証を行います。
なぜ検証が必要か
リポジトリーやパッケージが改ざんされていないことを検証するためです。セキュリティーのためですね。
パッケージ操作は「root」等ログインしているユーザーとは異なる権限で処理が行われます。
そのため、もし悪意ある改ざんされたパッケージがインストールされると、システムの破壊や情報の漏洩などユーザーにとって意図しない結果になります。
誰もそのような結果を望まないでしょう。
すでに警告は発している
「Ubuntu 16.04」からSHA1による署名を利用しているリポジトリーにアクセスすると、警告が表示されるようになっています。これはSHA-1による署名が将来デフォルトで利用できなくなるという意思表示であり、その将来がやって来つつある、ということになります。
Ubuntu 16.04以降が対象
SHA1による署名の無効化は、「Ubuntu 16.04」以降が対象になる予定です。以前お知らせした通り、2017年1月1日にAPTでSHA1の利用をデフォルトで無効にしたい。
Ubuntu 16.04で採用されているAPT 1.2及びUbuntu 16.10で採用されているAPT 1.3も対象である。
我々はすでにインデックスファイル内のフィールドを修正し、SHA1の利用を無効にしてある。
この作業の結果、SHA1ベースのGPG署名は拒否されるようになる。
さて、我々はこの作業内容をちょっと早い段階での開発版のリリースに盛り込む必要がある。
私の提案は、まず数日中にUbuntu 17.04のAPT 1.4~beta1にこの機能を適用することである。
そしてUbuntu 17.04での対応が完了すれば、以前知らせた通り2017年1月1日にUbuntu 16.04及びUbuntu 16.10に対しても同じ対応が可能になる。
ただUbuntu 16.04向けの作業は、若干遅れるかもしれないが。
ユーザーへの影響は軽微か
今回の変更によるユーザーへの影響は小さいでしょう。すでにUbuntu公式リポジトリーやPPAは、より強度の高いハッシュ関数による署名へと移行しており、SHA-1ベースのGPG署名が無効になっても引き続きリポジトリーを利用できます。
また「Google Chrome」や「VirtualBox」など多くのユーザーが利用している有名なサードパーティーのリポジトリーもすでに移行が完了しています。
SHA-1による署名を使用しているか確認するには
SHA-1による署名を使用しているか確認するには、「端末」から以下のコマンドを実行します。
sudo apt update
赤枠内のように、警告メッセージが表示されるリポジトリーは、SHA-1を使用して署名を行っているリポジトリーです。
「Synaptic」から確認するには、「再読み込み」ボタンをクリックします。
SHA-1を使用して署名を行っているリポジトリーがあれば、以下のように警告メッセージが表示されます。
リポジトリーの対応が必要
上記のような警告が表示されているリポジトリーは本件の影響を受けます。本件の対応はリポジトリーの管理者が行う必要があります。
ユーザーが直接対応するものではありませんが、もし上記のような警告が表示されるリポジトリーがあれば、リポジトリーの管理者にこの件を知らせておくのも良いでしょう。