의견.png

대칭키

위키원
wlgns12244 (토론 | 기여)님의 2019년 7월 29일 (월) 11:27 판 (활용)
이동: 둘러보기, 검색

대칭키는 정보를 암호화 할때 사용하는 키(Key)와 암호를 정보로 복호화 할때 사용되는 키(key)가 같아 양쪽 다 사용한다는 뜻에서 이 키를 대칭키라고 칭한다.[1]

개요

대칭키는 대칭 암호화 방식에서 둘 혹은 그 이상의 사용자 사이에 공듀된 단일 키를 의미한다. 대칭키를 이용하는 대칭키 암호 방식은 메시지를 암호화하고 해독하는데 동일한 키를 사용하는 암호화 방식의 한 유형이다. 이러한 정보 인코딩 방식은 정부와 군대 사이의 기밀 대화를 가능하게 하는 수십 년 간 사용되어 왔다. 현재 대칭키 알고리즘은 데이터 보안을 강화하기 위해 다양한 컴퓨터 시스템 전반에 적용되고 있다.[2]

특징

사용되는 키가 짧고 속도가 빨라서 효율적인 암호 시스템을 구축할 수 있다. 이 암호 방식은 알고리즘의 내부 구조가 간단한 치환(대치)과 전치(뒤섞기)의 조합으로 되어 있어서 알고리즘을 쉽게 개발할 수 있고, 컴퓨터 시스템에서 빠르게 동작한다. 그러나 송수신자 간에 동일한 키를 공유해야 하므로 많은 사람들과의 정보교환 시 많은 키를 생성, 유지, 관리해야 하는 어려움이 있다. 이러한 대칭키 암호 방식은 데이터를 변환하는 방법에 따라 블록 암호와 스트림 암호로 구분된다.[3]

블록 암호(block cipher)란 암호학 용어로, 기밀성있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템이다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용된다.(예, ECB, CBC, OFB, CFB, CTR) 블록 암호에 대한 안전성 증명 방법으로는 선택평문공격인 차분공격(Differential Cryptanalysis)과 알려진평문공격인 선형공격(Linear Cryptanalysis)등이 있다. 차분 공격(differential cryptanalysis)은 암호해독(cryptanalysis)의 한 방법으로, 입력값의 변화에 따른 출력값의 변화를 이용하는 방법이다. 선형 공격(linear cryptanalysis)은 암호 공격의 한 방법으로, 암호화 과정에서의 근사적 선형 관계식을 찾는 것을 목적으로 한다. 선형 공격은 차분 공격은 블록 암호를 공격하는 방법으로 널리 응용된다. 블록 암호 구조에는 페스탈(Feistel)구조와 SPN구조가 있다. 페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요 되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. 대표적인 암호로는 DES가 있으며 Single DES는 안전성 문제로 현재 사용하고 있지 않다. 한국에서는 개발된 암호 중에서는 페스탈 구조기반으로 설계된 SEED가 있다. SPN 구조는 암복호화 과정에서 역함수가 필요하도록 설계되어야 한다는 단점이 있지만 중간에 비트의 이동없이 한번에 암복호화가 가능하기 때문에 페스탈 구조에 비해 효율적으로 설계할 수 있다. 대표적인 암호로는 AES가 있으며 AES는 현재 널리 상용되고 있다.[4]

스트림 암호는 블록 단위로 암호화·복호화되는 블록암호와는 달리 이진화된 평문 스트림과 이진 키스트림의 배타적 논리합(XOR) 연산으로 암호문을 생성하는 방식이다. 이러한 스트림 암호는 키스트림이 평문과 관계없이 생성되어 동기식으로 사용해야만 하는 동기식 스트림 암호, 키스트림이 평문 혹은 암호문의 함수관계에 의해 생성되기 때문에 복호화 시 동기가 흐트러졌더라도 스스로 동기화가 이루어져서 복호화가 가능한 자기 동기식 스트림 암호가 있다. [5] 이진 수열 발생기로 평문을 일련의 비트열로 취급하여 한 번에 1비트씩(혹은 바이트/워드 단위) 암호화시키는 암호 시스템. 스트림 암호는 빠르게 디자인될 수 있고 실제로 어떠한 블록 암호보다도 빠르기 때문에 무선통신 기기에 주로 사용된다. 블록 암호는 큰 블록 데이터를 사용하지만 스트림 암호는 일반적으로 평문의 작은 단위인 비트를 사용한다. [6] 1970년대부터 유럽을 중심으로 발달한 스트림 암호는 주기, 선형복잡도 등 안전성과 관련된 수학적 분석이 가능하고, 알고리즘 구현이 쉬워 군사 및 외교용으로 많이 사용되고 있다. 또한 구현 여건이 제약되는 이동통신 환경에서도 구현이 용이하여 이동통신 등의 무선데이터 보호에 많이 사용된다.

대칭 암호화

대칭 암호화는 평문(plaintext)을 암호화하고 해독하는 데 동일한 키인 대칭키가 사용된다. 암호화 과정에는 사이퍼(cipher)라 불리는 암호화 알고리즘에 평문을 실행하는 것으로 구성되며, 이는 암호문을 생성한다. 암호문에 포함된 정보를 읽거나 이에 접근할 수 있는 유일한 방법은 상승하는 키를 사용하여 암호를 풀어내는 것이다. 암호 해독 과정은 암호문을 평문으로 다시 바꾸는 과정을 의미한다.[2]

대칭 암호화 시스템의 보안성은 대응하는 키를 무작위로 추측해 대입하기가 얼마나 어려운지에 달려있다. 암호화 키의 길이가 길어질수록 난이도는 높아진다. 가장 많이 사용되는 일반적인 대칭 암호화 체계는 블록 사이퍼와 스트림 사이퍼이다. 블록 사이퍼는 데이터를 사전에 정의된 사이즈로 그룹화하고, 각 블록은 상응하는 키와 대칭 알고리즘으로 암호화 된다. 스트림 사이퍼에 경우 평문 데이터 블록을 암호화 하지 않고 1비트를 증가시키는 형태이다.[2]

대칭키를 사용한 암호화 알고리즘은 비대칭키 알고리즘에 비해 빠르게 암호화하고 해독하는 동시에 높은 수준의 보안성을 보여준다. 상대적으로 간결한 대칭형 시스템은 비대칭에 비해 적은 컴퓨터 전력을 필요로 한다는 것 또한 장점이다. 대칭 알고리즘의 보안성은 보안 키의 길이를 하나 비트만 증가시켜도 무차별 대입 공격을 통한 암호하 해체를 기하급수적으로 어렵게 만든다.[2]

문제점과 대안

케르크호프스 원리에의하면 암호 시스템의 보안은 알고리즘을 비밀로 유지하는 것에 기초하지 않고 핵심 비밀을 유지하는 데에만 기초해야 한다. 암호체계는 적이 알게 될 수 있다는 가정하에 갖춰줘야 하며 보다 중요한 것은 그 체계, 알고리즘이 알려지더라도 비밀은 유지되어야 하는 것을 잊지 말라는 얘기다. [7] 대칭키 방식의 문제점은 송수신자가 동일한 키를 가지고 있어야 하며 이는 키 분배, 보관에 큰 문제가 있다. 데이터를 암호화 하고 해독하는 데 사용되는 키를 전송해야 하는데 해당 키가 안전하지 않은 접속을 통해 공유된다면, 악의적인 3자에 의해 도난당할 위험이 있다. 키 1개로 암/복호화가 다 가능하니 키가 탈취되거나 복사된다면 보안 측면에서 굉장이 불안하다. [8] 이와 더불어 인가되지 않은 사용자가 대칭 키에 접근하게 되면, 해당 키를 사용해 암호화된 모든 데이터 보안이 위태롭게 된다.[2] 또한 이러한 방식을 다양한 사람이 사용하게된다면 송신자와 수신자간의 신뢰를 지키기 위해서라도 키가 서로 달라야하는데 그 개수가 무한정으로 늘어날 수 있고 그 늘어진 키의 갯수 만큼 관리하기도 힘들것이다. 이러한 대칭키의 문제점을 해결하기 위해 비대칭키가 고안되었는데 암호화, 복호화 키가 서로 다른 경우로 키가 2개인 방식이다. 대칭키 방식에서 암호키의 노출은 결과적으로 암호화가 무의미 해진다는 것을 뜻했다. 케르크호프스는 이같은 키나 알고리즘이 노출되더라도 암호화된 데이터에 문제가 없어야 된다고 주장을 가지고 있었으며, 이에 맞는 암호화 방식은 키르크호프스법칙에 준한다고 볼 수 있다. 이 비대칭키 암호화 방식의 예로 RSA 공개키 암호화 방식이 있다. RSA방식은 큰 수에 대해 소인수 분해의 난해함을 기반으로 공개키만으로는 비밀키를 짐작할 수 없는 알고리즘이다. 쉽게 말해서 한 쌍의 비대칭적인 공개키(A)와 비밀키(B)가 존재하고, A로 잠근 자물쇠는 B로만 열수 있고, B로 잠긴 자물쇠는 A로만 열 수 있도록 되어있는 것이다. 하지만 이러한 비대칭키 방식은 리소스가 많이 소모된다는 단점도 있어서 대칭키의 장점과 비 대칭키의 장점을 합쳐 대칭키를 공유할 때 RSA의 공개키 방식을 사용하고, 대칭키가 공유되면, 리소스 소모가 덜 큰 대칭키 방식으로 암호화하여 통신하는 방법으로 고안되었다.[9]

활용

암호화 기술 분류

SPN

  • Substitution-Permutation Network(대치-치환망 구조)
  • 전치와 치환을 이용하여 관용 암호방식의 문제 해결
  • 128비트를 4x4 행렬로 나타내어 행렬을 이용한 암호화
  • 적용 알고리즘 AES,ARIA

Feistel

  • N비트의 블록을 N/2씩 둘로 나누고, R번의 라운드만큼 반복적으로 적용, 이전 블록 암호문과 평문을 Exclusive-OR 한 형태
  • 적용 알고리즘:DES,SEED

인수분해

  • 두 큰 소수 p와 q의 곱셈은 쉬우나 n으로부터 p와 q를 추출하기 어려운 점 이용
  • 적용 알고리즘:RSA

타원곡선

  • PKI 기반인 RSA의 문제점인 속도와 안정성을 해결하기 위해서 타원기반의 안정성과 효율성을 기반으로 생성된 알고리즘
  • 적용 알고리즘:ECC

이산대수

  • 이산대수의 계산은 어렵지만 그 역함수/지수함수의 계산은 빠르게 수행하는 특징을 이용
  • 적용 알고리즘:Diffle-Hellman,DSA

해쉬 알고리즘

  • 임의의 길이를 가지고 있는 메시지를 받아들여 고정된 길이의 출력값으로 바꾸어주는 알고리즘
  • 원래의 입력값을 찾아내는 것은 불가능
  • 적용 알고리즘:MD-5,SHA-1,SHA-2





각주

  1. 재리, 〈대칭키와 비대칭키, 공유키, 비밀키〉, 《네이버 블로그》, 2019-03-22
  2. 2.0 2.1 2.2 2.3 2.4 대칭 키 암호 방식이란 무엇인가요?〉, 《바이낸스 아카데미》, 2019-04-08
  3. 훤히 보이는 정보보호, 〈대칭키 암호〉, 《네이버 지식백과》
  4. 블록암호〉, 《위키백과》
  5. 훤히 보이는 정보보호, 〈스트림 암호〉, 《네이버 지식백과》
  6. it용어사전, 〈스트림 암호〉, 《네이버 지식백과》
  7. 케르크호프스 원리〉, 《위키백과》
  8. 얏구,〈대칭키,비대칭키 쉽게 이해하자, 왜 등장했는가?〉, 《네이버 블로그》, 2019-03-06
  9. 주호,〈정보통신-ssl/tls,대칭키,비대칭키〉, 《네이버 블로그》, 2019-01-05

참고자료

같이 보기


  의견.png 이 대칭키 문서는 암호 알고리즘에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.