userSig를 통한 보안 인증
UserSig는 무엇입니까?
UserSig란 Tencent Cloud가 설계한 일종의 보안 서명으로, 악성 해커가 귀하의 클라우드 서비스 사용권을 도용하는 것을 방지합니다.
현재 Tencent Cloud의 TRTC, IM, MLVB 등의 서비스는 모두 이 보안 메커니즘을 사용하고 있으며, 이러한 서비스를 사용하려면 해당 SDK의 초기화 또는 로그인 함수에 SDKAppID, UserID, UserSig의 주요 정보를 제공해야 합니다.
이 중, SDKAppID는 귀하의 애플리케이션 식별에 사용되고, UserID는 귀사의 사용자 식별에 사용됩니다. UserSig는 이 둘을 기반으로 보안 서명을 계산합니다. UserSig는 HMAC SHA256 암호화 알고리즘으로 계산됩니다. 해커가 UserSig를 위조하지 못하는 이상 귀하의 클라우드 서비스 트래픽을 도용할 수 없습니다.
UserSig의 계산 원리는 다음 이미지와 같으며, 그 본질은 SDKAppID, UserID, ExpireTime 등 주요 정보에 대해 해시 암호화를 1회 진행하는 것입니다.
//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의 기능에 대해 배우고 싶다면 클라이언트 샘플 코드 및 콘솔 메소드를 통해 UserSig를 계산하고 얻을 수 있습니다. 다음을 참고하십시오.
주의사항:
UserSig를 얻기 위한 위의 두 가지 계산 방식은 디버깅에만 적용할 수 있습니다. 제품 런칭에는 이 방법을 권장하지 않습니다. 클라이언트 코드(특히 Web)의 SECRETKEY는 디컴파일로 크래킹되기 쉽습니다. 키가 유출되면 해커는 Tencent Cloud 트래픽을 도용할 수 있습니다.
올바른 방법은 프로젝트 서버에 UserSig 계산 코드를 배포하여 App이 필요할 때마다 실시간 계산된 UserSig를 서버에서 요청할 수 있도록 하는 것입니다.
UserSig를 계산하기 위한 클라이언트 샘플 코드
1. SDKAPPID 및 키 가져오기:
1.1 TRTC 콘솔 로그인 > 애플리케이션 관리로 이동합니다.
1.2 애플리케이션 구성을 클릭하면 SDKAppID에 해당하는 애플리케이션 정보를 볼 수 있습니다.
1.3 기본 정보에서 SDKSecretKey를 확인하여 UserSig 발급을 위한 암호화 키를 가져옵니다.
1.4 Copy Secret Key를 클릭하여 키를 클립보드에 복사합니다.
2. UserSig 계산:
클라이언트 사용을 용이하게 하기 위해 각 플랫폼에서 UserSig를 계산하기 위한 소스 파일을 제공합니다. 계산을 직접 다운로드할 수 있습니다.
적용 플랫폼 | 파일 소스 코드 | 파일 상대 경로 |
iOS | TRTC-API-Example-OC/Debug/GenerateTestUserSig.h | |
Mac | OCDemo/TRTCDemo/TRTC/GenerateTestUserSig.h | |
Android | TRTC-API-Example/Debug/src/main/java/com/tencent/trtc/debug/GenerateTestUserSig.java | |
Windows(C++) | TRTC-API-Example-C++/TRTC-API-Example-Qt/src/Util/defs.h | |
Windows(C#) | TRTC-API-Example-CSharp/TRTC-API-Example-CSharp/GenerateTestUserSig.cs | |
Web | base-js/js/debug/GenerateTestUserSig.js | |
Flutter | TRTC-API-Example/lib/Debug/GenerateTestUserSig.dart |
TRTC SDK의 예시 코드에
GenerateTestUserSig
라는 오픈 소스 모듈을 제공하였습니다. 이 중 SDKAPPID, EXPIRETIME 및 SECRETKEY 등 3가지 멤버 변수를 자체 설정으로 변경하면 genTestUserSig()
함수를 호출하여 계산된 UserSig를 획득해 SDK 관련 기능을 빠르게 실행할 수 있습니다.
콘솔에서 UserSig 가져오기
1. TRTC 콘솔에 로그인하고 왼쪽 사이드바에서 애플리케이션 관리>UserSig 생성을 클릭합니다.
2. 드롭다운 목록을 클릭하여 생성한 애플리케이션(SDKAppID)을 선택하면 자동으로 해당 키(Key)가 생성됩니다.
3. 사용자 이름(UserID)을 입력합니다.
4. 서명(UserSig) 생성을 클릭하면 해당하는 UserSig 서명이 생성됩니다.
정식 실행 단계에서 UserSig는 어떻게 계산하나요?
비즈니스의 공식 운영 단계에서 TRTC는 UserSig에 대한 상위 수준의 서버측 계산 솔루션을 제공하여 UserSig 계산용 키가 유출되는 것을 최대한 막을 수 있습니다. 이는 서버를 뚫는 것이 App을 리버스하는 것보다 어렵기 때문입니다. 구체적인 구현 프로세스는 다음과 같습니다.
1. App에서 SDK의 초기화 함수를 호출하기 전에 먼저 서버에 UserSig를 요청합니다.
2. 서버에서 SDKAppID와 UserID에 따라 UserSig를 계산합니다. 계산 소스 코드는 파일 전반부를 참고하십시오.
3. 서버에서 계산된 UserSig를 App에 리턴합니다.
4. App에서 획득한 UserSig를 특정 API를 통해 SDK에 전송합니다.
5. SDK는
SDKAppID + UserID + UserSig
를 Tencent Cloud 서버에 보내 인증을 진행합니다.6. Tencent Cloud는 UserSig에 대한 인증을 진행하여 합법 여부를 판단합니다.
7. 인증 통과 후 TRTCSDK에 TRTC 서비스를 제공합니다.
과정을 간소화하기 위해 다국어 버전의 UserSig 계산 소스 코드(현재 버전 서명 알고리즘)를 제공합니다.
이전 버전 서명 알고리즘 UserSig 계산 소스 코드
서명 계산 난이도를 낮추고 고객이 더욱 빠르게 Tencent Cloud 서비스를 이용할 수 있도록 하기 위해, TRTC는 2019-07-19부터 새로운 서명 알고리즘을 적용하여, ECDSA-SHA256을 HMAC-SHA256으로 업그레이드 하였습니다. 2019-07-19 이후 생성된 SDKAppID는 새로운 HMAC-SHA256 알고리즘이 적용됩니다.
SDKAppID가 2019-07-19 이전에 생성된 경우 기존 버전의 서명 알고리즘을 계속 사용할 수 있습니다. 알고리즘 소스 코드의 다운로드 링크는 다음과 같습니다.