암호 기술의 이해

inseo24·2024년 7월 13일

lecture

목록 보기
1/1

목적

  • 암호화의 기본 개념부터 대칭키, 비대칭키 암호화, 그리고 그 응용에 대해 간단히 암호 기술의 전반적인 구조와 원리를 이해해보자.
  • 키워드: 암호, 대칭키, 비대칭키, 해시, JWT

기본 개념

암호의 기본 구조와 간단한 암호화 방식, 그리고 블록 알고리즘에 대해 알아보자.

암호의 목적

  • 비밀 유지
  • 부인 방지(보증) ex) 공인인증서, JWT

암호의 구조

  • 암호 알고리즘과 비밀키로 구성
  • 알고리즘은 치환, 전치 등을 이용

시저(Caesar) 암호

  • 알파벳에 n번째 숫자를 더한 알파벳으로 변환
  • 여기서 암호 알고리즘은 더하기(+) 연산, 비밀키는 n값이 된다.
  • 대칭키로 암복호화해 동일한 비밀키를 사용한다.

블록 알고리즘

대칭키 암호화의 기본 개념

  • 평문을 블록(키 길이) 단위로 나눈 걸 블록이라 하고, 블록 단위로 연산해 암호문 생성
  • 마지막 블록이 키 길이보다 짧을 수 있어 패딩을 추가한다.
  • ECB(Electronic Code Book): 블록 알고리즘은 평문/암호문의 패턴이 유사해 보안상 취약하다. 이는 독립적으로 연산이 이뤄지기 때문.
  • CBC(Cipher Block Chain): 이전 블록의 암호문이 다음 블록의 평문과 XOR 연산되어 암호화에 사용된다. 블록 간 체인이 연결되어 순차적으로 연산이 이뤄진다.
    • IV(Initialization Vector): CBC 방식의 암호화의 경우 첫 블록에 암호화에 활용하는 값, 그러므로 블록 크기와 동일, 복호화 할 때도 필요하므로 암호문과 IV 값을 함께 전송해야 한다. 노출되어도 보안상 아무 문제 없음

해시

데이터가 변조되지 않았음(데이터 무결성)을 보증하는 값

  • 해시 함수: 해시 값을 계산하는 알고리즘, SHA256/...
  • 해시 값은 입력 값에 상관없이 동일한 크기
  • 활용: 패스워드 인증, 파일 무결성 검증

해시 공격

  • 2012년 링크드인이 SHA-1로 해시해 DB 저장
  • 해커가 이를 평문 패스워드로 복원하는데 성공
  • 사전에 만들어 놓은 해시 디렉토리 활용

보안 강화: Salt

  • 평문에 random salt 값을 추가해 보안 강화

대칭키 암호화

구조

  • 암호 알고리즘(AES/..)
  • 블록(ECB/CBC/...)
  • 패딩(PKCS#8/...)
  • IV

해독

아래와 같은 공격이 가능하다.

  • Brute-Force 공격
  • 통계적 분석 공격

해독에 걸리는 시간을 늘리는 방법

  • 비밀키 길이를 늘리거나
  • 암호 알고리즘 연산 속도를 늘리거나

문제: 암호키 교환 문제

  • 미리 암호키가 공유되어 있어야 함
  • ex) OTP(One Time Password, 현재 시간을 기반으로 암호키를 생성)

SSL에서 암호키 교환 방법

  • 디피-헬만 알고리즘 활용
  • 클라이언트와 서버는 TCP/IP로 통신하므로 누구나 모든 패킷을 볼 수 있음
  • HTTPS를 통해 동일한 비밀키를 나눠가짐, 볼 수는 있지만 내용을 알 수 없음

비대칭키 암호화

  • RSA/...

구조

  • 2개의 암호키: 비밀키와 공개키
  • 전자서명
    - plain-text -> private key를 이용해 hash -> encrypted hash
    • 비밀키로 암호화(서명)를 하게 하여 그 사람이 했다는 걸 증명

응용

JWT(JSON Web Token)

구조

  • 헤더(header): 알고리즘 방식(ex) RS256) 등
  • 페이로드(payload): 원문(변조되지 않아야 하는 데이터)
  • 서명: 지정한 알고리즘 방식으로 헤더와 페이로드를 해시한 후, 이를 비밀키로 암호화하고 Base64로 인코딩한 값
    • 토큰을 받은 사람이 공개키로 서명을 복호화 했을 때, 헤어돠 페이로드가 일치하면 된다.

왜 Base64로 인코딩 할까?

  • 전송 용이성이 큼, Base64로 인코딩 시, HTTP Header나 URL param으로 사용되기 적합함

SSL 인증서로 서버에 대한 인증

  • 디피-헬만 키 교환을 시작했을 때, 서버의 인증서(공개키 포함)을 함께 전달
  • 서버가 값을 보낼 때, 값에 대한 서명을 함께 만들어 상대에게 공유
  • 클라이언트는 서버 인증서의 공개키로 서명을 복호화해 서버에 의해 생성된 값인지를 확인
    • 클라이언트는 인증서 자체도 발급기관의 공개키를 이용해 서명 검증

정리

  • 대칭키 암호화는 효율적이나 키 교환 문제가 있다.
  • 이 문제를 해결하기 위해 비대칭키 암호화가 등장한다.
  • 앞서 암호화의 주요 기능 중 부인 방지의 2가지 조건을 살펴보면 아래와 같다.
    • 내용이 변경되지 않음(무결성) <- 해시 활용
    • 그 사람이 했다는 걸 증명 <- 비대칭키 활용
  • JWT는 해시, 비대칭키 암호화를 사용해 토큰의 무결성과 발급자를 검증, SSL은 대칭키, 비대칭키 암호화 모두 활용해 안전한 통신 채널을 구축

Reference

profile
나 개발자

0개의 댓글