저장증명 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:유토큰 로고.png|썸네일|200픽셀|'''[[유토큰]]'''(YOU token)]]
+
'''저장증명'''(PoS; Proof of Storage)이란 증명자(prover)가 자신의 [[하드디스크]] 여유 공간에 [[데이터]]를 저장하고, 검증자(verifier)가 그것을 승인 또는 거절하는 방식으로 작동하는 [[합의 알고리즘]]이다. 이런 점에서 저장증명은 '''공간증명'''(Proof of Space)이라고도 한다. 저장증명은 [[용량증명]] 합의 알고리즘과 유사하다.
 
 
'''저장증명'''(PoS; Proof of Storage)이란 증명자(prover)가 자신의 [[하드디스크]] 여유 공간에 [[데이터]]를 저장하고, 검증자(verifier)가 그것을 승인 또는 거절하는 방식으로 작동하는 [[합의 알고리즘]]이다. 이런 점에서 저장증명은 '''공간증명'''(Proof of Space)이라고도 한다. 저장증명은 [[용량증명]] 합의 알고리즘과 유사하다. 저장증명 합의 알고리즘을 채택한 암호화폐에는 [[유토큰]](YOU token)이 있다.
 
  
 
==개요==
 
==개요==
17번째 줄: 15번째 줄:
 
논문의 핵심은, 서버가 M을 모르는 상태에서 Hash(M∥C)를 추측할 수는 없으므로, 서버가 M을 온전하게 저장하지도 않고 마치 저장한 척 클라이언트를 속일 수 없다는 것이다. 그러나 여기에는 함정이 있다. 현실적으로 해시는 입력을 [[블록]] 단위로 처리하면서 각 블록 사이의 중간 연쇄 값을 계산하는 반복 해시 함수일 것이다. 예를 들어 해시가 SHA-256이고, M이 512비트라고 하면 서버는 클라이언트를 속일 수 있다. 어떻게 그럴까? 서버는 M의 첫 512비트 블록 M₁과 SHA-256의 초기치 H₀을 이용해서 연쇄값 H₁=Compress(H₀, M₁)을 계산한다. 그런 다음에는 그 H₁을 메모리에 저장하고, M 자체는 폐기해 버린다. 그러면 서버는 더 이상 M을 저장한 상태가 아니다.<ref name="장필리프 오마송">장필리프 오마송, 〈[https://play.google.com/store/books/details?id=nNRmDwAAQBAJ&rdid=book-nNRmDwAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport 처음 배우는 암호화: 기초 수학부터 양자 컴퓨터 이후까지, 암호하그이 현재와 미래]〉, 《구글도서》, 2018-07-31</ref>
 
논문의 핵심은, 서버가 M을 모르는 상태에서 Hash(M∥C)를 추측할 수는 없으므로, 서버가 M을 온전하게 저장하지도 않고 마치 저장한 척 클라이언트를 속일 수 없다는 것이다. 그러나 여기에는 함정이 있다. 현실적으로 해시는 입력을 [[블록]] 단위로 처리하면서 각 블록 사이의 중간 연쇄 값을 계산하는 반복 해시 함수일 것이다. 예를 들어 해시가 SHA-256이고, M이 512비트라고 하면 서버는 클라이언트를 속일 수 있다. 어떻게 그럴까? 서버는 M의 첫 512비트 블록 M₁과 SHA-256의 초기치 H₀을 이용해서 연쇄값 H₁=Compress(H₀, M₁)을 계산한다. 그런 다음에는 그 H₁을 메모리에 저장하고, M 자체는 폐기해 버린다. 그러면 서버는 더 이상 M을 저장한 상태가 아니다.<ref name="장필리프 오마송">장필리프 오마송, 〈[https://play.google.com/store/books/details?id=nNRmDwAAQBAJ&rdid=book-nNRmDwAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport 처음 배우는 암호화: 기초 수학부터 양자 컴퓨터 이후까지, 암호하그이 현재와 미래]〉, 《구글도서》, 2018-07-31</ref>
  
클라이언트가 무작위 시도값 C를 보내면 서버는 C를 적절히 채워서 완전한 블록을 만든 후 Compress(H₁, C)를 계산하고, 그것을 Hash(M∥C)의 결과로서 클라이언트에게 보낸다. 클라이언트는 이를 믿을 수밖에 없다. 서버가 보낸 것이 실제로 Hash(M∥C)의 정확한 값이기 때문이다. 따라서 클라이언트는 서버가 자신의 파일을 잘 저장하고 있다고 믿게 된다. 그러나 앞에서 언급했듯이 서버는 파일을 이미 폐기해 버렸을 수 있다. 이 요령은 SHA-1과 SHA-2뿐만 아니라 SHA-3과 BLAKF2에도 통한다. 해결책은 간단하다. Hash(M∥C)가 아니라 Hash(C∥M)을 맞추어 보도록 프로토콜을 수정하면 된다.<ref name="장필리프 오마송"></ref>
+
클라이언트가 무작위 시도값 C를 보내면 서버는 C를 적절히 채워서 완전한 블록을 만든 후 Compress(H₁, C)를 계산하고, 그것을 Hash(M∥C)의 결과로서 클라이언트에게 보낸다. 클라이언트는 이를 믿을 수밖에 없다. 서버가 보낸 것이 실제로 Hash(M∥C)의 정확한 값이기 때문이다. 따라서 클라이언트는 서버가 자신의 파일을 잘 저장하고 있따고 믿게 된다. 그러나 앞에서 언급했듯이 서버는 파일을 이미 폐기해 버렸을 수 있다. 이 요령은 SHA-1과 SHA-2뿐만 아니라 SHA-3과 BLAKF2에도 통한다. 해결책은 간단하다. Hash(M∥C)가 아니라 Hash(C∥M)을 맞추어 보도록 프로토콜을 수정하면 된다.<ref name="장필리프 오마송"></ref>
 
 
== 특징 ==
 
* 하드디스크 저장장치를 이용해 증명자와 검증자의 역할을 나뉘어 검증하는 방식을 말하며 [[공간증명]]이라고도 불린다.
 
* 증명자는 하드디스크에 데이터를 저장 하면 검증자에게 소량의 데이터가 주어진다.
 
* 이 때 검증자는 하드디스크의 데이터를 승인유무를 결정할 수 있고 이를 통해 토큰을 획득할 수 있다.
 
* 주로 클라우드 시스템에 적용되며 서버와 클라인언트간의 데이터 검증시 사용하게 된다.
 
* 저장증명을 사용하는 암호화폐로는 [[유토큰]](YOU Token)이 있다.<ref>장석만, 〈[https://www.a-ha.io/questions/47f01d675d6178cfbfaae92692449a72 Q. 저장증명 (Proof of Storage)합의 알고리즘에 대해 궁금합니다.]〉, 《아하 지식인》, 2019-08-03</ref>
 
  
 
{{각주}}
 
{{각주}}
30번째 줄: 21번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
* Keda Che, "[https://ulabs.tech/images/Universal-Labs-WhitePaper.pdf Universal Labs White Paper V.1.3 (Draft)]", 2018-05-25
 
* Keda Che, "[https://ulabs.tech/images/Universal-Labs-WhitePaper.pdf Universal Labs White Paper V.1.3 (Draft)]", 2018-05-25
* 히주, 〈[https://blog.naver.com/rlagmlwn1013/221473677194 (암호 스터디 #6)해시 함수]〉, 《네이버 블로그》, 2019-02-24
 
* 장필리프 오마송, 〈[https://play.google.com/store/books/details?id=nNRmDwAAQBAJ&rdid=book-nNRmDwAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport 처음 배우는 암호화: 기초 수학부터 양자 컴퓨터 이후까지, 암호학의 현재와 미래]〉, 《구글도서》, 2018-07-31
 
* 장석만, 〈[https://www.a-ha.io/questions/47f01d675d6178cfbfaae92692449a72 Q. 저장증명 (Proof of Storage)합의 알고리즘에 대해 궁금합니다.]〉, 《아하 지식인》, 2019-08-03
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
39번째 줄: 27번째 줄:
 
* [[유토큰]]
 
* [[유토큰]]
  
{{합의 알고리즘|검토 필요}}
+
{{알고리즘|토막글}}
 +
 
 +
[[분류:합의 알고리즘]]

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)