家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

「SSL/TLS暗号設定ガイドライン」の概要

SSL/TLS 暗号設定ガイドライン

発行機関:情報処理推進機構
発行年月日:2019年5月

https://www.ipa.go.jp/security/ipg/documents/ipa-cryptrec-gl-3001-2.0.pdf

 

概要
このガイドラインは全部で9章で構成されています。

1. はじめに
1.1 本書の内容及び位置付け
1.2 本書が対象とする読者
1.3 ガイドラインの検討体制
2. 本ガイドラインの理解を助ける技術的な基礎知識
2.1 SSL/TLS の概要
2.2 暗号アルゴリズムの安全性
3. 設定基準の概要
3.1 実現すべき設定基準の考え方
3.2 要求設定の概要
3.3 チェックリスト
4. プロトコルバージョンの設定
4.1 プロトコルバージョンについての要求設定
4.2 プロトコルバージョンごとの安全性の違い
5. サーバ証明書の設定
5.1 サーバ証明書についての要求設定
5.2 サーバ証明書に記載されている情報
5.3 サーバ証明書で利用可能な候補となる暗号アルゴリズム
5.4 サーバ証明書で考慮すべきこと
6. 暗号スイートの設定
6.1 暗号スイートについての要求設定
6.2 暗号スイートで利用可能な候補となる暗号アルゴリズム
6.3 鍵交換で考慮すべきこと
6.4 暗号スイートについての実装状況
6.5 暗号スイートについての詳細な要求設定
7. SSL/TLS を安全に使うために考慮すべきこと
7.1 サーバ証明書の作成・管理について注意すべきこと
7.2 さらに安全性を高めるために
8. ブラウザを利用する際に注意すべきポイント
8.1 本ガイドラインが対象とするブラウザ
8.2 設定に関する確認項目
8.3 ブラウザ利用時の注意点
9. その他のトピック
9.1 リモートアクセス VPN over SSL (いわゆる SSL-VPN)

 

2 章ではSSL/TLSや暗号についての基礎知識をまとめています。

f:id:iestudy:20190913234337p:plain

SSL/TLSの概要

3章では、SSL/TLSサーバに要求される設定基準の概要について説明しており、4章から6章では、3章で定めた設定基準に基づき、具体的なSSL/TLSサーバの要求設定について説明しています。

  

SSL/TLS のバージョン概要

バージョン 概要
SSL1.0 リリース前に脆弱性が発見され公開されず
SSL2.0(1994) いくつかの脆弱性が発見されており、なかでも「ダウングレード攻撃(最弱の アルゴリズムを強制的に使わせることができる)」と「バージョンロールバック 攻撃(SSL2.0 を強制的に使わせることができる)」は致命的な脆弱性です。 SSL2.0は利用すべきではなく、2005年頃以降に出荷されているサーバやブラウザではSSL2.0は初期状態で利用不可となっています。
SSL3.0 (RFC6101) (1995)

SSL2.0での脆弱性に対処したバージョンです。2014年10月にPOODLE攻撃が発表されたことにより特定の環境下でのCBCモードの利用は危険であることが認識されています。

POODLE攻撃は、SSL3.0におけるパディングチェックの仕方の脆弱性に起因しているため、この攻撃に対する回避策は現在のところ存在していません。POODLE攻撃の発表を受け、2018年 3月時点での主流の最新版ブラウザでSSL3.0 は初期状態で利用不可となっています。

TLS1.0 (RFC2246) (1999)

2018年3月時点でのSSL Pulseの調査結果によれば、約12万の主要なサイトのうち、TLS1.0が利用できるのは約88%を占めます。ブロック暗号をCBCモードで利用した時の脆弱性を利用した攻撃(BEAST攻撃など)が広く知られていますが、セキュリティパッチも提供されています。

また、SSL3.0で問題となったPOODLE攻撃は、プロトコルの仕様上、TLS1.0 には適用できない暗号スイートとして、より安全なブロック暗号のAES等が利用できるようになりました。

TLS1.1 (RFC4346) (2006)

ブロック暗号をCBCモードで利用した時の脆弱性を利用した攻撃(BEAST攻撃等)への対策を予め仕様に組み入れるなど、TLS1.0より安全性強化を図ってい ます。

規格化された年がTLS1.2とあまり変わらなかったため、TLS1.1とTLS1.2は同時に実装されるケースも多く、2018年3月時点でのSSL Pulseの調査結果によれば約12万の主要なサイトのうち、TLS1.1が利用できるのは約85%にあたります。

TLS1.2 (RFC5246) (2008)

暗号スイートとして、より安全なハッシュ関数SHA-256とSHA-384、CBCモー ドより安全な認証付き秘匿モード(GCM、CCM)が利用できるようになりました。

2018年3月時点でのSSL Pulseの調査結果によれば約12万の主要なサイトのうちTLS1.2が利用できるのは約91%にあたります。

TLS1.3 (draft28)

共通鍵暗号は認証暗号(AEAD: Authenticated Encryption with Associated Data)のみ採用した結果、AES-GCM、AES-CCM、ChaCha20-Poly1305 のみが規定されました。

まだdraftですが、サーバやブラウザで実装が始まっています。

 

f:id:iestudy:20190914000019p:plain

プロトコルバージョンと安全性

 

TLS1.3 の概要
TLS1.3は、TLS1.2策定以降に見つかった新たな脆弱性や攻撃手法への対策を施すと共に、QUIC等のプロトコルに対応するための性能向上を狙いとして、プロトコルと暗号アルゴリズムの抜本的な再設計が行われました。TLS1.2(以前)との差異は以下の通りです。

  • 脆弱なアルゴリズムとして、Triple DES、DSA、RC4、MD5、SHA-1、SHA-224、静的なRSA が削除された。
  • 認証暗号(AEAD)でないAESのCBCモードが削除された。
  • NIST FIPS/SPで規定されていないアルゴリズムとして、共通鍵暗号のChaCha20と署名のEdDSAが追加された。
  • 鍵交換は、DHE、ECDHE、PSKのみが規定され、ECDHEが必須になった。
  • 楕円曲線としてsecp256r1が必須になった。
  • ハッシュ関数はSHA-256が必須になった。
  • 脆弱なハンドシェイク機能として、リネゴシエーション、圧縮、セッション回復が削除された。

f:id:iestudy:20190914000421p:plain

TLS1.2及び1.3の暗号開始個所の比較

 

CRYPTREC暗号リスト
総務省と経済産業省は、暗号技術に関する有識者で構成されるCRYPTREC活動を通して、電子政府で利用される暗号技術の評価を行っており、2013年3月に「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC 暗号リスト)」 を策定しました。

https://www.cryptrec.go.jp/list/cryptrec-ls-0001-2012r4.pdf

 

暗号スイート

暗号スイートは「鍵交換_署名_暗号化_ハッシュ関数」の組によって構成されます。

f:id:iestudy:20190914000731p:plain

暗号スイート例

その他:暗号の歴史

 

区分 概要 代表的な暗号
古代暗号(古典暗号)

現存する最古の暗号は、紀元前3000年頃の石碑に描かれているヒエログリフ(古代エジプトで使われた象形文字)であるとされています。

ヒエログリフは長い間解読不能な暗号とされてきましたが、19世紀にロゼッタ・ストーンの研究が大幅に進み、以降ヒエログラフ解読のきっかけになりました。

シーザー暗号

シーザー暗号は、元の文章のアルファベットをある数だけずらして暗号化するもので、アルファベットを3文字ずらすということをあらかじめ送り手と受け手の間で決めておくものです。

 

スキュタレー暗号
あらかじめある太さの棒を持った暗号文の送り手がその棒に革紐を巻きつ けて棒に沿って文字を書き、その革紐だけを受け手に送るというものです。受け手が同じ太さの棒を持っている場合は、革紐を巻きつけると解読できるという暗号の仕組みになっています。

f:id:iestudy:20190914001012p:plain

スキュタレー
中世暗号(古典)

「シーザー暗号」を始めとする1つのアルファベットを別の文字に置き換えて暗号にする「単一換字式暗号」は数世紀にわたって使用されましたが、次第に解読されていきました。

中世では、古典暗号の解読と新しい暗号の発明によって暗号技術が高度化する一方、外交活動が活発になり秘密情報の増加によって暗号が頻繁に利用される普及期になります。

ヴィジュネル暗号
ヴィジュネル暗号は、ヴィジュネル方陣と呼ばれる表を用いる方式です。
たとえば、GOLDMEDALISTという文章をOLYMPICという鍵で暗号化する場合、原文の文字を表の上端に当てはめ、鍵の文字を表の左端に当てはめて交差するアルファベットが暗号文字ということになります。

f:id:iestudy:20190914001308p:plain

ヴィジュネル方陣
近代暗号 エニグマと呼ばれる機械式の暗号機が登場します。 エニグマの暗号方式は多表式換字式暗号で、「スクランブラー」と呼ばれるアルファベット26文字が刻ま れた数枚の歯車(ローター)と、プラグボードと呼ばれる単文字変換を行う仕組みの組み合わせが「鍵」 になります。まず、スクランブラーをセットした上で、平文をキーボードで打つとスクランブラーを通じて暗 号化された文字がランプボードに表示されます。スクランブラーは1文字打つごとに目盛りひとつ回転するこ とによって、1文字ごとに異なる鍵を使って暗号化することになります。
現代暗号 第二次世界大戦以降暗号の作成と解読は、機械からコンピュータに移っていきました。

DES暗号
DES(Data Encryption Standard)は、1977年に米国商務省標準局(現NIST)によって制定された、 標準のデータ暗号化規格です。
DESでは、64bit単位のデータに対して、ビット位置の変更(転置)やテーブル参照による置き換え(置換)、XOR演算、シフト、繰り返し処理などを組み合わせて、入力されたデータを可能な限り「かき混ぜる」という処理を行います。

 

RSA暗号
ディフィー=へルマンの発明した公開鍵のアイデアを実現する数学的手法は、マサチューセッツ工科大学の 研究者、ロン・リベスト(Ronald L. Rivest)、アディ・シャミア(Adi Shamir)、レオナルド・アドルマン(Leonard M. Adleman)の3人によって発明されました。この公開鍵暗号は開発者3人の頭文字を取って「RSA暗号」と名付けられます。 RSA暗号方式は「素数」による素因数分解を用いる方式です。

https://www.digicert.co.jp/welcome/pdf/wp_encryption_history.pdf

 

補足:CRYPTREC 暗号技術ガイドライン(SSL/TLS における近年の攻撃への対応)

発行年月日:2013年

https://www.cryptrec.go.jp/report/cryptrec-gl-2002-2013.pdf

 

概要

SSL/TLSに対する攻撃の解説及び対策をまとめた資料となります。

 

前提として(CBCとは)

暗号アルゴリズムには「ブロック暗号」と「ストリーム暗号」があります。
ブロック暗号は、ある特定のビット数のまとまりを一度に処理する暗号アルゴリズムです。
ストリーム暗号とは、データの流れ(ストリーム)を順次処理していく暗号アルゴリズムの総称です。

ブロック暗号アルゴリズムでは、長い平文を暗号化する際は暗号アルゴリズムを繰り返して暗号化します。(モード)

CBC(Cipher Block Chaining)は、ブロック暗号の一種で、1つ前の暗号文ブロックと平文ブロックのXOR(排他的論理和)をとり、そのXORの値を暗号化します。
CBCモードでは、最後の平文ブロックがブロック長に満たない場合、パディングと呼ばれるデータを埋めてあげます。

 

プロトコルの脆弱性をついた攻撃

CBC モードの構成を利用した攻撃:BEAST
SSL3.0/TLS1.0のCBCモードの脆弱性を利用して選択平文攻撃を行い、Cookieを得る攻撃です。


圧縮処理部分の観測に基づく攻撃:CRIME
SSL/TLSにおいて、入力データと圧縮後のデータの長さを比較してCookieを解読する攻撃です。
データは頻出するものが多いと圧縮率が高くなるという性質を利用して解読が行われます。

BREACH
CRIMEと同様に、圧縮データのサイズから元のデータを解読する攻撃です。
BREACHでは、HTTPのレスポンスを読み取る攻撃を行います。