slaesforce tls1.0 無効化にあたって

15
Salesforce TLS 1.0 無効化にあたって そもそもSSL/TLSって。で、あれはどうなの。 2016.01.04 [email protected]

Upload: hiroyuki-sawano

Post on 08-Jan-2017

977 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Slaesforce TLS1.0 無効化にあたって

Salesforce TLS 1.0無効化にあたってそもそもSSL/TLSって。で、あれはどうなの。

2016.01.04 [email protected]

Page 2: Slaesforce TLS1.0 無効化にあたって

目次

暗号アルゴリズム

応用例

公開鍵証明書

SSL/TLS

SSLのバージョンと実装

Salesforceによる TLS 1.0 の無効化

SSLハンドシェイク

Salesforce ”Data Loader”

Salesforce “Office Toolkit”

1

Page 3: Slaesforce TLS1.0 無効化にあたって

暗号アルゴリズム

ハッシュ関数

任意のデータを一定長のデータに変換、低コスト

一方向性、非衝突

MD5、SHA-1 SHA-2(SHA-224、SHA-256、、、)

共通鍵暗号

暗号化する鍵と復号する鍵が同じ、低コスト

ブロック暗号:DES、3DES、AES

ブロック暗号のモード : CBC、GCM

ストリーム暗号: RC4

公開鍵暗号

暗号化する鍵と復号する鍵が異なる。秘密鍵と公開鍵、高コスト

RSA、ElGamal、DH、楕円曲線(EC)

鍵共有:共通鍵暗号の鍵を安全に共有する。→ 秘匿

デジタル署名:ハッシュ関数+公開鍵暗号→ 認証、改ざん検知→ 公開鍵証明書が依拠

2

Page 4: Slaesforce TLS1.0 無効化にあたって

応用例

それらを組み合わせて、以下のような製品、プロトコルに

“Lotus Notes” グループウェア

“PGP” 電子メールとか→ OpenPGP

PEM:電子メール用 ※

S/MIME:電子メール用※

SSL/TLS: XXX over SSL、StartTLS※

SSH

IPsec、IPv6 ※

DKIMメール送信元認証

※は PKI(だけではないけど。)

3

Page 5: Slaesforce TLS1.0 無効化にあたって

公開鍵証明書

目的

公開鍵の持ち主を保証する。流通させる公開鍵をどうやって信頼させるかがポイント

PKI方式

ITU-T X.509 公開鍵証明書 と CA(認証局 : Certification Authority)の導入。

秘密鍵と公開鍵のペアを作成し、CSR(公開鍵+対象の情報+署名) を作成

CAが身元確認し署名し公開鍵証明書(X.509v3)を作る。

ルート証明書は安全に配送されている前提、OSやJava のキーストア

有効期間がある。

有効期間中に失効すると、CAが発行する CRL(失効リスト : Certificate Revocation Lists)に載る。利用時に検証が必要

CA:VeriSign、GlobalSign、セコム、GPKI、、

OpenSSL:SSLができるPKIのデファクトスタンダードな実装、オーストラリアのEric YoungさんのSSLeayが元

https://www.openssl.org/

捕捉:

PKCS RSA Data Security, Incが策定したRSA暗号を使うための データ・フォーマットやらの仕様、これがRFCとなって、ごにょごにょ。PKIは、PKCSと、X.509、PEMあたりから始まり、IETF PKIXで発展

EV SSL身元確認が厳密なSSL証明書

4

Page 6: Slaesforce TLS1.0 無効化にあたって

SSL/TLS

ネットスケープ社が開発したSSL が IETFで TLSとしてRFCとなる。

X.509 公開鍵証明書を使った認証と鍵共有

TCPパケットを暗号化してトンネルしてる感じ

バージョンが上がると(技術が進むと、脅威がたかまると)暗号強度が高まり、暗号スイート CipherSuitesが破棄、追加されてる。

Cipher Suites

定義名の例: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

鍵交換アルゴリズム ECDHE_RSA暗号、メッセージ認証に使う共通鍵(の素)の共有方法

共通鍵アルゴリズム AES_128_GCM暗号の方法鍵長128ビットのAESでGCMモード

MACアルゴリズム SHA256メッセージ認証の方法

5

Page 7: Slaesforce TLS1.0 無効化にあたって

SSLのバージョンと実装

TLS1.0 → TLS1.1

CBCのイニシャルベクトルの与え方が変わったとか、Cipher Suites的にはAESが増えたとか。

TLS1.1 → TLS1.2

SHA2系への移行とか

Java 6.0、,Net V4.0 を使ったアプリケーションでは TLS.10になっている。

Cipher Suites の実装状況はこちらが精細

6

プラットフォーム SSL 3.0 TLS1.0

RFC2246

TLS 1.1

RFC4346

TLS 1.2

RFC5246

Java 6.0 ○ ○

Java 7.0 ○ ○ ○ △ 標準では1.1まで

Java 8.0 ○ ○ ○ ○

.Net Framework 3.5, V4.0 ○ ○

.Net Framework V4.5 ○ ○ ○ ○

Page 8: Slaesforce TLS1.0 無効化にあたって

Salesforce による TLS 1.0 の無効化

https://help.salesforce.com/apex/HTViewSolution?id=000221207

7

PCI DSS的要請「Migrating from SSL and Early TLS」。セキュリティがらみでは、IETF TAO的寛容さでなく、RFC 7525 でも 1.0はやめようよ、と。

しかし、PCIでは、2016年6月から2018年6月に延期?

Page 9: Slaesforce TLS1.0 無効化にあたって

SSL ハンドシェイク 8

クライアント サーバ

ClientHello(サポートしているバージョン、Cipher Suitesを伝える。)

ServerHello(利用するバージョン、Cipher Suitesを伝える。)

Certificate* (サーバのX.509公開鍵証明書を送付、中間CAのも)

ServerKeyExchange * ( X.509公開鍵証明書でなくサーバ公開鍵を送付)

CertificateRequest* (クライアント認証する場合、クライアントの公開鍵証明書を要求)

ServerHelloDone(とりあえず、サーバ側からは終了)

低いバージョンで申告したら、ここで、拒否され轟沈

アクセス開始

Page 10: Slaesforce TLS1.0 無効化にあたって

”Data Loader”のハンドシェイク 1

9

TLS 1.0 で要求

ClientHello

Data Loaderのバージョンは32.0.0Java 6 のJVMがバンドルされてる模様

“Data Loader”がクライアント、SalesforceがサーバでWiresharkでパケット拾ってみる

NG

Page 11: Slaesforce TLS1.0 無効化にあたって

”Data Loader”のハンドシェイク 2

10

ServerHello

採用する

CipherSuite

Page 12: Slaesforce TLS1.0 無効化にあたって

”Data Loader”のハンドシェイク 3

11

Certificate , ServerHelloDone

サーバの公開鍵証明書

中間CAの公開鍵証明書

Page 13: Slaesforce TLS1.0 無効化にあたって

”Office Toolkit”のハンドシェイク 1

12

TLS 1.2 で要求

ClientHello

Office Toolkit を組み込んだ MS Office でSalesforceにログインするところ OK

Page 14: Slaesforce TLS1.0 無効化にあたって

”Office Toolkit”のハンドシェイク 2

13

ServerHello

採用する

CipherSuite

Page 15: Slaesforce TLS1.0 無効化にあたって

14

以上です。