본문으로 건너뛰기
  1. Posts/

Thingworx 계정 암호화 방식 및 옵션의 이해

·2 분· loading · loading ·
Sseung
Solution Thingworx Subsystem Password
작성자
SeungHyeon Lee
R&D Center Developer

Thingworx는 시스템 설정을 구성할 수 있는 기능을 제공하는 시스템 통합 도구 Subsystem을 제공합니다.

User Management Subsystem은 Thingworx의 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다.

User Management Subsystem 접근
#

Thingworx Composer에서 검색창에 “UserManagementSubsystem"을 검색합니다.

image-20230627115110538

해당 SubSystem의 Configuration탭으로 접근합니다.

image-20230627115119965

Password Hash Settings 섹션에서 비밀번호 옵션을 설정할 수 있습니다.

image-20230627122436617

비밀번호 Hashing 알고리즘 및 변수 설정
#

관리자가 선택 가능한 Hashing 알고리즘은 PBKDF2WithHmacSHA512(Default), PBKDF2WithHmacSHA1 두가지 이며

PBKDF2WithHmacSHA512 Hashing 알고리즘에서 사용되는 변수는 Salt size in bytes, Hash size in bytes, Hashing iterations 총 3가지가 있습니다.

비밀번호 해시 설정 기본 유형 Default 설명
Hashing algorithm STRING PBKDF2WithHmacSHA512 RFC 2898( https://tools.ietf.org/html/rfc2898 ) 에 정의된 암호화 해싱 알고리즘 중 하나
Salt size in bytes INTEGER 64 복잡성을 증가시키기 위해 사용자 비밀번호에 추가된 난수 바이트 수
Hash size in bytes INTEGER 64 암호화 결과 해시의 바이트 크기이며, 선택한 해싱 알고리즘에 따라 달라짐 (예: SHA-256은 256비트/32바이트 해시 생성)
Hashing iterations INTEGER 100000 해싱 알고리즘 반복 적용 횟수

Thingworx의 비밀번호 일치 여부 판단 로직
#

Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 사용자 비밀번호 정보가 저장되며 해당 테이블에 사용자를 추가 또는 업데이트하는 시점의 Thingworx 암호화 옵션들도 함께 등록됩니다.

암호화 결과 포멧 [Iterations] : [Salt] : [PBKDF2 Encode Result]

Thingworx에서는 위의 저장된 옵션 정보를 토대로 비밀번호의 일치 여부를 내부 로직에서 다음과 같이 판단합니다.

  1. 로그인을 시도하는 유저가 입력한 암호 문자열을, 해당 유저의 정보와 함께 thingworx DB에 저장되어있는 옵션을 사용해 암호화 하는데, 사용자가 입력한 비밀번호 문자열의 암호화 결과가 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 기록된 암호화 결과와 동일하면 비밀번호가 일치하는 걸로 판단합니다.
  2. 암호화 결과에 기록되어있는 Salt 난수를 Hex로 변환합니다.
  3. 입력한 비밀번호 문자열을 Hex로 변환된 Salt 난수를 사용하여, 지정한 Hashing iterations 만큼 반복하여 지정된 키 길이(Hash size in bytes)로 PBKDF2 SHA-512/PBKDF2 SHA-1 변환합니다.
  4. 변환 결과가 해당 유저의 암호화 결과에 기록되어있는 PBKDF2 Encode Result와 동일한지 비교합니다.

유저 비밀번호 암호화 정보 저장 정보
#

Thingworx의 시스템 DB인 “thingworx"의 “user_model” 테이블은 유저의 비밀번호 암호화 정보와 더불어 유저 객체의 기본적인 정보가 저장된다. 그 중 유저 로그인에 사용되는 암호화와 관련된 주요 옵션은 아래와 같습니다.

image-20230627115251928

  • enabled : 유저 계정의 사용 여부
  • name : 유저 계정명 정보
  • passwordHash : 유저 비밀번호 암호화 결과
  • passwordHashAlgorithm : User Management Subsystem에서 설정된 Hashing algorithm 옵션
  • passwordHashIterationCount : User Management Subsystem에서 설정된 Hashing iterations 옵션
  • passwordHashSaltSizeInBytes : User Management Subsystem에서 설정된 Salt size in bytes 옵션
  • passwordHashSizeInBytes : User Management Subsystem에서 설정된 Hash size in bytes 옵션
  • locked : 유저 계정 Lock 정보
Thingworx 로그인 Lock 기능 Thingworx는 한 계정의 로그인 시도횟수가 초과되면 특정 시간만큼 계정에 Lock이 걸립니다.

관련 글

Thingworx Administrator 계정 비밀번호 Reset 방법
·2 분· loading · loading
Sseung
Solution Thingworx Subsystem Password
Thingworx는 User Management Subsystem을 통해 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다. Thingworx는 로그인 시도 시 입력한 문자열을 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 저장된 사용자 비밀번호 정보 및 User Management Subsystem에서 설정한 옵션을 통해 암호화 하여 해당 결과가 저장된 비밀번호 정보와 일치하는지 판단합니다.