項 1 / 8
目的と使う場面を知る
何ができるようになるか、何のために学ぶかを確認します。
今回できるようになること
元の暗号文は読めるが、一ビット変えた暗号文は認証タグの照合で拒否される。
この節で学ぶ理由と、前後の節とのつながり
このセクションの位置づけ
なぜ、今これを学ぶのか
書類を読めない形にすれば、勝手に変えられても分かるでしょうか。保管した鍵も同じ相手に渡ったらどうなるでしょうか。
この後、何につながるか
の基本が分かったら、次はパスワードを保存する側の処理を確認します。
実務では、どんな場面?
この節の本文で学んだことを、暗号化した架空メモの一文字を変えて結果を見る実習で確かめます。扱う情報は配布した架空データだけです。
読み始める前に:この節の前提と言葉
書類を読めない形にすれば、勝手に変えられても分かるでしょうか。保管した鍵も同じ相手に渡ったらどうなるでしょうか。
- と改変検出を組み合わせる方式
- 内容から256ビットの値を計算する方式
は、情報をそのままでは読めない形に変える処理です。元へ戻して読む処理を復号といい、そのために鍵というデータを使います。文字の表し方を変えるだけのとは違います。した書類と鍵を誰でも読める場所に一緒に置くと、他人も元の文章へ戻せてしまいます。鍵を保管する場所と、鍵を取り出せる人を制限する必要があります。
矢印の順に、何が行われるかを読みます。
- 元の文章:そのまま読める
- 鍵で暗号化:そのままでは読めない
- 鍵で復号:元の文章を読む
Base64は鍵なしで元へ戻せる表現方法です。鍵は暗号文と同じ公開場所へ置きません。
- 元の文章を確認
- 暗号化して復号
- 別の実験:ハッシュを比較
- 鍵と比較元の扱いを考える
は文章などの内容から一定の長さの値を計算する仕組みです。値が違えば内容が違うと分かります。ただし本文と比較用の値を両方書き換えられると、悪い内容に合う値へ置き換えられます。比較の基準は信頼できる経路で受け取り、保護します。
を一回計算するだけの方式は、パスワード保存には高速すぎます。パスワード保存には専用方式が必要です。今回の端末実習はの比較ではなく、の改変検出を扱います。
- 信頼できる比較用ハッシュ
- 手元の内容を再計算
- 値を比較して変更を検出
が保護するのは、主にブラウザーとサーバーの間を流れる通信です。受け取った書類を誰でも開ける場所に保存した場合まで、自動で守ってくれるわけではありません。電子署名は、対応する鍵で署名されたデータか、署名後に内容が変わっていないかを確かめる技術です。署名が正しくても、書かれた内容自体が事実かどうかは別に確認します。
並んだ項目は、別々に確認する観点です。操作する順番ではありません。
- HTTPS:通信中の内容を守る
- 保存先の管理:受信後に読める人を制限
- 電子署名の確認:鍵との対応・変更の有無を確認
署名が正しくても、文章に書かれた内容が事実かどうかは別です。
実習ではNode.jsの機能で架空の文章をでします。元の文は復号できることを確かめ、そのコピーの最初の一ビットだけを変えて、同じ鍵とタグで復号を試します。ビットは0か1を持つ最小の単位で、^= 1は今回の位置のビットを反転させる書き方です。
タグは改変を調べるための値です。変更した文が拒否されることと、元の文が読めることを別に確認します。鍵・iv・tagまで変えると比較条件が増えるため、そのままにします。実習ごとに作る鍵は提出ファイルへ出力しません。鍵の保管方法やの比較は、この課題のスイッチではありません。
- 元の暗号文は復号できる
- コピーの1ビットを反転
- 同じ鍵とタグで改変を拒否
別の条件で使う準備
ファイル配布や保存時の保護を選ぶ
- 守る文章、比較用のハッシュ値、暗号を解く鍵の置き場所を確認します。
- 文章の変更を検出する設定と、鍵を保管する設定を別々に変えて比べます。
- ハッシュで分かる文章の違いと、暗号化で内容を読ませないことの違いを説明します。
ここでは実務で条件が増えた場合の考え方も紹介しました。今回の実習で操作する範囲は、次の「自分のパソコンで確かめる」で確認します。追加の別課題を提出する必要はありません。
暗号化した架空メモの一文字を変えて結果を見る
本文の知識を、この実習でどう使うか
は内容を読めなくするだけでなく、文が変更されていないかタグで確かめます。ビットは0か1を持つ最小の単位です。
- 元の文とタグ
- 一つのビットを反転
- 復号の成功と拒否を比較
結果が違ったときに考えること:改変後も読めるなら反転する処理を確認します。鍵まで変更すると原因が増えるため、今回は鍵・iv・tagは変えません。
元の暗号文は読めるが、一ビット変えた暗号文は認証タグの照合で拒否される。
WindowsまたはMacの操作手順、準備に失敗したときの確認方法、実行コマンドは実習画面に用意しています。ページ下部の「準備から実習を始める」から進んでください。
架空の値だけを使います。この一つの実験の成功から、本番の安全性を断定しません。