slaesforce tls1.0 無効化にあたって
TRANSCRIPT
Salesforce TLS 1.0無効化にあたってそもそもSSL/TLSって。で、あれはどうなの。
2016.01.04 [email protected]
目次
暗号アルゴリズム
応用例
公開鍵証明書
SSL/TLS
SSLのバージョンと実装
Salesforceによる TLS 1.0 の無効化
SSLハンドシェイク
Salesforce ”Data Loader”
Salesforce “Office Toolkit”
1
暗号アルゴリズム
ハッシュ関数
任意のデータを一定長のデータに変換、低コスト
一方向性、非衝突
MD5、SHA-1 SHA-2(SHA-224、SHA-256、、、)
共通鍵暗号
暗号化する鍵と復号する鍵が同じ、低コスト
ブロック暗号:DES、3DES、AES
ブロック暗号のモード : CBC、GCM
ストリーム暗号: RC4
公開鍵暗号
暗号化する鍵と復号する鍵が異なる。秘密鍵と公開鍵、高コスト
RSA、ElGamal、DH、楕円曲線(EC)
鍵共有:共通鍵暗号の鍵を安全に共有する。→ 秘匿
デジタル署名:ハッシュ関数+公開鍵暗号→ 認証、改ざん検知→ 公開鍵証明書が依拠
2
応用例
それらを組み合わせて、以下のような製品、プロトコルに
“Lotus Notes” グループウェア
“PGP” 電子メールとか→ OpenPGP
PEM:電子メール用 ※
S/MIME:電子メール用※
SSL/TLS: XXX over SSL、StartTLS※
SSH
IPsec、IPv6 ※
DKIMメール送信元認証
※は PKI(だけではないけど。)
3
公開鍵証明書
目的
公開鍵の持ち主を保証する。流通させる公開鍵をどうやって信頼させるかがポイント
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
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
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 ○ ○ ○ ○
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月に延期?
SSL ハンドシェイク 8
クライアント サーバ
ClientHello(サポートしているバージョン、Cipher Suitesを伝える。)
ServerHello(利用するバージョン、Cipher Suitesを伝える。)
Certificate* (サーバのX.509公開鍵証明書を送付、中間CAのも)
ServerKeyExchange * ( X.509公開鍵証明書でなくサーバ公開鍵を送付)
CertificateRequest* (クライアント認証する場合、クライアントの公開鍵証明書を要求)
ServerHelloDone(とりあえず、サーバ側からは終了)
低いバージョンで申告したら、ここで、拒否され轟沈
アクセス開始
”Data Loader”のハンドシェイク 1
9
TLS 1.0 で要求
ClientHello
Data Loaderのバージョンは32.0.0Java 6 のJVMがバンドルされてる模様
“Data Loader”がクライアント、SalesforceがサーバでWiresharkでパケット拾ってみる
NG
”Data Loader”のハンドシェイク 2
10
ServerHello
採用する
CipherSuite
”Data Loader”のハンドシェイク 3
11
Certificate , ServerHelloDone
サーバの公開鍵証明書
中間CAの公開鍵証明書
”Office Toolkit”のハンドシェイク 1
12
TLS 1.2 で要求
ClientHello
Office Toolkit を組み込んだ MS Office でSalesforceにログインするところ OK
”Office Toolkit”のハンドシェイク 2
13
ServerHello
採用する
CipherSuite
14
以上です。