대칭키 암호의 예
- 대부분의 고전 암호들
- Caesar's Cipher
- Substitution Cipher
- Vigenère Cipher
- ...
- 현대 암호들
- 일회용 패드
- DES
- 3DES
- AES
- 현재 많이 사용되고 있는, 강력하다고 알려져 있는 암호화 알고리즘.
- 키의 크기는 128, 192, 256, 384 비트 등이고, 키의 크기가 커질 수록 안전하다.
- 자세한 알고리즘은 추후 설명 예정
- RC4
대칭키 암호의 구성 요소
- 대치 (Substitution)
- 기본 단위가 정해진 다른 것으로 바뀌는 것
- 기본 단위가 바이트가 될 수도, 비트가 될 수도
- 1:1 대응
- Ex. A → C, B → D 등 일 때, ILOVEYOU → KNQXGAQW
- 재배열 (치환 or Permutation or Transposition)
- 각 평문의 기본 단위들의 위칙 바뀌는 것
- 순서 변경
- Block 단위
- Ex. ILOVEYOU → OIVLEUOY
- Product System
- 대치 + 재배열
- 복합적으로 구성된 요소
- 대칭키 암호는 한 번에 암호화 하는 데이터 크기에 따라 블록 암호(Block Cipher)와 스트림 암호(Stream Cipher)로 나뉜다
일회용 패드 (One-Time Pad)
- 암호화 : (평문의 아스키코드 값) XOR (무작위 비트열)
- 복호화 : (암호문) XOR (같은 키)
- 송신자와 수신자가 같은 비트열을 생성할 수 있는 미리 공유된 키 생성기가 필요
- 키 생성기 : Plain Text와 크기가 같아야 한다
- 암호화 : C = P ⊕ K
- 복호화 : C ⊕ K = ( P ⊕ K ) ⊕ K = P ( K ⊕ K ) = P ⊕ 0 = P
- Ex. midnight 이라는 평문을 일회용 패드로 암호화한다고 가정
- midnight은 8바이트 = 64비트
- 64비트의 무작위 비트열을 생성하여 키로 사용
- midnight의 ASCII 코드와 key를 XOR 연산하여 암호화
- 보안성
- 최고, 거의 완벽
- Brute force attack으로 깨는 것을 거의 불가능함 (사실 완전히 불가능하다고 봄)
- 이유 : Ex. 위 예시의 암호문에 다른 키를 적용해 복호화를 시도하면 다른 의미 있는 8글자짜리 영어 단어도 나올 수 있음, Brute force attack이 계속 넣어서 말이 되는게 나오도록 하는 방법이기 때문데
- 일반적으로도 어떤 키로 복호화를 시도하느냐에 따라 같은 길이이 다른 의미 있는 문장이 나올 수 있음
- 그러나 많이 사용하지 않는 이유
- 환경 문제를 고려하면 안전하지 않음
- 키 배송 및 보존 문제
- 키의 길이 = 평문 으로 너무 길다 → 안전하게 전송/보관을 위해 데이터 크기의 2배 만큼 소모해야 함
- 키를 안전하게 보내거나 보관할 방법 X
- 키를 안전하게 보낼 시스템 추가 필요 → 있었으면 진작에 평문을 그렇게 보냈겠지..
- 키 재사용 문제
- 키 재사용 불가능 → 매번 데이터를 보낼 때마다 키도 새로 생성해야 함
- 하지만 보안성을 살리고 단점은 보완하는 기법(스트림 암호)들이 개발되어 사용되고 있음
페이스텔 (Feistel) 암호 구조
- 1973년 IBM의 Horst Feistel 이 최초로 소개한 구조
- DES 등 대부분의 대칭 암호 알 고리즘의 기본이 되는 구조
- 함수가 1개인 것이 큰 장점
- 암호화와 복호화는 매커니즘은 완전히 같고 입력하는 라운드키 순서만 반대로 해주면 되므로 SW, HW 구현이 모두 편리
- 다른 점 : 입력값, key 선택 순서 뿐
- 평문의 길이가 2w일 때 과정
(사진 참조)- 여러 개의 같은 과정을 하는 라운드로 구성 (반복문처럼)
- 원본 키에서 라운드와 같은 개수의 라운드 키 (or 서브 키)가 생성
- 각 라운드가 시작될 때 블록을 절반씩 나눔
- 나뉜 블록 중 오른쪽 블록은 다음 라운드의 왼쪽 블록이 됨
- 나뉜 블록 중 왼쪽 블록와 오른쪽 블록, 그리고 라운드키를 이용해 연산을 수행하고 그 결과물이 다음 라운드의 오른쪽 블록이 됨
- 모든 라운드가 끝나면 왼쪽 블록과 오른쪽 블록을 서로 바꿈
- 특징
- 원하는 만큼 round의 수를 늘릴 수 있다
- 라운드 함수 f는 어떤 것을 사용해도 동작할 수 있다, 보안성을 위한다면 안전하고 복잡한 것이 좋다
- 암호화와 복호화를 동일한 구조로 설계할 수 있다 → 하드웨어화 가능
- 알고리즘을 해독하기 좋다 → 분석이 쉬워 취약점을 찾기 쉬워져서 잘 해결 가능 (근데 사실 없어서.. 자주 사용)
- 설계 고려 사항
- 블록의 크기
- 블록의 크기 ↑ & 보안성 ↑ & 암/복호화 속도(성능) ↓ (보안성과 속도는 반비례)
- 현재는 최소 64bit 권장 (DES는 64bit)
- 키의 길이
- 키의 길이 ↑ & 보안성 ↑ & 암/복호화 속도(성능) ↓
- 현재는 최소 128bit 권장 (DES는 56bit → 사용 권장 x)
- 라운드 수
- 라운드 수 ↑ & 보안성 ↑ & 암/복호화 속도(성능) ↓ (암호문과 평문이 점점 더 달라지게 돼서, x와 연관성이 더 떨어짐)
- 어느 정도 한계가 되면 라운드 수를 증가시키는 것이 무의미
- 최소 16라운드 권장
- 빠른 암/복호 과정
- 하드웨어로 설계가 가능하면 더 좋음 (f에 따라 가능/불가능 여부가 달라짐)
- 블록의 크기
- 해독법
- 개발된지 오래 되어 많은 공격 기법 존재
- 차분 해독법
- 키는 모르지만, 평문의 일부를 변경하였을 때 암호문이 어떻게 변화되는지 분석
- 평문이 1bit라도 바뀌게 되었을 때 암호문이 어떻게 바뀌게 되는지 패턴을 분석하여 공격 시도
- 선형 해독법
- 평문(p)와 암호문(c)을 서로 XOR 연산한 후, 각각의 비트가 0일 확률을 구함
- 확률이 1/2보다 눈에 띄게 크거나 작으면, 암호문으로부터 평문을 알아내기 비교적 쉬워진다
- 완벽한 알고리즘은 0이나 1이 나올 확률이 각각 1/2이라 예측이 어려움
- Ex. p(57) ⊕ c(57) = 0 일 확률이 1/2보다 크게 작으면, p(57) = 1일 때 p(57) = 0일 가능성이 매우 높다고 볼 수 있다
3DES
- Data Encryption standard
- 원래 DES는 56 bit로 시작해 2^56가지 key가 있었지만 뚫려서 사용을 안하다가 3DES로 부활
AES (Advanced Encryption Standard)
- 컴퓨터의 발전에 따라 DES만으로는 안전한 암호기술을 제공할 수 없게 됨
- NIST 에서 1997년 새로운 암호기술을 공모함 → 지금도 주요 암호 기술
- 전세계에서 아무런 제한 없이 무료로 이용할 수 있다는 조건으로 공모
- C나 Java로 구현이 쉬워야 했다
- 선정 과정도 모두 공개함.
- 제안된 여러 암호화 기술 중 선택된 암호화 알고리즘이 Rijndael이 제안한 AES
- 블록의 크기 : 128비트
- 키의 길이 : 128, 192, 256비트 중 선택 가능
- 각각의 경우 라운드의 수 : 10, 12, 14
- 암호화 과정은 다음 네 과정의 반복으로 구성
(사진참고)- Substitute Bytes
- Shift Rows
- Mix Columns
- Add Round Key
- 보안성
- 아직까지 AES를 효과적으로 깨는 유효한 방법은 발견 X
- AES로 주로 Data를 암호화
- AES의 특징
- 암/복호화 속도가 빠르다
- 다양한 플랫폼에 적용 가능
- 많은 연구자들의 검증을 마친 것이므로 신뢰성이 높다
- Rijndael이 제안한 것 뿐 아니라 AES로 제안되었던 다른 최종 후보들도 사용은 가능
- 코딩이 쉽다 (라이브러리도 존재)
- 지금도 많이 쓰이는 대칭 키 암호 기술
- DES
- 보통 DES는 사용하지 않을 것을 권장
- 3DES호환성 때문에 당분간 사용할 것으로 보여지나, 점차 AES로 대체될 것으로 예상
'Computer Science > Network Security' 카테고리의 다른 글
[CS][알기 쉬운 정보보호개론 3판] Chapter06. 공개키 암호 (2) | 2023.10.17 |
---|---|
[CS][알기 쉬운 정보보호개론 3판] Chapter05. 블록 암호 모드 (1) | 2023.10.17 |
[CS][네트워크보안] Chapter03. 암호의 역사 (2) | 2023.10.14 |
[CS][네트워크보안] Chapter2. 암호의 세계 (0) | 2023.10.13 |
[CS][네트워크보안] Chapter1. 스마트 시대와 정보 보호 (1) | 2023.10.09 |