Plan of Attack
필요한 이유 : 다른 기술과 비교했을 때 블록체인은 덜 복잡하기 때문
블록체인이란?
지속적으로 증가하는 데이터로 블록 데이터를 암호학을 통해 보호하고 연결하는 기술 - 위키피디아
블록
- 고유의 해시값을 가짐
제니시스 블록 : 블록체인이 초기화 된 후 언제나 첫번째 데이터 블록
해당 예시의 경우 이전 해시가 없는 유일한 블록임을 가정하고 다음 블록의 해시 경우 이전 블록 해시 값과 동일.
이러한 해시값을 통해 블록들이 암호화 링크로 연결되어 있음을 알 수 있음.
동작 과정
모든 블록은 각자의 지문을 보유하고 있으며 이전 블록의 지문을 참조 > 블록 1의 지문이 바뀌면 2도 변경됨
⚠️만약 누군가 데이터를 조작한다면 지문이 바뀌기 때문에 그 전 지문과 매칭 불가!
SHA256 해시
디지털 문서를 식별할 수 있는 지문으로 기밀이 아닌 공개되어 있음
동작 원리
SHA : 안전한 해시 알고리즘의 약자
256 : 메모리가 차지하는 비트 수
✨특징
- 해시의 길이는 언제나 64자
- 숫자뿐만 아니라 문자도 올 수 있음
- 같은 데이터를 입력하면 같은 해시값 불러올 수 있음 > 즉, 같은 사람을 여러번 확인한다고 지문이 달라지지 않음
참고
https://tools.superdatascience.com/blockchain/hash
해당 사이트에서 문자 데이를 입력하면 해시값을 제시해주는 tool임
필요 요건
- 단방향으로 해시에서 문서로 갈 수 없음
- 동일한 문서를 해시 알고리즘에 적용하면 같은 값이 나오도록 결정적이여야 함
- 연산이 빨라야 함
- 쇄도 효과가 있어야 함
- 알고리즘이 인위적인 충돌에 견딜 수 있어야 하는 충돌 저항성이 있어야 함
불변 원장
- 손으로 쓰는 원장에서 한 항목을 쉽게 변경하는 것과 달리 블록체인에서는 이어지는 전체 항목을 변경해야 함
- 블록체인에 데이터가 한 번 기록되면 변경하기 어려워짐
분산 P2P 네트워크
- 많은 컴퓨터가 연결되어 있으며 많이 연결될 수록 좋음 하지만 지속적으로 모든 컴퓨터를 연결할 수 없음
- 블록체인은 모든 컴퓨터에 저장이 되어 분산됨
- 끊임없이 동기화하여 네트워크에서 계속 확인
⚠️ 만약 끊임없이 일치하는지 확인하는 피어가 불일치 한다면 즉각적으로 해킹을 감지하며 4가지 값 중 한가지 값이
다르다는 것 또한 확인하고 기존값으로 복사하여 블록체인 기존 값으로 복구시킴
→ 해커는 한 컴퓨터나 블록체인을 해킹할 수도 값을 변경할 수도 없음
P2P 장점
신뢰할 수 없는 프레임워크에 신뢰를 가져와서 서로 거래할 수 있도록 함
채굴
블록 번호, 데이터, 이전 해시만 해싱 알고리즘에 넣어서 해시를 도출해내는 과정은 위와 같이 간단함
채굴의 경우 한번만 사용되는 숫자 Nonce 포함
Nonce
- 블록의 해시를 제어하거나 변화시킬 수 있음
- 통제력과 유연성을 가질 수 있음
- Nonce를 변경해서 해시값을 조정할 수 있으며 동시에 블록 번호와 데이터를 바꿀 필요가 없음
- 해시가 극단적으로 변함 → 쇄도 효과 때문
채굴 동작 과정
- 해시가 연속적일 수 있기에 범위 자체를 위와 같이 해시풀로 범위를 나타냄
- 아래를 최솟값 / 위에를 최댓값으로 설정
- 어떤 구조로 올라가느냐는 상관없음
- 맵 경로를 알게되면 각자의 해쉬값이 어디에 위치하는지 알 수 있음.
채굴 방법
1. 블록체인 시스템이나 알고리즘이 대상을 설정하는 것
- 대상은 해시 값보다 작아야 함
2. 다른 논스를 추측한 후 변경해서 대상 아래에 포함될 수 있는 해시를 지속적으로 찾는 것
쇄도 효과
: 눈사태 현상과 유사하며 해시의 가장 중요한 특성 중 하나
앞선 그림에서도 보이지만 Nonce의 값에 따라 해시 값이 줄어드는 것처럼 보이지만 nonce 143일 경우를 보면 예외가 있다는 것을 알 수 있음 → 쇄도 효과로 인해 사방에 흩어져 알 수가 없음
비잔틴 내 결함성
성을 둘러싼 네 명의 장군이 있다고 가정 + 과반수 이상의 동의가 있어야 행동 게시 가능 + 사령관, 반역자가 있다고 가정
⭐여기서 관건은 과반수 이상의 의견이 합의점을 찾아야만 안전함
1. 사령관이 반역자가 아닌 경우
사령관이 공격하라는 명령을 내린 경우 반역자가 후퇴하라는 말을 하더라도 1개의 후퇴 2개의 공격 명령이 있는 장군은 무조건 공격할 거라고 예측 가능 → 과반수 이상이 공격으로 알고리즘은 합의에 도달
2. 사령관이 반역자인 경우
다 후퇴하라는 명령을 내리면 다 후퇴하기 때문에 작전 성공
한 장군에는 후퇴하라는 명령 / 두명의 장군에게는 공격하라는 명령 → 다수결의 알고리즘 불가능
3. 반역자가 두명인 경우
- 작전 성공이 절대 불가능
- 해당 알고리즘이 작동하려면 33%이하의 반역자가 있어야만 작동 가능
📍결론 : 블록체인의 경우 시스템을 공격하려는 사람들에게 해당 합의 알고리즘을 사용하여 보호해야 함
합의 알고리즘 : 공격자에 대한 방어 + 원리
블록체인을 위한 합의 프로토콜 문제
1. 공격자로부터 네트워크 보호 → 공격자가 블록을 고의적으로 추가할 경우
2. 블록체인의 경쟁 체인 문제 해결 → 계속 증가하는 방법에 대한 합의가 필요
합의 프로토콜 문제 해결 방법
1번째 문제에 대한 해결 방법
- 블록이 추가되기 전 네트워크가 전파되기 전 각 단일 노드에서 일련의 확인 진행
- 통과하지 못할 경우 블록 추가를 기각 → 악의적인 블록 생성 불가
2번째 문제에 대한 해결 방법
상황 : 두 블럭이 동시에 채굴됐다고 가정했을 때 충돌 발생
상황 : 주황색 부분이 더 빠르고 4대 2로 주황색이 훨씬 우위에 있음
이럴 때 비잔틴 장군 문제와 유사하게 비잔틴 내결함성 성격을 보임
- 합의 알고리즘 : 다수를 확인하고 실행
- 블록체인 : 경쟁 체인을 가져야 함 → 먼저 블록을 만들면 해당 체인이 이기는 것
체인이 긴 주황색 그룹의 노드는 어떤 블록이 체인에 추가되더라도 다음 블록을 찾을 확률이 2배 더 높음
→ 보라색 네트워크가 주황색 네트워크를 수용하여 문제 해결
📍합의 알고리즘은 33%이상의 배신자가 있으면 합의 불가능 / 블록체인은 50% 이상의 해싱 파워를 가진 체인이 이김
'솔리디티 및 블록체인' 카테고리의 다른 글
블록체인 만들기 part.01 _ 블록체인 설계 (0) | 2024.07.21 |
---|---|
블록체인 만들기 part.01 _ 환경설정 (0) | 2024.07.21 |
솔리디티 13. super (0) | 2024.06.12 |
솔리디티 12. event2 - indexed (0) | 2024.06.05 |
솔리디티 12. event 1 - 정의 (0) | 2024.06.05 |