→ 블록체인이 항상 만능은 아님! BM 특성상 굳이 도입할 필요가 없는 경우도 있음(예: 단일 사용자의 정보 저장).
→ 블록체인은 문제 해결형+네트워크형에 적용되는 경우가 많음.
→ 다만 블록체인은 실시간성, 대용량 트랜잭션 등을 요구하는 서비스에는 부적합한 경우가 많음.
→ 중개자 없이 개인간의 거래, 가치, 자산 등을 이동시키는 교환 네트워크
→ 서로 신뢰할 수 없는 환경에서 신뢰를 보장하는 기술
각 블록은 최초의 블록(제네시스 블록) 이후에 생긴 모든 거래 내역을 가지고 있다. 새로운 블록은 이전 블록의 내용이 변경되지 않았음을 보증하는 체인을 가지고 있다. 이 체인을 이용하여 이전 블록과 연결한다. 연결이 완료되면 실제 거래가 이루어진다.
이 때 네트워크 내에서 시간이 동기화 되어야 하므로 블록이 발견된 날짜(타임스탬프)도 함께 가지고 있다.
블록체인 네트워크는 아래 세 가지를 반드시 검증해야 한다.
인증 VS. 부인방지
인증은 당사자의 자격을 검증하는 것이고
부인방지는 거래(데이터 송수신)에 대해 당사자가 누구인지 추적하는 것이다.
이를 위한 암호화 알고리즘을 알아본다.
블록체인은 무결성을 이용해 거래의 신뢰성을 높인다.
복호화 가능 여부에 따라 단방향과 양방향으로 나눈다.
4.1 해시함수 특성
데이터를 복호화할 수 없게 암호화하는 단방향 함수. 임의 길이의 메시지를 고정된 길이의 출력값(Message Digest, MD)로 변환한다. 데이터 변경 여부를 확인할 수 있으므로 무결성을 제공한다.
해시함수(h)는 아래의 특성을 가져야 한다.
제2역상 저항성 VS. 충돌 저항성
제2역상 저항성은 x가 주어진 상태에서 x'를 찾는 문제이고, 충돌 저항성은 복수의 해를 찾는 문제인 듯?
4.2 해시함수 기법
그러나 이러한 특성 때문에 동일한 두 개의 해시값이 있다면 두 개의 데이터가 동일하다는 점을 알 수 있다. 이를 해결하기 위해 나온 몇 가지 기법이 있다.
1) 해시 솔트(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.1 대칭키
5.2 비대칭키
6.1 ECB(Electronic Codebook)
암호화 속도를 빠르게 하기 위하여 모든 데이터를 일일이 암호화하지 않고, 일정 길이의 블록으로 나누어서 블록별로 암호화하는 방식. 블록을 병렬로 암호화하기 때문에 속도가 빠르다.
그러나 AAAA
BBBB
AAAA
와 같이 세 블록으로 나누어 암호화하면 AAAA
블록의 원문이 같음을 유추할 수 있다(해시에서 본 문제와 유사). 이 문제를 해결하기 위해 나오는 해법이 다음에 나오는 CBC, Counter.
6.2 CBC(Cipher-block Chaining)
첫 블록을 암호화할 때, 난수를 이용해 값을 변경한(XOR 연산) 다음 그 값을 암호화한다. 그리고 그 암호화 결과를 이용해 다음 블록의 값을 변경하고 그 값을 암호화한다. 이를 무한히 반복한다.
이처럼 이전 블록의 암호화 결과를 이용하기 때문에 Chaining이라고 부른다. 이 방법을 사용하면 똑같은 AAAA
블록이지만 암호화 결과가 다르게 나오는 것을 볼 수 있다. (이 과정을 좀 더 복잡하게 하는 PCBC(Propagating CBC)도 있긴 한데 그건 생략 😵)
하지만 ECB와 다르게 이전 블록의 결과를 기다려야하기 때문에 시간이 오래 걸리는 단점이 있다.
6.3 Counter
ECB처럼 병렬처리가 되면서 CBC처럼 임의성을 부여하기 위한 기법. 이전 블록의 암호화 결과를 사용하는 대신 임의의 Counter를 부여해서 블록 값을 바꾸고 암호화하는 방식이다. 예를 들어 첫 AAAA
블록에는 0000, BBBB
블록에는 0001, 두 번째 AAAA
에는 0010...과 같은 serial number인 Counter을 부여해서 병렬로 암호화하는 방식이다.
(CBC보다 간단해 보이는데 CBC보다 나중에 나온 게 신기...)
번역하면 '공개키 기반 구조'. 사용자가 전자거래를 할 때 사용하는 인증기관이 전자서명한 인증서를 관리하는 체계를 말한다. 공인인증서가 대표적인 예시이다.
부인방지(전자서명), 인증(전자인증서), 무결성(해시 이용), 기밀성(암호화 이용)을 제공한다.
1.1 PKI 인증서 발급 프로세스
액티브X를 사용한 이유
PKI는 레지스트리에 저장되어야 브라우저가 바로 찾을 수 있다. 하지만 우리나라 인증서는 'NPKI' 등과 같은 임의의 폴더 안에 저장하기 때문에 브라우저가 찾을 수가 없다. 그래서 인증서를 찾아주는 별도의 프로그램인 액티브X를 사용한 것이다.
1.2 PKI 인증서 검증 프로세스
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)를 이용해서 인증하는 기술이다.
전자서명은 개인키, 암호화는 공개키
'암호화'한 문서를 보낼 때에는 받는 쪽의 공개키로 암호화한다. 그렇게 하면 받는 사람의 개인키로만 복호화 할 수 있기 때문에, 받는 사람 외에는 원본을 아무도 알 수 없다.
'전자서명'은 전자서명을 하는(보내는) 쪽의 개인키로 암호화한다. 받는 사람말고는 못 읽게 하는 게 아니라, 보내는 사람이 서명한 것이 맞다고 보여주는 것이 전자서명의 목적이기 때문이다. 즉 공개된 키가 아니라 보내는 사람만이 가지는 키로 암호화하는 것이 타당하다. 그 후에는 받는 사람이 보내는 사람의 공개키로 복호화하여 '이게 A가 자신의 개인키로 서명한 것이 맞구나'하고 확인을 할 수 있다.
PKI는 비대칭키를 사용하기 때문에 암호화 속도가 오래 걸린다. 대칭키처럼 암호화 속도는 빠르게 하면서도 비대칭키처럼 키 관리는 편하게 하는 기법이 전자봉투이다.
왜 키로 키를 싸는거야? (3번)
비대칭키는 속도가 느린 대신 관리가 편하고, 대칭키는 관리가 어려운 대신 속도가 빠르다고 했다. 그래서 대칭키로는 (용량이 큰) 데이터를 암호화한 다음에, 관리가 편한 비대칭키로 (용량이 작은) 대칭키를 암호화하는 것이다.
결국 대칭키가 있으니까 관리해야 하잖아? 뭐가 좋다는 거야?(2번)
A랑 B가 항상 같은 대칭키를 써야한다면 그렇지만, 이제는 대칭키를 매번 바꾸어도 개인키로 암호화해서 그때그때 보내주면 되니까 상관없다! 즉 둘만 사용하는 일회용 자물쇠를 매번 B의 우편함에 꽂아주는 것이다.
분산화된 P2P 네트워크에서 모든 거래 내용이 기록, 검증 및 공개되는 데이터 저장 시스템이다.
헤더
1) 이전 블록의 해시 값 → 기존 블록의 무결성을 보장한다.
2) 타임스탬프; 블록이 생성된 시각
3) 논스; 블록의 해시값을 생성할 때 더해지는 값(솔트 비슷한 건가)
바디
1) 머클 루트(Merkle Root); 머클트리는 일정 시간동안 발생한 트랜잭션(거래 내역)과 그 해시값을 이진 트리 구조로 저장한 것으로, 트랜잭션의 무결성을 보장한다. 머클트리의 루트 부분을 머클 루트라고 부른다.
1.1 디지털화폐 vs. 가상화폐 vs. 암호화폐
디지털화폐 | 가상화폐 | 암호화폐 |
---|---|---|
법정화폐의 대체물로서 법정화폐을 더 사용하기 쉽게 형태를 바꾼 것이다. 네이버페이, 페이팔, 신용카드 등이 있다. | 특정 실물이 없이 네트워크로 연결된 특정 가상 공동체에서 사용하는 전자적 형태의 화폐이다(다만 디지털화폐와 구분이 명확히 되지 않는 경우도 있다). 싸이월드 도토리, 게임머니 등이 있다. | 중앙 관리자 없이 분산 장부(distributed ledger)에서 공개키 암호화를 통해 전송하고 해시함수로 소유권을 증명하는 디지털 자산이다. |
1.2 비트코인
2.1 분산 DB vs. 분산 원장 vs. 블록체인
분산DB | 분산 원장 | 블록체인 |
---|---|---|
논리적으로는 하나의 시스템에 속하지만 물리적으로는 여러 개의 장소에 분산되어 있는 DB. 분산된 노드의 데이터 일관성을 위해 트랜잭션을 관리하는 코디네이터가 있다. | 분산된 노드가 동일한 데이터를 가질 수 있도록 관리하는 합의 기술. 노드간 직접 접속 네트워크가 필요하고 노드 간 복제 데이터에 대한 합의 알고리즘이 수행되어야 한다. | 분산 원장의 한 형태. 변경이 불가능한 레코드 그룹을 암호화하고 연결한다. |
1세대
비트코인으로 인해 블록체인 논의가 본격적으로 시작되었다. 다만 가상통화 외의 응용가능성이 다소 낮다. 퍼블릭 블록체인이 시작되었다.
2세대
스마트 계약을 기반으로 다양한 응용이 가능하다. 이더리움으로 대표된다. 프라이빗 블록체인이 시작되었다.
3세대
범위가 확장되어 거버넌스 등에 적용된다. (아직 명확히 2세대와 3세대를 구분하지는 않는 듯 하다)
1.1 투명성
1.2 보안성
1.3 비용 절감
1.4 비가역성, 무결성
네트워크 참여 방식에 따라 블록체인 유형이 public/private/consortium으로 나뉜다.
2.1 Public
네트워크 참여에 제한이 없다. 누구나 네트워크에 참여하고 읽고 쓸 수 있다.
운영 주체가 없기 때문에 코인을 발행하고 코인에 가치를 부여함으로써 네트워크를 유지시킨다.
대표적인 예시는 비트코인, 이더리움.
장점
단점
2.2 Private
2.3 Consortium
2.4 요약
1.1 왜 블록체인을 선택할까?
단순히 정보를 저장하려는 목적만 있다면 DB를 사용하는 것이 나을 수도 있다. 블록체인 사업을 기획하려면 '블록체인을 사용할 때 어떤 이슈가 해결되는지'를 충분히 검토해야 한다. 아래와 같은 블록체인 특성을 고려하여서 '왜 블록체인을 사용하는지'를 설명해야 한다.
1.2 왜 블록체인을 선택하지 않을까?
항상 블록체인이 해법은 아니다. 만약 DB로 충분히 해결 가능한 비즈니스라면 굳이 블록체인을 도입할 필요는 없다. 블록체인은 아래와 같은 문제에 취약하다.
2.1 세그윗(Segregated Witness)
블록 사이즈가 커지면 속도가 느려지기 때문에 용량을 크게 늘릴 수는 없다. 그 대안으로 트랜잭션과 디지털 서명을 모두 담는 기존 방식과 달리 트랜잭션만 블록 안에 넣고 디지털 서명은 따로 저장하는 방식을 세그윗이라고 한다.
2.2 라이트닝 네트워크(Lightning Network)
비트코인은 거래가 발생할 때마다 블록에 기록한다(On-Chain 방식). 그 대안으로 별도의 채널에서 트랜잭션만 주고받다가 일정 주기 후에 최종 정산 값만 저장하는 방식을 라이트닝 네트워크라고 한다.
2.3 작업증명 방식 전환
현재 이더리움은 작업증명(Proof of Work) 방식을 사용하는데, 이를 지분증명(Proof of Stake) 방식으로 변경할 계획이다.
2.4 Private Blockchain
Private도 Public의 대안으로 나온 개념이다. 특정 노드만 참여하기 때문에 높은 신뢰성, 빠른 처리속도, 높은 확장성을 가진다. (거래비용, 개방성, 탈중앙성을 낮추는 대신 속도와 확장성을 올리는 방식)
3.1 배경
3.2 특징
3.3 등록 방식 및 GAS
1. 거래를 등록하려는 사람이 임의의 GAS량을 책정해서 거래를 등록한다.
2. 채굴이 되면 정산이 이루어지고, 책정된 GAS가 채굴자에게 전송된다. (은행에 내던 수수료를 여기다 주는 느낌...?)
(현재 개발 중!)
시계열로 저장해야 하는데 어떻게 병렬처리를 하지?
2.1 채널 기능
하이퍼레저는 한 블록체인 네트워크 안에 여러 개의 '채널'을 만들 수 있다. A, B, C, D라는 네 사람이 블록체인 네트워크를 만들었다고 가정해보자. 그 와중에 A, C는 자기들끼리만 블록체인을 보고 싶다고 하자. 이더리움이었다면 A, C만 참여하는 블록체인 네트워크를 다시 만들어야 한다. 하지만 하이퍼레저를 이용한 네트워크에서는 '채널 1'을 하나 만들어 '채널 1'만 볼 수 있는 '블록체인'을 따로 만들 수 있다. 하나의 네트워크 안에서 여러 개의 채널과 블록체인을 만들고 참여 권한을 부여할 수 있다는 점이 하이퍼레저의 큰 특징이다.
2.2 합의 알고리즘
1.1 Private Data
비즈니스 정보나 개인정보를 다룰 때에는 공유의 목적을 달성하면 그 데이터(private 데이터)를 지울 필요가 있다. 하이퍼레저는 개별 채널을 만들지 않고도 private 데이터 컬렉션을 생성하는 기능을 제공한다. private 데이터 삭제를 요청하면 노드 전체에서 삭제가 된다.
1.2 Raft (합의 알고리즘)
앞에서 Orderer가 거래의 순서를 정렬한 후 블록을 생성한다고 설명했다. 이 과정에서 Orderer가 여러 노드일 수도 있는데, 이 때 블록을 생성하는 노드를 Leader라고 부른다. 특정 주기마다 Orderer 중에서 Leader을 투표로 선출하고 그 Leader가 블록을 만드는 방식을 Raft 합의 알고리즘이라 부른다.
1.3 하이퍼레저가 적합한 프로젝트
3.1 블록체인 오라클 문제
블록체인 외부의 데이터(예: 웹 API에서 받은 정보)를 블록체인 내부로 가져오는 도구를 블록체인 오라클(중개자)이라고 부른다.
이 경우, 외부 데이터가 잘못되었거나 오라클이 정보를 조작할 가능성을 배제할 수 없다. 블록체인 자체가 신뢰성을 보장한다 하더라도 입력되는 데이터 자체를 신뢰할 수 없는 문제가 발생한다. 이를 블록체인 오라클 문제라고 부른다. 블록체인 서비스를 기획할 때에는 위 문제를 방지하는 데이터 검증 과정을 반드시 고려해야 한다.
3.2 블록체인 오라클 문제 해결 방안
1.1 정의
1.2 선택 규칙
합의 알고리즘은 '블록을 누가 생성할 것인지', '만약 블록이 여러 개가 동시에 생겨서 체인이 갈라졌으면(체인포크) 어디에 뒷 블록을 붙일 것인지'를 결정해야 한다.
1. 블록선택 규칙
누구에게 블록생성 권한을 줄 것인지 정하는 규칙이 '블록선택 규칙'이다. (예: PoS, PoW)
2. 체인선택 규칙
여러 사람이 블록을 생성하다보면 체인이 한 가닥이 아니고 여러 갈래로 나뉠 수 있다(체인포크). 이렇게 되면 다음 블록을 어느 갈래에 붙여야할 지 정해야 한다. 이 때 어느 갈래를 선택할지 결정하는 규칙이 '체인선택 규칙'이다. (예: 비트코인-Longest chain, 가장 긴 체인을 선택, 이더리움-Ghost, 트랜잭션이 가장 많은 체인을 선택)
1.3 경쟁방식 합의 알고리즘
1.4 비경쟁방식 합의 알고리즘
2.1 특징
UTXO(Unspect Transaction Outputs)
코인은 지갑에 저장되는 것이 아니라 UXTO에 저장되어 있고, UTXO가 소유자의 지갑 주소로 연결되는 방식이다. 거래를 하면 지불자는 본인 지갑에 연결된 UXTO 만큼 거래를 할 수 있다. 예를 들어 5코인/3코인/2코인 UTXO가 내 지갑에 연결되어 있으면 나는 10코인을 소유한 것과 같다. 만약 내가 11코인을 지불하려고 한다면 해당 UTXO가 없기 때문에 지불이 일어나지 않는다.
구체적인 설명은 여기 잘 나와 있다.
2.2 장점
2.3 단점
3.1 특징
3.2 장점
3.3 단점
4.1 특징
4.2 장점
4.3 단점
5.1 PoA(Proof of Authority)
5.2 RAFT
(자세한 설명은 Hyperledger 내용에 있음)
5.1 스마트 컨트랙트
5.2 유형
변화 관리
기존 사업모델을 스마트 컨트랙트로 이관하려면 결국 이해관계자 간의 합의가 필요하다. 합의하고 사업 모델을 변경하는 과정에서 불편이 발생할 수밖에 없고, 기획자는 이해관계자 간의 의견을 잘 조율하여야 한다. 이를 '변화 관리'라고 부른다.
1.1 블록체인과 스마트 컨트랙트의 관계
블록체인의 각 노드는 이전까지의 거래내역이 담긴 블록체인과, 현재 잔고(?) 상태를 보여주는 World State, 스마트 컨트랙트를 가지고 있다. 스마트 컨트랙트를 실행하면 그 상태는 World State에 저장되고 거래 결과는 블록체인에 저장된다.
World State
이전 거래 내역이 아니라 '현재'의 잔고만 보여준다. 블록체인이 거래 내역이 나오는 통장이라면, World State는 잔고만 나오는 ATM 화면이다. 위에서 말한 비트코인의 UTXO의 기능은 World State의 기능과 대응하는 면이 있다.
1.2 기존 계약 vs. 스마트 컨트랙트
절차 | 기존 계약 | 스마트 컨트랙트 |
---|---|---|
1 | 두 당사자가 계약을 희망한다. | 두 당사자가 계약을 희망한다. |
2 | 협상을 위해 두 당사자가 모두 변호사를 고용한다. | 두 당사자가 모든 계약조건에 동의한다. |
3 | 두 당사자가 모든 계약조건에 동의한다. | 계약조건을 컴퓨터가 인식 가능한 코드로 작성한다. |
4 | 계약조건이 이행되지 않으면 변호사 등이 계약이행을 강제한다. | 분산원장체계에 의해 계약조건이 시행된다. |
1.3 스마트 컨트랙트 이슈
현실 세계의 계약을 스마트 컨트랙트로 변환하려면 아래 이슈를 고민해야 한다.
2.1 DApp 구조
탈중앙화된 블록체인을 이용해서 서비스를 제공하는 어플리케이션. DApp은 스마트 컨트랙트를 호출해서 스마트 컨트랙트를 실행한다.
2.2 전통적인 앱 vs. DApp
특징 | 전통적인 앱 | DApp |
---|---|---|
구동방식 | 프론트↔API↔데이터베이스 | 프론트↔스마트 컨트랙트↔블록체인 |
가용성 | 서버가 다운되면 정지 | 모든 노드가 다운되지 않는 한 정지 X |
정보 투명성 | 데이터베이스 접근 권한 필요 | 모든 노드에게 공개 |
비용 | 일반적으로 사용 자체는 무료 | 일반적으로 코인 필요 |
거래 속도 | 상대적으로 빠름 | 상대적으로 느림 |
2.3 DApp 유형
모든 정보를 블록체인(OnChain)에 저장하는 대신 전통적인 데이터베이스(OffChain)를 함께 사용하는 경우도 있다.
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.1 NFT
디지털 자산의 고유한 가치와 소유권을 기록하기 위한 블록체인 기반 '토큰'. 현재 NFT는 대부분 이더리움을 기반으로 한다.
코인 vs. 토큰
종류 코인 토큰 개념 물리적인 화폐와 유사한 디지털 화폐 특정 프로젝트에서 발행한 디지털 자산 블록체인 네트워크 특정 블록체인 네트워크 내에서 유통 여러 블록체인 네트워크에서 유통 가능 용도 결제 디지털 동의, 소유권 이전 등 예 이더리움, 리플 BON, DAO 토큰
2.2 교환/대체 불가
2.3 NFT Life Cycle
1. 탈중앙화 저장소에(IPFS 등) 원본 파일을 등록한고 NFT를 발행한다(Minting).
2. 마켓플레이스에서 소유권 판매/구매가 일어난다.
3. 소유권 보유자는 마켓플레이스에서 재판매 할 수 있다.
왜 블록체인에 파일을 올리지 않고?
블록체인은 대용량의 파일을 올리기에 적절하지 않다. 그래서 파일은 탈중앙화된 저장소에 업로드하고, 업로드된 파일의 주소를 (무결성 검증을 한 후) 블록체인에 저장한다.
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.1 공급망 관리(SCM)
2.2 의료
1.1 망 구성
1.2 망 구성 방안
만약 블록체인을 설치해야 한다면 어디에 해야 할까?
내부망이라고 생각할 수도 있지만, 내부망에 드나드는 인바운드와 아웃바운드는 보안상 철저히 통제되어야 한다. 허가된 포트(port)를 통해서만 정보가 오가기 때문에 노드가 늘어날수록 포트를 그만큼 열어주어야 한다. 프라이빗도 아니고 퍼블릭 블록체인이라면 더더욱 내부망에 두어서는 안된다.
참여자 성격에 따른 망 구성 방안
참여자가 ICT 운영 여력이 있다면 DMZ에 노드를 설치하고 포트를 사용할 수 있다. 다만 운영 여력이 없다면 클라우드에 설치하는 것이 더 좋은 방법이다.
1.1 클라우드 컴퓨팅이란
가상화된 IT자원(SW, 스토리지, 서버 등)을 서비스로 제공하고, 서비스 부하에 따라 실시간 확장성을 지원하여 사용한 만큼 비용을 청구하는 컴퓨팅 기술. AWS, GCP 외에도 드롭박스, 구글 워크스페이스 등도 포함하는 개념이다.
G-Cloud
우리나라 공공기관, 공기업은 자체적으로 구성한 클라우드 혹은 G-Cloud 인증을 받은 민간 클라우드만(예: 네이버클라우드, KT클라우드 등) 사용할 수 있다.
1.2 클라우드 컴퓨팅 유형
서비스 제공 범위에 따라 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. 플랫폼 특성상 클라우드 서비스를 제공하는 벤더의 권한이 더 커질 수 있다.
1.1 QR코드
매트릭스 형식의 2차원 바코드. 2차원이기 때문에 기존의 1차원 바코드보다 많은 정보를 넣을 수 있다.
QR코드 엄청 많이 생성하는데 자기들끼리 안겹치나?
최근에 코로나 인증 때문에 QR코드를 빈번하게 생성하면서 이런 궁금증이 생겼다. 확인해보니 QR코드 생성기는 일종의 해시함수와 비슷해서, 원문이 동일하면 그 QR코드도 동일하다고 한다.
2. 블루투스
근거리의 전자기기를 무선으로 연결하여 실시간으로 쌍방향 통신이 가능하게 만드는 근거리 무선 데이터 통신 규격. 별도의 면허 없이 사용할 수 있는 ISM(Industry, Science, Medical) 밴드의 주파수를 사용한다.
3. 미라이봇넷
디지털카메라나 라우터 등의 IoT 디바이스를 좀비(악성코드가 심겨 DDos 공격을 하는 디바이스)로 만들어 DDos 공격을 수행하는 악성코드. pc보다 상대적으로 보안이 취약한 IoT를 이용하는 것이다.
미라이?
미라이가 일본어로 그 미라이(미래)다. 제작자가 좋아하는 애니 주인공 이름이었단다....... 뭔가 의미가 있을 줄 알았는데...
2.1 IPFS
네트워크 참여자가 전체 데이터의 일부를 저장하는 P2P 기반의 분산 파일 시스템. 토렌트(...)와 비슷한 시스템이다.
2.2 블록체인 vs. IPFS
컨셉은 블록체인과 비슷하지만 아래와 같은 차이가 있다.
2.3 블록체인과 IPFS 연계
2.1 연합학습 Federated Learning
인공지능 모델 개발에는 대용량 데이터와 높은 컴퓨팅 파워가 든다. 그래서 일반적으로 중앙 서버에 데이터를 저장해서 그 데이터로 모델을 만든다. 하지만 개인정보 등은 서버에 저장하기 어렵다. 그 대안으로 나온 개념이 연합학습이다. (구글에서 처음 제시했는데, 아직 상용화된 기술은 아니라고 한다.)