암호학
암호학의 역사
블록체인과 암호 기술은 떼려야 뗄 수 없는 긴밀한 사이이다.
신원 확인이나 블록체인의 형태 ,송금,과정 서명 등 대부분의 기능에 암호 기술이 사용된다.
그렇기 때문에 암호학에 대한 기초적인 이해는 매우 중요하다.
암호학이란
암호학이란 암호화 및 복호화를 연구하는 학문으로, 안전한 의사소통을 위해 만들어졌다. 단순하게 말해 암호란 사람이 읽을 수 있는 평문을 타인이 이해할 수 없도록 암호문으로 만들어 전송하고 ,그것을 다시 사람이 읽을 수 있는 평문으로 복구하는것.
고대의 암호학
원시 암호화 기술은 고대에서부터 존재했으며, 대부분의 초기 문명들은 이미 암호학을 사용해 온것으로 알려져있다.
암호가 사용된 가장 오래된 예시는 약 3900만년전 살았던 이집트 귀족 크놈호테프 2세의 무덤이다.
그러나 무덤에서 사용된 암호기술은 정보를 숨기기 위한 용도가 아니라 문학적 요소로써 사용된 기법에 가까웠다.
민감한 정보를 보고하기 위해 사용된 암호화의 가장 오래된 예시는 약 3500만년전 메소포타미아 서기들이 진흙판에 사용된 도자기 유약을 감추기 위해 쓰인 암호기술
암호학의 가장 중요한 목적은 군사정보 보호 이다. 대표적으로 스파르타에서는 스키테일(Skytale)이라는 암호화 방식을 사용했다.
스파르타는 전쟁을 나갈때 군대와 본국 사람들이 동일한 굵기의 원통형 막대를 각자 나눠가져서, 비밀리에 메시지를 보내야할 일이 생기면 양피지를 막대에 돌돌 감아 메시지를 작성한다. 그리고 양피지를 받는 사람 역시 양피지를 막대에돌돌 감아 메시지를 해석한다. 이렇게 하면 양피지를 중간에 탈취당해도 비슷한 굵기의 원통이 없으면 해석이 불가능하다.
또 한가지로 카이사르 암호를 들 수 있다. 기원전 100년경에 만들어진 카이사르 암호는 고대에 가장 발달한 암호화 방식으로 유명하다.
카이사르 암호는 알파벳을 숫자나 다른 문자로 치환하여 작성하는 방식이다. 이런 경우 원본 문자를 어떤 문자로 치환했는지를 알고있으면 쉽게 해독가능하지만 치환 방식을 모르면 해독이 어려워진다.
중세시대와 르네상스
중세 시대에 접어들면서 암호해독학(Cryptanalysis)이 발전 하기 시작했으며, 고대의 암호학 기술을 통해 만들어진 암호를 해독하는 방법을 연구하였다.
다양한 암호기술이 등장하는데 , 다중 문자 암호(Polyalphabetic cipher)를 들 수 있다.
다중 문자암호는 두개의 디스크를 이용해 하나의 알파벳을 전혀 다른 알파벳으로 만들어 암호화 한다. 이렇게 다중 문자 암호는 하나의 알파벳이 어떤 알파벳으로 변하였는지 모른다면 복호화 할 수 없기 때문에 빈도해석 기술을 무력화 했다
근대에서의 발전
근대에도 여전히 암호학은 전쟁을 위한 중요한 기술 중 하나다.
1795년에 개발한 제퍼슨 디스크(Jefferson Disk)는 26개의 바퀴를 이용해 알파벳을 다른 알파벳으로 치환하는 방식이다.
2차 세계대전에서 구현되어 사용되었다.
세계 2차대전에서 에니그마 장치가 발명되었다. 제퍼슨 디스크처럼 바퀴를 사용하여 암호화하여 동일한 에니그마 장치가 없으면 해독이 불가능 하다. 초창기 컴퓨터는 에니그마 암호를 해독하기 위해 만들어졌다.
암호 기술의 기본
암호의 기본 원리
현금
지폐를 가게주인한테 준다 -> 가게주인은 지갑에 지폐를 넣는다 = 상대가 누구인지 알필요없음
은행
내가 통장주인임을 증명 -> 은행 데이터베이스에 쿼리 보내고 출금한 만큼 지폐를 준다 = 나임을 증명해야됌
디지털 시스템
나의 소유권을 주장할 필요없지만 그만큼 보안의 위험성도 있음.
그만큼 보안의 중요성이 있다.
예를 들어 안녕하세요라는 글자를 암호화 알고리즘의 의헤 암호화 해서 아냐녀여하바세베요뵤 로 바꾼다면
다시 암호 해독 key(우리가 아는 법칙을 생각하여 적용시켜 복호화)하여 안녕하세요로 이해한다.
대칭 키 암호 방식과 비대칭 키 암호 방식
암호화를 할 땐 알고리즘과 그에 맞는 키가 필요합니다. 오늘날 가장 많이 사용되는 암호화방식인 대칭키 암호방식과 비대칭키 암호 방식에 대해 알아보고 비교해보자.
블록체인 암호는 대표적으로 보안을 위해서 사용되고 기밀성 ,익명성,무결성, 인증 ,부인 방지
기밀성(Confidentiality) : 타인이 볼 수 없도록 암호화해서 숨김
익명성 (Anonymity) : ‘나’의 개인정보를 드러내지 않음
무결성 (Integrity) : 메시지가 수정되지 않았는지 검증해야함
부인방지(non-repudiation) : 본인이라는 것을 확인함
대칭 키
대칭 키 방식은 암호화 및 복호화 할 때 동일한 키를 사용하는 방식이다.
따라서 대칭 암호화 방식은 여러 사용자 사이에 공유된 단 하나의 키를 기반으로 한다.
대칭 키 암호 방식 동작원리
- 하나의 키로 원본 데이터를 암호화하여, 암호화한 데이터를 키와 함께 송신한다.
- 수신자는 동봉된 동일한 키를 사용해 암호화된 데이터를 복호화한다.
대칭 키 암호 방식에서는 블록암호 방식이나 스트림 암호방식을 사용할 수 있다.
블록 암호 방식 : 데이터를 미리 정해둔 사이즈로 잘라 청크(chunk) 단위로 그룳화 하고, 각 블록을 개인 키로 암호화함.
스트림 암호 방식 : 원본 데이터의 길이와 같은 키로 키 스트림(Key Stream)을 생성하고, 원본 데이터와 키 스트림을 XOR연산하여 암호화 한다. 나중에 복호화 할 때도 암호화된 값과 키 스트림을 XOR 연산을 하면 원본 데이터가 나온다.
대칭 키 암호 방식의 한계
키 탈취 -> 키 배송 위험이 있다. 데이터 암호화 및 복호화에 사용되는 키를 관리하는 것이 어렵다.
비대칭 키
비대칭 키 암호 방식은 대칭 키의 키 탈취후 복호화가 쉬운 단점을 해결하기 위해 고안된 개념이다.
비대칭 키 암호방식은 대칭 키 암호 방식과 다르게 단일 키가 아닌 공개 키와 개인 키 2가지를 사용한다.
방식엔 2가지가 있는데
- 공개 키 암호 방식
- 개인 키 암호 방식(공개 키 서명 방식)
공개 키 암호 방식
공개 키는 전송자가 정보를 암호화 하는데, 사용하며 개인 키는 수신자가 데이터를 복호화 하는 데 사용된다.
공개 키와 개인 키는 수학적 알고리즘에 의해 한 쌍의 키로 생성된다. 한 데이터는 한 쌍의 개인 키로만 복호화 할 수 있으며, 개인키로 암호화 한 데이터는 공개 키로만 복호화 할 수 있다.
키 배송 위훔 문제를 해결하여 보안이 강화되고 무결성을 확인하는데 사용된다.
수학적 계산이 매우 복잡해서 대량의 데이터를 처리할 경우 오버헤드가 발생한다.
개인 키 암호 방식
반대 방식인 개인 키로 암호화 하고 공개 키로 복호화 한다.
개인 키의 소유자가 개인 키로 데이터를 암호화 한 뒤에 공개 키와 함께 전달하는 방식이다. 수신자는 공개 키와 데이터를 받아서 해당 내용을 복호화 할 수 있다. 이 방식은 데이터의 보호 보다 신원 확인(보장)을 위해 사용된다.
A의 개인 키로 암호화된 데이터를 A의 공개 키로 복호화 할 수 있다는 것은 -> A의 공개 키로 복호화 되었으니 A의 개인키로 암호화 되었다 라는 것을 의미하므로 = A가 데이터를 암호화 하였다 -> 가 되어서 이러한 특징을 사용해 블록체인에서 개인 키 암호 방식으로 전자 서명을 구현한다.
'블록체인' 카테고리의 다른 글
Project_MarketPlace 진행하면서 (0) | 2022.12.30 |
---|---|
토큰 이코노미란 (0) | 2022.12.24 |
Web3.js 사용해보기 (1) | 2022.12.22 |
Etherscan시 나오는 사항들 (0) | 2022.12.15 |
블록체인(block chain) 기초 (0) | 2022.11.01 |