tencent cloud

フィードバック

UserSig関連

最終更新日:2022-04-06 10:26:07

    UserSigとはなにか。

    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の計算をご参照ください。

    デバッグスタート段階でのUserSigの計算方法

    Demoクイックスタートを実行し、TRTC SDKの関連機能を理解したい場合は、クライアントサンプルコードコンソールの2つの方法でUserSigを計算、取得することができます。詳細は以下の説明をご参照ください。

    注意:

    • 以上の2種類のUserSig取得、計算方法は、デバックにのみ適用されます。正式に製品のサービスを開始したい場合は、これらの方法の採用を推奨しません。クライアントコード(特にWeb端末)の中のSECRETKEYがいとも簡単に逆コンパイルやハッキングされるからです。一旦キーが漏れてしまえば、攻撃者がお客様のTencent Cloudトラフィックを盗用できるようになります。
    • 正しいやり方は、UserSigの計算コードを、お客様の業務サーバー上に置いたうえで、必要に応じて、お客様のAppから、リアルタイムに算出したUserSigをサーバーに取得しにいく方法です。

    クライアントサンプルコードによるUserSigの計算

    1. SDKAPPIDとキーの取得
      1. TRTCコンソール>**アプリケーション管理**にログインします。
      2. 確認したいSDKAppIDに対応するアプリケーション情報をクリックし、さらにクイックマスタータブをクリックします。
      3. ステップ2 UserSigを発行するためのキーを取得のタグを開けば、UserSig計算用の暗号化鍵が取得できます。
      4. キーのコピーをクリックします。これでキーがクリップボードにコピーされます。
    説明:

    キーを照会するとき、公開鍵および秘密鍵の情報しか取得できない場合は、キーの取得方法をご参照ください。

    1. UserSigの計算:
      クライアントが利用しやすいように、各プラットフォームの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://www.tencentcloud.com/document/product/647/35166)は引き続き使用できます。アップグレード済みなら、必要に応じてアルゴリズムの新旧バージョンを切り替えます。

    アップグレード/切替の操作:

    1. TRTCコンソールにログインします。
    2. 左側ナビゲーションバーでアプリケーション管理を選択し、ターゲットアプリケーションのある行のアプリケーション情報をクリックします。
    3. クイックマスタータブを選択してステップ2 UserSigを発行するためのキーを取得エリアのここをクリックしてアップグレード非対称暗号化またはHMAC-SHA256をクリックします。
    • アップグレード
    • 旧バージョンアルゴリズムの ECDSA-SHA256に切り替えます。
    • 新バージョンアルゴリズムのHMAC-SHA256に切り替えます。

    コンソールによるUserSigの取得

    1. TRTCコンソールにログインし、開発支援>**UserSig生成&検証**に進みます。
    2. 署名(UserSig)生成ツールで、対応するSDKAppIDとUserIDを選択します。
    3. 署名(UserSig)生成をクリックして、対応するUserSigを計算します。

    正式実行段階でのUserSigの計算方法

    業務の正式実行段階では、TRTCがさらに高いセキュリティレベルのサーバー側UserSig計算方法を提供し、UserSig計算用のキーが漏洩しないことを最大限保障できます。それは、1つのAppをハッキングするよりも1台のサーバーを攻撃する難度の方が高いからです。具体的な実現プロセスは以下のとおりです。

    1. お客様のAppがSDKの初期化関数を呼び出す前に、まずサーバーにUserSigをリクエストします。
    2. お客様のサーバーがSDKAppIDとUserIDをもとにUserSigを計算します。計算ソースコードは、ドキュメントの前半部分をご参照ください。
    3. サーバーが計算したUserSigをApp側に返します。
    4. Appは取得したUserSigを、特定のAPI経由でSDKに渡します。
    5. SDKがSDKAppID + UserID + UserSigをTencent CVMに送信し、検証を行います。
    6. Tencent CloudがUserSigを検証し、合法性を確認します。
    7. 検証に合格すると、TRTC SDKにTRTCのサービスが提供されます。

    お客様の実現プロセスを簡略化するため、複数の言語バージョンの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

    旧バージョンの署名アルゴリズムのUserSig計算ソースコード

    署名計算の難度をやさしくし、お客様がよりスピーディーに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
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)