정보처리기사 정리

최시열·2023년 4월 17일
0

현행 시스템 분석

현행 시스템 파악 절차

1단계 : 구성/기능/인터페이스 파악
2단계 : 아키텍쳐 및 소프트웨어 구성 파악
3단계 : 하드웨어 및 네트워크 구성 파악

소프트웨어 아키텍쳐 4+1 뷰

유논프구배
유스케이스 뷰, 논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰

디자인 패턴

생성 패턴

생빌 프로 팩앱싱

  • Builder : 복잡한 인스턴스를 조립하여 만드는 구조, 생성과 구현 방법을 분리
  • Prototype : 프로토타입을 만들어 복사해 사용
  • Factory Method : 상위 클래스에서 인터페이스 정의, 하위 클래스에서 인스턴스 생성
  • Abstract Factory : 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스 제공
  • Singleton : 한 클래스에 한 객체만 존재, 전역 변수 사용하지 않고 하나의 객체만 생성

구조 패턴

구 브데 퍼플 프록 컴 어

  • Bridge : 기능 클래스 계층과 구현 클래스 계층을 연결, 추상화된 부분까지 변경 시 활용
  • Decorator : 기존 구현 클래스에 필요한 기능을 추가해 나가는 패턴
  • Facade : 복잡한 시스템에 단순한 인터페이스 제공, 시스템 구조 파악 용이, 통합 인터페이스 제공
  • Flyweight : 클래스의 경량화, 여러 개의 가상 인스턴스 제공하여 메모리 절약
  • Proxy : 실제 객체에 대한 접근 이전에 필요한 행동 가능, 정보은닉, 특정 객체로의 접근 제어
  • Composite : 객체 관계를 트리구조로, 단일 객체와 복합 객체 동일하게 다룸
  • Adapter : 기존의 클래스 재사용 하도록 중간에 맞춰주는 역할 하는 인터페이스를 만듬

행위 패턴

행 미인이 템옵 스테 비커 스트 메체

  • Mediator : 중재자에게 요구하여 통신 빈도수 낮춤
  • Interpreter : 여러 형태의 언어 구문 해석 가능, 문법 자체를 캡슐화
  • Iterator : 내부 구조를 노출하지 않고, 순차적 접근 가능
  • Template Method : 전체 일을 수행하는 구조는 바뀌지 않고 특정 단계에서 수행하는 내역을 바꿈, 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분 수행
  • Observer : 객체에 의존하는 다른 객체들에 연락이 감. 일대 다의 의존성
  • State : 객체 상태를 캡슐화하여 클래스화함 그것을 참조
  • Visitor : 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스가 각 클래스를 돌아다님
  • Command : 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계, 캡슐화
  • Strategy : 알고리즘 군 정의 후 캡슐화하여 필요할 때 교환하며 사용
  • Memento : 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인, Undo
  • Chain of Responsibility : 하드코딩 되어 있는 기능 처리 연결 불가능을 동적 연결 경우로 처리 될 수 있게 함

개발환경 구축

형상관리

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동

소프트웨어 형관 관리 도구 유형

공클분

  • 공유 폴더 방식
    • RCS : 소스 파일의 수정을 한 사람만으로 제한, 파일 잠금 방식
    • SCCS
  • 클라이언트/서버 방식
    • CVS : 서버와 클라이언트로 구성, 다수의 인원이 동시에 범용적인 운영체제 접근 가능
    • SVN : 하나의 서버에서 소스 관리, 저장소에 소스 저장
  • 분산 저장소 방식
    • Git
  • Bitkeeper : SVN과 비슷, 대규모 프로젝트에서 빠른 속도 낼 수 있게
  • Clear Case : 복수 서버, 복수 클라이언트 구조, 확장성

공통 모듈 구현

공통 모듈 구현

모듈의 독립성은 결합도가 약할수록, 응집도가 강할수록 높다.

응집도의 유형

우논시절 통순기

  • 우연적 응집도 : 연관이 없음
  • 논리적 응집도 : 유사한 성격, 특정 형태 처리 요소들이 한 모듈 안에서
  • 시간적 응집도 : 특정 시간에 처리되어야 하는
  • 절차적 응집도 : 다수의 관련 기능을 가질 때 기능을 순차적으로 수행할 경우
  • 통신적 응집도 : 동일한 입력과 출력
  • 순차적 응집도 : 한 활동에서 나온 출력값을 다른 활동이 사용
  • 기능적 응집도 : 모듈 내부 모든 기능이 단일한 목적을 위해 수행

결합도의 유형

내공 외제 스자

  • 내용 결합도 : 모듈 내부의 변수나 기능을 다른 모듈에서 사용, 다른 모듈의 내용을 참조할 때
  • 공통 결합도 : 모듈 밖의 전역 변수 참조, 전역 변수 갱신, 공유되는 공통 데이터 영역
  • 외부 결합도 : 외부의 데이터 포맷, 프로토콜, 인터페이스 등 공유, 외부 모듈에서 선언한 데이터를 참조
  • 제어 결합도 : 다른 모듈의 내부 논리 조직을 제어하기 위해 제어 신호 통신, 권리 전도 현상
  • 스탬프 결합도 : 배열, 객체, 구조 등이 전달, 동일한 자료 구조를 조회, 어떤 변화가 모든 모듈에 영향
  • 자료 결합도 : 인터페이스로 전달되는 파라미터로만 상호작용, 다른 모듈에는 영향 없음

팬인 팬아웃

팬인(Fan-in) : 어떤 모듈을 제어하는 모듈의 수, 모듈에 들어오면 +1
팬아웃(Fan-out) : 어떤 모듈에 의해 제어 되는 모듈의 수, 모듈에서 나가면 +1


소프트웨어 개발 보안 설계

소프트웨어 개발 보안 설계

SW 개발 보안의 3대 요소

  • 기밀성 : 인가되지 않은 개인, 시스템의 접근 차단
  • 무결성 : 정당한 방법을 거치지 않으면 데이터 변경 불가
  • 가용성 : 권한을 가진 사용자는 서비스를 지속 사용 가능

공격 기법

  • DOS : 시스템의 자원을 부족하게 하는 공격, 수많은 접속 시도, 직접 공격

    • SYN 플러딩 : TCP 프로토콜의 구조적인 문제를 이용
    • UDP 플러딩 : 대량의 UDP 패킷 보냄, ICMP 패킷은 변조되어 대기상태
    • 스머프, 스머핑 : 직접 브로드캐스팅하여 마비, 바운스라는 제3의 사이트 이용
    • 죽음의 핑(Ping of Death) : ICMP 패킷을 아주 크게 만들어 전송
    • 랜드 어택 : 출발지와 목적지 IP를 같은 패킷 주소로 만들어 보냄
    • 티어 드롭 : 잘못된 Fragment Offset 정보
    • 봉크, 보잉크 : 프로토콜의 오류 제어를 이용한 공격(같은 시퀀스 번호, 일정 간격으로 빈공간)
  • DDOS : DOS의 또다른 형태, 여러 대의 공격자, 공격을 지시함

  • 세션 하이재킹 : TCP의 세션 관리 취약점을 이용한 기법

  • 애플리케이션 공격

    • HTTP GET 플러딩
    • Slowloris : 개행 문자열 전송 안함
    • RUDY : 헤더를 크게, 바디를 매우 소량
    • Slow HTTP Read DoS : TCP 윈도 크기와 데이터 처리율 감소
    • Hulk DoS : URL을 지속적으로 변경하여 다량의 GET 요청
    • Hash DoS : 다수의 해쉬 충돌을 발생
  • 네트워크 공격

    • 스니핑 : 직접 공격 X, 데이터만 몰래 들여다 봄
    • 네트워크 스캐너, 스니퍼 : 공격자가 취약점을 탐색하는 도구
    • IP 스푸핑 : 인증된 시스템 처럼 속임, 인증된 IP 어드레스로 위조
    • ARP 스푸핑 : 인증된 MAC 주소로 위조, 특정 호스트의 MAC 주소를 통해 스니핑
    • ICMP Redirect 공격 : 또 다른 라우터라고 알리면서 패킷의 흐름 바꿈
    • 트로이 목마 : 겉보기에는 정상, 실행하면 악성코드
  • 시스템 보안 위협

    • 버퍼 오버플로우 : 할당된 버퍼를 초과하는 데이터 입력하여 프로세스 흐름 바꿈
    • 백도어 : 정상적인 인증 절차를 우회
    • 공격기법
      • 포맷 스트링 공격
      • 레이스 컨디션 공격 : 공유자원을 공시에 접근할 때 비정상 결과 도출, 임시 파일을 심볼릭 링크
      • 키로거 공격 : 키보드 움직임을 탐지
      • 루트킷 : 차후 침입을 위한 준비, 불법 해킹에 사용되는 기능 제공하는 프로그램 모음
  • 보안 관련 용어

    • 스피어피싱 : 사회 공학의 한 기법, 일반적인 메일처럼 위장
    • 스미싱 : SMS + 피싱
    • 큐싱 : QR 코드 + 피싱
    • 봇넷 : 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결되어 있는 것
    • APT 공격 : 특정 타깃 목표, 다양한 수단으로 지속적, 지능적 공격
    • 공급망 공격 : 소프트웨어 개발사의 네트워크에 침투
    • 제로데이 공격 : 보안 취약점 공개되기 이전에 공격
    • 웜 : 스스로를 복제하여 전파하는 악성 컴퓨터 프로그램, 독자적으로 실행
    • 악성 봇 : 스스로 실행 불가, 해커의 명령에 의해 원격에서 제어, 좀비 PC
    • 사이버 킬체인 : 록히드 마틴, APT 공격 방어 분석 모델
    • 랜섬웨어 : 파일들을 암호화, 인질로 잡고 몸값 요구
    • 이블 트윈 공격 : 핫스팟에 연결한 사용자들 정보 탈취

서버 인증, 접근 통제

  • 인증 기술 유형
    지소생특
    • 지식 기반 인증 : 사용자가 기억, ID, PW
    • 소지 기반 인증 : 소지하고 있는, 공인인증서, OTP
    • 생체 기반 인증 : 생체 정보, 홍채, 정맥 등
    • 특징 기반 인증 : 사용자의 특징, 발걸음, 서명 등
  • 서버 접근 통제 기법
    • Identification(식별)
    • Authentication(인증)
    • Authorization(인가)
    • Accountability(책임추적성)
  • 서버 접근 통제의 유형
    • 임의적 접근 통제 (DAC) : 주체나 그룹의 신분에 근거, 신분 기반
    • 강제적 접근 통제 (MAC) : 주체가 갖는 접근 허가 권한에 근거, 규칙 기반
    • 역할 기반 접근 통제 (RBAC) : 조직 내 맡은 역할게 기초
  • 3A : 체계적인 정보보호 기술
    • Authentication (인증) : 가입자, 단말에 대한 식별 및 신분 검증
    • Authorization (권한 부여) : 권한과 서비스 허용
    • Accounting (계정 관리) : 리소스 사용에 대한 정보 수집 및 관리 서비스
  • 접근 통제 보호 모델
    • 벨-라파듈라 모델(BLP) : 국방부 지원 보안 모델, 기밀성 강조
    • 비바 모델 : BLP를 보완한 무결성 보장 최초 모델

암호화 알고리즘

  • 양방향 방식

    • 대칭키 암호 방식 : 암호화키=복호화키, 블록 암호방식, 스트림 암호방식
      • DES : IBM에서 개발, 연방 표준국 발표
      • 3DES : DES를 세번 적용
      • SEED : 한국인터넷진흥원 개발
      • AES : 미국 표준 기술 연구소 발표, 3DES의 성능 문제 극복
      • ARIA : 국가정보원, 산학연구협회 개발, XOR같은 단순 바이트 단위 연산
      • IDEA : DES를 대체하기 위해 스위스 연방기술 기관에서 개발
      • LFSR : 시프트 레지스터의 일종, 선형 함수로 계산되는 구조
    • 비대칭키 암호 방식(공개키 암호 방식) : 암호화키!=복호화키
      • 디피-헬만 : 최초의 공개키 알고리즘, 이산 대수의 어려운 계산이 원리
      • RSA : 소인수 분해 문제의 어려움
      • ECC : RSA에 대한 대안으로 코블리치, 밀러가 제안, 타원 기반 구조체
  • 일방향 암호 방식(해시 암호 방식)

    • MAC : 키를 사용하는 메시지 인증 코드로 무결성, 인증 보장
    • MDC : 키를 사용하지 않는 변경 감지 코드로 무결성 보장
    • MD5 : MD4를 개선
    • SHA-1 : 미 정부 표준, DSA에서 사용
    • SHA-256/384/512 : SHA 알고리즘의 종류
    • HAS-160 : 국내 표준 서명 알고리즘, MD5 + SHA1
    • HAVAL : 1024bits로 나눔, 메시지 다이제스트 출력

데이터 암호화 전송

  • IPSec : IP 계층, 무결성과 인증-인증 헤더(AH), 기밀성-암호화(ESP)
    • IPSec 프로토콜
      • 인증(AH) 프로토콜
      • 암호화 프로토콜
      • 키 관리 프로토콜
  • SSL/TLS : 전송계층, 응용계층, Netscape 개발, 다양한 암호 통신, 특정 암호기술 의존 X
  • S-HTTP : 웹상에서 네트워크 트래픽을 암호화하는 방법

소프트웨어 개발 보안 구현

SW 개발 보안 구현

시큐어 코딩 가이드

입보시 에코 캡아

  • 입력 데이터 검증 및 표현
  • 보안 기능
  • 시간 및 상태
  • 에러 처리
  • 코드 오류
  • 캡슐화
  • API 오용
profile
최시열

0개의 댓글