4. 4 (수) - 암호 (DES 암호 / F함수 구조)
◎ DES 암호
- 64비트 단위로 블럭 암호화
- 56 비트로 key 사용, 매 8번째 비트는 parity check bit
- 16 Round
◎ Feistel 암호
- 항상 짝수번 Round를 돌려줘야함. 이유는?
- Round 1회는 암호화를 절반 밖에 안함 (R), 그렇기에 전체 암호화는 2회 반복되어야 함.
◎ 전치행렬을 이용한 전치암호화 (초기전치)
◎ F 함수
- 64비트 단위로 블럭 암호화
- 56 비트로 key 사용, 매 8번째 비트는 parity check bit
- 16 Round
◎ Feistel 암호
- 항상 짝수번 Round를 돌려줘야함. 이유는?
- Round 1회는 암호화를 절반 밖에 안함 (R), 그렇기에 전체 암호화는 2회 반복되어야 함.
◎ 전치행렬을 이용한 전치암호화 (초기전치)
◎ F 함수
- key와 입력값을 XOR 연산, 왜 XOR 연산을 이용할까?
- 암호시스템과 비슷한 XOR 연산
- 다음의 예시처럼, XOR 연산을 같은 값에 두번 적용하면 원래의 값이 나오게 된다.
● P ⊕ K = C 00001010 ⊕ 10101010 = 10100000
● C ⊕ K = P 10100000 ⊕ 10101010 = 00001010 같다!
● A ⊕ B = C
● C ⊕ B = A
- 진리표 -
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 1
◎ 확장순열
- 입력된 32개의 비트 중 16개의 비트를 2회 사용한 전치로 입력 비트를 48비트로 확장
◎ 치환 선택
- 확장된 48비트와 48비트 Key로 XOR 연산.
- 48 비트를 6개의 비트로 8묶음을 만듦
- 각 묶음을 4비트로 만듦
- 6개의 비트를 4개의 비트로 만드는 것이 S-box
- 6비트로 표현가능한 64개의 숫자, 4비트 표현되는 16개의 숫자로 대응
- S-box table에는 8개의 S-box가 존재, 각 묶음을 각각의 S-box에 보낸다.
◎ S-box
- 101101 이라는 값이 묶음하나로 들어왔다.
- 맨앞 1과 맨뒤 1을 가져온다 (11) - 2진수
- 이는 10진수로 3의 값이다.
- 가운데 0110을 가져온다 (0110) - 2진수
- 이는 10진수로 6의 값이다.
- S-box <S1> 은 첫행은 0행 첫열은 0열이다.
ex. 3행 6열이란, 4번째 행/7번째 열이라는 뜻. → 1값.
- 이를 통해 S-box로 부터 3행 6열의 값 1을 추출
- 추출된 값 1을 4비트의 2진수로 표현하면 0001이 되고, 이는 치환된 값으로 사용된다.
● 아무 6비트 값을 하나 골라서, s1 S-box를 이용, 4비트로 치환해보기
- 6비트 숫자 : 101110(2)
- 앞, 뒤자리 2자 : 10(2) → 2
- 가운데 4자 : 0111(2) → 7
- 2행 7열 : 11 → 1011(2)
- 4비트 숫자 : 1011(2)
댓글
댓글 쓰기