Computer Science/IGCSE Computer Science

1.2.2 Security aspects 컴퓨터 보안

공부할 것이 많구나 2020. 3. 25. 22:21
Candidates should be able to:
• show understanding of the security aspects of using the Internet and understand what methods are available to help minimise the risks
• show understanding of the Internet risks associated with malware, including viruses, spyware and hacking
• explain how anti-virus and other protection software helps to protect the user from security risks

참고: 이 글은 IGCSE의 computer science과목을 토대로 작성되었다. IGCSE는 고등학생을 대상으로 하는 교육과정이기 때문에, computer science 내용의 깊이가 얕다. 따라서 computer science에 대해 더 공부하고 싶다면 책을 찾아보거나 검색(in English)을 해보기 바란다. 물론 내게 질문을 해도 된다. 내가 아는 한에서 최선을 다해 답변을 할 것이다. 

 

인터넷과 모바일 기술의 발전으로 우리는 언제 어디서나 인터넷을 사용할 수 있게 되었다.

하지만 그만큼 우리의 개인정보가 범죄에 이용되지는 않을까 하는 걱정도 늘었다.

이 글을 통해 정보 보안에 관해 간단히 배워보자.

우선 정보 보안을 위협하는 공격에 대해 알아볼 것이고, 다음으로 이에 대한 대응책에 대해 배울 것이다.

 

1. Malware 

악성 소프트웨어(malware or malicious software)는 컴퓨터 시스템 파괴 등 나쁜 의도를 가지고(maliciously) 만들어진 소프트웨어이다. 악성 소프트웨어를 악성 프로그램이나 악성코드라고 부르기도 한다. 

이러한 악성 소트트웨어는 shareware를 사용하거나 P2P를 이용하거나 불법 복제 프로그램을 사용할 때 주로 침투한다. 웹 페이지 검색이나 이메일에 첨부된 파일을 통해 침투하는 경우도 있다.

 

Malware에는

- Virus

- Worm (Virus와 달리 독립적으로 자기 복제를 실행해 번식하는 malware)

- Trojan horse

 (정상적인 프로그램으로 가장해 있다가 프로그램이 실행될 때 활성화되어 백도어를 만드는 malware

   트로이 목마가 만든 백도어를 통해 해커가 침입해 자료삭제, 정보탈취를 한다. )

- Spyware

- Ransomware (컴퓨터 시스템을 감염시켜 접근을 제한하고 이를 없애는 대가로 돈을 지불할 것을 요구하는 malware)

등이 있다. 

 

Virus

바이러스의 시국이다.

컴퓨터 바이러스는 1949년에 폰 노이만이 논문을 통해 '프로그램이 자기 자신을 복제하여 증식할 수 있다'는 가능성을 제시한 것에서 유래했다고 한다.

바이러스는 컴퓨터 프로그램에 기생하면서, 자신 또는 변형된 자신을 복사한다. 

따라서 바이러스의 main tasks는 다음의 두 가지이다.

1. Hides

바이러스는 탐색을 피해 자기 자신을 숨긴다.

예를 들면, 가짜 이름을 사용하는 등의 수법을 통해 다른 파일에 숨어 들어간다.

2. Replicates 

바이러스는 점점 증식해 이를 삭제하기 어렵게 만든다.

심지어는 바이러스가 다른 컴퓨터로 퍼지기도 한다.

 

바이러스에 대해 더 알아보고 싶은 사람을 위해 다음 글을 소개한다.

바이러스의 역사에 대해 다룬 글로, 안철수 연구소에서 쓴 것이다.

https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=3&seq=7500

Spyware

Spyware는 사용자의 컴퓨터에 몰래 숨어 있다가 정보를 빼가는 malware이다.

Spyware는 주로 개인 및 시스템정보, 인터넷 사용 습관 등의 정보를 빼간다.

이렇게 빠져나간 정보는 마케팅을 위해 이용되기도 하지만, 전자금융범죄에 이용되기도 한다. 

실제로 유명인을 타겟으로 한 spyware가 만들어지기도 한다. 

유명인이 아닌 보통 사람의 기기도 spyware의 공격을 자주 받는다. 

 

쿠키(Cookie)는 사용자가 어떤 홈페이지에 접속할 때 생성되는 임시파일이다.

웹 사이트에서 사용되는 쿠키에는 필수적인 쿠키가 있고 그렇지 않은 것이 있다.

웹 사이트 이용을 위해 필수적인 쿠키는 이용자의 동의 없이 활성화된다.

하지만 기능 쿠키(지역 및 언어 등 접속자 설정을 저장함), 성능 쿠키(오류 수집 및 보고에 쓰임), 마케팅 쿠키(유저의 웹사이트 방문 내역을 추적)는 이용자의 동의를 필요로 한다.

 

많은 스파이웨어가 쿠키를 이용해 사용자의 데이터를 외부로 보낸다.

 

다음 글은 쿠키에 대해 질문자와 같은 궁금증을 가진 사람을 위해 링크를 남겨둔다.

https://www.quora.com/Why-are-the-Browser-cookies-called-Cookies

 

2. Protection

Anti-Virus Software

Malware library를 이용해 시스템에 있는 악성 코드를 찾아내고, 가능하면 이를 삭제한다.

 

Firewalls

방화벽(firewall)은 화재 발생 시 불이 번지지 않도록 차단한다. 

컴퓨터 분야에서 방화벽이란 외부의 공격으로부터 시스템을 보호하고, 내부 정보의 유출을 막는 역할을 하는 하드웨어와 소프트웨어를 말한다. 

방화벽을 사용하면 컴퓨터 내부에서 외부로, 외부에서 내부로 이동하는 모든 정보의 출입 규모, 즉 트래픽(인터넷상에서 송수신 되는 모든 통신의 양)을 모니터할 수 있다.

따라서 모든 정보가 방화벽을 통해 출입해야 하므로 통신 속도가 느려진다는 단점이 있긴 하다.

방화벽은 패킷 필터링(packet filtering)방식과 응용 게이트웨이(application gateway)방식이 있다.

이 두 가지 방화벽의 작동 원리를 아주 간단하게 배워보자.

 

1. 패킷 필터링

 

패킷 필터링에 대한 설명을 읽기 전에 먼저 알아야 하는 것이 있는데, 

TCP/IP에 대해서는 1.2.3 Internet principles of operation 참고하기 바란다. 

OSI 7계층에 대해서는 이 글을 참고하기 바란다.

(tip: OSI 7계층은 아래부터 'Phy-Da-Ne-T-Se-P-A', '피다넷 세파'로 외우면 된다.)
(OSI는 공부하지 않고 넘어가려고 했는데, 방화벽을 공부하려면 정의와 각 단계정도는 알아야 할 것 같았다.)

 

위에서 소개한 두 개의 글을 읽고, 다음의 설명을 읽기 바란다.

패킷이란 데이터의 묶음이다.

패킷 필터링은 TCP/IP 프로토콜을 사용하는 네트워크에서 3계층인 네트워크 계층과 4계층인 전송 계층을 대상으로 패킷을 분석한 후, 허가되지 않은 패킷의 송수신을 막는다.

주로 송신자와 수신자의 IP 주소와 포트 주소를 분석하여 네트워크 접근을 허용할지 말지 결정한다.

비허가된 IP 주소를 가진 패킷은 거부하는 식으로 말이다. 

즉, 패킷 필터링 방식은 네트워크를 통해 들어오는 패킷에 대해 사전에 관리자가 설정해높은 보안 규칙(ACL, Access Control List, 접근 제어 목록)을 통해 데이터 송수신을 관리하는 수동적인 방화벽이다.

 

이 방식은 다른 방식에 비해 비교적 속도가 빠르고 설치가 쉽다.

하지만 3, 4 계층 상위의 응용 계층에서 발생하는 데이터 전송에 대해서는 파악하지 못한다는 단점이 있다. 

 

2. 응용 게이트웨이

 

응용 게이트웨이는 기업이나 학교 등에서 많이 쓰이며, OSI 모델의 Application layer에서 작용한다. 

응용 게이트웨이 방식에서는 내부 네트워크와 외부 네트워크의 연결이 proxy server를 통해 이루어진다.

 

 

만약 내가 응용 게이트웨이 방화벽을 설치했다면 A라는 페이지에 대한 접속은 다음과 같은 과정을 거쳐 이루어진다. 

  1. 내가 A라는 도메인을 웹 브라우저에 입력한다.

  2. 요청이 프록시 서버로 전달된다.

  3. 프록시 서버는 우선 A의 인덱스 페이지를 가지고 있는지 체크한다.

  4. 가지고 있지 않다면 외부회선을 통해 A홈페이지가 있는 서버와 연결하여 인덱스 페이지를 가져온다.

  5. 가지고 있다면 A 홈페이지가 있는 서버에게 자신이 가진 페이지가 최신 버전인지 확인한다.

  6. 최신이 아닌 경우에는 새로 갱신된 부분을 가져온다.

  7. 가져온 페이지를 나에게 전송한다.

이와 마찬가지로, 외부에서 proxy 내부의 서버에 접근하려고 할 때 외부와 직접적으로 연결되는 것은 proxy server이지 내부의 서버가 아니다.
따라서 응용 게이트웨이 방식의 방화벽을 이용하면 외부 네트워크로부터의 공격을 보다 잘 막을 수 있다.

범죄단의 대장은 직접 움직이지 않고 아랫 사람을 시키기 때문에 발각될 위험이 비교적 낮은 것처럼 말이다.

왜 이런 예시밖에 생각이 안나는 것인지 모르겠다.

어쨋든 proxy를 이용한 firewall은 일종의 대리인을 고용하는 것이다.

 

이 방화벽은 음란 사이트 등 유해 사이트를 차단해야 하는 경우, 내부 사용자 IP 주소를 사설 IP 주소로 설정하여 보안을 강화해야 하는 경우, 외부의 침입을 방지해야 하는 경우에 유용하다. 

위의 그림은 학교 컴퓨터로 페이스북 접속을 막는 예이다.

 

보안을 위한 것은 아니지만 학교 도서관의 proxy에 대해 잠깐 이야기하면, 이것 역시 원리는 같다.

우리 개개인은 학술 DB 서비스의 구독자가 아니기 때문에 DB를 볼 수 없다. 

하지만 proxy를 이용해 접근하면 학술 DB 서버에 information을 요청하는 것은 우리의 pc가 아니라 학교(구독자이자 대리인)이기 때문에 information 요청을 허가한다. 
그리고 우리가 요청한 information을 proxy server가 우리에게 전달해준다.

학교 wifi를 이용할 경우 IP주소가 학교 내부 IP로 나타나기 때문에 proxy를 이용하지 않고 바로 DB에 접속해도 되는 것이다. 

 

Encryption

1. Symmetric Key Encryption

대칭키 암호화(비밀키 암호화, secret key encryption이라고 하기도 한다) 방식에서는 송신 측과 수신 측에서 동일한 암호키를 이용하여 데이터를 암호화한다. 

송신자가 평문을 암호 알고리즘을 이용해 암호화한 후 송신하면, 수신자는 같은 암호 알고리즘을 이용해 암호문을 복호화 한다. 

이 방법을 이용하면 저렴한 비용으로 암호화를 할 수 있다.

여기에서는 키의 전달 방법, 유지 관리 및 비밀 유지가 매우 중요하다. 

 

2. Public Key Encryption

공개키 암호화 방식(비대칭 암호화, Asymmetric encryption)은 공개키와 개인키(Private Key)를 사용하여 메시지를 암호화하고 복호화한다. 

송신자가 평문을 암호화할 때는 수신자가 공개 키를 사용하고, 수신자가 암호문을 복호화할 때는 수신자만이 알 수 있는 비공개 키를 사용한다. 

따라서 누구나 암호화를 할 수 있지만 암호문은 비공개키를 가진 사람만이 해독할 수 있다. 

(암호화할 때는 마음대로였겠지만 복호화할 때는 아니다.)

 

호박이 수박에게 데이터를 전송하려고 한다고 해보자.

Asymmetric encryption(and decryption)은 다음과 같이 이루어진다.

    수박이 자신의 개인키(A)를 공개한다.

    호박은 A를 이용해 데이터를 암호화한다.

    호박이 수박에게 암호화한 데이터를 보낸다.

    수박은 데이터를 받아 A로 복호화를 한다. 

 

 

 

 

 

 

공개키 암호화 방식 덕분에 전자 상거래가 가능해졌다고 봐도 될 정도로, public key encryption은 중요한 암호화 방식이다. 

 

대표적인 공개키 암호화 방법으로는 RSA(Rivset Shamir Aldeman)이 있다. 

https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8

 

(RSA를 제대로 이해하지 못했거나, 이해하기 귀찮은 사람을 위해 요약해 이야기하자면) RSA는 임의의 큰 수를 소인수분해하는 데에는 많은 시간이 소요되지만 반대로 소인수분해한 결과 값을 알면 소인수를 곱해 임의의 수를 간단히 알아낼 수 있다는 것을 이용한 것이다. 

수박이 열쇠와 자물쇠를 샀다. 그것도 엄청 많이.

열쇠는 잘 보관했지만, 자물쇠는 세상에 뿌렸다. 이 사람 저 사람에게 다 나눠주었다.

'이 사람 저 사람' 중 한 명인 호박이 보석함에 수박이 준 자물쇠를 달아 수박에게 보냈다.

언뜻보기에는 '이 사람 저 사람' 중 다른 사람이 자물쇠를 통해 열쇠 모양을 유추해 자물쇠를 풀 수 있지 않은가 생각이 든다.

하지만 수학적으로 자물쇠를 보고 빠른 시간 안에 열쇠를 알아내기는 매우 어려워서 사실상 불가능에 가깝다. 

따라서 수박만 호박이 보낸 보석함을 풀 수 있다.

 

RSA를 이용한 비공개 키 해독에는 슈퍼컴퓨터로도 1만년 이상이 소요될 정도이다.

따라서 해킹으로 인해 중간에 메시지가 유출되더라도 수신자의 개인키를 알 수 없기 때문에 해커가 메시지를 decrypt할 수 없다.

 

RSA를 비롯한 공개키 암호화 방법은 개인키를 만들기까지 계산량이 많다는 것이 단점이다. 

이 때문에 실생활에서 공개키 암호화를 이용해 평문을 암호화하는 경우는 거의 없고, 대칭키 알고리즘에 사용되는 키만 암호화와 복호화를 하여 서로 공유한 뒤, 평문을 암/복호화 할 때는 공유된 대칭키를 사용하는 것이 일반적이다. 

SSL(Secure Socket Layer)도 이런 방식으로 구현되어 있다.