본문으로 건너뛰기

보안과 개인정보

공개 체인 증거와 비공개 subject 데이터는 분리해 저장한다.

공개·비공개 경계

구현됨

체인 transaction은 공개 사실이다. 그 transaction과 특정 사용자의 관계는 공개 사실이 아니다.

객체성격
ChainTransaction, TransactionInclusion, TransactionExecution공개 체인 사실
AccountTransactionLink, Observation비공개, subject 범위의 관계

그래서 동일 transaction이 사용자의 여러 wallet에서 나타나도 transaction과 execution은 하나씩만 만들어지고, account별 Link와 Observation만 달라진다.

강제 규칙은 이것이다. 공개 execution artifact는 provider 실행 증거만 담는다. subjectId, account ID, ownership window를 포함해서는 안 된다. 이것이 없으면 공유 execution artifact가 바로 그 공유되는 성질 때문에 사용자와 transaction의 연관을 노출한다.

Schema 안의 개인정보

구현됨

schema에는 원본 개인정보를 넣지 않고 불변 artifact의 위치와 hash만 기록한다. API 응답, PDF, CSV, 수동 입력 묶음 같은 원문 payload는 DB나 object storage에 두며 schema 데이터에 복제하지 않는다.

SourceArtifact는 위치와 전체 파일 hash를 갖는다. SourceRecord는 좌표와 record hash를 갖는다. 어느 쪽도 내용을 갖지 않는다.

JIT daemon의 접근 제어

구현됨

Go gRPC daemon jitd는 다음을 구현한다.

  • Unix peer UID 또는 mTLS subject 기반 접근 제어
  • 로그와 오류 경로에서의 secret redaction
  • health endpoint와 graceful shutdown

사용자가 제공하는 사실

주소 소유, 송금 목적, 요청하지 않은 입금, 알려진 데이터 누락처럼 관측만으로 확정할 수 없는 사실은 추론하지 않고 UserContextAssertion으로 기록한다.

역도 성립한다. 사용자에게 세무 정책이나 lot 계산법을 선택하게 하지 않는다. assertion은 사용자가 아는 것을 담지, 사용자가 원하는 결과를 담지 않는다.

소유권과 제외

accepted ownership 기간은 같은 account에서 겹칠 수 없지만, 겹치지 않는 여러 기간은 허용한다. 통제 상실 후 재획득 같은 경우다.

사용자가 알려진 account를 이번 발행 범위에서 제외하면 manifest에 account, 결정 주체, 사유, 근거를 공개한다. 알려지지 않은 외부 주소를 제외 대상으로 가장하지 않는다. 그런 전송은 외부 또는 미확정 상태로 남는다.

온체인 payload 경계

확인되지 않음

의도한 GIWA 설계는 비식별 commitment와 revision 상태만 기록한다. 거래 원문, 지갑 목록, 금액, 개인정보는 넣지 않는다.

이 경계는 설계됐지만 검증되지 않았다. contract도 transaction도 아직 없기 때문이다. 실제 배포에서 확인하는 일은 현재 제약에 정리했다.

제보

보안 취약점은 공개 이슈로 등록하지 않는다. 저장소가 안내하는 비공개 제보 채널을 사용한다.