Salesforce TLS 1.0
無効化にあたって
そもそもSSL/TLSって。で、あれはどうなの。
2016.01.04 hsawano@sunbridge.com
目次
 暗号アルゴリズム
 応用例
 公開鍵証明書
 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.0
Java 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
以上です。

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

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