개인정보처리방침
앱 이름: shhh! (한국수어 학습) · 마지막 수정: 2026-08-26 (8차)
한 줄 요약
로그인해도 받는 것은 계정의 고유 번호와 단어장에 담은 단어 목록뿐입니다. 이름·이메일·프로필 사진은 요청하지도, 받지도 않습니다.
만 14세 이상만 가입하고 로그인할 수 있습니다. 로그인 없이 둘러보기는 나이 제한이 없습니다 — 계정도, 단어장도, 별명도 만들지 않기 때문입니다. 다만 아무 요청도 나가지 않는다는 뜻은 아닙니다: 앱을 여는 것만으로 호스팅 사업자에게 접속 기록이 남고, 손모양 그림을 볼 때 국립국어원 서버로도 요청이 갑니다. 아래 「로그인하지 않아도 남는 것」을 읽어 주세요.
개인정보처리자와 보호책임자
| 개인정보처리자 | 배성욱 (shhh! 운영자, 개인) |
|---|---|
| 서비스 운영자 | 배성욱 |
| 개인정보 보호책임자 | 배성욱 |
| 문의·열람청구 접수 | [email protected] |
전화번호는 공개하지 않습니다. 개인이 혼자 만들어 운영하는 서비스라 공개할 대표전화가 따로 없고, 개인 휴대전화 번호를 공개하는 대신 위 이메일 하나로 모든 문의를 받습니다. 별도의 조직·부서는 없으며, 위 이름이 곧 처리자이자 보호책임자입니다.
문의 주소는 앞으로 전용 도메인 주소로 바꿀 예정입니다. 아직 도메인이 없어 지금은 위 주소를 씁니다. 바꾸는 날 이 문서를 먼저 고치고 알려 드리겠습니다 — 지금 없는 주소를 미리 적어 두지 않습니다.
어떤 방법으로 로그인할 수 있나요
지금 쓰실 수 있는 로그인 방법은 네이버와 카카오 둘입니다.
구글 로그인은 지금 쓰실 수 없습니다. 앱 안에 만들어 두기는 했지만 현재는 꺼 둔 상태이며, 화면에 버튼이 없을 뿐 아니라 서버도 구글로 들어오는 가입·로그인을 받지 않습니다. 나중에 열게 되면 이 문서를 먼저 고치고 알려 드리겠습니다.
가입할 때 무엇을 하나요
계정을 만드는 자리는 [가입하기] 화면 하나뿐입니다. 그 화면에서 다음을 확인하고 넘어가시게 됩니다.
- (필수) 이용약관에 동의합니다 — 체크하지 않으시면 가입이 진행되지 않습니다.
- (필수) 만 14세 이상입니다 — 체크하지 않으시면 가입이 진행되지 않습니다.
- 개인정보처리방침 — 요약과 전문 링크를 화면에 표시합니다. 이것은 체크박스가 아닙니다. 아래 「처리 근거」에 적은 대로, 서비스 제공에 필요한 처리를 동의가 아닌 계약의 이행을 근거로 하기 때문입니다. 동의를 받았다고 주장하지 않습니다.
서버는 무엇을 보여드렸는지를 기록합니다 — 약관 수락, 방침 표시, 연령 진술 세 가지와, 그때 보여드린 문서의 내용 요약값(해시), 그리고 서버가 찍은 시각입니다. 이 기록은 계정과 함께 지워집니다(계정을 지우시면 남지 않습니다).
이미 계정이 있으시면 [로그인]으로 들어오시면 됩니다. 로그인만으로는 계정이 새로 만들어지지 않습니다 — 계정이 없는 상태에서 로그인을 누르시면 가입 화면으로 안내해 드립니다.
수집하지 않는 것
- 이름·이메일·전화번호·생년월일·프로필 사진 (로그인 제공자에게 요청조차 하지 않습니다)
- 위치, 연락처, 사진, 통화·문자 기록
- 광고 식별자, 분석·추적 도구 (Google Analytics 등을 쓰지 않습니다)
- 검색어 — 사전에서 무엇을 찾았는지는 어디에도 보내지 않습니다
로그인했을 때 저장되는 것
단어장이 기기를 바꿔도 따라오게 하려면 기기 밖에 저장해야 합니다. 이 목적에만 씁니다.
- 계정 고유 번호 — 로그인 제공자가 주는 회원 식별 번호입니다. 저희는 제공자로부터 이름·이메일을 받지 않고 이 번호만 받습니다. 이 값은 회원님의 계정과 연결된 식별자이므로 개인정보로 취급하며, 외부에 공개하지 않습니다. 이것이 「이 서비스에서만 쓰이는 값」인지 다른 서비스와 대조할 수 있는 값인지는 제공자마다 다르고 저희가 셋 다 확인하지는 못했습니다 — 그래서 「누구인지 알 수 없는 값」이라고 단정하지 않습니다. 이 번호는 저희가 따로 만든 무작위 번호와 짝지어 두는 곳에만 저장하고, 단어장·친구 목록을 비롯한 나머지는 전부 그 무작위 번호로 저장합니다. 그래서 친구에게도, 앱 화면 어디에도 제공자 회원 번호는 나타나지 않습니다.
- 단어장에 담은 단어 목록 — 어느 손짓을 외우는 중인지에 해당합니다.
- 직접 지으신 별명(선택) — 마이 화면에서 입력하신 경우에만 저장됩니다. 제공자가 가진 이름을 가져오는 것이 아니라, 원하시는 아무 말이나 쓰실 수 있습니다. 비우면 지워집니다.
- 로그인 세션 — 기기가 로그인 상태를 유지하는 값입니다. 로그인할 때마다 새로 만드는 완전한 무작위 문자열이며, 계정 번호도 제공자 회원 번호도 들어 있지 않습니다. 기기에는 HttpOnly 쿠키로 저장되어 웹페이지의 자바스크립트가 읽을 수 없고, 서버에는 원본이 아니라 되돌릴 수 없는 요약값(해시)만 저장합니다. 로그인한 시점으로부터 90일이 지나면 만료되어 더 이상 로그인 상태를 유지하지 못하며, 만료된 기록은 다음 로그인이 일어날 때 지워집니다. 로그아웃하시거나 계정을 지우시면 그 자리에서 함께 지워집니다.
- 친구 목록과 초대 코드 — 친구를 맺은 상대의 무작위 번호, 그리고 초대 링크에 쓰이는 무작위 문자열입니다. 아래 「친구에게 보이는 것」을 함께 읽어 주세요.
- 가입 기록 — 가입하실 때 약관을 수락하셨다는 것, 이 방침을 표시해 드렸다는 것, 만 14세 이상이라고 확인하셨다는 것 세 줄입니다. 각 줄에는 그때 보여드린 문서의 내용 요약값(해시)과 서버가 찍은 시각 두 개(확인하신 시각·기록된 시각)가 들어 있습니다. 체크박스를 누르신 시각을 브라우저가 보내는 것이 아니라 서버가 직접 찍습니다. 계정을 지우시면 이 기록도 함께 지워집니다.
얼마나 보관하나요. 단어장·별명·친구 목록·초대 코드는 계정을 지우실 때까지 보관합니다. 세션 토큰은 90일 뒤 만료됩니다. 결제·거래 기능이 없어 결제·거래 기록 자체를 만들지 않습니다. 그 밖에 법령상 별도 보관 의무가 있는지는 저희가 확정해 말씀드리지 않습니다 — 확인되면 이 문서에 적겠습니다.
지운 뒤에 대해 정확히 말씀드립니다. 계정을 지우시면 서비스에서 쓰이는 데이터베이스에서는 그 자리에서 사라집니다 — 앱 화면에서도, 친구의 목록에서도 즉시 사라지고 모든 기기의 로그인이 풀립니다. 다만 데이터베이스에는 사고 복구용 과거 시점 기능(Cloudflare D1 Time Travel)이 있고 저희가 이를 끌 수 없습니다. 그래서 운영자가 과거 시점으로 되돌리는 복구를 실행하면 지워진 계정이 되살아날 수 있습니다. 이것은 이론적인 이야기가 아니라 저희가 실제로 확인한 사실입니다. 그래서 저희는 두 가지를 하고 있습니다 — ① 지금은 복구 실행 자체를 운영 규칙으로 금지하고 있고, ② 복구가 불가피해질 경우를 대비해 지워진 계정을 다시 지우기 위한 표식(계정 번호를 되돌릴 수 없게 변환한 값 하나)을 별도 저장소에 남깁니다. 이 표식에는 단어장·별명·제공자 회원 번호가 들어 있지 않습니다.
그래서 「최대 얼마 동안 되살아날 수 있나」를 숫자로 적어 둡니다. 저희는 지금 Cloudflare 의 무료 등급을 쓰고 있고, 그 등급의 과거 시점 복구 기능이 되돌릴 수 있는 범위는 최대 7일입니다. 유료 등급으로 옮기면 이 범위가 30일로 늘어나므로, 옮기기 전에 이 문단의 숫자를 먼저 다시 계산하고 이 문서를 고치겠습니다.
다시 지우기 위한 표식은 최소 약 15일 동안 보관합니다. 여기서 15일은 「최소」이지 「그날 지운다」가 아닙니다. 되살릴 수 있는 원본이 하나라도 남아 있는 동안에는 표식을 더 오래 들고 있습니다 — 되살아날 수 있는 마지막 날에 표식이 이미 없으면, 그때는 누구를 다시 지워야 하는지 알 방법이 없기 때문입니다. 표식을 지우는 조건은 넷을 모두 만족할 때입니다: ① 삭제가 실제로 끝났고 ② 최소 보관 기간이 지났고 ③ 과거 시점 복구 범위를 벗어났고 ④ 그 계정을 담고 있을 수 있는 백업 사본이 더 이상 남아 있지 않음을 확인했을 때. ④를 확인하지 못하면(모르면) 지우지 않습니다.
「정확히 며칠째에 완전히 사라진다」고는 말씀드리지 않습니다. 만료로 표시된 백업 사본이 실제로 지워지기까지 통상 하루 정도가 더 걸릴 수 있다고 저장소 사업자가 공개하고 있고, 그 시점은 저희가 정하지 못합니다. 확인한 것만 적고, 보장할 수 없는 것은 보장하지 않습니다.
백업 사본은 지금 운영하고 있지 않습니다. 사실 그대로 적습니다 — 백업을 만드는 도구는 앱 안에 만들어 두었지만, 그 사본을 둘 저장 공간을 아직 마련하지 않았고 그래서 지금까지 만들어진 백업 사본은 하나도 없습니다. 마련한 뒤에 지킬 규칙은 이렇습니다 — 매일 하는 정기 백업은 하지 않고 데이터베이스 구조를 바꾸는 작업 직전에만 만들며, 비공개 전용 저장소에 암호화해 두고, 만들어진 지 7일이 지나면 만료되게 하며, 자동으로 되돌리는 기능은 만들지 않습니다(되돌리는 것은 위에 적은 대로 금지하고 있는 일입니다). 실제로 백업을 운영하기 시작하면 이 문단을 먼저 고치겠습니다.
친구에게 보이는 것
친구 기능을 쓰면 친구로 맺어진 상대에게만 다음이 보입니다. 그 밖의 누구에게도 공개되지 않습니다.
- 직접 지으신 별명 — 안 지으셨으면 「이름 없는 친구」로 보입니다.
- 단어장에 담은 단어 목록과 그 개수.
수락 전에도 별명은 보입니다. 요청을 보내거나 받으면, 아직 친구가 아니어도 상대의 요청 목록에 별명이 표시됩니다. 단어장과 단어 개수는 보이지 않습니다. 별명을 보여 드리는 이유는 누가 보낸 요청인지 가릴 단서가 그것뿐이기 때문입니다 — 별명이 없으면 「별명을 안 지은 사람」만 줄지어 보여서, 아는 사람이 보낸 요청인지 링크를 주운 사람이 보낸 요청인지 구분할 방법이 사라집니다. 별명은 제공자에게서 가져온 실명이 아니라 직접 지으신 아무 말이며, 언제든 바꾸거나 비우실 수 있습니다(마이 → ⚙ 설정).
친구는 양쪽이 다 움직여야 맺어집니다. 한쪽이 초대 링크를 보내면 상대에게 요청이 가고, 받은 쪽이 수락해야 이어집니다. 수락 전에는 서로의 단어장이 보이지 않습니다. 초대 링크만 가지고 있는 사람은 요청을 보낼 수 있을 뿐, 단어장을 볼 수 없습니다.
끊는 방법: 우리 단어장 화면 → 친구 → 해당 친구의 끊기. 끊는 즉시 양쪽 모두에서 사라지고 서로의 단어장을 볼 수 없게 됩니다. 친구 관계는 기록 한 줄로 저장하기 때문에, 한쪽에만 남는 상태가 생기지 않습니다. 제공자의 친구 목록을 가져오는 일은 없습니다 — 초대 링크를 주고받은 사람만 친구가 됩니다.
지우는 방법: 앱 아래 마이 탭 → 오른쪽 위 ⚙ 설정 → 계정 → 계정 삭제.
서버에 저장된 단어장·별명·친구 목록·초대 코드·가입 기록, 그리고 제공자 회원 번호와의 연결이
서비스 데이터베이스에서 그 자리에서 지워지고, 친구들의 목록에서도 함께 사라집니다
(복구본에 대해서는 위 「지운 뒤에 대해 정확히 말씀드립니다」를 읽어 주세요).
로그인해 두신 모든 기기에서 즉시 로그인이 풀립니다. 문의 주소로 요청하셔도 됩니다.
단어장만 비우려면 우리 단어장 화면의 단어장 비우기를 쓰시면 됩니다(계정은 그대로 남습니다).
남용을 막기 위한 처리
초대 코드를 무작위로 대입하거나 로그인을 반복해 시도하는 것을 막기 위해, 짧은 시간 안의 요청 횟수를 셉니다. 이때 저장하는 것은 요약값과 횟수뿐이며, IP 주소나 계정 번호를 그대로 저장하지 않습니다. 이 요약값은 저희만 아는 비밀키를 섞어 만들기 때문에, 그 키를 모르면 값을 보고 원래의 IP 주소나 계정 번호를 되찾을 수 없습니다.
세는 단위는 IP 주소입니다. 계정 번호는 쓰지 않습니다. 횟수를 세는 자리가 로그인 여부를 확인하기 전이기 때문입니다 — 그 자리에서는 아직 누구의 요청인지 알 수 없습니다. 그래서 저장되는 것은 언제나 IP 주소를 위 방식으로 변환한 값과 횟수뿐입니다.
로그인하지 않으신 분의 요청도 이 표에 한 줄을 만듭니다.
로그인 왕복(/api/cb·/api/exchange)과 가입 시작(/api/signup/start)이
그런 자리입니다. 로그인하신 뒤의 요청도 마찬가지로 한 줄을 만듭니다 —
단어장을 저장할 때뿐 아니라 불러올 때도 셉니다.
읽는 요청까지 세게 된 이유를 적어 둡니다. 세지 않으면 아무나 같은 주소를 무한히 두드려 저희 데이터베이스의 하루 쓰기 한도를 태울 수 있고, 그 한도가 바닥나면 정상적으로 쓰시는 분의 단어장 저장이 먼저 실패합니다. 이때도 저장되는 것은 변환값과 횟수뿐이고, 무엇을 읽으셨는지·어떤 단어인지는 저장하지 않습니다.
이 기록은 몇 분 안에 쓸모를 잃습니다. 지워지는 시점은 다음 두 가지입니다 — 누군가 로그인할 때 함께 지워지고, 그와 별개로 정기 정리 작업이 지웁니다. 정기 정리 작업은 만들어 두었으나 아직 운영에 배포하지 않았습니다. 배포하면 이 문장을 고치겠습니다.
처리 근거
위에 적은 처리는 「개인정보 보호법」 제15조 제1항 제4호 — 정보주체와 체결한 계약을 이행하거나 계약을 체결하는 과정에서 정보주체의 요청에 따른 조치를 이행하기 위하여 필요한 경우를 근거로 합니다. 계정을 만들고 단어장을 기기 밖에 보관해 다른 기기에서도 열리게 하는 것, 친구와 단어장을 나누는 것이 곧 이용약관으로 약속드린 서비스 자체이기 때문입니다.
그래서 가입 화면에서 개인정보 수집·이용에 대한 별도 동의를 받지 않습니다. 「동의하셨다」고 주장하지도 않습니다. 대신 무엇을 어떻게 처리하는지를 이 문서로 알려 드리고, 가입 화면에서 이 문서를 표시합니다.
처리를 멈추시려면 세 가지 중에 고르실 수 있습니다 — 아직 계정이 없으시면 그냥 로그인하지 않으시면 되고, 계정이 있으시면 처리정지(데이터는 두고 처리만 멈춤)나 계정 삭제(데이터까지 지움)를 하시면 됩니다. 자세한 방법은 아래 「회원님의 권리와 행사 방법」에 있습니다. ⚠️ 로그아웃은 처리정지가 아닙니다. 로그아웃은 이 기기의 접속을 끝내는 것이고, 계정·단어장·별명·친구 관계·가입 기록은 그대로 남아 친구에게도 계속 보입니다. 사전 검색·수형 보기·연습은 로그인 없이 그대로 쓰실 수 있습니다.
국외 처리
앱과 서버와 데이터베이스 전부를 Cloudflare 위에서 운영합니다 (Cloudflare Pages · Pages Functions · Cloudflare D1). 그래서 위 정보가 대한민국 밖에서 처리·보관될 수 있습니다.
이 국외 처리는 「개인정보 보호법」 제28조의8 제1항 제3호 — 정보주체와의 계약의 체결 및 이행을 위하여 개인정보의 처리위탁·보관이 필요한 경우를 근거로 합니다. 같은 호 가목은 그때 같은 조 제2항 각 호의 사항을 개인정보 처리방침에 공개할 것을 함께 요구하므로, 국외 이전에 대한 별도 동의 체크박스를 두지 않는 대신 아래 표로 그 사항을 공개합니다.
| 이전받는 자 | Cloudflare, Inc. (미국) 및 그 계열사 — 문의: cloudflare.com/trust-hub. Cloudflare 가 다시 이용하는 하위 처리자 중 개발자 플랫폼(Pages·Workers·D1)에 관계된 곳은 Google LLC 와 Oracle America, Inc. 입니다 (공개 목록, 2025-10-01 갱신본 기준). |
|---|---|
| 이전되는 항목 | 제공자 회원 식별 번호, 저희가 만든 무작위 계정 번호, 단어장 단어 목록, 별명(입력하신 경우), 친구 관계와 초대 코드, 세션 토큰의 요약값, 가입 기록(약관 수락·방침 표시·연령 진술과 문서 요약값·시각), 남용 방어용 변환값과 횟수, 그리고 호스팅 사업자가 남기는 일반적인 접속 기록 (IP 주소·요청 시각·요청 주소 등) |
| 이전되는 국가 | 미국 및 Cloudflare 글로벌 네트워크가 운영되는 국가입니다 — Cloudflare, Inc. 는 미국 법인이고 저희 데이터는 그 회사가 세계 여러 나라에 두고 운영하는 네트워크 위에서 처리됩니다. 그중 어느 한 나라로 정확히 특정해 말씀드릴 수는 없습니다. 아래 「국가를 특정하지 못하는 이유」를 읽어 주세요. 저희가 확인한 것은 이렇습니다 — 데이터베이스가 실제로 도는 지역은 Cloudflare 가 APAC(아시아·태평양) 이라고 표시하며, 이는 국가가 아니라 지역 이름입니다. 위 하위 처리자 공개 목록이 적는 국가는 Google LLC 가 유럽경제지역·미국·호주·인도, Oracle America, Inc. 가 미국·유럽경제지역·영국·일본·호주·캐나다·싱가포르 입니다. Cloudflare 본사는 미국에 있습니다. |
| 이전 시기·방법 | 가입·로그인·단어장 저장·친구 기능을 쓰실 때마다, 그리고 앱을 여실 때마다 인터넷을 통해 암호화(HTTPS)해 전송합니다. 별도의 일괄 전송은 없습니다. |
| 이용 목적 | 앱을 전달하는 것, 단어장이 기기를 바꿔도 따라오게 하는 것, 친구와 단어장을 나누는 것, 남용을 막는 것. 그 밖의 목적은 없습니다. 광고·분석·프로파일링에 쓰지 않습니다. |
| 보유·이용 기간 | 계정을 지우실 때까지(세션 토큰은 90일). 위 「얼마나 보관하나요」와 같습니다. 복구본에 대해서는 「지운 뒤에 대해 정확히 말씀드립니다」를 읽어 주세요. |
| 거부 방법과 효과 | 가입·로그인하지 않으시면 계정·단어장·친구 정보의 이전이 일어나지 않습니다. 다만 앱 자체를 Cloudflare 가 전달하므로, 로그인하지 않으셔도 접속 기록은 남습니다 — 그것까지 거부하시려면 앱을 이용하지 않으시는 방법뿐입니다. 이미 가입하셨다면 계정 삭제로 지우실 수 있습니다. 거부하셔도 사전 검색·수형 보기·연습에는 아무 제한이 없습니다. |
| 법적 근거 | 「개인정보 보호법」 제28조의8 제1항 제3호(계약의 체결 및 이행에 필요한 처리위탁·보관) + 같은 호 가목(같은 조 제2항 각 호의 사항을 이 처리방침에 공개) |
| 문의처 | [email protected] |
국가를 특정하지 못하는 이유. Cloudflare 는 데이터가 도는 위치를 국가가 아니라
지역(APAC·WEUR·ENAM 등) 단위로 알려 줍니다. 데이터베이스를 특정 관할로 묶는 설정
(jurisdiction)은 만들 때만 지정할 수 있고 지금 저희 데이터베이스에는 설정되어 있지 않습니다
(값이 비어 있음을 확인했습니다, 2026-08-18). 위치 힌트를 주더라도 그것이 실제 저장 국가를 보장한다고
Cloudflare 공식 문서가 말하지 않습니다. 그래서 「미국을 포함한 글로벌 네트워크 국가」처럼
모호하게 적어 두지 않고, 확인한 것과 확인하지 못한 것을 나누어 적었습니다.
특정 국가로 한정하는 방법(jurisdiction 설정으로 데이터베이스를 새로 만드는 것)을 검토하고 있으며,
정해지면 이 표를 고치겠습니다.
기기 안에만 저장되는 것
다음은 브라우저의 로컬 저장소(localStorage)에 기기 안에만 저장됩니다. 앱을 삭제하거나 브라우저 저장 데이터를 지우면 함께 사라집니다.
- 우리 단어장에 담은 단어 목록 — 로그인하지 않았다면 기기 안에만 있습니다. 로그인하면 위 「로그인했을 때 저장되는 것」대로 서버에도 함께 저장됩니다.
- 로그인 상태 표시(어느 서비스로 로그인했는지)와 내 계정의 무작위 번호 — 화면을 그리는 데만 씁니다. 세션 자체는 여기 없고 HttpOnly 쿠키에 있습니다. 로그아웃하면 이 기기와 서버 양쪽에서 지워집니다.
- 직접 지으신 별명과 내 초대 링크 코드 — 서버에도 저장되는 값이지만, 연결이 끊겼을 때도 화면에 보이도록 기기에 함께 둡니다. 로그아웃하면 이 기기에서 지워집니다 — 한 기기를 두 사람이 쓸 때 앞사람의 별명과 초대 링크가 뒷사람에게 남지 않게 하기 위해서입니다.
- 단어장을 서버와 맞추는 데 쓰는 값 — 마지막으로 맞춘 시점의 저장 번호, 그 뒤에 이 기기에서 고친 적이 있는지, 마지막으로 로그인했던 계정의 무작위 번호입니다. 내용이 아니라 어느 쪽이 최신인지 가리는 데만 씁니다.
- 로그인 도중에만 잠깐 쓰는 값 — 로그인을 시작한 것이 이 기기가 맞는지 확인하는 일회용 무작위 값과, 로그인하러 떠나기 전에 보고 있던 주소입니다. 로그인이 끝나면 지워집니다.
- 서버 세션을 끊지 못했을 때 남기는 재시도 표식 — 로그아웃이나 로그인 실패
처리 중에 저희 서버에 「이 세션을 끊어 주세요」를 보냈는데 답을 받지 못하면(연결이
끊겼거나 시간이 초과되면), 다음에 앱을 여실 때 다시 보내려고 표식을 하나 남깁니다.
담기는 값은
"1"하나입니다 — 세션 토큰도, 계정 번호도, 어느 서비스로 로그인하셨는지도, 언제 그랬는지도 적지 않습니다. 저희 서버가 「끊었다」 또는 「끊을 세션이 이미 없다」고 답해 주면 그 자리에서 지우고, 정상적으로 새로 로그인하셔도 지웁니다. - 첫 실행 안내문을 보았는지 여부, 「로그인 없이 둘러보기」를 고른 적이 있는지 여부
- 프로 이용 여부 표시
로그아웃하면 이 기기의 단어장은 남습니다. 로그아웃은 「이 기기에서 그만 보기」이지 「지우기」도 「처리 멈추기」도 아니기 때문입니다. 다만 다른 계정으로 로그인하시면 그 계정의 단어장으로 바뀝니다 — 앞 계정의 단어가 뒷 계정으로 올라가지 않게 하기 위해서입니다. 기기에서도 지우시려면 우리 단어장 화면의 단어장 비우기를 쓰시면 됩니다.
로그인하지 않아도 남는 것
로그인하지 않으시면 저희 서버에는 계정도 단어장도 만들지 않습니다. 다만 「아무 데도 아무것도 안 남는다」는 뜻은 아닙니다. 정확히 두 가지입니다.
① 이 기기 안에는 단어장이 만들어집니다. 로그인하지 않고 단어를 담으시면 그 목록은 브라우저의 로컬 저장소에 이 기기 안에만 저장됩니다. 저희 서버로는 가지 않습니다. 나중에 로그아웃하셔도 이 기기의 단어장은 그대로 남습니다 — 지우시려면 브라우저에서 이 사이트의 저장 데이터를 지우시거나, 앱에서 단어를 비우시면 됩니다. (아래 「이 기기에만 남는 것」에 목록이 있습니다.)
② 다음 기록이 저희 밖에 남습니다.
- 호스팅 사업자(Cloudflare)의 접속 기록 — 앱 파일을 받는 것 자체가 요청이라 IP 주소·요청 시각·요청 주소가 남을 수 있습니다. 이는 해당 사업자의 방침을 따릅니다.
- 국립국어원 서버의 접속 기록 — 앱은 수어 손모양 그림을 국립국어원 한국수어사전
(
sldict.korean.go.kr)에서 브라우저가 직접 불러옵니다. 그래서 그림을 보실 때 이용자의 IP 주소와 어떤 그림을 요청했는지가 국립국어원 서버에 기록될 수 있습니다. 저희를 거치지 않는 요청이라 저희가 그 기록을 보거나 지울 수 없습니다. 검색어나 단어장 내용은 이 요청에 실리지 않습니다. - 남용 방어용 변환값 — 위 「남용을 막기 위한 처리」에 적은 대로, 로그인 왕복·가입 시작뿐 아니라 단어장을 불러오거나 저장하는 요청에도 IP 주소를 변환한 값과 횟수가 저희 데이터베이스에 짧게 남습니다.
어디와 통신하나요
로그인한 경우에는 단어장을 주고받기 위해 앱과 같은 주소(shhh-app.pages.dev)의
/api/ 경로와 통신합니다. 이 주소는 Cloudflare Pages Functions 위에서 돌고
데이터는 Cloudflare D1 데이터베이스에 저장됩니다.
저장된 단어장과 계정 정보는 그 밖의 회사로 넘기지 않습니다.
다만 아래 「사람 확인(가입 화면)」에 적은 대로, 가입 화면에서는 브라우저가
Cloudflare 의 다른 주소로도 요청을 보냅니다.
가입·로그인 과정에서는 고르신 제공자의 인증 주소로 이동하게 됩니다. 그때 저희가 제공자에게 넘기는 값에는 약관 수락 여부나 연령 진술이 읽을 수 있는 상태로 들어가지 않습니다 — 그 값은 저희 서버만 열 수 있게 암호화해서 실어 보냅니다. 다만 제공자는 「이 사람이 지금 로그인을 시도했다」는 사실 자체와 그 시각을 자기 기록에 남깁니다. 이것은 소셜 로그인의 성질이라 저희가 없앨 수 없습니다.
로그인하지 않으셨더라도 앱을 열 때 /api/health 한 곳에는 요청이 갑니다.
어느 방식으로 로그인할 수 있는지를 물어보는 요청이며(그래야 실제로 되는 로그인 버튼만
보여드릴 수 있습니다), 이 요청에는 사용자를 가리키는 값이 아무것도 실리지 않고
응답에도 이용 가능한 로그인 방식의 이름만 들어 있습니다.
가입 화면을 여시면 약관·방침 문서와 그 요약값을 받기 위해 /api/policies 와
/policies/ 아래의 문서 파일에도 요청이 갑니다 — 이 요청들에도
사용자를 가리키는 값이 실리지 않습니다.
한 가지 예외를 그대로 적어 둡니다. 로그아웃하실 때 저희 서버에 「이 로그인을 끊어 달라」고
보내는데, 그 요청이 연결이 끊겨 실패하면 앱이 「아직 못 끊었다」는 표시 하나를 이 기기에 남깁니다.
그러면 로그인하지 않은 화면에서도 다음에 앱을 열거나 인터넷이 돌아왔을 때
DELETE /api/session 요청이 한 번 더 나갈 수 있습니다.
이 요청에 실리는 것은 그때 남아 있던 로그인 쿠키뿐이고, 성공하면 표시는 지워집니다.
끊지 못한 로그인이 서버에 살아 있는 편이 더 나쁘기 때문에 이렇게 해 두었습니다.
그 밖의 /api/ 경로로는 로그인하지 않으면 요청이 나가지 않습니다.
사람 확인 (가입 화면)
자동화된 프로그램이 계정을 대량으로 만드는 것을 막기 위해, 가입 화면에서만 Cloudflare 의 Turnstile 사람 확인을 씁니다. 사실 그대로 적으면 이렇습니다.
- 가입 화면을 여실 때 브라우저가
challenges.cloudflare.com에서 위젯 스크립트를 받습니다. 이때 그 주소로 브라우저의 요청이 나갑니다 — 모든 웹 요청이 그렇듯 IP 주소와 브라우저가 보내는 기본 정보가 함께 갑니다. - 가입 버튼을 누르실 때 위젯이 만든 확인용 값(토큰)을 저희 서버가 받아, 그것이 진짜인지 Cloudflare 에 한 번 물어봅니다(저희 서버 → Cloudflare).
- 저희 앱은 그 확인용 값에 회원님의 계정 번호·별명·단어장·친구 관계·약관 선택을 넣지 않습니다. 저희가 넣는 것이 없다는 뜻이며, 저희는 그 값을 저장하지 않고 확인이 끝나면 버립니다. 그 값 자체는 Cloudflare 가 만들고, 그 안에 무엇이 담기는지는 Cloudflare 가 정합니다 — 저희가 단정해 말씀드릴 수 없습니다.
- 로그인만 하실 때와 로그인 없이 둘러보실 때는 이 위젯을 불러오지 않습니다.
가입 화면을 여시지 않으면
challenges.cloudflare.com으로 요청이 나가지 않습니다.
이 확인 과정에서 Cloudflare 가 자기 쪽에 무엇을 얼마나 남기는지는 Cloudflare 가 정하는 부분이라 저희가 단정해 말씀드릴 수 없습니다. Cloudflare 가 공개한 Turnstile 설명을 확인해 주세요. 저희가 아는 사실만 위에 적었습니다.
카메라
현재 배포되는 앱에는 카메라 기능이 없습니다. 카메라를 쓰는 코드는 아직 배포 대상이 아니라 내려받아지지도, 실행되지도 않습니다. 이후 지화 인식 기능이 추가되더라도 영상은 기기 안에서만 처리하고 저장하거나 전송하지 않을 계획이며, 그 시점에 이 문서를 먼저 고치겠습니다.
만 14세 미만
만 14세 미만은 가입 대상이 아닙니다. 법정대리인 동의를 받는 절차를 만들지 않았고, 만들 계획도 없습니다. 그래서 만 14세 미만이시라면 가입하지 말아 주세요.
가입 화면에는 「(필수) 만 14세 이상입니다」 항목이 있고, 이 항목을 확인하지 않으시면 서버가 가입을 거부합니다 — 계정도, 세션도, 아무 기록도 만들지 않습니다.
다만 이것은 본인확인이 아닙니다. 저희는 생년월일·휴대전화 본인확인·아이핀 어느 것도 요청하지 않습니다(요청하면 그 자체로 개인정보를 더 받게 됩니다). 그래서 사실과 다르게 확인하고 넘어가시는 것을 기술로 막지 못합니다. 「연령 인증을 마쳤다」거나 「미성년자 가입이 불가능하다」고 말씀드리지 않겠습니다 — 정확한 표현은 「만 14세 미만은 가입 대상에서 제외하며, 필수 진술 없이는 가입되지 않는다」 입니다. 이는 개인정보를 최소한만 받기 위해 저희가 알고 감수한 부분입니다.
만 14세 미만 어린이의 계정임을 알게 되면 해당 계정의 로그인을 즉시 중지하고 계정 데이터를 지웁니다. 문의 주소로 알려 주세요.
로그인 없이 둘러보기는 나이 제한이 없습니다. 사전과 연습을 그대로 쓰실 수 있고 계정·단어장·별명 어느 것도 만들지 않습니다(위 「로그인하지 않아도 남는 것」은 함께 읽어 주세요).
회원님의 권리와 행사 방법
회원님은 언제든지 열람 · 정정 · 삭제 · 처리정지를 요구하실 수 있습니다. 네 가지 모두 앱 안에서 직접, 즉시 하실 수 있게 만들어 두었습니다.
| 권리 | 앱 안에서 하시는 방법 |
|---|---|
| 열람 (무엇이 저장돼 있나) |
마이 화면에서 계정 상태·별명·단어장·친구 목록을 그대로 보실 수 있고, 설정 → 「내 정보 내려받기」를 누르시면 회원님 계정에 저장된 값 전부를 파일 하나로 받으실 수 있습니다 — 계정 번호, 제공자 회원 번호, 가입 시각, 별명, 단어장, 친구 관계, 초대 코드, 가입 기록, 로그인 세션의 만료·폐기 정보, 처리정지 상태까지 들어 있습니다. 친구의 제공자 회원 번호와 친구의 단어장은 들어 있지 않습니다(그건 그분의 정보입니다). 로그인 토큰과 저희가 쓰는 비밀값도 들어 있지 않습니다. |
| 정정 | 별명은 마이 화면에서 바로 고치거나 비우실 수 있고, 단어장은 직접 편집하실 수 있습니다. |
| 삭제 | 마이 → 설정 → 계정 → 계정 삭제. 계정·단어장·별명·친구 관계·초대 코드·가입 기록이 한 번에 지워집니다. |
| 처리정지 | 마이 → 설정 → 처리정지. 누르시면 모든 기기에서 로그인이 풀리고,
친구에게 별명·단어 개수가 더 이상 보이지 않으며, 단어장 동기화·친구·초대 기능이
전부 멈춥니다. 데이터는 지우지 않고 그대로 보관합니다 —
지우시려면 「계정 삭제」입니다. 다시 시작하시려면 같은 방법으로 로그인하신 뒤 「다시 시작하기」를 직접 누르셔야 합니다. 로그인만으로는 자동으로 다시 시작되지 않습니다. |
계정에 들어가지 못하실 때
이메일은 문의를 받는 수단일 뿐, 계정이 회원님 것이라는 증명이 되지 않습니다. 저희는 이메일 주소를 받지도 저장하지도 않기 때문에, 메일을 보내신 분과 계정을 이어 줄 수 있는 값이 저희에게 없습니다. 그래서 사실 그대로 적습니다 —
- 이메일만으로는 계정 정보를 알려 드리거나, 지우거나, 정지를 풀어 드릴 수 없습니다. 해 드리면 그것은 곧 남의 계정을 여는 통로가 됩니다.
- 로그인이 안 되시면 먼저 네이버·카카오 계정을 복구해 주세요. 그 계정으로 다시 로그인하시면 위의 네 가지를 앱 안에서 그대로 하실 수 있습니다.
- 본인 확인을 위해 실명·전화번호·신분증을 요구하지 않습니다. 요구하는 순간 권리 행사가 오히려 개인정보를 더 받는 통로가 되기 때문입니다.
- 그 밖의 문의(방침 내용, 처리 방식, 이의 제기)는 언제든 위 이메일로 주시면 됩니다.
처리 기간. 이메일로 주신 요청은 받은 날부터 10일 안에 처리하고 결과를 알려 드리는 것을 목표로 합니다. 확인이 더 필요하면 그 사유와 예상 시점을 먼저 알려 드립니다. 요청을 거절해야 하는 경우에는 이유를 적어 알려 드리고, 그에 대해 이의를 제기하실 수 있습니다.
대리인. 법정대리인이나 위임받으신 분도 요청하실 수 있습니다. 이때는 위임 사실을 확인할 수 있는 자료를 요청드릴 수 있습니다.
요청 내용을 어떻게 다루나. 보내 주신 메일 원문은 저희 메일함에만 두고, 서비스 데이터베이스나 공개된 곳(소스 저장소 등)에 옮겨 적지 않습니다. 처리했다는 사실을 남기기 위해 요청 번호 · 요청 종류 · 받은 날 · 처리 기한 · 처리 완료일 · 처리 결과만 따로 기록하며, 여기에는 이름·전화번호·메일 본문을 옮겨 적지 않습니다. 메일 원문은 처리 완료 후 90일, 위 최소 기록은 1년까지 두고 지웁니다 — 이 기간은 법으로 정해진 의무가 아니라 저희가 정한 운영 기준입니다.
권익을 침해당하셨다고 느끼시면 아래에 도움을 요청하실 수 있습니다.
- 개인정보 분쟁조정위원회 — kopico.go.kr (1833-6972)
- 개인정보침해 신고센터 — privacy.kisa.or.kr (국번없이 118)
- 대검찰청 사이버수사과 (1301) · 경찰청 사이버수사국 (국번없이 182)
방침이 바뀌면
내용이 바뀌면 이 페이지의 '마지막 수정' 날짜를 갱신합니다.
문의
함께 읽을 문서
이용약관과 지난 판 문서 보관함 — 가입 화면에서 보여드린 문서의 그때 그 내용 그대로를 판별 값과 함께 보관합니다.