Gentle Breeze

[CISSP] Domain 4. 응용 시스템 및 시스템 개발 보안 본문

⑨ 직무역량강화/CISSP

[CISSP] Domain 4. 응용 시스템 및 시스템 개발 보안

재령 2012. 1. 11. 11:27

▶ 응용시스템
  - 분산환경
      - 프로그램이나 데이터가 네트워크 상에서 2대 이상에 거쳐 처리되는 것
      - Agent, Applet 지원, 보안에 취약

  - 분산 시스템 구조 : 주/종속 처리, 클라이언트/서버, Peer to Peer(P2P)

  - 분산 환경의 표준
      - CORBA (Common Object Request Broker Architecture) : 표준 스펙
         Client Application에서 Remote Server에 있는 한 객체가 가지고 있는 기능을 이용
         Client 에서 Broker를 만들어 상호간 통신
         Location Transparency(위치 투명성) : Remote Server 위치가 바뀌더라도 클라이언트의 소스는 불변

      - RMI (Remote Method Invocation) : 네트워크 상 object 의 기능을 이용 (JAVA 종속)
      - DCE (Distributed Computing Environment) : 산업 표준
      - COM (Component Object Model) : DCOM 기능을 넣어 네트워크 연결을 제공 (MS 종속)
      - DCOM (Distributed COM)

  - Client Server (CS)
      - Tier : 물리적으로 장비가 분리된 경우에 사용

      - 2-Tier : Server, Client

         * Fat(Thick) Client
                       <Client> --------------------------------------- <Server>
                     - presentation                                                 - data source
                     - biz logic

         * Thin Client (Web)
                       <Client> --------------------------------------- <Server>
                     - presentation                                                 - data source
                                                                                          - biz logic


      - 3-Tier : Server, Middleware, Client

                       <Client> ------------<biz logic 처리>----------- <Server>
                     - presentation               - biz logic                    - data source

      - Pros : 자원 공유, 기능 분담, NW 트래픽 감소, 구축 가격 저렴
                  효율적 데이터 교환, HW 및 플랫폼에 독립적

      - Cons :  무결성 및 기밀성 유지 어려움, NW bottleneck, 어려운 개발 환경

      - Middleware : Client ~ Biz Logic Server(Middleware) 간 연결 (RMI/RPC)
                            여러개의 data source 에 대한 분산 transaction 관리
                            (Transaction Processing Monitor / Distributed Transaction Coopdinator)

      - Open API
                                                          HTTP
                <<Client>> <------------------------------------ <<Restful Service>>
                                                    XML /  JSON

  - 로컬 및 중앙 집중 환경
      - 응용 시스템, 데이터가 한 장소에 위치 (Eg : Mainframe)
      - 작업 통합, 통제, 일괄처리 용이
      - 효율적 인력운영 (비용대비 효율성은 떨어짐)
      - 보안 측면에서 상대적 안정

      - Software as a Service (Saas)
      - Infra as a Service (Iaas)
      - Platform as a Service (PaaS) : facebook

  - 분산 환경에서 Application System 개발 이슈
      - Applets : web browser에서 실행되는 특정 언어로 구현되어 compile 된 application program
      - Sandbox : 다운로드 된 프로그램들의 제한된 활동공간 (Java 보안)
                        Browser JVM 내의 객체 접근
                        CodeBase(Origin) 과 HTTP 통신만 가능 (다른 사이트와 통신 불가)
      - Active-X : *.cab 에 Makecert로 인증서를 이용한 전자서명을 통해 sandbox 외부에도 접근

  - 악성코드
      - Virus : 기존 실행 가능한 프로그램에 기생, 실행 시 작동에 피해를 줄 수 있는 명령어 집합
      - Trojan Horse : user 정보를 빼내기 위해 개발 (Eg : Win-Trojan/Back_Orifie)
                              키보드 입력 가로채기, 시스템 보호기능 제거(개인용 방화벽 무력화)
      - Worm : 네트워크를 통해 자신을 스스로 복제, 전파하는 독립 프로그램 (Eg : Code Red)
      - Spyware : 사용자 동의없이 사용자 정보를 수집하기 위해 비밀리에 잠입

  - 공격방법
      - 논리폭탄 (Logic Bomb) : 특정 조건이 만족하면 작동, 자기 복제 불가
      - 트랩도어 (Trap Door) : 디버깅, 테스트 프로그램이 삭제되지 않고 배포된 것
      - 백도어 : 고의로 개발된 보안 허점, 크래커가 재진입을 위해 주로 설치
      - 살라미 공격 : 작은 단위의 금액이 특정 계좌에 계속 가산되도록 프로그램 루틴을 부정삽입
      - Data Diddling : 저장장치 내에 엑스트라 바이트를 만든 후 Data 변형 및 바꿔치기

▶ 기타 응용 프로그램
  - 데이터베이스 시스템(DBS)
      - Shared, Integrated, Stored, Operational
      - DB 사용자 : DBA, DB 응용 프로그래머, DB User

      - 계층형 DB : Tree 구조, 데이터 중복 가능성 높음, 조회 속도 빠름
      - 네트워크형 DB : 계층형 DB에 복수의 부모 Node를 허용, 조회 복잡, 관리 어려움
      - 객체지향 DB : ORDB, 순수 상용 솔루션 없음 (Eg : MS SQL 2005 이상, Oracle 9i 이상)
                            XML Type 으로 XML 저장 가능, 조회 성능이 떨어짐, 관리 어려움
      - NOSQL (Not Only SQL) : 가용성을 높이기 위해 Sharding 기술이용
                                           데이터 중복으로 인한 무결성 훼손이 무시 가능할 경우 사용
                                           (Eg : Cassandra, MongoDB, Big Table)
      - 관계형 DB : Entity 간의 Relation 을 통해 중복을 줄임 (정규화)

      - 관계형 DB에서 사용하는 용어
          - SQL = DDL (Create, Alter...) + DML (Insert, Select...) + DCL (Grant, Deny...)
          - Tuple, Commit, Rollback, 2 Phase Commit
          - ERD (Entity Relationship Diagram)
          - 무결성 3원칙 : 도메인 무결성, 개체 무결성, 참조 무결성
          - 트랜잭션 4원칙(ACID) : 원자성(All or Nothing), 일관성, 무결성, 내구성
          - 정규화, 비정규화, 역정규화

      - DB 보안문제
          - 부적절한 노출, 변경, 서비스 거부
          - DB 보안 요구사항
          - 승인된 사용자만 접근
          - 추론 방지
          - 무결성 보장
          - DAC/MAC를 이용하여 접근 권한 부여
          - RDB에서 VIEW, 권한 서브 시스템 사용

          - 집합 (Aggregation) : 접근 가능한 정보의 결합을 통해 접근 권한이 없는 정보를 알아냄, 공모에 취약
                                       상위~하위 등급의 모든 data들을 특정 카테고리로 분류하고 모두 같은 등급으로 관리

          - 추론 (Inference) : 통계적인 데이터로부터 개별 데이터 항목 추적을 통해 접근 권한이 없는 정보를 획득

          - 다중 인스턴스화 (Polyinstantiation) : 낮은 권한을 가진 사람이 높은 권한의 정보를 통제하기 위해 사용
                                                             정보 구분을 위해 다중계층보안(Multi Level Security, MLS)과 관련
                                                             키(Key)의 중복성을 허용하여 추정을 방지


  - 데이터 웨어하우스(DW)
      - 분산, 운영되는 시스템으로부터 필요한 정보를 추출하여 중앙집중 저장소에 모아놓고 
        여러 사용자들이 효율적 사용
      - 특징 : 주제 중심적, 통합 된 내용, 시간에 따라 변화되는 값 유지, 비 소멸성
      - DW Application : OLAP(Online Analytical Processing)
                                Reporting Tool
                                EIS(Excutive Information System)

  - Meta Data
      - Self Descriptive 를 위한 정보, 본연의 데이터를 설명하기 위한 데이터
      - Dublin Core (ISO1583) 표준

  - 데이터 마이닝(Data Mining)
      - 방대한 양의 데이터 속 쉽게 드러나지 않는 유용한 정보를 도출, 의사결정 목적
      - 구현방법 : 문제정의 -> DW -> DM -> 레포팅 -> 의사결정 -> Feedback
      - 활용 : 연관성, 연속성, 분류성, 집단화, 특성화, 예측(패턴 분석, 경향 분석)

  - 객체지향 시스템
      - 데이터(data)와 연산(operation)으로 구성, 모듈화 및 정보은닉 등의 효과
      - 의미를 가진 객체를 정의하고 객체간의 관계의 파악을 통해 시스템 개발
      - 설계 및 분석을 위한 모델링이 쉽고 객체의 재사용(상속)이 용이
      - 객체지향의 3요소 : 객체, 클래스, 메시지(Sequence Diagram 을 통해 메시지 전달의 흐름 파악)

  - 객체지향 시스템의 특징
      - 추상화 : 중요한 측면에만 주목, 상세 내역을 배제해 나아가며 단순화
      - 캡슐화 : 내부에 data 은닉. 접근은 method 형태로 public 하게 노출
      - 상속성 : 부모 클래스로부터 물려받아 자식 클래스를 유도, 단일/다중 상속
      - 다형성 : 하나의 interface 를 이용하여 서로 다른 구현 방법을 제공
                    overloading (중복정의) - Eg: int Add(int, int) / double Add(double, double)
                    overriding - http://its21c.net/17 참고, 부모와 method signature 는 같지만 기능은 다름

  - 인공지능 시스템 (전문가 시스템, Expert System)
      - 인간의 판단과 행동을 흉내내어 인간 전문가와 유사한 결정 제시
      - 전문가적 지식 + 지식 Base 추론 엔진이 필요
      - 지식 Base : 일종의 DB
      - 추론기관 : 규칙의 탐색, 추론, 통제

▶ 시스템 개발 통제 (http://its21c.net/71 참고)
  - SW 개발 생명 주기(SDLC, Waterfall) : 요구정의 -> 분석 -> 설계 -> 개발 -> 이행
  - SDLC 사용시 문서화 된 방법론을 만들어 의사소통을 하게 됨

  - 폭포수 모델 : 요구사항 정의가 명확한 경우 적용 가능, 규모가 작은 프로젝트에 적용
  - 프로토타이핑 모델 : 화면 디자인과 같은 간단한 시제품을 만들어 보여주고 요구사항 feedback 후 개발
  - 나선형 모델 : 대규모 프로젝트에서 위험 분석 단계를 통해 위험 관리 활동을 하며 개발, 개발 기간이 길어짐
  - 반복 모델 : iteration 가능 한 미니 프로젝트로 분할하여 독립적인 반복 계획 수립, 증분/진화 모델
  - RAD 모델 : Rapid Application Development, 짧은 주기에 프로토타이핑을 개발
                    Code generator 를 통해 code를 자동 생성 후 완성해 나아감
  - V-Model : waterfall 에 근간

  - Varification : 개발 산출물이 초기 설정된 조건을 만족하는지 여부를 결정하기 위해 사람이 시스템을 평가
  - Validation : 문서화된 요구사항을 만족하는지 여부를 확인하기 위해 자동화 시켜 시스템을 평가

  - 테스트 : 단위 테스트, 인터페이스(통합) 테스트, 시스템 테스트, 최종인수 테스트

Comments