검수요청.png검수요청.png

"암호화"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(비교)
 
(사용자 3명의 중간 판 42개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''암호화'''(encryption)란 일상적인 문자로 쓰이는 평문을 암호키를 소유하지 않은 사람이 알아볼 수 없도록 암호문으로 변환하는 것이다.
+
'''암호화'''<!--암호 화, encryption-->(encryption)란 일상적인 문자로 쓰이는 [[평문]]을 [[암호키]]를 소유하지 않은 사람이 알아볼 수 없도록 [[암호문]]으로 변환하는 것이다. 반대말은 [[복호화]](decryption)이다.
  
 
==개요==
 
==개요==
암호화는 [[알고리즘]]을 이용하여 누구든 읽어볼 수 있는 평문으로 저장된 정보를 암호 인증키를 가진 사람만이 볼 수 있도록 암호문으로 변환하는 것을 말한다. 이러한 과정을 통해 암호화된 형태로 정보를 저장하거나 전송할 경우 제3자의 공격에 의해 [[데이터]]가 손실 및 변조되는 것을 예방할 수 있다. 또한 인증키를 소유하지 않은 사람은 데이터에 접근할 수 없기 때문에 일종의 사용자 인증 기법으로서 데이터를 안전하게 보호할 수 있게 된다. 암호화 체계는 [[복호화]] 키와 암호화 키의 일치 여부에 따라 크게 [[대칭키]] 암호화 기법, 비대칭형 [[공개키]] 암호화 기법으로 나뉘며 그 외에도 일방향 암호화 기법인 [[해시]] 암호화 기법이 있다.<ref>〈[https://www.estsecurity.com/securityCenter/commonSense/view/79 암호화와 복호화란 무엇인가요?]〉, 《EST시큐리티》, 2016-03-29</ref>
+
암호화는 [[알고리즘]]을 이용하여 누구든 읽어볼 수 있는 평문으로 저장된 정보를 암호 인증키를 가진 사람만이 볼 수 있도록 암호문으로 변환하는 것을 말한다. 이러한 과정을 통해 암호화된 형태로 정보를 저장하거나 전송할 경우 제3자의 공격에 의해 [[데이터]]가 손실 및 변조되는 것을 예방할 수 있다. 또한 인증키를 소유하지 않은 사람은 데이터에 접근할 수 없기 때문에 일종의 사용자 인증 기법으로서 데이터를 안전하게 보호할 수 있게 된다. 암호화 체계는 [[복호화]] 키와 암호화 키의 일치 여부에 따라 크게 [[대칭키]] 암호화 기법, 비대칭형 [[공개키]] 암호화 기법으로 나뉘며 그 외에도 일방향 암호화 기법인 [[해시]] 암호화 기법이 있다.<ref>이스트시큐리티 공식 홈페이지 - https://www.estsecurity.com/public/product/alyac</ref>
  
==역사==
+
==특징==
인류의 수천 년 역사 속에서 위대한 왕과 장군들은 모두 효율적인 통신 수단에 의존해 나라를 다스리고 군대를 움직여 왔다 해도 과언이 아니다. 하지만 동시에 지도자들은 이러한 통신 내용이 적의 손에 들어가 귀중한 비밀이 누설되거나 중요한 정보가 들어가지 않을까 늘 우려했다. 그런 의미에서 적이 중요한 정보를 가로챌 있다는 위협이야말로 암호를 발시킨 원동력이었다고 할 수 있다. 이렇듯 비밀 보장이 절실히 필요해짐에 따라 각국 정부는 가능한 한 가장 안전한 암호를 만들어 내고, 이를 이용해 통신의 보안성을 확보하는 부서를 운영하게 된다. 이에 맞서 적국에서는 거기에 담긴 비밀을 빼내려는 암호 해독가를 동시에 양성했다. 암호 해독가들은 언어를 재료로 이용하는 연금술사로, 무작위로 모아놓은 듯한 부호에서 의미를 가진 단어를 뽑아내기 위해 일생을 바치는 신비하고도 특별한 분야의 사람들이다. 암호의 역사는 바로 암호를 만드는 사람들과 이를 해독하려는 사람들이 수백 년에 걸쳐 벌여온 전쟁의 역사이다. 지성을 무기로 한 군비 경쟁은 때로는 역사에 극적인 영향을 미치며 그 경로를 바꿔놓기도 했다. 암호의 어원은 그리스어의 비밀이란 뜻을 가진 크립토스(Kryptos)로 알려져 있다. 이는 평문을 해독 불가능한 형태로 변형하거나 암호화된 통신문을 원래의 해독 가능한 상태로 변환하기 위한 모든 수학적인 원리, 수단, 방법 등을 취급하는 기술이나 과학을 말한다. , 암호란 중요한 정보를 다른 사람들이 보지 못하도록 하는 방법을 의미한다. 암호 기술의 발전 역사를 구분할 흔히 두 번의 큰 전환점을 기준으로 고대 암호, 근대 암호, 현대 암호 등의 세 단계로 나눠진다. 첫 번째 전환점은 1920년대, 1, 2차 세계 대전에서 무선 통신 기술의 발전을 기반으로 여러 가지 기계적, 전자적 암호 장치를 개발하고 사용한 것이었고, 두 번째 전환점은 1970년대 들어 컴퓨터 사용이 활발해지면서 컴퓨터를 이용한 암호 기술이 발전한 것이다. 이러한 전환점을 기준으로 고대로부터 1, 2차 세계 대전 이전가지 사용된 초보적인 암호 기술들을 고대 암호라고 하면, 1970년대까지 복잡한 기계 장치와 전자 장치들을 이용한 암호 기술을 근대 암호, 컴퓨터가 개발된 이후 컴퓨터를 이용하는 암호 기술을 현대 암호라고 부른다.<ref name="역사"> KISA 암호이용활성화 공식 홈페이지 - https://seed.kisa.or.kr/kisa/intro/EgovHistory.do</ref>
+
===암호화 키===
 +
고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독이 가능하다는 것이며, 컴퓨터의 등장과 발전으로 급상승한 계산 능력 앞에 고전 암호는 무용지물이 되었다. 따라서 현재 암호화 기술의 핵심은 임의의 문자열 값인 '암호화 키'이다. 암호화 키는 난수이다. 정확한 의미로의 난수는 아닌 의사난수지만, 암호학에서 사용하는 통계학 입각 기준에 따라 일정 수준 이상의 의사난수를 난수로 가정한다. 적절한 암호화 키를 사용한다면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 없다. 한시적이긴 하나 잠정적으로는 완벽한 현재 암호화 기술의 명세는, 어떤 키를 사용해 메시지 내용을 감추느냐, 즉 키의 성질을 바탕으로 이루어진다. 암호화 키의 동작은 수리 논리학의 '[[배타적 논리합]]' 연산에 따라 이루어진다. 이진법으로 표현한 수의 각 비트에 대한 가감산 결과를 비트간 [[배타적 논리합]]이라 한다. 비트간 [[배타적 논리합]]은 특정 비트의 반전이므로, 반복하면 원래값이 된다. , P 라는 원문을 K 라는 키값을 이용해 연산하면 P + K 라는 암호문이 되는 방식이라고 할 수 있다. 이 암호문을 K 키값을 이용해 연산하면, (P + K) + K = P 원문 P [[복호화]]할 수 있다. 예를 들어, 원문 0011 은 키값 0110 을 이용해 연산하면 암호문 0101 이 되고 이는 다시, 0101 + 0110 = 0011 재연산을 거쳐 원문으로 [[복호화]]되는 방식이다. 암호화 키의 길이, 키 사용 회수 등에 제한이 없다면 완벽한 암호화를 이룰 수 있다. 하지만 보안이란 보안에 드는 비용이 보안 대상의 가치보다 적을 유효하다. 따라서 암호화에 있어 가장 중요한 요소인 암호화 키의 규격에 대한 일정한 표준이 존재한다. 현재 암호화 규격은 [[양자연산]] 등 완전히 새로운 컴퓨팅 방식의 등장 이전까지는 안전하다고 볼 수 있다.<ref name="특징">펜타시큐리티시스템(주) 공식 홈페이지 - http://a.to/19KXhOn</ref>
  
===고대 암호===
+
===암호화 시스템===
고대 봉건 사회에서는 황제나 군주가 지방 관리에게 보내는 비밀문서, 전쟁 중의 작전 지시와 보고, 첩자들과의 통신 등 전쟁이나 첩보 시에 정보를 전달해야 하는 경우에 다양한 비밀 통신 기법들이 사용되었다. 예를 들어, 멀리 기밀 정보를 전달해야 하는 경우에는 사자의 머리를 깎고 메시지를 쓴 머리를 길러서 보내면 받는 측에서는 사자의 머리를 깎고 메시지를 읽도록 하였다. 또 종이에 쓴 메시지가 그냥 보이지 않지만 불빛에 약품 처리를 하면 메시지가 나타나도록 하는 방법, 비밀 노출을 방지하기 위해 말로 전달하도록 하는 방법 등이 다양하게 사용되었다. 이러한 비밀 통신 방법을 스테가노그래피(Steganography)라고 하는데 적들도 이 통신 방식을 알고 있으면 비밀을 유지하기 어렵다는 한계를 갖고 있다.
+
암호화 기술의 비범함 기준은 비즈니스라고 할 수 있는데, 비즈니스 요건에 따라 암호화를 수행하는 위치나 데이터의 특성이 달라진다. 그러므로 암호화 기술은 시스템과 비즈니스 전반에 걸친 이해가 필수적이다. 사업적 필요에 따른 여러 환경에서의 암호학 원론의 기술적 적용을 암호화라고 할 수 있고, 암호화의 예로는 최근 설계하고 구축된 모바일 메신저 [[애플리케이션]]을 들 수 있다. 최초 요구는 메신저로 통신한 대화 내용이 저장되는 DBMS의 데이터 암호화였다. 하지만 보안 침해 사고의 일반적 행태에 비추어 보면 위 구성으로는 충분한 보안성을 이룰 수 없다. 실제 필요한 웹 [[애플리케이션]] 암호화의 요구사항은 아래와 같다.
 +
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
 +
! Client || WAS || DBMS
 +
|-
 +
| 사용자 인증 암호화 || 사용자 인증 암호화 || 사용자 인증 암호화
 +
|-
 +
| 주요 파일 암호화 || · || ·
 +
|-
 +
| 전송 구간 암호화 || 전송 구간 암호화 || ·
 +
|-
 +
| · || 메시지(대화) 암호화 || 메시지(대화) 암호화
 +
|-
 +
| · || 주요 파일 암호화 || ·
 +
|-
 +
| · || · || 개인정보 암호화
 +
|-
 +
| · || · || 암호화 데이터 접근제어
 +
|-
 +
| 암호화 키 안전한 관리<br>(저장 및 접근제어) || 암호화 키 안전한 관리<br>(저장 및 접근제어) || 암호화 키 안전한 관리<br>(저장 및 접근제어)
 +
|-
 +
|}
 +
<ref name="특징"></ref>
 +
 
 +
===구성 요소===
 +
암호화는 평문, 암호문, 복호화, 키, 암호 알고리즘, 암호 시스템으로 구성된다.
 +
 
 +
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
 +
! 구성요소 || 내용
 +
|-
 +
| 평문(Plain-text) || style="text-align: left;" | 암호화 하고자 하는 문장
 +
|-
 +
| 암호문(Cipher-text) || style="text-align: left;" | 평문을 암호화 알고리즘과 키를 이용하여 암호화한 문장
 +
|-
 +
| 암호화(Encryption) || style="text-align: left;" | 평문을 암호화 키를 이용하여 암호문으로 변환시키는 과정
 +
|-
 +
| 복호화(Decryption) || style="text-align: left;" | 복호화 키를 이용하여 원래의 평문으로 변환시키는 과정
 +
|-
 +
| 키 (Key) || style="text-align: left;" | 암호화 알고리즘의 매개변수
 +
|-
 +
| 암호 알고리즘(Encryption Algorithm) || style="text-align: left;" | 암호화와 복호화에 이용되는 알고리즘
 +
|-
 +
| 암호 시스템(Cryptosystem) || style="text-align: left;" | 암호화 기술과 복호화 기술의 통칭
 +
|-
 +
|}<ref name="분류">iLiFO 지덤 공식 홈페이지 - http://a.to/19ctWtG</ref>
 +
 
 +
===분류===
 +
* '''암호화 알고리즘의 분류'''
 +
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
 +
! 구성요소 || 내용
 +
|-
 +
| 대체(Substitution) || style="text-align: left;" | 문자 대체표를 이용하여 해당 문자를 대체
 +
|-
 +
| 블록화(Blocking) || style="text-align: left;" | 열과 행을 바꾸어 표현한 블록 구성
 +
|-
 +
| 치환(Transposition) || style="text-align: left;" | 문자열의 위치를 서로 바꾸어 표현
 +
|-
 +
| 확장(Expansion) || style="text-align: left;" | 무의미한 문자를 삽입하여 문자열을 확장
 +
|-
 +
| 압축(Compaction) || style="text-align: left;" | 문자열에서 일부 문자를 삭제해 압축문과 삭제문을 분리
 +
|-
 +
|}<ref name="분류"></ref>
 +
 
 +
* '''암호화를 수행하는 정보단위에 따른 분류'''
 +
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
 +
! 구분 || 블록 암호(Block Cipher) || 스트림 암호(Stream Cipher)
 +
|-
 +
| width=50 | 개념
 +
| style="text-align: left;" | 평문을 일정한 블록 단위로 나누어서 각 블록마다 암호화 과정을 수행하여 고정된 크기의 블록단위의 암호문을 생성
 +
| style="text-align: left;" | 평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진 수열을 비트단위로 배타적 논리합 이진연산으로 결합하여 암호문 생성
 +
|-
 +
| 장점 || style="text-align: left;" | 기밀성, 해쉬함수 다양 || style="text-align: left;" | 암호 속도가 빠름,<br>에러 전파 현상 없음
 +
|-
 +
| 사례 || style="text-align: left;" | DES, SEED || style="text-align: left;" | LFSR
 +
|-
 +
| 단위 || style="text-align: left;" | 블록 단위 || style="text-align: left;" | 비트 단위
 +
|-
 +
|}<ref name="분류"></ref>
 +
 
 +
* '''보안강도에 따른 분류'''
 +
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
 +
! 보안강도 || NIST(미국) || 국내 || 안전성유지기간
 +
|-
 +
| 80비트 이상 || AES-128/192/256<br>2TDEA<br>3TDEA || SEED<br>ARIA-128/192/256 || 2010년까지
 +
|-
 +
| 112비트 이상 || AES-128/192/256<br>3TDEA || SEED<br>ARIA-128/192/256 || 2011년부터 2030년까지<br>(최대 20년)
 +
|-
 +
| 128비트 이상 || AES-128/192/256 || SEED<br>ARIA-128/192/256 || rowspan="3" | 2030년 이후<br>(최대 30년)
 +
|-
 +
| 192비트 이상 || AES-192/256 || ARIA-192/256
 +
|-
 +
| 256비트 이상 || AES-256 || ARIA-256
 +
|-
 +
|}<ref name="분류"></ref>
  
* 스키테일 암호 : 기원전 400년경 고대 그리스의 군사들은 스키테일 암호라고 불리는 전치 암호(Transposition cipher, 문자의 위치를 서로 바꾸는 암호)를 사용한 기록이 있다. 특정 지름을 갖는 막대에 종이를 감고 평문을 횡으로 쓴 다음 종이를 풀면 평문의 각 문자는 재배치되어 정보를 인식할 수 없게 되는데, 암호문 수신자가 송신자가 사용한 막대와 지름이 같은 막대에 종이를 감고 횡으로 읽으면 평문을 읽을 수 있다. 여기서 막대의 지름은 송신자와 수신자 사이에 공유된 비밀키가 된다.
+
==종류==
 +
===대칭키 암호화===
 +
대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 [[복호화]]하는데 동일한 키를 사용하는 방식이다. 대칭키 암호화 방식은 공개키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다. 반면에 정보 교환 당사자가 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다. 대표적인 대칭키 암호 알고리즘은 국내의 [[SEED]], [[ARIA]], [[LEA]], [[HIGHT]] 국외의 [[AES]], [[블로피시]](Blowfish), [[카멜리아]](Camellia) 등이 있다.<ref name="문서">〈[http://www.kisa.or.kr/uploadfile/201806/201806120949471644.pdf 개인정보의 암호화 조치 안내서]〉, 《한국인터넷진흥원》, 2017-01</ref>또한, 대칭키 방식은 스트림 기반의 암호화, 블록 기반의 암호화로 나눌 수 있다.
  
* 시저(Caesar) 암호 : 로마의 황제였던 줄리어스 시저(Julius Caesar)는 시저 암호라고 불리는 환자 암호(substitution cipher, 문자를 다른 문자로 치환하는 암호)를 사용하였다. 시저는 가족과 비밀 통신을 할 때 각 알파벳순으로 세자씩 뒤로 물려 읽는 방법으로 글을 작성했다. 즉 A는 D로, B는 E로 바꿔 읽는 방식이었다. 수신자가 암호문을 복호화하려면 암호문 문자를 좌측으로 3문자씩 당겨서 읽으면 원래의 평문을 얻을 수 있다. 송신자와 수신자는 몇 문자씩 이동할지를 비밀키로 하여 바꿔가면서 사용할 수 있다. 시저는 브루투스에게 암살당하기 전 가족들로부터 다음과 같은 긴급 통신문을 받았다. 시저가 받은 편지에는 'EH FDUHIXO IRU DVVDVVLQDWRU'라 되어 있었다. 3글자씩 당겨서 읽어보면 뜻은 'BE CAREFUL FOR ASSASSINATOR', 즉 '암살자를 주의하라'는 것이었다. 당시 시저의 권세를 시기했던 일당은 시저를 살해할 암살 음호를 꾸미고 있었으며 시저 자신도 이를 어느 정도 눈치 채고 있었다. 하지만 시저는 구체적으로 암살자가 누구인지 알 수 없었다. 결국 암호문을 전달받은 당일 시저는 원로원에서 전혀 생각지도 못했던 브루투스에게 암살당하면서 "브루투스, 너마저……."라는 말을 남겼다.
+
* 스트림 기반의 암호화 : 비트단위로 암호화하는 방식으로, LFSR, MUX Generator 등의 암호화 알고리즘이 이에 해당되며, 속도가 빠르고 오류 전파 현상이 없다는 장점을 가지고 있어, 주로 오디오/비디오 스트리밍 시에 사용된다.
  
* 악보 암호 : 악보 암호는 전설적인 스파이 마타하리(본명 : 마그레타 G. 젤러, Margaretha Geertruida Zelle)가 사용했던 방식이다. 마타하리는 일명 '첩보원 H21'이란 이름으로 프랑스 장교에 접근해 군사 기밀 정보를 독일에 빼돌렸는데, 이때 비밀 통신에 사용된 암호가 악보였다. 일정한 형태의 음표에 알파벳 하나씩을 대응시킨 형태로 얼핏 보기에 평범한 악보처럼 보이지만, 실제로 연주하면 전혀 음악이 되지 않는다. 마타하리의 첩보 활동은 20여만 명에 달하는 프랑스군을 죽음으로 몰고 갔다. 그녀는 제 1차 세계 대전이 끝나기 1년 전 프랑스 정보부에 체포돼 사형 당했다.<ref name="역사"></ref>
+
* 블록 기반의 암호화 : 블록 단위로 암호화를 수행하는 방식으로, 일반적으로 접하게 되는 암호화 방식의 대부분은 이 방식이라고 볼 수 있다. 예를 들어 만약 'I am a boy' 라는 문자열이 있다면, 'I am', 'a boy'와 같이 블록으로 나누어 암호시스템에서 처리하도록 하는 방식이다.<ref name="이해">JK MOON PHASE, 〈[https://m.blog.naver.com/PostView.nhn?blogId=jvioonpe&logNo=220703730770&proxyReferer=https%3A%2F%2Fwww.google.com%2F (암호화) 암호화의 이해(암호화 알고리즘, 대칭키/공개키]〉, 《네이버 블로그》, 2016-05-07</ref>
  
===근대 암호===
+
===공개키 암호화===
17세기 근대 수학의 발전과 함께 암호 기술도 발전하기 시작했는데, 프랑스 외교관이었던 비게네르(Vigenere)가 고안한 키워드를 이용한 복수 시저 암호형 방식, 플레이페어(Playfair)가 만든 2문자 조합 암호 등 다양한 암호 방식으로 발전하였다. 20세기 들어서는 통신 기술의 발전과 기계식 계산기에 대한 연구를 바탕으로 두 차례의 세계 대전을 통해 암호 설계와 해독에 대한 필요성이 높아지면서 암호에 대한 연구가 더욱 활발하게 진행되었다. 근대 암호의 이론적 기초가 된 논문은 1920년 프리드먼(Freidman)이 발표한 일치 반복률과 암호 응용과 1949년 섀넌(Shannon)이 발표한 비밀 시스템의 통신 이론을 들 수 있다. 섀넌은 논문에서 일회성 암호 체계가 안전함을 증명했고, 암호 체계 설계의 두 가지 기본 원칙인 혼돈과 확신 이론을 제시하였다. 암호 체계를 설계함에 있어 혼돈(Confusion)은 평문과 암호문 사이의 상관관계를 숨기는 반면, 확산(Diffusion)은 평문의 통계적 성격을 암호문 전반에 확산시켜 숨기는 역할을 한다. 혼돈과 확산이라는 두 가지 개념은 오늘날의 암호 체계 설계에도 여전히 적용되고 있다. 프리드먼은 2차 세계 대전 중 독일군이 사용하던 에니그마(Enigma) 암호와 일본군이 사용하던 무라사끼 암호를 해독한 사람으로 유명하다. 에니그마 암호는 각기 다른 몇 개의 암호판을 전기적으로 연결하여 원문을 입력하면 전기적 연결에 의해 새로운 암호문을 출력하는 방식으로 이 기계가 존재하지 않으면 암호를 풀 없다.
+
[[공개키]] 암호 알고리즘을 사용하여 암호화하며 [[공개키]]와 [[개인키]]의 키 쌍이 존재하여 평문을 암·[[복호화]] 하는데 서로 다른 키를 사용하는 방식으로 [[비대칭키]] 암호화 방식이라고도 불린다. 공개키 암호화 방식은 [[데이터]] 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 키 분배나 [[전자서명]] 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다. 대표적인 공개키 암호 알고리즘으로는 국외의 [[RSA]], [[엘가멜]](ELGamal), [[ECC]] 등이 있다.<ref name="문서"></ref>또한, 비대칭키 방식은 인수분해, 이산대수, 타원곡선 암호화로 나눌 있다.
  
* 미드웨이 해전에서의 암호 전쟁 : 태평양 전쟁 당시 일본의 진주만 공습으로 큰 피해를 입고 전력이 약화됐던 미국은 일본의 그 다음 공격 목표가 어디인지를 알아내야 했다. 1942년 4월, 하와이 주둔 미국 해군 정보부의 암호 해독반 블랙 챔버는 일본군의 무전이 증가하고 있음을 발견했다. 이미 일본 해군의 암호 체계인 JN-25를 해독하고 있던 해독반은 AF라는 문자가 자주 나타난다는 사실에 주목했다. 암호 해독반의 지휘관이었던 조셉 로슈포르 중령은 AF를 미드웨이 섬이라고 생각했다. 일본의 정찰기가 'AF 근처를 지나고 있다'는 내용의 무선 보고를 해독한 적이 있었던 그는 정찰기의 비행경로를 추정해본 결과 AF가 미드웨이 섬일 것이라는 심증을 갖게 된 것이다. 로슈포르 중령은 체스터 니미츠 제독에게 일본군의 침공이 임박했다는 것과 AF가 자주 언급된다는 점, 그리고 AF가 미드웨이 섬일 것이라는 보고를 한 후, 미드웨이 섬의 담수 시설이 고장 났다는 내용의 가짜 전문을 하와이로 평문 송신하게 하자고 건의했다. 3월에 미드웨이 섬 근처에 일본 해군의 비행정이 정찰 왔던 것을 알고 있던 니미츠 제독은 이 건의를 받아들였다. 사실 미드웨이 섬의 정수 시설은 아무런 문제가 없었다. 이틀 후, 도청된 일본군 암호 중 'AF에 물 부족'이라는 내용이 해독되었다. 이로써 일본군의 다음 공격 목표가 미드웨이 섬이라는 것이 분명해진 것이다. 미군은 암호 해독을 통해 일본의 공격 목표가 미드웨이라는 사실을 알아낸 후 전투에 대비하고 반격을 준비하여 일본의 태평양 함대를 격파하고 전쟁을 승리로 이끌 수 있었다.<ref name="역사"></ref>
+
===일방향 암호화===
 +
[[해시함수]]를 이용하여 암호화된 값을 생성하며 [[복호화]] 되지 않는 방식이다. 해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성하지만 해시값만으로 입력 메시지를 유추할 수 없어 비밀번호와 같이 [[복호화]] 없이 입력 값의 정확성 검증이 필요한 경우 등에 사용되고 있다. 대표적인 해시함수로는 국외의 [[SHA-2]](224/256/384/512), [[SHA-3]], [[RIPEMD-160]], [[월풀]](Whirlpool) 등이 있다.<ref name="문서"></ref>
  
===현대 암호===
+
===비교===
현대 암호는 1970년대 후반 스탠퍼드 대학과 MIT 대학에서 시작되었다. 1976년 스탠퍼드 대학의 디피(Diffie)와 헬먼(Hellman)은 '암호의 새로운 방향(New Directions in Cryptography)'이라는 논문에서 처음으로 공개키 암호의 개념을 발표하였다. 종래의 관용 암호 방식 또는 대칭키 암호 방식에서는 암호화키와 복호화키가 동일한 비밀키를 사용하기 때문에 송신자와 수신자는 비밀 통신을 하기 전에 비밀키를 공유하고 있어야 한다. 반면 공개키 암호 방식에서는 하나의 쌍이 되는 공개키와 비밀키를 생성하여 암호화에 사용되는 공개키는 공개하고, 복호화에 사용되는 비밀키는 사용자가 안전하게 보관하도록 한다. 공개키 암호 방식에서는 송신자와 수신자가 사전에 키를 공유할 필요가 없기 때문에 불특정 다수 사용자 간에 사전 준비가 없이도 암호 통신망을 구축하는데 유용하게 사용할 수 있다. 이어 1978년 MIT 대학의 리베스트(Rivest), 샤미르(Shamir), 애덜먼(Adleman)은 소인수 분해 문제에 기반을 둔 RSA 공개키 암호를 개발했는데, 이것은 오늘까지도 가장 널리 사용되는 공개키 암호 방식이다. 공개키 암호의 도입은 현대 암호의 발전에 중요한 계기가 되었다. 한편, 1977년 미국 상무성 표준국(NBS, 현 NIST)은 전자계산기 데이터 보호를 위한 암호 알고리즘을 공개 모집하여, IBM 사가 제안한 DES (Data Encryption Standard)를 표준 암호 알고리즘으로 채택했다. DES의 표준화를 계기로 하여 금융 시스템을 중심으로 상업용 암호화의 이용이 증가하게 되었고 컴퓨터 통신망을 이용한 문서 전송, 전자 자금 이체 등이 활성화되었으며 암호 방식이 일반인들에게 알려지고 널리 사용되는 계기가 되었다. 이전의 암호 방식에서는 사용하는 키뿐만 아니라 암호 알고리즘도 비밀로 하여 암호문의 비밀을 지키려고 하는 경우도 있었으나, 현대 암호에서는 암호 알고리즘을 공개하도록 하고 있다. 1883년 어거스트 케르크호프(Auguste Kerckhoff)는 암호 시스템의 안전성에 대해 '이외에 암호 시스템의 모든 것이 공개되어도 안전해야 한다'고 했는데 이것을 케르코프의 원리(Kerckhoff’s principle)이라고 한다. 이렇게 함으로써 암호 방식의 안전성을 공개적으로 검토하게 하여 안전성을 확인하는 것이다. 표준화된 암호와 표준화된 컴퓨팅 기기들을 사용하는 현대 암호에서는 암호 알고리즘을 감추기가 매우 어렵다. 또한 암호 알고리즘을 감춘다고 해서 암호의 보안성이 높아지는 것도 아니다. 비밀로 다루어진 암호 알고리즘이 일단 공개되고 나면 그 안전성에 문제가 발견되는 사례가 많다. 그러므로 암호 분야에서는 어떤 암호 알고리즘이 많은 암호 학자들에 의해 장기간 세부적으로 수행된 분석에서도 잘 견디어 낼 때까지는 그 알고리즘을 안전하다고 인정하지 않는다. 즉, 암호 체계는 무죄가 증명될 때까지는 유죄이다.<ref name="역사"></ref>
+
비대칭키 방식은 공개키보다 처리속도가 빠르다는 장점이 있지만 동일한 키를 이용하기 때문에 키 교환이 어렵다는 문제가 있고, 반면에 공개키 방식은 처리속도는 느리나 키 교환이 용이하다는 장점을 가지고 있다. 이러한 장점만을 살려 [[하이브리드 암호화]]라는 방식도 나왔는데, 이는 전자봉투에도 적용된 원리로, 대칭키로 먼저 암호화하고 공개키로 다시 암호화하여 대칭키의 장점인 빠른 처리 속도와 공개키의 장점인 배송 문제의 편리함을 모두 가지게 된 방법이다.
  
===차세대 암호===
+
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
양자 기반 알고리즘인 Shor알고리즘은 인수분해 문제의 해결 속도를 감소시켜 RSA, ECC 등 인수분해 및 이산대수 기반의 공개키 암호 알고리즘을 더 이상 사용할 수 없게 한다. 또한, Grover알고리즘은 정렬되지 않은 데이터베이스의 원소를 검색하는 속도를 향상시켜 대칭키 암호는 키 사이즈를 2배, 해시 함수의 출력길이를 3배 증가시켜야 기존의 안전성을 가질수 있게 된다.
+
! 구분 || 대칭키 || 공개키
{| class="wikitable" width=950 style="color:balck; text-align: center; background-color:#F8F9FA;"
 
! 알고리즘 || 특징 || 암호 || 영향
 
 
|-
 
|-
! Shor
+
| 개념도 || 평문 (비밀키)→ 암호문 (비밀키)→ 복호문 || 평문 (공개키/개인키)→ 암호문 (개인키/공개키)→ 복호문
| style="text-align:left;" | 인수분해 문제 해결 속도 감소
 
! 공개키
 
| style="text-align:left;" | 더 이상 안전하지 않음
 
 
|-
 
|-
! rowspan="2" | Grover
+
| 키 관계 || 암호화 키와 복호화 키가 같음 || 암호화 키와 복호화 키가 다름
| style="text-align:left;" rowspan="2" | 정렬되지 않은 데이터 베이스의 원소를<br>검색하는 속도 향상
 
! 대칭키
 
| style="text-align:left;" | 키 사이즈 증가 필요
 
 
|-
 
|-
! 해시
+
| 암호키 || 비밀키 || 공개키(또는 개인키)
| style="text-align:left;" | 암호 알고리즘의 출력 길이 증가 필요
+
|-
 +
| 복호키 || 비밀키 || 개인키(또는 공개키)
 +
|-
 +
| 키 전송여부 || 필요 || 불필요
 +
|-
 +
| 키 관리 || 복잡 || 단순
 +
|-
 +
| 인증 || 고속 || 저속
 +
|-
 +
| 부인방지 || 불가능 || 가능
 +
|-
 +
| 구현방식 || 블록, 스트림 || 소인수분해, 이산대수
 +
|-
 +
| 알고리즘 || DES, 3-DES, SEED, ARIA, RC-4 등 || RSA, DSA 등
 +
|-
 +
| 장점 || 구현이 용이, 변형 가능 || 암호 해독이 어려움, 전자서명
 +
|-
 +
| 단점 || 쉽게 해독 가능, 키 관리 어려움 || 해독 시간이 오래걸림
 
|-
 
|-
 
|}
 
|}
이러한 환경의 변화같이 특정 상황에서 기존 현대 암호기술(RSA, ECC 등)이 해결하지 못하는 경우를 대비하여, 새로운 암호기술들에 대한 연구가 활발히 진행되고 있다. 양자컴퓨팅 환경에서도 안전하게 사용할 수 있는 공개키 암호 기술인 양자내성암호와 더불어, 동형암호(암호화된 상태로 연산 가능한 암호), 형태보존암호(암호문이 평문과 동일한 형태를 가지는 암호), 경량암호(계산능력이 떨어지는 IoT 환경 등에서 효율적으로 사용할 수 있는 암호) 등이 있다.
+
 
{| class="wikitable" width=950 style="color:balck; text-align: center; background-color:#F8F9FA;"
+
: {| class="wikitable" width=800 style="color:balck; text-align:left; background-color:#F8F9FA;"
 +
! 대분류 || 중분류 || 알고리즘 || 설명
 
|-
 
|-
! rowspan="6" | 양자내성암호<br>(Post Quantum Cryptography,PQC)
+
| rowspan="6" style="text-align:center;"| 대칭키<br>방식 || rowspan="5" style="text-align:center;"| 블록 암호<br>알고리즘 || style="text-align:center;"| DES ||
! 종류 || 내용
+
* 64bit블록, 128bit 암호화 키 사용
 +
* 평문을 64bit로 나눠 각 블록에 치환과 전치를 16라운드 반복하여 암호화
 
|-
 
|-
| 격자 기반<br>(Lattice-based) || style="text-align:left;" | 격자(Lattice) 위에서 계산하는 문제의 어려움에 기반하는 암호 시스템
+
| style="text-align:center;" | 3-DES ||
 +
* 암호화키 2개를 사용하여 「암호화(K1)→복호화(K2)→암호화(K1)」 순으로 암호화
 
|-
 
|-
| 코드 기반<br>(Code-based) || style="text-align:left;" | 일반적인 선형 코드(Linear Code)를 디코딩하는 어려움에 기반하는 암호 시스템
+
| style="text-align:center;" | AES ||
 +
* 128bit 평문을 128bit로 암호화
 +
* 키 크기에 따라 10/12/14회 라운드 수행
 +
* 라운드키의 수 = N+1개
 
|-
 
|-
| 다변수 기반<br>(Multi-variate) || style="text-align:left;" | 유한체(Finite Field) 위에서 계산하는 다변수함수 문제의 어려움에 기반하는 암호 시스템
+
| style="text-align:center;" | SEED ||
 +
* KISA주관, ETRI에서 개발
 +
* 국제표준 부합, 민간 사용 목적
 
|-
 
|-
| 해시 기반<br>(Hash-based) || style="text-align:left;" | 해시 함수의 안전성을 기반으로 한 전자 서명 시스템
+
| style="text-align:center;" | ARIA ||
 +
* NSRI에서 개발
 +
* 공공 사용 목적, 비밀키 규격이 AES와 동일
 
|-
 
|-
| 아이소제니 기반<br>(Isogeny-based) || style="text-align:left;" | 순서(Order)가 같은 두 타원 곡선 사이에 존재하는 아이소제니(Isogeny)를 구하는 문제의<br>어려움에 기반하는 암호 시스템
+
| style="text-align:center;" | 스트림 암호 || style="text-align:center;" | RC-4 ||
 +
* TLS, WEP 등에서 사용
 +
* Octet(2진 부호 모음, 8bit) 단위 기반 암호화
 
|-
 
|-
! 동형암호<br>(Fully Homomorphic Encryption)
+
| rowspan="2" style="text-align:center;" | 공개키<br>방식 || style="text-align:center;" | 인수분해 || style="text-align:center;" | RSA ||
| style="text-align:left;" colspan="2" |  
+
* 큰 숫자를 소인수분해하는 것이 어렵다는 것에 기반하여 개발
* 암호문을 이용하여 계산을 할 수 있도록 해주는 공개키 암호화 방식. 암호화된 데이터들을 이용하여 게산한 결과를<br>복호화하면 암호화되지 않은 상태로 계산한 값과 일치하는 암호화 방식이다.                                                 
+
* 공개키만 가지고 개인키 추측 불가
* 국내에서는 정수 환(Ring) 기반의 동형암호 알고리즘이 개발되었으며, 국외 IBM, Microsoft 등은 다수의 동형암호<br>알고리즘을 개발하고 의료 분야 등 다양한 응용 서비스 적용 기술을 개발 중이다.
 
 
|-
 
|-
! 형태보존암호<br>(Format Preserving Encryption)
+
| style="text-align:center;" | 이산대수 || style="text-align:center;" | DSA ||
| style="text-align:left;" colspan="2" |  
+
* 이산대수의 어려움을 안전성의 바탕으로 개발
* 암호문이 평문이 가지고 있는 형태를 그대로 유지한 암호화 방식. 암호화된 데이터들을 이용하여 계산한 결과를 복호화하면 암호화되지 않은 상태로 계산한 값과 일치하는 암호화 방식이다.
 
* 작은 크기의 평문에 대한 암호화가 가능하며, 안전성에 문제가 발생하지 않도록 추가적인 입력 정보인 트윅(Tweak)을<br>사용한다.
 
* 데이터의 길이가 보존되어 추가적인 저장 공간 구매가 불필요하며, DB 스키마 변경도 불필요하기 때문에 암호화 시스템 구축 비용이 절감된다.
 
* 신용카드, 주민등록번호, 사회보장번호 (Social Security Number, SSN) 등과 같이 특정 형태의 암호화에 효율적으로<br>사용할 수 있다.
 
 
|-
 
|-
! 경량암호<br>(Lightweight Cryptography)
+
|}<ref name="이해"></ref>
| style="text-align:left;" colspan="2" |
+
 
* 경량 암호는 사물인터넷(IoT) 등을 스마트 디바이스 상에 탑재, 운용하기 위해 개발된 암호화 방식이다.
+
==기능==
|-
+
* '''암호화'''
|}<ref name="역사"></ref>
+
: 암호화는 알고리즘을 사용하여 이해하기 어려운 문자로 정보를 변경하는 프로세스를 의미한다. 암호화 기술의 핵심은 어떠한 정보를 암호화하고 이를 다시 알아볼 수 있도록 [[복호화]] 하는데 필요한 '키'를 관리하는 것이다. 방화벽과 같은 보안 도구는 외부 침입이나 공격으로부터 시스템을 보호하는 반면, 암호화는 데이터 자체를 보호하는 가장 기본적인 형태의 방어라고 할 수 있다. 따라서 시스템이 공격받더라도 손상된 데이터는 올바른 암호화 키를 소유한, 인증된 사용자만 읽을 수 있다. 이론적으로, 암호화는 IT 시스템의 세 가지 계층([[애플리케이션]], 시스템, 네트워크)에서 적절하게 구현되어야 효과적이다. 특히 [[애플리케이션]] 계층에서는 각 조직의 보안 요구 사항에 따라 암호화 구현 위치를 결정하고 암호화할 데이터의 특성을 살펴봐야 한다. 파일 전체를 암호화하는 것부터 컬럼 단위 암호화 그리고 이미지나 영상과 같은 데이터를 암호화하는 등 암호화할 데이터의 특성에 따라 암호화 방식은 다양하다. 암호화는 기업의 데이터를 보호하는데 있어 필수적인 요소이지만 최적의 구현 방법을 찾는 것은 어려울 수 있다. 일반적으로 암호화 솔루션은 고객의 요구에 따라 하드웨어 장비 또는 [[클라우드]]를 통해 도입되는데, 환경에 맞는 옵션을 찾고 암호화 요구 사항을 해결하기 위해서는 암호화 기술을 공급하는 회사와 상담하는 것이 좋다.
==종류==
 
* '''대칭키 암호화'''
 
: 대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 복호화하는데 동일한 키를 사용하는 방식이다. 대칭키 암호화 방식은 공개키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다. 반면에 정보 교환 당사자가 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다. 대표적인 대칭키 암호 알고리즘은 국내의 [[SEED]], [[ARIA]], [[LEA]], [[HIGHT]] 국외의 [[AES]], [[블로피시]](Blowfish), [[카멜리아]](Camellia) 등이 있다.<ref name="문서">〈[http://www.kisa.or.kr/uploadfile/201806/201806120949471644.pdf 개인정보의 암호화 조치 안내서], 《한국인터넷진흥원》, 2017-01</ref>
 
  
* '''공개키 암호화'''
+
* '''키 관리'''
: [[공개키]] 암호 알고리즘을 사용하여 암호화하며 [[공개키]]와 [[개인키]]의 쌍이 존재하여 평문을 암·복호화 하는데 서로 다른 키를 사용하는 방식으로 [[비대칭키]] 암호화 방식이라고도 불린다. 공개키 암호화 방식은 [[데이터]] 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 분배나 [[전자서명]] 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다. 대표적인 공개키 암호 알고리즘으로는 국외의 [[RSA]], [[엘가멜]](ELGamal), [[ECC]] 등이 있다.<ref name="문서"></ref>
+
: 암호화만으로는 중요한 데이터를 안전하게 유지하기에 충분하지 않다. 암호화 프로세스에서 가장 중요한 역할을 하는 것이 바로 ''이기 때문인데, 데이터 유출이 발생하는 경우, 암호화된 데이터와 동일한 서버에 키가 저장되어 있다면 해커는 그 키를 이용하여 데이터에 접근해 [[복호화]] 할 수 있다. 마찬가지로 키가 손상되거나 사라진 경우에도 데이터가 손실된 것과 같다. 따라서 관리는 엔터프라이즈 암호화에 있어 핵심 부분이라고 할 수 있다. 이처럼 중요한 키는 생성에서 폐기에 이르기까지 그 라이프사이클을 안전하게 관리하는 것이 필수이다. 기업의 데이터 저장 시스템 전반에 걸쳐 키를 안전하게 관리하는 가장 편리한 방법은 [[키 관리 시스템]](KMS: Key Management System)을 사용하는 것이다. KMS는 암호화 키의 생성, 폐기, 관리 및 통합 기능을 제공하며, 키는 별도의 시스템에 저장된다. 대부분의 조직은 높은 수준의 물리적 보안을 제공하는 온프레미스 하드웨어 어플라이언스 형태로 [[키 관리 시스템]]을 활용하고 있다.
  
* '''일방향 암호화'''
+
* '''접근 제어 및 감사'''
: [[해시함수]]를 이용하여 암호화된 값을 생성하며 복호화 되지 않는 방식이다. 해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성하지만 해시값만으로 입력 메시지를 유추할 없어 비밀번호와 같이 [[복호화]] 없이 입력 값의 정확성 검증이 필요한 경우 등에 사용되고 있다. 대표적인 해시함수로는 국외의 [[SHA-2]](224/256/384/512), [[SHA-3]], [[RIPEMD-160]], [[월풀]](Whirlpool) 등이 있다.<ref name="문서"></ref>
+
: 조직은 외부 위협을 차단하는 것에만 집중하기 보다 악의적인 목적을 가진 조직 내부자가 기업의 중요 데이터에 접근하는 것을 방지하는 것에도 신경써야 한다. 접근 제어는 데이터 접근을 효과적으로 보호하기 위한 사용 권한, 사용 권한 상속, 사용자 권한 및 감사를 뜻하며, 실제로 사용자가 접근 권한을 설정하고 서버 IP에 접근하여 키 관리 서버에 대한 접근을 제어하며 인증 키의 발급 및 확인을 제어하는 ​​기능이 포함된다. 접근 제어는 기업 보안의 필수적인 부분으로, 권한, 계급 또는 기타 사양에 따라 리소스에 대한 다양한 접근 권한을 허용함으로써 구현할 수 있다. 암호화 솔루션에는 일반적으로 접근 제어가 포함되지만 특정 기능은 모델마다 다를 수 있다. 접근할 있는 사람을 관리하는 것 외에도 필요한 경우 모든 접근 기록을 효율적으로 검색할 수 있어야 하고, 감사 기능을 통해 관리자는 의심스러운 활동이나 비정상적인 활동에 대한 감사 로그를 확인할 수 있기 때문에 기업 보안을 강화할 수 있다. 정기 감사를 지원하려면 사용자가 이용하기 편한 관리 도구를 함께 제공하는 암호화 솔루션을 선택하는 것이 좋다.<ref>펜타시큐리티시스템, 〈[http://blog.naver.com/PostView.nhn?blogId=pentamkt&logNo=221498741229&categoryNo=19&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView (쉽게 만나는 IT)강력한 보안을 위한 암호화의 3가지 핵심 기능]〉, 《네이버 블로그》, 2019-03-27</ref>
  
 
{{각주}}
 
{{각주}}
  
 
==참고자료==
 
==참고자료==
* 〈[https://www.estsecurity.com/securityCenter/commonSense/view/79 암호화와 복호화란 무엇인가요?]〉, 《EST시큐리티》, 2016-03-29
+
* 이스트시큐리티 공식 홈페이지 - https://www.estsecurity.com/public/product/alyac
 
* 〈[http://www.kisa.or.kr/uploadfile/201806/201806120949471644.pdf 개인정보의 암호화 조치 안내서]〉, 《한국인터넷진흥원》, 2017-01
 
* 〈[http://www.kisa.or.kr/uploadfile/201806/201806120949471644.pdf 개인정보의 암호화 조치 안내서]〉, 《한국인터넷진흥원》, 2017-01
 +
* 펜타시큐리티시스템(주) 공식 홈페이지 - http://a.to/19KXhOn
 +
* 펜타시큐리티시스템, 〈[http://blog.naver.com/PostView.nhn?blogId=pentamkt&logNo=221498741229&categoryNo=19&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView (쉽게 만나는 IT)강력한 보안을 위한 암호화의 3가지 핵심 기능]〉, 《네이버 블로그》, 2019-03-27
 +
* JK MOON PHASE, 〈[https://m.blog.naver.com/PostView.nhn?blogId=jvioonpe&logNo=220703730770&proxyReferer=https%3A%2F%2Fwww.google.com%2F (암호화) 암호화의 이해(암호화 알고리즘, 대칭키/공개키]〉, 《네이버 블로그》, 2016-05-07
 +
* iLiFO 지덤 공식 홈페이지 - http://a.to/19ctWtG
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[암호]]
 
* [[암호]]
 
* [[암호 알고리즘]]
 
* [[암호 알고리즘]]
 +
* [[복호화]]
 +
* [[배타적 논리합]]
 +
* [[양자연산]]
 +
* [[키 관리 시스템]]
  
{{암호 알고리즘|토막글}}
+
{{암호 알고리즘|검토 필요}}

2022년 1월 4일 (화) 15:36 기준 최신판

암호화(encryption)란 일상적인 문자로 쓰이는 평문암호키를 소유하지 않은 사람이 알아볼 수 없도록 암호문으로 변환하는 것이다. 반대말은 복호화(decryption)이다.

개요[편집]

암호화는 알고리즘을 이용하여 누구든 읽어볼 수 있는 평문으로 저장된 정보를 암호 인증키를 가진 사람만이 볼 수 있도록 암호문으로 변환하는 것을 말한다. 이러한 과정을 통해 암호화된 형태로 정보를 저장하거나 전송할 경우 제3자의 공격에 의해 데이터가 손실 및 변조되는 것을 예방할 수 있다. 또한 인증키를 소유하지 않은 사람은 데이터에 접근할 수 없기 때문에 일종의 사용자 인증 기법으로서 데이터를 안전하게 보호할 수 있게 된다. 암호화 체계는 복호화 키와 암호화 키의 일치 여부에 따라 크게 대칭키 암호화 기법, 비대칭형 공개키 암호화 기법으로 나뉘며 그 외에도 일방향 암호화 기법인 해시 암호화 기법이 있다.[1]

특징[편집]

암호화 키[편집]

고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독이 가능하다는 것이며, 컴퓨터의 등장과 발전으로 급상승한 계산 능력 앞에 고전 암호는 무용지물이 되었다. 따라서 현재 암호화 기술의 핵심은 임의의 문자열 값인 '암호화 키'이다. 암호화 키는 난수이다. 정확한 의미로의 난수는 아닌 의사난수지만, 암호학에서 사용하는 통계학 입각 기준에 따라 일정 수준 이상의 의사난수를 난수로 가정한다. 적절한 암호화 키를 사용한다면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 수 없다. 한시적이긴 하나 잠정적으로는 완벽한 현재 암호화 기술의 명세는, 어떤 키를 사용해 메시지 내용을 감추느냐, 즉 키의 성질을 바탕으로 이루어진다. 암호화 키의 동작은 수리 논리학의 '배타적 논리합' 연산에 따라 이루어진다. 이진법으로 표현한 수의 각 비트에 대한 가감산 결과를 비트간 배타적 논리합이라 한다. 비트간 배타적 논리합은 특정 비트의 반전이므로, 반복하면 원래값이 된다. 즉, P 라는 원문을 K 라는 키값을 이용해 연산하면 P + K 라는 암호문이 되는 방식이라고 할 수 있다. 이 암호문을 K 키값을 이용해 연산하면, (P + K) + K = P 원문 P 로 복호화할 수 있다. 예를 들어, 원문 0011 은 키값 0110 을 이용해 연산하면 암호문 0101 이 되고 이는 다시, 0101 + 0110 = 0011 재연산을 거쳐 원문으로 복호화되는 방식이다. 암호화 키의 길이, 키 사용 회수 등에 제한이 없다면 완벽한 암호화를 이룰 수 있다. 하지만 보안이란 보안에 드는 비용이 보안 대상의 가치보다 적을 때 유효하다. 따라서 암호화에 있어 가장 중요한 요소인 암호화 키의 규격에 대한 일정한 표준이 존재한다. 현재 암호화 규격은 양자연산 등 완전히 새로운 컴퓨팅 방식의 등장 이전까지는 안전하다고 볼 수 있다.[2]

암호화 시스템[편집]

암호화 기술의 비범함 기준은 비즈니스라고 할 수 있는데, 비즈니스 요건에 따라 암호화를 수행하는 위치나 데이터의 특성이 달라진다. 그러므로 암호화 기술은 시스템과 비즈니스 전반에 걸친 이해가 필수적이다. 사업적 필요에 따른 여러 환경에서의 암호학 원론의 기술적 적용을 암호화라고 할 수 있고, 암호화의 예로는 최근 설계하고 구축된 모바일 메신저 애플리케이션을 들 수 있다. 최초 요구는 메신저로 통신한 대화 내용이 저장되는 DBMS의 데이터 암호화였다. 하지만 보안 침해 사고의 일반적 행태에 비추어 보면 위 구성으로는 충분한 보안성을 이룰 수 없다. 실제 필요한 웹 애플리케이션 암호화의 요구사항은 아래와 같다.

Client WAS DBMS
사용자 인증 암호화 사용자 인증 암호화 사용자 인증 암호화
주요 파일 암호화 · ·
전송 구간 암호화 전송 구간 암호화 ·
· 메시지(대화) 암호화 메시지(대화) 암호화
· 주요 파일 암호화 ·
· · 개인정보 암호화
· · 암호화 데이터 접근제어
암호화 키 안전한 관리
(저장 및 접근제어)
암호화 키 안전한 관리
(저장 및 접근제어)
암호화 키 안전한 관리
(저장 및 접근제어)

[2]

구성 요소[편집]

암호화는 평문, 암호문, 복호화, 키, 암호 알고리즘, 암호 시스템으로 구성된다.

구성요소 내용
평문(Plain-text) 암호화 하고자 하는 문장
암호문(Cipher-text) 평문을 암호화 알고리즘과 키를 이용하여 암호화한 문장
암호화(Encryption) 평문을 암호화 키를 이용하여 암호문으로 변환시키는 과정
복호화(Decryption) 복호화 키를 이용하여 원래의 평문으로 변환시키는 과정
키 (Key) 암호화 알고리즘의 매개변수
암호 알고리즘(Encryption Algorithm) 암호화와 복호화에 이용되는 알고리즘
암호 시스템(Cryptosystem) 암호화 기술과 복호화 기술의 통칭
[3]

분류[편집]

  • 암호화 알고리즘의 분류
구성요소 내용
대체(Substitution) 문자 대체표를 이용하여 해당 문자를 대체
블록화(Blocking) 열과 행을 바꾸어 표현한 후 블록 구성
치환(Transposition) 문자열의 위치를 서로 바꾸어 표현
확장(Expansion) 무의미한 문자를 삽입하여 문자열을 확장
압축(Compaction) 문자열에서 일부 문자를 삭제해 압축문과 삭제문을 분리
[3]
  • 암호화를 수행하는 정보단위에 따른 분류
구분 블록 암호(Block Cipher) 스트림 암호(Stream Cipher)
개념 평문을 일정한 블록 단위로 나누어서 각 블록마다 암호화 과정을 수행하여 고정된 크기의 블록단위의 암호문을 생성 평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진 수열을 비트단위로 배타적 논리합 이진연산으로 결합하여 암호문 생성
장점 기밀성, 해쉬함수 다양 암호 속도가 빠름,
에러 전파 현상 없음
사례 DES, SEED LFSR
단위 블록 단위 비트 단위
[3]
  • 보안강도에 따른 분류
보안강도 NIST(미국) 국내 안전성유지기간
80비트 이상 AES-128/192/256
2TDEA
3TDEA
SEED
ARIA-128/192/256
2010년까지
112비트 이상 AES-128/192/256
3TDEA
SEED
ARIA-128/192/256
2011년부터 2030년까지
(최대 20년)
128비트 이상 AES-128/192/256 SEED
ARIA-128/192/256
2030년 이후
(최대 30년)
192비트 이상 AES-192/256 ARIA-192/256
256비트 이상 AES-256 ARIA-256
[3]

종류[편집]

대칭키 암호화[편집]

대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 복호화하는데 동일한 키를 사용하는 방식이다. 대칭키 암호화 방식은 공개키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다. 반면에 정보 교환 당사자가 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다. 대표적인 대칭키 암호 알고리즘은 국내의 SEED, ARIA, LEA, HIGHT 국외의 AES, 블로피시(Blowfish), 카멜리아(Camellia) 등이 있다.[4]또한, 대칭키 방식은 스트림 기반의 암호화, 블록 기반의 암호화로 나눌 수 있다.

  • 스트림 기반의 암호화 : 비트단위로 암호화하는 방식으로, LFSR, MUX Generator 등의 암호화 알고리즘이 이에 해당되며, 속도가 빠르고 오류 전파 현상이 없다는 장점을 가지고 있어, 주로 오디오/비디오 스트리밍 시에 사용된다.
  • 블록 기반의 암호화 : 블록 단위로 암호화를 수행하는 방식으로, 일반적으로 접하게 되는 암호화 방식의 대부분은 이 방식이라고 볼 수 있다. 예를 들어 만약 'I am a boy' 라는 문자열이 있다면, 'I am', 'a boy'와 같이 블록으로 나누어 암호시스템에서 처리하도록 하는 방식이다.[5]

공개키 암호화[편집]

공개키 암호 알고리즘을 사용하여 암호화하며 공개키개인키의 키 쌍이 존재하여 평문을 암·복호화 하는데 서로 다른 키를 사용하는 방식으로 비대칭키 암호화 방식이라고도 불린다. 공개키 암호화 방식은 데이터 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 키 분배나 전자서명 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다. 대표적인 공개키 암호 알고리즘으로는 국외의 RSA, 엘가멜(ELGamal), ECC 등이 있다.[4]또한, 비대칭키 방식은 인수분해, 이산대수, 타원곡선 암호화로 나눌 수 있다.

일방향 암호화[편집]

해시함수를 이용하여 암호화된 값을 생성하며 복호화 되지 않는 방식이다. 해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성하지만 해시값만으로 입력 메시지를 유추할 수 없어 비밀번호와 같이 복호화 없이 입력 값의 정확성 검증이 필요한 경우 등에 사용되고 있다. 대표적인 해시함수로는 국외의 SHA-2(224/256/384/512), SHA-3, RIPEMD-160, 월풀(Whirlpool) 등이 있다.[4]

비교[편집]

비대칭키 방식은 공개키보다 처리속도가 빠르다는 장점이 있지만 동일한 키를 이용하기 때문에 키 교환이 어렵다는 문제가 있고, 반면에 공개키 방식은 처리속도는 느리나 키 교환이 용이하다는 장점을 가지고 있다. 이러한 장점만을 살려 하이브리드 암호화라는 방식도 나왔는데, 이는 전자봉투에도 적용된 원리로, 대칭키로 먼저 암호화하고 공개키로 다시 암호화하여 대칭키의 장점인 빠른 처리 속도와 공개키의 장점인 키 배송 문제의 편리함을 모두 가지게 된 방법이다.

구분 대칭키 공개키
개념도 평문 (비밀키)→ 암호문 (비밀키)→ 복호문 평문 (공개키/개인키)→ 암호문 (개인키/공개키)→ 복호문
키 관계 암호화 키와 복호화 키가 같음 암호화 키와 복호화 키가 다름
암호키 비밀키 공개키(또는 개인키)
복호키 비밀키 개인키(또는 공개키)
키 전송여부 필요 불필요
키 관리 복잡 단순
인증 고속 저속
부인방지 불가능 가능
구현방식 블록, 스트림 소인수분해, 이산대수
알고리즘 DES, 3-DES, SEED, ARIA, RC-4 등 RSA, DSA 등
장점 구현이 용이, 변형 가능 암호 해독이 어려움, 전자서명
단점 쉽게 해독 가능, 키 관리 어려움 해독 시간이 오래걸림
대분류 중분류 알고리즘 설명
대칭키
방식
블록 암호
알고리즘
DES
  • 64bit블록, 128bit 암호화 키 사용
  • 평문을 64bit로 나눠 각 블록에 치환과 전치를 16라운드 반복하여 암호화
3-DES
  • 암호화키 2개를 사용하여 「암호화(K1)→복호화(K2)→암호화(K1)」 순으로 암호화
AES
  • 128bit 평문을 128bit로 암호화
  • 키 크기에 따라 10/12/14회 라운드 수행
  • 라운드키의 수 = N+1개
SEED
  • KISA주관, ETRI에서 개발
  • 국제표준 부합, 민간 사용 목적
ARIA
  • NSRI에서 개발
  • 공공 사용 목적, 비밀키 규격이 AES와 동일
스트림 암호 RC-4
  • TLS, WEP 등에서 사용
  • Octet(2진 부호 모음, 8bit) 단위 기반 암호화
공개키
방식
인수분해 RSA
  • 큰 숫자를 소인수분해하는 것이 어렵다는 것에 기반하여 개발
  • 공개키만 가지고 개인키 추측 불가
이산대수 DSA
  • 이산대수의 어려움을 안전성의 바탕으로 개발
[5]

기능[편집]

  • 암호화
암호화는 알고리즘을 사용하여 이해하기 어려운 문자로 정보를 변경하는 프로세스를 의미한다. 암호화 기술의 핵심은 어떠한 정보를 암호화하고 이를 다시 알아볼 수 있도록 복호화 하는데 필요한 '키'를 관리하는 것이다. 방화벽과 같은 보안 도구는 외부 침입이나 공격으로부터 시스템을 보호하는 반면, 암호화는 데이터 자체를 보호하는 가장 기본적인 형태의 방어라고 할 수 있다. 따라서 시스템이 공격받더라도 손상된 데이터는 올바른 암호화 키를 소유한, 인증된 사용자만 읽을 수 있다. 이론적으로, 암호화는 IT 시스템의 세 가지 계층(애플리케이션, 시스템, 네트워크)에서 적절하게 구현되어야 효과적이다. 특히 애플리케이션 계층에서는 각 조직의 보안 요구 사항에 따라 암호화 구현 위치를 결정하고 암호화할 데이터의 특성을 살펴봐야 한다. 파일 전체를 암호화하는 것부터 컬럼 단위 암호화 그리고 이미지나 영상과 같은 데이터를 암호화하는 등 암호화할 데이터의 특성에 따라 암호화 방식은 다양하다. 암호화는 기업의 데이터를 보호하는데 있어 필수적인 요소이지만 최적의 구현 방법을 찾는 것은 어려울 수 있다. 일반적으로 암호화 솔루션은 고객의 요구에 따라 하드웨어 장비 또는 클라우드를 통해 도입되는데, 환경에 맞는 옵션을 찾고 암호화 요구 사항을 해결하기 위해서는 암호화 기술을 공급하는 회사와 상담하는 것이 좋다.
  • 키 관리
암호화만으로는 중요한 데이터를 안전하게 유지하기에 충분하지 않다. 암호화 프로세스에서 가장 중요한 역할을 하는 것이 바로 '키'이기 때문인데, 데이터 유출이 발생하는 경우, 암호화된 데이터와 동일한 서버에 키가 저장되어 있다면 해커는 그 키를 이용하여 데이터에 접근해 복호화 할 수 있다. 마찬가지로 키가 손상되거나 사라진 경우에도 데이터가 손실된 것과 같다. 따라서 키 관리는 엔터프라이즈 암호화에 있어 핵심 부분이라고 할 수 있다. 이처럼 중요한 키는 생성에서 폐기에 이르기까지 그 라이프사이클을 안전하게 관리하는 것이 필수이다. 기업의 데이터 저장 시스템 전반에 걸쳐 키를 안전하게 관리하는 가장 편리한 방법은 키 관리 시스템(KMS: Key Management System)을 사용하는 것이다. KMS는 암호화 키의 생성, 폐기, 관리 및 통합 기능을 제공하며, 키는 별도의 시스템에 저장된다. 대부분의 조직은 높은 수준의 물리적 보안을 제공하는 온프레미스 하드웨어 어플라이언스 형태로 키 관리 시스템을 활용하고 있다.
  • 접근 제어 및 감사
조직은 외부 위협을 차단하는 것에만 집중하기 보다 악의적인 목적을 가진 조직 내부자가 기업의 중요 데이터에 접근하는 것을 방지하는 것에도 신경써야 한다. 접근 제어는 데이터 접근을 효과적으로 보호하기 위한 사용 권한, 사용 권한 상속, 사용자 권한 및 감사를 뜻하며, 실제로 사용자가 접근 권한을 설정하고 서버 IP에 접근하여 키 관리 서버에 대한 접근을 제어하며 인증 키의 발급 및 확인을 제어하는 ​​기능이 포함된다. 접근 제어는 기업 보안의 필수적인 부분으로, 권한, 계급 또는 기타 사양에 따라 리소스에 대한 다양한 접근 권한을 허용함으로써 구현할 수 있다. 암호화 솔루션에는 일반적으로 접근 제어가 포함되지만 특정 기능은 모델마다 다를 수 있다. 접근할 수 있는 사람을 관리하는 것 외에도 필요한 경우 모든 접근 기록을 효율적으로 검색할 수 있어야 하고, 감사 기능을 통해 관리자는 의심스러운 활동이나 비정상적인 활동에 대한 감사 로그를 확인할 수 있기 때문에 기업 보안을 강화할 수 있다. 정기 감사를 지원하려면 사용자가 이용하기 편한 관리 도구를 함께 제공하는 암호화 솔루션을 선택하는 것이 좋다.[6]

각주[편집]

  1. 이스트시큐리티 공식 홈페이지 - https://www.estsecurity.com/public/product/alyac
  2. 2.0 2.1 펜타시큐리티시스템(주) 공식 홈페이지 - http://a.to/19KXhOn
  3. 3.0 3.1 3.2 3.3 iLiFO 지덤 공식 홈페이지 - http://a.to/19ctWtG
  4. 4.0 4.1 4.2 개인정보의 암호화 조치 안내서〉, 《한국인터넷진흥원》, 2017-01
  5. 5.0 5.1 JK MOON PHASE, 〈(암호화) 암호화의 이해(암호화 알고리즘, 대칭키/공개키〉, 《네이버 블로그》, 2016-05-07
  6. 펜타시큐리티시스템, 〈(쉽게 만나는 IT)강력한 보안을 위한 암호화의 3가지 핵심 기능〉, 《네이버 블로그》, 2019-03-27

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 암호화 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.