UserSigとは、悪意ある攻撃者によるクラウドサービスの使用権の盗用を防ぐために、Tencent Cloudによって設計されたセキュリティ保護された署名です。
現在、Tencent CloudのTRTC、IMおよびモバイルライブストリーミングなどのサービスには、すべてこの一連のセキュリティ保護メカニズムが採用されています。これらのサービスを使用する場合、対応するSDKの初期化またはログイン関数において、SDKAppID、UserIDおよびUserSigという3つの重要情報を提供する必要があります。
このうちSDKAppIDはお客様のアプリケーションの識別に、UserIDはユーザーの識別に使用されます。UserSigは、** HMAC SHA256 **暗号化アルゴリズムによって算出される最初の2つをもとに計算されたセキュリティ署名です。攻撃者がUserSigを偽造できない限り、クラウドサービスのトラフィックを盗用することはできません。
UserSigの計算原理を次の図に示します。SDKAppID、UserID、ExpireTimeなどの重要情報をハッシュ化・暗号化することがUserSigの本質です。
//UserSigの計算式。このうちsecretkeyは、usersigを算出するための暗号化鍵です。
usersig = hmacsha256(secretkey, (userid + sdkappid + currtime + expire +
base64(userid + sdkappid + currtime + expire)))
説明:
currtime
は現在のシステムの時間で、expire
は署名の期限切れの時間です。- 上記の原理図はUserSigの計算原理を示したものです。UserSigスプライシングコードの具体的な実装方法については、クライアントのUserSigの計算およびサーバーのUserSigの計算をご参照ください。
Demoクイックスタートを実行し、TRTC SDKの関連機能を理解したい場合は、クライアントサンプルコードとコンソールの2つの方法でUserSigを計算、取得することができます。詳細は以下の説明をご参照ください。
注意:
- 以上の2種類のUserSig取得、計算方法は、デバックにのみ適用されます。正式に製品のサービスを開始したい場合は、これらの方法の採用を推奨しません。クライアントコード(特にWeb端末)の中のSECRETKEYがいとも簡単に逆コンパイルやハッキングされるからです。一旦キーが漏れてしまえば、攻撃者がお客様のTencent Cloudトラフィックを盗用できるようになります。
- 正しいやり方は、UserSigの計算コードを、お客様の業務サーバー上に置いたうえで、必要に応じて、お客様のAppから、リアルタイムに算出したUserSigをサーバーに取得しにいく方法です。
説明:キーを照会するとき、公開鍵および秘密鍵の情報しか取得できない場合は、キーの取得方法をご参照ください。
適用可能なプラットフォーム | ファイルソースコード | ファイル相対パス |
---|---|---|
iOS | Github | TRTC-API-Example-OC/Debug/GenerateTestUserSig.h |
Mac | Github | OCDemo/TRTCDemo/TRTC/GenerateTestUserSig.h |
Android | Github | TRTC-API-Example/Debug/src/main/java/com/tencent/trtc/debug/GenerateTestUserSig.java |
Windows(C++) | Github | TRTC-API-Example-C++/TRTC-API-Example-Qt/src/Util/defs.h |
Windows(C#) | Github | TRTC-API-Example-CSharp/TRTC-API-Example-CSharp/GenerateTestUserSig.cs |
Web | Github | base-js/js/debug/GenerateTestUserSig.js |
Flutter | Github | TRTC-API-Example/lib/Debug/GenerateTestUserSig.dart |
TRTC SDKのサンプルコードの中でGenerateTestUserSig
という名前のオープンソースモジュールを提供しています。その中のSDKAPPID、EXPIRETIME、 SECRETKEYの3つのメンバー変数をご自分の設定に修正するだけで、genTestUserSig()
関数を呼び出して、算出されたUserSigを取得することでき、それによってSDKの関連機能をすばやくスタートさせることができます。
TRTC SDK 6.6バージョン(2019年08月)では、新しい署名アルゴリズムのHMAC-SHA256の使用を開始しました。それ以前に作成されたアプリケーションの場合、新しい暗号化鍵を取得するために、署名アルゴリズムをアップグレードする必要があります。アップグレードしない場合でも、[旧バージョンアルゴリズム ECDSA-SHA256](https://intl.cloud.tencent.com/document/product/647/35166)は引き続き使用できます。アップグレード済みなら、必要に応じてアルゴリズムの新旧バージョンを切り替えます。
アップグレード/切替の操作:
業務の正式実行段階では、TRTCがさらに高いセキュリティレベルのサーバー側UserSig計算方法を提供し、UserSig計算用のキーが漏洩しないことを最大限保障できます。それは、1つのAppをハッキングするよりも1台のサーバーを攻撃する難度の方が高いからです。具体的な実現プロセスは以下のとおりです。
SDKAppID + UserID + UserSig
をTencent CVMに送信し、検証を行います。お客様の実現プロセスを簡略化するため、複数の言語バージョンのUserSig計算ソースコードを提供しています(現在のバージョンの署名アルゴリズム)。
言語バージョン | 署名アルゴリズム | 主な関数 | ダウンロードリンク |
---|---|---|---|
Java | HMAC-SHA256 | genSig | Github |
GO | HMAC-SHA256 | GenSig | Github |
PHP | HMAC-SHA256 | genSig | Github |
Node.js | HMAC-SHA256 | genSig | Github |
Python | HMAC-SHA256 | genSig | Github |
C# | HMAC-SHA256 | GenSig | Github |
署名計算の難度をやさしくし、お客様がよりスピーディーにTencent Cloudのサービスをご利用いただけるように、TRTCでは、2019年7月19日より新しい署名アルゴリズムの使用を開始しました。以前のECDSA-SHA256をHMAC-SHA256にレベルアップし、よって2019年7月19日以降に作成したSDKAppIDはいずれも新しいHMAC-SHA256のアルゴリズムが採用されています。
お客様のSDKAppIDが2019月7月19日以前に作成されている場合は、旧バージョンの署名アルゴリズムを引き続きお使いいただけます。アルゴリズムのソースコードのダウンロードリンクは以下のとおりです。
言語バージョン | 署名アルゴリズム | ダウンロードリンク |
---|---|---|
Java | ECDSA-SHA256 | Github |
C++ | ECDSA-SHA256 | Github |
GO | ECDSA-SHA256 | Github |
PHP | ECDSA-SHA256 | Github |
Node.js | ECDSA-SHA256 | Github |
C# | ECDSA-SHA256 | Github |
Python | ECDSA-SHA256 | Github |
この記事はお役に立ちましたか?