관리 메뉴

나구리의 개발공부기록

3장 - 소프트웨어 개발 보안 구축 핵심 요약 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 5강 - 정보시스템 구축 관리

3장 - 소프트웨어 개발 보안 구축 핵심 요약

소소한나구리 2024. 5. 8. 22:17

2024년도 시나공 필기 책 내용 정리 


섹션20. Secure SDLC

 

1. Seven Touchpoints

 

  • 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
  • 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트를 수행함

2. 보안 3대 요소

 

  • 기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용되며 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
  • 무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
  • 가용성 : 인가받은 사용자는 언제라도 사용할 수 있음

섹션21. 세션 통제

 

1. 세션 하이재킹(Session Hijacking)

 

  • 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격기법으로 세션 가로채기라고도 함
  • 탐지 기법에는 비동기화 상태 탐지, ACK Strom 탐지, 패킷의 유실 탐지, 예상치 못한 접속의 리셋 탐지가 있음

섹션22. 입력 데이터 검증 및 표현

 

1. SQL삽입(SQL Injection)

 

  • 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 보안 약점

2. 경로 조작 및 자원 삽입

 

  • 데이터 입/출력 경로를 조작하여 서버 자원을 수정 / 삭제 할 수 있는 보안 약점

3. 크로스사이트 스크립팅(XSS; Cross Site Scripting)

 

  • 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 수행을 유발하는 보안 약점

4. 운영체제 명령어 삽입

 

  • 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점

5. 메모리 버퍼 오버플로

 

  • 연속된 메모리 공간을 사용하는 프로그램에 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점

섹션23. 보안 기능

 

1. 하드코드된 비밀번호

 

  • 소스코드 유출 시 내부에 하드코드 된 패스워드를 이용하여 관리자 권한을 탈취 할 수 있음
  • 하드코드 : 데이터를 코드 내부에 직접 입력하여 프로그래밍하는 방식

섹션24. 에러 처리

 

1. 부적절한 예외처리

 

  • 함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점
  • 모든 오류들을 세세하게 정의할 필요는 없지만, 모든 오류들을 광범위한 예외처리 구문으로 정의해버리면 예기치 않은 문제가 발생할 수 있음

섹션25. 코드 오류

 

1. 스택 가드(Stack Guard)

 

  • 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정값을 저장한 후 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막는 기술

섹션26. 캡슐화

 

1. 접근 지정자(접근 제어자)

 

  • 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어
  • 종류: Public, Protected, Default, Private

섹션27. 암호 알고리즘

 

1. 개인키 암호화(Private Key Encryption) 기법

 

  • 동일한 키로 데이터를 암호화 하고 복호화
  • 알고리즘이 단순하므로 암호화/복호화 속도가 빠름
  • 대칭 암호 기법 또는 비밀키 암호화 기법이라고도 함

2. 개인키 암호화 기법의 종류

 

  • 블록 암호화 방식 : 한번에 하나의 데이터 블록을 암호화 하는 방식
  • 종류 : DES, SEED, AES, ARIA, IDEA 등
  • 스트림 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트/바이트/워드 단위로 암호화 하는 방식
  • 종류 : LFSR, RC4 등

3. 공개키 암호화(Public Key Encryption) 기법

 

  • 데이터를 암호화 할 때 사용하는 공개키는 데이터베이스 사용자에게 공개하고 복호화할 때의 비밀키는 관리자가 비밀리에 관리
  • 공개키 암호화 기법에서 암호화 대상이 n개일 때 사용되는 키의 개수는 2n개
  • 비대칭 암호 기법이라고도 함
  • 대표적으로 RSA(Rivest, Shamir, Adleman)기법이 있음
  • 키의 분배가 용이하고 관리해야 할 키의 개수가 적음

4. ARIA

 

  • 2004년 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
  • 블록 크기는 128비트이며 키 길이에 따라 128, 192, 256으로 분류됨

5. DES

 

  • 1975년 미국 NBS에서 발표한 64비트의 개인키 암호화 알고리즘

6. AES

 

  • DES에 한계를 느낀 미국 표준 기술 연구소(NIST)가 2001년에 발표한 개인키 암호화 알고리즘

7. RSA

 

  • 1978년 MIT의 라이베스트(Rivest), 샤미르(Shamir), 애들먼(Adleman)에 의해 제안된 공개키 암호화 알고리즘
  • 큰 숫자를 소인수분해하기 어렵다는 것에 기반하여 만들어진 공개키 암호화 알고리즘

8. ECC

 

  • 1985년 RSA 암호 방식의 대안으로 제안됨
  • 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높인 암호화 알고리즘

9. Robin

 

  • 1979년 미하엘 라빈이 제안
  • 소인수분해의 어려움에 안전성의 근거를 둔 암호화 알고리즘

10. Hash(해시)

 

  • 임의의 길이의 입력 데이터나 메세지를 고정된 길이의 값이나 키로 변환하는 것을 의미
  • 복호화가 거의 불가능한 일방향 함수에 해당함
  • 종류 : SHA시리즈, MD4, MD5, N-NASH, SNEFRU 등

11. 솔트(Salt)

 

  • 암호화를 수행하기에 앞서 원문에 무작위의 값을 덧붙이는 과정
  • 솔트를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나게 되어 더 안전하게 암호화된 데이터를 관리할 수 있게 됨