0Pricing
Cryptology Academy · レッスン

PKCS#1 v1.5パディングとBleichenbacher攻撃

PKCS#1 v1.5に対する適応的選択暗号文攻撃を説明します。

「PKCS#1 v1.5パディングとBleichenbacher攻撃」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

PKCS#1 v1.5パディングは、20年間にわたってRSAの主要なパディング標準でした。1998年、Daniel Bleichenbacherは、これが適応的選択暗号文攻撃に対して脆弱であることを示しました。

PKCS#1 v1.5の構造

形式:0x00 0x02 [ランダムな非ゼロバイト] 0x00 [メッセージ] 0x00 0x02のプレフィックスは暗号化用のパディングを示します(署名用は0x00 0x01です)。 ランダムバイトによって決定性を防ぎます。バイトはゼロであってはいけません。

PKCS#1 v1.5が使われた理由

PKCS#1 v1.5は、IND-CCA2の安全性証明が存在するはるか前の1993年に、RSA Securityによって設計されました。ランダム性と構造チェックを追加し、1995年以降のSSL/TLSで広く導入されました。

Bleichenbacher攻撃

Bleichenbacher(1998):サーバーがRSA復号の結果として有効なPKCS#1 v1.5パディングになったかどうかを、エラーメッセージやタイミングによって明らかにする場合、攻撃者は約100万回のクエリでRSA暗号化された任意の値を復号できます。

オラクルの定義

「パディングオラクル」とは、「有効なパディング」と「無効なパディング」を区別できるサイドチャネルのことです。わずかなタイミング差や異なるエラーメッセージであっても、悪用可能なオラクルが生じます。

攻撃の仕組み

攻撃者は対象の暗号文Cにs^e mod nを掛け、変更したC×s^eを送信します。サーバーが「有効なパディング」と応答した場合、sは正しく選ばれています。これを繰り返すことで平文の候補範囲を狭め、最終的にMを復元します。

DROWN攻撃(2016年)

DROWNはSSLv2を介してBleichenbacher攻撃を悪用しました。SSLv2サーバーと鍵を共有していた最新のTLSサーバーが脆弱になりました。SSLv2をオラクルとして利用し、最新TLSのRSA鍵交換を復号しました。HTTPSサーバーの33%が影響を受けました。

ROBOT攻撃(2017年)

ROBOT(Return Of Bleichenbacher's Oracle Threat)は、Cisco、F5、Radwareを含む、最も普及しているTLS実装10種類のうち7種類でタイミングオラクルを再発見しました。実装が難しいため、Bleichenbacher攻撃は今も生き残っています。

定時間RSA復号

対策として、パディングの有効性にかかわらず常に復号処理を続行し、無効なパディングに対しても同一の応答を返します。タイミング差を防ぐために定時間コードを使用します。正しく実装するのは困難です。

OAEPがv1.5に置き換わった理由

OAEPにはトラップドア一方向ハッシュが含まれており、IND-CCA2安全性(選択暗号文攻撃に対する安全性)を証明できます。パディングオラクルが存在しても、OAEPのランダム化された構造により、オラクルへのクエリは情報を与えません。

レガシーシステムでは今もv1.5が使われている

OAEPが存在するにもかかわらず、PKCS#1 v1.5はレガシー決済システム、古いJavaアプリケーション、一部のPKI実装で今も使われています。TLS 1.3ではRSA鍵交換が完全に削除され、この攻撃対象領域がなくなりました。

クイックチェック

Bleichenbacher攻撃における「パディングオラクル」とは何ですか?

まとめ

Bleichenbacher攻撃は、実用的な暗号解析における画期的な成果です。次は、v1.5に代わる証明可能な安全性を持つパディング、OAEPを学びます。

よくある質問

「PKCS#1 v1.5パディングとBleichenbacher攻撃」レッスンは無料ですか?

はい。「PKCS#1 v1.5パディングとBleichenbacher攻撃」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「PKCS#1 v1.5パディングとBleichenbacher攻撃」で何を学びますか?

PKCS#1 v1.5に対する適応的選択暗号文攻撃を説明します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「PKCS#1 v1.5パディングとBleichenbacher攻撃」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 教科書的RSAと安全でない理由
  2. PKCS#1 v1.5パディングとBleichenbacher攻撃
  3. OAEP:最適非対称暗号化パディング
  4. デジタル署名のためのRSA-PSS
← Cryptology Academyに戻る