NS02- 대칭키 암호,AES, 난수

강준호·2023년 9월 12일

네트워크보안

목록 보기
2/10
post-thumbnail

대칭키 암호 필수요건

  • 강한 암호 알고리즘
  • 안전한 비밀키 공유

계산적 안전성

  • 암호문 깨는 비용 > 정보의 가치

암호 해독가가 알고 있는 정보에 따라서

암호 알고리즘, 해독해야할 암호문

  • 암호문만 알고 있는 공격

비밀키로 만들어진 평문-암호문 쌍

  • 알려진 평문 공격

해독가가 선택한 평문메시지와 비밀키로 그 평문을 암호화한 암호문

  • 선택 평문 공격

해독가가 목적을 갖고 선택한 암호문과 비밀키로 그 암호문을 복호화한 평문

  • 선택 암호문 공격

선택 평문 공격 + 선택 암호문 공격 조건 있을때

  • 선택문 공격

대칭 암호 알고리즘

암호화 방법

블록암호: 데이터를 고정된 "블록"단위로 암호화

  • Ex) 퍼즐 판에서 그림을 숨기고 싶을때, 하나씩 떼어놔서 조각을 재배열하는것 처럼
  • 데이터 덩어리를 한 번에 처리

스트림 암호: 연속적인 스트림에서 한번에 한 "비트" 씩 암호화

  • Ex) 페인트 스프레이건으로 벽을 칠하면서 이동하는데, 나만 아는 비밀 패턴에 따라 색상이 조금씩 바뀌는것 처럼
  • 연속적인 흐름으로 데이터를 조금씩 처리

파이스텔 암호 구조

  • Ex) 파트너가 서로 자리를 바꿔가며 춤을 추는 것처럼.

  • 데이터가 절반으로 나뉘고 여러 차례에 걸쳐 섞이고 바뀌는 춤을 춘다.

  • 여러차례의 순열과 스와핑을 통해 데이터를 암호화.

  • 두 개의 데이터 반쪽이 여러 라운드에 걸쳐 계속해서 섞이고 자리 바꿔서 처리

DES

  • 파이스텔의 변형.
  • 56비트의 길이라서 브루트포스에 취약

3중 DES

  • 2-3개의 고유키로 DES 를 세번적용해 키 길이를 늘린다.

  • 암호 - 복호 - 암호 순서

  • 암호화 할때 E - D - B

  • 복호화할때 D - E - D

참고)

3DES를 사용한 복호화(D-E-D):

1단계(D - 키 C로 암호 해독): 키 C를 사용하여 상자의 잠금을 해제(암호 해독)합니다.
2단계(E - 키 B로 암호화): 상자를 다시 잠그는 대신, 첫 번째 암호화 후 이전 상태로 잠금을 재구성하는 방식으로 키 B를 사용합니다.
3단계(D - 키 A로 암호 해독): 마지막으로 키 A를 사용하여 상자의 잠금을 해제(암호 해독)하면 원래 콘텐츠를 다시 받을 수 있습니다.
이 과정을 통해 DES 키가 하나만 있는 사람도 3DES로 암호화된 메시지를 해독할 수 있습니다(메시지가 DES로만 암호화된 것처럼 처리됨). 하지만 올바른 키가 없는 다른 사람의 경우, 3DES의 E-D-E 프로세스는 표준 DES 암호화보다 강화된 보안을 제공합니다.

요약하면, 트리플 DES는 암호화 시에는 암호화-암호화-복호화(E-D-E) 순서로, 복호화 시에는 복호화-암호화-복호화(D-E-D) 순서로 알고리즘을 세 번 적용하여 원래 DES의 보안을 강화하는 방식입니다.

=> 그럼에도 AES 에게 추월됨


AES 암호화 알고리즘

  • 블록 크기는 128 비트로 고정됨
  • 키 길이는 128,192,256 중에서

4가지 연산

  • 바이트 대체
  • 행이동
  • 열섞기
  • 라운드 키 더하기

마지막 라운드의 경우

  • 열섞기가 없다!!
    바이트 치환
    행 이동
    라운드 키 추가

암호화 순서

  • (라운드 키 더하기) => 바이트 대체 => 행이동 => 열섞기 => 라운드키 더하기

  • 라운드 키 처음에 하는 이유: 키와 처음 결합하면 처음부터 기본적인 수준의 보안이 제공되므로.

  • 마지막에 열섞기 없이 라운드 키 더하는 이유: 마지막 까지 보안을 강화하려고 비밀 키로 마무리

복호화 순서

  • (라운드 키 더하기) => 역으로 행이동 => 역으로 바이트 대체 => 라운드키 더하기 => 역으로 열섞기
  • 암호화의 반대라서 외울필요 없어

암호 블록 운용모드

시험에 나옴!!!

전자 코드북 ECB(electronic codebook mode)

  • 각 블록을 동일한 키로 암호화
  • 평문의 패턴이 암호문에 드러남
  • 사용X

암호 블록 체인 CBC(Cipher Block Chaining)

  • 같은 평문에서 같은 암호문이 생성되지 않음

장점

  • 동일한 일반 텍스트 블록이 서로 다른 암호 텍스트를 생성하므로 ECB보다 더 안전합니다.

단점

  • 병렬화 불가. 벡터필요

작동방식

  • 일반 텍스트 블록은 암호화 전에 이전 암호 텍스트 블록과 XOR 처리 된다.
  • 맨 첫번째 블록에는 초기화 벡터(IV) 가 사용됨.

암호 피드백 CFB 모드

장점

  • 블록 크기보다 작은 데이터 암호화 가능

단점

  • CBC와 마찬가지로 병렬화불가, 벡터 필요

작동 방식

  • CBC와 유사하게 작동하지만 블록 암호를 자체 동기화 스트림 암호로 바꿉니다.
  • 초기는 IV에서 파생. 후는 이전 암호문 텍스트를 가져와 암호화 한다음 평문과 XOR 진행.

암호화

복호화

카운터 모드 CTR

  • 작동 방식: 블록 암호를 스트림 암호로 변환. 카운터를 암호 입력으로 사용하고, 출력을 평문과 XOR 해서 암호문 생성.
  • 장점: 병렬화 가능. 블록 크기보다 작은 데이터 암호화 가능
  • 단점: 블럭마다 고유한 카운터가 필요. 카운터를 재사용하면 안돼.(보안때문에)

스트림 암호

  • 대칭 암호화의 한 유형

  • 평문 비트 +(XOR) "키스트림" = 암호화

  • 일반 텍스트가 한 번에 한 비트 또는 바이트씩 키스트림과 결합된다는 것입니다.

  • 같으면 0 다르면 1

Plaintext:     11001100
Keystream:  XOR 01101100
-----------------------
Ciphertext:    10100000

난수와 의사난수

난수의 역할

  • 대칭 스트림 암호 키생성, RSA 암호 알고리즘, 공개키 알고리즘 키 생성 에 쓰임

랜덤넘버 생성기(RNG)

  • 방사능, 대기 소음 같은 자연현상에서 숫자 도출

의사랜덤넘버 생성기(PRNG)

  • 시드값을 기반으로 숫자 시퀀스 생성.
  • 동일 시드가 주어지면 동일한 숫자 시퀀스를 생성함


실습

  • pyrypto

0개의 댓글