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

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

위키원
이동: 둘러보기, 검색
(비교)
1번째 줄: 1번째 줄:
'''암호화'''(encryption)란 일상적인 문자로 쓰이는 [[평문]]을 [[암호키]]를 소유하지 않은 사람이 알아볼 수 없도록 [[암호문]]으로 변환하는 것이다.
+
'''암호화'''<!--암호 화, encryption-->(encryption)란 일상적인 문자로 쓰이는 [[평문]]을 [[암호키]]를 소유하지 않은 사람이 알아볼 수 없도록 [[암호문]]으로 변환하는 것이다.
  
 
==개요==
 
==개요==

2019년 8월 5일 (월) 16:32 판

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

개요

암호화는 알고리즘을 이용하여 누구든 읽어볼 수 있는 평문으로 저장된 정보를 암호 인증키를 가진 사람만이 볼 수 있도록 암호문으로 변환하는 것을 말한다. 이러한 과정을 통해 암호화된 형태로 정보를 저장하거나 전송할 경우 제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 이 암호화 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.