대다수의 사람들이 컴퓨터를 이용해 업무를 처리하고 그 컴퓨터들이 네트워크를 통해 서로 연결되면서 사람들 사이의 거래도 컴퓨터간의 통신을 통해 처리하는 비율이 상당히 높아지게 되었다. 또한 금융거래정보 등과 같은 민감하고 중요한 개인정보들도 컴퓨터와 네트워크를 통해 수집, 저장, 전송되는 일이 흔히 발생하게 되면서 정보를 안전하게 보호하는 영역이 중요한 학문의 하나로 대두되었다.
정보통신(情報通信, telecommunication)의 한 분야로서 정보보호(情報保護, information security)를 정의한다면 ‘컴퓨터나 네트워크상의 범법행위로부터 정보를 보호하는 것에 관한 연구를 하는 학문’이라고 할 수 있다. 그런데 정보를 보호한다고 하면 사람들은 흔히 정보가 유출되는 것을 막는 것만을 생각한다. 그러나 정보보호는 그것 이상의 개념이다. 정보가 안전(security)하다는 것은 보호대상이 되는 정보의 기밀성(confidentiality), 무결성(integrity) 그리고 가용성(availability)의 세 성질이 모두 만족되어야 한다는 것을 의미한다.
기밀성이란 비밀이 유지되어야 하는 것을 뜻한다. 즉, 허가받지 않은 대상에게는 정보가 제공되어서는 안 된다는 것을 의미한다. 보통 사람들이 생각하는 정보보호는 기밀성에 한정되어 있는 경우가 많다. 무결성이란 정보가 정확해야 한다는 것을 말한다. 이는 정보가 허가 없이는 수정될 수 없도록 하는 것으로 달성할 수 있다. 가용성은 허가된 접근의 경우, 정보에 대한 접근이 가능해야만 한다는 것을 말한다. 서비스 거부 공격(DoS: Denial of Service attack)이 가용성을 공격하는 대표적인 공격이다.
이외에도 부가적으로 인증(authentication)과 부인방지(non-repudiation)를 정보보안의 범위에 추가할 수 있다. 인증이란 신분을 확인하는 것으로 접근하는 대상이 자신이 주장하는 신분이 맞는지 증명하는 것이다. 가장 보편적인 인증의 예로 아이디(ID)와 암호(password)로 로그인하는 것이 있다. 부인방지는 부인봉쇄라고도 하는데 본인이 만들어 보낸 메시지를 나중에 본인이 만들지 않았다고 부인할 수 없게 하거나 메시지를 수신하고서도 수신하지 않았다고 부인할 수 없도록 하는 것, 또는 본인이 디지털 서명을 하고나서 나중에 서명하지 않았다고 말 할 수 없도록 조치를 하는 것이다.
정보보호의 역사는 고대 그리스나 로마 시대까지 거슬러 올라가게 된다. 그리스인의 양피지를 이용한 암호장치나 세 자리 뒤의 알파벳을 사용하여 메시지를 작성했다는 유명한 로마 시저의 암호문 등이 그것이다. 근대에 들어서서는 독일이 만들어 제2차 세계대전에 사용했던 것으로 유명한 에니그마(enigma)라는 암호화 장치가 있다. 에니그마에 의한 암호화의 해독은 연합군이 전쟁에서 유리한 위치를 점하는데 크게 도움이 되었을 뿐 아니라 이때의 연구가 나중에 컴퓨터의 발명 및 발전에도 큰 영향을 주었다.
컴퓨터의 시대가 되면서 암호학은 더욱 발달하여 현재는 대칭키 암호화, 비대칭키(공개키-개인키 쌍) 암호화와 일회용 비밀번호(OTP: One Time Password) 등 다양한 암호화 방식 및 암호화 응용 서비스들이 개발되어 사용되고 있다.
1986년에는 DOS운영체제에서 동작하는 개인용 컴퓨터를 감염시키는 (c)브레인이라고 하는 컴퓨터 바이러스가 등장했다. 초기의 바이러스는 별다른 피해를 주지 않고 특정한 메시지를 출력하는 정도에 그치는 경우가 많았으나 이후 컴퓨터의 파일들을 삭제하거나 아예 컴퓨터의 파일 시스템을 파괴하여 시스템을 못 쓰게 만들어 버리는 악성 바이러스들이 대량으로 출현하게 되었다. 또한 바이러스의 종류도 다양하게 분화하여 시스템에 숨어 있다가 동작하는 트로이 목마나 자기 스스로를 복제하는 웜과 같은 종류도 출현하게 되었다. 이들은 흔히 시스템을 원격조정하거나 패스워드, 키보드 입력값 등을 가로채 전송하는 등 시스템 및 사용자에게 막대한 피해를 줄 수도 있는 기능을 가지고 있다. 이에 따라 바이러스를 제거하고 나아가 방어하는 백신 소프트웨어들이 활발하게 개발, 사용되고 있다.
최근에는 네트워크를 통한 접속에 의한 침입이 큰 문제가 되므로 이를 막는 방화벽(firewall)이나 침입탐지 시스템(IDS: Intrusion Detection System) 또는 침입방지 시스템(IPS: Intrusion Prevention System) 등이 개발되어 보안에 큰 역할을 하고 있다.
암호학(暗號學, cryptography)은 정보를 보호하기 위해 아무나 읽을 수 있는 평문을 특별한 지식을 소유한 사람만 읽을 수 있도록 암호문으로 바꾸는 작업과 관련된 수학적 방법론을 연구하는 학문이다. 이때 암호문으로 바꾸는 작업을 암호화(encryption)라하고 암호문을 다시 평문으로 바꾸는 일을 해독(decryption)이라고 한다. 암호화는 예로부터 주로 군사적인 목적에 따라 주로 연구되어 왔으나 최근에는 기업과 개인의 정보를 보호하기 위해 암호화가 필수적인 것으로 자리 잡고 있다.
암호화과정은 아무 처리를 하지 않은 평문을 입력으로 받아 암호문을 출력하는 함수(function)이라고 이해할 수 있다. 이때 함수를 암호화 알고리즘이라고 부른다. 여기에 그친다면 함수의 알고리즘만 안다면 암호문을 이용해 평문을 유추하는 것이 가능할 것이고 이는 암호화의 의미가 없다는 것을 의미한다. 하지만 암호화에는 키(key)라는 한 가지 입력이 더 존재한다. 암호화 알고리즘은 입력되는 평문과 키를 이용해 암호문을 만드는데 키를 다르게 하면 암호화 결과는 판이하게 달라지고 키 없이는 알고리즘을 알고 있다고 하더라도 암호문에서 평문을 얻는 것이 불가능한 성질을 가지고 있다.
이때 암호화를 하는 데 사용되는 키와 해독하는 데 사용하는 키가 동일하다면 이를 대칭키 암호화라고 부른다. 따라서 대칭키 암호화를 이용하려면 암호화하여 전송하려는 측과 암호문을 수신하여 해독하려는 측이 이미 키를 분배하여 가지고 있어야 한다. 키를 분배하는 안전한 방법이 고안되지 않는 한 미리 공통된 비밀키를 가지고 있지 못한 상대와는 대칭키를 이용한 통신이 어렵게 된다. 때문에 키를 배포하는 보안 프로토콜의 개발이 정보보호 분야에서 매우 중요한 연구 분야의 하나가 되고 있으며 개발된 프로토콜이 정말 안전한지를 검증하는 것도 중요 연구 대상 중의 하나이다.
비대칭키 암호화로는 공개키(public key) 암호화가 있다. 공개키란 모든 사람에게 공개되어 있는 사용자의 암호키를 말한다. 대칭키 방식과는 달리 공개키로 암호화하여 생성된 암호문은 개인키(private key)를 사용해야 해독이 된다. 반대로 개인키로 암호화된 암호문은 공개키를 사용하면 해독이 된다. 사용자는 자신의 공개키는 모든 이에게 공개하고 자신의 개인키는 자신만이 알도록 비밀로 해야 한다. 공개키 암호화는 키를 배분하는 문제가 해결되므로 누구와도 암호화를 이용한 통신이 가능하다는 장점이 있다. 하지만 공개키 암호화는 상대적으로 복잡한 수학적 연산을 요구해 대칭키 암호화보다 시간이 훨씬 더 많이 걸린다는 단점이 있다.
공개키 암호화를 이용해 대칭키를 분배하는 프로토콜을 사용하면 송수신 양측이 대칭키를 안전하게 공유하게 되어 신속한 암호화 통신이 가능해 진다. 공개키 암호화의 가장 대표적인 예는 미국의 로널드 린 라이베스트(Ronald Linn Rivest), 아디 샤미르(Adi Shamir), 레너드 맥스 애들먼(Leonard Max Adleman)의 세 사람이 개발한 RSA(Rivest Shamir Adleman) 암호가 있다. 그 외에도 공개키의 예로는 Rabin 알고리즘이나 타원곡선 암호 시스템(ECC: Elliptic Curve Cryptosystem) 등이 있다.
한편 대개의 암호화는 특정한 사이즈의 평문에 대해 알고리즘을 적용하여 암호화하게 되는데 이를 블록(block) 암호화라고 부른다. 블록 암호로서 최초의 표준은 미국에서 1977년 개발한 DES(Data Encryption Standard) 암호이다. DES는 56비트 길이의 키를 사용하여 64비트의 평문을 암호화하는 알고리즘이다. 암호화를 공격하는 대표적인 방법이 모든 가능한 키를 대입하여 해독을 시도하는 것인데 개발 당시의 컴퓨팅 능력으로는 DES에 대해 이 공격을 하려면 수억 년이 걸리는 것으로 예측되어 DES는 매우 안전한 암호화 방식으로 인정되었다고 한다.
하지만 컴퓨팅 능력에 발전에 따라 안전이 염려가 되어 DES를 3중으로 적용하여 보안성을 강화하여 사용하기도 했으나 현재의 개인용 컴퓨터로도 해독이 가능한 것으로 알려져 있다. 이에 새롭게 개발된 방식이 AES(Advanced Encryption Standard)이다. AES는 128비트 길이의 키를 사용하여 역시 128비트 블록의 평문을 암호화한다. 현재의 컴퓨팅 속도로는 키없이 AES를 해독하는 것은 시간상 거의 불가능한 것으로 알려져 있다. AES는 현재 미국 연방 정보 처리 표준(FIPS-197) 암호화 방식으로 공포되어 있다. 한편 암호화 키의 길이가 256비트인 AES-256도 개발되어 있다.
네트워크 보안이란 공격자가 TCP/IP 등 통신 프로토콜의 다양한 취약점을 이용하여 허가되지 않은 네트워크 자원에 접근하거나 그 자원을 파괴하거나 또는 그 자원의 사용을 방해하는 것을 방어하는 행위를 말한다. 최근 종종 신문에 오르내리는 서비스 거부 공격(DoS: Denial of Service attack) 또는 분산 서비스 거부 공격(DDoS: Distributed Denial of Service attack)에 대한 방어도 네트워크 보안의 한 부분이다.
서비스 거부 공격이란 네트워크상에서 서비스를 제공하는 서버를 공격하여 서비스를 제공하지 못하는 서비스 불능 상태에 빠지게 만드는 것을 말한다. 이 공격은 서버가 수용, 처리할 수 있는 한도를 넘는 서비스 요청을 보내거나(SYN flooding 공격, mail bomb 공격), 규정된 것과 다른 비정상적인 패킷을 보내거나(ping of death 공격) 또는 하나의 서버에 엄청난 양의 패킷을 전송하여 서버는 물론 네트워크를 마비시키는 등의 방법(DDoS)을 사용한다. 연구자들은 이런 공격을 방어하기 위해 서버의 운영체제를 개량하고 침입방지 시스템(IPS, Intrusion Prevention System)을 개발, 적용하고 피해자이자 DDoS 공격의 공범인 좀비(Zombie)PC1)들을 발견, 치료하기 위한 백신의 개발 등을 연구하여 서비스 거부 공격에 대응하고 있다.
이외에도 네트워크 보안을 위협하는 공격으로는 다른 사람들 간의 통신 패킷을 도청하는 스니핑(sniffing), 자신의 IP주소2)를 속이는 IP 스푸핑(spoofing) 또는 DNS 서버3)를 가장하여 사용자에게 가짜 IP주소를 알려주는 DNS 스푸핑, 이미 연결되어 있는 정상적인 통신연결을 가로채서 정당한 사용자처럼 행세하며 상대로부터 정보를 수신하는 세션가로채기 등과 같은 다양한 공격이 존재한다. 연구자들은 이런 다양한 공격에 대응하는 방어수단을 강구하게 되는데 알고리즘 및 프로토콜의 개선 등이 그 주된 방법이라고 할 수 있다.
보안은 기본적으로 공격에 대한 방어이기 때문에 새로운 공격방법이 등장하면 그에 대한 방어책을 연구, 개발해야 하는 것이 연구자의 책임이다. 따라서 보안분야의 연구자는 컴퓨터와 네트워크에 관련하여 누구보다 폭넓고 깊은 지식을 갖추어야 함을 물론이거니와 나날이 새롭게 등장하는 공격방법에 대해 끊임없는 연구를 지속할 성실함과 열정을 가지고 있어야 한다.
시스템 보안은 공격자의 허가되지 않은 불법적인 시스템 접근을 막아 시스템에 저장된 정보와 시스템의 정상적인 운용을 보호하는 활동을 말한다. 기본적으로 시스템의 사용자 관리, 파일 시스템 관리, 로그 관리 등과 같은 기본 관리 등이 철저히 이루어져야 한다. 시스템을 공격하는 방법으로는 패스워드 크래킹(password cracking), 백도어(backdoor), 버퍼 오버플로우(buffer overflow) 등이 있다.
‘L0phtCrack’이나 ‘Jonh the ripper’와 같은 프로그램은 사전 파일을 사용한 무작위 대입법(brute force attack)을 실시해 패스워드를 알아낸다. 현재 고급 사양의 PC를 사용하여 공격할 경우 영어 단어를 사용한 패스워드라면 수분에서 수시간 내에 알아내며 영어 문자와 숫자 및 기호 등을 섞어서 8자 이상을 사용하여 만든 경우에는 수개월이 걸린다고 한다. 보안전문가들은 이에 따라 안전한 패스워드는 다음과 같은 요건을 만족해야 한다고 권고한다. 패스워드는 영문 대문자, 소문자, 숫자 및 기호를 조합하여 8자 이상으로 만든다. 다만, 일반적인 단어나 생일, 전화번호 등 사용자와 관련된 정보를 사용해선 안 된다. 그리고 3개월마다 패스워드를 변경해야 한다.
백도어(backdoor)란 공격자가 자신만이 알도록 시스템에 몰래 설치해 놓은 비밀 출입구를 말한다. 백도어는 정상적인 로그인 절차를 거치지 않으므로 시스템의 로그에 기록되지 않는다. 따라서 공격자는 시스템의 관리자나 사용자가 모르게 시스템을 출입하거나 그 시스템을 원격접속하여 사용할 수 있게 된다. 백도어는 컴퓨터 웜을 통하거나 운영체제의 취약점 등을 통해 설치될 수 있다. 연구자들은 새롭게 발견되는 백도어가 있을 때 이의 감염경로와 작동 원리에 대해 연구하고 이를 막거나 감염된 시스템을 치료하는 백신 프로그램을 개발하거나 백도어 제거를 위해 수동으로 취할 수 있는 방법을 연구하여 인터넷 등을 통해 대중에게 발표하고 있다.
버퍼 오버플로우(buffer overflow)는 소프트웨어가 컴퓨터의 메모리에서 동작할 때 메모리의 관리에 허점이 있어 잘 못 동작하게 되는 취약점을 이용한 공격이다. 원래 운영체제는 하나의 프로세스4)가 그에게 허용된 메모리 공간에서만 동작하도록 해야 한다. 즉, 특정 프로세스는 그 프로세스에 할당되어 사용이 허가된 특정 메모리 영역 내에서만 읽고 쓰기를 할 수 있어야 한다. 그런데 소프트웨어를 만드는데 사용된 어떤 함수들은 이 부분이 허술하게 작성되어 있어서 할당된 영역 밖의 메모리 공간에도 쓰기를 하는 경우가 있다. 이때 공격자는 이를 교묘히 이용하여 악성코드가 시스템의 관리자 권한으로 실행되게 하는 등의 공격을 실행할 수 있다. 연구자들은 버퍼 오버플로우 공격을 방어하기 위해 버퍼관리를 강화한 운영체제를 개발하고 버퍼 오버플로우 공격에 안전한 라이브러리를 개발하여 배포하고 이의 사용을 권장하는 등의 활동을 통해 시스템을 보호한다.
시스템에 대해 발생할 수 있는 공격들은 위의 내용보다 더 여러 종류가 존재하면 시스템을 안전하게 설정하는 방법은 운영체제마다 다를 수밖에 없고 내용도 매우 복잡하고 많아서 시스템 보안의 연구영역은 매우 방대하다고 할 것이다.
인터넷을 통해 제공되는 서비스는 매우 다양하다. 그런데 그 중에서 가장 큰 비중은 이견의 여지없이 웹서비스일 것이다. 그렇기 때문에 웹보안을 정보보호의 한 분야로 기술하는 것이 큰 무리가 없다고 판단된다. 웹서비스는 그 특성상 불특정 대상에게 널리 제공되어야 하는 것이므로 악의를 가진 공격자에게도 접근을 허용할 수밖에 없다. 그러므로 웹서버를 운영할 경우 사용하는 웹서버 소프트웨어에 따라 보안 설정을 세심히 하는 것이 필요하다. 많이 사용하는 웹서버로는 마이크로소프트사의 IIS(Internet Information Server)와 아파치 소프트웨어 재단의 아파치가 있는데 각 웹 서버의 보안 설정 방법은 그 내용이 매우 방대하므로 여기에서는 생략하도록 한다. 웹서비스에 대한 공격의 예로는 SQL삽입공격과 XSS(Cross Site Scripting) 등이 있다.
웹페이지에는 사용자가 텍스트를 입력하여 서비스를 요청하게 하는 텍스트필드(text field)라는 영역이 있는 경우가 흔하다. 대개의 경우 서버는 텍스트필드에 입력한 텍스트를 키워드로 하여 데이터베이스에 질의를 하게 된다. 사용자가 텍스트필드에 일반 텍스트만을 입력할 것이라고 막연히 전제하고 웹을 만드는 경우, 텍스트필드에 데이터베이스 처리 명령인 SQL문을 삽입했을 때 그 SQL문이 그대로 실행되는 경우가 발생할 수 있다. 이것이 이루어지는 것이 SQL 삽입 공격이다. 결과 패스워드를 입력하지 않고도 로그인이 가능하게 된다든지, 또는 데이터베이스에 저장되어 있는 데이터를 모두 지워버리거나 모두 출력하게 되는 작업이 허가받지 않은 사람에 의해 가능하게 된다. 웹서비스에서 발생할 수 있는 이런 위험성을 찾아내고 이를 방지하는 방안을 강구하는 것도 정보보호 연구의 주요 대상이 된다.
• 기밀성(confidentiality): 정보가 허가받지 않은 사용자에게 제공되어서는 안 되는 성질을 말한다.
• 무결성(integrity): 정보가 허가받지 않은 사용자에 의해 수정, 변경되어서는 안 되는 성질을 말한다.
• 가용성(availability): 허가된 접근의 경우에는 정보가 적절히 제공되어야 하는 성질을 말한다.
• 인증(authentication): 접근하는 대상이 주장하는 신분과 맞는지 확인하는 것이다.
• 부인방지(non-repudiation): 본인이 한 행위에 대해 부인할 수 없도록 하는 조치이다.
• 방화벽(firewall): 네트워크에서 설정에 따라 원하지 않는 접근은 차단하고 원하는 접근만 허용해 주는 장치이다.
• 침입탐지 시스템(IDS, Intrusion Detection System): 네트워크나 시스템에서 발생하는 악의적이거나 수상한 접근을 감시하고 이를 시스템 관리자에게 보고하는 장치이다.
• 침입방지 시스템(IPS, Intrusion Prevention System): 네트워크나 시스템에서 발생하는 악의적이거나 수상한 접근의 위험을 미리 감지하고 이에 대한 조치를 자동으로 취하는 장치이다.
• 프로토콜(protocol): 통신을 하는 당사자들이 지켜야 하는 규약이다.
• 알고리즘(algorithm): 어떤 문제를 해결하기 위한 절차 또는 방법을 말한다.
• 평문(plaintext): 누구나 읽어 낼 수 있는 정보이다.
• 암호화(encryption): 특별한 지식을 가지고 있는 사람만 읽어 낼 수 있도록 평문을 변환하는 것을 말한다.
• 암호문(ciphertext): 암호화된 정보를 의미한다.
• 공개키(public key): 모든 사람들에게 공개되어 있는 사용자의 암호키이다. 공개키로 암호화한 정보는 개인키로 해독된다.
• 개인키(private key): 자신만이 알고 있는 사용자의 암호키이다. 개인키로 암호화한 정보는 공개키로 해독된다.
• 백도어(backdoor): 정상적인 절차를 거치지 않고 로그인이 가능하도록 공격자가 시스템에 몰래 설치해 놓은 출입구이다.
• 정보보안공학자(정보통신공학과, 컴퓨터공학과 등의 대학 교수)
• 정보보안공학연구원(한국전자통신연구소, 기업연구소 등)
• 보안회사 엔지니어(백신개발회사, 보안장비 판매 및 운영 회사)
• 정보보안 전문가
• 컴퓨터 네트워킹 관련 회사의 엔지니어
출처 : [네이버 지식백과] 정보보호 [Information Security] (학문명백과 : 공학, 형설출판사)