개인정보 처리방침
이 번역은 참고용이며, 법적 효력은 독일어 원문에 있어요.
1. 개인정보 처리 책임자(컨트롤러)
Vulpes Sagax UG (haftungsbeschränkt), 대표 이사
Korbinian Hermann, Alburger Hauptstraße 57, 94315 Straubing, 독일.
이메일: korbi@vulpessagax.com
2. 호스팅 & 로그인
이 서비스는 sudokusagax.com에서 이용할 수 있어요. 서비스가 실행되는 서버는 베를린에 있는 IONOS SE(Elgendorfer Straße 57, 56410 Montabaur, 독일)의 데이터 센터에 있어요. 도메인과 저희에게 보내는 이메일을 받는 메일함은 netcup GmbH(Emmy-Noether-Straße 10, 76131 Karlsruhe, 독일)가 운영해요.
로그인은 저희가 직접 처리해요. 로그인 방법은 두 가지 중에서 고를 수 있어요:
Google 계정 또는 Apple로 로그인이에요. 두 경우 모두 해당 서비스가 이를 위해 발급하는
증명을 저희가 확인하고, 저희 쪽에 계정을
만들어요. 이때 선택한 서비스는 여기에 로그인한다는 사실을 알게 돼요:
Google의 경우 Google LLC(미국), Apple의 경우
Apple Distribution International Ltd.(아일랜드)예요.
Google에서는 식별자와 이메일 주소를 받고, 이름은 받지 않아요. 표시 이름은 계정을 만들 때 무작위로 생성되며(예: “Fuchs-3fa2c1”), 언제든지 바꿀 수 있어요.
Apple에서는 식별자와, 동의한 경우 이메일
주소를 받아요. Apple은 이름을 맨 처음 로그인할 때만
보내고, 그 뒤에는 보내지 않아요. 이 이름은 사용하지 않아요. Apple은 주소를 숨기는 기능도 제공해요
(“나의 이메일 가리기”). 이 기능을 선택하면 저희는
실제 주소 대신
privaterelay.appleid.com의 전달용 주소를 받아요. 이 주소로 오는 메일은 Apple이 전달해 주며,
저희는 실제 주소를 알 수 없어요.
두 방법 모두 저희는 주소 자체를 저장하지 않아요. 저장하는 것은
그 지문뿐이에요(제3항 참조). 나중에 다른
서비스로 로그인하면 보통 같은 계정으로 연결되며
두 번째 계정이 생기지 않아요. 단, 두 서비스가 같은 주소를 알려 주어야 해요:
Apple에서 주소를 숨기거나 Apple에서 주소를 전혀 받지 못하면, 저희는
둘의 관계를 알아볼 수 없어 두 번째 계정이 생겨요.
로그인 방법은 직접 선택하며, 계정을 만들려면 꼭 필요해요
(GDPR 제6조 제1항 (b)). 이때 Google 또는 Apple이
자체적으로 처리하는 내용은 각 회사의 개인정보 처리방침에 나와 있어요.
로그인 후에는 로그인 상태를 유지하기 위해 자체 세션 쿠키
(__Host-sagax_sitzung)를 설정해요. 여기에는
무작위 식별자만 들어 있어요.
예전에 IEX-Labs Auth-Hub를 통해 만든 계정은 저희 쪽에 그대로
남아 있어요. 로그인에는 더 이상 Hub를 사용하지 않아요.
광고나 추적 서비스는 전혀 사용하지 않아요. 글꼴은
로컬에서 제공해요(Google Fonts 등에 연결하지 않아요).
2b. 스토어에서 받는 앱
앱은 Apple의 App Store 또는 Google Play에서 받을 수 있어요. 스토어에서의 다운로드, 설치, 평가는 Apple 또는 Google이 직접 책임지며, 각 회사의 개인정보 처리방침이 적용돼요. 앱 안에서는 이 방침이 적용돼요. 앱이 평가를 부탁할 때는 Apple 또는 Google의 시스템 평가 창을 열어요. 이 창이 나타날지는 시스템이 정하며, 평가했는지, 어떻게 평가했는지 저희는 알 수 없어요.
3. 처리하는 데이터
- 신원/계정: 계정 ID, Google 또는 Apple 로그인 방법의 식별자(두 방법으로 같은 계정을 쓰는 경우 둘 다), 로컬에서 바꿀 수 있는 표시 이름, 그리고 올린 경우 프로필 사진을 저장해요. 또한 로그인한 기기마다 세션(무작위 식별자, 시각, 만료)을 저장해요. 비밀번호와 평문 이메일 주소는 저장하지 않아요. IEX-Labs Auth-Hub 시절의 계정은 식별자로 아직 Hub의 사용자 ID를 쓰고 있어요.
- 이메일 주소의 지문: 저희 자체 로그인이 운영 중이에요 (즉, 계정이 더 이상 외부 서비스에 의존하지 않아요). 전환 과정에서 진행 상황이 사라지지 않도록, 그리고 다시 로그인할 때 같은 계정에 연결할 수 있도록, 계정에 이메일 주소의 지문(해시값)을 저장해요. 주소 자체는 저장하지 않아요. 지문은 일부러 느리게 만든 방식 (scrypt)과 저희 데이터베이스에만 있는 무작위 값으로 만들어요. 사실상 되돌려 계산할 수 없고, 다른 데이터베이스의 지문과도 일치하지 않아요. 이 지문은 오직 나중에 전환할 때 사용자를 알아보는 데만 쓰여요. 그때 같은 주소로 로그인하면 따로 아무것도 하지 않아도 진행 상황을 이어받을 수 있어요. 이것으로 연락을 드릴 수는 없어요. 법적 근거는 누구도 게임 진행 상황을 잃지 않도록 하려는 저희의 정당한 이익이에요 (GDPR 제6조 제1항 (f)). 전환이 끝나면 지문을 삭제하며, 늦어도 2027년 12월 31일까지 삭제해요.
- 게임 데이터: 진행 상황, 최고 기록, 점수, 별, 오늘의 도전과 시즌 결과, 진행 중인 게임 상태.
- 플랫폼별 플레이: 계정으로 퍼즐을 풀면, 그날에 대해 계정 ID, 날짜, 그리고 브라우저, iOS 앱, Android 앱 중 어디에서 플레이했는지를 기록해요. 이 정보는 합계로만 살펴봐요(예: 어느 날 앱에서 플레이한 사람 수). 개별 기록은 넘기지 않고 누구에게도 보여 주지 않아요. 법적 근거는 작업과 비용을 알맞게 나누기 위해 게임이 어떤 플랫폼에서 쓰이는지 알고자 하는 저희의 정당한 이익이에요(GDPR 제6조 제1항 (f)). 기록은 90일 뒤에 삭제되고, 게임 데이터나 계정을 삭제하면 그 즉시 함께 삭제돼요.
- 다른 사람에게 보이는 정보: 표시 이름, 프로필 사진, 여우 등급과 점수는 순위, 대결, 시즌 순위에 나타나며 다른 모든 플레이어가 볼 수 있어요. 순위는 게임의 일부예요(GDPR 제6조 제1항 (b)). 계정 ID, 로그인 방법, 주소의 지문은 저희 외에는 아무도 볼 수 없어요.
- 피드백(오류나 아이디어 보내기): 메시지를 보내면 그 종류(오류 또는 아이디어), 내용, 앱 버전, 시각, 계정 ID를 저장해서 요청을 처리하고 오류를 찾을 수 있도록 해요. 내용은 추가로 표시 이름과 함께 이메일로 저희에게 전달하지만, 계정 ID와 이메일 주소는 포함하지 않아요. 이 발송에는 GDPR 제28조에 따른 수탁 처리자로 Brevo(Sendinblue SAS, 106 boulevard Haussmann, 75008 Paris, 프랑스)를 이용해요. Brevo는 EU에 소재하며, 자체 설명에 따르면 EU 내 서버에서 데이터를 처리해요. 메시지에는 요청에 필요한 내용만 적어 주세요. 법적 근거는 오류를 고치고 요청에 답하려는 저희의 정당한 이익이에요(GDPR 제6조 제1항 (f)). 피드백은 계정과 함께 삭제돼요.
- 신고와 차단: 부적절한 이름이나 사진 등을 이유로 프로필을 신고하면, 누가 누구를 신고했는지, 신고 사유, 시각을 저장해서 저희가 검토할 수 있도록 해요. 누군가를 차단하면 차단한 상대를 저장해요. 차단은 본인 화면에만 적용돼요. 신고되거나 차단된 사람은 누가 했는지 알 수 없어요. 법적 근거는 게임 안에서 안전하고 서로 존중하는 교류를 위한 저희의 정당한 이익이에요(GDPR 제6조 제1항 (f)). 두 계정 중 하나가 삭제되면 둘 사이의 신고와 차단도 사라져요.
- 초대: 생성된 초대 코드와 그 사용 내역.
- 연속 기록 알림(푸시, 선택 사항): 연속 기록을 위한 매일 알림을 켜면, 브라우저가 제공하는 푸시 엔드포인트와 관련 암호화 키, 계정 ID, 언어, 시간대 차이를 저장해서 알맞은 시각에 알림을 보내요(GDPR 제6조 제1항 (a), 동의). 또한 마지막으로 알림을 보낸 시각과 알림을 설정한 시각을 기록해요. 알림은 기술적으로 사용 중인 브라우저 제조사의 푸시 서비스를 거쳐요. 기기에 따라 Google LLC, Mozilla, Apple 또는 Microsoft이며, 네 회사 모두 미국에 있어요. 이 서비스는 저희가 고르는 것이 아니라 브라우저가 정하며, 저희는 이 서비스와 별도의 계약을 맺지 않았어요. 따라서 이 이전은 명시적 동의에 근거해요(GDPR 제49조 제1항 (a)). 이 경로에 대해서는 GDPR 제46조에 따른 보호 조치가 없어요. 원하지 않으면 알림을 켜지 마세요. 알림은 게임에서 언제든지 끌 수 있으며, 그러면 엔드포인트가 삭제돼요.
- 가입: 플레이하기 위해 로그인하면, 게임 이용과 진행 상황의 지속적인 저장을 위해 계정 ID와 표시 이름을 처리해요(GDPR 제6조 제1항 (b), 요청한 서비스의 제공). 이메일 주소는 지문을 만들기 위해 잠깐 처리할 뿐이며(위 참고), 저장하는 것은 지문뿐이에요. 예전에 운영하다 종료한 이메일 대기 명단의 항목은 삭제했어요. 백업 사본에는 보관 기간이 끝날 때까지 남아 있을 수 있지만, 늦어도 2026년 12월 31일까지는 사라져요.
3b. 이벤트 집계(개인 식별 없음)
게임이 호응을 얻는지 알아보기 위해 이벤트를 세요. 예를 들어 시작 페이지가 열린 횟수, 퍼즐이 시작된 횟수, 풀린 횟수, “가입하기”를 누른 횟수, 계정이 만들어진 횟수, 추천 링크가 복사된 횟수, 퍼즐 종류가 요청된 횟수, 또는 계정 없이는 더 진행할 수 없다는 안내가 표시된 횟수예요. 여우 요새에서는 추가로 플레이가 어떻게 끝났는지 세요: 시작, 중단, 패배, 승리 중 무엇인지, 그리고 단계 또는 웨이브, 승리한 경우에는 요새가 무사했는지예요. 저장되는 것은 날짜, 이벤트, 변형별 카운터 하나뿐이에요. 예를 들면 “8월 19일에 퍼즐이 40번 시작됨”과 같은 형태예요.
저희는 사람이 아니라 이벤트를 세요. 사람마다 생기는 기록도, 식별자도, 프로필도, 다시 알아볼 수 있는 정보도 없어요. 이를 위해 쿠키를 설정하지 않으며 IP 주소도 저장하지 않아요. 숫자로는 누가 무엇을 했는지도, 두 이벤트가 같은 사람의 것인지도 알 수 없어요. 법적 근거는 제대로 작동하는 서비스를 위한 저희의 정당한 이익이에요 (GDPR 제6조 제1항 (f)). 이 과정에서 개인과의 관련성은 생기지 않아요.
“변형”으로는 이벤트에 따라 난이도, 클릭한 위치, 또는
광고 링크로 방문한 경우 ?src=의 캠페인 이름을
함께 세요. 이는 저희가 직접 정한
meta-feed 같은 단어로, 사용자에 대해 아무것도 알려 주지 않아요. 이런 추가 정보가 없으면
어느 웹사이트에서 왔는지(호스트 이름만, 전체
주소는 절대 기록하지 않아요) 또는 “직접 방문”만 기록해요.
4. 목적 & 법적 근거
게임, 사용자 계정, 순위의 제공 (GDPR 제6조 제1항 (b), 이용 관계)과 안전하고 장애 없는 운영(GDPR 제6조 제1항 (f), 정당한 이익).
5. 브라우저의 로컬 저장
쿠키는 로그인을 위해서만 설정해요:
- 자체 세션 쿠키(
__Host-sagax_sitzung). 저희 서비스에 로그인할 때 설정돼요. 무작위 문자열만 들어 있고, 이름도 주소도 없어요. 서버에는 그 지문만 있고 값 자체는 없어요. - 로그인 과정 중의 단기 쿠키
(
__Host-sagax_anmeldung). 로그인 서비스에서 돌아올 때 정확히 사용자의 브라우저와 연결되도록 하기 위한 것이에요. 10분 후 만료되며, 로그인 직후 바로 삭제돼요.
그 밖에는 쿠키를 설정하지 않으며, 특히 광고용이나 추적용 쿠키는 전혀 쓰지 않아요.
브라우저 저장소에는 다음 값을 저장해요. 대부분은 기기를 벗어나지 않아요. 벗어나는 것은 네 가지예요: 오프라인으로 푼 퍼즐(어차피 서버로 보내야 하니까요), 앱의 접근 토큰(요청할 때마다 본인임을 증명해요), 광고 링크의 단어(집계되는 이벤트와 함께 전송돼요, 제3b항 참조), 그리고 계정을 만들 때의 게스트 진행 상황 (아래 참조)이에요:
- 설정: 색상 테마(
sudoku.theme.v1), 언어 (sudoku.lang), 소리, 음량, 진동 (sudoku.sound.v1,sudoku.volume.v1,sudoku.haptics.v1), 퍼즐 종류별로 마지막에 고른 난이도 (sudoku.<art>.diff.v1), 화면 표시 메모 (sudoku.ui.*). - 계정 없이 플레이: 게스트 진행 상황
(
sudoku.guest.*). 푼 퍼즐, 기록, 실수, 점수가 들어 있어요. 나중에 계정을 만들면 진행 상황이 사라지지 않도록 한 번만 서버로 전송되고, 그 뒤 기기에서 삭제돼요. 그리고 안내가 이미 표시되었는지 여부 (sudoku_sagax_onboarded_v2,sudoku.app.start.gesehen.v1, 여우 요새 안내용sudoku.fuchsbau.tut.v1, 시즌 안내용sudoku.season.tut.v1, 노나의 시즌 소개용sudoku.season.teaser.v1, 노노그램 안내용sudoku.nono.intro.v1, 나머지 안내용으로 퍼즐 종류 이름이 붙은sudoku.intro.). - 계정이 있을 때: 표시 편의를 위한 계정 ID
(
sudoku.currentUser.v2). 앱에서는 추가로 접근 토큰과 진행 중인 로그인 과정 (sudoku.app.token.v1,sudoku.app.login.v1). 브라우저에는 이것이 없고, 쿠키만으로 충분해요. - 진행 중인 퍼즐: 다른 퍼즐 종류는 진행 중인 게임 상태를
기기에 저장해요(
sudoku.active.*, 예:sudoku.active.killer.v1). 나중에 이어서 플레이할 수 있도록 하기 위해서예요. 클래식 스도쿠는 어느 기기에서나 같도록 서버에 저장해요. 로그인한 경우에는 같은 기기에서 다른 사람의 상태가 표시되지 않도록 게임 상태에 계정 ID도 함께 저장해요. 또한 어떤 등급 상승을 이미 봤는지도 기기에 기억해요 (sudoku.rankSeen.v1.<Konto-Kennung>). - 한 번만 보여야 하는 안내: 이 기기에서 푼 퍼즐 수
(
sudoku.siege.v1, 숫자만), 앱 안내를 닫았는지 여부 (sudoku.apphinweis.weg.v1), 마지막으로 평가를 부탁한 시각(sudoku.bewertung.zuletzt.v2, 시각만), 퍼즐을 푼 날의 수(sudoku.spieltage.v1, 숫자와 마지막 날의 날짜), 시작 페이지에서 플레이할 수 있는 판이 다음 방문 때 다른 판이 되도록 계정 없이 푼 횟수 (sudoku.sofort.zaehler.v1, 역시 숫자만), 그리고 업데이트 후 새로운 점을 한 번만 보여 주기 위해 마지막으로 본 버전 (sudoku.notizen.gesehen.v1). 이 값들은 기기에 남으며 서버로 절대 전송되지 않아요. 같은 안내가 두 번 나타나지 않도록 하기 위한 것일 뿐이에요. - 오프라인으로 푼 퍼즐: 네트워크 없이 나온 결과는
대기열(
sudoku.outbox.v1)에서 기다렸다가, 다시 연결되는 대로 서버로 전송돼요. 로그아웃하면 대기열이 비워져요. - 방문 경로:
?src=가 붙은 링크(예: 광고)로 방문하면, 그 단어 하나를 방문하는 동안만 기억해요(sagax.src, 세션 저장소). 그리고 세 가지 표시가 있어요: 가입이 이미 집계되었는지(sagax.srcGemeldet.v1, 이 값은 계속 남아요. 그렇지 않으면 새 탭마다 다시 집계되기 때문이에요), 이 탭에서 이미 로그인한 적이 있는지(sagax.warAngemeldet), 마지막으로 로그인을 시작한 시각(sagax.anmeldeVersuch, 타임스탬프로, 로그인이 돌아오지 않은 경우를 알아보는 데 써요). 이 값들은 어느 것도 사용자를 개인으로 식별하지 않아요.
또한 앱은 네트워크 없이도 실행되도록 자체 파일(페이지, 이미지, 프로그램 코드)을 브라우저 캐시에 저장해요. 개인 데이터가 담긴 서버 응답은 여기에서 명시적으로 제외돼요.
이 값들은 브라우저 설정에서 언제든지 삭제할 수 있어요. 이때 게스트 진행 상황은 사라지지만, 계정 진행 상황은 사라지지 않아요. 계정 진행 상황은 서버에 있기 때문이에요.
6. 서버 로그
앱은 접속 로그나 서버 로그 파일을 계속 보관하지 않아요. 악용 방지(요청 수 제한)를 위해 IP 주소는 메모리에서만 일시적으로 처리되며, 늦어도 약 10 분 후에 자동으로 폐기돼요. IP 주소는 데이터베이스에 저장되지 않아요. 개별적인 기술 운영 메시지와 오류 메시지(프로파일링 없음)가 호스팅 환경의 표준 출력에 나타날 수 있으며, 그곳에서는 안전한 운영에 필요한 기간 동안만 보관돼요.
7. 보관 기간
게임 데이터는 사용자가 삭제할 때까지 저장돼요. 데이터베이스 백업은 두 곳에서 만들어져요: 매일 같은 서버에 만들어 그곳에서 14 일 동안 순환 보관하고, 매일 자동 실행의 결과물로 GitHub에 있는 저희 비공개 저장소에 만들어 (GitHub Inc., Microsoft 계열) 그곳에서 30 일 동안 보관한 뒤 자동으로 삭제해요. 이 두 번째 사본은 서버 장애가 일어나도 모든 백업이 한꺼번에 사라지지 않도록 하기 위한 것이에요. 여기에는 앱과 같은 데이터가 들어 있어, 표시 이름, 계정 ID, 올린 프로필 사진, 위에서 말한 이메일 주소의 지문도 포함되며, 접근할 수 있는 사람은 운영자뿐이에요. GitHub는 이 데이터를 GDPR 제28조에 따른 수탁 처리자로서 처리해요. 이때 미국으로의 이전이 이루어지며, EU 집행위원회의 표준계약조항으로 보호돼요 (GDPR 제46조 제2항 (c)). 보호 조치의 사본은 위의 주소로 요청하면 받을 수 있어요. 로그인 세션은 늦어도 90일 후에 자동으로 만료되며, 로그아웃하면 즉시 삭제돼요. 계정은 저희 쪽에 있으며, 직접 삭제할 때까지 남아 있어요(제8항 참조).
8. 사용자의 권리
열람, 정정, 삭제, 처리 제한, 데이터 이동, 반대에 대한 권리가 있어요(GDPR 제15조부터 제21조까지). 이를 위해 양식을 작성하거나 이유를 설명할 필요는 없어요. korbi@vulpessagax.com으로 이메일을 보내면 충분하고, 한 문장이면 돼요. 한 달 안에 답해 드려요.
계정은 저희 쪽에 있어요. 여기서는 두 가지를 구분해야 해요:
- 게임 데이터(진행 상황, 기록, 점수)는 게임에서 직접 삭제해요: 오른쪽 위의 이름을 누른 다음 게임 데이터 삭제를 선택해요. 계정은 그대로 남아 있어 계속 플레이할 수 있어요. 여기에서 표시 이름도 바꿀 수 있어요.
- 계정 전체도 직접 삭제해요: 설정의 계정 영구 삭제에서 할 수 있어요. 그러면 표시 이름, 로그인 방법, 프로필 사진, 진행 상황, 트로피, 초대, 피드백, 신고와 차단, 순위와 대결 기록, 그리고 위에서 말한 주소의 지문이 사라져요. 이 작업은 되돌릴 수 없어요. 백업에서는 제7 항에 나온 기간이 지나면 데이터가 사라져요. 이 과정에서 문제가 생기면 korbi@vulpessagax.com으로 메시지만 보내 주시면 돼요.
또한 개인정보 감독기관에 민원을 제기할 권리가 있어요. 저희를 관할하는 곳은 Bayerisches Landesamt für Datenschutzaufsicht(BayLDA, 바이에른주 개인정보 감독청), Ansbach예요.
반대할 권리. 일부 데이터는 저희의 정당한 이익에 근거해 처리해요: 안전한 운영, 계정으로 플레이하는 플랫폼(브라우저, iOS, Android)의 집계, 그리고 퍼즐이 시작된 횟수의 집계예요(GDPR 제6조 제1항 (f)). 이에 대해서는 언제든지 반대할 수 있어요. 형식 없이 korbi@vulpessagax.com으로 메시지를 보내면 충분하며, 이유를 설명할 필요는 없어요. 저희는 반대 요청을 확인해 드리고 해당 데이터를 더 이상 처리하지 않아요. 다만 이벤트 집계에 대해서는 솔직히 덧붙여야 해요: 그곳에는 사용자를 가리키는 정보가 전혀 저장되지 않아서, 사용자에게 연결해 빼낼 수 있는 것도 없어요. 원하시면 자세히 설명해 드릴게요.
9. 안내: AI를 활용한 제작
이 앱은 인공지능의 도움을 받아 만들어졌어요. 소프트웨어는 Claude(Anthropic), 이미지는 Grok(xAI)을 활용했어요. 실제 운영 중에는 이 회사들이 사용자의 개인 데이터를 처리하지 않아요. AI는 제작에만 사용했어요.
2026년 11월 기준.