> For the complete documentation index, see [llms.txt](https://docs.wepin.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wepin.io/wepin/architecture/sign.md).

# 서명

<figure><img src="https://834152021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGcQ5iayny62s5KuY3VoA%2Fuploads%2FVGRb3ikWBWCBkB0w4nTB%2Fsign.png?alt=media&amp;token=051c2b40-e2b0-42c0-baee-c43695649135" alt=""><figcaption></figcaption></figure>

키 생성 절차와 마찬가지로, 로그인한 사용자는 암호화된 키가 저장된 스토리지에 접근할 수 있는 토큰을 받아 서명이 필요한 트랜잭션과 함께 위핀 서버에 요청합니다. 서버는 사용자의 토큰을 이용하여 암호화된 개인키를 가져 온 후 사용자가 제출한 PIN을 활용하여 개인키를 복호화 합니다. 복호화된 키로 트랜잭션에 서명한 후 개인키는 다시 안전하게 암호화하여 클라우드에 저장됩니다.

서명을 위한 연산도 마찬가지로 신뢰 실행 환경에서만 실행됩니다. 따라서 서명 생성시 메모리에 로드되는 개인키는 위핀 서버에서 접근할 수 없기 때문에, 서버는 개인키 정보를 알 수 없습니다. 서버는 단지 연산을 실행해주는 역할을 할 뿐, 개인키의 정보는 공개되지 않으며, 거래에 서명하는 프로토콜 전 과정에서 암호화된 채로 상호 작용합니다.
