[Ansible] 암호학

728x90

암호학

보안의 3요소

  • 기밀성 : Confidentiality
  • 무결성 : Integrity
  • 가용성 : Avaliability

암호학이 제공해주는 기능

  • 기밀성
  • 인증 : 내가 나라는 것을 나타내는 것
  • 부인 방지 : 내가 보낸 것을 부인하지 못하도록 방지
  • 무결성 : 데이터의 결함이 있어서는 안된다.

현대 암호

치환, 전치를 얼마나 어렵게 만드는가?

  1. 대칭키

평문 → [대칭키 + 암호화 알고리즘] → 암호문 암호문 → [대칭키 + 암호화 알고리즘] → 평문

똑같은 키를 사용해서 암호화, 복호화를 하는 방식이다.

대표적인 대칭키 암호화 알고리즘

  • RC4
  • DES(Data Encryption System) : 취약점이 발견되어 key 없이도 복호화가 풀리는 것을 확인하여 더 이상 사용하지 않는다.
  • 3DES : DES 를 3번 반복하여 암호화한 방식
  • AES
  • SEED

문제점

  • 키 분배의 문제 : 대칭키를 안전하게 분배할 수 있느냐? 키를 네트워크를 통해 보내면 스니핑을 당할 수 있다.
  • 키 개수가 너무 많아진다.
  1. 비대칭키 / 공개키

암호화 키와 복호화 키가 같지 않다.

키 쌍(Key Pair) 가 존재한다.

암호화 통신을 하기 위해서는 Key Pair 가 필요로 하다.

Public Key(공개키) 와 Private Key(개인키) 로 구성되어 있다.

Public Key 는 공개되어도 상관이 없지만 Private Key(대칭키 즉, 비밀키) 는 공개되서는 안된다.

Private Key 는 본인만 가지고 있어야 한다. 남에게 공유해서는 안된다.

A(나)와 B(상대)가 통신을 한다고 할 때

  • 상대방의 공개키로 암호화를 하면 상대방의 개인키로만 복호화를 할 수 있다. → 기밀성
  • 자신의 개인키로 암호화를 하면 자신의 공개키로만 복호화를 할 수 있다. → 부인 방지

알고리즘

  • Diffie-Hellman
  • RSA
  • DSA
  • ECC
  1. 해시

One Way Function : 단방향 함수

Hash Algorithm

Hash Function

Message Digest

무결성

Input(Message) → f(x) → Hash Value

Input : 길이 제한 X

Outpuy(Hash Value) : 고정된 길이

알고리즘

  • MD5 : 취약점이 발결되어 더이상 사용하지 않는다.
  • SHA1
  • SHA2
  • SHA3

해시 문제점 : Birthday Paradox 즉, 다른 값을 넣었을 때 Hash Value 로 같은 값이 나올 수가 있다. → salt 를 사용해서 문제 해결

  1. PKI

Public Key Infrastructure : 공개키 기반 구조으로 제 3자(CA)가 인증서(공개키) 검증을 대신 해주는 방식이다. 내가 받은 공개키가 상대방의 공개키가 맞는지 검증을 해주는 시스템

CA ⇒ 인증서를 발급하는 기관, x.509 표준 인증서를 사용

VA ⇒ 공개키를 검증하는 기관

RA ⇒ 인증서 등록을 대행해주는 기관

인증서를 살펴보면 공개키에 대한 정보를 확인할 수 있다.

X.509 표준 인증서

  • 일련번호
  • 발급자
  • 전자서명 알고리즘 : sha256RSA
  • 유효기간
  • 주체 : 발급 대상
  • 공개키
  • 지문
  1. 전자서명

전자 서명을 이용하면 부인 방지, 무결성, 인증을 사용할 수 있다.

https://maithean.com/docs/set_bk1.pdf → 28페이지를 보자.

대칭키의 가장 큰 문제는 키를 상대방에게 안전하게 보낼 수 없다는 점이다.

대칭키만 안전하게 전송 할 수 있으면 되지 않을까?

전자 서명 Alice 의 공개키로 풀리면 Alice 가 보낸 전자 서명이 맞다는 것이다.

전자 봉투(Digital Envelope)는 필수는 아니다.

해쉬(Message Digest)

728x90