BioStar 2 와 웹 보안

전체 해킹 시도 중 70% 이상이 웹을 통해 이루어지고 있어서 웹 보안은 이제 필수 사항이 되었습니다. 웹 사이트를 이용한 공격은 단순히 관리자가 철저하게 보안에 노력을 기울여 해결할 수 있는 문제가 아닙니다. 웹은 접근이 비교적 자유롭다는 특성상 취약점도 쉽게 노출될 수 있기 때문입니다.

이 문서에서는 웹 기반 보안 플랫폼인 BioStar2에서 사용하는 두 가지 방식의 통신 프로토콜(HTTP와 HTTPS)의 차이점을 살펴보고 HTTPS를 사용해야 하는 이유에 대해 알아봅니다.


HTTP는 Hypertext Transfer Protocol의 줄임말이며, HTML(HyperText Markup Language) 문서를 주고 받는데 쓰입니다. 즉,웹 브라우저를 이용해 웹 클라이언트(사용자)와 웹 서버(서비스 제공자) 사이에 데이터를 전송하는 프로토콜입니다. 일반적으로 TCP/UDP 방식을 사용하며, 80 포트를 사용합니다.

HTTP는 연결 상태를 스스로 유지하지 않기 때문에 데이터 교환은 ‘Request’와 ‘Response’로 이루어져 있습니다. 이 단계가 없다면 웹 서버는 웹 브라우저가 어떤 페이지를 요청하는지 알 수 없고, 웹 브라우저도 웹 서버가 어떤 페이지를 보내는지 알 수 없습니다.

HTTP는 암호화되지 않은 문자로 ‘Request’와 ‘Response’를 수행하기 때문에 HTTPS에 비해 속도가 빠르지만, 누군가 데이터를 가로채어 본다면 클라이언트가 보고 있는 페이지의 내용을 볼 수 있게 됩니다.


HTTPS는 Hypertext Transfer Protocol over Secure Socket Layer의 줄임말이며, HTTP의 보안이 강화된 형태입니다. HTTPS를 사용하면 모든 ‘Request’과 ‘Response’ 데이터가 네트워크로 보내지기 전에 암호화됩니다. 이 암호화 계층은 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)로 구성되어 있습니다.

HTTPS는 통신 내용을 암호화하기 때문에 HTTP에 비해 속도가 느려질 수 있지만, 뛰어난 보안성을 갖습니다.



+ SSL과 TLS
SSL은 Netscape에 의해 개발되었습니다. 폭넓게 사용되다가 국제 표준화 기구인 IETF (Internet Engineering Task Force)에 의해 국제 표준으로 변경되면서 TLS로 이름이 바뀌었습니다. 하지만, 여전히 SSL이라는 이름을 많이 사용합니다.


HTTPS를 이용하려면 SSL 인증서가 필요하며, 이것은 클라이언트와 서버의 통신을 제 3자(인증 기관)이 보증해주는 전자 문서입니다. 클라이언트가 서버에 접속하면 서버는 클라이언트에게 SSL 인증서 정보를 전달하며, 클라이언트는 이 인증서 정보를 신뢰할 수 있는지 검증한 뒤 통신하게 됩니다.

즉, SSL 인증서를 사용하면 사용자가 웹 브라우저에 입력한 개인정보, 로그인 ID, 비밀번호 등을 스니핑(sniffing) 당할 우려가 없으며, 위조 사이트 확인, 데이터 변조 방지와 같은 장점을 갖습니다.


SSL 암호화 방식

SSL을 이해하기 위해서 몇 가지 개념을 알아둬야 합니다. SSL은 두 가지 암호화 방식을 사용합니다. '대칭 암호화'와 '비대칭 암호화' 방식입니다. 이 두 가지 암호화 방식이 사용하는 일종의 비밀번호를 키(Key)라고 합니다. 이 키에 따라 암호화된 결과가 달라지기 때문에 키를 모르면 복호화할 수 없습니다.


대칭 키 암호화 (대칭키)

대칭 키는 동일한 키를 이용하여 암호화와 복호화를 합니다. 예를 들어, 1245 키를 이용해 암호화 했다면 복호화할 때 1245 키가 필요하다는 의미입니다.



대칭 키의 크기는 일반적으로 128 또는 256 비트이며, 키 크기가 커질수록 암호를 해킹하기 어려워집니다. 예를 들어, 128 비트 키가 가질 수 있는 암호 코드는 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 개이며, 무차별 대입 공격(brute-force attack)으로 128 비트 키를 해킹하려면 수 만년이 걸릴 겁니다.


암호 알고리즘

  • AES (Advanced Encryption Standard)
  • DES (Data Encryption Standard)
  • 3DES
  • IDEA (International Data Encryption Algorithm)
  • Blowfish
  • Twofish
  • Serpent
  • CAST5
  • RC4


장점

  • 하나의 키를 사용하기 때문에 메시지나 파일을 혼자 암호화하거나 복호화할 수 있습니다.
  • 키를 하나만 사용하므로 두 개의 키를 사용하는 공개키 방식보다 약 100 ~ 1000배 빠릅니다.
  • 하나의 키 암호화를 사용하기 때문에 시스템 리소스를 덜 사용합니다.


단점

  • 대칭 키를 주고 받을 수 있는 보안 채널이 필요합니다.
  • 전송자와 수신자가 같은 키를 사용하기 때문에 특정 사용자로부터 오는 메시지를 검증할 수 없습니다. 대칭 키를 가진 다른 사용자가 메시지를 중간에 변경하면 원본 메시지를 확인할 방법이 없습니다. 즉, 대칭 키가 유출되면 해킹 당할 수 있습니다.
  • 접속 인원이 많을 경우 키 분배 문제가 발생하여 그 만큼 시스템 리소스를 차지합니다.

+ 무차별 대입 공격(Brute-force Attack)
특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 공격 방법입니다. 대부분의 암호화 방식은 이론적으로 이 공격 방법에 대해 안전하지 못하며, 충분한 시간이 존재한다면 암호화된 정보를 해독할 수 있습니다.


비대칭 키 암호화 (공개 키와 비공개 키)

대칭 키 방식은 하나의 키를 사용하기 때문에 키가 유출될 경우 무용지물이 되며, 이를 방지하기 위해 공개 키 방식이 고안되었습니다.

공개 키 방식은 A 키로 암호화하면 B 키로 복호화할 수 있고, B 키로 암호화하면 A 키로 복호화할 수 있는 방식이며, 두 개의 키(공개 키와 비공개 키)를 사용합니다. 이 두 개의 키는 하나의 쌍으로 동작합니다. 즉, A와 B 키가 하나의 쌍이므로 C 키로 복호화할 수 없습니다.

공개 키는 암호화하여 배포하며, 비공개 키는 공개 키를 배포하는 사람이 가지고 있습니다. 서버와 클라이언트를 예로 들면, 비공개 키는 서버가 가지고 있고, 암호화한 공개 키는 클라이언트에게 제공합니다. 클라이언트는 서버가 보내준 공개 키로 데이터를 암호화하여 서버에 전달합니다. 암호화된 데이터를 서버가 비공개 키로 복호화합니다. 이 과정에서 공개 키가 유출되어도 비공개 키를 모르기 때문에 다른 사람이 복호화를 할 수 없습니다.



공개 키 방식은 데이터를 암호화하여 보호하는 것 이외에 데이터를 배포하는 사람의 신원을 증명하도록 사용할 수도 있습니다. 이 방식은 서버가 자신의 비공개 키를 이용하여 데이터를 암호화하고, 공개 키로 복호화하는 방식입니다. 이 경우, 암호화된 데이터는 공개 키를 가진 누구나 복호화할 수 있지만, 암호화는 서버만 가능합니다. 공개 키로 복호화할 수 있다는 것은 서버가 가진 비공개 키 쌍을 이루는 키라는 것을 의미합니다.

이렇게 비공개 키로 암호화하는 것을 디지털 서명이라고 하고, 클라이언트가 복호화하는 것을 서명 검증이라고 합니다. 즉, 이 방식은 데이터를 보호하는 것이 목적이 아니며, 데이터를 제공한 사람의 신원을 보장하는 방법입니다.


암호화 알고리즘

  • RSA (Rivest-Shamir-Adleman cryptosystem)
  • DSA (Digital Signature Algorithm)


장점

  • 공개 키를 이용하므로 대칭 키를 사용할 때 필요한 보안 채널이 필요하지 않습니다.
  • 두 가지 키를 이용하여 암호화와 복호화를 수행하므로 외부 공격으로부터 안전합니다.


단점

  • 대칭 키 방식보다 약 100 ~ 1000배 느립니다.
  • 대칭 키 방식보다 더 많은 시스템 리소스가 필요합니다.


대칭 키 암호화와 비대칭 키 암호화는 각각의 특별한 장점을 가지고 있지만, 그와 함께 키 전달 문제, 성능과 같은 단점을 갖고 있습니다. 이를 보완하기 위해 하이브리드 암호화 시스템이 개발되었습니다.

SSL 인증서와 하이브리드 암호화 시스템 이용한 통신 방법은 대칭 키 암호화와 비대칭 키 암호화를 결합한 형태입니다.



프로세스

  1. 웹 사이트는 자신의 정보와 웹 사이트의 공개 키를 인증 기관에 제출합니다.
  2. 인증 기관은 웹 사이트 정보와 웹 사이트의 공개 키를 검증한 뒤 인증 기관의 비공개 키로 암호화합니다. 이것이 SSL 인증서입니다.
  3. 인증 기관은 웹 브라우저에게 자신의 공개 키를 제공합니다.
  4. 사용자가 웹 브라우저로 웹 사이트에 접속하면 웹 사이트는 자신의 SSL 인증서를 웹 브라우저에게 전송합니다. 이 SSL 인증서에는 인증 기관의 비공개 키로 암호화한 웹 사이트 정보와 웹 사이트의 공개 키가 들어 있습니다.
  5. 웹 브라우저는 인증 기관의 공개 키로 SSL 인증서를 복호화한 뒤 검증합니다.
  6. SSL 인증서에 포함된 웹 사이트의 공개 키를 이용하여 미리 공유된 키를 암호화하여 웹 사이트로 전송합니다.
  7. 웹 사이트는 웹 브라우저가 전송한 암호화된 미리 공유된 키를 자신의 비공개 키로 복호화하여 미리 공유된 키를 획득합니다. 즉, 웹 브라우저에서 생성한 미리 공유된 키가 웹 사이트에 안전하게 전달되었습니다.
  8. 웹 브라우저와 웹 사이트의 통신은 미리 공유된 키를 이용하여 안전하게 진행됩니다.

* 미리 공유된 키는 대칭 키 암호화를 위해 필요한 키이며 웹 브라우저와 웹 사이트의 통신을 대칭 키로 암호화하기 위해 필요합니다.

HTTPS를 사용하면 SSL 인증서를 이용하여 강력한 보안을 제공합니다. BioStar 2는 HTTP와 HTTPS를 모두 지원하며, HTTPS 네트워크에서 사용할 수 있는 인증서를 제공합니다. 이 인증서는 BioStar 2 API를 이용한 어플라이언스 개발 용도로 사용할 수 있으며, 공식 인증 기관에서 서명한 인증서는 아닙니다.

공식 인증 기관에서 서명한 SSL 인증서를 구매하여 HTTPS를 사용하면 한층 더 강력한 보안과 함께 BioStar 2를 사용할 수 있도록 도와줄 것입니다.


+ 인증 기관
인증 기관의 종류는 위키피디아에서 확인할 수 있습니다.
https://en.wikipedia.org/wiki/Certificate_authority