Information Security/En-Decrypt

대칭 암호화 기법 (Symmetric Encryption)

tavris 2018. 10. 5. 15:13

대칭 암호화 기법 (Symmetric Encryption)




대칭 암호화 기법(Symmetric Encryption)은 전통적인 암호화 기법 또는 싱글키 암호화 기법이라고도 한다.

대칭 암호화 기법(Symmetric Encryption)은 암호화 알고리즘에 사용되는 키와 복호화 알고리즘에 사용되는 키가 동일한 암호화 기법이다. 공개키 암호화 기법(Public-Key Encryption)에 비해 대칭 암호화 기법(Symmetric Encryption)은 계산 속도가 빠르다는 장점이 있다. 키 교환의 경우 비밀 키 암호(Diffie-Hellman, fSSL 등)를 사용하여 대칭 암호화 기법의 키를 공유한다.

대칭 암호화 기법(Symmetric Encryption)에는 5가지 요소가 있다.

    • 평문 (Plaintext)

    • 암호화 알고리즘 (Encryption Algorithm)

    • 비밀키 (Secret Key)

    • 암호문 (Cipher Text)

    • 복호화 알고리즘 (Decryption Algorithm)


또한, 대칭 암호화 기법(Symmetric Encryption)을 사용하기 위한 두가지 필수 사항이 있다.

    • 강력한 암호화 알고리즘이 필요하다. 알고리즘을 알고 있으며 하나 이상의 암호문을 알고 있을 때에도 암호문을 해독할 수 없고 비밀키를 알아낼 수 없어야한다.

    • 메시지를 보내는 전송자와 수신자 사이에 안전한 방식으로 비밀키의 복사본을 얻어야하고 비밀키를 보유해야 한다.


대칭 암호화 기법(Symmetric Encryption)은 암호화하는 단위에 따라 블록 암호와 스트림 암호로 구분된다.

    • 블록 암호 (Block Chiper) : 정해진 한 단위(Block)를 입력받아 그에 대응하는 암호화 블록(Block)을 생성하는 방식.

    • 스트림 암호 (Stream Chiper) : 연속적인 Bit/Byte를 계속 입력 받아, 그에 대응하는 암호화 Bit/Byte를 생성하는 방식.




  • 블록 암호 (Block Chiper)

    기밀성있는 정보를 정해진 블록 단위로 암호화하는 대칭키 암호 시스템이다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특별한 운용 모드가 사용된다.(예, ECB, CBC, OFB, CFB, CTR) 블록(Block)의 길이는 64 ~ 256 Bit이다. 블록 암호에 대한 안전성 증명 방법으로는 차분공격(Differential Cryptanalysis, 선택 평문 공격 방법)과 선형공격(Linear Cryptanalysis, 알려진 평문 공격 방법)등이 있다. 블록 암호 구조에는 Feistel 구조와 SPN 구조로 나뉜다.


    Feistel 구조는  암/복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요된다. 또한, 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. Feistel 구조의 대표적인 암호는 DES와 Single-DES(안전성의 문제로 사용 중지)가 있다.

    SPN 구조는 복호화 과정에서 역함수가 필요하도록 설계되어야 하는 단점이 있지만 중간에 Bit의 이동 없이 한번에 암/복호화가 가능하기 때문에 Feistel 구조에 비해 효율적으로 설계할 수 있다. SPN 구조의 대표적인 암호는 AES가 있다.


  • 스트림 암호 (Stream Chiper)

    유사 난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가진다. 일반적인 스트림 암호는 유사 난수를 1Bit 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1Bit의 암호화된 자료를 얻는다. 스트림 암호는 OTP를 유사 난수로 대체한 것이다. 스트림 암호는 하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선 통신 등의 환경에 주로 사용된다. 스트림 암호에는 RC4, A5/1, A5/2 등의 알고리즘이 있다.


    암호화 할 입력값과 동립적으로 난수열이 생성되는 경우 동기식(synchronous) 스트림 암호라고 하며, 입력값이 난수열 생성에 영향을 미치는 경우 비동기식(asynchronous) 또는 자기 동기(self-synchronizing) 스트림 암호라고 한다.






위 포스팅은 연구 목적으로만 사용되었으며, 악용을 위해 사용되었을 경우 법적 제재가 있을 수 있습니다.

또한, 위 포스팅을 악용하였을 경우 모든 책임은 본인에게 있음을 유의하시기 바랍니다.



'Information Security > En-Decrypt' 카테고리의 다른 글

RSA 공개키 암호 알고리즘  (0) 2018.10.04