ホームページ  >  記事  >  WeChat アプレット  >  ミニプログラムの開発者は、HTTPS プロトコルの詳細な分析に注意を払う必要があります

ミニプログラムの開発者は、HTTPS プロトコルの詳細な分析に注意を払う必要があります

高洛峰
高洛峰オリジナル
2017-02-27 14:11:571676ブラウズ

WeChat ミニ プログラムへのアクセスの問題

旧正月が近づいており、WeChat ミニ プログラムも予定通りリリースされます。開発者は WeChat ミニ プログラムにアクセスする際に次の問題に遭遇します:

ミニ プログラムの要件を満たし、HTTPS を通じて提供する必要があります。エンドツーエンド通信の場合、開発者が独自の SSL 証明書を申請して展開し、HTTPS の SSL 解析を完了する必要があるため、非効率的で時間がかかります。サーバーの CPU に大きなオーバーヘッドがかかります。

ミニ プログラムだけでなく、Apple iOS プラットフォームと Google Android も 2017 年に開発者に HTTPS アクセスの使用を段階的に義務付けました。 HTTPS は避けられないしきい値のようで、多くの開発者にとって頭痛の種となっています。

上記の問題を考慮して、Tencent Cloud の負荷分散サービス (クラウド ロード バランス) は、HTTPS のパフォーマンスを最適化し、アプリケーションのしきい値と HTTPS の使用コストを下げることで、ワンクリック SSL 証明書アプリケーション サービスを提供し、開発者がWeChat ミニ プログラムなどのサービスにすばやくアクセスします。まず、HTTP と HTTPS を見て、謎を 1 つずつ解明しましょう。

2. HTTPS に接続する必要がある理由 - HTTP のセキュリティ リスク

HTTP プロトコルは、インターネット上のほとんどの主流アプリケーションはデフォルトで HTTP を使用します。 1990 年代のパフォーマンスと使用環境の制限により、HTTP プロトコル自体はセキュリティを目的として設計されたプロトコルではありません。最も問題となるのは、すべての HTTP コンテンツが平文で送信されることです。

その一方で、インターネットの発展も日々変化しており、様々なHTTPアプリケーションが人々の生活のあらゆる面に浸透し続けています。ソーシャル ネットワーキング、ショッピング、金融、ゲーム、検索など、これらの HTTP サービスは人々に大きな利便性をもたらし、生活の質と効率を向上させます。

明らかに、HTTP は人々の生活や経済的利益と密接に関係していますが、残念ながら安全ではありません。これは、ここに大きな安全上のリスクが隠されているに違いないことを意味します。これらの隠れた危険は、次の 2 つの側面に集中しています:

1. プライバシー漏洩

HTTP 自体は平文送信であるため、ユーザーとサーバー間の送信内容は仲介者によって閲覧される可能性があります。言い換えれば、オンライン検索、ショッピング、訪問した Web サイト、クリックしたページなどの情報はすべて「仲介者」によって取得される可能性があります。ほとんどの中国人はプライバシーの保護にあまり注意を払っていないため、ここでのリスクは比較的隠されており、危害の影響を定量的に評価するのは簡単ではありません。既知のより深刻なプライバシー漏洩には、次のようなものがあります。

QQ のログイン ステータスが犯罪者によって盗まれ、広告や詐欺を行うために別の場所にログインされました。

ユーザーの携帯電話番号と身元情報が漏洩しました。

ユーザーのオンライン行動が漏洩。たとえば、病院を検索すると、すぐに誰かがその病院を宣伝するために電話をかけてきます(効果のない広告)。

2. ページハイジャック

プライバシー漏洩のリスクは比較的隠蔽されており、ユーザーは基本的にそれに気づきません。しかし、別の種類のハイジャックの影響は非常に明白かつ直接的です。ページ ハイジャック、つまり、ユーザーの閲覧ページを直接改ざんすることです。サードパーティの広告やオペレータからのトラフィック プロンプト情報を直接挿入する、非常に単純かつ粗雑なページ ハイジャックが多数あります。

小程序开发者需要关注HTTPS 协议深度解析

しかし、次のような JD.com ページのハイジャックなど、より巧妙なハイジャックもいくつかあります。 上の図は HTTP を使用したページで、上部の矢印にショッピングの推奨事項が表示されますが、これは非常に現実的です。 JD.com や公式ブラウザ ツールなど。

小程序开发者需要关注HTTPS 协议深度解析

しかし、HTTPSアクセスに切り替えると、そのようなツールページは存在せず、明らかに乗っ取られています。

小程序开发者需要关注HTTPS 协议深度解析

3. ハイジャックのパスと分類

ハイジャックはどのように発生しますか?技術的に言えば、コンテンツが通過する場所を監視して改ざんするだけです。しかし、ハイジャック産業チェーン全体を理解するには、ブラック産業を深く掘り下げる必要があり、それはより困難です。確かなことの 1 つは、ほとんどのハイジャックは「中間者」(MITM) とも呼ばれる中間ネットワーク ノードで発生するということです。以下の図に示すように:

小程序开发者需要关注HTTPS 协议深度解析

情報の送信は上記の「仲介ノード」を経由する必要があるため、情報が暗号化されておらず、検証されていない場合、それらのノードにも情報の読み取りおよび書き込み権限が与えられます。場合は、プライバシーを確​​認してページを改ざんしたい場合、「仲介者」にとっては簡単です。

ハイジャックの主なカテゴリは何ですか? ハイジャックの経路によれば、次の図に示すように主に 3 つのカテゴリがあります。

小程序开发者需要关注HTTPS 协议深度解析

DNS ハイジャック、クライアント ハイジャック、リンク ハイジャック。 私たちの不完全な統計によると、企業が遭遇するハイジャックのほとんど (90%) はリンク ハイジャックです。

3. HTTPS はリンクハイジャックを解決するための核兵器です

なぜ HTTPS はリンクハイジャックをうまく解決できるのでしょうか?主に 3 つの武器:

1. ID 認証 - 偽造防止、否認防止

新しい HTTPS 接続が確立されるたびに、ユーザーが正しい宛先 Web サイトにアクセスしていることを確認するために ID を認証する必要があります。

小程序开发者需要关注HTTPS 协议深度解析

2. コンテンツの暗号化 - 盗聴防止

コンテンツの暗号化とは、すべてのエンドツーエンド通信コンテンツが暗号文であり、HTTPS のすべてのアプリケーション層コンテンツが対称的に暗号化および復号化されることを意味します。の暗号化。

小程序开发者需要关注HTTPS 协议深度解析

3. 一貫性の検証 - 改ざん防止

データの MAC コードと共有キーを通じて、仲介者によるメッセージの内容の改ざんを防ぎ、データの一貫性を確保します。

小程序开发者需要关注HTTPS 协议深度解析

4. HTTPS の普及の痛み

実際、HTTPS は 1995 年に誕生し、非常に古く、成熟したプロトコルです。同時に、コンテンツのハイジャックを効果的に防止し、ユーザーのプライバシーを保護します。しかし、なぜ今日までほとんどの Web サイトが HTTPS をサポートしておらず、HTTP のみを使用しているのでしょうか? HTTPS の人気に影響を与える主な理由は、「遅い」と「高価」という 2 つの言葉に要約できます。

1. 遅い小程序开发者需要关注HTTPS 协议深度解析

最適化を行わないと、HTTPS はユーザーのアクセス速度を大幅に低下させます。主な要因は次のとおりです:

ネットワークに時間がかかる。プロトコルの規定により、ネットワーク送信を行う必要があります。たとえば、SSL フル ハンドシェイク、302 ジャンプなどです。最悪のシナリオでは、7 つの RTT が追加される可能性があります。

計算に時間がかかります。クライアントとサーバーの両方で対称暗号化と復号化、プロトコル分析、秘密キーの計算、証明書の検証、その他の計算を実行する必要があるため、計算時間が大幅に増加します。

小程序开发者需要关注HTTPS 协议深度解析2. 高価

HTTPS のコストは主に次の 3 つの側面に反映されます:

サーバーコスト。 HTTPS の秘密鍵の計算により、サーバーのパフォーマンスが大幅に低下します。これは HTTP プロトコルの 10 分の 1 以下です。つまり、HTTP のパフォーマンスが 10,000 cps である場合、HTTPS のパフォーマンスはわずか数秒になる可能性があります。これはサーバーコストの数倍、場合によっては数十倍に増加します。

証明書の費用。証明書の数と種類に応じて、証明書のコストは年間数百から数百万に及ぶ場合があります。

開発と運用保守のコスト。 HTTPS プロトコルは比較的複雑で、openssl のオープンソース実装ではセキュリティ バグが頻繁に発生します。プロトコルの設定、証明書の更新、有効期限の監視、クライアントの互換性などの一連の問題をフォローアップして対処するには、専門的な知識を持つ技術担当者が必要です。彼らと一緒に。

5. Tencent クラウド ロード バランサー HTTPS パフォーマンスの最適化

Tencent クラウド ロード バランサーは、HTTPS のプロモーションとアプリケーション プロセスの問題点を徹底的に最適化しました。次に、これらの最適化計画を詳しく紹介します。

1. アクセス速度の最適化

前述したように、HTTPS は主にプロトコル スタックとフロントエンドとバックの 2 つのレベルでアクセス速度を最適化しました。リソースを終了します。

フルリンク プロトコル スタックの最適化

HTTPS は SSL 上の HTTP と考えることができ、HTTPS は送信に TCP プロトコルを使用するため、プロトコル スタック全体の最適化には 3 つのレベルが含まれます:

TCP の最適化。輻輳ウィンドウ調整、TCP 高速オープン、再利用ポートのサポート、最新の BBR 輻輳制御アルゴリズムのサポートなどが含まれます。

SSLプロトコルの最適化。分散セッション キャッシュ、セッション チケット、False start、ocsp ステープリング ファイル、動的レコード サイズなど。

SSL プロトコル最適化の最も重要な目標は、簡素化されたハンドシェイクの割合を増やすことです。 Tencent Cloud は、グローバル セッション キャッシュとグローバル セッション チケットを実装することで、SSL の簡素化されたハンドシェイク率を向上させ、ユーザーのアクセス時間とコンピューティング リソースを節約します。

小程序开发者需要关注HTTPS 协议深度解析

アプリケーション層プロトコルの最適化。 SPDY、HTTP2、HSTSなどもサポートします。

HTTP1 と比較した HTTP2 の最大の利点。

HTTP2 は SPDY から継承および開発されているため、一部の古いクライアントは SPDY のみをサポートし、HTTP2 をサポートしません。ほとんどの新しいクライアントは HTTP2 のみをサポートし、SPDY をサポートしません。新旧両方のクライアントのパフォーマンスと互換性を持たせるために、Tencent Cloud は SPDY と HTTP2 の両方をサポートし、新旧クライアントのパフォーマンスを最大化します。

フロントエンドとバックエンドの最適化

HTTP2 と SPDY の最大の機能と利点は、1 つの接続を通じて複数のリクエストを並行して送信できる多重化です。この機能は非常に強力ですが、従来の HTTP 最適化戦略が依然として使用されている場合、多重化の効果は非常に限定的になります。たとえば、ドメイン名のシャーディング、パイプラインなどが多重化効果に影響します。そこで、複数のデータ実験を通じて、バックエンド アクセス戦略を含むいくつかのフロントエンド リソースを調整しました:

ドメイン名の取得。ページのリソースとパフォーマンスの分析を通じて、3 ページ以内に移動するなどのドメイン名取得計画を確認します。

事前に構築された接続。 STGW は、接続前ページを提供します。ホット ページでのユーザーの行動を分析することで、接続が事前に確立され、ユーザー エクスペリエンスに対するプロトコル オーバーヘッドの影響が軽減されます。

HTTPS オフロードは、世界中の Tencent Cloud の CDN および IDC ノードを通じて近くで完了します。

2. コンピューティング パフォーマンスの最適化

HTTPS のコンピューティング パフォーマンスに関して、Tencent Cloud は主に次の 3 つのレベルで最適化しました。

完全なハンドシェイクの発生を最小限に抑え、簡略化されたハンドシェイクの割合を増やします。たとえば、前述のグローバル セッション キャッシュとセッション チケットです。

避けられないフルハンドシェイクのために、Tencent Cloud は、プロトコル スタックの変革と SSL ハードウェア アクセラレータ カードの使用を通じて、RSA 非同期プロキシ コンピューティングを実装し、HTTPS のコンピューティング能力と攻撃防御能力を大幅に向上させました。

対称暗号化計算プロセスもシーンでの使用に合わせて最適化されています。

以下は詳細な紹介です:

RSA 非同期プロキシ コンピューティング

Tencent Cloud は、HTTPS パフォーマンス消費における最も深刻なリンクである非対称キー交換アルゴリズムの最適化に焦点を当てています。最適化のアイデアには主に次の 3 つの部分が含まれます:

小程序开发者需要关注HTTPS 协议深度解析

アルゴリズムの分離。これは、CPU リソースを最も消費するアルゴリズムを削除し、ローカル CPU リソースを消費しないようにすることを意味します。

エージェントの計算。 RSA 計算を完了するには、アイドル状態の CPU マシンまたは専用の SSL ハードウェア アクセラレーション カードを使用します。

非同期実行。従来の openssl が RSA を実行する場合、NGINX などの上位層アプリケーションは同期的に待機する必要があります。このステップも非常に影響力があり、RSA 計算のためにクラスターが高速化されるときに、アクセス サーバーが他のユーザーからのリクエストも受信してスループットを向上できるように、非同期に変更する必要があります。


openssl ハンドシェイク プロトコル スタックの徹底的な変革と SSL ハードウェア アクセラレータ カードの RSA コンピューティング パフォーマンスにより、Tencent Cloud CLB の SSL コンピューティング能力は 350% 向上しました。単一マシンの ECDHE_RSA 処理パフォーマンスは 65000 cps に達します。

対称暗号化アルゴリズムの最適な自動選択

Tencent Cloud は、アプリケーション シナリオに応じて最適な対称暗号化アルゴリズムをマッチングします。

ビデオなどのストリーミング メディア コンテンツの場合は、aes-gcm が推奨されます。

aes-ni ハードウェア アクセラレーション命令をサポートしていないモバイル端末の場合は、chacha20-poly1305 を使用します。

IE6 などのアンティークレベルのクライアントの場合は、RC4 アルゴリズムを使用します。

小程序开发者需要关注HTTPS 协议深度解析

3. プロトコルの並行アンロード

Tencent Cloud CLB は、現在のすべての主流 HTTP プロトコルへのアクセスとオフロードをサポートします。含まれるもの:

http1.0/http1.1

http2 とその前身である spdy3.1

https (ssl3.0、tlsv1.0、tlsv1.1、tlsv1.2

websocket および安全な websocket を含む)。

tcp、udp透過転送。

CLBは、上記の7層プロトコルを一律にHTTP1.1に変換し、透過的に企業に送信することができます。ビジネスにとってのメリットも非常に明らかです。HTTPS と HTTP2 は開発コストゼロで使用できるため、さまざまなプロトコルやクライアントに適応するプレッシャーが大幅に軽減されます。

小程序开发者需要关注HTTPS 协议深度解析

4. 安全性

セキュリティに関係する分野とシナリオは非常に広範囲に及びますが、HTTPS はリンク ハイジャックを完全に解決できますが、次の 2 種類の問題には無力です:

CC 攻撃、特に HTTPS コンピューティング攻撃では、HTTPS のパフォーマンスが急激に低下します。 、より大きなセキュリティリスクをもたらします。

SQL インジェクション、XSS クロスサイト、Web サイト マルウェアなどを含むビジネス セキュリティ。

上記の 2 つのカテゴリは、企業を悩ませる非常に危険なセキュリティ問題です。

上記の問題に対応して、Tencent Cloud は、HTTPS の CC と WAF を防ぐセキュリティ システムも設計および実装しており、このようなセキュリティ リスクを効果的に防御できます。

小程序开发者需要关注HTTPS 协议深度解析

キーレス (キーレスロード) 秘密鍵の重要性

証明書に少し詳しい友人なら、SSL 鍵と証明書がペアで使用され、証明書は秘密鍵に一意に対応する必要があることを知っています。 HTTPS 全体で最も重要なデータは SSL 秘密キーです。秘密キーが漏洩すると、ハンドシェイク プロセス全体がハイジャックされ、署名が偽造され、対称キーが解読される可能性があります。 HTTPS 全体として安全なものは何もありません。

従来の秘密キーの使用ソリューションとリスク

従来の秘密キーのソリューションは、秘密キーをアプリケーションにバインドすることです。たとえば、よく知られている nginx および apache で HTTPS を使用する場合は、nginx が展開されているアクセス マシンに関連する証明書と秘密キーを展開する必要があります。

小程序开发者需要关注HTTPS 协议深度解析

このソリューションには次のセキュリティ上の問題があります: 秘密キーがクラウドまたは CDN に展開されている場合、漏洩した場合はどうなりますか?

秘密キーなしの方法

テンセントクラウドのイントラネットは非常に安全ですが、顧客のセキュリティに対する責任から、秘密キーの漏洩に関するユーザーの懸念を完全に払拭し、ユーザーが秘密キーを完全に制御できるようにするために、テンセントクラウドは秘密キーなしのロードスキームを提供しています鍵。このソリューションの核心は、「秘密鍵を Tencent Cloud に保存する必要がなく、ユーザーが独自のサーバーを使用して秘密鍵を保存し、HTTPS アクセスを完了できる」ということです。 Tencent Cloud は秘密キーにアクセスできず、顧客は自宅のサーバーに秘密キーを保存することもできます。

アクセスプロセスは次のとおりです:

ユーザーがHTTPSハンドシェイクリクエストを開始します。

秘密キーの計算に関しては、Tencent Cloud CLB は、暗号化されたカスタム プロトコルを通じて秘密キー計算リクエストをユーザー自身のキーレス サーバーに転送します。

キーレス サービスは、ユーザーの秘密キーを呼び出して計算を完了します。

キーレスサービスは計算結果をTencent Cloud CLBに返します。

CLB は HTTPS リクエストの処理を続行します。

プロセス全体において、Tencent Cloud は HTTPS 秘密キーにアクセスできません。キーレス サーバーはオープンソースであり、ユーザーがデプロイできることは明らかです。サーバーの動作を理解します。

小程序开发者需要关注HTTPS 协议深度解析

6. しきい値ゼロ、WeChat ミニプログラムへの HTTPS クイック アクセス

Tencent Cloud CLB ロード バランサーは、プロトコル スタックとサーバーの徹底的な最適化により、HTTPS パフォーマンスの大幅な向上を達成しました。同時に、国際的に有名な認証機関と協力することで、証明書のコストも大幅に削減しました。 Tencent Cloud CLB は、次の側面で WeChat ミニ プログラム アクセスに非常に大きなメリットをもたらします:

ワンクリック SSL 証明書アプリケーションを提供し、CLB ロード バランシング サービスが HTTPS プロキシとして機能するため、開発負担が軽減され、開発者は開発に集中できます。小さなプログラムビジネス。

HTTPS を使用しても、クライアント側のアクセス速度は低下しません。 HTTP と HTTPS のアクセス遅延はほぼ同じです。

クラスター内の単一サーバーの SSL 暗号化および復号化パフォーマンス、最大 6.5Wcps フル ハンドシェイク。高性能 CPU と比較して少なくとも 3.5 倍向上し、サーバーコストを節約し、業務やトラフィックが急増したときのサービス能力を大幅に向上させ、計算攻撃の防御能力を強化します。

複数のプロトコルのアンインストールと変換をサポートします。ビジネス バックエンドは、HTTP2、SPDY、SSL3.0、TLS1.2 およびその他のバージョンのプロトコルを使用するために、HTTP1.1 をサポートするだけで済みます。 WeChat ミニ プログラム、iOS プラットフォームなどのプロトコル要件を満たします。

SSL証明書の申請、監視、置き換え。国際トップクラスの証明書メーカーであるcomodo社やsymantec社と緊密な連携をとり、万全のサービス体制を整えております。

アンチCCおよびWAF機能。低速接続、高頻度の固定小数点攻撃、SQL インジェクション、Web ページ マルウェアなどのアプリケーション層の攻撃を効果的に防止できます。


上記の利点は、開発者が HTTPS の試用しきい値を下げるのに役立ちます。

HTTPS プロトコルの詳細な分析に注意を払う必要がある小規模プログラム開発者は、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。