ann custom_top_html:no
default debug random = 1 / type = READ / detected = READ

SCRY.INFO 언더라인 더블체인 기술에 대한 공유

 

1.배경

Scry Chain 프로젝트 서버에서는 더블 체인으로 구성되어 있으며 서명 알고리즘에서 우리는 BIP143의 알고리즘을 선택하였다.SegWit 중 VERSION 0 은 BIP43 서명 인증 메커니즘으로 효율성을 높일수 있지만 BIP43S 알고리즘은 일반적인 거래에서 사용되지는 않는다.우리는 일반적인 거래중의 서명과 인증에 대해 최적화를 하였으며 BIP143의 서명 및 인증 메커니즘을 사용하여 효율성을 높일수 있다.

 

    1.1 서명 알고리즘

비트코인은 ECDSA (타원곡선 알고리즘)의 디지털 서명과 알고리즘을 사용 하였으며 비트코인 중에서는 총 3가지의 용도가 있다고 볼수 있다.

1. 서명으로 개인 키 및 거래중 출금된 금액의 소유자라는 것을 증명할 수 있다.

2. 승인된 증명에서는 부인방지(否認防止) 성질을 갖고 있으며 즉 거래에 대한 부인을 방지 할수 있다.

3. 서명은 위조가 불가하며,거래 증명(거래에 대한 구체적인 부분)은 서명후 누구도 수정할 수 없다.

디지털 서명은 두 부분으로 나누어져 있다.

1. 개인 키를 사용하여 거래의 hash에 대한 서명.

2. 주어진 공개 키 및 메시지로 모든 사람이 서명에 대한 인증을 허락.

 

  • 서명 알고리즘

비트코인 알고리즘:

Sig = Fsig( Fhash(m), dA )

그중에서:

Da는 서명 개인키

M 는 거래(혹은 다른 부분)

Fhash 는 해시함수

Fsig 는 서명 알고리즘

Sig 는 결과 서명

전부의 서명 과정에서 Fhash 와 Fsig 두개의 함수가 주어져 있다.

 

  • Fhash함수

Fhash 함수는 거래시의 Hash를 생성할 수 있으며,우선적으로 거래를 직렬화(serialize) 하여야 하며 직렬화후의 2진 데이터(binary data)에 의거하여 SHA256 함수로 거래 Hash를 계산할 수 있다.일반적인 거래(단일 입력와 단일 출력) 과정은 다음과 같다.

거래의 직렬화(serialize):

1. nVersion 거래버전

2. InputCount 입력 수량

3. Prevouts로 입력된 UTXO에 직렬화 진행

4. OutputCount 출력 수량

5. Outpoint로 출력된 UTXO에 직렬화 진행

6. nLocktime 거래 잠금 시간

7. 1~6번의 과정을 거쳐 생성된 데이터로 2번의 SHA256 계산을 진행한다.

 

  • Fsig함수

fsig함수의 서명 메커니즘은 타원곡선 알고리즘으로 기반된 것이다.타원곡선에서 암호화 진행시 한 개의 K값을 얻을 수 있다.K값에 의거하여 알고리즘은 임시적인 공개 키 및 개인 키(K,Q)를 생성할 수 있다.임시 공개 키Q의 X좌표로 한 개의 R값을 얻을 수 있으며 공식은 다음과 같다.

S=K-1 *(Hash(m) + dA *R) mod p

그중에서:

K는 임시 개인 키

R는 임시 공개 키

Da는 서명 개인 키

M는 거래 데이터

P는 타원곡선의 주요 순서

이 함수는 한 개의 S값을 생성할 수 있다.

타원곡선에서 암호화를 진행시 한 개의 K값을 얻을수 있다.동일한 K값을 반복적으로 사용시 개인 카가 노출 될 위험이 있으며 K값을 노출되지 않도록 엄격히 보관해야 한다.비트코인은 FRC6979규범으로 확실성을 보장하며,SHA256에 의하여 K값의 안전성을 보장할 수 있다.공식은 다음과 같다.

K  =SHA256(dA+HASH(m))

그중에서:

Da는 개인 키

M는 메시지

(R,S)두 값으로 최종적인 서명을 이루어 질수 있다.

 

  • 서명 인증

인증 과정은 서명으로 역함수를 생성하는 과정으로 볼수 있으며 공식은 다음과 같다

P=S-1 *Hash(m)*G +S-1*R*Qa

그중에서:

R와 S는 서명 값

Qa는 사용자(서명자)의 공개 키

M는 서명된 거래 데이터

G는 타원곡선의 발생점

 

공식에서는 메시지에 의거하여(거래 및 부분의 Hash값),서명자의 공개 키와 서명(R,S)으로 한 개의 P값을 계산할 수 있다.이 값은 타원곡선의 한점이며,만약에 이점의 X좌표=R 일때 서명은 유효적인 것으로 알수 있다.

 

   1.2 Bip143설명

비트코인은 4개의 ECDSA(타원곡선 디지털 서명 알고리즘) 서명 인증 연산 코드를 갖고 있다(sigops): CHECKSIG,CHECKSIGVERIFY,CHECKMULTISIG,CHECKMULTISIGVERIFY.한번 거래의 요약 정보는 2번의 SHA256를 진행하게 된다.

비트코인의 원시적인 디지털 서명 개요 알고리즘은 최소 2가지의 단점은 존재하고 있다.

● 서명 데이터 인증때의 hash와 거래때의 바이트 크기 비율은 같다.서명 인증의 계산량은O(N2) 의 시간 복잡성에 따라 증가할수 있다.인증시 소요된 시간이 너무 길기에 BIP143에서 반복적으로 사용할 수 있는 “중간 상태”로 알고리즘을 최적화를 한다.이렇게 하면 시간 복잡성을 O(n)으로 변환할 수 있다.

● 원시적 서명의 두번째 단점: 서명에서는 거래시 입력한 비트코인 수량을 포함하지 않는다.네트워크 노드에 대해 약점으로 말할 수는 없지만, 그런데 오프라인 거래,하드월렛등 에서 입력한 금액을 인식 불가함으로 투입금액과 거래비용을 계산할수 없다.BIP143에서는 매번 거래때에의 입력한 금액을 모두다 포함 할수 있다.

BIP143은 새로운 알고리즘 개요를 정의 하였고 사양은 다음과 같다

거래의 직렬화

 

이상 항목중 1,4,7,9,10 은 SIGHASH 알고리즘과 동일하며,원시 적인 SIGHASH 종류의 언어 뜻과는 변함이 없다.변동 사항은 다음과 같다:

● 직렬화의 방식

● 모든 SIGHASH는 서명시 소비된 금액을 승낙한다.

 FindAndDelete 서명은 scripteCode 서명에 부적합할 수 있다.

OP_CODESEPARATOR(S) 실행후,마지막 OP_CODESEPARATOR에서scriptCode를 삭제하지 않는다.(최후 실행된 OP_CODESEPARATOR는 어떤 스크립트전에는 항상 삭제를 진행한다.)

 

● SINGLE 에서 입력한 색인을 제출하지 않다.ANYONECANPAY 아무것도 설치하지 않을 경우,언어의 뜻은 변함이 없으며 hashPrevouts와 outpoint는 함께 암시적 표현으로 색인 입력에 제출한다.SINGLE에서 ANYONECANPAY 사용시 서명된 입력과 출력은 쌍으로 이루어지며 색인에는 제한이 없다.

 

2. BIP143서명

go언어중 우리는 btcsuite 베이스로 서명을 완성 하였고,btcsuite 베이스는 완전한 비트코인 코드 베이스로 볼수 있으며 비트코인 전 노드의 프로그램을 코딩할수 있다.여기서 우리는 오직 btcsuite 베이스의 공개 키 인터페이스 패키지,SHA 인터페이스 패키지 및 signRFC6979 서명 인터페이스 패키지를 사용하고 있다.글 길이를 생략하기 위해 하단의 코드는 오류에 대해 처리를 하지 않았다.

 

   2.1 HASH 거래 생성

 

거래 정보 생성된 값은 hash로 볼수 있다.거래중에서 입력할 때 마다 대응된 hash값을 얻을수 있으며,만약에 거래때 다중 입력을 할 경우 hash배열을 얻을수 있다.배열중의 매개 hash는 거래중의 단인 입력과 대응된다고 볼수 있다.

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

그림에서 제시한 것 처럼 총 두개의 거래를 입력하였다.거래시 한 개의 hash가 생성되며, 그림에서는 총 2개의 hash가 생성되어 있는 것을 볼수 있다.

 

 

  • Fhash 함수

CalcSignatureHash(script []byte, hashType SigHashType, tx *EMsgTx, idx int)

그중에서:

Script,pubscript 는 입력 utxo의 잠금 해제 스크립트이다

HashType, 서명 방식 혹은 서명 유형

Tx, 거래의 구체적인 데이터

Idx, 거래시 입력된 일련번호,즉 현재 거래의 처음 몇 개 입력에 대한 hash 계산

Fhash 코드는 다음과 같다

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

거래중에서 여러 개의 UTXO가 입력이 있는 경우,각 입력에 대해 상단 코드 절차에 따라  HASH 배열을 생성할 수 있다. HASH 생성전 기타 입력중의 “SigantureScript” 필드의 내용을 지우며, 현재 입력한 “SigantureScript” 필드만 남겨 두면 된다.즉 다음 그림중의 “ScriptSig” 필드

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

각 입력에서 UTXO 대응된 금액은 서로 같지 않으며 6번째 절차에서 주의를 해야 되며 필수로 각 거래에서 소비된 금액을 입력해야 된다.

func txHash(tx msgtx) ( *[][]byte)

코드의 세부 사항

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

Fhash 함수(CalcSignatureHash)에서 자기 호출(recursive call)를 해야 hash 배열을 생성할 수 있다.

 

    2.2 HASH서명에 대하여

위 절차에서 생성된 HASH 배열은 데이터 중의 매개 HASH가 대응된 거래의 입력으로 볼수 있다.signRFC6979 서명 함수를 사용하여 hash에 대해 서명을 진행한다.여기서 btcsuite 베이스중의 함수를 직접 호출해도 된다

signRFC6979(PrivateKey, hash)

함수를 의하여 SigantureScript 가 생성되며, 이 값을 각 거래중에서 입력된 SigantureScript 필드에 제공하면 된다.

 

  2.3 다중 서명(Multisig)

다중 서명 기술은 쉽게 얘기를 한다면,한번의 UTXO를 소비시 많은 개인 키의 서명만으로 유효할 수 있다.스크립트에서 한 개의 조건을 설정시 그중 N개의 공개 키가 스크립트에 기록될 수 있다.또한 그중에서 최소 M개는 필수 적으로 서명 제공만으로 자금 잠금 해제를 할수 있다.이것을 M-N 방안으로도 불리우며, 그중N 는 개인 키의 총수량,M 는 인증시 필요한 서명 수량으로 볼수 있다.

2-2 중복성 스크립트 생성 기능 코드:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

위 함수로 생성된 중복성 스크립트

2  <Partner1 Public Key> <Partner2 Public Key>  2 OP_C HECKMULTISIG

서명 함수

1. TX거래에 의하여, 그중 입력된 배열[]TxIn포함,거래 HASH배열 생성.이 절차는 상단에 제시된 일반적인 거래 절차와 같으며 일반 거래 개요를 호출해도 함수 생성이 가능하다.

func txHash(tx msgtx) ( *[][]byte)

함수가 한 개의 HASH 배열이 생성되면,각 거래에서 입력된 것을 한 개의 HASH값을 대응된다고 볼수 있다.

2. 중복성 스크립트의 첫번째의 공개 키KEY를 사용시 대응된 개인 키에 대해 서명을 진행해야 된다.서명 과정은 일반 거래를 참고하면 된다.

signRFC6979(PrivateKey, hash)

서명후 각 입력한 서명 배열 Signature ScriptArr1 생성된다.이 배열중의 서명값에 의하여 TX 거래에서 각 입력한 TxIn의 SigantureScript 필드를 업데이트를 진행 한다.

3. 업데이트된 TX에 의해 txHash함수를 재 호출을 하며 새로운 hash 배열을 생성할 수 있다.

func txHash(tx msgtx)( *[][]byte)

4. 중복성 스크립트중의 두번째 공개 키KEY를 사용시 대응된 개인 키에 서명을 진행한다.이전 단계중에서 업그레이드된 TX는 각 입력된 HASH 및 서명을 생성된다.

signRFC6979(PrivateKey, hash) 

//첫 번째 key로 생성된 서명과 두 번째 key로 새성된 서명 및 중복성 스크립트와 합쳐 진행을 한다.

etxscript.EncodeSigScript(&(TX.TxIn[i].SignatureScript),      &SigHash2, pkScript)

거래중 N개의 거래가 있으면 그럼 이전 단계 절차를 N번을 진행 해야 된다.최종적으로 생성된 데이터 내용은 다음과 같다.

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

참고문헌:

https://en.wikipedia.org/wiki/Digital_signature*

https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki

《OReilly.Mastering.Bitcoin.2nd.Edition》

http://www.8btc.com/rfc6979

 

- 다시보기 -

 

>>  연봉 1억(60만 위안)을 받고 싶나요?

>>  홍콩과학기술대 이과대 총장,SCRY INFO 컨설턴트직을 맡게 되다

>>  6월달 업무 총결

>>  SCRY.INFO와 한국 Hillstone Partners 전략적 제휴를 맺음

 

- END -


 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

SCRY.INFO의 QR코드를 스캔하고 scry.info(KR) 단톡방으로 오시기를 바랍니다. 

아래 Talegram 링크를 클릭하고 단톡방으로 오시기바랍니다.

https://t.me/scryinfokorea

 

 

 

 

 

 

 

 

 

 

 

 

 

-------------------------------------

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

-------------------------------------

댓글 0
default debug random = 0 / type = READ / detected = READ

홍보 및 소개

SMS 인증 후 글쓰기가 가능합니다

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1503 한국거래소 상장예정, Bottos    보토스(Bottos) _분산화 된 인공지능 (AI) 데이터 공유 네트워크. 광범위한 AI 기반 생태계 내에 데이터를 등록, 배포, 구현하기 위한 플랫폼     ●핵심목표  ... 1 file 0 870
kjk2343
2018.07.18
1502 엔비디아 GPU 재고소진위해 VGA 제조사 가격인하 압박? NVIDIA가 차세대 지포스 11 시리즈 출시를 앞두고 지포스 10 시리즈의 재고 처리를 위해 가격 인하를 유도하고 있다는 소식이 전해졌다.   엔비디아는 가상화폐 ... 2 file 3 1429
비탈길배트맨
2018.07.18
1501 호재에 가격 급등 비트코인…"하반기 '가즈아 데자뷰' 온다"   오랫만에 기사에서 가즈아가 나오네요...ㅋㅋㅋ 비트코인, 연이은 호재에 이틀간 100만원 올라 시장에선 지난해와 같은 연말 대세상승장 기대   http://news.ha... 4 file 2 2863
채굴천재라노
2018.07.18
1500 [STC] 7월 19일 밋업 정보   안녕하세요.   오랜만에 포스팅으로 인사드립니다.   STC 라고 들어 보신적 있나요? Smarter Than Crypto라 해서 일반 가상화폐보다 더 똑똑한 그러한 가상화폐... file 0 351
korlic1979
2018.07.18
중국 발빠른 블록체인 기술 글-SCRY.INFO 언더라인 더블체인 기술에 대한 공유 file 0 373
Scry-Info
2018.07.17
1498 블록체인 업체, 법인 계좌 개설 거절 당해 11 3 1157
카이지소재
2018.07.16
1497 네이버 일본 자회사 ‘라인’ 싱가포르 가상화폐 거래소 '비트박스' 운영 시작   네이버의 일본 자회사 ‘라인’이 싱가포르 소재 글로벌 가상화폐 거래소인 '비트박스' 운영을 시작했다고 16일 밝혔다. 라인에 따르면 비트코인·이더리움·비트... 6 file 8 1239
흑묘♂백묘♀
2018.07.16
1496 코인제스트, 거래소 채굴형 토큰 ‘코즈(COZ)’ 출시 기념 대규모 에어드랍 프로모션 실시 1 0 612
머머
2018.07.16
1495 미국 의회: 암호화폐는 “미래의 화폐”다 3 0 1063
댄서
2018.07.15
1494 ico 알아보시는분 newton project 한번 관심 가져 보세여 ㅎㅎ     아시는분은 아실 엘라스토스재단의 뉴톤 프로젝트 입니다 ㅎㅎ https://텔.me/KbitGroup   https://www.newtonproject.org/         -----------------------... 2 file 0 611
썡귤땡귤
2018.07.13
1493 [8비트] KAIST 김용대 교수 “거래소 솎아내기 보단 보안수준 높여야” 국내 소식   KAIST 김용대 교수 “거래소 솎아내기 보단 보안수준 높여야” (링크) 한국블록체인협회의 자율규제 보안 심사를 총괄한 김용대 정보보호위원장이 &quot;우... file 3 833
8비트
2018.07.13
1492 체인스 IQ(에브리피디아) 상장 이벤트!!! 체인스 IQ 상장 포스터 공유 이벤트!!!   체인스에 IQ가 상장되었습니다!!! 체인스 IQ 상장 포스터를 공유하고 블로그에 스크린샷, 링크 및 이메일을 남겨주시면... file 0 995
Dubu-Chaince
2018.07.13
1491 가상화폐거래소 코인제스트, 거래소 토큰 ‘코즈(COZ)’ 보유자에게 코인상장 투표권 부여   가상화폐거래소 코인제스트가 거래소 자체 토큰인 ‘코즈(COZ)’ 발행 및 상장에 속도를 낼 전망이다.  특히, 코즈(COZ) 보유자에게는 코인제스트 거래소 상장코... file 0 874
머머
2018.07.13
1490 [세계 최초] 암호화페(가상화폐) 소재 웹드라마 ‘사랑도 존버가 되나요?’ 관심 집중   사진=소울샵엔터테인먼트 제공.     기사링크     [아시아일보/이수연 기자] 세계 최초로 암호화폐(가상화폐)를 소재로 한 웹드라마가 만들어진다. 4차 산업혁... 6 file 3 930
윈드테일
2018.07.13
1489 엔비디아 GTX1180 7월30일 8GB와 16GB 모델출시 시작가격은 999달러? 엔비디아 (NVIDIA)는 파스칼 (Pascal) 아키텍처 기반 지포스 GTX 10 시리즈 후속 그래픽카드를 준비 중인 것으로 알려진 가운데 예상 출시일과 가격에 대한 소식... 6 file 6 7130
얼레리나그네
2018.07.12
1488 디지털 암호화폐와 블록체인이 전 세계 언론의 관심을 받는 이유 0 783
댄서
2018.07.12
1487 비트코인 ETF, 내달 출시 결정할 듯...제도권 안착 임박 3 5 1512
디엠스토리
2018.07.12
1486 HTC는 Exodus블록 기반 전화기를 자세히 설명하고 가을 출시를 확인합니다.(네이버 번역 ㅋㅋ) https://www.gsmarena.com/htc_exodus_is_a_blockchainbased_phone_comes_out_this_fall-news-32165.php           우리가 Exodus라고도 알려진 HTC의 블록 체인 ... 1 file 1 307
일리케
2018.07.12
1485 체인스 EOS 에브리피디아(Everipedia)상장!!!     체인스 에브리피디아(Everipedia) 상장   Everipedia는 현재 순서대로 에어드랍을 진행하고 있습니다. 에어드랍을 받고나서, 저희는 빠르게 회원들에게 에어... file 1 667
Dubu-Chaince
2018.07.12
1484 블록체인협회 "가상화폐 거래사이트 보안, 12곳 모두 적격" 2 0 640
머머
2018.07.12
목록
Board Pagination Prev 1 ... 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 ... 4235 Next
/ 4235
default debug random = 0 / type = READ / detected = READ