[컴퓨터보안] Stream Ciphers | Block Ciphers
Stream Ciphers
One-Time Pad 는 아주 안전하지만, 실용적이지는 않은 방법이였습니다. One-Time Pad의 강점인 Plain Text와 같은 길이의 아주 긴 랜덤 키를 사용하는 Stream Cipher 가 One-Time Pad의 대안책으로 많이 사용됩니다. Stream Cipher는 짧은 길이의 키만 공유하고, 이를 Bit-Stream Generator 라는 알고리즘을 사용해 bit-stream을 생성합니다. 이 방식을 통해, One-Time Pad의 단점 중 하나였던 아주 긴 랜덤 키를 어떻게 공유할까 에 대해서 고민하지 않아도 됩니다. 암호화/복호화를 하는 사용자는 같은 짧은 Key를 Bit-Stream Generation Algorithm 에 넣으면 같은 bit-stream을 얻을 수 있습니다. Bit-stream generation algorithm은 공격자도 알고 있기 때문에, 이 generating key를 잘 보관하는게 중요합니다.
Encryption
1. K(Key, 여기서는 Seed 역할)를 Bit-stream generation algorithm에 돌린다 => Plain Text와 길이가 같은 key stream이 생성된다.
2. Plain Text와 Key Stream을 XOR 연산한다 => Cipher Text 가 완성된다.
Decryption
1. K(Key, 여기서는 Seed 역할)를 Bit-stream generation algorithm에 돌린다 => Cipher Text와 길이가 같은 key stream이 생성된다.
2. Cipher Text와 Key Stream을 XOR 연산한다 => Plain Text 가 완성된다.
만약 Plain Text와 Cipher Text가 1,000,000 Bit 라면, 이를 조합으로 맞추려면 (1/2) ^ 1,000,000 입니다.
하지만, Key(128 Bit) 값을 유추하는건 비교적 쉽습니다. => (1/2) ^ 128
Block Ciphers
Block Cipher는 Plain Text를 여러 개의 Block으로 나누어 (Key + 1 Block) 을 Encryption Algorithm에 넣어 나온 결과물을 합치는 방식으로 암호화 합니다. 1개의 Plain Text Block을 넣으면, 같은 길이의 Cipher Text Block 이 나옵니다. 이렇게 나온 여러 블럭의 Cipher Text 를 모두 이어서, Plain Text 와 같은 길이의 Cipher Text를 완성할 수 있습니다.
Block Cipher도 Stream Cipher와 같이 Encryption/Decryption Algorithm 을 공격자도 알고 있기 때문에, Key를 잘 보존하는게 중요합니다.
댓글
이 글 공유하기
다른 글
-
[컴퓨터보안] Web Security
[컴퓨터보안] Web Security
2023.04.26 -
[컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식
[컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식
2023.04.25 -
[컴퓨터보안] Transposition Techniques(전치 기술)
[컴퓨터보안] Transposition Techniques(전치 기술)
2023.04.24 -
[컴퓨터보안] Substitution Technique(치환 기술)
[컴퓨터보안] Substitution Technique(치환 기술)
2023.04.24