Herkos

Herkos 개인정보 처리방침

최종 수정: 2026년 10월 29일. 표준 URL: https://herkos.app/privacy

번역 안내. 이 문서는 편의를 위한 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.

Herkos Mail, Herkos Calendar, Herkos Notes, Herkos Local Relay는 Nostr 네트워크를 위한 자유·오픈소스 앱이며 Herkos 프로젝트(이하 "우리")가 배포합니다. Herkos Calendar, Herkos Notes, Herkos Local Relay는 아직 개발 중입니다. 이 문서는 앱과 우리 웹사이트가 어떤 데이터를 다루고, 그 데이터가 어디로 가며, 누가 볼 수 있는지 설명합니다. 훑어보는 용도가 아니라 읽으라고 쓴 글입니다. 여기에서 의외라고 느끼는 점이 있다면 privacy@herkos.email 로 알려주세요.

짧은 요약

기기에 남는 데이터

브라우저에는 그런 안전한 저장소가 없습니다. 키는 사이트의 로컬 저장소에 있고 서명할 때마다 JavaScript를 거치므로, 모든 페이지에 접근할 수 있는 확장 프로그램이나 XSS 취약점, 변조된 배포가 키를 읽을 수 있습니다. 설치한 앱과 달리 웹 페이지는 방문할 때마다 새 코드를 내려받습니다. 웹 버전에서는 원격 서명기를 쓰거나, 잃어도 괜찮은 신원을 쓰세요. - 사서함: 복호화된 메일, 첨부파일, 라벨, 폴더, 연락처는 앱이 오프라인에서도 동작하도록 로컬 데이터베이스에 캐시됩니다. 이 데이터베이스는 운영체제가 제공하는 수준을 넘어서는 암호화가 되어 있지 않습니다. 앱 잠금(PIN 또는 생체 인식)은 편의를 위한 장벽이지 저장 데이터 암호화가 아닙니다. Android에서는 앱이 클라우드 백업과 기기 간 백업에서 제외됩니다. - 앱 잠금 PIN: 솔트를 넣고 늘린 해시(PBKDF2)로 저장되며, 평문으로 저장되지 않습니다. Herkos Calendar와 Herkos Notes에는 각각 별도의 PIN이 있으며, 같은 방식으로 저장됩니다. - 캘린더(Herkos Calendar): 여러분이 읽을 수 있는 일정, 목록, 보기 키, 알림은 기기에 캐시되며, 운영체제의 보안 저장소에 보관된 키로 레코드마다 암호화됩니다. 브라우저에서는 캘린더를 메모리에만 두고 매번 릴레이에서 다시 가져옵니다. 알림은 기기가 직접 울립니다. Calendar는 푸시 서버를 쓰지 않습니다. 알림에서 제목을 숨기기로 하면 알림에는 "일정"과 시작 시간만 표시됩니다. Calendar의 키는 Herkos Mail의 키와 따로 보관됩니다(Calendar 절의 "여러분의 계정" 참조). - 노트(Herkos Notes): 노트, 노트의 기록, 노트북, 검색 색인은 기기에 캐시되며, 운영체제의 보안 저장소에 보관된 키로 레코드마다 암호화됩니다. 브라우저에서도 같은 방식으로 사이트용 브라우저 저장소(IndexedDB)에 보관되지만, 키도 브라우저 안에 있으므로 다른 사람도 쓰는 컴퓨터에서는 보호 효과가 적습니다. 브라우저가 사이트의 데이터를 아무것도 저장하지 않으면(비공개 창, 사이트 데이터 차단) 메모리에만 두며, 연결이 없으면 쓸 수 없습니다. 잠근 노트에는 별도의 비밀번호가 생기며, 그것이 없으면 우리를 포함해 아무도 그 노트를 열 수 없습니다. 노트 백업은 여러분이 저장한 곳에만 기록되는 파일이며, 별도의 비밀번호로 암호화됩니다. 자동 사본은 끄지 않는 한 매주 만들어지며, 기기의 폴더(문서 안의 Herkos Notes/backups)에 있는 파일로, 여러분 계정의 키로 암호화됩니다. 최근 다섯 개를 보관하며 어디로도 보내지 않습니다(브라우저에서는 만들지 않습니다). 다른 계정이 여러분과 공유한 노트는 여러분이 보관하거나 버릴 때까지 "받은 노트"에서 기다리며, 기기에 있고 나머지와 마찬가지로 암호화되어 있습니다. - 여러분의 릴레이(Herkos Local Relay): 그 이벤트, 페어링한 앱, 설정, 사본이 가는 곳. 아래의 별도 절을 참조하세요.

설정 → 더보기 → 앱 초기화에서, 또는 계정을 제거해 전부 지울 수 있습니다.

기기를 떠나는 데이터와 수신 대상

이 표는 Herkos Mail에 관한 것입니다. Herkos Calendar, Herkos Notes, Herkos Local Relay는 아래에 각각 별도의 절이 있습니다.

수신자 볼 수 있는 것 시점
Nostr 릴레이(기본 목록은 설정 → 네트워크, 수정 가능) IP 주소, 공개 키, 게시하는 이벤트(프로필, 릴레이 목록, Blossom 서버 목록, NIP-32 라벨, 암호화된 설정), 그리고 수신자로 지정된 암호화 "기프트 랩"과 그 시각. 릴레이는 기프트 랩의 내용을 읽을 수 없습니다. NIP-42 인증을 요구하는 릴레이는 읽기만 해도 여러분의 공개 키를 알게 됩니다. 앱이 동기화하는 동안 항상. 안드로이드에서는 백그라운드 확인이 푸시 서버를 대신할 때, 앱이 닫혀 있어도 약 15분마다 묻습니다.
Blossom 서버(수정 가능) IP 주소와 공개 키, 그리고 32 KB를 넘는 메일과 첨부파일의 암호화된 블롭. 블롭을 복호화할 키는 암호화된 메시지 안에서만 전달됩니다. 큰 메일을 보내거나 열 때.
브리지(기본값 uid.ovh, 수정 가능) 기존 주소(Gmail, Outlook 등)로 보내거나 거기에서 받는 모든 메일의 전체 내용, 그리고 등록한 별칭 이름@bridge. 브리지는 자체 개인정보 약관을 가진 독립 운영자이며 Herkos가 운영하지 않습니다. @bridge 신원을 쓰거나 Nostr 외부 주소로 보낼 때.
NIP-05 서버(입력한 주소의 도메인) 누군가 이름@도메인이 Nostr 사용자인지 물었다는 사실. 사용자@도메인 수신자를 추가할 때.
푸시 서버(api.nmail.li이 기본값이며 상위 Nostr Mail 프로젝트가 운영. 설정 → 알림에서 바꾸거나 완전히 끌 수 있습니다) 공개 키, 기기의 푸시 토큰(UnifiedPush 엔드포인트), 알림 언어, 그리고 대신 릴레이를 지켜보기 때문에 메일을 받은 시각(내용은 아님). 어떤 계정에 알림을 켠 경우에만. 끄면 서버에 구독 삭제를 요청합니다. 서버를 바꾸면 이전 서버에도 같은 삭제를 요청합니다.
예약 DVM(제3자가 운영하는 Nostr 서비스, NostrConfig.schedulerDvm 참조) 공개 키, 게시할 이미 암호화된 메시지, 대상 릴레이, 예약 시각. "나중에 보내기"를 사용할 때만.
원격 서명기 / NIP-46 릴레이(relay.nsec.app 및 대체 서버) 공개 키와 암호화된 서명 요청. bunker나 서명 앱으로 로그인할 때만.
이미지 서버(프로필이나 메일이 가리키는 어떤 서버든) IP 주소와 이미지를 가져온 시각. 프로필 사진은 프로필 사진 불러오기를 켠 경우에만 소유자가 자기 프로필에 적어 둔 주소에서 다운로드됩니다(여러분 계정의 사진은 항상 불러옵니다). 이 경우 그 서버를 운영하는 사람은 여러분이 언제 그 사람의 메시지나 연락처를 보았는지 알 수 있습니다. 메일 안의 이미지는 기본적으로 차단됩니다. 이미지를 불러오면(이미지 불러오기 또는 항상 이미지 불러오기 설정) 그 서버들(흔히 보낸 사람의 서버)은 여러분이 메일을 열었다는 사실과 그 시각을 알게 됩니다. 주소로 추가한 배경 이미지는 그 서버에서 다운로드됩니다. 프로필 사진: 켠 경우에만(여러분 것은 항상). 메일 이미지: 불러올 때만.

Herkos 자체는 이 중 어느 것도 받지 않습니다. 오류 보고나 텔레메트리도 없습니다.

Herkos Calendar: 릴레이가 보는 것

Calendar는 Nostr 릴레이와 통신합니다. 여러분 계정의 릴레이(NIP-65 목록과 받은편지함 목록), 설정 → 릴레이에 있는 릴레이(수정 가능), 그리고 누군가를 초대하거나 초대에 답할 때는 그 사람의 받은편지함 릴레이입니다. 여러분이 직접 조회하는 것(아래)을 빼면 다른 곳과는 통신하지 않으며, 공개 릴레이 색인과도 통신하지 않습니다. 각각이 무엇을 위한 것인지는 아래 "여러분의 계정"에서 설명합니다. Herkos 서버도, 푸시 서버도, 텔레메트리도 없습니다. 모든 릴레이는 여러분의 IP 주소와 각 연결의 시각을 봅니다.

무엇 그것을 저장하는 릴레이가 볼 수 있는 것 볼 수 없는 것
비공개 일정(kind 32678) 공개 키, 그것이 캘린더 일정이라는 사실(kind), 무작위 식별자, 만들거나 마지막으로 바꾼 시각, 대략적인 크기. 여러분의 릴레이에만 저장되며, 참석자들은 그곳에서 찾아봅니다. 그들의 릴레이에는 절대 저장되지 않습니다. 제목, 날짜와 시간, 시간대, 반복, 장소, 설명, 참석자, 알림.
캘린더 목록(kind 32123)과 알림 설정(kind 30078, d=calendar-alarms) 공개 키, 그것들이 존재한다는 사실, 바뀌는 시점. 어떤 일정을 담고 있는지, 그 이름, 보기 키, 여러분의 알림.
초대(기프트 랩, kind 1059) 참석자의 공개 키, 그리고 봉투 안에 캘린더 초대가 들어 있음을 알리는 k=1052 태그(Formstr의 앱을 포함한 캘린더 앱은 이것으로 여러분의 메일을 열지 않고도 초대를 찾습니다). 참석자 자신의 받은편지함 릴레이로만, 일회용 키로, 자체적으로 무작위화한 타임스탬프를 붙여 보내며, 같은 일정에 대한 초대는 무작위 순서로, 각각 앞의 것보다 5~90초 뒤에 나갑니다(첫 번째는 일정 자체보다 뒤에). 릴레이가 버릴 수 있도록 봉투에는 보낸 날로부터 60~90일 사이에서 무작위로 정한 만료일도 붙습니다. 이 날짜는 일정이 언제인지에 대해 아무것도 알려 주지 않습니다. 누가 보냈는지, 어떤 일정인지, 다른 누가 초대받았는지.
초대에 대한 비공개 답장 (기프트 랩, kind 1059, 태그 k=1925) 받는 사람(주최자, 또는 여러분 자신의 사본에서는 여러분)의 공개 키와, 봉투 안에 캘린더 답장이 있다는 사실. 초대와 마찬가지로 받는 사람의 받은편지함 릴레이로만, 일회용 키와 무작위 날짜, 만료일을 붙여 보냅니다. 누가, 어떤 일정에, 무엇이라고 답했는지.
삭제(kind 5) 공개 키와 삭제하는 대상의 식별자. —

NIP-42 인증을 요구하는 릴레이는 여러분의 공개 키를 알게 됩니다. Calendar는 여러분 자신의 릴레이에 있는 여러분 자신의 일정에 대해서, 그리고 여러분 자신의 받은편지함을 읽을 때만 그런 요청에 응합니다. Nostr에서 삭제는 요청입니다. 릴레이는 암호화된 상태 그대로 사본을 계속 보관할 수 있습니다.

일정 안의 어떤 것으로도 숨길 수 없는 것: 모든 초대는 여러분의 IP 주소에서 나가고, 참석자는 각자 자신의 IP 주소에서 여러분의 릴레이로 일정을 가져갑니다. 참석자 여러 명의 받은편지함을 맡고 있는 릴레이는 그들의 초대가 같은 주소에서 왔다는 것을 알 수 있습니다. 그것은 Tor나 VPN으로만 숨길 수 있습니다.

여러분의 계정

Calendar는 계정을 만들지 않습니다. 이미 가지고 있는 Nostr 신원으로, 다음 방법 중 하나로 로그인합니다.

여러분의 릴레이. 로그인할 때 Calendar는 설정 → 릴레이에 있는 릴레이에서 여러분의 목록(NIP-65, kind 10002, 그리고 받은편지함 목록, kind 10050)을 찾습니다. 이는 여러분을 식별하지 않는 별도의 연결로 이루어지며, 인증을 요구하는 릴레이에는 여러분의 키가 아닌 일회용 키로 응합니다. 그 뒤로는:

참석자의 릴레이(2026년 10월 21일 결정). 누군가를 초대하려면 앱이 그 사람이 어디에서 받는지 알아야 합니다. Calendar는 그 사람의 목록(10002와 10050)을 설정 → 릴레이에 있는 릴레이에서만 찾으며, 제3자의 공개 색인(purplepag.es 등)에서는 절대 찾지 않습니다. 그런 서비스는 여러분이 요청을 보내는 주소와 누구에 대해 묻는지, 즉 누구를 초대하는지를 보게 되기 때문입니다. 참석자는 한 명씩, 무작위 순서로, 각자 일회용 키를 쓰는 별도의 연결에서 조회하므로, 그 릴레이들은 누가 누구와 함께 초대받았는지 알 수 없습니다. 그 릴레이들이 보는 것은 여러분의 IP 주소와 조회한 각 사람의 공개 키입니다. 어떤 사람의 목록이 그 릴레이들에 없으면, 앱은 보내기 전에 그 사람을 "알려진 받은편지함 없음"으로 표시하며, 초대는 그 사람에게 도달하지 않습니다. 그 사람을 찾으려면 그 사람이 목록을 게시하는 릴레이를 설정 → 릴레이에 추가하세요.

기기 간에 동기화되는 것은 항상 여러분 앞으로 암호화되어 여러분의 쓰기 릴레이에 저장됩니다: 캘린더 목록(그 일정들의 키 포함), 알림 설정(d=calendar-alarms), 팔로우하는 캘린더(d=calendar-subscriptions), 그리고 무시한 초대나 캘린더에서 뺀 다른 사람의 일정(kind 30078, d=calendar-declined: 어떤 일정인지와 언제인지만 담기며, 제목은 절대 담기지 않습니다). 릴레이는 그것들이 존재한다는 사실과 바뀌는 시점을 볼 뿐, 내용은 볼 수 없습니다. 기기가 울리는 알림은 현재 로그인한 계정의 것이며, 이전 계정의 것은 절대 아닙니다.

키 사본. Calendar는 사본 저장을 권합니다. 캘린더 목록과 그 일정들의 키를 담은 파일로, 이를 위해 고른 비밀번호로 암호화됩니다(NIP-49의 암호 방식). 여러분이 저장한 곳에만 기록되며, 어떤 릴레이나 서버로도 가지 않습니다. 파일 이름에는 날짜가 들어가고, 계정은 절대 들어가지 않습니다. 사본 저장을 알려 주기 위해 기기는 두 날짜만 기억합니다. 마지막 사본과 마지막 "나중에"입니다.

로그아웃하면 먼저 무엇을 잃게 되는지 보여 주고 사본 저장을 권합니다. 그다음 이 기기에서 여러분의 키(또는 bunker 연결)와 저장된 캘린더를 삭제합니다. 게시된 것은 암호화된 채 릴레이에 남습니다. 서명 앱에서 준 권한은 그 앱에서 철회합니다.

여러분의 선택으로 공개되는 것

직접 켜기 전까지는 꺼져 있으며, 켜기 전에 각 기능이 무엇을 드러내는지 앱이 보여 줍니다.

Herkos Calendar는 다른 앱이 작성한, 여러분의 공개 일정에 대한 공개 응답(참석 응답 RSVP, kind 31925, 그리고 철회, kind 84)을 읽습니다. 둘 다 직접 작성하지는 않습니다.

여러분이 직접 조회하는 것

이 연결은 여러분이 요청할 때만 일어납니다.

Herkos Notes: 릴레이가 보는 것

Notes는 Nostr 릴레이와만 통신하며, 다른 누구와도 통신하지 않습니다. Herkos 서버도, 푸시 서버도, 텔레메트리도 없습니다. 모든 릴레이는 여러분의 IP 주소와 각 연결의 시각을 봅니다.

어떤 릴레이인지. 계정에 비공개 릴레이 목록(kind 10013, NIP-37이 설명하는 목록)이 있으면 Notes는 그 안의 릴레이를 있는 그대로 사용하며, 그 목록을 절대 덮어쓰지 않습니다. 이 목록은 Notes 설정에 있는 릴레이와 여러분이 게시하는 릴레이(여러분의 NIP-65 목록)에서 찾습니다. 목록이 없으면 Notes 설정에 있는 릴레이를 사용합니다. 기본값은 relay.formstr.app, nos.lol, relay.primal.net이며, 최대 여덟 개까지, 모두 수정할 수 있습니다. 설정에는 한 번 눌러 추가할 수 있는 알려진 릴레이 목록도 있으며, 추가하지 않는 한 그중 어느 것에도 연결하지 않습니다. 릴레이가 암호화되지 않은 연결인 ws://일 수 있는 것은 기기나 집 네트워크에 있을 때(localhost, 사설 주소, .local 이름)뿐입니다. 노트는 여전히 암호화되어 전달되지만, 그 네트워크에 있는 누구나 릴레이가 보는 것(아래 표)을 볼 수 있습니다. Notes는 여러분이 요청하지 않는 한(릴레이 → 내 비공개 릴레이 목록으로 저장) 자체 릴레이 목록을 게시하지 않습니다. 요청하면 이 릴레이들을 여러분의 10013으로, 여러분의 키로 암호화해, 목록을 찾는 바로 그 릴레이에 게시하고, Notes에서 바꾸는 내용에 맞춰 최신 상태로 유지합니다. 릴레이는 여러분의 공개 키, 목록이 있다는 사실과 그것이 바뀌는 시점을 볼 뿐, 그 안의 릴레이는 보지 못합니다. 다른 앱이 쓴 목록은 절대 덮어쓰지 않으며, Notes는 그 목록을 그대로 사용합니다. 이 릴레이 중 하나가 이 기기에서 실행되면(ws://127.0.0.1 또는 ws://localhost 주소, Citrine 앱 등), Notes는 그 릴레이에도 여러분의 노트, 노트북, 삭제의 사본을 서명된 그대로, 여전히 암호화된 상태로 남깁니다. 이를 위해 기기 밖으로 나가는 것은 없습니다. Notes는 그 릴레이에서 절대 읽지 않으며, 그 릴레이에만 있는 노트는 업로드된 것으로 치지 않습니다. 그 릴레이를 읽는 기기의 다른 앱은 어떤 릴레이든 볼 수 있는 것을 봅니다.

무엇 그것을 저장하는 릴레이가 볼 수 있는 것 볼 수 없는 것
노트(kind 31234, NIP-37) 공개 키; 무작위 식별자(d). 무작위 숫자로 만들며 제목으로는 절대 만들지 않습니다; k=30023 태그. 모든 노트에서 같으므로 무엇을 쓰는지에 대해 아무것도 알려 주지 않습니다; 마지막으로 바꾼 시각; 대략적인 크기. 제목, 본문, 태그, 노트북, 고정 여부, 즐겨찾기 여부, 휴지통에 있는지 여부, 만든 시각.
체크포인트(kind 1234), 노트의 기록 공개 키, 어떤 노트에 속하는지(그 a 태그가 노트의 식별자를 가리킵니다), 만든 시각. 그때 노트에 적혀 있던 내용.
노트북(kind 30078) 공개 키, 목록이 존재한다는 사실, 바뀌는 시점. 식별자는 여러분의 공개 키에서 도출되므로 모든 기기에서 같습니다. 노트북의 이름, 개수, 각 노트북에 어떤 노트가 들어 있는지.
삭제(kind 5) 공개 키와 삭제하는 대상의 식별자: 노트와 그 체크포인트. —
공유하는 노트(kind 1059, NIP-59 기프트 랩) 받는 계정의 공개 키(p); k=30023 태그; 무작위로 최대 이틀 앞당긴 날짜; 대략적인 크기. 여러분의 키가 아니라 그것을 위해 만들어 한 번만 쓰는 키로 서명됩니다. 누가 보냈는지, 언제 보냈는지, 제목과 본문. 그 안에는 봉인되어(kind 13) 그 계정만을 위해 암호화된 여러분의 공개 키와 노트가 들어 있습니다. 그 계정만 열 수 있으며, 그 계정은 누가 보냈는지 알게 됩니다.

숨길 수 없는 것. 노트의 d와 k, 체크포인트의 a는 읽을 수 있어야 합니다. 릴레이가 노트를 더 새로운 버전으로 바꾸고 그 기록을 찾는 데 필요하기 때문입니다. 따라서 릴레이는 노트가 몇 개인지 셀 수 있고, 각 노트를 언제 편집하는지와 얼마나 자주 편집하는지 볼 수 있습니다. Notes는 이를 보이지 않게 하는 것이 아니라 더 거칠게 만듭니다. 노트마다 편집 1시간당 체크포인트를 최대 하나, 바뀐 노트를 닫을 때 하나, 충돌을 해결할 때 양쪽 각각 하나씩 저장하며, 저장할 때마다 하나씩 만드는 일은 절대 없으므로, 여러분의 글쓰기 리듬이 분 단위로 게시되지 않습니다.

노트가 절대 만료되지 않는 이유. NIP-37 초안에는 expiration 태그가 붙을 수 있으며(그 예시는 90일), 이를 따르는 릴레이는 그 날짜에 이벤트를 삭제합니다. 노트북에서 이는 아무도 삭제를 요청하지 않은 노트를 잃는다는 뜻이므로, Notes는 이 태그를 절대 쓰지 않습니다. 그 이면으로, 노트는 여러분이 삭제할 때까지 암호화된 채 릴레이에 남으며, Nostr에서 삭제는 요청입니다. 릴레이는 사본을 보관할 수 있습니다.

노트 공유. Notes는 사본을 상대 계정이 읽는다고 밝힌 릴레이(그 계정의 NIP-17 릴레이, kind 10050, 없으면 NIP-65 목록의 읽기 릴레이로, 여러분의 릴레이에서 찾습니다)와 여러분 자신의 릴레이로, 최대 여덟 개까지 보냅니다. 전달되는 것은 노트의 내용(제목, 본문, 태그)이며, 노트북, 표시, 휴지통은 전달되지 않습니다. 이후에 바꾼 내용도 보내지 않습니다. 상대 계정은 자기 사본을 계속 가집니다. Notes는 그것을 되돌려받을 수 없으며, 여러분의 노트를 삭제해도 그 사본은 삭제되지 않습니다. 받을 때는 Notes가 k=30023이 붙은, 여러분의 키 앞으로 온 기프트 랩을 여러분의 릴레이에 요청해 기기에서 엽니다. 버리면 기기에서만 지워집니다. 기프트 랩은 아무도 보관하지 않는 키로 서명되므로 두 사람 모두 릴레이에 삭제를 요청할 수 없으며, 기프트 랩은 릴레이에 남지만 여러분 말고는 아무도 읽을 수 없습니다.

검색은 로컬입니다. 모든 것이 암호화되어 있으므로 어떤 릴레이도 여러분 대신 검색할 수 없습니다. Notes는 노트를 내려받아 복호화하고 기기에서 색인을 만듭니다. 찾는 단어는 어디로도 보내지지 않습니다.

NIP-42 인증을 요구하는 릴레이는 여러분의 공개 키를 알게 됩니다. Notes는 여러분의 계정으로 응합니다. Notes는 또한 다른 앱이 여러분의 키로 작성한 초안(kind 31234와 그보다 오래된 30024)을 여러분의 릴레이에 요청해 읽기 전용으로 보여 주며, 이때 아무것도 게시하지 않습니다. 원격 서명기(bunker 또는 Nostr Connect)로 로그인하면 그 릴레이가 여러분의 암호화된 서명 요청을 전달하며, Notes는 원격 서명기에 위의 kind만 서명하도록 요청합니다(공유하는 노트의 봉인, kind 13도 포함됩니다. 그 기프트 랩은 한 번만 쓰는 키로 기기에서 서명됩니다). Android 휴대폰의 서명 앱(NIP-55, 예: Amber)을 쓰면 Notes는 휴대폰에서 그 앱과 직접 통신하며 중간에 릴레이가 없습니다. 같은 것만 요청하고, 돌아온 서명된 이벤트는 모두 사용하기 전에 확인합니다.

Herkos Local Relay: 보관하는 것과 통신하는 상대

Herkos Local Relay는 여러분 자신의 기기에서 실행되는 Nostr 릴레이로, Herkos 앱과 다른 모든 Nostr 클라이언트를 위한 것입니다. 그 뒤에 우리 서버는 없으며, 우리에게 아무것도 보내지 않습니다.

기기에 보관하는 것. 여러분의 앱이 이 릴레이에 쓰는 이벤트와 이 릴레이가 여러분의 릴레이에서 가져오는 이벤트를, 운영체제의 보안 저장소에 보관된 키로 암호화한 데이터베이스에 저장합니다. 그 옆에는 페어링한 앱과 각 앱이 할 수 있는 일, 릴레이의 설정(settings.json: 포트, 할당량, 정리, 세션 로그를 켰는지 여부), 백업의 설정(backups.json: 주기, 폴더, 백업을 암호화하는 대상인 공개 키와 그 솔트, 마지막 백업을 만든 시각)이 있습니다. 이 중 어느 것도 비밀이 아니며, 백업의 비밀번호는 절대 저장되지 않습니다. Windows와 Linux에서는 실행 중에 앱 폴더의 relay.json이 어느 포트에서 연결을 받는지 알려 주어, Herkos 앱이 릴레이를 찾을 수 있게 합니다. 앱을 제거하면 데이터베이스가 삭제되고, 그 키는 쓸모가 없어집니다.

누가 연결할 수 있는지. 127.0.0.1에서만 연결을 받습니다(포트는 바꾸지 않는 한 4873). 기기 밖에서는 아무것도 닿을 수 없습니다. 기기의 어떤 앱이든 그 주소에 닿을 수 있으므로, 앱이나 웹 페이지가 쓰기 전에는 페어링, 즉 화면에서 여러분의 승인을 받아야 하며, 페어링되지 않은 웹 페이지는 거부됩니다. 앱의 권한을 철회하면 그 앱은 즉시 연결이 끊어집니다. 비공개 이벤트(초안, 비공개 목록, 알림, 여러분이 받는 봉인된 봉투)는 그것이 속한 키를 가지고 있음을 NIP-42로 증명하는 상대에게만 전달됩니다. 로컬 네트워크와 Tor는 아직 쓸 수 없습니다. 지원되더라도 여러분이 켜기 전까지는 꺼져 있으며, TLS 또는 어니언 서비스, 인증, 허용된 키 목록이 필요합니다.

누구 볼 수 있는 것 시점
여러분의 릴레이(여러분의 NIP-65 목록에 있는 것) IP 주소; 릴레이가 NIP-42 인증을 요구할 때는 공개 키; 이 릴레이를 통해 게시하는 공개 이벤트; 그리고 동기화를 위해 여러분의 어떤 이벤트에 대해 묻는지. 게시할 때, 그리고 동기화할 때(릴레이가 지원하면 negentropy, NIP-77로).
여러분이 메시지를 보내는 사람의 받은편지함 릴레이(그 사람의 NIP-17 목록, kind 10050, 없으면 그 사람의 NIP-65 목록의 읽기 릴레이) IP 주소와 그 사람 앞으로 된 봉인된 봉투(NIP-59). 무작위로 기다린 뒤 보냅니다. 여러분 자신의 릴레이로는 절대 보내지 않습니다. 앱이 이 릴레이를 통해 비공개 메시지나 초대를 보낼 때.

어떤 사람이 어디에서 받는지 찾을 때는 여러분의 릴레이에 묻습니다. 여러분의 비공개 이벤트(초안, 비공개 목록, 알림)는 절대 기기를 벗어나지 않습니다. 자기 주소를 절대 알리지 않으며(누구의 NIP-65 목록에도 없습니다), NIP-11 문서는 여러분이 누구인지 밝히지 않고, 분석 도구, 텔레메트리, 오류 보고도 없습니다. Android에서는 알림과 그 중지 버튼이 있는 서비스로 실행됩니다. 연결 없이 10분이 지나면 잠들고, Herkos 앱이 기기 안에서 직접 깨우며, 푸시 서버는 쓰지 않습니다.

세션 로그는 기본적으로 꺼져 있습니다. 켜면 메모리에만, 최근 500줄이 보관되며, 릴레이가 멈추면 지워집니다. 연결, NIP-42 인증, 받아들이거나 거부한 이벤트와 요청된 kind를 kind와 id의 앞부분으로 기록하며, 내용은 절대 기록하지 않습니다.

백업. 저장소 전체의 암호화된 백업은 여러분이 고른 곳, 즉 기기의 폴더나 외장 디스크에만 기록됩니다. 클라우드 클라이언트의 폴더(OneDrive, Google Drive, Dropbox, iCloud, Nextcloud, Herkos Drive 등)는 거부됩니다. 백업은 여러분 자신의 비밀번호로 암호화되며(scrypt와 XChaCha20-Poly1305), 예약된 백업은 그 비밀번호에서 나오는 공개 키를 대상으로 암호화되므로 비밀번호 없이 만들어집니다. 최근 일곱 개를 보관합니다. 비밀번호가 없으면 우리를 포함해 아무도 백업을 열 수 없으며, 비밀번호를 잃으면 백업도 잃습니다. JSONL 내보내기는 암호화되지 않습니다. 비공개 이벤트가 평문으로 담기며, 앱은 쓰기 전에 그 사실을 알립니다.

정리는 다른 사람의 이벤트만 삭제합니다. 여러분의 이벤트, 여러분 앞으로 온 봉투, 여러분의 앱이 보호하는 kind는 절대 삭제하지 않으며, 할당량에 따른 정리는 지난 하루 안에 만든 백업이 있을 때만 합니다. 그리고 Nostr의 어디에서나 그렇듯 삭제는 요청입니다. 이미 다른 릴레이로 간 것은 그곳에 남을 수 있습니다.

우리 웹사이트와 Cloudflare

herkos.app(herkos.app/e/ 포함), app.herkos.app(Mail의 웹 버전), calendar.herkos.app과 notes.herkos.app (Calendar와 Notes의 웹 버전, 공개되면), fdroid.herkos.app(우리 F-Droid 저장소)은 Cloudflare (Cloudflare Pages와 R2)가 제공하는 정적 파일입니다. 여느 웹 호스트와 마찬가지로 Cloudflare는 여러분의 IP 주소, 브라우저의 사용자 에이전트, 요청한 주소(# 뒷부분 제외), 시각을 받으며, 자체 개인정보 처리방침에 따라 이를 로그에 보관할 수 있습니다.

우리는 쿠키를 설정하지 않고 분석 도구도 쓰지 않습니다. 페이지와 웹 앱 자체의 파일은 이 도메인에서만 제공되며(그다음 웹 앱은 위에서 설명한 릴레이와 서버에 연결합니다), 우리는 방문자별 로그를 보지 않습니다. Releases의 다운로드는 GitHub에서 제공되며, GitHub도 자체 정책에 따라 같은 종류의 데이터를 봅니다.

설계상 공개되는 것

Nostr는 공개 네트워크입니다. 다음 항목은 여러분이 쓰는 릴레이에 질의하는 누구에게나 보이며, 공개 키와 연결됩니다.

선택권과 권리

변경

앱의 동작이 바뀌면 이 문서를 수정하고 맨 위에 날짜를 기록합니다. 기준이 되는 원본은 저장소의 PRIVACY.md이며, 게시된 페이지는 그 사본입니다.

문의: privacy@herkos.email · https://herkos.app

다른 언어

English · Español · Bahasa Indonesia · Català · Čeština · Deutsch · Français · Italiano · Magyar · Nederlands · Polski · Português (Portugal) · Português (Brasil) · Română · Slovenčina · Suomi · Svenska · Türkçe · 中文 · Ελληνικά · हिन्दी · 日本語 · 한국어 · Русский · Українська