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

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

위키원
이동: 둘러보기, 검색
(새 문서: ==종류== ===대칭키 암호화=== 대칭키 암호화 방식은 대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 복호화하는데...)
 
(비교)
 
(사용자 3명의 중간 판 65개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==종류==
+
'''암호화'''<!--암호 , encryption-->(encryption)란 일상적인 문자로 쓰이는 [[평문]]을 [[암호키]]를 소유하지 않은 사람이 알아볼 수 없도록 [[암호문]]으로 변환하는 것이다. 반대말은 [[복호화]](decryption)이다.
===대칭키 암호화===
 
대칭키 암호화 방식은 대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 복호화하는데 동일한 키를 사용하는 방식이다. 대칭키 암호화 방식은 공개키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다. 반면에 정보 교환 당사자가 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다. 대표적인 대칭키 암호 알고리즘은 국내의 SEED, ARIA, LEA, HIGHT 국외의 AES, Blowfish, Camellia 등이 있다.
 
  
===공개키 암호화===
+
==개요==
공개키 암호화 방식은 공개키 암호 알고리즘을 사용하여 암호화하며 공개키와 개인키의 키 쌍이 존재하여 평문을 암·복호화 하는데 서로 다른 키를 사용하는 방식으로 비대칭키 암호화 방식이라고도 불린다. 공개키 암호화 방식은 데이터 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 키 분배나 전자서명 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다. 대표적인 공개키 암호 알고리즘으로는 국외의 RSA, ELGamal, ECC 등이 있다.
+
암호화는 [[알고리즘]]을 이용하여 누구든 읽어볼 수 있는 평문으로 저장된 정보를 암호 인증키를 가진 사람만이 볼 수 있도록 암호문으로 변환하는 것을 말한다. 이러한 과정을 통해 암호화된 형태로 정보를 저장하거나 전송할 경우 제3자의 공격에 의해 [[데이터]]가 손실 및 변조되는 것을 예방할 수 있다. 또한 인증키를 소유하지 않은 사람은 데이터에 접근할 수 없기 때문에 일종의 사용자 인증 기법으로서 데이터를 안전하게 보호할 수 있게 된다. 암호화 체계는 [[복호화]] 키와 암호화 키의 일치 여부에 따라 크게 [[대칭키]] 암호화 기법, 비대칭형 [[공개키]] 암호화 기법으로 나뉘며 그 외에도 일방향 암호화 기법인 [[해시]] 암호화 기법이 있다.<ref>이스트시큐리티 공식 홈페이지 - https://www.estsecurity.com/public/product/alyac</ref>
  
===일방향(해시함수) 암호화===
+
==특징==
일방향 암호화 방식은 해시함수를 이용하여 암호화된 값을 생성하며 복호화 되지 않는 방식이다. 해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성하지만 해시값만으로 입력 메시지를 유추할 없어 비밀번호와 같이 복호화 없이 입력 값의 정확성 검증이 필요한 경우 등에 사용되고 있다. 대표적인 해시함수로는 국외의 SHA-2(224/256/384/512), SHA-3, RIPEMD-160, Whirlpool 등이 있다.
+
===암호화 ===
 +
고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문을 해독이 가능하다는 것이며, 컴퓨터의 등장과 발전으로 급상승한 계산 능력 앞에 고전 암호는 무용지물이 되었다. 따라서 현재 암호화 기술의 핵심은 임의의 문자열 값인 '암호화 키'이다. 암호화 키는 난수이다. 정확한 의미로의 난수는 아닌 의사난수지만, 암호학에서 사용하는 통계학 입각 기준에 따라 일정 수준 이상의 의사난수를 난수로 가정한다. 적절한 암호화 키를 사용한다면 암호화 알고리즘이 노출되더라도 키 없이는 해독할 수 없다. 한시적이긴 하나 잠정적으로는 완벽한 현재 암호화 기술의 명세는, 어떤 키를 사용해 메시지 내용을 감추느냐, 즉 키의 성질을 바탕으로 이루어진다. 암호화 키의 동작은 수리 논리학의 '[[배타적 논리합]]' 연산에 따라 이루어진다. 이진법으로 표현한 수의 각 비트에 대한 가감산 결과를 비트간 [[배타적 논리합]]이라 한다. 비트간 [[배타적 논리합]]은 특정 비트의 반전이므로, 반복하면 원래값이 된다. 즉, P 라는 원문을 K 라는 키값을 이용해 연산하면 P + K 라는 암호문이 되는 방식이라고 할 수 있다. 이 암호문을 K 키값을 이용해 연산하면, (P + K) + K = P 원문 P 로 [[복호화]]할 수 있다. 예를 들어, 원문 0011 은 키값 0110 을 이용해 연산하면 암호문 0101 이 되고 이는 다시, 0101 + 0110 = 0011 재연산을 거쳐 원문으로 [[복호화]]되는 방식이다. 암호화 키의 길이, 키 사용 회수 등에 제한이 없다면 완벽한 암호화를 이룰 수 있다. 하지만 보안이란 보안에 드는 비용이 보안 대상의 가치보다 적을 때 유효하다. 따라서 암호화에 있어 가장 중요한 요소인 암호화 키의 규격에 대한 일정한 표준이 존재한다. 현재 암호화 규격은 [[양자연산]] 등 완전히 새로운 컴퓨팅 방식의 등장 이전까지는 안전하다고 볼 수 있다.<ref name="특징">펜타시큐리티시스템(주) 공식 홈페이지 - http://a.to/19KXhOn</ref>
  
==구현==
+
===암호화 시스템===
===전송시 암호화===
+
암호화 기술의 비범함 기준은 비즈니스라고 할 수 있는데, 비즈니스 요건에 따라 암호화를 수행하는 위치나 데이터의 특성이 달라진다. 그러므로 암호화 기술은 시스템과 비즈니스 전반에 걸친 이해가 필수적이다. 사업적 필요에 따른 여러 환경에서의 암호학 원론의 기술적 적용을 암호화라고 할 수 있고, 암호화의 예로는 최근 설계하고 구축된 모바일 메신저 [[애플리케이션]]을 들 수 있다. 최초 요구는 메신저로 통신한 대화 내용이 저장되는 DBMS의 데이터 암호화였다. 하지만 보안 침해 사고의 일반적 행태에 비추어 보면 위 구성으로는 충분한 보안성을 이룰 수 없다. 실제 필요한 웹 [[애플리케이션]] 암호화의 요구사항은 아래와 같다.
====웹서버와 클라이언트====
+
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
웹브라우저에 기본적으로 내장된 SSL/TLS 프로토콜로 접속하는 SSL 방식과 웹브라우저에 보안 프로그램을 설치하여 접속하는 응용프로그램 방식으로 구분할 수 있다. SSL 방식은 웹페이지 전체를 암호화(웹페이지 내 이미지 포함)하며 응용프로그램 방식은 특정 데이터만을 선택적으로 암호화할 수 있지만, 웹브라우저 등에 부가적인 프로그램을 설치해야 한다. 공공기관에서는 국가정보원이 안전성을 확인한 암호모듈 또는 제품을 적용해야 한다.
+
! Client || WAS || DBMS
 +
|-
 +
| 사용자 인증 암호화 || 사용자 인증 암호화 || 사용자 인증 암호화
 +
|-
 +
| 주요 파일 암호화 || · || ·
 +
|-
 +
| 전송 구간 암호화 || 전송 구간 암호화 || ·
 +
|-
 +
| · || 메시지(대화) 암호화 || 메시지(대화) 암호화
 +
|-
 +
| · || 주요 파일 암호화 || ·
 +
|-
 +
| · || · || 개인정보 암호화
 +
|-
 +
| · || · || 암호화 데이터 접근제어
 +
|-
 +
| 암호화 키 안전한 관리<br>(저장 및 접근제어) || 암호화 키 안전한 관리<br>(저장 및 접근제어) || 암호화 키 안전한 관리<br>(저장 및 접근제어)
 +
|-
 +
|}
 +
<ref name="특징"></ref>
  
* '''SSL 방식'''
+
===구성 요소===
: SSL 방식은 전송 계층(Transport Layer)을 기반으로 한 응용 계층(Application Layer)에서 암호화를 수행한다. 암호키 교환은 비대칭키 암호 알고리즘을 이용하고, 기밀성을 위한 암호화는 대칭키 암호 알고리즘을 이용하며 메시지의 무결성은 메시지 인증 코드(해시함수)를 이용하여 보장한다.  
+
암호화는 평문, 암호문, 복호화, 키, 암호 알고리즘, 암호 시스템으로 구성된다.
  
: 인터넷 쇼핑이나 인터넷 뱅킹 시 계좌정보, 주민등록번호 등과 같은 중요한 정보를 입력할 때, 거래당사자의 신원 및 거래내용의 위·변조 여부를 확인하고 중요 정보가 제3자에게 유출되는 것을 막기 위해 SSL/TLS와 같은 통신 암호기술을 이용할 수 있다.
+
: {| 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>
  
: 사용자가 웹서버에 처음 접속하면 인증서 및 통신 암호화에 이용할 암호키를 생성하기 위한 정보를 공유하고, 이후 공유된 정보를 통해 생성된 암호키를 이용하여 데이터를 암호화하여 전송한다. SSL/TLS 통신을 하는 경우에는 로그인 페이지 등 보안이 필요한 웹페이지에 접속하면 웹브라우저 하단 상태 표시줄에 자물쇠 모양의 표시를 확인할 수 있다.
+
===분류===
 +
* '''암호화 알고리즘의 분류'''
 +
: {| 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>
  
: 사용자가 해당 웹서버에 접속하면 사용자 컴퓨터에 자동으로 SSL을 구현한 보안 응용프로그램이 설치되고 이를 통해 개인정보를 암호화하여 통신이 이루어진다. 웹브라우저의 확장기능인 플러그인 형태로 구현되며 웹사이트 접속 시 초기화면이나 로그인 후 원도우 화면 오른쪽 하단 작업 표시줄 알림영역을 확인하여 프로그램이 실행되고 있음을 알 수 있다.
+
* '''보안강도에 따른 분류'''
 +
: {| 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>
  
====개인정보처리시스템====
+
==종류==
개인정보처리시스템 간에 개인정보를 전송할 때 암호화를 지원하기 위하여 공중망을 이용한 가상사설망(VPN : Virtual Private Network)을 구축할 수 있다. VPN은 기반이 되는 보안 프로토콜의 종류에 따라 IPsec VPN 방식, SSL VPN 방식, SSH VPN 방식 등으로 구분할 수 있다.
+
===대칭키 암호화===
 +
대칭키 암호 알고리즘을 사용하여 전송하고자 하는 평문을 암호화하고 [[복호화]]하는데 동일한 키를 사용하는 방식이다. 대칭키 암호화 방식은 공개키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다. 반면에 정보 교환 당사자가 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다. 대표적인 대칭키 암호 알고리즘은 국내의 [[SEED]], [[ARIA]], [[LEA]], [[HIGHT]] 국외의 [[AES]], [[블로피시]](Blowfish), [[카멜리아]](Camellia) 등이 있다.<ref name="문서">〈[http://www.kisa.or.kr/uploadfile/201806/201806120949471644.pdf 개인정보의 암호화 조치 안내서]〉, 《한국인터넷진흥원》, 2017-01</ref>또한, 대칭키 방식은 스트림 기반의 암호화, 블록 기반의 암호화로 나눌 수 있다.
  
VPN은 공중망을 통해 데이터를 송신하기 전에 데이터를 암호화하고 수신측에서 이를 복호화 하는 방식으로 송·수신 정보에 대한 기밀성 및 무결성을 보장하며, 그 외에도 데이터 출처 인증, 재전송 방지, 접근제어 등 다양한 보안 기능을 제공한다.
+
* 스트림 기반의 암호화 : 비트단위로 암호화하는 방식으로, LFSR, MUX Generator 등의 암호화 알고리즘이 이에 해당되며, 속도가 빠르고 오류 전파 현상이 없다는 장점을 가지고 있어, 주로 오디오/비디오 스트리밍 시에 사용된다.
  
* '''IPsec VPN 방식'''
+
* 블록 기반의 암호화 : 블록 단위로 암호화를 수행하는 방식으로, 일반적으로 접하게 되는 암호화 방식의 대부분은 이 방식이라고 볼 수 있다. 예를 들어 만약 '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>
: IPsec VPN 방식은 응용프로그램을 수정할 필요가 없으나 IPsec 패킷의 IP 주소를 변경해야 하는 NAT와 같이 사용하기 어려운 점이 있다. 사용자 인증이 필요 없으므로 VPN 장비 간 서로 인증이 된 경우, 사용자는 다른 인증절차를 거치지 않아도 된다.
 
  
: IPsec VPN 방식의 구조는 게이트웨이 대 게이트웨이, 호스트 대 게이트웨이, 호스트 대 호스트로 구분할 수 있다. 게이트웨이 대 게이트웨이는 네트워크 간의 암호화 통신, 호스트 대 게이트웨이는 개인정보처리시스템과 네트워크 간의 암호화 통신, 호스트 대 호스트는 개인정보처리시스템 간의 암호화 통신을 설정할 수 있는 방식이다.
+
===공개키 암호화===
 
+
[[공개키]] 암호 알고리즘을 사용하여 암호화하며 [[공개키]]와 [[개인키]]의 키 쌍이 존재하여 평문을 암·[[복호화]] 하는데 서로 다른 키를 사용하는 방식으로 [[비대칭키]] 암호화 방식이라고도 불린다. 공개키 암호화 방식은 [[데이터]] 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 키 분배나 [[전자서명]] 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다. 대표적인 공개키 암호 알고리즘으로는 국외의 [[RSA]], [[엘가멜]](ELGamal), [[ECC]] 등이 있다.<ref name="문서"></ref>또한, 비대칭키 방식은 인수분해, 이산대수, 타원곡선 암호화로 나눌 수 있다.
* '''SSL VPN 방식'''
 
: SSL VPN 방식은 응용프로그램 수준에서 SSL/TLS을 구현하는 것이 일반적이며 NAT를 사용할 수 있다. SSL/TLS는 메모리 소비가 많으므로 동시 접속이 많은 대용량 처리에서 성능 저하가 발생할 수 있다. 하지만 개별 사용자 인증이 필요한 경우 SSL VPN 방식이 좋은 선택이 될 수 있다.
 
 
 
: SSL VPN 방식의 구조는 외부망이 개인정보거래시스템과 내부의 SSL VPN 서버 간 인터넷을 통한 통신에서 암호화 통신을 제공한다. 방화벽 후단의 SSL VPN 서버 없이 내부망의 개인정보처리시스템에 SSL VPN 기능을 구현하여 외부망의 개인정보처리시스템과 암호화 통신을 제공할 수도 있다.
 
 
 
* '''SSH VPN 방식'''
 
: SSH VPN 방식은 응용계층의 VPN 기술로서 원격 단말기에서 접속하는 경우에 주로 이용되며 SSH를 이용한 파일 전송 및 파일 복사 프로토콜을 이용할 수 있다. 오픈소스 SSH의 일종인 OpenSSH의 경우 프락시 방식의 VPN 서버로 구성할 수도 있다. 각 개인은 정보처리시스템에 설치된 SSH 기능을 사용하여 VPN을 구성할 수 있다.
 
 
 
====개인정보취급자====
 
개인정보취급자 간에 개인정보를 전송할 때 주로 이메일을 이용하게 된다. 이메일은 네트워크를 통해 전송되는 과정에서 공격자에 의해 유출되거나 위조될 가능성이 있다. 이러한 위협으로부터 이메일로 전송되는 메시지를 보호하기 위해서 PGP 또는 S/MIME을 이용하는 이메일 암호화 방식과 암호화된 파일을 이메일에 첨부하여 전송하는 이메일 첨부문서 암호화 방식이 있다.
 
 
 
S/MIME은 공개키를 포함한 공인인증서를 발급받고 등록해야 하는 번거로움이 있다. 이에 비해 PGP의 경우 개인 간의 신뢰를 바탕으로 공개키를 등록하거나 안전한 채널로 미리 확보하는 방법을 사용할 수 있다.
 
 
 
* '''이메일 암호화 방식'''
 
: 이메일 암호화 방식은 송·수신되는 이메일의 내용을 암호화함으로써 메일에 포함된 중요 개인정보의 유출을 방지하는 것이며, 대표적인 이메일 보안 프로토콜로 PGP와 S/MIME이 있다. PGP는 다양한 응용프로그램에 적용하여 문서, 이메일, 파일, 파일시스템, 디스크 등을 암호화할 수 있다.  
 
 
 
: S/MIME은 인증, 메시지 무결성, 부인방지, 메시지 암호화 등에 사용되며 대부분의 이메일 클라이언트에서 기본적으로 지원한다. S/MIME을 사용하기 위해서는 공인인증기관이 발행한 공인인증서가 있어야 한다.
 
 
 
* '''이메일 첨부문서 암호화 방식'''
 
: 업무용 컴퓨터에서 주로 사용하는 문서 도구의 자체 암호화 방식, 암호 유틸리티를 이용한 암호화 방식 등을 통해 암호화한 파일을 이메일의 첨부문서로 송·수신할 수 있다. 이메일을 송·수신할 개인정보취급자 간에는 미리 공유된 암호키 또는 비밀번호를 사용하여 복호화하며, 이 암호키는 안전하게 공유하여야 한다.
 
 
 
====저장시 암호화===
 
====개인정보처리시스템====
 
개인정보를 처리하고 관리하는 개인정보처리시스템은 DB에 저장된 개인정보를 암호화하여 저장함으로써 개인정보의 유출, 위·변조, 훼손 등을 방지해야 한다. 개인정보처리시스템의 DB를 암호화할 수 있는 방식은 암·복호화 모듈의 요청 위치의 조합에 따라 구분할 수 있다.
 
 
 
각 방식의 단점을 보완하기 위하여 두 가지 이상의 방식을 혼합하여 구현하기도 한다. 이 경우 구축 시 많은 비용이 소요되지만 어플리케이션 서버 및 DB 서버의 성능과 보안성을 높일 수 있다. 개인정보처리시스템 암호화 방식마다 성능에 미치는 영향이 다르므로 구축 환경에 따라 암호화 방식의 특성, 장단점 및 제약사항 등을 고려하여 DB 암호화 방식을 선택해야 한다.
 
 
 
성능이 매우 중요한 요소가 되는 환경에서 DB 서버 암호화 방식을 고려하는 경우에도 반드시 벤치마킹 테스트(BMT) 등을 수행하여, 최적의 솔루션을 선택하는 것이 바람직하다. 공공기관에서는 국가정보원이 안전성을 확인한 암호모듈 또는 제품을 적용해야 한다.
 
  
현재 운영 중이거나 향후 개발 예정인 개인정보처리시스템의 목적 및 환경에 맞게 쉽게 구현이 가능한 암호화 방식을 선택해야 한다. 응용프로그램 및 DB 스키마 수정 등을 최소화하고 개발 환경에 맞게 성능을 최대화할 있도록 해야 한다. DB 암호화의 안전성을 확보하기 위해서는 안전한 암호키의 관리가 필요하다. 암호화된 개인정보가 유출되더라도 복호화 할 수 없도록 암호키에 대한 추가적인 보안과 제한된 관리자만 허용하도록 하는 기술을 적용해야 한다.
+
===일방향 암호화===
 +
[[해시함수]]를 이용하여 암호화된 값을 생성하며 [[복호화]] 되지 않는 방식이다. 해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성하지만 해시값만으로 입력 메시지를 유추할 없어 비밀번호와 같이 [[복호화]] 없이 입력 값의 정확성 검증이 필요한 경우 등에 사용되고 있다. 대표적인 해시함수로는 국외의 [[SHA-2]](224/256/384/512), [[SHA-3]], [[RIPEMD-160]], [[월풀]](Whirlpool) 등이 있다.<ref name="문서"></ref>
  
* '''응용프로그램 자체 암호화 방식'''
+
===비교===
: 응용프로그램 자체 암호화 방식은 암·복호화 모듈이 API 라이브러리 형태로 각 어플리케이션 서버에 설치되고 응용프로그램에서 암·복호화 모듈을 호출하는 방식이다. DB 서버에는 영향을 주지 않지만 어플리케이션 서버에 암·복호화를 위한 추가적인 부하가 발생하며, 구축 시 응용프로그램 전체 또는 일부 수정이 필요하다. 추가적으로 어플리케이션 서버와 DB 서버 간의 통신에서 암호화된 개인 정보의 전송을 보장할 수 있다.
+
비대칭키 방식은 공개키보다 처리속도가 빠르다는 장점이 있지만 동일한 키를 이용하기 때문에 키 교환이 어렵다는 문제가 있고, 반면에 공개키 방식은 처리속도는 느리나 키 교환이 용이하다는 장점을 가지고 있다. 이러한 장점만을 살려 [[하이브리드 암호화]]라는 방식도 나왔는데, 이는 전자봉투에도 적용된 원리로, 대칭키로 먼저 암호화하고 공개키로 다시 암호화하여 대칭키의 장점인 빠른 처리 속도와 공개키의 장점인 키 배송 문제의 편리함을 모두 가지게 된 방법이다.
  
* '''DB 서버 암호화 방식'''
+
: {| class="wikitable" width=650 style="color:balck; text-align: center; background-color:#F8F9FA;"
: DB 서버 암호화 방식은 암·복호화 모듈이 DB 서버에 설치되고 DBMS에서 플러그인으로 연결된 암·복호화 모듈을 호출하는 방식이다. 응용프로그램의 수정이 거의 필요하지 않아 구현 용이성이 뛰어나지만, 기존 DB 스키마와 대응하는 뷰를 생성하고 암호화할 테이블을 추가하는 작업이 필요하다. 어플리케이션 서버의 성능에는 영향을 주지 않지만 DBMS에서 DB 서버의 암·복호화 모듈을 플러그인으로 호출할 때 추가적인 부하가 발생하여 성능이 저하될 수 있다.
+
! 구분 || 대칭키 || 공개키
 +
|-
 +
| 개념도 || 평문 (비밀키)→ 암호문 (비밀키)→ 복호문 || 평문 (공개키/개인키)→ 암호문 (개인키/공개키)→ 복호문
 +
|-
 +
| 키 관계 || 암호화 키와 복호화 키가 같음 || 암호화 키와 복호화 키가 다름
 +
|-
 +
| 암호키 || 비밀키 || 공개키(또는 개인키)
 +
|-
 +
| 복호키 || 비밀키 || 개인키(또는 공개키)
 +
|-
 +
| 키 전송여부 || 필요 || 불필요
 +
|-
 +
| 키 관리 || 복잡 || 단순
 +
|-
 +
| 인증 || 고속 || 저속
 +
|-
 +
| 부인방지 || 불가능 || 가능
 +
|-
 +
| 구현방식 || 블록, 스트림 || 소인수분해, 이산대수
 +
|-
 +
| 알고리즘 || DES, 3-DES, SEED, ARIA, RC-4 등 || RSA, DSA 등
 +
|-
 +
| 장점 || 구현이 용이, 변형 가능 || 암호 해독이 어려움, 전자서명
 +
|-
 +
| 단점 || 쉽게 해독 가능, 키 관리 어려움 || 해독 시간이 오래걸림
 +
|-
 +
|}
  
* '''DBMS 자체 암호화 방식'''
+
: {| class="wikitable" width=800 style="color:balck; text-align:left; background-color:#F8F9FA;"
: DBMS 자체 암호화 방식은 DBMS에 내장되어 있는 암호화 기능(TDE : Transparent Data Encryption)을 이용하여 암·복호화 처리를 수행하는 방식이다. DMBS 커널 수준에서 처리되므로 기존 응용프로그램의 수정이나 DB 스키마의 변경이 거의 필요하지 않고 DBMS 엔진에 최적화된 성능을 제공할 수 있다.
+
! 대분류 || 중분류 || 알고리즘 || 설명
 +
|-
 +
| rowspan="6" style="text-align:center;"| 대칭키<br>방식 || rowspan="5" style="text-align:center;"| 블록 암호<br>알고리즘 || style="text-align:center;"| DES ||
 +
* 64bit블록, 128bit 암호화 키 사용
 +
* 평문을 64bit로 나눠 각 블록에 치환과 전치를 16라운드 반복하여 암호화
 +
|-
 +
| style="text-align:center;" | 3-DES ||
 +
* 암호화키 2개를 사용하여 「암호화(K1)→복호화(K2)→암호화(K1)」 순으로 암호화
 +
|-
 +
| style="text-align:center;" | AES ||
 +
* 128bit 평문을 128bit로 암호화
 +
* 키 크기에 따라 10/12/14회 라운드 수행
 +
* 라운드키의 수 = N+1개
 +
|-
 +
| style="text-align:center;" | SEED ||
 +
* KISA주관, ETRI에서 개발
 +
* 국제표준 부합, 민간 사용 목적
 +
|-
 +
| style="text-align:center;" | ARIA ||
 +
* NSRI에서 개발
 +
* 공공 사용 목적, 비밀키 규격이 AES와 동일
 +
|-
 +
| style="text-align:center;" | 스트림 암호 || style="text-align:center;" | RC-4 ||
 +
* TLS, WEP 등에서 사용
 +
* Octet(2진 부호 모음, 8bit) 단위 기반 암호화
 +
|-
 +
| rowspan="2" style="text-align:center;" | 공개키<br>방식 || style="text-align:center;" | 인수분해 || style="text-align:center;" | RSA ||
 +
* 큰 숫자를 소인수분해하는 것이 어렵다는 것에 기반하여 개발
 +
* 공개키만 가지고 개인키 추측 불가
 +
|-
 +
| style="text-align:center;" | 이산대수 || style="text-align:center;" | DSA ||
 +
* 이산대수의 어려움을 안전성의 바탕으로 개발
 +
|-
 +
|}<ref name="이해"></ref>
  
* '''DBMS 암호화 기능 호출 방식'''
+
==기능==
: DBMS 암호화 기능 호출 방식은 DBMS가 자체적으로 암·복호화 기능을 수행하는 API를 제공하고 해당 함수를 사용하기 위해 응용프로그램에서 호출하는 방식이다. 암·복호화 API를 사용하는 응용프로그램의 수정이 필요하고, DB 서버에 추가적인 부하가 발생할 수 있다.
+
* '''암호화'''
 +
: 암호화는 알고리즘을 사용하여 이해하기 어려운 문자로 정보를 변경하는 프로세스를 의미한다. 암호화 기술의 핵심은 어떠한 정보를 암호화하고 이를 다시 알아볼 수 있도록 [[복호화]] 하는데 필요한 '키'를 관리하는 것이다. 방화벽과 같은 보안 도구는 외부 침입이나 공격으로부터 시스템을 보호하는 반면, 암호화는 데이터 자체를 보호하는 가장 기본적인 형태의 방어라고 할 수 있다. 따라서 시스템이 공격받더라도 손상된 데이터는 올바른 암호화 키를 소유한, 인증된 사용자만 읽을 수 있다. 이론적으로, 암호화는 IT 시스템의 세 가지 계층([[애플리케이션]], 시스템, 네트워크)에서 적절하게 구현되어야 효과적이다. 특히 [[애플리케이션]] 계층에서는 각 조직의 보안 요구 사항에 따라 암호화 구현 위치를 결정하고 암호화할 데이터의 특성을 살펴봐야 한다. 파일 전체를 암호화하는 것부터 컬럼 단위 암호화 그리고 이미지나 영상과 같은 데이터를 암호화하는 등 암호화할 데이터의 특성에 따라 암호화 방식은 다양하다. 암호화는 기업의 데이터를 보호하는데 있어 필수적인 요소이지만 최적의 구현 방법을 찾는 것은 어려울 수 있다. 일반적으로 암호화 솔루션은 고객의 요구에 따라 하드웨어 장비 또는 [[클라우드]]를 통해 도입되는데, 환경에 맞는 옵션을 찾고 암호화 요구 사항을 해결하기 위해서는 암호화 기술을 공급하는 회사와 상담하는 것이 좋다.
  
* '''운영체제 암호화 방식'''
+
* '''키 관리'''
: 운영체제 암호화 방식은 OS에서 발생하는 입출력 시스템 호출을 이용한 암·복호화 방식으로서 DB 파일 자체를 암호화한다. 응용프로그램이나 DB 스키마의 수정이 필요하지 않지만 DB 파일 전체를 암호화 하는데 다른 파일서버 DB 서버에 추가적인 부하가 발생할 수 있다.
+
: 암호화만으로는 중요한 데이터를 안전하게 유지하기에 충분하지 않다. 암호화 프로세스에서 가장 중요한 역할을 하는 것이 바로 '키'이기 때문인데, 데이터 유출이 발생하는 경우, 암호화된 데이터와 동일한 서버에 키가 저장되어 있다면 해커는 그 키를 이용하여 데이터에 접근해 [[복호화]] 할 수 있다. 마찬가지로 키가 손상되거나 사라진 경우에도 데이터가 손실된 것과 같다. 따라서 키 관리는 엔터프라이즈 암호화에 있어 핵심 부분이라고 할 수 있다. 이처럼 중요한 키는 생성에서 폐기에 이르기까지 그 라이프사이클을 안전하게 관리하는 것이 필수이다. 기업의 데이터 저장 시스템 전반에 걸쳐 키를 안전하게 관리하는 가장 편리한 방법은 [[키 관리 시스템]](KMS: Key Management System)을 사용하는 것이다. KMS는 암호화 키의 생성, 폐기, 관리 통합 기능을 제공하며, 키는 별도의 시스템에 저장된다. 대부분의 조직은 높은 수준의 물리적 보안을 제공하는 온프레미스 하드웨어 어플라이언스 형태로 [[키 관리 시스템]]을 활용하고 있다.
  
====업무용 컴퓨터·보조저장매체====
+
* '''접근 제어 및 감사'''
업무용 컴퓨터에서는 하드디스크, 이동식 디스크 또는 보조저장매체(USB 등)에 저장된 개인정보의 보호를 위해 개별 문서 파일 단위 암호화, 디렉터리 단위 암호화, 디스크 암호화 등의 방법을 사용할 수 있다. 파일 암호화는 업무용 컴퓨터의 하드디스크, 이동식 디스크, 보조저장매체에 저장된 개인정보에 대한 보호뿐만 아니라 개인정보취급자 간에 네트워크상으로 파일을 안전하게 전송하기 위한 방식으로도 사용할 수 있다.
+
: 조직은 외부 위협을 차단하는 것에만 집중하기 보다 악의적인 목적을 가진 조직 내부자가 기업의 중요 데이터에 접근하는 것을 방지하는 것에도 신경써야 한다. 접근 제어는 데이터 접근을 효과적으로 보호하기 위한 사용 권한, 사용 권한 상속, 사용자 권한 및 감사를 뜻하며, 실제로 사용자가 접근 권한을 설정하고 서버 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>
  
* '''문서 도구 자체 암호화 방식'''
+
{{각주}}
: 업무용 컴퓨터에서 주로 사용하는 문서 도구에서는 자체 암호화 기능을 통하여 개인정보 파일을 암호화할 수 있다.
 
  
* '''DRM 방식'''
+
==참고자료==
: DRM은 조직 내부에서 생성되는 전자문서를 암호화하고 해당 문서를 접근 및 사용할 수 있는 권한을 지정함으로써 허가된 사용자만 중요 문서를 사용하게 하는 기술이다. DRM은 중요 문서 외에 다양한 종류의 멀티미디어 콘텐츠에 대한 보안 기능을 제공할 수 있다. DRM으로 암호화된 문서는 DRM 클라이언트가 없는 PC에서는 열람이 불가능하며, 열람 중에도 파일이 복호화 되지 않고 암호화 상태를 유지한다. 또한 암호화 파일의 안전한 외부 전송이 가능하다.
+
* 이스트시큐리티 공식 홈페이지 - https://www.estsecurity.com/public/product/alyac
 +
* 〈[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 이 암호화 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.