해커가 말하는 해킹과 보안

보안의 3대요소
1)기밀성(Confidentiality) : 인가(authorization)된 사용자만 정보 자산에 접근할 수 있는 것
2)무결성(Integrity) : 적절한 권한을 가진 사용자에 의해 인가된 방법으로만 정보를 변경할 수 있도록 하는 것
3)가용성(Availability) : 정보 자산에 대해 적절한 시간에 접근 가능한 것을 의미


보안전문가의 자격요건
– 컴퓨터윤리기관(Computer Ethics Institute)에서 발표한 윤리 강령 10계명

1. 컴퓨터를 타인을 해치는 데 사용하지 않는다.
2. 타인의 컴퓨터 작업을 방해하지 않는다.
3. 타인의 컴퓨터 파일을 염탐하지 않는다.
4. 컴퓨터를 절도해서 사용하지 않는다.
5. 거짓 증거로 컴퓨터를 사용하지 않는다.
6. 소유권 없는 소프트웨어를 사용하거나 불법 복제하지 않는다.
7. 승인이나 적절한 보상 없이 타인의 컴퓨터를 사용하지 않는다.
– *7번까지는 ‘할 수 있는데’ 안해야 보안전문가가 아닐까? 못하는 것과 안하는 것은 다르니까… (그래서 모의 해킹대회 같은 걸 여는 건가 싶다. 해킹능력을 어떻게 쓰냐의 문제인가? 오펜하이머의 다이너마이트처럼)
8. 타인의 지적 재산권을 침해하지 않는다.
9. 자신이 만든 프로그램이나 시스템으로 인한 사회적 결과에 책임을 진다.
10. 동료를 고려하고 존중하는 방식으로 컴퓨터를 사용한다.

인터넷활동협회(IAB: Internet Activities Board)에서 비윤리적으로 간주하는 행동
▪고의적으로 허가 받지 않고 인터넷 자원에 접근하려는 행위
▪ 인터넷의 이용을 막는 행위
▪의도적으로 시스템과 네트워크의 자원을 낭비하는 행위
▪컴퓨터 기반 정보의 무결성을 파괴하는 행위
▪타인의 사생활을 침해하는 행위
▪인터넷 전반의 실험에 있어서의 과실 (*과실은 왜 비윤리적인거지? 실험하다 생긴 과실로 한정하는 것일까?)


보안 전문성 기반 지식

  • 운영체제
    • 네트워크와 병행한 운영체제(Operating System)에 대한 이해가 필요함.
    • 실무적으로 가장 중요한 운영체제는 윈도우, 서버의 경우에는 유닉스 서버임.
    • 최근에는 리눅스가 매우 다양한 형태로 발전하고 있음.
  • 네트워크
    • TCP/IP는 1973년대에 만들어져 지금까지 네트워크의 기본이 되는 프로토콜임.
    • 따라서 매우 중요하기 때문에 동작 하나하나까지 이해해야 함.
  • 프로그래밍
    • 대체로 기본적인 C 프로그래밍, 객체지향 프로그래밍, HTML 정도면 충분함.
    • 하지만 수준 높은 보안 전문가가 되려면 프로그래밍 능력이 상당히 중요함.
    • 보안 시스템 개발자 : 방화벽, 침입 탐지 시스템(IDS) 등의 보안 시스템 개발자는 프로그래밍을 깊이 배워야 함.
    • 응용 프로그램 취약점 분석 테스터 : 리버스 엔지니어링(Reverse Engineering)을 이용한 게임과 상용 프로그램 테스터/취약점 분석가는 프로그래밍에 대해 자세히 알아야 하고, 특히 어셈블리어에 대한 깊은 이해가 필요.
  • 서버
    • 보안 전문가는 서버를 이해하는 것이 필수적
    • 대중적인 서버는 유닉스. 최근에는 리눅스가 매우 다양한 형태로 발전하고 있음.
    • 데이터베이스의 경우 기본적인 SQL 역시 공부가 필요함.
  • 보안 시스템
    • 방화벽, 침입 탐지 시스템, 침입 방지 시스템, 단일 사용자 승인(SSO), 네트워크 접근 제어 시스템(NAC), 백신과 같은 보안 솔루션
    • 시스템별 기본 보안 통제와 적용 원리, 네트워크상에서 구성, 목적 등을 이해해야 함
  • 모니터링 시스템
    • 네트워크 관리 시스템(NMS), 네트워크 트래픽 모니터링 시스템(MRTG)과 같은 모니터링 시스템에 대한 기본적인 개념 정도는 필요함
    • 암호와 해시의 차이
    • 대칭키 알고리즘과 비대칭키 알고리즘의 종류와 강도
    • 공개키 기반 구조에 대한 이해 필요

댓글 남기기