본문 바로가기
Computer Security

암호를 이용한 전자상거래 - 전자 화폐

by Doromi 2017. 12. 3.
728x90
반응형

현금의 가장 큰 장점는 익명성과 양도성입니다.

내가 어디가서 무엇을 사던지 어떻게 쓰던지 기록이 남지 않습니다.

그리고 지갑에서 만원을 꺼내서 누구를 주면 그 만원의 소유주가 바뀝니다.

 

●전자화폐

   -David Chaum이라는 사람이 현금과 같은 기능을 갖는 디지털 코인

   -'현금의 익명성과 양도성을 모두 갖게 만들자'

   -검은 세력들이 추적이 불가능한 돈을 쌓으려고 하는게 목적이 되어서 사장이 되었다가

    최근 '비트코인' 암호화폐 또는 가상화폐로 다시 전자화폐 등장

 

●전자 화폐 분류

  -스마트 카드, IC 형태 - 충전식

  -네트워크 형 전자화폐

  -전자 지갑

  -네트워크 형+전자지갑

 

 

●전자화폐 - 보안 요구 사항

  -안정성(unforgeability)

   위조 불가능성(화폐를 위조 할 수 있어서는 안됨)

  -이중 사용 방지(Double-spending)

   한 번 사용한 화폐를 재사용 하면 안됩니다.

 -익명성

   추적이 불가해야 함(원래 화폐의 기능)

 -오프라인

  일반 현금하고 똑같이 사용 가능해야 합니다.

 

모든 화폐는 시리얼 번호를 가지는데 이를 추적할 수 있다는 것은 익명성을 보장하지 못한다는 것이 됩니다.

따라서 전자 화폐에 서명을 하되, 전자 화폐의 일련 번호(시리얼 번호)는 몰라야 하는 것이 중요합니다.

그래서 나온 것이 블라인드 서명입니다.

 

●블라인드 서명

  -사용자가 은행에서 전자 화폐 인출 시, 은행은 사용자가 어떤 번호의 전자 화폐를 인출했는지 알 수 없도록 하는 방식

  -전자 봉투에 사인을 하는데 안에 원본에도 사인이 될 수 있게 하는 방식(먹지 같다고 보면 됨..)

  -시리얼 번호를 사용자가 랜덤하게 선택( 다 다르다고 가정하에) ☞ 어떤 다른 수로 승수를 시켜서 은행이

   시리얼 번호를 알지 못하게 한 다음 그 수에 대해서 서명을 생성합니다.

  -사용자가 서명을 딱 받은 뒤에 승수만 싹 빼서(사용자만 뺄 수 있음) 원본(액면가 + 시리얼 번호)에 대한 서명이

   만들어 진 것 처럼 할 수 있습니다.

 

▶Ecash(초창기 전자 화폐)

  -1994년 4년정도 사용

  -지불된 Ecash의 재사용 방지를 위해서 은행이 DB에 사용한 시리얼 번호들을 다 기록

  -상점은 Ecash 사용에 따른 수수료를 부담

 

▶BitCoin(2017 암호 화폐)

  -제 3의 신뢰기관을 사용하지 않고, P2P 네트워크를 기반으로 화폐의 안전성 보장

  -분산 네트워크 환경 기반으로 수수료 부담↓

  -현금성 가상화폐이므로 양도성이 보장 되어야 합니다. ☞ 블록 체인에 기반한 거래 과정

  -디지털 화폐이므로 이중 사용도 방지 되어야 합니다.

 

A가 100개의 비트코인이 있다고 하는 것은 숫자에 불과합니다.(손으로 잡을 수 없는 것)

A가 B에게 5개의 비트코인을 보냈으면 95개의 비트코인이 남아있다. 이 95라는 숫자가 돈이 되는 것입니다.

 

●사용자

  -Private-Public Key 한 쌍을 가지게 되고 공개키로만 서로에게 상호인증

  -공개키로부터 사용자의 신원은 알 수 X (사용자의 익명성 보장)

 

●거래

  -일종의 돈에 대한 정보가 되는 것

  -A가 B에게 비트코인을 이체 ☞ A는 Hash(거래내역+B의 공개키)을 A의 개인키로 전자서명 생성

  -이 거래에 대한 사실 증명은 어떻게 해 줄 것이냐? ☞ 블록체인 사용

 

 

●Timestamp server

  -10분 단위로 P2P에 broadcasting된 모든 거래내역들을 모아서 하나의 block을 생성

  -현재까지 생성된 모든 블록들에 대한 chained-timestamp생성

 

●블록체인

  A가 B에게 송금(transaction)하려고 할 때 A가 B에게 얼마를 줄 것이다는 원장을 작성.

  거래 정보를 하나의 블록으로 모은다(블록은 시간 개념). 10분동안 이루어지는 모든 거래 원장들을 모아서 하나의

  블록으로 생성 .모든 거래는 Broadcasting이 됨.

  P2P를 사용하는 모든 사용자들이 10분동안 모아진 모든 거래에 대해서 증명서를 생성.

  (중앙 집중식에서는 은행이 생성, 책임도 은행)

  젤 먼저 증명서를 생성해내는 누군가가 있을 것이고 이 증명서가 10분동안 모아진 모든 거래의 증명을 함.

  증명서가 만들어 진 후에 10분동안 모아진 거래들(실질적인 자금 이동)이 이루어짐.

  (그 전에는 A가 B에게 얼마를 보내겠다는 사실만 존재)

  증명서가 만들어지기 전에 자금이 이체가 된다면 나중에 그 증명서를 만들 수 없을 경우에 그 자금이체에 대한

  책임을 질 수가 없기 때문입니다.

 

→10분동안의 블록들은 어떻게 연결이 되는 것일까?

   10분동안의 블록들을 따로따로 관리하는 것이 아니고 체인형식으로 관리하기 때문에 블록체인이라고 합니다.

   이것의 의미는 하나의 체인으로 쭉 연결되기 때문에 중간에 있는 과거에 일어났던 거래내역을 바꾸겠다고 하면

   그 과거의 일부터 그 이후에 붙는 체인들을 모두 바꿔야 유효한 값들이 될 수 있게 됩니다.

   이미 만들어진 체인의 위조를 못하게 하기 위해서 따로따로 독립적으로 관리X

   

  -timestamp = Hash(이전 블록의 해시 값 + 현재 블록(최근 10분동안 모아진 거래 내역)의 내용)

  -거래 내역이 쌓일수록 blockchain이 길어질 것인가? ☞ 해시 길이가 길어지는 것이 아니고 이전 해시 기록이

   길어지는 것이다.

  -거래 내역에 대한 부인 방지 기능 제공

  -거래 내역 위조 불가 기능 제공

  -이중 지불 방지 기능 제공

  -해시만 시킨다면 해커가 transaction을 고쳐서 위조가 가능해지는데 이를 막는 방법? ☞ 10분동안의 거래에 대해

   해시를 만드는 시간이 10분 가까이 걸려야 함

  -P2P환경에서 모든 사람들에게 새로운 블록에 대한 증명서를 만들 수 있는 권한을 준다(proof of work - 작업증명)

  -작업증명을 수행하는 과정을 채굴한다라고 함

  -시간이 지남에 따라 블록이 늘어남 ☞ 가장 긴 블록체인이 가장 신뢰성↑

  -1년치 블록의 해시값을 다 저장해도 총 14M밖에 되지 않음 

 

▶채굴

  -Hash(이전 블록의 해시 값 + 현재 블록의 거래 내역들 + Nonce)에서 Nonce를 뺀 두가지는 이미 알려진 값

  -Nonce는 random number인데 위에 해시한 값의 특징이 무조건 앞에 18자리는 모두 0이 되어야 함

  -Nonce를 먼저 찾는 사람이 채굴에 성공(Nonce가 가질 수 있는 모든 경우의 수를 도전)

  -채굴을 P2P 사용자들이 돈,시간을 들여서 하지 않으려고 하기 때문에 최초로 증명서를 만든 사람에게는 incentive 지급

  -시간과의 싸움(해커가 중간의 블록의 값을 바꾸고 싶어서 바꿔도 뒤에 있는 모든 블록의 값을 다 바꾸어야 되는데

                       블록하나당 해시 값을 찾아야 되는데 10분정도의 시간이 드는데 현실적으로 불가능)

 

 

이 incentive가 새로운 화폐가 발행되는 순간입니다. 최초의 발행된 비트코인은 50코인이었습니다.(처음 작업 증명을 만들면서) 4년마다 incentive 액수를 반감을 시키고 있습니다. 현재는 12.5코인을 줍니다. 앞으로 시간이 지나면 지날수록 새로 만들어지는 비트코인은 점점 줄어들게 됩니다. 전체 2100만 으로 한정이 되게 됩니다. 그 뒤로는 코인을 만들 수 없게 되겠죠...그래서 희소성이 있다 할 수 있습니다. 가치도 점점 올라가고 있습니다. 실질적으로 비트코인을 사용하는 경우는 현재 많지 않지만 그럼에도 불구하고 가치가 높게 매겨지는 이유는 투기성과 희소성이라고 할 수 있습니다.

728x90
반응형