Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

쟝이의 세상

전자상거래 보안 본문

수업내용

전자상거래 보안

zyangee 2024. 8. 26. 15:49

PKI(공개키기반구조, Public Key Infrastructure)

: 디지털 보안에서 중요한 역할을 하는 시스템

  • 공개키 암호화 기반 → 데이터 안전하게 전송, 사용자나 시스템의 신원을 확인할 수 있게 해 줌
  • 인터넷을 통해 전달되는 정보의 무결성과 기밀성 보장

 

PKI의 주요 구성 요소

출처: 위키백과

  1. 사용자가 RA에 인증서 발급 요청 > 사용자의 신원 확인 > CA에 인증서 발급 요청
  2. CA는 디지털 인증서를 발급, RA를 통해 사용자에게 전달
  3. 사용자가 발급받은 인증서를 서버에 제시하면, 서버는 VA를 통해 인증서의 유효성을 검증
  4. VA는 인증서가 유효한지, 또는 철회되었는지 여부를 서버에 알려줌
이 절차를 통해 PKI는 사용자와 서버 간의 안전한 통신을 하고, 인증서의 신뢰성을 유지

 

  • 공개키와 비밀키
    • 공개키: 누구나 접근할 수 있는 키, 데이터 암호화하는데 사용
    • 비밀키: 공개키와 쌍을 이루며, 키의 소유자만이 가지고 있는 키. 데이터를 복호화하는데 사용
  • 디지털 인증서
    • 사용자의 신원을 증명 (인증서에는 "공개키 + 소유자에 대한 정보" 가 포함되어 있음)
    • 인증서는 CA에 의해 발급
  • 인증기관(CA: Certificate Authority)
    • 사용자의 신원을 확인하고, 디지털 인증서를 발급하는 역할
    • 인증기관은 PKI에서 신뢰의 중심에 있음
  • 등록기관(RA: Registration Authority)
    • 인증기관의 역할을 지원하는 기관, 사용자의 신원을 확인하는 역할 담당
    • 인증서를 발급하기 전에 사용자 정보 확인 후 CA에 전달
  • 인증서 폐지 목록(CRL: Certificate Revocation List)
    • CRL : 더 이상 유효하지 않거나 신뢰할 수 없는 인증서들의 목록
    • PKI 시스템에서 인증서의 유효성을 검증할 때, 해당 인증서가 이 목록에 있는지 확인하여 신뢰성 유지

 

PKI의 작동 원리

  1. 키 쌍 생성
    : 사용자는 CA나 RA를 통해 공개키와 비밀키 생성
  2. 디지털 인증서 발급
    : CA는 사용자의 신원을 확인한 후, 사용자에게 공개키가 포함된 디지털 인증서를 발급
  3. 데이터 암호화 및 전송
    : 데이터를 전송할 때, 송신자는 수신자의 공개키를 사용해 데이터를 암호화. 비밀키를 가진 수신자만이 복호화 가능
  4. 신원 검증
    : 수신자는 데이터를 복호화한 후, 데이터가 신뢰할 수 있는 출처에서 왔는지 확인하기 위해 송신자의 디지털 인증서를 검증
PKI는 인터넷 보안의 핵심 요소
→ SSL/TLS를 사용한 웹사이트 보안, 이메일 보안, VPN 접속 등의 다양한 분야에서 활용

 


SSL/TLS

: 7계층(애플리케이션 계층) 보안 프로토콜

  • 인터넷 상에서 데이터를 안전하게 전송하기 위한 프로토콜
  • 주로 웹 브라우저와 웹 서버 간의 통신을 보호하기 위해 사용
  • 인터넷 사용자가 웹사이트에 접속할 때 그들의 데이터를 암호화하여 도청이나 변조로부터 보호

 

SSL/TLS의 주요 기능

ex) 클라이언트의 웹브라우저를 통한 검색

  • SSL(Secure sockets Layer)
    • 웹 서버와 클라이언트 간에 보안 연결을 설정하는데 사용
    • 암호화를 통해 데이터 전송의 기밀성을 보장하고, 인증서를 사용해 서버의 신원을 확인하며, 데이터 무결성을 보장한다.
  • TLS(Transport Layer Security)
    • SSL의 후속 버전, SSL의 취약점을 보완하고 더 강력한 보안 기능 제공하는 프로토콜
    • 더 안전하고 효율적인 암호화 메커니즘 사용
    • 요즘(2024년) 대부분의 최신 웹브라우저, 서버 소프트웨어, 클라우드 서비스는 기본적으로 TLS를 지원
      -> TLS 1.2와 TLS 1.3 주로 사용
    • SSL은 더 이상 지원하지 않거나 비활성화된 상태로 제공

  1. 데이터 암호화
    • SSL/TLS는 클라이언트와 서버 간에 전송되는 데이터를 암호화하여 제 3자가 데이터를 엿듣거나 조작하지 못하도록 보호
  2. 데이터 무결성
    • 데이터가 전송되는 도중에 변조되지 않았음을 보장
      -> 만약 전송 중에 데이터가 변경되면, 이를 감지할 수 있음
      1. 해시함수(Hash Function)
        • 입력 데이터를 고정 길이의 해시값(해시코드)으로 변환하는 수학적 함수
          데이터가 변조되면 해시값도 변함

          ** 해시 함수의 특성 ** 내용
          충돌 저항성 서로 다른 두 입력 데이터가 동일한 해시 값을 가지고는 경우는 극히 드물다.
          단방향성 해시 값에서 원래 데이터를 복원하는 것은 어렵다.
          고속 해시 값을 계산하는 데 시간이 많이 걸리자 않는다.

          ** 무결성 검증 과정 ** 내용
          해시 값 생성 데이터를 전송하기 전에 송신자는 해당 데이터의 해시 값을 계산
          해시 값 전송 원본 데이터의 암호화된 데이터와 함께 해시 값을 전송
          해시 값 검증 수신자는 수신한 데이터의 해시 값을 다시 계산하고, 전송된 해시값과 비교
          두 해시 값이 일치하면 데이터가 변조되지 않았음을 의미
          ** 전송자: 원본 데이터를 암호화(SSL/TLS, 세션키(AES))한 후 해시 값(SHA-256) 생성
          → 원본 암호화된 데이터 + 해시값을 같이 전송
          ** 수신자: 암호화된 데이터로 해시 값을 발생 시켜서 송신자가 보낸 해시 값과 비교(위조 여부 판단)
      2. 디지털 서명(Digital Signature)
        • 데이터의 무결성을 보장하고 데이터의 출처를 인증하기 위한 방법
          해시 함수와 비대칭 암호화(공개키 암호화)를 결합하여 구현

          ** 디지털 서명의 과정 ** 내용
          해시 값 생성 송신자는 전송할 데이터에 대해 해시 값을 생성
          서명 생성 송신자는 자신의 개인 키를 사용하여 해시 값을 암호화하여 디지털 서명을 생성
          서명 및 데이터 전송 데이터와 함께 디지털 서명 전송
          서명 검증 수신자는 데이터의 해시 값을 새로 계산, 송신자의 공개키를 사용하여 디지털 서명을 복호화하여 원본 해시 값과 비교
          두 해시 값이 일치하면 데이터가 변조되지 않았고, 서명이 유효하다는 것을 의미
    • 해시 함수 - 데이터의 고유한 지문을 생성하고, 전송된 데이터와 비교하여 무결성 확인
    • 디지털 서명 - 데이터의 무결성과 출처를 보증하며, 서명을 통해 데이터가 변조되지 않았음을 확인
  3. 서버 인증
    • SSL/TLS는 웹사이트가 신뢰할 수 있는 사이트인지 확인할 수 있도록 서버의 신원을 인증
      -> 인증기관(CA)으로부터 발급받은 디지털 인증서 사용
  4. 클라이언트 인증(선택 사항)
    • 서버는 필요할 경우 클라이언트(사용자)의 신원을 확인할 수도 있다.
      -> 서버는 특정 사용자만 접근할 수 있게 할 수 있음

 

SSL/TLS의 작동 방식

  1. 핸드셰이크 과정
    • 클라이언트와 서버가 서로 통신하기 전에, 암호화 알고리즘과 세션 키를 협상
    • 서버는 자신의 디지털 인증서를 클라이언트에 제공하여 자신의 신원을 증명
    • 클라이언트는 서버의 인증서를 검증한 후, 세션 키를 생성하고 이를 서버와 공유하여 이후의 통신에 사용
  2. 데이터 전송
    • 세션 키를 통한 암호화
    • 세션 키를 사용해 클라이언트와 서버 간의 데이터는 암호화되어 전송
  3. 세션 종료
    • 통신이 끝나면 세션 키는 폐기
      -> 이후의 통신에서는 새로운 핸드셰이크를 통해 새로운 세션 키를 생성해야 함
SSL/TLS는 HTTPS를 통해 웹사이트 보안을 제공하며, 인터넷 뱅킹, 이메일 통신, 온라인 쇼핑 등과 같은 민감한 정보의 전송에 필수적이다.

-> HTTPS(Hypertext Transfer Protocol Secure) : HTTP + SSL/TLS 프로토콜 적용

 

세션 키 협상 과정의 주요 단계

  1. 클라이언트 헬로(Client Hello)
    • 클라이언트는 서버에 연결 요청을 보낼 때
      "자신이 지원하는 암호화 알고리즘 목록 + TLS 버전" 을 서버에 제시
    • 클라이언트가 임의로 생성한 클라이언트 랜덤 값도 포함
  2. 서버 헬로(Server Hello)
    • 서버는 클라이언트로부터 받은 정보 중 사용할 암호화 알고리즘 선택, 자신이 지원하는 인증서와 함께 응답
    • 서버가 임의로 생성한 서버 랜덤 값도 포함
  3. 서버 인증 및 키 교환
    • 서버는 클라이언트에게 자신의 디지털 인증서를 전송하여 신원을 증명
      -> 클라이언트는 이 인증서를 확인하여 서버가 신뢰할 수 있는지 확인
    • 서버가 RSA 암호화 방식을 사용할 경우, 클라이언트는 서버의 공개키를 사용하여 Premaster Secret(예비 비밀 값)을 암호화하고 서버에 보냄
  4. 세션 키 생성
    • 클라이언트와 서버는 각각 자신들이 가진 클라이언트 랜덤 값, 서버 랜덤 값, Premaster Secret(예비 비밀 값)을 조합하여 동일한 세션 키를 생성
    • 클라이언트와 서버 간의 데이터 전송을 암호화하는데 사용
  5. 세션 키 확인 및 완료 (암호화 테스트)
    • 클라이언트와 서버는 서로 세션 키를 사용해 짧은 메시지를 암호화하여 상대방에게 보내고 이를 성공적으로 복호화할 수 있는지 확인
    • 모든 과정이 완료되면, 클라이언트와 서버는 세션 키를 사용해 암호화된 데이터를 주고받을 수 있게 됨
 세션 키 협상의 사용 이유 
보안
: 세션 키는 일회용 키로, 각 세션마다 새로운 키가 생성
-> 동일한 키가 여러 번 사용되는 것을 방지하여 보안성을 높임
성능
: 공개키 암호화 방식은 연산이 복잡하고 느리기 때문에, 데이터 전송 시에는 빠르고 효율적인 대칭키 암호화(세션 키)를 사용
-> 세션 키 협상을 통해 클라이언트와 서버가 같은 대칭키를 공유할 수 있게 됨

세션 키의 역할
세션 키는 대칭키 암호화에 사용되며, 클라이언트와 서버 간의 데이터 전송 시 데이터를 암호화하고 복호화하는 데 사용

세션 키 협상에서 공개키의 역할
공개키는 클라이언트가 세션 키를 안전하게 서버에 전송하기 위해 사용

""예를 들어)
클라이언트 - 서버의 공개키를 사용해 세션 키를 암호화한 후 서버로 전송
서버 - 자신의 비밀키를 사용해 이를 복호화
전달된 정보를 바탕으로, 클라이언트와 서버는 동일한 세션 키를 생성 ""

세션 키는 공개키가 아니며 대칭키 암호화에 사용되는 일회성 키이다.
-> 공개키는 이 세션 키를 안전하게 교환하는 데 사용되는 도구일 뿐

 

웹사이트에서의 공개키 기반 암호화

  1. 서버 인증
    • 웹사이트 서버는 자신이 신뢰할 수 있는 사이트임을 증명하기 위해 디지털 인증서(서버의 SSH)를 사용
    • 이 인증서에는 서버의 공개키가 포함, 인증기관(CA)에 의해 발급된 것
  2. 공개키를 사용한 세션 키 교환
    • 클라이언트는 서버와 안전한 통신을 시작할 때, 서버의 공개키를 사용해 세션 키를 암호화하여 서버로 보냄
    • 서버는 자신의 비밀키를 사용해 이 정보를 복호화하여 세션키를 얻음
  3. 대칭키 암호화로 데이터 전송
    • 세션 키가 협상된 후, 클라이언트와 서버는 대칭키 암호화 방식으로 데이터를 암호화하여 주고받음
      -> 이때 사용되는 키: 세션 키
공개키 기반의 장점
- 보안성
: 클라이언트와 서버 간에 교환되는 정보가 도중에 탈취되더라도, 비밀키를 모르면 세션 키를 복호화할 수 없음
- 신뢰성
: 클라이언트는 서버의 인증서를 검증, 자신이 접속한 서버가 실제로 신뢰할 수 있는 서버인지 확인 가능

대칭키(세션 키)의 특징
- 동일한 키 사용
: 세션 키는 데이터를 암호화하고 복호화하는 데 동일한 키 사용
즉, 클라이언트와 서버가 같은 세션 키를 공유하고, 이 키로 통신 내용을 암호화하고 복호화 함
- 빠른 암호화/복호화 속도
: 대칭키 암호화는 공개키 암호화에 비해 연산이 간단하고 빠름 -> 대량의 데이터를 암호화하는 데 적합

세션 키의 역할
- 데이터 보호
: 세션 키를 사용하여 클라이언트와 서버 간의 데이터가 암호화됨
- 일회성 사용
: 세션 키는 특정 세션 동안만 사용되며, 세션이 종료되면 폐기. 새로운 통신 세션 시작 시 새로운 세션 키 생성