[Blockchain] 암호화, 디지털서명

yooni·2022년 3월 18일
0

Blockchain

목록 보기
32/36
post-thumbnail

1. 암호화 (Encryption)

우선, 가장 기본이 되는 개념은 암호화이다.

암호화란 일상적인 문자로 쓰인 정보를 암호키를 소유하지 않은 사람이 알아볼 수 없도록 알고리즘을 이용하여 암호문으로 변환하는 것이다. 반대말은 복호화이다.

고전 암호에서는 암호화 알고리즘만 알아내면 해독이 가능하다는 단점이 있었다. 현재의 암호화 기술의 핵심은 '암호화 키'이다. 알고리즘이 노출되더라도 암호화 키가 없으면 해독할 수 없다.



1-1. 암호화의 종류

암호화 방식은 크게 대칭키 암호화비대칭키 암호화로 구분할 수 있다.


대칭키 암호화 (Symmetric Encryption)

비공개키 암호화 방식이라고도 한다.

암호화와 복호화에 동일한 암호키를 사용하는 방식이다. 비대칭키 암호화와 다르게 공개키는 없고 비밀키만 존재한다고 볼 수 있다. 송신자와 수신자가 같은 키를 보유하고 그 키를 통해 송신자가 정보를 암호화하여 전송하면 수신자가 같은 키로 복호화한다. 키의 크기가 상대적으로 작고 암호 알고리즘 구조가 단순하여 속도가 빠른 편이다.

하지만 교환 당사자간 동일한 키를 공유해야 하기 때문에 키 관리가 어렵고, 잦은 키 변경이 있는 경우 불편할 수 있다. 또한 디지털 서명 기법 적용이 어렵고 중재자가 필요하다.

당사자간 암호키를 안전하게 교환하는 것이 대칭키 암호화 방식의 가장 중요한 부분이다. 키가 없다면 누구도 열어볼 수 없지만, 반대로 키가 있다면 누구나 열어볼 수 있기 때문에 이 키를 안전하게 전달하는 것이 핵심이다.


비대칭키 암호화 (Asymmetric Encryption)

공개키 암호화 방식이라고도 한다.

정보를 암호화하고 복호화 할 때 서로 다른 키를 사용하는 방식이다. 모든 사용자들은 공개키비밀키(개인키) 두 가지를 가지고 있다. 공개키로 정보를 암호화하여 개인키로 복호화하는 방식과 개인키로 암호화하여 공개키로 복호화하는 방식이 있는데, 개인키를 통하여 암호화하고 공개키로 복호화하는 방식은 암호화라기 보다는 서명의 개념으로 보는 것이 맞다.

- 공개키로 정보를 암호화하는 경우

상대방의 공개키로 데이터를 암호화하여 데이터를 전달하면, 공개키의 주인인 수신자는 자신의 개인키를 이용하여 정보를 복호화할 수 있다.

- 개인키로 정보를 암호화하는 경우

개인키 소유자가 개인키로 데이터를 암호화하고 공개키를 함께 수신인에게 전달한다. 암호화된 데이터는 누구나 접근 가능한 공개키로 복호화될 수 있다.

❗️ 누구나 접근 가능한 공개키로 복호화가 가능하다면, 왜 이런 방식을 사용하는 것일까?
개인키 암호화 방식은 정보를 암호화하기 위함이라기 보다는 정보의 소유자가 누구인지를 증명하기 위함이다. 이는 데이터 제공자의 신원을 보장하는 디지털 서명(전자 서명) 등 공인 인증 체계의 기본 방식이다.



2. 디지털 서명 (전자 서명)

비대칭키 암호화 방식 중 개인키로 암호화하는 방식을 적용한 것이다. 송신자의 개인키를 사용하여 서명을 보내면 수신인 측에서 송신자의 공개키를 이용해 보내온 정보를 복호화한 다음 이를 보관한다. 이 과정을 통해 송신자는 디지털 서명이 본인의 서명임을 증명할 수 있고, 수신인은 해당 저보가 위변조되지 않았음을 확인할 수 있다. 정보를 암호화하기 위함이라기 보다는 해당 정보를 보내는 제공자의 신원을 인증해주기 위함이다.

디지털 서명은 데이터의 무결성을 보장하고 위변조를 검증할 수 있으며, 디지털 서명이 송신자에 의해 서명되었다는 진위성을 보장한다.

블록체인 시스템에서는 트랜잭션을 생성하여 서명하고 승인하는 과정에서 디지털 서명 기술이 사용된다.



디지털 서명의 과정

1 - 해싱

키 페어를 생성하고 전송할 원본 데이터를 해싱한다. 해싱하지 않은 원본 데이터를 전송할 수도 있지만 무결성 검증을 위해 일반적으로 데이터를 해싱하여 전송한다.

2 - 서명

송신자의 개인키로 해싱된 데이터를 암호화하여 디지털 서명을 생성한다. 이 디지털 서명을 원본 데이터와 함께 수신자에게 전송한다.

3 - 검증

데이터를 받은 수신자가 송신자의 공개키를 이용하여 디지털 서명을 복호화한다. 디지털 서명이 성공적으로 복호화되면 수신자는 원본 데이터가 해싱된 값(A)을 얻을 수 있다. 또한 수신자는 함께 전송받은 원본 데이터를 해싱하여 해싱값(B)을 구한다. A와 B를 비교하여(무결성 검증) 데이터가 송신자에 의해 서명된 데이터임을 검증할 수 있다.



📌 Reference
https://universitytomorrow.com/22
https://dev-mystory.tistory.com/104
https://server-engineer.tistory.com/586

profile
멋쟁이 코린이

0개의 댓글