티스토리 뷰

대칭 암호 == 관용 암호 == 비밀-키 암호 == 단일-키 암호는 다 같은 말이다.

대칭 암호 알고리즘으로 DES, 3DES, AES가 있다.

대칭 암호 요소

  1. 평문: 원문 데이터
  2. 암호 알고리즘: 원문 데이터를 변환하는 알고리즘
  3. 비밀 키: 알고리즘의 입력으로 사용되며 암호 알고리즘의 키
  4. 암호문: 암호화된 메시지
  5. 복호 알고리즘: 암호화된 메시지를 역으로 평문으로 만든다.

대칭 키 필수 사항

  1. 강한 알고리즘: 암호문/평문을 알고 있더라도 키를 알아내지 못하도록 알고리즘이 강력해야 한다.
  2. 송신자와 수신자가 공유하는 키는 분배 방법이 중요하다.

보안은 키의 비밀성의 의해 지켜진다. 암호화 알고리즘은 공개되어 있다.
보안의 핵심은 키를 얼마나 잘 보호하는지에 달려있다.

암호

암호화는 3개의 단계로 이루어진다.

  1. 평문을 암호문으로 전환하는 유형: 대체, 치환, 생성 시스템
  2. 사용되는 키의 수: 송수신자가 같은 키를 사용하면 대칭 암호, 다른 키를 사용하면 비대칭 암호라고 한다.
  3. 평문 처리 방법: 블록 암호(한번에 한 블록씩), 스트림 암호(입력 요소를 연속적 처리)

암호해독

암호문을 통해 평문이나 키를 찾으려고 하는 시도를 암호해독이라고 한다.

  1. 암호문만 주어졌을 때
  • 공격자가 소지한 정보가 제일 빈약한 경우
  1. 알려진 평문 공격
  • 항상 특정한 패턴으로 암호화가 되는 경우 암호문과 평문을 가지고 키를 유추할 수 있다.

암호구조가 계산적으로 안전한 경우

  1. 암호 해독 비용이 암호화된 정보보다 큰 경우
  2. 암호 해독 시간이 암호화된 정보의 유효기간보다 큰 경우

전수 공격

모든 가능한 키를 이용하여 암호문으로부터 의미 있는 평문을 얻어낼때까지 시도하는 방법, 브루트포스 방법이라고도 한다.
전수공격을 한다고해도 평문이 의미있는 평문인지 구별해내는 기술이 필요하다.

페이스텔 암호 구조

암호 알고리즘 입력 요소 : 평문 블록, 키
길이가 2w인 블록으로 나누어 LE, RE로 w의 크기만큼 나눈다.
각 라운드는 전 라운드의 과정으로 생성된 서브키를 이용하여 생성 알고리즘을 구성한다.

과정

  1. 왼쪽 데이터 LE 대체를 수행한다.
  2. 오른쪽 데이터 RE에 대해 라운드 함수를 적용하고 왼쪽 반에 XOR 연산을 시행한다.
  3. 왼쪽 LE와 오른쪽 RE를 치환한다.

블록 길이: 블록 길이는 길 수록 보안이 좋아지지만 연산 시간이 길어진다. 페이스텔 암호 구조에서 블록길이는 64bit이다.
키 길이: 키 길이 역시 길수록 보안이 좋지만 연산 시간이 길어진다. 여기선 128bit 키를 사용한다.
라운드 수: 라운드 수는 가변적이며 여러번 수행할수록 보안이 좋아진다. 여기선 16번의 라운드를 사용한다.
서브키 생성 알고리즘/라운드 함수: 복잡할수록 보안이 강해진다.

대칭암호 설계 고려사항

  1. 빠른 소프트웨어 암호/복호 알고리즘
  2. 용이한 해독: 알고리즘의 구조가 단순할 수록 해독 취약점을 찾기 쉬워지며 보안을 강화할 수 있다.

대칭암호 알고리즘

DES: Data Encryption Standard

블록의 길이는 64bit, 키 길이는 56bit, 라운드 횟수 16
DES 취약점

  1. 알고리즘의 문제: 하드웨어 발전에 따라 DES를 전수공격을 시도하면 키를 찾아낼 수 있음을 증명
  2. 키 길이: 56bit의 키를 사용하기에 뚤릴 수 있다. DES Cracker가 생긴 뒤 키 길이를 늘리고자 한다.

3DES: Triple Data Encryption Standard

3개의 키를 사용하며 DES를 3번 수행한다.
암호문은 암호화-복호화-암호화를 수행한다.

3DES는 서로 다른 3개의 키를 사용하기에 56bit * 3 = 168bit의 키 길이를 갖는다.

AES: Advanced Encryption Standard

3DES의 소프트웨어 구현속도가 느리며 64bit 단위의 블록을 사용함으로써 약점을 나타냈다. 이는 하드웨어의 발전으로 더 큰 블록사이즈를 사용하는 것이 바람직 해지게 되었다.

Rijndael 레인달

블록의 길이 128bit, 키 길이 128/192/256 bit
레인달은 페이스탈 구조가 아니다.
만약 128비트의 키를 사용한다고 가정하면 16byte의 키를 총 4개의 word로 표현할 수 있다. (1 byte = 8bit, 1 word = 4byte)
키를 44word로 확장한다. 4개씩 총 11개의 워드 배열이 존재하며, 첫번째 워드는 평문에 더한다.
워드 배열은 라운드 키 더하는 과정 중에 사용되며 총 10번의 라운드를 진행한다.
라운드 키 더하기(확장된 키) -> 바이트 대체 -> 행 이동 -> 열 섞기 -> 라운드 키 더하기(확장된 키) 반복

난수

  1. 무작위 성
    • 균등 분포: 수열의 비트 분포가 균일해야 함.
    • 독립성: 어떤 부분도 다른 부분으로부터 예측할 수 없어야 함.
  2. 예측 불가능성
    • 무작위 성을 갖는 난수를 생성하는 방법이 너무 어렵거나 시간이 오래걸리는 문제가 생기기에 정교한 무작위성 대신 일부를 통해 이어지는 부분을 예측할 수 없는 특성을 의미한다.

 
진성난수(True random number): 예측이 불가능하며 모든 수가 독립적이다.
하지만 암호분야에서 알고리즘에 기초해서 난수를 만들기에 무작위성을 갖지 못하는 수열을 생성해내게 된다.
알고리즘을 잘 만들어 생성된 수열을 의사난수(pseudorandom number)이라고 하는데 정확히 진성난수는 아니지만 어떤 상황에서는 진성난수처럼 작동한다.

  1. TRNG: True Random Number Generator
  2. PRNG: Pseudo Random Number Generator: 시드가 같으면 같은 결과값이 나온다.
  3. PRF : Pseudo Random Fuction: PRNG에 컨텍스트별 값을 추가하여 랜덤성을 부여한다.

 

PRNG

의사난수 비트 스트림을 생성하기 위해 생성된 알고리즘이며, 대표적으로 RC4가 있다.
범주: 대칭 블록 암호, 비대칭 암호, 해시함수, 메시지 인증 코드(MAC)
블록 암호는 입력되는 하나의 블록씩 처리하여 그에 대한 처리된 블록을 만든다.
스트림 암호는 입력되는 요소를 연속적으로 처리하여 한 요소씩 배출한다.

스트림 암호 중 하나인 RC4는 대칭 스트림 암호 알고리즘 중 하나이다.
전형적으로 스트림 암호는 입력을 하나의 바이트로 받는다.
의사난수 비트 생성기는 키를 입력으로 받는데 입력 스트림과 키 스트림과 XOR 연산을 하여 암호문을 만든다.

 
스트링 암호 설계시 중요 사항

  1. 암호열은 주기가 커야한다. 주기가 길수록 해독하기 어려워진다.
  2. 키 스트림은 반드시 진성 난수 스트림에 근사하도록 한다.
  3. 브루트 포스 알고리즘을 차단하기 위해 키의 길이가 충분히 길어야 한다. 현재 키길이는 최소 128bit 이상이다.
  4. 스트링 암호는 동등한 길이의 기를 사용할 때 블록 암호만큼의 보안성을 유지한다.
  5. 스트림 암호는 블록 암호보다 구현속도가 빠르다.

RC4

스트림 암호이며 SSL/TLS 표준, WEP, WPA 프로토콜에서 사용된다.

암호블록 모드

대칭 암호 블록은 입력을 하나의 블록으로 받는데 DES, 3DES의 경우 64bits, AES의 경우 128bit의 블록을 입력으로 받는다.

  1. 전자 코드북 모드: ECB
    • 각 블록을 동일한 키로 암호화 하며 각각의 블록이 하나의 암호블록에 대응되기에 코드북이라고 명칭
    • 대응되는 관계이기에 쉽게 해독될 가능성이 있다.
  2. 암호 블록 체인모드: CBC
    • 현재 평문 블록과 직전 암호 블록을 XOR 연산하여 알고리즘 입력으로 받는다.
    • 첫번째 암호블록에 대해 초기화벡터를 만들어 첫번째 평문 블록과 XOR연산을 통해 첫단계를 해결한다.
  3. 암호 피드백 모드: CFB
    • 어떠한 블록암호도 스트림 암호로 변경할 수 있다는 특징이 있으며 s bit를 선택하여 평문 블록과 XOR 연산하여 암호문을 생성한다.

4. 카운터 모드: CTR

- 평문블록과 동일한 크기의 카운터를 이용한다.
- 병렬적으로 처리하기에 하드웨어/소프트웨어 효율성이 높아진다.
- 임의접근
- 복호 알고리즘은 필요 없다.

'📚 컴퓨터사이언스 > Network' 카테고리의 다른 글

네트워크 보안 개요  (0) 2023.04.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   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
글 보관함