본문 바로가기
정보처리기사

(정보처리기사)소프트웨어 개발 보안 구축

by 흥부와놀자 2020. 7. 20.

1. Secure SDLC 

  - Secure SDLC란? SW의 보안을 위해 SDLC(software development life cycle)에 보안강화 프로세스를 포함한것

 

2. 세션통제

  - 세션통제란? 세션은 서버와 클라의 연결을 의미하고 세션통제는 그로인해 발생하는 정보를 관리하는것

  - 불충분한 세션 관리 : 세션 ID에 일정한 규칙이 존재하거나 타임아웃이 너무 길게 설정된것

  - 잘못된 세션에 의한 정보 노출 : 다중스레드 환경에서 멤버변수에 정보저장시 나타나는 문제

 - 세션 설계시 고려 사항 

        - 모든 페이지에서 로그아웃 가능하게 하기

        - 로그아웃 요청 시 할당된 세션 완전히 제거되도록 하기

        - 세션 타임아웃은 중요도가 높으면 2~5분, 낮으면 15~30분으로 설정

        - 이전 세션이 종료되지 않으면 새 세션 생성 못하게 하기

  - 세션 ID 관리 방법 

        - 세션 ID는 최소 128비트의 길이로 생성

        - 예측 못하게 난수 알고리즘 사용하기

        - URL Rewrite 기능 사용하지 않는 방향으로 설계

 

3. 입력 데이터 검증 및 표현

  - 입력 데이터 보안 약점

        - SQL 삽입 : 입력란에 SQL을 삽입해 DB 조회하거나 조작

        - 경로 조작 및 자원삽입 : 데이터 입출력 경로를 조작해 서버 자원을 수정

        - 크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입하여 정보를 탈취하는것으로 HTML을 제한하거나 스크립트에 쓰이는 문자를 치환하여 방지한다.

        - 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어의 실행을 유도

        - 위험한 형식 파일 업로드 : 악의적인 명령어가 포함된 스크립트 파일 업로드

        - 신뢰되지 않는 URL주소로 자동접속 연결 : 입력값으로 사이트주소 받는경우 조작하여 피싱사이트로 유도

 

4. 보안 기능

  - https : 웹 브라우저와 서버 간의 안전한 통신을 위해 Http와 암호통신규약을 결합

  - SSL(Secure Socket layer) : 네트워크 송수신시 암호화, 인증, 무결성을 보장하는 업계표준 프로토콜 

 

5. 시간 및 상태

  - TOCTOU 경쟁조건 : TOC(Time Of Check)와 TOU(Time Of Use)를 고려하지 않고 코딩하는 경우 발생하는 보안 약점.

     검사시점(TOC)에는 사용가능했던 자원이 TOU(사용시점)에서 사용불가된 경우에 생긴다. 동기화 오류와 교착상태등이 발생하며 해당 자원에 한번에 하나의 프로세스만 접근하도록 함으로써 방지할 수 있다.

 

6. API 오용

  - DNS Lookup : 도메인명에 의존하여 인증이나 접근 통제등의 보안결정을 내리는 경우 발생하는 보안 약점. ip주소를 통해 접근함으로 방지할 수 있다.

 

7. 암호 알고리즘

  - 개인키 암호화 기법(대칭키 암호화) : 암호화와 복호화에 같은 개인키를 사용한다. 블록 암호화 방식과 스트림 암호화 방식이 있다. 암호화 알고리즘이 단순하고 속도가 빠르다. 하지만 사용자가 늘어남에 따라 키의 개수도 많아진다.

  - 공개키 암호화 기법(비대칭키 암호화) : 암호화와 복호화에 다른 키를 사용한다. 상대에게 암호화시켜 보낼때 상대의 공개키를 가지고 암호화 한 후 보내면 상대는 자신의 개인키로 복호화 하여 사용한다. 개인키암호화에 비해 필요한 키의 개수가 적지만 속도가 느리다. 

      - SEED : 한국 인터넷 진흥원에서 개발한 블록 암호화 알고리즘, 블록 크기는 128비트이며 키 길이에 따라 128,256으로 구분한다.

      - ARIA : 학계(Academy), 연구기관(Research Institue), 정부(Agency)의 앞글자로 구성. 블록 크기는 128비트이며, 키 길이에 따라 128,256으로 구분됨.

      - DES : 미국 NBS에서 발표한 개인키 암호화 알고리즘, 블록 크기는 64비트이며, 키길이는 56비트임

      - AES : DES에 한계를 느낀 NIST에서 공모 후 발표. 블록 크기는 128비트이며 키길에 따라 128,192,256으로 구분됨.

      - RSA : 큰숫자를 소인수분해 하기 어렵다는것에 기반하여 만들어졌고 공개키와 비밀키를 사용

  - HASH : 해시는 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것으로 종류에는 SHA시리즈, MD5, N-NASH, SNEFRU등이 있다. 데이터 암호화, 무결성 검증에 사용된다.