7월 TIL

Soo Im·2022년 7월 6일
0

일별 TIL 기록

목록 보기
11/20
post-thumbnail

2022-07-04

1. 블록체인 사업에서 중요한 내용

  • (기본)BM에 대한 이해
  • 네트워크 참여자 간의 신뢰 관계(위계없이 동일한 권리 가지므로)
  • 블록체인의 도입 배경인 보안에 대한 이해
  • "블록체인을 도입해야 하는 이유"

→ 블록체인이 항상 만능은 아님! BM 특성상 굳이 도입할 필요가 없는 경우도 있음(예: 단일 사용자의 정보 저장).

2. 비즈니스 모델의 구분

  • 문제 해결형; 문제의 진단과 해결 솔루션을 제공(컨설팅, 광고, 법률...)
  • 가치 창조형; 미완의 제품/원재료에 가치를 부여하고 제품을 제공(제조, 소매...)
  • 네트워크형(플랫폼); 사람들이 물건을 주고받는 네트워크 제공(통신사, 보험사...)

→ 블록체인은 문제 해결형+네트워크형에 적용되는 경우가 많음.
→ 다만 블록체인은 실시간성, 대용량 트랜잭션 등을 요구하는 서비스에는 부적합한 경우가 많음.

3. 블록체인의 용도

  • 계약 관리, 본인 인증... 등 신뢰 이슈에서 나온 해법

→ 중개자 없이 개인간의 거래, 가치, 자산 등을 이동시키는 교환 네트워크
서로 신뢰할 수 없는 환경에서 신뢰를 보장하는 기술

4. (매우) 간단한 블록체인 개념

각 블록은 최초의 블록(제네시스 블록) 이후에 생긴 모든 거래 내역을 가지고 있다. 새로운 블록은 이전 블록의 내용이 변경되지 않았음을 보증하는 체인을 가지고 있다. 이 체인을 이용하여 이전 블록과 연결한다. 연결이 완료되면 실제 거래가 이루어진다.
이 때 네트워크 내에서 시간이 동기화 되어야 하므로 블록이 발견된 날짜(타임스탬프)도 함께 가지고 있다.

2022-07-05

1. 블록체인의 신뢰성 보장

블록체인 네트워크는 아래 세 가지를 반드시 검증해야 한다.

  • 무결성; 위변조 방지
  • 부인(否認)방지
  • 사용자 인증

    인증 VS. 부인방지
    인증은 당사자의 자격을 검증하는 것이고
    부인방지는 거래(데이터 송수신)에 대해 당사자가 누구인지 추적하는 것이다.

이를 위한 암호화 알고리즘을 알아본다.

2. 보안의 3요소(CIA)

  • 기밀성 Confidentiality; 인가된 사람만 복호화(암호문을 평문으로 변환) 가능 ↔ 유출, 노출
  • 무결성 Integrity; 인가된 사람만 인가된 방법으로 정보 변경이 가능 ↔ 위변조
  • 가용성 Availability; 필요한 시점에 정보에 접근 가능 ↔ 서비스 지연(예: DDOS)

블록체인은 무결성을 이용해 거래의 신뢰성을 높인다.

3. 암호화 알고리즘 분류

복호화 가능 여부에 따라 단방향과 양방향으로 나눈다.

  • 단방향; 암호화만 가능(예: 해시함수)
  • 양방향; 암호화, 복호화 모두 가능

4. 해시함수

4.1 해시함수 특성
데이터를 복호화할 수 없게 암호화하는 단방향 함수. 임의 길이의 메시지를 고정된 길이의 출력값(Message Digest, MD)로 변환한다. 데이터 변경 여부를 확인할 수 있으므로 무결성을 제공한다.
해시함수(h)는 아래의 특성을 가져야 한다.

  • ((압축성; 해시값(h(x))의 길이는 항상 동일해야 한다.)) <이건 뒤에 나오는 거랑은 좀 결이 다른데... 애매해서 여기 넣음
  • 역저항성(단방향성); 임의의 h(x)를 만족하는 x를 찾는 것(복호화)이 계산적으로 불가하다.
  • 제2역상 저항성; 주어진 x에 대해 h(x)=h(x'), x≠x'인 x'를 찾는 것이 계산적으로 불가하다.
  • 충돌 저항성; h(x)=h(x')를 만족하는 임의의 x, x'를 찾는 것이 계산적으로 불가하다.

    제2역상 저항성 VS. 충돌 저항성
    제2역상 저항성은 x가 주어진 상태에서 x'를 찾는 문제이고, 충돌 저항성은 복수의 해를 찾는 문제인 듯?

4.2 해시함수 기법
그러나 이러한 특성 때문에 동일한 두 개의 해시값이 있다면 두 개의 데이터가 동일하다는 점을 알 수 있다. 이를 해결하기 위해 나온 몇 가지 기법이 있다.
1) 해시 솔트(Hash Salt)
입력한 데이터에 임의의 문자열을 추가한 뒤(예: 계정 생성 시각) 해시함수를 만드는 방법이다.
Hash_salt
2) 키 스트레칭(Key Stretching)
해시 솔트를 붙이는 방식으로도 부족해서(!) 솔트를 붙인 후에 나온 해시값을 임의의 횟수만큼 다시 해시함수에 넣는 방법이다.

4.3 블록체인 내 해시 함수
블록 헤더를 해시값으로 만들어 일종의 지문을 만든다. 다음 블록이 해당 지문(해시값)을 가지는 것을 검증하여 체인을 연결한다.

4.4 HMAC
HMAC은 key를 이용하는 해시함수이다. 임의의 key를 붙여 데이터의 무결성과 기밀성을 제공한다.
h(h(messeage + key) + key)
A가 보낸 데이터가 변조되지 않았는지 검증하기 위해서, A는 message(데이터)와 key, 그리고 그 값을 이용한 해시값을 B에게 보낸다. 그러면 B가 해시함수를 이용하여 직접 해시값을 구함으로써 해당 message가 변조되지 않았는지 확인할 수 있다.
key를 통해서 인가된 사람만 복호화할 수 있기 때문에 기밀성을 추가로 가진다.

5. 대칭키/비대칭키

양방향 알고리즘 중에서 암호화키와 복호화키가 동일한 암호화 기법을 "대칭키", 다른 기법을 "비대칭키"라고 한다.

5.1 대칭키

  • 특징: 암호화 키와 복호화 키가 동일하다. A와 B가 동일한 키를 공유해서 A는 그 키를 이용해 암호화하고, B는 복호화한다.
  • 장점: 암호화 처리가 빠르다.
  • 단점: 암호화-복호화 키가 동일하기 때문에 모든 쌍마다 각각 키를 만들어야 해서(A-B, A-C, B-C...) 키 관리가 불편하다.

5.2 비대칭키

  • 특징: 암호화 키와 복호화 키가 다르다. 공개키(public key)와 비밀키(private key)를 사용한다. A는 온라인에 공개된 B의 암호화 공개키를 찾아서 암호화한다. 그걸 B에게 보내면 B는 자신만 가지고 있는 비밀키로 복호화해서 A가 보낸 데이터를 확인한다. 즉 누구나 B에게 '공개키'를 이용해서 '암호화'할 수 있고, 그 메시지는 B가 가진 '개인키'로만 '복호화'할 수 있다.
  • 장점: 키 관리가 용이하다.
  • 단점: 암호화 처리가 느리다.

6. 블록암호

6.1 ECB(Electronic Codebook)
암호화 속도를 빠르게 하기 위하여 모든 데이터를 일일이 암호화하지 않고, 일정 길이의 블록으로 나누어서 블록별로 암호화하는 방식. 블록을 병렬로 암호화하기 때문에 속도가 빠르다.
그러나 AAAA BBBB AAAA와 같이 세 블록으로 나누어 암호화하면 AAAA 블록의 원문이 같음을 유추할 수 있다(해시에서 본 문제와 유사). 이 문제를 해결하기 위해 나오는 해법이 다음에 나오는 CBC, Counter.

6.2 CBC(Cipher-block Chaining)
첫 블록을 암호화할 때, 난수를 이용해 값을 변경한(XOR 연산) 다음 그 값을 암호화한다. 그리고 그 암호화 결과를 이용해 다음 블록의 값을 변경하고 그 값을 암호화한다. 이를 무한히 반복한다.
CBC_diagram
이처럼 이전 블록의 암호화 결과를 이용하기 때문에 Chaining이라고 부른다. 이 방법을 사용하면 똑같은 AAAA 블록이지만 암호화 결과가 다르게 나오는 것을 볼 수 있다. (이 과정을 좀 더 복잡하게 하는 PCBC(Propagating CBC)도 있긴 한데 그건 생략 😵)
하지만 ECB와 다르게 이전 블록의 결과를 기다려야하기 때문에 시간이 오래 걸리는 단점이 있다.

6.3 Counter
ECB처럼 병렬처리가 되면서 CBC처럼 임의성을 부여하기 위한 기법. 이전 블록의 암호화 결과를 사용하는 대신 임의의 Counter를 부여해서 블록 값을 바꾸고 암호화하는 방식이다. 예를 들어 첫 AAAA 블록에는 0000, BBBB 블록에는 0001, 두 번째 AAAA에는 0010...과 같은 serial number인 Counter을 부여해서 병렬로 암호화하는 방식이다.
(CBC보다 간단해 보이는데 CBC보다 나중에 나온 게 신기...)

2022-07-06

1. PKI(Public Key Infrastructure)

번역하면 '공개키 기반 구조'. 사용자가 전자거래를 할 때 사용하는 인증기관이 전자서명한 인증서를 관리하는 체계를 말한다. 공인인증서가 대표적인 예시이다.
부인방지(전자서명), 인증(전자인증서), 무결성(해시 이용), 기밀성(암호화 이용)을 제공한다.

1.1 PKI 인증서 발급 프로세스
PKI_process

  1. 사용자가 RA(등록대행기관, 주로 은행/증권사)에 인증서 발급 대행을 요청한다.
  2. RA에서 사용자의 신원을 확인한 후 CA(인증기관)에 사용자의 인증서 발급을 요청한다.
  3. CA가 RA의 요청을 받고 인증서를 생성하고, 사용자에게 인증서를 받을 수 있는 키를 제공한다.
  4. 사용자가 그 키를 CA에게 주어서 초기 인증한다.
  5. CA가 공개키를 LDAP에, 개인키를 사용자 PC의 레지스트리에 저장한다.

    액티브X를 사용한 이유
    PKI는 레지스트리에 저장되어야 브라우저가 바로 찾을 수 있다. 하지만 우리나라 인증서는 'NPKI' 등과 같은 임의의 폴더 안에 저장하기 때문에 브라우저가 찾을 수가 없다. 그래서 인증서를 찾아주는 별도의 프로그램인 액티브X를 사용한 것이다.

1.2 PKI 인증서 검증 프로세스

  1. 사용자가 인증서를 검증해서(전자서명) CA에 보낸다.
  2. CA가 CRL(해지되었거나 유효하지 않은 인증서의 목록)을 조회한다.
  3. 해당 인증서가 CRL에 있는지 검증한다(폐기 여부 확인).
  4. CA는 해당 인증서가 본인(CA)가 만든 것이 맞는지 검증한다.
  5. 또, Root CA는 CA의 인증이 본인(Root CA)이 만든 것이 맞는지 또 검증한다. 4번과 5번을 Chain 검증이라고 부른다(CA와 Root CA 둘 다 자기가 만든 것이 맞는지 검증하기 때문에 Chain이라고 부르는 듯)
  6. Chain 검증을 완료하면 인증서가 검증된다.

1.3 OCSP(Online Certificate Status Protocol)
PKI 인증서 검증에서 사용하는 CRL은 폐기된 인증서의 리스트이다. CRL은 특정 주기마다 업데이트가 되는데, 이 때문에 업데이트 전까지는 폐기 여부를 확인할 수 없다. 예를 들어 매일 자정에 업데이트가 된다면 오후 1시에 폐기를 신청한 나의 인증서는 다음 날이 되어서야 CRL에 들어간다. 이 문제를 해결하기 위해 실시간으로 폐기 인증서를 확인하는 프로토콜이 OCSP이다.

1.4 PKI 한계
CA의 권한이 과도하게 크고, 저성능 기기(IoT 등)에서 인증을 연산하기 힘들다는 문제가 있다. 그 대안으로 IBE(Identity-Based Encryption) 등이 있다. IBE는 e-mail과 같은 식별이 가능한 공개된 정보(ID)를 이용해서 인증하는 기술이다.

2. 전자서명 절차

  1. A가 B에게 전자서명한 문서를 보내려고 한다.
  2. A가 원본문서를 해시함수를 이용해 MD로 만든다.
  3. A가 MD를 A의 개인키를 이용해 암호화한다. 이를 전자서명이라고 한다.
  4. B가 A의 공개키를 이용해 전자서명을 복호화하여 MD를 받는다.
  5. B가 A의 원본문서를 받고 해시함수를 이용해 MD로 만든다.
  6. 4번의 5번의 MD를 비교해서 둘이 같으면 전자서명 검증이 완료된다.

전자서명은 개인키, 암호화는 공개키
Digital_signature_Encryption_Assymetric_key
'암호화'한 문서를 보낼 때에는 받는 쪽의 공개키로 암호화한다. 그렇게 하면 받는 사람의 개인키로만 복호화 할 수 있기 때문에, 받는 사람 외에는 원본을 아무도 알 수 없다.
'전자서명'은 전자서명을 하는(보내는) 쪽의 개인키로 암호화한다. 받는 사람말고는 못 읽게 하는 게 아니라, 보내는 사람이 서명한 것이 맞다고 보여주는 것이 전자서명의 목적이기 때문이다. 즉 공개된 키가 아니라 보내는 사람만이 가지는 키로 암호화하는 것이 타당하다. 그 후에는 받는 사람이 보내는 사람의 공개키로 복호화하여 '이게 A가 자신의 개인키로 서명한 것이 맞구나'하고 확인을 할 수 있다.

3. 전자봉투

PKI는 비대칭키를 사용하기 때문에 암호화 속도가 오래 걸린다. 대칭키처럼 암호화 속도는 빠르게 하면서도 비대칭키처럼 키 관리는 편하게 하는 기법이 전자봉투이다.
Digital_envelope

  1. A가 문서에 전자서명한다(원문을 해시값으로 만들어서 'A의 개인키'로 암호화)
  2. A가 원문, 전자서명한 문서, 'A의 공개키'를 묶는다. 이 묶음을 'B와의 대칭키'로 암호화한다. 이를 암호문이라고 부른다.
  3. 'B와의 대칭키'를 'B의 공개키'로 암호화한다. 이를 전자봉투라고 부른다.
  4. 2(암호문)와 3(전자봉투)을 B에게 보내준다.
  5. B가 4를 받으면 역순으로 풀면 된다.
  6. B가 'B의 개인키'로 3(전자봉투)를 복호화한다. 이제 'A와의 대칭키'가 생겼다.
  7. 'A와의 대칭키'를 이용해서 2(암호문)를 복호화한다. 이제 원문, 전자서명한 문서, 'A의 공개키'가 생겼다.
  8. 남은 단계는 전자서명 검증과 똑같다. 'A의 공개키'를 이용해서 복호화한 해시값을 확인하고, 자신이 받은 원문도 해시값으로 만들어 둘을 비교하면 된다.

왜 키로 키를 싸는거야? (3번)
비대칭키는 속도가 느린 대신 관리가 편하고, 대칭키는 관리가 어려운 대신 속도가 빠르다고 했다. 그래서 대칭키로는 (용량이 큰) 데이터를 암호화한 다음에, 관리가 편한 비대칭키로 (용량이 작은) 대칭키를 암호화하는 것이다.

결국 대칭키가 있으니까 관리해야 하잖아? 뭐가 좋다는 거야?(2번)
A랑 B가 항상 같은 대칭키를 써야한다면 그렇지만, 이제는 대칭키를 매번 바꾸어도 개인키로 암호화해서 그때그때 보내주면 되니까 상관없다! 즉 둘만 사용하는 일회용 자물쇠를 매번 B의 우편함에 꽂아주는 것이다.

2022-07-08

1. 블록체인 정의

분산화된 P2P 네트워크에서 모든 거래 내용이 기록, 검증 및 공개되는 데이터 저장 시스템이다.

2. 블록체인 동작 메커니즘

  1. PKI 기반으로 전자지갑을 생성한다. 개인키를 전자지갑에 저장한다.
  2. A가 B에게 송금을 요청하면서 A의 개인키로 전자서명을 한다.
  3. A의 전자서명된 트랜잭션이 참여자(노드)에게 전송된다.
  4. 참여자가 트랜잭션의 적정성을 확인한다.
  5. 그 중 한 참여자가 특정 문제를 해결하면 마이닝을 하면 블록이 생성된다.
  6. 불특정 다수의 블록체인 네트워크 참여자에게 블록을 전송(Broadcasting)한다.
  7. 모든 참여자가 해당 블록의 적정성을 확인하고 합의한다.
  8. 승인된 블록이 기존 블록체인에 연결이 된다.
  9. A가 B에게 송금이 완료된다.

3. 블록의 구성요소

  1. 헤더
    1) 이전 블록의 해시 값 → 기존 블록의 무결성을 보장한다.
    2) 타임스탬프; 블록이 생성된 시각
    3) 논스; 블록의 해시값을 생성할 때 더해지는 값(솔트 비슷한 건가)

  2. 바디
    1) 머클 루트(Merkle Root); 머클트리는 일정 시간동안 발생한 트랜잭션(거래 내역)과 그 해시값을 이진 트리 구조로 저장한 것으로, 트랜잭션의 무결성을 보장한다. 머클트리의 루트 부분을 머클 루트라고 부른다.

2022-07-11

1. 화폐 비교

1.1 디지털화폐 vs. 가상화폐 vs. 암호화폐

디지털화폐 가상화폐 암호화폐
법정화폐의 대체물로서 법정화폐을 더 사용하기 쉽게 형태를 바꾼 것이다. 네이버페이, 페이팔, 신용카드 등이 있다. 특정 실물이 없이 네트워크로 연결된 특정 가상 공동체에서 사용하는 전자적 형태의 화폐이다(다만 디지털화폐와 구분이 명확히 되지 않는 경우도 있다). 싸이월드 도토리, 게임머니 등이 있다. 중앙 관리자 없이 분산 장부(distributed ledger)에서 공개키 암호화를 통해 전송하고 해시함수로 소유권을 증명하는 디지털 자산이다.

1.2 비트코인

  • 금융 기관 개입 없이 대금 결제가 가능한 순수한 P2P 버전의 전자화폐이다.
  • 이중지불(같은 화폐를 복제하여 여러 번 결제)을 저지할 수 있는 믿는 제3자가 필요하지 않다.
  • 타임스탬핑으로 거래를 기록한다. 거래의 해시값을 기반으로 한 작업증명이 연쇄적인 체인 형상으로 기록된다.

2. 분산 원장 비교

2.1 분산 DB vs. 분산 원장 vs. 블록체인

분산DB 분산 원장 블록체인
논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 장소에 분산되어 있는 DB. 분산된 노드의 데이터 일관성을 위해 트랜잭션을 관리하는 코디네이터가 있다. 분산된 노드가 동일한 데이터를 가질 수 있도록 관리하는 합의 기술. 노드간 직접 접속 네트워크가 필요하고 노드 간 복제 데이터에 대한 합의 알고리즘이 수행되어야 한다. 분산 원장의 한 형태. 변경이 불가능한 레코드 그룹을 암호화하고 연결한다.

3. 블록체인 역사

  1. 1세대
    비트코인으로 인해 블록체인 논의가 본격적으로 시작되었다. 다만 가상통화 외의 응용가능성이 다소 낮다. 퍼블릭 블록체인이 시작되었다.

  2. 2세대
    스마트 계약을 기반으로 다양한 응용이 가능하다. 이더리움으로 대표된다. 프라이빗 블록체인이 시작되었다.

  3. 3세대
    범위가 확장되어 거버넌스 등에 적용된다. (아직 명확히 2세대와 3세대를 구분하지는 않는 듯 하다)

2022-07-12

1. 블록체인 특징

1.1 투명성

  • 블록체인 네트워크의 모든 참여자에게 정보가 공유됨
  • 네트워크 참여자의 실시간 거래 모니터링이 가능함(가시성)
  • 거래 가시성으로 인해 투명성, 부인방지가 가능함

1.2 보안성

  • 참여자가 공동으로 정보를 소유하므로 해킹 위험이 낮음(다만 모든 노드를 해킹할 가능성 등을 배제할 수 없음)
  • 보안성, 무결성, 유효성 위해 해시, PKI, 합의 알고리즘 사용
  • 현재까지의 보안 위협은 주로 블록체인 자체보다 전자지갑 해킹 등에 맞추어져 있음

1.3 비용 절감

  • 거래 중개 기관이 불필요하므로 수수료 절감(예: 해외송금시 은행/SWIFT 수수료 발생)
  • 중앙 시스템 구축, 유지비용 절감

1.4 비가역성, 무결성

  • 한 번 저장하면 이전 상태로 돌릴 수 없고(비가역성), 저장된 데이터의 위/변조가 불가(불변성)하므로 무결성 가짐
  • 신뢰의 강도는 네트워크 크기에 비례함
  • 한 곳에 모든 데이터를 보관하지 않으므로 SPOF (Single Point Failure) 없음

2. 블록체인 분류

네트워크 참여 방식에 따라 블록체인 유형이 public/private/consortium으로 나뉜다.

2.1 Public

  • 네트워크 참여에 제한이 없다. 누구나 네트워크에 참여하고 읽고 쓸 수 있다.

  • 운영 주체가 없기 때문에 코인을 발행하고 코인에 가치를 부여함으로써 네트워크를 유지시킨다.

  • 대표적인 예시는 비트코인, 이더리움.

  • 장점

    • 참여자가 늘어날수록 투명성과 보안성이 커진다.
  • 단점

    • 확장성 제한: 블록 하나의 크기가 정해져 있어 많은 양의 데이터를 넣을 수 없다.
    • 제한된 프라이버시: 선택적으로 정보를 공개할 수 없고 모든 노드에 공개해야 한다.
    • 계약 검증 취약: 거래의 신뢰성을 보장하는 제3자가 없어 계약의 정당성과 합법성을 검증할 수 없다.
    • 느린 속도: 블록 시계열을 생성하기 때문에 병렬 처리를 할 수 없어 속도가 느리다.
    • 합의 알고리즘: PoW, PoS 외에도 다양한 합의 알고리즘이 있으나 전원이 동의하는 알고리즘은 없다.
    • 법적/책임 리스크: 사전에 노드 구성원 파악이 되지 않아 책임 소재 문제가 있다.
    • 양자컴퓨터의 위협: 양자컴퓨터로 인해 해시 기반 암호 체계가 붕괴될 위험이 있다. (해시 해독에 슈퍼컴퓨터로는 1여년이 걸리지만 양자컴퓨터로는 수시간이 걸린다. 공인인증서를 수시간마다 업데이트해야 하는 상황이 벌어진다...)

2.2 Private

  • 사전 합의된 규칙을 준수하는 자만 참여할 수 있다.
  • 관리자가 모든 권한을 가지고 있다.
  • 참여자가 적어 룰 변경 등이 매우 빠르다. 그러나 Public에 비해 투명성과 보안성이 떨어진다.
  • 단일 집단의 프로젝트에 적합하다.

2.3 Consortium

  • 참여자 각각의 동의를 받아야 참여할 수 있다. Public과 Private의 중간 단계.
  • 소속된 참여자가 권한을 가지고 있다.
  • Public은 모든 참여자가 블록을 검증하고 Private은 단일 주체가 블록을 생산하는데 반해 Consortium은 소수의 주체가 블록을 검증한다.
  • 한정된 다자간의 공통 트랜잭션을 공유해야 하는 경우 적합하다.

2.4 요약

  • 투명성과 익명성이 중요한 경우 → Public
  • 안정성과 속도가 중요한 경우 → Private
  • 협의를 통한 이해관계 조정이 필요한 경우 → Consortium

2022-07-13

1. 블록체인 특성

1.1 왜 블록체인을 선택할까?
단순히 정보를 저장하려는 목적만 있다면 DB를 사용하는 것이 나을 수도 있다. 블록체인 사업을 기획하려면 '블록체인을 사용할 때 어떤 이슈가 해결되는지'를 충분히 검토해야 한다. 아래와 같은 블록체인 특성을 고려하여서 '왜 블록체인을 사용하는지'를 설명해야 한다.

  1. 공유성
    모든 노드가 정보를 공유한다.
  2. 투명성
    정보를 공유하기 때문에 숨기는 항목이 (거의) 사라진다.
  3. 무결성
    정보 조작이 어렵다.
  4. 신뢰성
    무결한 정보를 공유함으로써 노드 사이에 신뢰가 형성된다.
  5. 탈중앙성
    (1) 중개비용 감소; 제3신뢰중개기관(Trusted Third Party)을 거치지 않아 중개기관에서 발생하는 비용, 시간을 절약할 수 있다. (해외송금할 때 중개수수료를 보낼 필요가 없는 것처럼)
    (2) 공유비용 감소; 제3자를 거치지 않고 노드에 공유가 되기 때문에 공유에 드는 비용을 줄일 수 있다. (다만 합의 알고리즘 때문에 공유 전체에 걸리는 시간은 DB보다 오래 걸릴 수밖에 없다. 제3자를 거칠 때보다 시간이 줄어든다는 이야기.)
    (3) 개인 권리 강화; 개인정보를 중앙 기관에 맡기지 않고 블록체인으로 개인 이력을 추적할 수 있어서(내 개인정보가 어디에 쓰이는지 파악할 수 있어서) 개인의 권리가 강화되는 효과가 있다.

1.2 왜 블록체인을 선택하지 않을까?
항상 블록체인이 해법은 아니다. 만약 DB로 충분히 해결 가능한 비즈니스라면 굳이 블록체인을 도입할 필요는 없다. 블록체인은 아래와 같은 문제에 취약하다.

  1. 낮은 효율성
    새로운 블록이 추가되려면 모든 블록의 암호화 확인 절차가 필요하다. 이 때문에 처리속도가 느려, 빠른 거래가 필요한 분야에는 적절하지 않다.
  2. 병렬화 불가
    앞의 블록에 연결하는 '체인' 형태이기 때문에 여러 블록을 병렬처리할 수 없다. 하나가 처리된 후에 다음을 처리하는 직렬처리만 가능하다.
  3. 미흡한 기술/소프트웨어
    블록체인 관련 프로젝트 개발 수준이 다소 미흡한 면이 있다.
  4. 안전 위험
    블록체인은 암호화 기술에 의존하고 있는데, 모든 프로젝트의 알고리즘의 안전성이 검증되지는 않았다.
  5. 신뢰성
    신뢰성을 높이려면 많은 노드가 필요하지만 많은 노드가 들어오면 비용이 증가한다(불확정성 원리처럼 신뢰성를 올리면 효율이 떨어지는...OFFSET 관계)
  6. 확장성
    블록체인은 많은 양의 트랜잭션을 처리하기 어렵다. 사용자 수와 거래 수가 증가하면 한정된 블록 크기로는 이를 처리하기 어렵다.

2. Public 보완책

2.1 세그윗(Segregated Witness)
블록 사이즈가 커지면 속도가 느려지기 때문에 용량을 크게 늘릴 수는 없다. 그 대안으로 트랜잭션과 디지털 서명을 모두 담는 기존 방식과 달리 트랜잭션만 블록 안에 넣고 디지털 서명은 따로 저장하는 방식을 세그윗이라고 한다.

2.2 라이트닝 네트워크(Lightning Network)
비트코인은 거래가 발생할 때마다 블록에 기록한다(On-Chain 방식). 그 대안으로 별도의 채널에서 트랜잭션만 주고받다가 일정 주기 후에 최종 정산 값만 저장하는 방식을 라이트닝 네트워크라고 한다.

2.3 작업증명 방식 전환
현재 이더리움은 작업증명(Proof of Work) 방식을 사용하는데, 이를 지분증명(Proof of Stake) 방식으로 변경할 계획이다.

  • PoW: 컴퓨팅 파워를 이용해서 문제를 해결하는 사람이 채굴
  • PoS: 암호화폐 지분량에 비례하여 채굴 권한을 부여
  • DPoS: 암호화폐 지분을 가진 사람 중 특정인을 투표를 통해 선발하여 채굴 권한을 부여

2.4 Private Blockchain
Private도 Public의 대안으로 나온 개념이다. 특정 노드만 참여하기 때문에 높은 신뢰성, 빠른 처리속도, 높은 확장성을 가진다. (거래비용, 개방성, 탈중앙성을 낮추는 대신 속도와 확장성을 올리는 방식)

3. 이더리움

3.1 배경

  • 비트코인 코드는 활용하기 어려워(예: loop가 안 돌아간다...) 탈중앙화된 어플리케이션을 만들기 위한 스크립팅 언어의 필요성이 생겼다.
  • 2015년 7월 완벽한 튜링 언어(Turing-complete language)가 내장된 블록체인이 배포되었다.

3.2 특징

  • 스마트 컨트랙트로 어플리케이션을 만들 수 있는 오픈소스 소프트웨어이다.
  • 이를 이용해서 EVM(Etherium Virtual Machine)에서 동작하는 어플리케이션을 DApp이라고 한다.
  • 비트코인과 유사하게 블록 번호, 이전 블록 정보, 해시트리, 트랜잭션 정보 등을 담고 있고 그 외 엉클 블록(uncle block: 첫 번째가 아닌 다음 순서에 마이닝된 블록)과 가스(화폐와 유사) 등의 개념이 추가되었다.

3.3 등록 방식 및 GAS
1. 거래를 등록하려는 사람이 임의의 GAS량을 책정해서 거래를 등록한다.
2. 채굴이 되면 정산이 이루어지고, 책정된 GAS가 채굴자에게 전송된다. (은행에 내던 수수료를 여기다 주는 느낌...?)

  • 장점: 거래 등록에 GAS가 소모되기 때문에 무분별한 거래 등록으로 인한 트래픽 과중을 방지한다.
  • 단점: GAS가 없으면 거래할 수 없다.
    Ethereum_process

2022-07-14

1. 이더리움 2.0

(현재 개발 중!)

  • 지분 증명
    작업증명 방식은 블록체인 규모가 커질수록 연산 자원을 많이 필요로 하기 때문에 블록체인 확장을 어렵게 한다. 따라서 일정 조건의 이더리움을 보유한 노드에게 검증을 맡기는 지분 증명 방식으로 전환한다.
  • 샤딩
    샤드는 DB의 데이터 중 일부를 분할하여 관리하는 것을 말한다. (엑셀 파일 행이 너무 많으면 일부 행을 추출해서 다른 파일로 저장하듯이) 이더리움의 샤딩은 각 노드에 모든 정보를 저장하지 않고 일부 정보만 관리하는 방식이다. 이를 통해 트랜잭션 처리량과 이더리움 전체 용량이 증가할 수 있다.
  • 비콘 체인
    병렬처리를 하려면 노드 간의 상태를 동기화시켜주어야 한다. 비콘 체인은 병렬로 운영되는 모든 샤드 체인의 동기화를 지원한다.

시계열로 저장해야 하는데 어떻게 병렬처리를 하지?

2. 하이퍼레저 Hyperledger

2.1 채널 기능
Hyperledger_chanel

하이퍼레저는 한 블록체인 네트워크 안에 여러 개의 '채널'을 만들 수 있다. A, B, C, D라는 네 사람이 블록체인 네트워크를 만들었다고 가정해보자. 그 와중에 A, C는 자기들끼리만 블록체인을 보고 싶다고 하자. 이더리움이었다면 A, C만 참여하는 블록체인 네트워크를 다시 만들어야 한다. 하지만 하이퍼레저를 이용한 네트워크에서는 '채널 1'을 하나 만들어 '채널 1'만 볼 수 있는 '블록체인'을 따로 만들 수 있다. 하나의 네트워크 안에서 여러 개의 채널과 블록체인을 만들고 참여 권한을 부여할 수 있다는 점이 하이퍼레저의 큰 특징이다.

2.2 합의 알고리즘
Hyperledger_process

  1. 클라이언트가 트랜잭션(거래)을 요청한다.
  2. Endorser(보증) 참여자에게 해당 트랜잭션이 적합한지 체인코드를 이용해 시뮬레이션한다. 적합하다고 판단하면 시뮬레이션 결과 파일에 전자서명을 해서 클라이언트에게 보내준다.
  3. 클라이언트는 Endorser로부터 거래가 적합하다는 인증을 받으면 Orderer(순서) 서비스에게 블록 생성을 요청한다.
  4. Orderer는 클라이언트들로부터 받은 거래의 타임스탬핑을 보고 거래의 순서를 정렬한다.
  5. 순서 정렬이 끝나면 Orderer가 블록을 생성해서 Committer 참여자에게 보낸다.
  6. Committer 참여자들이 블록을 한 번 더 확인한 후 블록을 확정해서 모든 노드에 전송한다.

2022-07-15

1. 하이퍼레저 Hyperledger (이어서)

1.1 Private Data
비즈니스 정보나 개인정보를 다룰 때에는 공유의 목적을 달성하면 그 데이터(private 데이터)를 지울 필요가 있다. 하이퍼레저는 개별 채널을 만들지 않고도 private 데이터 컬렉션을 생성하는 기능을 제공한다. private 데이터 삭제를 요청하면 노드 전체에서 삭제가 된다.

1.2 Raft (합의 알고리즘)
앞에서 Orderer가 거래의 순서를 정렬한 후 블록을 생성한다고 설명했다. 이 과정에서 Orderer가 여러 노드일 수도 있는데, 이 때 블록을 생성하는 노드를 Leader라고 부른다. 특정 주기마다 Orderer 중에서 Leader을 투표로 선출하고 그 Leader가 블록을 만드는 방식을 Raft 합의 알고리즘이라 부른다.

1.3 하이퍼레저가 적합한 프로젝트

  • 토큰이 필요없는 경우
  • 기밀성 정보와 공유 정보가 동시에 필요한 경우(channel)
  • 비가역성 데이터와 삭제해야 할 데이터(private)가 있는 경우

2. Chains

  • Onchain
    블록체인 네트워크에서 일어나는 트랜잭션을 OnChain이라 부른다. 지금까지 살펴본 모든 거래를 OnChain이라고 보면 된다.
  • OffChain
    반대로 블록체인 네트워크 외부에서 발생하는 트랜잭션을 OffChain이라 부른다. 기존에 사용하는 중앙화 방식을 말한다. 중앙 기관에서 데이터를 관리하고 그 정보를 블록체인 네트워크와 연결한다.
  • InterChain
    서로 다른 블록체인을 연결하는 네트워크를 말한다.
  • SideChain
    블록체인 메인체인의 하부 체인을 말한다. 사이드체인은 자체적인 합의 알고리즘을 가지지만 메인체인이 없으면 동작하지 않는다.

3. 블록체인 오라클 문제

3.1 블록체인 오라클 문제
블록체인 외부의 데이터(예: 웹 API에서 받은 정보)를 블록체인 내부로 가져오는 도구를 블록체인 오라클(중개자)이라고 부른다.
이 경우, 외부 데이터가 잘못되었거나 오라클이 정보를 조작할 가능성을 배제할 수 없다. 블록체인 자체가 신뢰성을 보장한다 하더라도 입력되는 데이터 자체를 신뢰할 수 없는 문제가 발생한다. 이를 블록체인 오라클 문제라고 부른다. 블록체인 서비스를 기획할 때에는 위 문제를 방지하는 데이터 검증 과정을 반드시 고려해야 한다.

3.2 블록체인 오라클 문제 해결 방안

  • 투표
    지분증명 방식 등을 기반으로 투표를 해서 데이터 신뢰성을 판단한다.
  • 중앙값
    왜곡된 데이터를 피하기 위해 데이터 셋 중 MEDIAN을 선택한다. 데이터를 정렬할 수 없는 경우라면 사용하기 어렵다.
  • 중간자
    신뢰할 수 있는 데이터 제공자(중간자)를 두는 방법이다. 다만 중간자 조직은 새로운 형태의 중앙이 될 가능성이 있기 때문에 탈중앙화 관점에서는 적절하지 않을 수 있다.

2022-07-19

1. 합의 알고리즘

1.1 정의

1.2 선택 규칙
합의 알고리즘은 '블록을 누가 생성할 것인지', '만약 블록이 여러 개가 동시에 생겨서 체인이 갈라졌으면(체인포크) 어디에 뒷 블록을 붙일 것인지'를 결정해야 한다.
1. 블록선택 규칙
누구에게 블록생성 권한을 줄 것인지 정하는 규칙이 '블록선택 규칙'이다. (예: PoS, PoW)
2. 체인선택 규칙
여러 사람이 블록을 생성하다보면 체인이 한 가닥이 아니고 여러 갈래로 나뉠 수 있다(체인포크). 이렇게 되면 다음 블록을 어느 갈래에 붙여야할 지 정해야 한다. 이 때 어느 갈래를 선택할지 결정하는 규칙이 '체인선택 규칙'이다. (예: 비트코인-Longest chain, 가장 긴 체인을 선택, 이더리움-Ghost, 트랜잭션이 가장 많은 체인을 선택)

1.3 경쟁방식 합의 알고리즘

  • 특징
    동시에 여러 노드가 합의에 참여하고 경쟁을 통해 특정 조건을 만족하는 하나의 합의만을 인정한다. 하나만 인정함으로써 체인의 통일성을 유지한다.
  • 장점
    모든 노드가 증명에 참여할 필요가 없고, 악의적 비참여가 문제가 되지 않는다.
  • 단점
    여러 노드가 블록생성에 참여하기 때문에 블록이 동시에 여러 개가 생성되는 체인포크가 발생할 수 있다. 체인선택 규칙에 의해 선택하지 못한 체인은 작업 내용이 무효화되기 때문에 리소스 낭비가 발생한다.
  • 예시: DPoS, PoS 등

1.4 비경쟁방식 합의 알고리즘

  • 특징
    한 번에 하나의 합의만을 진행한다. 정해진 노드만이 블록을 생성하기 때문에 포크가 생기지 않아 체인선택 규칙이 그다지 중요하지 않다.
  • 장점
    빠르게 합의가 가능하고 리소스를 낭비하지 않는다.
  • 단점
    블록 생성 노드를 정하기 때문에 악의적인 투표가 발생할 수 있고, 탈중앙화 효과가 다소 떨어진다.
  • 예시: PBFT 등

2. PoW(Proof of Works)

2.1 특징

  • 어려운 문제를 빨리 푼 노드에게 블록 생성 권한을 준다.
  • 과반수 이상의 동의를 얻은 블록을 체인에 연결한다.
  • 거래내용을 조작하기 위해서는 과반수 이상의 참여자보다 빠르게 배포하거나, 노드의 절반 이상을 차지해야 한다.
  • 블록이 생기기 전까지 이중지불(하나의 화폐로 여러 번 결제)이 발생할 수 있다. 이를 방지하기 위해 UTXO 형식으로 거래한다. UTXO는 일종의 돈봉투같은 것인데, 거래할 때 특정 금액을 담을 수 있는 돈봉투(UTXO)를 보내는 방식이다. UTXO의 이동은 트랜잭션과 무관하게 바로 일어나기 때문에 존재하지 않는 화폐로 지불하는 이중지불을 방지한다.

    UTXO(Unspect Transaction Outputs)
    코인은 지갑에 저장되는 것이 아니라 UXTO에 저장되어 있고, UTXO가 소유자의 지갑 주소로 연결되는 방식이다. 거래를 하면 지불자는 본인 지갑에 연결된 UXTO 만큼 거래를 할 수 있다. 예를 들어 5코인/3코인/2코인 UTXO가 내 지갑에 연결되어 있으면 나는 10코인을 소유한 것과 같다. 만약 내가 11코인을 지불하려고 한다면 해당 UTXO가 없기 때문에 지불이 일어나지 않는다.
    구체적인 설명은 여기 잘 나와 있다.

2.2 장점

  • 보안성이 높다.

2.3 단점

  • 체인포크가 발생할 수 있다.
  • 전력 등 리소스 낭비가 크다.
  • 합의가 오래 걸린다.

3. PoS(Proof of Stake)

3.1 특징

  • 노드가 보유한 암호화폐 지분에 비례하여 블록 생성 권한을 준다.
  • 거래내용을 조작하기 위해서는 과반 이상의 암호화폐를 가져야 한다.

3.2 장점

  • 리소스 낭비가 적다.
  • 지분을 담보로 잡고 있으므로 블록 생산자가 네트워크에 부정적인 영향을 미칠 확률이 적다.

3.3 단점

  • 체인포크가 발생할 수 있다.
  • PoW에 비해 보안성 검증이 되지 않았다.
  • 초반 지분을 기준으로 하기 때문에 지분이 높은 노드가 권력을 독점할 수 있다.

4. DPoS(Delegated Proof of Stake)

4.1 특징

  • 지분을 가진 노드(증인)의 표를 받은 노드에게 블록 생성 권한을 준다. 마이너와 마이너에게 투표한 노드들에게 블록 생성 보상이 주어진다.

4.2 장점

  • PoS에 비해 빠르게 처리가 가능하다.
  • PoW에 비해 비용이 낮다.
  • 증인이 투표에 참여할 인센티브가 분명하다.

4.3 단점

  • 증인 간 담합 위험이 있다.
  • 공개된 소수의 증인에 대한 디도스 공격 위험이 있다.

5. 기타 합의 알고리즘

5.1 PoA(Proof of Authority)

  • 지분을 지불해서 Authority를 증명한 노드에게 블록 생성 권한을 준다. (Authority를 증명한 노드들 중에서 가장 '평판'이 좋은 노드가 선발된다. 그치만 '평판'이 정확히 뭔지는 잘 모르겠다...)
  • 하나의 노드가 블록을 생성하는 중앙집중 형태이다.

5.2 RAFT
(자세한 설명은 Hyperledger 내용에 있음)

  • 복수의 Orderer에게 노드가 투표를 해서 블록을 생성할 Leader을 선출한다.

5. 스마트 컨트랙트

5.1 스마트 컨트랙트

  • 특정 계약을 스스로 수립, 검증, 이행하기 위한 컴퓨터 프로그램
  • 블록체인 외부에서 일어나는 일을 블록체인 내부로 끌어오기 위해 사용자가 실행하는 프로그램. 스마트 컨트랙트 실행 결과는 블록체인 네트워크에 저장되어 노드에게 공유된다.
  • 계약 당사자가 계약 조건과 계약 내용을 미리 프로그래밍한다. 이후 별도의 계약 중재자 없이도 계약 조건이 달성되면 계약 내용이 자동으로 실행된다.
  • 스마트 컨트랙트는 블록체인의 모든 노드에게 배포된다.
  • 블록체인은 스마트 컨트랙트를 구현한 최초의 사례이다.

5.2 유형

  1. 코드내재 계약형
    계약 조건이 스마트 컨트랙트에 들어가 있어 계약까지 자동으로 실행되는 경우
  2. 코드외재 계약형
    계약 자체는 외부에서 이루어지고, 그 계약의 결과가 블록체인 네트워크에 저장되는 경우 (법적 책임을 따져야하는 경우 사용함)

변화 관리
기존 사업모델을 스마트 컨트랙트로 이관하려면 결국 이해관계자 간의 합의가 필요하다. 합의하고 사업 모델을 변경하는 과정에서 불편이 발생할 수밖에 없고, 기획자는 이해관계자 간의 의견을 잘 조율하여야 한다. 이를 '변화 관리'라고 부른다.

2022-07-20

1. 스마트 컨트랙트(이어서)

1.1 블록체인과 스마트 컨트랙트의 관계
BlockChain_and_SmartContract

블록체인의 각 노드는 이전까지의 거래내역이 담긴 블록체인과, 현재 잔고(?) 상태를 보여주는 World State, 스마트 컨트랙트를 가지고 있다. 스마트 컨트랙트를 실행하면 그 상태는 World State에 저장되고 거래 결과는 블록체인에 저장된다.

World State
이전 거래 내역이 아니라 '현재'의 잔고만 보여준다. 블록체인이 거래 내역이 나오는 통장이라면, World State는 잔고만 나오는 ATM 화면이다. 위에서 말한 비트코인의 UTXO의 기능은 World State의 기능과 대응하는 면이 있다.

1.2 기존 계약 vs. 스마트 컨트랙트

절차 기존 계약 스마트 컨트랙트
1 두 당사자가 계약을 희망한다. 두 당사자가 계약을 희망한다.
2 협상을 위해 두 당사자가 모두 변호사를 고용한다. 두 당사자가 모든 계약조건에 동의한다.
3 두 당사자가 모든 계약조건에 동의한다. 계약조건을 컴퓨터가 인식 가능한 코드로 작성한다.
4 계약조건이 이행되지 않으면 변호사 등이 계약이행을 강제한다. 분산원장체계에 의해 계약조건이 시행된다.

1.3 스마트 컨트랙트 이슈
현실 세계의 계약을 스마트 컨트랙트로 변환하려면 아래 이슈를 고민해야 한다.

  1. 모든 노드가 계약의 내용을 볼 수 있어 프라이버시/개인정보 유출 위험 있음
  2. 계약의 '성립'과 '이행'을 구분하는 현재 민법과 개념이 대치됨
  3. 문제 발생시 책임 소재가 불분명함

2. DApp(Decentralized Application)

2.1 DApp 구조
탈중앙화된 블록체인을 이용해서 서비스를 제공하는 어플리케이션. DApp은 스마트 컨트랙트를 호출해서 스마트 컨트랙트를 실행한다.

2.2 전통적인 앱 vs. DApp

App_vs_DApp

특징 전통적인 앱 DApp
구동방식 프론트↔API↔데이터베이스 프론트↔스마트 컨트랙트↔블록체인
가용성 서버가 다운되면 정지 모든 노드가 다운되지 않는 한 정지 X
정보 투명성 데이터베이스 접근 권한 필요 모든 노드에게 공개
비용 일반적으로 사용 자체는 무료 일반적으로 코인 필요
거래 속도 상대적으로 빠름 상대적으로 느림

2.3 DApp 유형
모든 정보를 블록체인(OnChain)에 저장하는 대신 전통적인 데이터베이스(OffChain)를 함께 사용하는 경우도 있다.

  1. Contract Only
    스마트 컨트랙트만으로 구성된 DApp
  2. Save Data Only
    OffChain과 함께 사용하고, OncChain은 데이터 저장용으로만 사용하는 DApp
  3. Hybrid
    OffChain과 OnChain이 하나의 서비스를 만드는 DApp

2022-07-21

1. Digital Wallet

1.1 Digital Wallet
디지털자산을 주고받거나 거래하기 위한 개인의 '주소'. 이용자가 블록체인 네트워크 상에서 디지털자산 지갑을 개설하면 공개키와 개인키를 부여받는다.
디지털자산 지갑은 키와 암호화폐 주소를 관리해서 암호화폐 전송과 보관을 할 수 있게 만든다.

1.2 Digital Wallet 종류
지갑의 종류는 물리적 형태, 온라인 접속 여부에 따라 구분한다.

종류 Hot Wallet Cold Wallet Cloud Wallet
개념 소프트웨어 지갑 물리적 지갑(보안USB 등) 클라우드 내 소프트웨어 지갑
물리적 실체 없음 있음 없음
네트워크 연결 상시 연결 상시 연결 X 상시 연결을 "보장"
해킹 위험 높음 낮음 높음

Hot Wallet vs. Cloud Wallet
둘 다 온라인에 연결된 소프트웨어 지갑이다. 다만 Hot Wallet은 디바이스를 종료하거나 로컬 스토리지에서 삭제하면 키에 접근할 수 없지만, Cloud Wallet은 그와 무관하게 상시 네트워크에 연결 되어있어 언제든지 접근할 수 있다.

2. NFT(Non-Fungible Token)

2.1 NFT
디지털 자산의 고유한 가치와 소유권을 기록하기 위한 블록체인 기반 '토큰'. 현재 NFT는 대부분 이더리움을 기반으로 한다.

코인 vs. 토큰

종류 코인 토큰
개념 물리적인 화폐와 유사한 디지털 화폐 특정 프로젝트에서 발행한 디지털 자산
블록체인 네트워크 특정 블록체인 네트워크 내에서 유통 여러 블록체인 네트워크에서 유통 가능
용도 결제 디지털 동의, 소유권 이전 등
이더리움, 리플 BON, DAO 토큰

2.2 교환/대체 불가

  • 특정 '자산' 그 자체를 다루기 때문에 교환/대체가 불가능하다. (내가 그린 기린 그림을 네가 그린 구름 그림으로 대체할 수 없다는 것과 유사한 느낌)
  • 블록체인을 이용해 디지털 자산에 고유한 값을 부여한 인증서가 있어 대체가 불가능하다.
  • 자산 그 자체가 아니라 '소유권'을 교환한다.

2.3 NFT Life Cycle
1. 탈중앙화 저장소에(IPFS 등) 원본 파일을 등록한고 NFT를 발행한다(Minting).
2. 마켓플레이스에서 소유권 판매/구매가 일어난다.
3. 소유권 보유자는 마켓플레이스에서 재판매 할 수 있다.

왜 블록체인에 파일을 올리지 않고?
블록체인은 대용량의 파일을 올리기에 적절하지 않다. 그래서 파일은 탈중앙화된 저장소에 업로드하고, 업로드된 파일의 주소를 (무결성 검증을 한 후) 블록체인에 저장한다.

2022-07-22

1. Web3.0

1.1 Web1.0
정보 공유가 주목적인 HTML로만 이루어진 단방향 웹. 생산자만 콘텐츠 업로드가 가능하고 사용자는 불가능한 초기 웹 형태.

1.2 Web2.0
개방, 공유, 협력을 가치로 하는 양방향 웹. 다른 사용자의 콘텐츠에 참여할 수 있다.
그러나 웹서비스 소유자가 사용자의 동의 없이 운영 정책을 변경하고, 데이터를 제3자에게 제공하여 프라이버시를 침해하고, 서비스 수익은 사용자의 참여로부터 나옴에도 불구하고 소유자가 독점한다는 문제가 있다.

1.3 시맨틱 웹(Semantic Web)
Web1.0, Web2.0에서는 사용자가 정보를 일일이 검색해야 한다. 그 대안으로 구조화된 데이터를 정의하고, 구축(Ontology)하고, 구축된 데이터를 연결(Link Data)하여 지능적인 자료처리를 하는 웹을 목표로 한다. 특정 정보를 검색하면 사용자가 원하는 정보를 찾아 클릭하며 찾아다니지 않아도 자동으로 연결된 데이터를 보여준다.

1.4 탈중앙화 웹(Decentralized Web)
플랫폼 기업(웹서비스 소유자)가 서비스를 통제하는 중앙집중형 웹에 대항하는 개념. 사용자가 데이터나 프라이버시를 완벽하게 제어할 수 있는 웹을 목표로 한다.

1.5 Web3.0
시맨틱 웹과 탈중앙화 웹을 포괄하는 개념.
인공지능과 블록체인을 기반으로 '맞춤형 정보'를 제공하는 '탈중앙화' 인터넷 환경을 말한다. 플랫폼 기업이 독점하고 있는 중앙집중화된 인터넷 환경을 개선하기 위해 탈중앙화를 실현하고 사용자가 데이터를 소유할 수 있는 웹을 목표로 한다.

2. 업무 블록체인 적용 사례

2.1 공급망 관리(SCM)

  • Suppliers; 부품 공장에서 각 부품의 정보를 (블록체인에) 기록한다.
  • Producer; 생산에 사용한 부품 내역과 생산 정보를 기록한다.
  • Distributor; 제품의 운송 정보를 기록한다.
  • Retailer/Store; 제품의 판매 정보를 기록한다.
  • Customer; 구매한 제품의 부품, 생산, 운송, 판매 정보를 확인한다.

2.2 의료

  • IoT 의료기기가 환자의 건강 정보를 기록한다.
  • 병원이 환자의 질병과 처방을 기록한다.
  • 약국이 환자의 약 수령을 기록한다.
  • 보험사가 환자의 건강 정보, 질병, 처방, 수령 내역을 확인한다.

2022-07-25

1. 망 구성

Network

1.1 망 구성

  • 내부망: 조직 내에서 인터넷이 아닌 내부 네트워크를 통해 PC끼리 통신하는 망을 말한다.
  • DMZ: 외부에 서비스를 제공할 때 내부망을 보호하기 위해 내부 네트워크와 분리한 망을 말한다.
  • 인바운드 Inbound: 서버가 사용자로부터 메시지를 받는(in) 것을 말한다. 그 중 유효한 메시지만 필터링하는 과정을 InGress라고 한다.
  • 아웃바운드 Outbound; 서버가 사용자에게 메시지를 보내는(out) 것을 말한다. 마찬가지로 이를 필터링하는 과정을 EGress라고 한다.

1.2 망 구성 방안
만약 블록체인을 설치해야 한다면 어디에 해야 할까?
내부망이라고 생각할 수도 있지만, 내부망에 드나드는 인바운드와 아웃바운드는 보안상 철저히 통제되어야 한다. 허가된 포트(port)를 통해서만 정보가 오가기 때문에 노드가 늘어날수록 포트를 그만큼 열어주어야 한다. 프라이빗도 아니고 퍼블릭 블록체인이라면 더더욱 내부망에 두어서는 안된다.

참여자 성격에 따른 망 구성 방안
참여자가 ICT 운영 여력이 있다면 DMZ에 노드를 설치하고 포트를 사용할 수 있다. 다만 운영 여력이 없다면 클라우드에 설치하는 것이 더 좋은 방법이다.

2022-07-26

1. 클라우드 컴퓨팅

1.1 클라우드 컴퓨팅이란
가상화된 IT자원(SW, 스토리지, 서버 등)을 서비스로 제공하고, 서비스 부하에 따라 실시간 확장성을 지원하여 사용한 만큼 비용을 청구하는 컴퓨팅 기술. AWS, GCP 외에도 드롭박스, 구글 워크스페이스 등도 포함하는 개념이다.

G-Cloud
우리나라 공공기관, 공기업은 자체적으로 구성한 클라우드 혹은 G-Cloud 인증을 받은 민간 클라우드만(예: 네이버클라우드, KT클라우드 등) 사용할 수 있다.

1.2 클라우드 컴퓨팅 유형
Cloud_Computing_Service_type

서비스 제공 범위에 따라 IaaS(Infra as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)로 분류한다.
IaaS

또한 서비스 제공주체에 따라 퍼블릭과 프라이빗으로 분류할 수 있다. 퍼블릭은 AWS, GCP와 같이 외부에서 제공하는 클라우드를 말하고, 프라이빗은 내부 자원을 모아서 자체적으로 구성하는 클라우드를 말한다.

이 글이 글에 유형 설명이 잘 나와있다.

멀티 클라우드
여러 개의 퍼블릭 클라우드를 사용해 하나의 서비스를 운영하는 방식이다. 예를 들어 AWS, GCP 두 개를 이용해서 서비스를 운영하면 둘 중 하나가 다운되더라도 서비스가 동작할 수 있다.

퍼블릭 클라우드
퍼블릭 클라우드와 프라이빗 클라우드를 혼합해서 하나의 서비슬르 운영하는 방식이다. 중요한 활동은 프라이빗에서, 덜 중요한 활동은 퍼블릭에서 수행한다.

1.3 블록체인 클라우드 서비스(BaaS)
클라우드 컴퓨팅 솔루션을 이용해 사용자가 블록체인 앱, 스마트 컨트랙트 등을 빌드하고 사용할 수 있도록 하는 서비스를 말한다. PaaS 범위에 속한다.

1.4 클라우드 한계
1. 클라우드 기능에 서비스를 맞추어야 한다.
2. 성능이 일관적이지 않고, 광고보다 성능이 낮아질 수 있다.
3. 직접 서버를 관리하는 것보다 비용이 더 들어갈 수 있다.
4. 플랫폼 특성상 클라우드 서비스를 제공하는 벤더의 권한이 더 커질 수 있다.

2022-07-29

1. 블록체인 연계 기술

1.1 QR코드
매트릭스 형식의 2차원 바코드. 2차원이기 때문에 기존의 1차원 바코드보다 많은 정보를 넣을 수 있다.

QR코드 엄청 많이 생성하는데 자기들끼리 안겹치나?
최근에 코로나 인증 때문에 QR코드를 빈번하게 생성하면서 이런 궁금증이 생겼다. 확인해보니 QR코드 생성기는 일종의 해시함수와 비슷해서, 원문이 동일하면 그 QR코드도 동일하다고 한다.

2. 블루투스
근거리의 전자기기를 무선으로 연결하여 실시간으로 쌍방향 통신이 가능하게 만드는 근거리 무선 데이터 통신 규격. 별도의 면허 없이 사용할 수 있는 ISM(Industry, Science, Medical) 밴드의 주파수를 사용한다.

3. 미라이봇넷
디지털카메라나 라우터 등의 IoT 디바이스를 좀비(악성코드가 심겨 DDos 공격을 하는 디바이스)로 만들어 DDos 공격을 수행하는 악성코드. pc보다 상대적으로 보안이 취약한 IoT를 이용하는 것이다.

미라이?
미라이가 일본어로 그 미라이(미래)다. 제작자가 좋아하는 애니 주인공 이름이었단다....... 뭔가 의미가 있을 줄 알았는데...

2. IPFS(Inter Planetary File System)

2.1 IPFS
네트워크 참여자가 전체 데이터의 일부를 저장하는 P2P 기반의 분산 파일 시스템. 토렌트(...)와 비슷한 시스템이다.

2.2 블록체인 vs. IPFS
컨셉은 블록체인과 비슷하지만 아래와 같은 차이가 있다.

  • 대용량 데이터를 저장할 수 있다.
  • 삭제가 가능하다.

2.3 블록체인과 IPFS 연계
BlockChain_and_IPFS

  1. 유저A가 파일을 IPFS에 저장한다.
  2. IPFS에 저장된 파일의 경로를 해시값으로 반환한다.
  3. 블록체인에 해시값을 저장하여 블록을 생성한다.
  4. 유저B가 해당 파일의 해시값을 이용해 파일을 요청한다.
  5. IPFS에서 파일을 찾아 유저 B에게 반환한다.

2. 인공지능

2.1 연합학습 Federated Learning
인공지능 모델 개발에는 대용량 데이터와 높은 컴퓨팅 파워가 든다. 그래서 일반적으로 중앙 서버에 데이터를 저장해서 그 데이터로 모델을 만든다. 하지만 개인정보 등은 서버에 저장하기 어렵다. 그 대안으로 나온 개념이 연합학습이다. (구글에서 처음 제시했는데, 아직 상용화된 기술은 아니라고 한다.)

  1. 개인 디바이스에 학습 모델 생성 코드를 배포한다.
  2. 디바이스에서 개인정보와 모델 생성 코드를 사용해 개인화된 학습 모델을 생성한다.
  3. 학습이 완료된 모델 정보를 중앙 서버로 보낸다.
  4. 중앙 서버는 개인정보를 저장하지 않으면서도 개인정보를 학습한 모델 정보를 받을 수 있다.

0개의 댓글