[블록체인 이론 ⛓️] 디지털 서명, 공개 키 암호화 방식

매정·2022년 5월 13일
0

디지털 서명

  • 메시지나 디지털 문서의 진위성무결성검증하는 데 사용하는 수학적 메커니즘. 손으로 쓴 서명이나 도장의 디지털 버전이지만, 보안이 우수함.
  • 디지털 통신에서 변조 및 사칭 문제를 해결하기 위한 것으로, 전자 문서, 거래, 메시지의 출처, 신원 및 상태에 대한 보증에 사용.
  • 디지털 서명은 메시지나 문서에 첨부된 코드로, 이 코드는 생성된 이후부터 수신자에게 전송되기까지의 과정에서 메시지의 내용이 변조되었는지 확인할 수 있도록 해줌.
  • 1970년대부터 공개 키 암호화 방식의 발달로 디지털 서명 구현이 가능해짐.

⛓️ 공개 키 암호화 방식 (비대칭 키 암호화 방식)

Public Key Cryptography, PKC, 공개 키와 비밀 키로 구성된 한 쌍의 키를 사용한 암호화 방식. 두 키는 타원곡선 알고리즘(ECDSA)를 사용하여 생성됨.

  • 새로운 암호 화폐 지갑이 설정될 때, 비밀 키가 먼저 생성
  • 비밀 키를 기반으로 공개 키가 생성
  • 사용자의 지갑은 이 공개 키를 해싱한 값으로 생성


중요한 데이터를 암호화 할 때: 공개 키로 암호화된 데이터는 개인 키로 복호화 할 수 있음. 따라서 공개 키는 외부에 공개하고, 비밀 키는 기밀로 유지해야 함.

데이터의 무결성과 진위성을 검증해야 할 때: 반대로 비밀 키로 암호화된 데이터를 공개 키로 해독함.


공개 키 암호 방식의 장단점

✔️ 장점

  • 대칭 키 암호 방식이 가졌던 키 노출 문제를 해결하여 컴퓨터 보안을 강화하여 데이터의 무결성을 확인하는 데 사용됨.

✔️ 단점

  • 암호화 및 복호화의 수학적 계산이 매우 복잡함. 대량의 데이터를 처리할 경우 오버헤드가 발생하여 속도가 느려질 수 있음.
  • 개인 키가 안전하지 않은 공간에 노출될 경우, 모든 데이터의 보안이 위협을 받음.

⛓️ 대칭 키 암호 방식

하나의 키로 원본 데이터를 암호화하며 동일한 키를 사용해 복호화하는 방식


두 가지 대칭 키 암호 방식

  • 블록 암호 방식: 데이터를 미리 정해둔 사이즈로 잘라 청크(chunk) 단위로 그룹화하고, 각 블록을 비밀키로 암호화합니다.
  • 스트림 암호 방식: 원본 데이터의 길이와 같은 키로 키 스트림(Key Stream)을 생성하고, 원본 데이터와 키 스트림을 XOR 연산하여 암호화합니다. 나중에 복호화 할때도 암호화된 값과 키 스트림을 XOR 연산을 하면 원본 데이터가 나오게 됩니다.

    XOR 연산
    두 임의의 값 A, B가 모두 참이거나 거짓일때는 거짓, 둘 중 하나만 참일 경우에는 참을 출력하는 연산


대칭 키 암호 방식의 장단점

✔️ 장점

  • 비대칭 키 암호 방식에 비해 비교적 간결하기 때문에 네트워크나 CPU의 오버헤드가 적고 빠르게 작동
  • 이가 길어질수록 무차별 대입 공격을 통한 복호화 난이도가 기하급수적으로 증가하기 때문에, 단순히 키의 길이를 늘림으로써 보안을 높일 수 있음

✔️ 단점

  • 데이터 암호화 및 복호화에 사용하는 키를 관리하는 것이 어렵다. - 따라서 대부분의 웹 프로토콜은 대칭 암호화와 공개 키 암호 방식을 혼합하여 키를 보호한다. (예: TLS 암호화 프로토콜)

공개 키 암호 방식과 대칭 키 암호 방식의 비교

1. 키의 길이

  • 대칭 키 암호화 알고리즘
    키의 길이가 임의로 지정, 128 비트나 256 비트로 설정 (보안 수준에 따라 설정)

  • 공개 키 암호화 알고리즘
    공개 키와 비밀 키가 수학적으로 한 쌍을 이루어야 하기 때문에 수학적 패턴을 가짐. ‘패턴을 가졌다는 것 = 공격자에 의해 패턴이 간파될 수 있다는 것’. 따라서 대칭 키 방식과 동등한 수준의 보안을 제공하기 위해 훨씬 더 긴 키를 사용. 일반적으로 128비트의 대칭 키와 2,048 비트의 공개 키가 비슷한 수준의 보안을 제공합니다.

2. 연산 속도

  • 대칭 키 암호 방식
    블록 암호화나 스트림 암호화 모두 연산이 단순연산 속도가 빠름. 대용량 데이터를 전송해야 할 때 많이 사용.

  • 공개 키 암호 방식
    복잡한 수학적 연산을 수행해야 하기 때문에 비교적 속도가 느림. 키 길이가 길기 때문에 훨씬 더 많은 연산 능력을 필요로 합니다. 주로 데이터 전송에 앞서 안전한 통신 채널을 인증하고 구축하기 위한 소규모 트랜잭션(ex. TLS)에 많이 사용됩니다.

3. 보안

  • 대칭 키 암호 방식
    단일한 비밀 키를 공유해야 하기 때문에, 키 노출 시 보안 위협이 큼.
  • 공개 키 암호 방식
    암호화 할 때 공개 키를 사용하고, 복호화 할 때는 개인 키를 사용하여 이러한 문제를 해결합니다.

4. 알고리즘

  • 대칭 키 암호 방식 알고리즘: RC4, AES, DES, 3DES 등
  • 공개 키 암호 방식 알고리즘: RSA, 디피-헬먼, ECC 등

⛓️ 디지털 서명

디지털 서명의 동작 방식


1. 해싱

원본 데이터를 해싱함.

2. 서명

공개 키 암호화 방식(=송신자의 비밀 키)으로 해싱된 데이터에 서명을 함. ⇒ 암호화된 결과값 = 디지털 서명
서명이 완료되면 송신자는 1)원본 데이터, 2)디지털 서명, 3)송신자의 공개 키를 함께 전송

3. 검증

수신자: 디지털 서명 복호화 (송신자의 공개키로) → 원본 데이터(A)의 해시값이 나옴 → 원본 데이터(B)를 해싱하여 데이터의 해시값을 구함. → A의 해시값과 B의 해시값을 비교해 동일하다면, 데이터가 정상적으로 송신자에 의해 서명된 것임을 확인.


디지털 서명의 특징

  • 데이터 무결성
    수신자는 메시지가 전송되는 동안 위변조가 일어나지 않았음을 검증할 수 있음.
    만약 공개 키로 디지털 서명을 복호화 한 값 ≠ 원본 데이터를 해싱한 값 이라면, 원본 데이터가 훼손되었음을 알 수 있음.

  • 진위성
    (송신자의 개인 키가 안전하게 보관되었다는 전제 하에) 수신자는 디지털 서명이 송신자에 의해 생성되었음을 확인할 수 있습니다.

  • 부인 방지
    (송신자의 개인 키가 안전하게 보관되었다는 전제 하에) 서명이 생성되고 나면 이 서명이 송신자에 의해 서명되었다는 사실을 부정할 수 없습니다.


디지털 서명 시스템의 필요 조건

  • 알고리즘
    알고리즘 수준이 중요함. 신뢰할 수 있고, 널리 사용되어 그 안전성이 입증된 해시 함수와 암호화 알고리즘을 사용해야 함.

  • 구현
    디지털 서명 방식은 데이터의 무결성진위성과 직결되기 때문에 결점 없는 시스템을 구현이 중요.

  • 개인 키
    개인 키가 유출되거나 손상될 경우, 진위성과 부인 방지 속성이 무효화됩니다. 특히 암호화폐에서 개인 키를 잃어버릴 경우 재정적 손실로 이어짐.

profile
Prospective Entrepreneur

0개의 댓글