의견.png

대칭키

해시넷
wlgns12244 (토론 | 기여)님의 2019년 7월 29일 (월) 16:35 판 (스트림(Stream) 암호화 방식)
이동: 둘러보기, 검색

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

개요

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

역사

현대 암호는 1970년대 후반 스탠퍼드 대학과 MIT 대학에서 시작되었다. 1970년대에는 두가지 큰 변화가 일어나는데 하나는 표준암호 알고리즘의 등장이고 다른 하나는 공개키 암호 알고리즘의 등장이다, 1976년 스탠퍼드 대학의 Diffie와 Hellman은 ‘암호의 새로운 방향(New Directions in Cryptography)’이라는 논문에서 처음으로 공개키 암호의 개념을 발표하였다. 종래의 관용 암호 방식 또는 대칭키 암호 방식에서는 암호화키와 복호화키가 동일한 비밀키를 사용하기 때문에 송신자와 수신자는 비밀 통신을 하기 전에 비밀키를 공유하고 있어야 한다. 반면 공개키 암호 방식에서는 하나의 쌍이 되는 공개키와 비밀키를 생성하여 암호화에 사용되는 공개키는 공개하고, 복호화에 사용되는 비밀키는 사용자가 안전하게 보관하도록 한다. 공개키 암호 방식에서는 송신자와 수신자가 사전에 키를 공유할 필요가 없기 때문에 불특정 다수 사용자 간에 사전 준비가 없이도 암호 통신망을 구축하는데 유용하게 사용할 수 있다[3]. 컴퓨터가 점차 발전하면서 데이터 보호에 대한 필요성도 증가하여 미국 NBS는 1977년 표준 암호 알고리즘으로 DES를 공표하였다. DES(Data Encryption Standard)는 대표적인 대칭키 암호 알고리즘으로 2001년 새로운 알고리즘인 AES(Advanced Encryption Standard)가 공표될때까지 널리 이용되었다. 이어 1978년 MIT 대학의 Rivest, Shamir, Adleman은 소인수 분해 문제에 기반을 둔 RSA 공개키 암호를 개발했는데, 이것은 오늘까지도 가장 널리 사용되는 공개키 암호 방식이다. 공개키 암호의 도입은 현대 암호의 발전에 중요한 계기가 되었다. 한편, 1977년 미국 상무성 표준국(NBS, 현 NIST)은 전자계산기 데이터 보호를 위한 암호 알고리즘을 공개 모집하여, IBM 사가 제안한 DES (Data Encryption Standard)를 표준 암호 알고리즘으로 채택했다. DES의 표준화를 계기로 하여 [3] 금융 시스템을 중심으로 상업용 암호화의 이용이 증가하게 되었고 컴퓨터 통신망을 이용한 문서 전송, 전자 자금 이체 등이 활성화되었으며 암호 방식이 일반인들에게 알려지고 널리 사용되는 계기가 되었다. 이전의 암호 방식에서는 사용하는 키뿐만 아니라 암호 알고리즘도 비밀로 하여 암호문의 비밀을 지키려고 하는 경우도 있었으나, 현대 암호에서는 암호 알고리즘을 공개하도록 하고 있다. 1883년 Auguste Kerckhoff는 암호 시스템의 안전성에 대해 키 이외에 암호 시스템의 모든 것이 공개되어도 안전해야 한다’고 했는데 이것을 Kerckhoff’s principle이라고 한다. 이렇게 함으로써 암호 방식의 안전성을 공개적으로 검토하게 하여 안전성을 확인하는 것이다. 표준화된 암호와 표준화된 컴퓨팅 기기들을 사용하는 현대 암호에서는 암호 알고리즘을 감추기가 매우 어렵다. 또한 암호 알고리즘을 감춘다고 해서 암호의 보안성이 높아지는 것도 아니다. 비밀로 다루어진 암호 알고리즘이 일단 공개되고 나면 그 안전성에 문제가 발견되는 사례가 많다. 그러므로 암호 분야에서는 어떤 암호 알고리즘이 많은 암호 학자들에 의해 장기간 세부적으로 수행된 분석에서도 잘 견디어 낼 때까지는 그 알고리즘을 안전하다고 인정하지 않는다. 즉, 암호 체계는 ‘ 무죄가 증명될 때까지는 유죄’이다.[3]

특징

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

블록 암호(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는 현재 널리 상용되고 있다.[5]

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

대칭 암호화

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

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

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

종류

블록(Block) 암호화 방식

  • DES(Data Encryption Standard)

미 국립기술표준원에서 1973년에 국가적으로 사용할 대칭키 암호시스템 제안, Lucifer프로젝트의 수정판인 IBM의 제안이 DES로 채택되었다. 1975년 3월에 연방관보에서 연방정보처리기준의 초안으로 공포되었고 발표 이후 DES는 가장 널리 사용되는 대칭키 블록암호가 되었다. AES는 오랫동안 사용된 DES를 대체하기위해 표준으로 제정된 알고리즘이다.DES는 64비트 평문을 사용하는 64비트암호문(56+8(오류검출 비트)) 으로 암호화하는 대칭키 알고리즘이다. DES는 Feistel 네트워크의 변형된 형태이며 라운드 횟수는 16회 이다. 56비트짜리 원래 키로부터 16개의 서브키를 생성하고 그 서브키를 각 라운드에서 사용한다. DES의 복호화 과정은 암호화와 동일하다. 암호문을 알고리즘의 입력으로 사용하고. 서브키는 순서를 뒤집어 적용한다. 즉, 첫번째 라운드에서 마지막 서브키를 사용하고 다음순번은 그 다음 서브키를 사용하며 마지막 라운드인 16라운드에서 최초의 키를 사용할때 까지 반복한다.

  • 3중 DES

전사적 공격으로부터 안전성을 높이기 위해 키의 길이를 늘리는 원리이다. 오늘날 사용중인 3중 DES에는 두 가지 버전이 있는다. 두 개의 키를 사용하는 3중 DES와 3개의 키를 갖는 3중 DES이다. 3중 DES는 하드웨어에서는 매우 효율적이지만 소프트웨어에 대해서는 비효율적이다. - 두 개의 키를 갖는 3중 DES :암호문 = E K1 (D K2 (E K1 (평문))) 의 방식이다. - 세 개의 키를 갖는 3중 DES : 암호문 = E K3 (D K2 (E K1 (평문))) [8]

  • AES(Advanced Encryption Standard)

1997년 1월에, 기존의 데이터 암호 표준, 즉 DES를 대체할 보다 강력한 알고리즘을 찾기 위한 공모 작업이 미국 상무부의 한 기관인 표준기술연구소(NIST)에 의해 시작되었다. 새로운 알고리즘이 충족해야 할 규격 요건으로는, 최소 128 비트나 192 비트 또는 256 비트 크기의 키를 지원하는 128 비트 크기의 블록 암호화를 사용한 대칭형 (암호화나 복호화를 하는데 동일한 키가 사용되는) 알고리즘으로서, 전 세계적으로 로열티 없이 사용할 수 있어야 하며, 향후 20년~30년 동안 데이터를 보호하기 위해 충분한 정도의 보안성을 제공할 것이 요구되었다. 또한, 이 알고리즘은 스마트카드 등과 같은 제한된 환경을 포함하여 하드웨어나 소프트웨어로 구현하기 쉬워야 했으며, 다양한 공격 기술에 대해서도 잘 방어할 수 있어야 했다. DES는 Feistel network 구조를 사용하지만 AES는 SPN(Substituion-Permutation Network)라는 구조를 사용한다. [9]

  • SEED

SEED는 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해 1999년 2월 한국인터넷진흥 원과 국내 암호전문가들이 순수 국내기술로 개발한 128비트 블록 암호 알고리즘이다. 1999년 9월 정보통신단체표준(TTA)으로 제정되었으며, 2005년에는 국제 표준화 기구인 ISO/IEC 국제 블록암호알고리즘 IETF표준으로 제정되었다. [10]

  • ARIA

ARIA는 경량 환경 및 하드웨어 구현을 위해 최적화된, Involutional SPN 구조를 갖는 범용 블록 암호 알고리즘입니다. ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성되어 있으며 ARIA라는 이름은 Academy(학계), Research Institute(연구소), Agency(정부 기관)의 첫 글자들을 딴 것으로, ARIA 개발에 참여한 학·연·관의 공동 노력을 표현하고 있다. [11]

스트림(Stream) 암호화 방식

  • RC4

RC4는 1987년 RSA 시큐리티의 론 라이베스트가 설계하였다. 알고리즘 이름의 "RC"는 "Ron's Code" 혹은 "Rivest's Cypher"의 약자이다. RC4는 로널드 라이베스트가 만든 스트림 암호로, 전송 계층 보안(TLS)이나 WEP등의 여러 프로토콜에 사용되어 왔다. 하지만 이후 여러 연구를 통해 취약한 것으로 밝혀져 있으며, RC4를 사용한 WEP의 경우 해당 프로토콜의 사용을 권장하지 않는다. 많은 스트림 암호가 비트 단위의 선형 되먹임 시프트 레지스터를 기반으로 하는 것과 달리, RC4는 해당 구조를 갖지 않으며 옥텟 단위를 기반으로 한다. 따라서 비트 단위의 암호보다 소프트웨어적인 실행 속도가 빠르다. [12]

  • LFSR(Linear feedback shift register)

시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조를 가지고 있다. 이때 사용되는 선형 함수는 주로 배타적 논리합(XOR)이다. LFSR의 초기 비트 값은 시드(seed)라고 부른다. LFSR의 동작은 결정론적이기 때문에, LFSR로 생성되는 값의 수열은 그 이전 값에 의해 결정된다. 또한, 레지스터가 가질 수 있는 값의 개수는 유한하기 때문에, 이 수열은 특정한 주기에 의해 반복된다. 하지만 선형 함수를 잘 선택한다면 주기가 길고 무작위적으로 보이는 수열을 생성할 수 있다. LFSR는 의사 난수, 의사 난수 잡음(PRN), 빠른 디지털 카운터, 백지화 수열 등의 분야에서 사용된다. [13]

활용

암호화 기술 분류

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 [14]

문제점과 대안

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





각주

  1. 재리, 〈대칭키와 비대칭키, 공유키, 비밀키〉, 《네이버 블로그》, 2019-03-22
  2. 2.0 2.1 2.2 2.3 2.4 대칭 키 암호 방식이란 무엇인가요?〉, 《바이낸스 아카데미》, 2019-04-08
  3. 3.0 3.1 3.2 현대 암호〉, 《KISA 암호이용활성화》
  4. 훤히 보이는 정보보호, 〈대칭키 암호〉, 《네이버 지식백과》
  5. 블록암호〉, 《위키백과》
  6. 훤히 보이는 정보보호, 〈스트림 암호〉, 《네이버 지식백과》
  7. it용어사전, 〈스트림 암호〉, 《네이버 지식백과》
  8. * 최정니, 〈대칭키 암호〉, 《티스토리》, 2017-06-16
  9. * 락영찌, 〈RSA와 AES〉, 《네이버 블로그》, 2016-10-25
  10. SEED〉, 《KISA 암호이용활성화》
  11. ARIA〉, 《KISA 암호이용활성화》
  12. RC4〉, 《위키백과》
  13. LFSR〉, 《위키백과》
  14. 암호화〉, 《지덤》
  15. 케르크호프스 원리〉, 《위키백과》
  16. 얏구,〈대칭키,비대칭키 쉽게 이해하자, 왜 등장했는가?〉, 《네이버 블로그》, 2019-03-06
  17. 주호,〈정보통신-ssl/tls,대칭키,비대칭키〉, 《네이버 블로그》, 2019-01-05

참고자료

같이 보기


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