우선, 가장 기본이 되는 개념은 암호화이다.
암호화란 일상적인 문자로 쓰인 정보를 암호키를 소유하지 않은 사람이 알아볼 수 없도록 알고리즘을 이용하여 암호문으로 변환하는 것이다. 반대말은 복호화이다.
고전 암호에서는 암호화 알고리즘만 알아내면 해독이 가능하다는 단점이 있었다. 현재의 암호화 기술의 핵심은 '암호화 키'이다. 알고리즘이 노출되더라도 암호화 키가 없으면 해독할 수 없다.
암호화 방식은 크게 대칭키 암호화와 비대칭키 암호화로 구분할 수 있다.
비공개키 암호화 방식이라고도 한다.
암호화와 복호화에 동일한 암호키를 사용하는 방식이다. 비대칭키 암호화와 다르게 공개키는 없고 비밀키만 존재한다고 볼 수 있다. 송신자와 수신자가 같은 키를 보유하고 그 키를 통해 송신자가 정보를 암호화하여 전송하면 수신자가 같은 키로 복호화한다. 키의 크기가 상대적으로 작고 암호 알고리즘 구조가 단순하여 속도가 빠른 편이다.
하지만 교환 당사자간 동일한 키를 공유해야 하기 때문에 키 관리가 어렵고, 잦은 키 변경이 있는 경우 불편할 수 있다. 또한 디지털 서명 기법 적용이 어렵고 중재자가 필요하다.
당사자간 암호키를 안전하게 교환하는 것이 대칭키 암호화 방식의 가장 중요한 부분이다. 키가 없다면 누구도 열어볼 수 없지만, 반대로 키가 있다면 누구나 열어볼 수 있기 때문에 이 키를 안전하게 전달하는 것이 핵심이다.
공개키 암호화 방식이라고도 한다.
정보를 암호화하고 복호화 할 때 서로 다른 키를 사용하는 방식이다. 모든 사용자들은 공개키와 비밀키(개인키) 두 가지를 가지고 있다. 공개키로 정보를 암호화하여 개인키로 복호화하는 방식과 개인키로 암호화하여 공개키로 복호화하는 방식이 있는데, 개인키를 통하여 암호화하고 공개키로 복호화하는 방식은 암호화라기 보다는 서명의 개념으로 보는 것이 맞다.
상대방의 공개키로 데이터를 암호화하여 데이터를 전달하면, 공개키의 주인인 수신자는 자신의 개인키를 이용하여 정보를 복호화할 수 있다.
개인키 소유자가 개인키로 데이터를 암호화하고 공개키를 함께 수신인에게 전달한다. 암호화된 데이터는 누구나 접근 가능한 공개키로 복호화될 수 있다.
❗️ 누구나 접근 가능한 공개키로 복호화가 가능하다면, 왜 이런 방식을 사용하는 것일까?
개인키 암호화 방식은 정보를 암호화하기 위함이라기 보다는 정보의 소유자가 누구인지를 증명하기 위함이다. 이는 데이터 제공자의 신원을 보장하는 디지털 서명(전자 서명) 등 공인 인증 체계의 기본 방식이다.
비대칭키 암호화 방식 중 개인키로 암호화하는 방식을 적용한 것이다. 송신자의 개인키를 사용하여 서명을 보내면 수신인 측에서 송신자의 공개키를 이용해 보내온 정보를 복호화한 다음 이를 보관한다. 이 과정을 통해 송신자는 디지털 서명이 본인의 서명임을 증명할 수 있고, 수신인은 해당 저보가 위변조되지 않았음을 확인할 수 있다. 정보를 암호화하기 위함이라기 보다는 해당 정보를 보내는 제공자의 신원을 인증해주기 위함이다.
디지털 서명은 데이터의 무결성을 보장하고 위변조를 검증할 수 있으며, 디지털 서명이 송신자에 의해 서명되었다는 진위성을 보장한다.
블록체인 시스템에서는 트랜잭션을 생성하여 서명하고 승인하는 과정에서 디지털 서명 기술이 사용된다.
키 페어를 생성하고 전송할 원본 데이터를 해싱한다. 해싱하지 않은 원본 데이터를 전송할 수도 있지만 무결성 검증을 위해 일반적으로 데이터를 해싱하여 전송한다.
송신자의 개인키로 해싱된 데이터를 암호화하여 디지털 서명을 생성한다. 이 디지털 서명을 원본 데이터와 함께 수신자에게 전송한다.
데이터를 받은 수신자가 송신자의 공개키를 이용하여 디지털 서명을 복호화한다. 디지털 서명이 성공적으로 복호화되면 수신자는 원본 데이터가 해싱된 값(A)을 얻을 수 있다. 또한 수신자는 함께 전송받은 원본 데이터를 해싱하여 해싱값(B)을 구한다. A와 B를 비교하여(무결성 검증) 데이터가 송신자에 의해 서명된 데이터임을 검증할 수 있다.
📌 Reference
https://universitytomorrow.com/22
https://dev-mystory.tistory.com/104
https://server-engineer.tistory.com/586