소프트웨어 개발의 비용 산정 기법

소프트웨어 비용 산정은 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한
계획을 수립하기 위해 필요한 비용을 산정하는 것
  • 하향식 비용 산정 기법
과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
  • 종류
전문가 감정기법 조직 내에 있는 경험이 많은 두 명 이상의 전문강게 비용
산정을 의뢰하는 기법
델파이 기법 전문가 감정 기법의 주관적인 편견을 보완하기 많은 전문가의 의견을 종합하여 산정하는 기법
  • 상향식 비용 산정 기법
프로젝트의 세부적인 작업 단위별로 비용을 산정한 후, 집계하여 전체 비용을 산정하는 방법
  • 종류
LOC(원시 코드 라인 수)기법 노력 = 개발 기간 X 투입 인원
= LOC / 1인당 월평균 생산 코드 라인 수 실기기출

개발 비용 = 노력 X 단위 비용(1인당 월평균 인건비)
개발 기간 = 노력 X 투입 인원
생산성 = LOC / 노력
개발 단계별 인월수 기법 LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는데 필요한 노력을 생명 주기의 각 단계별로 산정

 

서비스 거부 공격

표적이 되는 서버의 자원을 과갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 방해하는 것이다.
  • 서비스 거부 공격의 유형
Ping of Death ( 죽음의 핑 ) Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용범위이상으로 전송해서 공격 대상 네트웨크를 마비시키는
서비스 거부 공격 방법
Smurfing ( 스머핑 ) 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써
네트워크 또는 시스템의 상태를 불능으로 만드는 공격 방법 
SYN Flooding 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는
공격 방법
TearDrop 데이터 송수신 과정에서 패킷의 크기가 여러 개로 분할되어 전송될 때, 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록 Fragment Offset값을 함께 전송하는데, 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
Land 실기기출 패킷을 전송할 때 송신 IP 주소와 수신 IP주소를 모두 공격 대상의 IP주소로 하여 공격 대상에게 전송하는 것
이러한 패킷을 계속 전송해서 자신에 대해 무한히 응답하게 되므로 컴퓨터 실행 속도를 느리게 하거나 동작을 마비시킴
DDos( Distributed Denial of Service,
분산 서비스 거부 공격 )
여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것. 네트워크에서 취약점이 있는 호스트를 탐색한 후 이들 호스트들에 분산 서비스 공격용 툴을 설치하여 에이전트로 만든후 DDos 공격에 이용

 

네트워크 침해 공격 관련 용어

스미싱 ( Smishing ) 각종 행사 안내, 경품 안내 등의 문자 메시지(SMS)를 이용해
사용자의 개인 신용 정보를 빼내는 수법
스피어 피싱 ( Spear Phishing ) 특정 대상을 선정한 후 , 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송, 방송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취
APT ( Advanced Persistent Threats, 지능형 지속 위협 ) 다양한 IT기술과 방식들을 이용해, 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤,
때를 기다리면서 보안을 무력화 시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
무작위 대입 공격( Brute Force Attack )  암호화된 문서의 암호키를  찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하느 방식
큐싱 ( Qshing ) QR코드(Quick Response Code)를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법의 하나
SQL 삽입 공격 전문 스캐너 프로그램 or 봇넷 등을 이용해 웹사이트를
무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 DB 등의 데이터를 조작하는 일련의 공격 방식

 

정보 보안 침해 공격 관련 용어

좀비( Zombie ) PC 악성코드로 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
C&C 서버 해커가 원격자에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
봇넷( Botnet ) 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
웜 ( Worm ) 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스 일종
제로 데이 공격 ( Zero Day Attack ) 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 공표되기도 전에 해당 취약점을 통하여 이뤄지는 보안 공격
공격의 신속성을 의미
키로커 공격 ( Key Logger Attack ) 컴퓨터 사용자의 키보드 움직임을 탐지해 ID,패스워드
계좌번호, 등 개인 중요 정보를 몰래 빼가는 해킹 공격
랜섬웨어 ( Ransomware ) 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을
암호화해 사용자가 열지 못하게 하는 프로그램
백도어 ( Back Door ) 시스템 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로, 컴퓨터 범죄에 악용되기도 함
[ 기법 ]
1. 무결성 검사
2. 로그 분석
3. SetUID 파일검사
트로이 목마 ( Trojan Horse ) 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것, 자기 복제 능력은 없다.

 

Secure SDLC

보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미
SDLC( Software Development Life Cycle, 소프트웨어 개발 생명주기 )
: 소프트웨어 개발 방법론의 바탕이 되는 것. 소프트웨어 개발을 위해 정의,운용,유지보수 등의 전 과정을 각 단계별로 나눈 것

시큐어 코딩( Secure Coding )
: 소프트웨어의 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것

 

보안 요소

소프트웨어 개발에 있어 충족시켜야할 요소 및 요건을 의미
기밀성 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
무결성 시스템 내의 정보는 오직 인간된 사용자만 수정가능
가용성 인가받은 사용자는 언제라도 사용 할 수 있다
인증 시스템 내의 정보와 자원을 사용하려는 사용자가
합법적인 사용자인지 확인하는 모든 행위
부인 방지 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록
송수신 증거를 제공

 

보안 점검 - 세션 통제

세션 - 서버와 클라이언트 연결 의미

 

보안 점검 - 입력 데이터 검증 및 표현

  • 입력 데이터 검증 및 표현의 보안 약점
크로스사이트 스크립팅(XSS) 웹페이지에 악의적인 스크립트 삽입하여 방문자들의 정보를
탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점
SQL 삽입 입력란에 SQL을 삽입하여 무단으로 DB를 조회하거나
조작하는 보안 약점
동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력 되지 않게 필터링하여 방지할 수 있다.
신뢰되지 않는 URL 주소로 자동접속 연결 입력 값으로 사이트 주소를 받는 경우 이를 조작하여
방문자를 피싱 사이트로 유도하는 보안 약점
연결되는 외부 사이트의 주소를 화이트 리스트
관리함으로써 방지할 수 있다.

 

암호 알고리즘

패스워드, 주민번호, 은행계좌와 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 or 방법
암호 알고리즘은 해시(Hash)를 사용하는 단방향 암호화 방식과, 개인키 및 공개키로 분류되는 양방향 암호화 방식이 있다.
개인키 암호화 기법
(Private Key Encryption)
동일한 키로 데이터를 암호화하고 복호화 한다.
"대칭 암호 기법" 또는 "단일키 암호화 기법" 이라고도 한다.
공개키 암호화 기법
(Public Key Encryption)
데이터를 암호화할 때 사용하는 공개키는 데이터베이스
사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 관리
"비대칭 암호 기법" 이라고도 한다.
해시(Hash) - 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 
값이나 키로 변환하는 것

[ 해시함수 종류 ]
- SHA 시리즈 : 1993년에 미국 NSA가 제작하고 미국 국립
표준으로 채택한 암호화 알고리즘
- MD5 : 1991년 MD4를 개선한 암호화 알고리즘, 각각의 
512비트 짜리 입력 메시지 블록에 대해 차례로 동작
- SNEFRU : 1990년 R C, Mercle에 의해 제안된 128, 254비트
암호화 알고리즘

 

개인키 암호화 방식 & 공개키 암호화 방식에서 사용되는 주요 암호화 알고리즘

SEED 1990년 KISA에서 개발한 블록 암호화 알고리즘
블록 크기는 128비트, 키 길기에 따라 128,256으로 분류
ARIA
(Academy Research Institite Agency)
2004년 개발한 블록 암호화 알고리즘
블록 크기는 128비트, 키 길이에 따라 128,192,256으로 분류
DES
(Data Encryption Standard)
1975년 미국 NBS, 개인키 암호화 알고리즘
블록 크기는 64비트, 키 길이는 56비트
AES
(Advanced Encryption Standard)
2001년 NIST에서 발표한 개인키 암호화 알고리즘
블록크기는 128비트, 키 길이에 따라 128,192,256으로 분류
RSA
(Rivest Shamir Adleman)
1978,MIT 제안한 암호화 알고리즘
소인수 분해 문제를 이용한 공개키 암호화 기법에 널리 사용
암호화 알고리즘
728x90
반응형

+ Recent posts