Process - 별도의 프로세스에서 실행되는 작업을 의미.

 

  • parameters
    • group : 항상 None이어야 함. threading.Thread와의 호환성을 위해 존재
    • target : run() 메소드에 의해 호출될 callable 객체. defalut = None
    • name : 프로세스 이름
    • args : target 호출을 위한 인자 튜플
    • kwargs : target 호출을 위한 키워드 인자 딕셔너리
  • method
    • run() : 프로세스의 활동을 나타내는 메소드. 서브 클래스에서 재정의 가능. 표준 run() 메소드는 객체 생성자에 target 인자로 전달된 callable 객체를 호출하는데 args와 kwargs 인자를 각각 위치 인자와 키워드 인자로 사용
    • start() : 프로세스 활동 시작. 프로세스 객체 당 최대 한 번 호출되어야 함. 객체의 run() 메소드가 별도 프로세스에서 호출되도록 함
    • join([timeout]) : 선택적 인자 timeout이 None(default)인 경우, 메소드는 join() 메소드가 호출된 프로세스가 종료될 때까지 블록된다. timeout이 양수면 최대 timeout초동안 블록. 프로세스가 종료되거나 메소드가 시간 초과되면 None을 돌려주게 되므로 주의. 프로세스의 exitcode를 검사해 종료되었는지 확인.
      프로세스는 여러 번 조인할 수 있다.
      교착 상태를 유발할 수 있으므로 프로세스는 자신을 조인할 수 없다. 프로세스가 시작되기 전 프로세스에 조인하려고 하면 에러가 발생한다.
    • name : 프로세스 이름. 식별 목적으로만 사용.
    • is_alive() : 프로세스가 살았는지 죽었는지 반환
    • daemon : start() 호출 전 설정되어야 함. 초깃값은 생성 프로세스에서 상속. 프로세스가 종료될 때 모든 데몬 자식 프로세스를 강제 종료시키려 시도.
    • pid : 프로세스 ID  반환
    • exitcode : 자식 종료 코드
    • authkey : 프로세스 인증 키
    • terminate(), kill() : 프로세스 강제 종료
    • close() : 프로세스와 관련된 모든 자원 해제

 

Pool - 여러 입력 값에 걸쳐 함수 실행을 병렬 처리하고 입력 데이터를 프로세스에 분산시키는 방법 제공 (데이터 병렬 처리)

 

  • Parameters
    • proccesses : 사용할 작업자 프로세스 수. None이면 os.cpu_count()에 의해 반환되는 수가 사용됨
    • initializer : None이 아니면, 각 작업자 프로세스는 시작할 때 initializer(*initargs)를 호출
    • maxtasksperchild : 사용되지 않는 자원을 해제할 수 있도록, 작업 프로세스가 종료되고 새 작업 프로세스로 교체되기 전에 완료할 수 있는 작업 수.
    • context : 작업자 프로세스를 시작하는 데 사용되는 컨텍스트를 지정하는 데 사용할 수 있음.
  • method
    • apply(func[, args[, kwds]]) : 인자 args 및 키워드 인자 kwds를 사용해 func를 호출한다. 결과가 준비될 때까지 블록된다.
    • apply_async(func[, args[, kwds[. callback[, error_callback]]]]) : AsyncResult 객체를 반환하는 apply() 메소드 변형. callback이 지정되면 단일 인자를 받아들이는 callable이어야 한다. 결과가 준비되면 callback을 결과를 인자로 호출한다. 실패한 결과면 error_callback이 대신 적용된다. 콜백은 즉시 완료되어야 하며, 그렇지 않으면 결과를 처리하는 스레드가 블록된다.
    • map(func, iterable[, chunksize]) : map() 내장 함수의 병렬 버전. 하나의 iterable 인자만 지원. 여러 개의 인자를 지원하는 건 starmap(). 결과가 준비될 때까지 블록된다. 이 메소드는 iterable을 여러 묶음으로 잘라 별도 작업으로 프로세스 풀에 제출한다. 이 묶음의 크기는 chunksize를 양의 정수로 설정해 지정가능. 너무 긴 iterable은 높은 메모리 사용을 유발하므로 명시적 chunksize 옵션으로 imap()이나 imap_unordered()를 사용하는 걸 고려해야 한다.
    • map_async(func, iterable[, chunksize[, callback[, error_callback]]]) : AsyncResult 객체를 반환하는 map() 메소드 변형.매커니즘은 apply_async()와 같다.
    • close() : 더는 작업이 풀에 제출되지 않도록 한다. 모든 작업이 완료되면 작업자 프로세스가 종료됨
    • terminate() : 계류 중인 작업을 완료하지 않고 즉시 작업자 프로세스 중지. Pool 객체가 garbage 수집될 때 terminate()가 죽시 호출됨
    • join() : 작업자 프로세스가 종료될 때까지 기다린다. 호출 전 반드시 close()나 terminate()를 호출해야 한다.
  • 그 외
    • imap, imap_unordered, starmap, starmap_async, AsyncResult, etc...

 

Pipe & Queue - 여러 프로세스 사용 시, 프로세스 간 통신을 위해 메시지를 전달하기 위해 Pipe()를 사용할 수 있다.

 

  • multiprocessing.Pipe([duplex])
    • 파이프의 끝을 나타내는 Connection 객체 쌍 (conn1, conn2)를 반환.
    • duplex가 True(default)면 파이프는 양방향.
      False일 시, 단방향. conn1은 메시지 받는 데, conn2는 메시지 보내는 데에만 사용 가능
  • multiprocessing.Queue([maxsize])
    • 파이프와 몇 개의 록/세마포어를 사용해 구현된 프로세스 공유 큐 반환. 프로세스가 처음으로 항목을 큐에 넣으면 버퍼에서 파이프로 객체 전송 피더 스레드가 시작됨
    • method
      • qsize() - 큐 크기 리턴
      • empty() - 큐가 비어 있으면 True, 아니면 False
      • full() - 큐가 가득 차면 True, 아니면 False
        • 위의 세 메소드는 다중 스레딩 / 다중 프로세싱 특성을 타 신뢰할 수 없다.
      • put(obj[, block[, timeout]]) : obj를 큐에 넣는다. block이 True이고 timeout이 None(default)이면 빈 슬롯이 생길 때까지 필요한 경우 블록함. timeout이 양수인 경우, 최대 timeout초만큼 블록하고 그 시간 내 사용 가능 슬롯이 생기지 않으면 queue.Full 예외 발생. block이 False이고 빈슬롯을 즉시 사용 가능하면 항목을 넣으나 그렇지 않으면 queue.Full 예외 발생.(이 경우 timeout은 무시)
      • get([block[, timeout]]) : obj를 큐에서 반환. 매커니즘은 put과 비슷.
      • close() : 현재 프로세스가 이 큐에 더는 데이터를 넣지 않을 것을 나타냄.
      • join_thread() : 배경 스레드에 조인. close()가 호출된 후 사용 가능.
      • cancel_join_thread() : join_thread()의 블록 방지. 프로세스 종료 시 배경 스레드를 자동 조인하는 것을 막음.
    • etc
      • SimpleQueue(록이 걸린 Pipe에 가까움), JoinableQueue

 

 

 

소프트웨어 패키징

 

소프트웨어 패키징이란? 모듈별 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것.

 

  • 패키징 시 고려사항
    • 운영체제, CPU, 메모리 등에 필요한 최소 환경 정의
    • UI는 시각적 자료와 함께 제공, 매뉴얼과 일치시켜 패키징.
    • 소프트웨어는 단순 패키징하여 배포하는 것으로 끝나는 것이 아닌 하드웨어와 함께 관리될 수 있도록 Managed Service 형태로 제공
    • 고객의 편의성을 고려한 안정적 배포가 중요.
    • 패키징 변경 및 개선에 대한 관리 고려
  • 작업 순서
    • 기능 식별 - 모듈화 - 빌드 진행 - 사용자 환경 분석 - 패키징 및 적용 시험 - 패키징 변경 개선 - 배포

릴리즈 노트 작성

 

릴리즈 노트란 개발 과정에서 정리된 릴리즈 정보를 소프트웨어 최종 사용자 고객과 공유하기 위한 문서.

 

  • 릴리즈 노트 항목
    • 헤더 : 릴리즈 노트 이름, 소프트웨어 이름, 릴리즈 버전, 릴리즈 날짜, 릴리즈 노트 날짜, 릴리즈 노트 버전 등
    • 개요 : 소프트웨어 및 변경사항 전체에 대한 간단한 내용
    • 목적 : 해당 릴리즈 버전에서 새로운 기능이나 수정된 기능 목록과 릴리즈 노트의 목적에 대한 간략한 개요
    • 문제 요약 : 수정된 버그에 대한 간략한 설명 또는 릴리즈 추가 항목에 대한 요약
    • 재현 항목 : 버그 발견에 대한 과정 설명
    • 수정/개선 내용 : 버그를 수정 / 개선한 내용 간단히 설명
    • 사용자 영향도 : 사용자가 다른 기능들을 사용하는데 있어 해당 릴리즈 버전에서의 기능 변화가 미칠 수 있는 영향에 대한 설명
    • SW 지원 영향도 : 릴리즈 버전에서 기능 변화가 다른 응용 프로그램들을 지원하는 프로세스에 미칠 수 있는 영향에 대한 설명
    • 노트 : SW / HW 설치 항목, 업그레이드, 소프트웨어 문서화에 대한 참고 항목
    • 면책 조항 : 회사 및 소프트웨어 관련 참조 사항
    • 연락처 : 사용자 지원 및 문의 응대를 위한 연락처 정보
  • 릴리즈 노트 작성 순서
    • 모듈 식별 - 릴리즈 정보 확인 - 릴리즈 노트 개요 작성 - 영향도 체크 - 정식 릴리즈 노트 작성- 추가 개선 항목 식별

디지털 저작권 관리(DRM; Digital Right Management)

 

저작권이란? 창작자가 가지는 배타적 독점적 권리. 타인의 침해를 받지 않을 고유한 권리.

 

  • 디지털 저작권 관리 흐름도
    • https://lipcoder.tistory.com/entry/2-3-3%EC%9E%A5-%EB%94%94%EC%A7%80%ED%84%B8-%EC%A0%80%EC%9E%91%EA%B6%8C-%EA%B4%80%EB%A6%ACDRM
    • 클리어링 하우스(Clearing House) : 저작권 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 수행
    • 콘텐츠 제공자 : 콘텐츠 제공 저작권자
    • 패키저 : 콘텐츠를 메타 데이터(속성 정보 설명 데이터)와 함께 배포 가능 형태로 묶어 암호화하는 프로그램
    • 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
    • 콘텐츠 소비자 : 콘텐츠를 구매해서 사용하는 주체
    • DRM 컨트롤러 : 배포된 콘텐츠 이용 권한을 통제하는 프로그램
    • 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
  • 디지털 저작권 관리 기술 요소
    • 암호화 : 콘텐츠 및 라이선스 암호화, 전자 서명을 할 수 있는 기술
    • 키 관리 : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
    • 암호화 파일 생성 : 콘텐츠를 암호화된 콘텐츠로 생성하기 위한 기술
    • 식별 기술 : 콘텐츠에 대한 식별 체계 표현 기술
    • 저작권 표현 : 라이선스 내용 표현 기술
    • 정책 관리 : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
    • 크랙 방지 : 크랙에 의한 콘텐츠 사용 방지 기술
    • 인증 : 라이선스 발급 및 사용 기준이 되는 사용자 인증 기술

소프트웨어 설치 매뉴얼 작성

 

  • 설치 매뉴얼 포함 항목
    • 목차(전체 설치 과정 순서대로 요약 후 관련 내용 시작 페이지 함께 기술) 및 개요(설치 매뉴얼 주요 특징, 구성과 설치 방법, 순서 등의 내용 기술)
    • 서문
      • 문서 이력, 설치 매뉴얼 주석, 설치 도구 구성, 설치 환경 체크 항목 기술
    • 기본 사항
      • 소프트웨어 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가 정보
  • 설치 매뉴얼 작성 방법
    • 설치 화면 및 UI, 설치 이상 메시지, 설치 완료 및 결과, FAQ, 설치 시 점검 사항, network 환경 및 보안, 고객 지원 방법, 준수 정보 및 제한 보증 등에 대한 내용 기술
  • 설치 매뉴얼 작성 순서
    • 기능 식별 - UI 분류 - 설치 파일 / 백업 파일 확인 - Uninstall 절차 확인 - 이상 Case 확인 - 최종 매뉴얼 적용

소프트웨어 사용자 매뉴얼 작성

 

  • 사용자 매뉴얼 포함 항목
    • 목차(매뉴얼 전체 내용 순서대로 요약 후 관련 내용 시작 페이지 함께 기술) 및 개요(소프트웨어 주요 특징, 메뉴얼 구성과 실행 방법, 사용법, 항목별 점검 기준, 항목별 설정 방법 등에 대한 내용 기술)
    • 서문 
      • 문서 이력, 주석, 기록 보관 내용 
    • 기본 사항
      • 소프트웨어 개요, 소프트웨어 사용 환경, 소프트웨어 관리, 모델, 버전별 특징, 기능, 인터페이스 특징, 소프트웨어 구동 환경
  • 사용자 매뉴얼 작성 방법
    • 사용자 화면 및 UI, 주요 기능 분류, 응용 프로그램 및 설정, 장치 연동, Network 환경, Profile 안내, 고객 지원 방법, 준수 정보 및 제한 보증
  • 작성 순서
    • 기능 식별 - 사용자 화면 분류 - 사용자 환경 파일 확인 - 초기화 절차 확인 - 이상 Case 확인 - 최종 매뉴얼 적용

소프트웨어 버전 등록

 

형상 관리란? 소프트웨어 개발 과정에서 소프트웨어 변경 사항을 관리하기 위해 개발된 일련의 활동

 

  • 형상 관리 기능
    • 형상 식별 : 형상 관리 대상 수정 및 추적이 용이하도록 하는 작업
    • 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전 형상 항목 관리, 이를 위해 특정 절차와 도구 결합시키는 과정
    • 형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재 기준선이 잘 반영될 수 잇도록 조정하는 작업
    • 형상 감사 : 기준선 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
    • 형상 기록(상태 보고) : 형상 식별, 통제, 감사 작업 결과를 기록 * 관리하고 보고서를 작성하는 작업
  • 주요 용어
    • 저장소(Repository) : 최신 버전 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
    • 가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일 저장
    • 체크아웃 : 프로그램을 수정하기 위해 저장소에서 파일을 받아온다.
    • 체크인 : 체크아웃한 파일의 수정을 완료 후 저장소의 파일을 새로운 버전으로 갱신한다.
    • 커밋 : 체크인 수행할 대 이전 갱신된 내용이 있는 경우 충돌을 알리고 diff 도구를 이용해 수정 후 갱신 완료
    • 동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간 동기화
  • 소프트웨어 버전 등록 과정
    • Import - Check-out - Commit - Update - Diff

소프트웨어 버전 관리 도구

 

  • 공유 폴더 방식 : 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장돼 관리되는 방식
    • 종류 : SCCS, RCS, PVCS, QVCS
  • 클라이언트/서버 방식 : 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
    • 종류 : CVS, CVSNT, Clear Case, CMVC, Perforce
      • SVN(Subversion)
        • 모든 개발 작업은 trunk 디렉터리에서 수행. 추가 작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업 완료 후 trunk 디렉터리와 병합한다.
        • 주요 명령어
          • add : 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록. 
          • commit : 버전 관리 대상으로 등록된 클라이언트 소스 파일을 서버 소스 파일에 적용
          • update : 서버 최신 commit 이력을 클라이언트 소스 파일에 적용. commit 전 매번 update를 수행해 클라이언트에 적용되지 않은 서버 변동 내역을 클라이언트에 적용
          • checkout : 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아온다.
          • lock/unlock : 서버 소스 파일이나 디렉토리를 잠그거나 해제
          • import : 아무것도 없는 서버 저장소에 맨 처음 소스 파일을 저장하는 명령. 한 번 사용하면 다시 사용하지 않음.
          • export : 버전 관리에 대한 정보를 제외한 순수 소스 파일만을 서버에서 받아온다.
          • info : 지정 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보 표시
          • diff : 지정 파일이나 경로에 대해 이전 리비전과 차이 표시
          • merge : 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병행
  • 분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC 로컬 저장소와 함께 저장되어 관리되는 방식
    • 종류 : GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등
    • Git
      • 리누스 토발즈가 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지 보수되고 있음. 브랜치를 이용해 기본 버전 관리 틀에 영향을 주지 않으며 다양한 형태의 기능 테스팅 가능. 파일 변화를 스냅샷으로 저장하는데, 스냅샷은 이전 스냅샷의 포인터를 가져 버전 흐름을 파악할 수 있음.
      • 주요 명령어
        • add : 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역에 추가.
        • commit : 작업 내역을 지역 저장소에 저장.
        • branch : 새로운 브랜치 생성. 
        • checkout : 지정한 브랜치로 이동.
        • merge : 지정한 브랜치 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치 병합
        • init : 지역 저장소 생성
        • remote add : 원격 저장소에 연결
        • push : 로컬 저장소 변경 내역을 원격 저장소에 반영
        • fetch : 원격 저장소 변경 이력만을 지역 저장소로 가져와 반영
        • clone : 원격 저장소 전체 내용을 지역 저장소로 복제
        • fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제

빌드 자동화 도구

 

빌드란 소스 코드 파일들을 컴파일한 후 여러 개 모듈을 묶어 실행 파일로 만드는 과정.

이러한 빌드를 포함하여 테스트 및 배포를 자동화하는 도구가 빌드 자동화 도구이다.

 

  • Ant, Make, Maven
  • Jenkins : Java 기반 오픈 소스 형태, 가장 많이 사용되는 빌드 자동화 도구.
    • 서블릿 컨테이너에서 실행되는 서버 기반 도구 
    • 대부분 형상 관리 도구와 연동 가능.
    • Web GUI 제공으로 쉬운 사용.
    • 여러 대 컴퓨터를 이용한 분산 빌드나 테스트 가능
  • Gradle : Groovy(동적 객체 지향 프로그래밍 언어)를 기반으로 한 오픈 소스 형태 자동화 도구. 안드로이드 앱 개발 환경에서 사용.
    • 플러그인을 설정하면, Java, C/C++, Python 등의 언어도 빌드 가능.
    • 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행.
    • 이전 사용한 태스크 재사용하거나 다른 시스템 태스크를 공유할 수 있는 빌드 캐시 기능 지원. 빌드 속도 향상 가능.

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

10장 응용 SW 기초 기술 활용  (0) 2021.07.07
9장 소프트웨어 개발 보안 구축  (0) 2021.07.06
8장 SQL 응용  (0) 2021.07.06
7장 어플리케이션 테스트 관리  (0) 2021.07.05
6장 화면 설계  (0) 2021.07.02

10장 응용 SW 기초 기술 활용

 

운영체제의 개념

 

운영체제란, 컴퓨터 시스템 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임

 

  • 성능 평가 기준
    • 처리 능력 : 일정 시간 내 시스템이 처리하는 일의 양
    • 반환 시간 : 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
    • 사용 가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
    • 신뢰도 : 주어진 문제를 정확하게 해결하는 정도
  • 기능
    • 자원 관리
      • 프로세스 관리 : 프로세스 스케줄링 및 동기화 관리 담당, 프로세스 생성 및 제거, 시작과 정지, 메시지 전달 등 기능 담당
      • 기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당
      • 주변장치 관리 : 입*출력장치 스케줄링 및 전반적 관리 다당
      • 파일 관리 : 파일 생성과 삭제, 변경, 유지 등 관리 담당
    • 자원 스케줄링 기능
    • 편리한 인터페이스 제공
    • 하드웨어와 네트워크 관리 및 제어
    • 데이터 관리, 데이터 및 자원 공유 기능 제공
    • 시스템 오류 검사 및 복구
    • 자원 보호 기능 제공
    • 입*출력에 대한 보조 기능 제공
    • 가상 계산기 기능 제공
  • 종류
    • 단일 작업 처리 시스템 : MS-DOS
    • 다중 작업 처리 시스템
      • Windows : 마이크로소프트 사가 개발한 운영체제
        • GUI(그래픽 사용자 인터페이스) : 마우스로 아이콘이나 메뉴를 선택해 모든 작업을 수행하는 방식
        • 선점형 멀티태스킹(Preemptive Multi-Tasking) : 동시에 여러 프로그램을 실행하는 멀티태스킹을 하며 운영체제가 각 작업 CPU 이용 시간을 제어해 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료 시키고 모든 시스템 자원을 반환하는 방식
        • PnP(Plug and Play, 자동 감지 기능) : 하드웨어 설치 시 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성
        • OLE(Object Linking and Embedding) : 다른 여러 응용 프로그램에서 작성된 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능
        • 255자의 긴 파일명 : \/*?"<>|를 제외한 모든 문자 및 공백을 사용해 최대 255자까지 파일 이름 지정
        • Single-User 시스템 : 컴퓨터 한 대를 한 사람만 독점해서 사용
        • 기본 명령어
          • dir
          • copy
          • del
          • type(파일 내용 표시)
          • ren(파일 이름 변경)
          • md
          • cd
          • cls(화면 내용 지움)
          • attrib(파일 속성 변경) ex) attrib +r abc.txt -> abc.txt 파일을 읽기 전용 속성으로 변경
            • r : 읽기 속성, a : 저장 / 백업 속성, s : 시스템 파일 속성, h : 숨김 파일
              • 속성을 지정할 때는 + 해제할 때는 -
          • find(파일에서 문자열 찾기) ex) find "hello" abc.txt
          • chkdsk(디스크 상태 점검)
          • format(디스크 표면을 트랙과 섹터로 나눠 초기화)
          • move 
      • UNIX : AT&T 벨 연구소, MIT, General Electric이 공동 개발한 운영체제
        • 시분할 시스템(라운드 로빈 방식)을 위해 설계된 대화식 운영체제. 소스가 공개된 개방형 시스템이다.
        • 대부분 C로 작성되어 있어 이식성이 높고, 장치, 프로세스 간 호환성이 높다.
        • 크기가 작고 이해하기 쉽다.
        • 다중 사용자, 다중 작업 지원
        • 많은 네트워킹 기능을 제공하여 통신망 관리용 운영체제로 적합
        • 트리 구조의 파일 시스템
        • 전문적 프로그램 개발에 용이
        • 다양한 유틸리티 프로그램들이 존재
        • 구성
          • 커널 : 가장 핵심적인 부분. 컴퓨터 부팅 시 주기억장치에 적재된 후 상주하며 실행됨. 하드웨어 보호, 프로그램과 하드웨어 간 인터페이스 역할 담당. 프로세스 관리, 기억장치 관리, 파일 관리, 입*출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 기능 수행
          • 쉘 : 명령어 해석기. 사용자와 시스템 간 인터페이스 담당. 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리가 가능. 파이프라인(둘 이상 명령을 함께 묶어 처리한 결과를 다른 명령의 입력을 전환하는 기능) 기능 지원. 출력과 입력 방향 변경 가능. 공용 Shell이나 자신이 만든 Shell 사용 가능
          • 유틸리티 프로그램 : 일반 사용자가 작성한 응용 프로그램 처리에 사용. DOS에서의 외부 명령어. 에디터, 컴파일러, 인터프리터, 디버거 등이 있음
          • 기본 명령어 (linux 동일) 
            • cat(파일 내용 화면 표시)
            • cd
            • chmod(파일 보호 모드 설정) ex) chmod u=rwx abc.txt
              • u : user, g : group, o : other, a : all
              • + : 권한 추가, - : 권한 삭제, = : 권한 부여
              • r : 읽기 권한, w : 쓰기 권한, x : 실행 권한(execute)
            • chown(파일 소유자와 그룹 변경) ex) chown member1 abc.txt -> abc.txt 소유자를 member1으로 한다.
            • cp
            • rm
            • find
            • fsck(파일 시스템 검사하고 보수한다.)
            • kill (PID를 이용해 프로세스를 종료한다.)
            • killall (모든 프로세스 종료)
            • ls
            • mkdir
            • rmdir
            • mv
            • ps (현재 실행 중인 프로세스 표시)
            • pwd (현재 작업중인 디렉터리 경로를 화면에 표시)
            • top (시스템 프로세스와 메모리 사용 현황 표시)
            • who (현재 시스템 접속해 있는 사용자 표시)
      • LINUX : 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
        • 프로그램 소스 코드가 무료로 공개되어 있어 프로그래머가 원하는 기능 추가 가능. 다양한 플랫폼에 설치하여 사용 가능. 재배포 가능.
        • UNIX와 완벽하게 호환. 대부분 특징이 UNIX와 동일
        • 메모리 관리 방법
          • meminfo 명령어를 통해 메모리 상태 확인
          • 메모리가 부족할 경우 Swapping 기법(dd, fallocate)이나 min_free_kbytes 명령어를 통해 메모리 활동
      • MacOS : 애플 사가 UNIX 기반으로 개발한 운영체제
        • 애플 사에서 생산하는 제품에서만 사용 가능
        • 드라이버 설치 및 install과 uninstall 과정 단순

기억장치 관리

 

보조기억장치 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정해 한정된 주기억장치 공간을 효율적으로 사용하기 위한 것

 

  • 반입(Fetch) 전략
    • 요구 반입 : 실행 중인 프로그램이 특정 프로그램이나 데이터 등 참조를 요구할 때 적재하는 방법
    • 예상 반입 : 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상해 적재하는 방법
  • 배치(Placement) 전략
    • 최초 적합 : 프로그램이나 데이터가 들어갈 수 있는 크기 빈 영역 중 첫 번째 분할 영역에 배치시키는 방법
    • 최적 적합 : 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
    • 최악 적합 : 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
  • 교체(Replacement) 전략
    • 이미 사용되고 있는 영역 중 어느 영역을 교체해 사용할 것인지 결정하는 전략
      • FIFO, OPT, LRU, LFU, NUR, SCR

프로세스 관리

 

프로세스(작업 / 태스크)란 실행 중인 프로그램을 의미. 

 

  • 프로세스 상태 전이
    • 제출(Submit) : 작업을 처리하기 위해 시스템에 제출한 상태
    • 접수(Hold) : 제출된 작업이 Spooling(나중에 한꺼번에 입*출력하기 위해 디스크에 저장하는 과정)되어디스크의 할당 위치에 저장된 상태
    • 준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태.
    • 실행(Run) : 프로세스가 프로세서를 할당받아 실행되는 상태. 프로세스 수행 완료 전 주어진 프로세서 할당 시간이 종료(Timer Run Out)되면 프로세스는 준비 상태로 전이됨. 실행 중인 프로세스에 입*출력(I/O) 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이됨.
    • 대기(Wait), 보류, 블록(Block) : 프로세스에 입*출력 처리가 필요하면 실행 중인 프로세스가 중단되고 대기하고 있는 상태
    • 종료(Terminated, Exit) : 프로세스 실행이 끝나고 프로세스 할당이 해제된 상태

데이터베이스 개념

 

데이터 베이스란 특정 조직 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임이다.

 

  • 통합된 데이터(Integrated Data) : 검색 효율성을 위해 중복이 최소화된 데이터 모임
  • 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 데이터
  • 운영 데이터(Operational Data) : 조직 고유 업무를 수행하는 데 존재 가치가 확실하고 없어선 안 될 반드시 필요한 데이터
  • 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동 소유하고 유지하는 데이터

DBMS (데이터베이스 관리 시스템)

 

사용자 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해 주는 소프트웨어

 

  • 기능
    • 정의(Definition), 조작(Manipulation), 제어(Control) 
  • 종류
    • 계층형 DBMS : 데이터 상호관계를 계층적으로 정의한 DBMS. 개체 타입 간 상위 - 하위 관계 존재. 1:N 대응 관계만 존재.
      • IMS, System2000 등
    • 망형 DBMS : 그래프를 이용해 데이터 논리 구조 표현. 상위와 하위 레코드 사이 1:1, 1:N, N:M 대응 관계 모두 지원
      • IDS, TOTAL, IDMS 등
    • 관계형 DBMS : 가장 널리 사용되는  DBMS. 계층형과 망형의 복잡한 구조를 단순화시킨 DBMS. 파일 구조처럼 구성한 2차원적 표를 하나의 DB로 묶어 테이블 내 속성들 간 관계를 설정하거나 테이블 간 관계를 설정해 이용
      • Oracle, SQL Server, MySQL 등
    • 비관계형 DBMS : 데이터 간 관계를 정의하지 않고 비구조적 데이터를 저장하기 위한 시스템. 빅데이터를 처리하기 위한 시스템으로 각광받고 있다.
      • NoSQL
        • 수평적 확장 및 분산 저장 가능. 저장되는 데이터 구조에 따라 Key-Value, Document, Graph DBMS로 분류됨
  • 장점
    • 데이터의 논리적, 물리적 독립성 보장
    • 데이터 중복을 피할 수 있어 기억공간 절약
    • 저장된 자료 공동 이용 가능
    • 데이터 일관성, 무결성 유지 가능
    • 보안 유지
    • 데이터 표준화
    • 데이터 통합 관리
    • 항상 최신 데이터 유지
    • 데이터 실시간 처리 가능
  • 단점
    • 데이터베이스 전문가 부족
    • 전산화 비용 증가
    • 대용량 디스크로의 집중적 Access로 과부하 발생
    • 파일 백업와 회복이 어려움
    • 시스템이 복잡

ER 모델 (개념적 데이터 모델)

 

  • ER 도형
  • 관계 및 관계 타입
    • 차수(열 개수)에 따라선 단항 / 이항 / 삼항 / n항
    • 카디날리티(행 개수)에 따라선 1:1 / 1:N / N:M

 

관계형 데이터 모델 (릴레이션) (논리적 데이터 모델)

 

  • 릴레이션 = 테이블
  • 스키마 = 속성(애트리뷰트) 이름 타입, 속성 값의 도메인 정의하는 릴레이션의 틀
  • 속성의 수 = 디그리 = 차수 = 열 수
  • 튜플의 수 = 카디널리티 = 기수
  • 도메인 = 하나의 속성이 취할 수 있는 원자값들의 집합 ex) 성별은 {'남성', '여성'}(도메인)의 값만 가질 수 있다.
  • 인스턴스 = 튜플(행)의 모임

  • 매핑 룰 : ER 모델을 릴레이션 스키마로 변환하는 것
    • 개체와 관계는 개체 릴레이션과 관계 릴레이션으로
    • 속성은 컬럼으로, 식별자는 기본키로, 릴레이션 간 관계는 기본키와 이를 참조하는 외래키로
    • 1:1 관계시 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가하거나 그 반대로 추가해 표현
    • 1:N 관계시 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가
    • N:M 관계시 릴레이션 A, B의 기본키를 모두 포함한 별도의 릴레이션으로 표현(교차 릴레이션, 교차 엔티티)

키의 개념 및 종류

 

  • 슈퍼키 : 한 릴레이션 내 속성들의 집합
  • 후보키 : 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 기본키 : 후보키 중 특별히 선정된 키. 중복 값과 NULL값을 가질 수 없음.
  • 대체키 : 후보키 중 기본키를 제외한 나머지 후보키
  • 외래키 : 다른 릴레이션 기본키를 참조하는 속성 또는 속성들의 집합

무결성

 

무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계 실제값이 일치하는 정확성을 의미.

 

  • 개체 무결성 : 기본키를 구성하는 어떤 속성도 Null값이나 중복 값을 가질 수 없다.
  • 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다.
  • 참조 무결성 : 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
  • 사용자 정의 무결성 : 속성 값들이 사용자 정의 제약조건에 만족해야 한다.
  • NULL 무결성 : 릴레이션 특정 속성 값이 NULL이 될 수 없도록 하는 규정
  • 고유 무결성 : 릴레이션 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다.
  • 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다.
  • 관계 무결성 : 릴레이션 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션 튜플 사이 관계에 대한 적절성 여부를 지정한 규정

네트워크 / 인터넷

 

네트워크란 두 대 이상의 컴퓨터를 전화선이나 케이블 등으로 연결해 자원을 공유하는 것.

 

  • 종류
    • 근거리 통신망(LAN; Local Area Network) : 주로 자원 공유를 목적으로 사용하며, 거리가 짧아 데이터의 전송 속도가 빠르고 에러 발생율이 낮은 네트워크. 버스형이나 링형 구조 사용.
    • 광대역 통신망(WAN; Wide Area Network) : 국가-국가, 대륙-대륙과 같이 멀리 떨어진 사이트 연결. 통신 속도가 느리고 에러 발생률이 높음. 일정한 지역에 있는 사이트들을 근거리 통신망으로 연결 후 각 근거리 통신망을 연결하는 방식 사용

 

인터넷이란 TCP/IP 프로토콜 기반 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위 컴퓨터 통신망

  • 미 국방성의 ARPANET에서 시작.
  • 유닉스 운영체제 기반
  • 인터넷 연결된 모든 컴퓨터는 고유한 IP 주소를 가짐
  • 컴퓨터 또는 네트워크를 연결하기 위해 브리지, 라우터, 게이트웨이 사용.
  • 인터넷의 주가 되는 기간망을 일컫는 용어를 백본이라 함.

  • IP 주소(Internet Protocol Address) : 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소.
    • 숫자로 8비트씩 4부분, 총 32비트로 구성.
      • A 클래스 : 국가나 대형 통신망에 사용 
      • B 클래스 : 중대형 통신망에 사용 
      • C 클래스 : 소규모 통신망에 사용 
      • D 클래스 : 멀티캐스트 용으로 사용 
      • E 클래스 : 실험적 주소. 공용되지 않음
  • IPv6(Internet Protocol version 6) : IPv4의 주소 부족 문제를 해결하기 위해 개발
    • IPv4에 비해 자료 전송 속도가 빠르며, 호환성이 뛰어남.
    • 인증성, 기밀성, 데이터 무결성 지원으로 보안 문제 해결 가능
    • 주소의 확장성, 융통성, 연동성이 뒤어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능 지원.
    • Traffic Class(패킷 클래스, 우선순위를 나타내는 필드), Flow Label(네트워크 상 패킷들 흐름에 대한 특성을 나타내는 필드)을 이용해 등급별, 서비스별 패킷을 구분할 수 있어 품질 보장이 용이
    • 구성
      • 16비트씩 8부분, 총 128비트로 구성.
      • 각 부분을 16진수씩 표현, 콜론으로 구분.
      • 세 가지 주소 체계
        • 유니캐스트 : 단일 송신자와 단일 수신자 간 통신
        • 멀티캐스트 : 단일 송신자와 다중 수신자 간 통신
        • 애니캐스트 : 단일 송신자와 가장 가까이 있는 단일 수신자 간 통신
  • 도메인 네임 : 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것.
    • 호스트 컴퓨터 이름.소속 기관 이름.소속 기관 종류.소속 국가명 ex) www.google.co.kr
    • DNS(Domain Name System) : 문자로 된 것을 다시 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템. 이런 역할을 하는 서버는 DNS 서버.

OSI 참조 모델

 

다른 시스템 간 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약

 

  • 물리 계층 : 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙 정의
    • 물리적 전송 매체와 전송 신호 방식 정의.
      • 표준 : RS-232C, X.21 
    • PDU(프로토콜 데이터 단위) : 비트
    • 관련 장비 : 리피터, 허브
  • 데이터 링크 계층 : 두 개 인접한 개방 시스템들 간 신뢰성 있고 효율적 정보 전송을 할 수 있도록 함.
    • 송신 측과 수신 측 속도 차를 해결하기 위한 흐름 제어 기능, 프레임의 시작과 끝을 구분하기 위한 프레임 동기화 기능, 오류 검출과 회복을 위한 오류 제어 기능, 프레임의 순서적 전송을 위한 순서 제어 기능
      • 표준 : HDLC, LAPB, LLC, MAC, LAPD, PPP 
    • PDU : 프레임
    • 관련 장비 : 랜카드, 브리지, 스위치
  • 네트워크 계층 : 개방 시스템들 간 네트워크 연결을 관리하는 기능과 데이터 교환 및 중계 기능을 함.
    • 네트워크 연결을 설정, 유지, 해제. 경로 설정(Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행
      • 표준 : X.25, IP
    • PDU : 패킷
    • 관련 장비 : 라우터
  • 전송 계층 : 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간 투명한 데이터 전송을 가능하게 함.
    • OSI 하위 3계층과 상위 3계층의 인터페이스 담당. 종단 시스템 간 전송 연결 설정, 데이터 전송, 연결 해제 기능. 주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어 수행
      • 표준 : TCP, UDP 
    • PDU : 세그먼트
    • 관련 장비 : 게이트웨이
  • 세션(두 이용자 간의 연결) 계층 : 송*수신 측 간 관련성 유지, 대화 제어 담당
    • 대화 구성 및 동기 제어, 데이터 교환 관리 기능을 함. 송*수신 측 간 대화 동기를 위해 전송하는 정보 일정 부분에 체크점을 두어 정보 수신 상태를 체크하며, 이 때 체크점을 동기점이라고 함. 동기점의 종류로는 대동기점(각 데이터 처음과 끝을 사용해 전송하는 데이터 단위를 대화 단위로 구성하는 역할. 수신 측으로부터 확인 신호 받음)과 소동기점(하나의 대화 단위 내 데이터 전달을 제어하는 역할. 수신 측으로부터 확인 신호 안 받음)이 있음. 
    • PDU : 메시지
  • 표현 계층 : 응용 계층으로부터 받은 메시지를 세션 계층에 보내기 전 통신에 적당한 형태로 변환, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환.
    • 서로 다른 데이터 표현 형태를 갖는 시스템 간 상호 접속을 위해 필요한 계층. 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 포맷 변환, 문맥 관리 기능을 함.
  • 응용 계층 : 사용자가 OSI 환경에 접근할 수 있게 서비스 제공.
    • 응용 프로세스 간 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스 제공 
    • PDU : 메시지

네트워크 관련 장비

 

  • 네트워크 인터페이스 카드(NIC; Network Interface Card)(이더넷 카드(LAN 카드) 혹은 네트워크 어댑터) : 컴퓨터-컴퓨터 또는 컴퓨터-네트워크 연결 장치. 정보 전송 시 케이블을 통해 전송 가능하게 정보 형태 변경.
  • 허브 : 한 사무실이나 가까운 거리 컴퓨터들 연결 장치. 각 회선을 통합적으로 관리. 신호 증폭 기능을 하는 리피터 역할도 포함.
    • 종류
      • 더미 허브 : 네트워크에 흐르는 모든 데이터 단순 연결 기능만 제공. LAN이 보유한 대역폭을 컴퓨터 수만큼 나누어 제공
      • 스위칭 허브 : 네트워크 상 흐르는 데이터의 유무 및 흐름을 제어해 각각의 노드가 허브의 최대 대역폭을 사용할 수 있는 지능형 허브. 최근의 대부분의 허브이다.
  • 리피터 : 전송되는 신호가 왜곡되거나 약해질 경우 원래 신호 형태로 재생하여 다시 전송하는 역할. 근접한 네트워크 사이 신호 전송하는 역할. 전송 거리 연장 또는 배선의 자유도를 높이기 위한 용도로 사용 - 물리 계층
  • 브리지 : LAN과 LAN을 연결하거나 LAN 안에서 컴퓨터 그룹(세그먼트)을 연결하는 기능 수행. 트래픽 병목 현상을 줄일 수 있음. 네트워크를 분산적으로 구성할 수 있어 보안성을 높일 수 있음. 브리지를 이용한 서브넷 구성 시 브리지가 n개일 때 전송 가능한 회선 수는 n(n-1)/2개이다. - 데이터 링크 계층
  • 스위치 : LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치. 하드웨어를 기반으로 처리해 전송 속도가 빠름. 포트마다 각기 다른 전송 속도를 지원하도록 제어할 수 있고, 수십에서 수백 개의 포트 제공. - 데이터 링크 계층
    • 분류 (각 숫자마다 속하는 OSI 계층을 뜻함)
      • L2 스위치 : 일반적으로 부르는 스위치. 동일 네트워크 간 연결만 가능.
      • L3 스위치 : 라우터 기능 추가. 서로 다른 네트워크 간 연결 가능
      • L4 스위치 : L3 스위치에 로드밸런서(트래픽 분산)가 달린 것.
      • L7 스위치 : TCP/UDP 포트 정보에 패킷 내용까지 참조해 세밀하게 로드밸런싱함.
  • 라우터 : LAN과 LAN의 연결 기능 + 데이터 전송의 최적 경로를 선택할 수 있는 기능. 서로 다른 LAN이나 LAN과 WAN 연결도 수행. 접속 가능한 경로에 대한 정보를 라우팅 제어표에 저장해 보관. 프로토콜 변환 기능 수행 - 네트워크 계층
  • 게이트웨이 : 전 계층 프로토콜 구조가 다른 네트워크 연결을 수행. 세션, 표현, 응용 계층 간 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 등 수행. LAN에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 데이터를 받아들이는 출입구 역할을 함. - 전송 계층

※ 프로토콜이란? 서로 다른 기기들 간 데이터 교환을 원활히 수행할 수 있도록 표준화시켜 놓은 통신 규약

  • 기본 요소 
    • 구문(Syntax) : 전송하고자 하는 데이터 형식, 부호화, 신호 레벨
    • 의미(Semantics) : 두 기기 간 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보 규정
    • 시간(Timing) : 두 기기간 통신 속도, 메시지 순서 제어 등 규정

 

TCP / IP

 

TCP / IP(TCP 프로토콜과 IP 프로토콜이 결합된 것)는 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜이다.

 

  • 구조
    • 응용 계층 : 응용 프로그램 간 데이터 송*수신 제공
      • OSI에서의 응용 / 표현 / 세션 계층
      • 주요 프로토콜
        • FTP(File Transfer Protocol) : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이 파일을 주고 받을 수 있도록 하는 원격 파일 전송 프로토콜
        • SMTP(Simple Mail Transfer Protocol) : 전자 우편 교환 서비스
        • TELNET : 멀리 떨어진 컴퓨터를 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스. 가상의 터미널 기능 수행.
        • SNMP(Simple Network Management Protocol) : 네트워크 관리 프로토콜. 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약
        • DNS(Domain Name System) : 도메인 네임을 IP주소로 맵핑하는 시스템
        • HTTP(HyperText Transfer Protocol) : 월드 와이드 웹(WWW)에서 HTML 문서를 송수신하기 위한 표준 프로토콜
    • 전송 계층 : 호스트들 간 신뢰성 있는 통신 제공
      • OSI에서의 전송 계층
      • 주요 프로토콜
        • TCP(Transmission Control Protocol)
          • 양방향 연결형 서비스 제공
          • 가상 회선 연결 형태 서비스 제공
          • 스트림 위주 전달(패킷 단위). 패킷 교환 방식 : 가상 회선 방식
          • 신뢰성 있는 경로 확립, 메시지 전송 감독
          • 순서 제어, 오류 제어, 흐름 제어 기능
          • 패킷 분실, 손상, 지연 혹은 순서가 틀린 것 등 발생 시 투명성이 보장되는 통신 제공
        • UDP(User Datagram Protocol) 
          • 데이터 전송 전 연결을 설정하지 않는 비연결형 서비스 제공
          • TCP에 비해 단순한 헤더 구조를 가져 오버헤드가 적음.
          • 고속의 안정성 있는 전송 매체를 사용해 빠른 속도를 필요로 하는 경우, 동시에 여러 사용자에게 데이터를 전달할 경우, 정기적으로 반복해서 전송할 경우 사용.
          • 실시간 전송에 유리. 신뢰성보다 속도가 중요시되는 네트워크에서 사용.
          • 패킷 교환 방식 : 데이터그램 방식
        • RTCP(Real-Time Control Protocol)
          • RTP(실시간 특성을 갖는 데이터 종단간 전송을 제공해주는 UDP 기반 프로토콜) 패킷 전송 품질을 제어하기 위한 제어 프로토콜.
          • 세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송
          • 하위 프로토콜은 데이터 패킷과 제어 패킷의 다중화 제공
          • 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만 제공
          • 패킷은 항상 32비트의 경계로 끝남.
    • 인터넷 계층 : 데이터 전송을 위한 주소 지정, 경로 설정 제공
      • OSI에서의 네트워크 계층
      • 주요 프로토콜
        • IP(Internet Protocol)
          • 전송할 데이터에 주소를 지정해 경로를 설정하는 기능.
          • 비연결형인 데이터그램 방식을 사용. 신뢰성이 보장되지 않음. (신뢰성 요구는 TCP 같은 상위 계층에서 제공)
        • ICMP(Internet Control Message Protocol) : IP와 조합해 통신 중 발생하는 오류 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할. 헤더는 8Byte로 구성.
        • IGMP(Internet Group Management Protocol) : 멀티캐스트를 지원하는 호스트나 라우터 사이 멀티캐스트 그룹 유지를 위해 사용
        • ARP(Address Resolution Protocol) : 호스트 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소로 변경
        • RARP(Reverse Address Resolution Protocol) : 물리적 주소를 IP 주소로 변환
    • 네트워크 액세스 계층 : 실제 데이터(프레임)를 송*수신하는 역할
      • OSI에서의 데이터링크 계층
      • 주요 프로토콜
        • Ethernet(IEEE 802.3) : CSMA/CD 방식 LAN
        • IEEE 802 : LAN을 위한 표준 프로토콜
        • HDLC : 비트 위주 데이터 링크 제어 프로토콜
        • X.25 : 패킷 교환망을 통한 DTE와 DCE 간 인터페이스 제공 프로토콜 (네트워크 계층 표준)
          • 이것의 오버헤드를 제거하여 고속 데이터 통신에 적합하게 개선한게 프레임 릴레이
        • RS-232C : 공중 전화 교환망을 통한 DTE, DCE 간 인터페이스 제공 프로토콜 (물리 계층 표준)

데이터 교환 방식 / 라우팅

 

데이터 교환 방식

  • 회선 교환 방식(Circuit Switching) : 통신을 원하는 두 지점을 교환기를 이용해 물리적으로 접속시키는 방식
    • 종류 
      • 공간 분할 교환 방식(SDS) : 기계식 접점과 전자 교환기의 전자식 접점 등을 이용해 교환 수행.
      • 시분할 교환 방식(TDS) : 전자 부품이 갖는 고속성과 디지털 교환 기술을 이용해 다수의 디지털 신호를 시분할적으로 동작시켜 다중화하는 방식
  • 패킷 교환 방식(Packet Switching) : 메시지를 일정한 길이 패킷으로 잘라 전송하는 방식. 패킷 교환망은 네트워크 계층에 해당.
    • 종류
      • 가상 회선 방식 : 단말장치 상호간 논리적 가상 통신 회선을 미리 설정해 송신지와 수신지 사이 연결을 확립 후 설정된 경로를 따라 패킷들을 순서적으로 운반하는 방식
      • 데이터그램 방식 : 연결 경로를 설정하지 않고 인접한 노드들 트래픽(전송량) 상황을 감안해 각각 패킷들을 순서 상관없이 독립적으로 운반하는 방식

 

라우팅 : 송 * 수신 측 간 전송 경로 중 최적 패킷 교환 경로를 결정하는 기능. 경로 제어표를 참조해 이뤄지며 라우터에 의해 수행됨.

  • 라우팅 프로토콜
    • RIP(Routing Information Protocol) : 현재 가장 널리 사용되는 라우팅 프로토콜. 소규모 동종 네트워크 내에서 효율적 방법
    • IGRP(Interior Gateway Routing Protocol) : RIP 단점을 보완하기 위해 만들어 개발된 것. 네트워크 상태를 고려해 라우팅하며, 중규모 네트워크에 적합.
    • OSPF(Open Shortest Path First Protocol) : 대규모 네트워크에서 많이 사용. 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내 모든 라우터에 알림.
    • BGP(Border Gateway Protocol) : 자율 시스템 간 라우팅 프로토콜.  EGP간 단점 보완
  • 라우팅 알고리즘
    • 종류
      • 거리 벡터 알고리즘 : 인접해 있는 라우터 간 거리, 방향에 대한 정볼르 이용해 최적의 경로를 찾고 그 최적 경로를 이용할 수 없을 경우 다른 경로를 찾는 알고리즘.
        • RIP, IGRP
      • 링크 상태 알고리즘 : 라우터와 라우터 간 모든 경로를 파악해 미리 대체 경로를 마련해 두는 알고리즘.
        • OSPF
  • 라우팅 경로 확인 명령어 route print, tracert (window) route (linux)

 

 

 

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

11장 소프트웨어 패키징  (0) 2021.07.08
9장 소프트웨어 개발 보안 구축  (0) 2021.07.06
8장 SQL 응용  (0) 2021.07.06
7장 어플리케이션 테스트 관리  (0) 2021.07.05
6장 화면 설계  (0) 2021.07.02

9장 소프트웨어 개발 보안 구축

 

소프트웨어 개발 보안

 

개발 과정에서 발생할 수 있는 보안 취약점을 최소화해 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동.

데이터의 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 유지하는 것이 목표.

 

  • 소프트웨어 개발 보안 관련 기관
    • 행정안전부 : 개발 보안 정책 총괄, 보안 관련 법규, 지침, 제도 정비, 소프트웨어 보안 약점 진단하는 사람 양성 및 관련 업무 수행
    • 한국인터넷진흥원(KISA) : 소프트웨어 개발 보안 정책 및 가이드 개발, 소프트웨어 개발 보안에 대한 기술 지원, 교육과정 및 자격제도를 운영
    • 발주기관 : 개발 보안 계획 수립, 보안 사업자 및 감리법인 선정, 보안 준수 여부 점검
    • 사업자 : 개발 보안 관련 기술 수준 및 적용 계획 명시, 보안 관련 인력 대상 교육 실시, 보안 가이드 참조하여 개발, 자체적 보안 약점 진단 및 제거, 보안 약점 관련 시정 요구사항 이행
    • 감리법인 : 감리 계획 수립 및 협의, 소프트웨어 보안 약점 제거 여부 및 조치 결과 확인
  • 소프트웨어 개발 보안 활동 관련 법령
    • 개인정보 보호법 : 개인정보 처리 및 보호에 관한 사항을 정해 개인의 자유와 권리 보호
    • 정보통신망 이용촉진 및 정보보호 등에 관한 법률 : 정보통신망 이용 촉진 및 정보통신 서비스를 이용하는 이용자들의 개인정보 보호
    • 신용정보의 이용 및 보호에 관한 법률 : 개인 신용정보 효율적 이용과 체계적 관리를 통해 정보 오남용 방지
    • 위치정보의 보호 및 이용 등에 관한 법률 : 개인 위치정보의 안전한 이용 환경 조성, 정보 유출이나 오남용 방지
    • 표준 개인정보 보호 지침 : 개인정보 처리 기준, 개인정보 침해 유형 및 예방조치 등 세부사항 규정
    • 개인정보 안전성 확보 조치 기준 : 개인정보 처리자가 개인정보를 처리하는데 있어 개인정보가 분실, 도난, 유출, 위조, 변조, 훼손되지 않게 안전성 확보에 필요한 기술, 관리, 물리적 안전조치에 관한 최소한의 기준 규정
    • 개인정보 영향평가에 관한 고시 : 개인정보 영향평가를 위한 평가기관 지정, 영향평가의 절차 등에 관한 세부 기준 규정
  • 소프트웨어 개발 보안 활동 관련 기타 규정
    • RFID 프라이버시 보호 가이드라인 : RFID(전자태그) 시스템 이용자들의 프라이버시 보호, 안전한 RFID 이용 환경을 조성하기 위한 가이드라인
    • 위치정보의 관리적, 기술적 보호조치 권고 해설서 : 위치정보 사업자 및 위치기반 서비스 사업자가 준수해야 하는 관리적, 기술적 보호조치 구체적 기준
    • 바이오정보 보호 가이드라인 : 개인 바이오정보 보호와 안전한 활용을 위한 원칙 및 조치사항
    • 뉴미디어 서비스 개인정보 보호 가이드라인 : 뉴미디어 서비스 이용 및 제공 시 개인 정보 침해사고 예방키 위한 준수사항 

Secure SDLC(Software Development Life Cycle)

 

소프트웨어 개발 생명 주기(SDLC(요구사항 분석-명세-설계-구현))에 보안 강화를 위한 프로세스를 포함한 것

 

  • 보안 요소
    • 기밀성 : 시스템 내 정보와 자원은 인가된 사용자에게만 접근 허용
    • 무결성 : 시스템 내 정보는 인가된 사용자만 수정 가능
    • 가용성 : 인가받은 사용자는 언제라도 사용 가능
    • 인증 : 사용자가 합법적인 사용자인지 확인하는 모든 행위
    • 부인 방지 : 데이터 송 * 수신한 사용자가 사실을 부인할 수 없게 송*수신 증거 제공
  • 각 생명 주기 단계에서의 보안 활동 
    • 요구사항 분석 단계 : 보안 항목에 해당하는 요구사항 식별 작업 수행
    • 설계 단계 : 식별된 보안 요구사항들 설계서에 반영, 보안 설계서 작성
      • 네트워크 : 네트워크 분리 혹은 방화벽 설치
      • 서버 : 보안이 뛰어난 운영체제 사용, 보안 업데이트, 외부 접속에 대한 접근 통제 실시
      • 물리적 보안 : 감시설비 설치
      • 개발 프로그램 : 허가되지 않은 프로그램 통제, 지속적 데이터 무결성 검사 실시
    • 구현 단계 : 표준 코딩 정의서(네이밍 규칙, 주석 첨부 방식 등을 정의해 둔 문서) 및 소프트웨어 개발 보안 가이드(정부에서 제작, 배포하는 소프트웨어 개발 보안 지침)를 준수하며, 설계서에 따라 보안 요구사항들 구현
      • 시큐어 코딩 : 소프트웨어 구현 단계 시 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하여 코딩하는 것  
    • 테스트 단계 : 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
      • 설계 단계서 식별된 위험들 외 구현 단계에서 추가로 지적된 위험들을 점검할 수 있도록 테스트 계획 수립 및 시행
      • 모든 결과는 문서화하여 보존하며, 피드백되어야 함.
    • 유지보수 단계 : 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안 사고들 식별, 사고 발생 시 이를 해결하고 보안 패치 실시.

세션 통제 (요구사항 분석 및 설계 단계)

 

세션은 서버와 클라이언트의 연결을 의미.

세션 통제는 세션의 연결 + 세션의 연결로 인해 발생하는 정보를 관리하는 것

 

  • 보안 약점 종류
    • 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션 ID 발급, 타임아웃이 너무 길게 설정
      • 세션 하이재킹(세션 가로채기)같은 공격을 당할 위험
    • 잘못된 세션에 의한 정보 노출
      • 다중 스레드 환경에서 멤버 변수(모든 메소드에서 접근 가능한 변수)에 정보 저장할 때 발생하는 보안 약점
        • 싱글톤 패턴에서 발생하는 레이스컨디션(두 개 이상 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태)으로 인해 동기화 오류 발생 혹은 멤버 변수 정보 노출 가능성
  • 세션 설계 고려 사항
    • 모든 페이지에서 로그아웃 가능하게 해야 함
    • 로그아웃 시 할당 세션이 완전 제거되도록 함
    • 세션 타임아웃은 중요도가 높으면 2~5분 낮으면 15~30분
    • 이전 세션이 종료되지 않으면 새 세션 생성 불가
    • 중복 로그인을 허용하지 않은 경우 클라이언트 중복 접근에 대한 세션 관리 정책 수립
  • 세션 ID 관리 방법
    • 안전한 서버에서 최소 128비트 길이로 생성
    • 안전한 난수 알괼즘 적용
    • ID가 노출되지 않도록 URL Rewrite 기능 사용하지 않는 방향으로 설계
    • 로그인 시 로그인 전 세션 ID 삭제 및 재할당
    • 장기간 접속 세션 ID는 주기적으로 재할당

입력 데이터 검증 및 표현 (구현 단계)

 

입력 데이터로 인해 발생하는 문제들을 예방하기 위한 보안 점검 항복들.

 

  • 보안 약점 종류
    • SQL 삽입 : 입력란에 SQL을 삽입해 무단으로 DB를 조회하거나 조작.
      • 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링되도록 설정
    • 경로 조작 및 자원 삽입 : 데이터 입출력 경로를 조작해 서버 자원을 수정*삭제할 수 있는 보안 약점
      • 사용자 입력값을 식별자로 사용 시 경로 순회 공격을 막는 필터 사용해 방지
    • 크로스사이트 스크립팅 : 웹페이지에 악의적 스크립트를 삽입해 방문자 정보 탈취, 비정상적 기능 수행을 유발하는 보안 약점
      • HTML 태그 사용 제한, 스크립트에 삽입되지 않게 '<','>','&' 등의 문자를 다른 문자로 치환함으로써 방지
    • 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어 실행 유도, 권한을 탈취하거나 시스템 장애 유발
      • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하기, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않기
    • 위험한 형식 파일 업로드 : 악의적 명령어 포함 스크립트 파일을 업로드해 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점
      • 업로드 파일 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 경로 분리, 실행 속성 제거
    • 신뢰되지 않는 URL 주소 자동접속 연결 : 입력 값으로 사이트 주소를 받는 경우 이를 조작해 방문자를 피싱 사이트로 유도
      • 연결되는 외부 사이트 주소를 화이트 리스트로 관리해 방지

보안 기능 (구현 단계)

구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들

 

  • 보안 약점 종류
    • 적절한 인증 없이 중요 기능 허용 : 보안 검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경 가능
      • 재인증 기능으로 방지
    • 부적절한 인가 : 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한 탈취
      • 모든 실행경로에 대해 접근제어 검사 수행, 사용자에게 반드시 필요한 접근 권한만 부여해 방지
    • 중요한 자원에 대한 잘못된 권한 설정 : 권한 설정이 잘못된 자원에 접근해 해당 자원 임의 사용 가능
      • 소프트웨어 관리자만 자원들을 읽고 쓸 수 있게 설정, 인가되지 않은 사용자의 중요 자원에 대한 접근 여부 검사
    • 취약한 암호화 알고리즘 사용 : 암호화된 환경설정 파일을 해독해 비밀번호 등 중요정보 탈취
      • 안전한 암호화 알고리즘 사용, 업무관련 내용 및 개인정보 등에 대해서 IT보안인증사무국이 안정성을 확인한 암호모듈 이용
    • 중요정보 평문 저장 및 전송 : 암호화되지 않은 평문 데이터 탈취하여 중요 정보 획득
      • 중요 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 한다. HTTPS / SSL 과 같은 보안 채널을 이용한다.
    • 하드코드(데이터를 코드 내부에 직접 입력하는 방식)된 비밀번호 : 소스코드 유출 시 내부 하드코드된 패스워드를 이용해 관리자 권한 탈취 가능
      • 패스워드는 암호화해 별도 파일 저장, 디폴트 패스워드나 디폴트키 사용을 피한다.

시간 및 상태

 

동시 수행 지원 병렬 처리 시스템 혹은 다수 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리해 시스템이 원활하게 동작되도록 하기 위한 보안 검증 항목들

 

  • 보안 약점 종류
    • TOCTOU 경쟁 조건 : 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점. 검사 시점 시 사용 가능했던 자원이 사용 시점 시 사용 불가능한 경우 발생
      • 프로세스 자원 정보와 실제 자원 상태가 일치하지 않는 동기화 오류, 교착상태(프로세스들이 이미 자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하여 무한히 기다리는 현상) 등이 발생할 수 있음.
        • 코드 내 동기화 구문 사용, 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성하여 방지
    • 종료되지 않는 반복문 또는 재귀함수 : 종료 조건을 정의하지 않았거나 논리 구조상 종료될 수 없는 경우 발생
      • 시스템 자원을 끊임없이 사용해 서비스 또는 시스템이 자원고갈로 정지하거나 종료됨
        • 수행 횟수 제한 혹은 종료 조건을 점검해 반복 또는 호출 종료 여부 확인하여 방지

에러처리

 

소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들

 

  • 보안 약점 종류
    • 오류 메시지를 통한 정보 노출 : 오류 방생으로 중요 정보를 메시지로 외부에 노출하는 보안 약점
      • 오류 메시지의 경우 노출 경로 및 디버깅 정보는 해커의 악의적 행위를 도울 수 있음. 예외처리 구문 혹은 예외 이름이나 스택 트레이스를 출력하도록 코딩한 경우 해커는 소프트웨어 내부구조를 쉽게 파악 가능.
        • 오류 발생 시 가능한 내부에서 처리되도록 하거나 메시지를 출력할 경우 최소한 정보 또는 사전에 준비된 메시지만 출력되도록 해 방지
    • 오류 상황 대응 부재 : 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점
      • 예외처리를 하지 않은 오류들로 인해 소프트웨어 실행이 중단되거나 의도를 벗어난 동작 유도
        • 오류 발생 가능성이 잇는 부분에 예외처리 구문 작성, 제어문을 활용해 오류가 악용되지 않도록 코딩해 방지
    • 부적절한 예외처리 : 광범위하게 묶어 한 번에 예외 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점
      • 광범위한 예외처리 구문 정의 시 예기치 않은 문제 발생 가능성, 함수 등 예상했던 결과와 다른 값을 반환해 예외로 처리되지 않은 경우 잘못된 값으로 인해 다양한 문제가 발생할 가능성
        • 모든 함수의 반환값이 의도대로 출력되는지 확인, 세분화된 예외처리 수행

코드 오류

 

개발자들이 코딩 중 실수하기 쉬운 오류를 예방하기 위한 보안 점검 항목들

 

  • 보안 약점 종류
    • 널 포인터 역참조 : 널 포인터가 가리키는 메모리에 어떤 값을 저장할 때 발생하는 보안 약점
      • 공격자가 널 포인터 역참조로 발생하는 예외 상황 악용 가능
        • 널이 될 수 있는 포인터를 이용하기 전 널 값을 갖고 있는지 검사함으로써 방지
    • 부적절한 자원 해제 : 자원 반환 코드 누락 혹은 프로그램 오류로 할당 자원을 반환하지 못햇을 때 발생하는 보안 약점
      • 유한한 시스템 자원이 계속 점유 시 자원 부족으로 새로운 입력을 처리하지 못할 수 있음
        • 자원 반환 코드가 누락되었는지 확인, 오류로 인해 함수가 중간에 종료되었을 시 예외처리 관계없이 자원이 반환되도록 코딩함으로써 방지
    • 해제된 자원 사용 : 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점
      • 반환된 메모리 참조 시 예상하지 못한 값 또는 코드를 수행하게 되어 의도치 않은 결과 발생
        • 반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화
    • 초기화되지 않은 변수 사용 : 변수 선언 후 값이 부여되지 않은 변수 사용 시 발생하는 보안 약점
      • 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전 사용하던 내용이 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있음
        • 변수 선언 시 할당된 메모리를 초기화함으로써 방지

캡슐화

 

정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들

 

  • 보안 약점 종류
    • 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
      • 레이스컨디션으로 인해 동기화 오류 발생 혹은 멤버 변수 정보 노출 가능성
        • 멤버 변수보다 지역 변수 활용
    • 제거되지 않고 남은 디버그 코드 : 개발 중 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점
      • 중요한 정보가 디버그 코드로 노출될 수 있음. 혹은 디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있을 경우 공격자가 악용 가능
        • 소프트웨어 배포 전 코드 검사를 통해 남아있는 디버그 코드 삭제
    • 시스템 데이터 정보 노출 : 시스템 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩 시 발생하는 보안 약점
      • 중요 정보가 시스템 메시지로 인해 유출 가능성
        • 시스템 메시지에 최소한의 정보만 제공함으로써 방지
    • Public 메소드로부터 반환된 Private 배열 : 선언된 클래스 내에서만 접근 가능한 Private 배열을 모든 클래스에서 접근 가능한 Public 메소드에서 반환할 때 생기는 보안 약점
      • Public 메소드가 Private 배열을 반환하면 배열 주소가 외부로 공개돼 외부에서 접근할 수 있게 됨.
        • Pirvate 배열을 별도 메소드를 통해 조작하거나 동일한 형태의 복제본으로 반환 후 값을 전달하는 방식으로 방지 가능.
    • Private 배열에 Public 데이터 할당 : Private 배열에 Public으로 선언된 데이터 또는 메소드 파라미터를 저장할 때 발생하는 보안 약점
      • Private 배열에 Public 데이터를 저장 시 Private 배열을 외부에서 접근할 수 있게 됨.
        • Public으로 선언된 데이터를 Private 배열에 저장 시 레퍼런스가 아닌 값을 직접 저장함으로써 방지 즉, 메모리를 공유하는 것이 아닌 순수한 값만을 공유.(깊은 복사)

API 오용

 

API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 검증 항목들

 

  • 보안 약점 종류
    • DNS Lockup에 의존한 보안 결정 : 도메인명에 의존해 인증이나 접근 통제 등 보안 결정을 내리는 경우 발생하는 보안 약점
      • DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간 네트워크 트래픽을 유도해 악성 사이트를 경유하도록 조작 가능. DNS Lockup을 악용해 인증이나 접근 통제를 우회하는 수법으로 권한 탈취 가능성.
        • DNS 검색을 통해 도메인 이름을 비교하지 않고 IP 주소를 직접 입력해 접근함으로써 방지
    • 취약한 API 사용 : 보안 문제로 사용 금지된 API를 사용하거나, 잘못된 방식으로 API를 사용 시 발생하는 보안 약점
      • 보안상 안전한 API라 할지라도 자원에 직접 연결이나, 네트워크 소켓을 통한 직접 호출 같이 보안에 위협을 줄 수 있는 인터페이스를 사용하는 경우 보안 약점에 노출
        • 보안 문제로 금지된 함수는 안전한 함수로 대체, API 매뉴얼을 참고해 보안이 보장되는 인터페이스 사용함으로써 방지

암호 알고리즘

 

중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법

 

  • 암호화 방식
    • 양방향
      • 개인키 암호화 기법(or 대칭 암호 기법 or 단일키 암호화 기법): 동일한 키로 데이터를 암호화하고 복호화
        • 종류 
          • 블록(한 번에 하나의 데이터 블록 암호화) 암호화 방식
            • DES : 미국 NBS에서 발표한 개인키 암호화 알고리즘. DES를 3번 적용해 강화한 3DES도 존재. 블록 크기 64비트, 키 길이 56비트.
            • SEED : 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘. 블록 크기 128비트. 키 길이에 따라 128, 256으로 분류
            • AES : 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘. 블록 크기 128비트, 키 길에 따라 128, 192, 245으로 분류
            • ARIA : 국가 정보원과 산학연협회가 개발한 블록 암호화 알고리즘. 블록 크기는 128비트. 키 길이에 따라 128, 192, 256으로 분류
          • 스트림(평문과 동일한 길이 스트림을 생성해 비트 단위로 암호화) 암호화 방식
            • LFSR
            • RC4
        • 장점 : 빠른 암호화 / 복호화 속도, 단순한 알고리즘, 작은 파일 크기
        • 단점 : 관리해야 할 키 수가 사용자 수와 비례하게 증가
      • 공개키 (비대칭 암호화 기법) : 데이터 암호화 시 사용하는 공개키는 DB 사용자에게 공개하고, 복호화할 때 비밀키는 관리자가 비밀리에 관리.
        • 장점 : 용이한 키 분배, 적은 관리할 키 개수
        • 단점 : 느린 암호화 / 복호화 속도, 복잡한 알고리즘, 큰 파일 크기
        • RSA : MIT에 의해 제안된 공개키 암호화 알고리즘. 큰 숫자를 소인수분해 하기 어렵다는 것에 기반해 개발. 여기서 키란 메시지를 열고 잠그는 상수를 의미.
    • 단방향
      • HASH : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것.
        • 해시 알고리즘(해시 함수)로 변환된 값이나 키를 해시값 또는 해시키라 부름.

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

11장 소프트웨어 패키징  (0) 2021.07.08
10장 응용 SW 기초 기술 활용  (0) 2021.07.07
8장 SQL 응용  (0) 2021.07.06
7장 어플리케이션 테스트 관리  (0) 2021.07.05
6장 화면 설계  (0) 2021.07.02

+ Recent posts