대칭키 암호 필수요건
계산적 안전성
암호 해독가가 알고 있는 정보에 따라서
암호 알고리즘, 해독해야할 암호문
비밀키로 만들어진 평문-암호문 쌍
해독가가 선택한 평문메시지와 비밀키로 그 평문을 암호화한 암호문
해독가가 목적을 갖고 선택한 암호문과 비밀키로 그 암호문을 복호화한 평문
선택 평문 공격 + 선택 암호문 공격 조건 있을때
대칭 암호 알고리즘
암호화 방법
블록암호: 데이터를 고정된 "블록"단위로 암호화
- Ex) 퍼즐 판에서 그림을 숨기고 싶을때, 하나씩 떼어놔서 조각을 재배열하는것 처럼
- 데이터 덩어리를 한 번에 처리
스트림 암호: 연속적인 스트림에서 한번에 한 "비트" 씩 암호화
- Ex) 페인트 스프레이건으로 벽을 칠하면서 이동하는데, 나만 아는 비밀 패턴에 따라 색상이 조금씩 바뀌는것 처럼
- 연속적인 흐름으로 데이터를 조금씩 처리
파이스텔 암호 구조

-
Ex) 파트너가 서로 자리를 바꿔가며 춤을 추는 것처럼.
-
데이터가 절반으로 나뉘고 여러 차례에 걸쳐 섞이고 바뀌는 춤을 춘다.
-
여러차례의 순열과 스와핑을 통해 데이터를 암호화.
-
두 개의 데이터 반쪽이 여러 라운드에 걸쳐 계속해서 섞이고 자리 바꿔서 처리
DES
- 파이스텔의 변형.
- 56비트의 길이라서 브루트포스에 취약
3중 DES
참고)
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와 유사하게 작동하지만 블록 암호를 자체 동기화 스트림 암호로 바꿉니다.
- 초기는 IV에서 파생. 후는 이전 암호문 텍스트를 가져와 암호화 한다음 평문과 XOR 진행.
암호화

복호화

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

스트림 암호
Plaintext: 11001100
Keystream: XOR 01101100
-----------------------
Ciphertext: 10100000
난수와 의사난수
난수의 역할
- 대칭 스트림 암호 키생성, RSA 암호 알고리즘, 공개키 알고리즘 키 생성 에 쓰임
랜덤넘버 생성기(RNG)
- 방사능, 대기 소음 같은 자연현상에서 숫자 도출
의사랜덤넘버 생성기(PRNG)
- 시드값을 기반으로 숫자 시퀀스 생성.
- 동일 시드가 주어지면 동일한 숫자 시퀀스를 생성함

실습