검수요청.png검수요청.png

스크립트 알고리즘

위키원
leejia1222 (토론 | 기여)님의 2019년 7월 8일 (월) 18:59 판 (참고자료)
이동: 둘러보기, 검색
라이트코인(Litecoin) 로고와 글자

스크립트 알고리즘(scrypt algorithm)는 콜린 퍼시벌(Colin Percival)이 개발한 암호화 추출 알고리즘이다. 라이트코인이 해당 알고리즘을 채택하고 있다.

개요

2016년 국제인터넷표준화기구(IETF, Internet Engineering Task Force)에 의해 RFC7914로 스크립트 알고리즘이 발표되었다. 단순화된 버전의 스크립트는 다수의 암호 해독기에 의해 업무 입증 계획으로 사용되었는데, 처음에는 테네브릭스(Tenebrix)에서 ArtForz라는 익명의 프로그래머에 의해 구현되었고, 곧이어 페어브릭스(Fairbrix)와 라이트코인(Litecoin)에 의해 구현되었다. [1] 스크립트 알고리즘은 라이트코인이 출시되면서 암호화폐 채굴에 처음 등장했다.[2]

스크립트 알고리즘의 이점으로 비트코인에 비해 낮은 블록 생성시간과 ASIC 저항성을 꼽을 수 있다. 역설적이게도 스크립트 알고리즘은 본래 GPU에 의한 비트코인 채굴이 지나치게 중앙집중적이라고 생각한 라이트코인 개발자들이 내놓은 대안으로 GPU 채굴을 방지하기 위해 라이트코인에 적용되었다. 하지만 어떤 이유에서인지 스크립트는 본래의 목적을 달성하지 못했으며 네트워크는 GPU 채굴장비로 가득 차게 됐다. 스크립트 알고리즘은 콜린 퍼시벌(Colin Percival)이 온라인 백업서비스인 Tasnap에 활용할 목적으로 개발했는데, 이 서비스는 스크립트가 커스텀 하드웨어에 의한 공격실행 비용을 엄청나게 높이며 또한 상당수의 주요 현용 암호화 알고리즘에 비해 수천 배 안전하다고 주장한다. 실제로 스크립트 알고리즘은 많은 양의 메모리를 요구하여 대규모 사용자 하드웨어 공격을 수행하는 데에 있어서 많은 비용이 들도록 특별히 설계되어있다. 때문에 안전하지만 한편으로는 메모리가 많기 때문에 수행하는데에 있어서 시간이 많이 든다는 단점도 있다.[2]

특징

스크립트 알고리즘에 대한 공격자는 브루트포스(Brute Force) 공격 실행을 위해 메모리 사용량을 늘리거나 반대로 메모리 사용량을 줄이고 느린 공격을 실행할 수밖에 없는데 이러한 상쇄는 의도적인 효과로 스크립트 알고리즘을 아주 안전하게 해준다. 이는 라이트코인 개발자 찰리 리(Charlie Lee)가 코인 알고리즘으로 스크립트를 채택한 이유이기도 하다. 채굴자 입장에서 보면 스크립트는 GPU와 잘 맞으며 대부분의 스크립트 채굴장비는 GPU 기반이다. 스크립트는 SHA-256에 비해 많은 메모리를 필요로 하나 SHA-256에 비해 전력소모가 적기 때문에 결과적으로는 상쇄되는 셈이 된다. 채굴장비의 전력소모량이 낮음에 따라 발열과 소음 또한 적어지며 그렇다 해도 스크립트 채굴을 한다면 여름 전기세는 늘어나고 겨울 난방비는 줄어드는 결과를 가져올 수 있다.[2]

스크립트 채굴에 사용되는 ASIC 또한 시중에 나와 있기 때문에 스크립트를 사용하는 GPU 채굴자의 경우 어느 정도의 경쟁은 예상해야만 한다는 사실을 유념해야 한다. 스크립트 ASIC이 점점 많이 제작됨에 따라 스크립트 코인의 채굴난이도는 올라가는 반면, 채굴자의 개개인의 시장점유율과 수익성은 떨어지리라 전망된다. 일부 ASIC의 경우 SHA-256과 스크립트를 동시에 채굴할 수도 있기 때문에 스크립트 코인을 채굴하려 한다면 ASIC을 옵션으로 고려하면 더욱 좋다.[2]

구성

스크립트 알고리즘에는 다음과 같은 매개 변수가 포함된다.

* Passpharse : 해시할 문자열
* Salt : Rainbow 테이블 공격으로부터 보호하기 위해 해시를 수정하는 문자열
* N : CPU/메모리 비용 매개 변수
* P : 병렬화 매개 변수, 을 만족하는 양의 정수
* dkLen : 파생 키의 옥텟에서 의도된 출력 길이, 을 만족하는 양의 정수
* r : 순차 메모리 읽기 크기와 성능을 미세 조정하는 블록화 매개변수(8이 일반적으로 사용됨)
* hLen : 해시 함수의 8진수 길이
* MFlen : 혼합 기능 출력의 8진수 길이(RFC7914에서 r*128로 정의됨)[3]

각주

참고자료


  검수요청.png검수요청.png 이 스크립트 알고리즘 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.