프라이버시 우선 설계(Privacy by Design): 우리가 사용자를 식별하지 않는 이유 (그리고 이것이 자동 동기화에 미치는 영향)
Togglewear에서 프라이버시는 단순한 기능이 아니라, 앱 전체의 아키텍처 그 자체입니다.
우리는 여러분의 시간을 기록하는 것을 돕기 위해 존재하지, 여러분을 추적하기 위해 존재하지 않습니다. 많은 앱이 사용자 프로필을 만들고 광고를 팔기 위해 가능한 한 많은 데이터를 수집하는 시대에, 우리는 정반대의 접근 방식을 택했습니다. 우리는 여러분의 데이터를 저장하거나 분석하지 않고, 단순히 "통과"만 시키는 시스템을 구축했습니다.
"블라인드 브릿지(Blind Bridge)" 아키텍처
Togglewear를 Toggl Track 계정에 연결할 때, 우리는 여러분의 데이터를 우리 데이터베이스로 가져오지 않습니다. 대신, 여러분의 워치는 손목과 Toggl Track 사이를 직접적이고 안전하게 연결하는 일대일 종단간 암호화 "브릿지(다리)"를 설정합니다.
우리 서버를 익명화된 전용 우편 서비스라고 생각하시면 됩니다. Toggl이 시간 기록 업데이트를 보내면, 브릿지는 그 내용을 전혀 보지 않고 단순히 전달만 합니다.
브릿지가 '알 수 없는' 정보:
- 여러분의 이름이나 이메일 주소.
- 여러분이 사용 중인 기기의 개수.
- 현재 어떤 기기가 사용되고 있는지.
- 구체적으로 무엇을, 언제 추적하고 있는지.
우편 배달 비유:
- 패키지: Toggl이 브릿지에 봉투(시간 기록 업데이트)를 건넵니다.
- 주소: 브릿지는 암호화된 "수신" 주소(특정 워치를 가리키는 고유하고 안전한 토큰)를 확인합니다. 이는 다음과 같은 무작위 문자열처럼 보입니다:
1O2j93Xu102jero[j*ad!fha$shf%%12349190523o… - 배달: 브릿지는 즉시 해당 주소로 봉투를 전달하고 내용을 잊어버립니다.
악의적인 제삼자가 전송 내용을 가로채더라도 시간 기록 데이터는 암호화되어 있습니다. 내부 데이터(예: Toggl 사용자 번호: 12312312 또는 워크스페이스
번호: 128812838)는 비공개 Toggl 환경 밖에서는 아무런 의미가 없는 숫자 값으로만 구성됩니다. 이러한 정보는 여러분을 추적, 식별 또는 연락하는 데
사용될 수 없습니다.
이러한 아키텍처 덕분에:
- 우리는 여러분의 개인 정보에 접근할 수 없습니다.
- 우리는 여러분의 시간 기록 이력을 저장할 수 없습니다.
- 모든 것은 여러분과 Toggl 사이에서 비공개로 유지됩니다. 우리는 단순히 안전한 파이프 역할을 할 뿐입니다.
트레이드오프: "하나의 워치" 제한
우리의 엄격한 프라이버시 정책으로 인해, 여러 대의 워치를 동시에 사용하는 파워 유저들에게는 한 가지 제한 사항이 발생합니다.
멀티 워치 충돌
워치 A와 워치 B를 함께 사용하면 다음과 같은 충돌이 발생합니다:
| 단계 | 시나리오 | 충돌 내용 | 결과 ("유령 타이머") |
|---|---|---|---|
| 1 | 워치 B에서 "재동기화(Re-sync)"를 누릅니다. | 워치 B가 "활성 수신기"가 됩니다. | 워치 A는 단일 브릿지에 대한 연결을 자동으로 잃습니다. |
| 2 | 휴대폰에서 타이머를 멈춥니다. | 신호가 활성 수신기(워치 B)에게만 전송됩니다. | 워치 A는 "정지" 명령을 받지 못합니다. 워치 A의 타이머는 수동으로 멈출 때까지 계속 실행되는 것처럼 보입니다. |
"관리 작업" 전쟁
이 충돌은 기기 자체의 특성 때문에 더 심해집니다. Wear OS 워치는 하루에 최대 한 번(대개 충전 중이고 온라인 상태이며 유휴 상태일 때) 백그라운드 "관리 작업"(업데이트 및 동기화 확인)을 수행합니다.
이 확인 과정에서 워치 A가 단일 활성 연결이 끊겼음을 감지하면, 자동으로 연결 재설정을 시도합니다. 이 과정에서 실수로 워치 B로부터 연결 권한을 "뺏어오게" 됩니다. 결과적으로 여러 대의 워치가 하나의 활성 동기화 역할을 차지하기 위해 반복적으로 싸우게 됩니다.
왜 모든 워치로 "방송(Broadcast)"할 수 없나요?
자주 묻는 질문 중 하나는 다음과 같습니다: "왜 하나의 브릿지에서 모든 워치로 업데이트를 동시에 보낼 수 없나요?"
현재의 안전한 일대일 아키텍처를 일대다 방송 방식으로 바꾸려면, 다음과 같은 중개 서버(Middleman Server)를 구축해야 합니다:
- 모든 사용자에 대한 고유한 사용자 프로필 생성.
- 사용자의 모든 기기 정보를 기록하고 기억.
- 현재 어떤 기기가 활성 상태인지 추적.
- 여러 목적지로 라우팅하기 위해 데이터를 가로채고 내용을 열람.
우리는 그러한 감시 인프라를 만들지 않을 것입니다. 우리는 사용자 정보를 추적하거나 기록하는 것을 거부합니다. 우리에게 모든 사용자는 100% 익명입니다. Toggl에서 워치로 직접 연결되는 방식을 유지하는 것만이 우리가 여러분의 프로필을 생성하지 않는다는 보증입니다.
API 장벽
또한, Toggl Track은 사용자가 가질 수 있는 오픈 연결(이를 웹훅(webhook)이라 함)의 개수를 제한합니다. 무료 계정은 단 하나의 웹훅으로 제한됩니다. 우리는 Toggl 구독 등급에 관계없이 모든 사용자에게 안정적으로 작동하는 시스템을 설계할 의무가 있습니다.
해결책: 매뉴얼 모드(Manual Mode) 출시
최신 업데이트에는 자동 동기화(Auto-Sync)를 완전히 끄는 토글 기능이 포함되었습니다.
이를 통해 수동 동기화에 의존함으로써 워치들이 서로의 연결을 덮어쓰거나 유령 타이머 현상이 발생하는 것을 방지할 수 있습니다. 여러 대의 워치를 동시에 사용하는 파워 유저라면 설정에서 자동 동기화 기능을 비활성화하는 것을 강력히 권장합니다.
투명성: 우리가 저장하는 '유일한' 데이터
우리는 철저한 투명성을 믿습니다. 우리는 여러분의 활동이나 정체성을 추적하지 않지만, 비즈니스 관리를 위해 확인하는 단 하나의 데이터가 있습니다:
| 데이터 항목 | 예시 | 목적 |
|---|---|---|
| Toggl 사용자 번호 | 123456789 |
무료 체험판 관리 및 시스템 남용 방지 목적으로만 사용됩니다. |
이 Toggl 사용자 번호는 Toggl에서 생성한 길고 고유한 숫자 문자열입니다. 이것은 여러분의 이메일이 아니며, 여러분에게 연락하거나 개인적으로 식별하는 데 사용될 수 없습니다. 단순히 무료 체험판이 공정하게 사용되도록 보장하는 방법일 뿐입니다.
우리는 이것이 소프트웨어를 만드는 올바른 방법이라고 믿습니다: 안전하고, 사적이며, 사용자를 존중하는 방식 말입니다.