정보보호 스터디
[대칭 암호] DES
녕녕펀치
2024. 2. 22. 14:56
1. DES
- 1977년 미국의 연방 정보처리 표준 규격으로 채택된 대칭 암호
- DES는 64비트 평문을 64비트 암호문으로 암호화하는 대칭 암호 알고리즘
- DES에 의한 암호문 단시간 해독 가능 -> DES로 암호화 했던 암호문을 복호화하는 용도 이외의 목적으로 DES를 사용해서는 안됨
2. 암호화 / 복호화
- DES는 64비트 평문을 64비트 암호문으로 암호화하는 대칭 암호 알고리즘
- 키의 비트 길이 56비트. 7비트마다 오류 검출을 위한 정보가 1비트씩 들어가서 64비트. (56 + 1*8 = 64)
- 64 비트 평문을 하나의 단위로 모아서 암호화
블록(block) : 64비트 평문을 하나의 단위로 모을 때, 모아진 것
블록 암호(block cipher) : 블록 단위로 처리를 하는 암호 알고리즘
- DES로 한 번에 암호화할 수 있는 것은 64비트. 그것보다 긴 비트 길이의 평문을 암호화하기 위해서는 DES를 이용해서 암호화를 반복할 필요가 있음
모드(mode) : 암호화를 반복하는 방법
- DES의 구조
- 페이스텔 네트워크, 페이스텔 구조, 페이스텔 암호라 불림
- 이 구조는 DES뿐만 아니라 많은 블록 암호에서 활용하고 있는 형식
- 페이스텔 네트워크에서는 라운드(round)라는 암호화의 한 단계를 여러번 반복해서 수행하도록 되어있음
- DES는 라운드를 16회 반복하는 페이스텔 네트워크
페이스텔 암호는 원하는 만큼 라운드 수를 높일 수 있으며, 라운드가 늘어날수록 보안성이 강화됨.
일반적으로는 16라운드 사용.
페이스텔 암호는 암복호화 알고리즘이 동일함.
라운드 함수 F에 어떤 함수를 사용해도 복호화 가능.
- 페이스텔 네트워크의 1 라운드
- 입력은 왼쪽 반과 오른쪽 반으로 나누어 따로따로 처리
- 암호문(이 라운드의 출력) : 맨 아래 2개의 사각형
- 서브키 : 이 라운드에서의 암호화 키 (페이스텔 네트워크에서는 라운드마다 서브키 필요)
- 라운드 함수 F : R과 서브키를 가지고 L을 암호화하기 위한 비트열을 생성하는 함수
- 1라운드 순서 : 라운드 입력 나누기(R, L) → R을 그대로 R로 보내기 → R을 라운드 함수 F로 보내기 → 라운드 함수 F는 R과 서브키 K를 입력으로 사용하여 랜덤하게 보이는 비트열 계산하기 → 얻어진 비트열과 L을 XOR하기 → 그 결과를 다음 라운드의 L로 사용
- 페이스텔 네트워크의 암호화
- R과 L의 교환은 라운드와 라운드 사이에서만 이루어지고, 최종 라운드 다음에는 교환하지 않음
- 같은 서브키를 활용하여 페이스텔 네트워크를 2회 수행하면 원래로 돌아감
- 페이스텔 네트워크의 구조 자체는 암호화와 복호화 사이에 전혀 차이가 없음
3. 차분 해독법과 선형 해독법
- 차분 해독법
- 평문의 일부를 변경하면 암호문이 어떻게 변화하는가를 조사하는 암호 해독법
- 블록 암호를 보면 입력되는 평문이 한 비트라도 달라지면 암호문은 전혀 다른 비트 패턴으로 변화함
- 선형 해독법
- 평문과 암호문 비트를 몇 개 정도 XOR해서 0이 되는 확률을 조사하는 해독법
- 암호문이 충분히 랜덤하게 되어 있으면, 평문과 암호문의 비트를 몇 개 XOR한 결과가 0이 되는 확률은 1/2이 될 것. 그래서 1/2로부터 크게 벗어난 비트의 개수를 조사하여 키에 관한 정보를 얻는 것.
- 평문과 암호문의 짝을 2의 47승(개) 모으면 해독 가능 (이것은 키를 2의 56승 (개)를 테스트하는 전사 공격보다 훨씬 적은 계산량이 됨)
- 선택 평문 공격
- 차분 해독법이나 선형 해독법에서는 암호 해독자가 임의로 만든 평문을 암호화할 수 있다는 가정을 함