암호학 기초 이론

심야·2023년 7월 14일
0

컴퓨터 과학

목록 보기
4/12

암호화

암호화란 부호와 암호를 사용하는 방법으로 정보의 안전한 전송을 보장해준다.
블록체인과 암호화폐의 근간이 되는 기술이며 A와 B의 통신이 암호화되어있지 않으면 정보를 가로챌 수 있다.
따라서 암호화를 해 안전한 통신을 보장해야 한다.

고전 암호

치환 암호

문자열을 다른 문자열로 열 이동 교체하는 암호

이동 암호

무작위로 보이는 원칙에 따라 문자열 순서를 바꿔 이동한 암호

암호화 키

고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독할 수 있다.
컴퓨터의 등장과 기술 발전으로 인해 고전 암호는 취약한 암호화 방법이 되었다.
현재 암호화 기술의 핵심은 임의의 문자열 값인 ‘암호화 키’이다.
암호화 키는 통계학 입각 기준에 따라 일정 수준 이상의 의사 난수를 난수로 가정해 적절한 암호화 키를 사용하면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 수 없다.
암호화는 크게 단방향 암호화, 비밀키 암호화, 공개키 암호화로 구분된다.

해시 함수(단방향 암호화)

해싱(hashing)을 이용해 암호화하는 방식으로 정확하게는 "암호화/복호화" 와는 다른 개념이다.
평문을 암호화하는 것은 암호문을 복호화하는 것은 불가능한 암호화 방법이다.
복호화가 필요 없는 방식에서 사용하며 주로 "비밀번호"를 암호화할 때 사용한다 개인정보의 안전성 확보 조치기준 제 7조 2항에 따라 일방향 암호화하여 저장해야 한다.
http://www.law.go.kr/행정규칙/개인정보의안전성확보조치기준/(2019-47,20190607)/제7조

비밀번호 저장과정

  1. 비밀번호를 암호화하여 저장한다.
  2. 사용자가 입력한 비밀번호가 맞는지 확인한다.
    2.1 입력한 비밀번호를 암호화해 저장된 비밀번호와 일치하는지 비교한다.
    2.2 이때 입력한 비밀번호와 저장된 비밀번호를 암호화된 상태로 비교해야 한다.

패스워드 DB가 유출되더라도 패스워드를 복호화할 수 없고 입력받은 값을 암호화해 비교하므로 비밀번호 암호화 방식에 적합하다.

종류

대칭 키(비밀 키) 암호화

둘 혹은 그 이상의 사용자 사이에 공유된 "비밀 키"를 기반으로 한다.
즉 대칭 키 암호화는 "같은" 비밀 키를 사용해 "암호화" 하고 "복호화" 하는 알고리즘이다.
암호화 과정은 cipher라 불리는 암호화 알고리즘에 평문(입력)을 실행해 암호문(결과)을 생성한다. 대칭 암호화 시스템은 대응하는 키를 무작위로 추측해 대입하기가 얼마나 어려운지에 달려있다.

따라서 암호화 알고리즘이 아닌 암호키의 비밀성이 중요하다.
현재 가장 많이 사용되는 대칭 암호화 체계는 블록 사이퍼와 스트림 사이퍼이다.

  • 블록 사이퍼
    • 데이터를 사전에 정의된 크기로 그룹화한다.
    • 각 블록은 상응하는 키와 대칭 알고리즘으로 암호화된다.
    • 블록 단위 크기 128bit 단위로 암호화, 복호화한다.
    • 키의 크기는 128, 256bit
    • DES/3DES는 현재 권장하지 않으며 AES/SEED/ARIA를 사용한다.
  • 스트림 사이퍼
    • “키 스트림”이라는 의사 난수를 연속으로 생성해 암호화하려는 데이터와 결합
    • 의사 난수를 1bit 단위로 생성, XOR 연산해 1bit 단위의 암호화 데이터를 생성
    • RC4, RC5, A5/1, A5/2, A5/3 등이 존재한다.

장점

대칭 키 알고리즘은 메시지를 빠르게 암호화하고 해독하는 동시에 높은 수준의 보안을 제공한다.
대칭 암호화의 보안은 키 길이를 증가시켜 향상할 수 있다. 대칭 키 길이에 추가되는 하나의 비트는 Brute force 공격을 통한 암호화 해제를 매우 어렵게 만든다.

단점

데이터를 암호화하고 해독하는 데 사용되는 키를 전송하는 본질적인 단점이 있다.
해당 키가 안전하지 않은 접속을 통해 공유되면, 제 3자에 의해 도난당할 수 있다.
인가되지 않은 자가 대칭 키에 접근해 키를 사용하게 된다면 암호화된 모든 데이터의 보안이 흔들린다. 이런 문제를 해결하고자 많은 웹 프로토콜은 대칭 암호화와 비대칭 암호화를 혼합해 사용된다.
대표적인 예는 TLS(Transport Layer Security) 암호화 프로토콜이다.

공개 키(비대칭 키) 암호화

공개 키 암호화는 공개 키와 개인 키(비밀 키)를 사용해 암호화와 복호화하는 알고리즘이다.
공개 키는 말 그대로 공개된 키로서 다른 이들에게도 공유되지만 키의 보안에 영향을 주지 않는다.
개인 키는 고유한 키로서 개인 키를 소유한 자만이 공개 키를 사용해 암호화된 정보를 읽을 수 있어 안전하게 보관되어야 한다.

공개 키가 나타난 이유

대칭 키 알고리즘은 제 3자에 의해 비밀 키를 도난당하면 암호화된 데이터에 접근할 수 있다.
반면 공개 키 알고리즘은 공개 키를 탈취당해도 데이터를 안전하게 보호할 수 있다.

한계

공개 키 알고리즘이 완벽한 알고리즘은 아니다. 공개 키 알고리즘은 개인 키가 안전하게 보호된다는 가정을 전제로 한다. 따라서 개인 키가 공유되거나 유출되었을 경우 공개 키를 통해 암호화된 데이터에 접근할 수 있다. 만약 개인 키를 잃어버렸다면 데이터에 접근할 수가 없다.

메시지 인증 코드 (MAC)

해시 함수는 무결성 확인에는 충분하지만 발신자의 신원 확인이 불가능하다.
그래서 메시지 인증 코드(MAC, Message Authentication Code)가 생겼다.

기능

  • 메시지의 무결성과 인증성을 보장한다.
  • 메시지와 송/수신자 간에 공유되는 키를 입력해 해시값(MAC)을 생성하는 함수
  • 공격자는 비밀 키를 모르므로 MAC 생성이 불가능하다.

단점

  • MAC 인증 방식은 공격자가 스니핑 공격을 통해 HMAC 값(해시값)을 탈취해 재전송하는 Replay Attack에 취약하다.

해결방안

Replay Attack 에 대응하기 위해 순서 번호, 타임스탬프, 넌스를 이용할 수 있다.

한계

  • 제 3자 인증 불가
    • 비밀 키를 공유하는 사람끼리만 증명이 가능해 비밀 키가 없는 제 3자에게 송신자를 증명할 수 없다.
  • 부인 방지 불가
    • 사용자 A가 B에게 메시지를 전송했지만 보내지 않았다 주장할 경우 증명할 방법이 없다.

디지털 서명

MAC의 한계를 극복하기 위해 개발된 기술

  • 제 3자에 대한 인증성
  • 부인 방지 서비스
    • 송신자가 메시지를 보낸 사실을 증명할 수 있다.

원리

  • 송신자는 자신의 개인 키를 사용해 암호화
  • 수신자는 송신자의 공개 키를 사용해 복호화
  • 송신자의 공개 키를 사용해 복호화가 가능해 메시지 송신자가 누구인지 검증할 수 있다.

디지털 서명 보안 서비스

  • 부인 방지 기능
  • 무결성 검증
  • 메시지 인증

디지털 서명 전제 조건

  • 공개 키가 송신자의 공개 키가 맞는지에 대한 인증이 필요하다.
  • 디지털 서명 보증을 위한 인증기관이 필요하다.
  • 공개 키 기반 구조(PKI, Public Key Infrastructure) 필요

인증기관 역할

  1. 인증서 소유자의 신원 확인
  2. 공개 키와 개인 키 생성
  3. 인증서 작성 및 발급
  4. 인증서 폐지

디지털 서명 검증 절차

  1. 인증서 해시값 생성
  2. 발급기관의 개인 키로 해시값을 암호화한다.
  3. 발급기관의 디지털 서명 추가
  4. "인증서 사용자"는 디지털 서명을 확인해 "인증서 소유자"의 공개 키가 맞는지 확인한다.
  5. 디지털 서명을 검증한다.
    5.1 서명의 공개 키로 복호화해 서명을 검증한다. # 서명의 공개 키는 발급 기관의 공개 키이다.

공인 인증서

  • 디지털 서명 보증을 위한 서비스
  • 특정 공개 키가 해당 사용자의 공개 키가 맞는지를 신뢰할 수 있는 기관에서 공인 인증서를 활용해 보증해준다.

인증서 용도

사용자가 인증서의 공개 키에 대응되는 개인 키를 보유하고 있음을 사용자의 디지털 서명으로 확인할 수 있다. 인증이 확인되면 해당 인증서는 사용자의 공인인증서임이 증명된다.

공인 인증서 사용 절차

  1. Arsen 은 개인 키와 공개 키를 생성한다. 이때 개인 키 생성 능력이 없으면 인증기관 or 등록기관에 문의한다.
  2. 생성된 개인 키를 Arsen에게 전달한다.
  3. Arsen 은 개인 키를 PC, 스마트폰, USB 등에 "비밀번호"를 걸어 보관한다.
  4. Arsen 은 인증기관 or 등록기관에 자신의 공개 키를 등록해 인증서 작성을 요청한다.
  5. 인증기관 or 등록기관은 Arsen의 신원을 확인한다.
  6. 인증기관은 Arsen의 공인 인증서를 작성하고 해당 기관의 서명을 추가한다.
  7. 인증기관은 공인 인증서를 Arsen에게 전달한다.
  8. Arsen의 공개 키를 사용하려는 금융기관은 Arsen에게 공인 인증서를 전달받는다.
  9. 금융기관은 인증기관의 공개 키를 사용해 인증서의 디지털 서명을 확인한다.
    9.1 인증기관의 공개 키는 외부에 공개되어 있으므로 잘못 사용될 일은 없다.
    9.2 서명 확인이 성공하면 해당 인증서는 인증기관이 서명한 Arsen의 인증서임이 증명된다.
  10. 금융기관은 공인 인증서에 있는 Arsen의 공개 키로 메시지를 암호화해 Arsen에게 전송한다.
  11. Arsen은 자신의 개인 키를 사용해 메시지를 복호화한다.

Reference

본 글은 학과 암호학 강의와 아랫글들을 참조합니다.

https://hack-gogumang.tistory.com/541
https://www.youtube.com/watchv=hgsPinVcvnE
https://www.pentasecurity.co.kr/resource/암호화/암호화/
https://www.binance.vision/ko/security/what-is-public-key-cryptography
https://www.binance.vision/ko/security/symmetric-vs-asymmetric-encryption
https://www.binance.vision/ko/security/what-is-symmetric-key-cryptography
https://www.binance.vision/ko/security/history-of-cryptography
http://www.law.go.kr/행정규칙/개인정보의안전성확보조치기준/(2019-47,20190607)/제7조

profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글

관련 채용 정보