본문 바로가기
전공수업/블록체인

[블록체인] 암호화

by JooRi 2024. 10. 4.
728x90
반응형
SMALL

* 암호화

1. 대칭키 암호화(Symmetric Key Cryptography)

대칭키 암호화

대칭키 암호화 방식은 암호화와 복호화에 동일한 키를 사용한다.

송신자와 수신자가 동일한 비밀키(private key)를 사용하여 데이터를 암호화하고 복호화한다.

 

대칭키 암호화는 속도가 빠르지만, 키 분배 문제가 큰 단점이다.

송신자와 수신자가 동일한 비밀키를 가져야 하는데, 이 키를 어떻게 안전하게 전달하느냐가 문제이다. 만약 키를 도난당하면 모든 통신이 노출될 수 있기 때문이다.

 

대칭키 암호화에서 사용하는 대표적인 알고리즘에는 DES(Data Encryption Standard)와 AES(Advanced Encryption Standard)가 있다.

 

2. 비대칭키 암호화(Asymmetric Key Cryptography)

비대칭키 암호화

비대칭키 암호화 방식은 암호화와 복호화에 서로 다른 키를 사용한다.

송신자는 공개키로 데이터를 암호화하고, 수신자는 자신의 비밀키(개인키)로 복호화한다.

대칭키 암호화에 비해 느리고 계산이 복잡하지만, 키를 직접 공유하지 않아도 안전하게 통신할 수 있다.

비대칭키 방식은 대표적으로 RSA 알고리즘을 사용하여 구현한다.

 

 

비대칭키 암호화

  • 발신자는 공개키로 데이터를 암호화한다.
  • 수신자는 자신의 개인키로 데이터를 복호화한다.

 

* 해시함수(Hash Function)

해시함수는 입력값에 대해 고정된 크기의 해시 값을 생성한다.

해시 함수의 주요 속성은 아래와 같다.

 

  • Deterministic: 동일한 입력값에 대해 항상 동일한 해시 값을 생성.
  • Fixed Output Size: 입력값 크기와 관계없이 해시값의 크기는 고정(예: SHA-256은 256비트 해시값 생성)
  • Pre-image Resistance: 해시값을 보고 원본 입력값을 추측하는 것은 매우 어렵다.
  • Collision Resistance: 서로 다른 입력값이 동일한 해시값을 생성할 가능성은 매우 낮다.

 

해시함수의 응용 분야는 아래와 같다.

 

  • Data Integrity: 해시 값을 사용하여 데이터가 전송 도중 변형되지 않았음을 확인할 수 있다.
  • Password Storage: 시스템은 실제 비밀번호를 저장하지 않고, 해시 값을 저장한다. 사용자가 로그인할 때 제공한 비밀번호를 해싱한 후 저장된 해시 값과 비교한다.
  • Digital Signature; 메시지의 해시값을 생성한 후, 이를 개인키로 서명하여 데이터의 출처와 무결성을 보장한다.

 

* 전자서명(Digital Signature)

전자서명은 메시지의 진위성과 무결정을 보장한다. 발신자는 메시지에 개인키로 서명하고, 수신자는 공개키로 서명을 검증한다. 이렇게 하면 메시지가 중간에 변조되지 않았고, 발신자가 진짜 누구인지 확인할 수 있다.

 

전자서명 절차

전자서명 과정

1. 해시 생성

평문(Plaintext) 원본 문서가 해시 함수를 통과하여 해시 값을 생성한다.

 

2. 비밀키 암호화

비밀키(개인키)를 통해 해시값을 암호화한다.

 

3. 전자 서명(암호화된 해시값) 생성(Sigining Process)

서명 생성 과정

발신자는 자신의 개인키를 사용하여 위에서 생성된 해시(Digest)를 암호화한다. 암호화된 해시값은 전자서명이 된다.

암호화된 서명이 포함된 메시지가 수신자에게 전송된다.

 

4. 서명 검증(Verification Process) = 해시값 복호화

서명 검증 과정

수신자는 발신자의 공개키를 사용하여 발신자의 개인키로 암호화된 원본 해시 값을 복호화한다.(전자서명 해독)

복호화된 해시값(서명에서 추출)과 수신자 자신이 새로 생성한 해시값을 비교하여 두 해시 값이 일치하면 중간에 변조되지 않았다는 메시지의 무결성이 확인된다.

 

 

* 디지털 인증서(Digital Certificate)

디지털 인증서는 웹 서버나 클라이언트의 신원을 확인하는 데 사용된다.

주로 CA(인증 기관)에서 발급되며, 인증서는 서버의 공개키와 해당 서버가 신뢰할 수 있음을 보증하는 정보를 포함한다.

서버를 신뢰할 수 있으려면 그 서버의 신원을 확인할 수 있는 방법이 필요하다. 이는 주로 디지털 인증서와 같은 보안 메커니즘을 통해 이루어진다.

 

디지털 인증서는 "이 서버는 신뢰할 수 있는 기관에 의해 검증되었다"는 사실을 사용자에게 보장한다.

HTTPS가 적용된 사이트에 방문할 때 브라우저에 자물쇠 아이콘이 보이는 것이 이 인증서 때문이다.

 

 

디지털 인증서 생성 및 발급 과정

디지털 인증서 생성 과정

1. 사용자 신원 정보 및 공개키 제공

사용자의 이름, 소속기관, 주소 등의 신원 정보와 공개키를 제공한다.

신원 정보는 인증서에 기록되고, 공개키는 데이터 암호화 및 전자서명 검증에 사용된다.

 

2. 인증기관(CA)에 의한 신원 검증

사용자는 위 내용을 CA에 등록하고, CA는 사용자의 신원을 검증한다.

 

3. 디지털 인증서 생성

검증된 신원 정보와 공개키는 디지털 인증서에 기록된다.

CA는 자신의 개인키(비밀키)를 사용하여 인증서 전체를 암호화한다. 이 과정에서 생성된 서명은 인증서의 무결성과 CA의 신뢰성을 보장한다.

 

4. 인증서 발급 및 사용

인증서는 웹 서버와 같은 플랫폼에 전송되며, 사용자는 이 인증서를 통해 자신의 신원을 증명하고 보안된 통신을 한다.

 

 

디지털 인증서 구조

인증서 구조

  • Serial Number: 인증서를 고유하게 식별할 수 있는 번호
  • Subject: 인증서가 속한 주체(개인 or 조직 or 서버)
  • Issuer: 인증서를 발행한 인증 기관(CA)
  • Public Key: 인증서 주체의 공개키
  • Signature Algorithm: 해시 알고리즘과 서명 알고리즘의 조합(예: SHA256RSA)
  • Signature: 인증서 본문을 해시한 후, 개인키로 서명한 값

 

* CA(Certification Authority: 인증 기관)

CA는 인증서 발급을 통해 사용자의 신원을 확인하는 권한을 가진 기관이다.

CA는 공개키 기반 구조(PKI)의 중요한 구성요소이다.

 

인증서의 종류는 아래와 같다.

 

  • CA에서 서명한 인증서: TLS/SSL 서버 인증서, TLS/SSL클라이언트 인증서
  • 자체 서명 인증서

 

* PKI(Public Key Infrastructure)

PKI

PKI는 공개키 기반으로, 사용자 인증과 보안 통신을 지원하는 인프라이다.

이를 통해 사용자에게 디지털 인증서를 발급하고, 이 인증서를 통해 안전한 통신을 보장한다.

 

* HTTP vs HTTPS

HTTP vs HTTPS

HTTP는 데이터를 평문으로 전송하는 프로토콜로, 중간에서 데이터가 가로 차이면 쉽게 내용을 볼 수 있다.

HTTPS는 SSL/TLS 암호화를 사용하여 데이터를 암호화한 후 전송한다.

SSL/TLS는 서버와 클라이언트 간의 데이터 전송을 안전하게 보호하는 프로토콜이다. SSL/TLS를 통해 서버와 클라이언트는 서로의 신원을 확인하고 암호화된 통신을 할 수 있다.

 

 

SSL/TLS 핸드셰이크 과정

  • TCP 연결 설정: 클라이언트와 서버 간에 기본적인 TCP 연결 수립
  • SSL/TLS 핸드셰이킹: 클라이언트와 서버는 서로의 인증서를 교환하고, 암호화된 연결을 설정.
  • 암호화된 데이터 전송: 안전하게 설정된 연결을 통해 데이터가 암호화되어 전송된다.

 

728x90
반응형
LIST

'전공수업 > 블록체인' 카테고리의 다른 글

[블록체인] Block Structure  (2) 2024.10.05
블록체인 작동 원리  (1) 2024.09.11

댓글