다른 사람의 컴퓨터에 들어가 피해를 발생시키는 부정한 프로그램
정의에 따르면, 다음 세 가지 기능 중 하나 이상을 가지고 있다.
자기 전염 기능
: 스스로를 다른 시스템에 복사하여 전염시키는 기능잠복 기능
: 발병하기 위한 조건을 기억하고 그때까지 증상을 발생시키지 않는 기능발병 기능
: 프로그램이나 파일을 파괴하는 등 사용자가 의도하지 않은 동작을 하는 기능
좁은 의미의 바이러스는 숙주가 되는 프로그램 파일이 실행되어 감염 대상을 넓히는 것을 가리킴
웜
: 이라는 종류의 바이러스는 이런 매체를 거치지 않고 인터넷 등의 네트워크를 통해 무방비인 컴퓨터를 찾아내서 감염 활동을 실시한다.
트로이 목마
: 라는 종류의 바이러스는 얼핏 보면 소프트웨어인 것 같지만 실제로는 뒤에서 개인 정보를 빼내는 등 시스템에 부정한 동작을 수행한다.
네트워크에서 통신할 때는 데이터가 도청당할 위험이 존재하는데, 도청되어도 내용을 모르게 데이터의 내용을 제 3자가 알 수 없는 형태로 변환하는 것을 암호화라고 한다.
예를 들어, abcde를 보낼 때 맨 뒤 글자를 맨 앞으로 보낸다는 규칙으로 eabcd로 보내면(암호화) 중간에 이 글을 본 사람은 의미를 모른다. 받을때는 맨 앞 글자를 맨 뒤로 보내면 되는데(복호화), 이러한 규칙을 키
라고 부른다.
위와 같이 암호화하는 쪽과 복호화하는 쪽이 같은 키를 공유하여 실시하는 암호화 방식으로, 대칭키 암호화 방식이라고도 한다.
이 방식은 통신 상대의 수만큼 비밀 키가 필요하므로 키 관리가 힘들고, 비밀 키를 어떻게 상대에게 보낼지도 문제이다.
암호화와 복호화에 서로 다른 키를 사용한다.
먼저 수신자는 개인 키(비밀 키)와 공개 키 쌍을 갖는다. 공개 키는 널리 공개해도 상관없는 키로, "자신에게 데이터를 보낼 때는 이것으로 암호화 해주세요" 라고 송신자에게 건네준다. 비밀 키가 아니면 복호화할 수 없으므로 도청의 우려는 없다.
비밀 키 암호화 방식에 비해 상당한 처리 시간이 필요하다. 그래서 HTTPS에서 사용하는 SSL은 우선 공개 키 암호화 방식을 통해 비밀 키를 서로 공유하고 이후엔 비밀 키 암호화 방식에 의해 통신이 수행된다.
도청뿐만 아니라 데이터 변조, 애초에 신분 도용등의 위험성도 있다. 디지털 서명은 발신자의 정당성과 내용의 확실성을 증명하기 위한 서명 기술이다.
디지털 서명은 송신 데이터에 해시 함수를 사용하여 메시지 다이제스트(message digest)라는 짧은 요약 데이터를 작성한다.(해시화) 송신자는 이를 자신의 비밀 키로 암호화한 후 송신한다.
공개 키 암호화 방식과 마찬가지로, 비밀 키에 의해 암호화한 것은 공개 키가 아니면 복호화 할 수 없다.
즉, 받은 사람이 메세지 다이제스트를 송신자의 공개 키를 이용해 복호화 할 수 있다면 '공개 키의 소유자가 보내 온 데이터'라는 사실이 증명된다.
다음으로, 복호화 결과인메세지 다이제스트와 원래 받은 데이터에서 생성한 메세지 다이제스트를 맞춰서 일치하면 '데이터가 변조되어 있지 않다'는 점이 증명된다.
Certification Authority(인증 기관)
공개 키와 비밀 키 한 쌍 자체가 가짜일 수 있다는 문제도 있다. "이 공개 키는 확실히 본인의 것이다" 라는 증명이 필요한데, 이를 수행하는 것이 CA이다.
증명을 받을 서버는 공개 키를 CA에 등록한다. CA는 이것의 메시지 다이제스트를 만들고 이를 자신의 개인 키로 암호화하여 디지털 서명을 만든다. 이 서명과 등록된 공개 키를 세트로 디지털 증명서를 발행한다.
클라이언트가 서버에 대한 연결을 요청하면 서버는 디지털 인증서를 보낸다. 클라이언트는 인증서에서 CA의 디지털 서명 부분을 CA의 공개 키로 해독하고, 서버의 공개키와 CA가 만든 메세지 다이제스트가 일치하면 CA에 의해 보증되는 올바른 키라고 간주한다.
소셜 엔지니어링
: 사람의 심리적 부주의를 이용해 정보 자산을 훔치는 행위. 입력하고 있는 비밀번호를 어께 너머로 훔쳐보기, 네트워크 관리자를 사칭, 사무실 쓰레기통을 뒤져서 유용한 정보를 훔치기 등이 있다.
침입
: 특정 컴퓨터에 대해 액세스 권한이 없는 사람이 인터넷이나 LAN을 통해 칩입하는 행위