포스트

[정보처리기사] 5과목 - 정보시스템 구축 관리 (소프트웨어 개발 보안 구축)

Computer Science / 정보처리기사

정보시스템 구축 관리 이론 - 소프트웨어 개발 보안 구축 정리

view

Secure SDLC


1. 보안 기술의 개발 방법론

  • 보안상 안전한 소프트웨어를 개발하기 위해 SDLC (Software Development Life Cycle)에 보안 강화를 위한 프로세스 포함
  • CLASP
    • Secure Software 개발, SDLC의 초기 단계에서 보안 강화
    • 활동 중심, 역할 기반의 프로세스로 구성
    • 현재 운용 중인 시스템에 적용
  • SDL
    • MS에서 개발, 기존의 SDLC 개선
    • 전통적인 나선형 모델
  • Seven Touchpoints
    • 소프트웨어 보안의 모범 사례를 SDLC에 통합한 방법론
    • 설계 및 각 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트
    • SDLC의 각 단계에 관련된 7개의 보안 강화 활동 수행

2. 보안 요소

  • 기밀성 (Confidentiality)
    • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
    • 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
  • 무결성 (Integrity)
    • 시스템 내의 정보는 오직 인가된 사용자만 수정
  • 가용성 (Availability)
    • 인가받은 사용자는 언제라도 사용할 수 있음
  • 인증 (Authentication)
    • 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 모든 행위
    • PW, 지문 검사 등
  • 부인 방지 (NonRepudiation)
    • 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 증거를 제공

입력 데이터 검증 및 표현


1. 보안 약점 종류

  • SQL 삽입 (SQL Injection)
    • 웹 응용 프로그램에 SQL을 삽입하여 내부 DB 서버의 데이터를 유출 및 변조, 관리자 인증 우회
    • 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링하여 방지
  • 경로 조작 및 자원 삽입
    • 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제
    • 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지
  • 크로스사이트 스크립팅 (XSS: Cross Site Scripting)
    • 웹페이지에 악의적인 스크립트를 삽입하여 방문자 정보를 탈취하거나 비정상적인 기능을 수행하도록 함
    • HTML 태그의 사용을 제안하거나 스크립트에 삽입되지 않도록 <, >, & 등의 문자를 다른 문자로 치환하여 방지
  • 운영체제 명령어 삽입
    • 외부 입력값을 통해 시스템 명령어의 실행을 유도하여 권한을 탈취하거나 시스템 장애를 유발
    • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로 방지
  • 위험한 형식 파일 업로드
    • 악의적인 명령어가 포함된 스트립트 파일 업로드
    • 업로드 되는 파일의 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 분리 등으로 방지
  • 신뢰되지 않는 URL 주소로 자동 접속
    • 방문자를 피싱 사이트로 유도
    • 연결되는 외부 사이트 주소를 화이트 리스트로 관리하여 방지
  • 메모리 버퍼 오버플로
    • 메모리 주소 경계를 다룰 때 발생하는 버그의 일종 또는 이를 이용한 공격 방법

암호 알고리즘


encryption

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

  • 동일한 키로 데이터를 암호화하고 복호화함
  • 블록 암호화 방식
    • DES, SEED, AES, ARIA, IDEA
  • 스트림 암호화 방식
    • LFSR, RC4
  • 장점
    • 암/복호화의 속도가 빠름
    • 알고리즘이 단순함
    • 공개키 암호 기법보다 파일 크기가 작음
  • 단점
    • 사용자의 증가에 따라 관리해야 할 키의 수가 많아짐

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

  • 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개, 복호화할 때 비밀키는 관리자가 비밀리에 관리
  • 암호화 대상이 $n$개일 때, 키의 개수는 $2n$개
  • 비대칭 암호 기법이라고 하며, RSA 기법이 있음
  • 장점
    • 키의 분배가 용이
    • 관리해야 할 키의 수가 적음
  • 단점
    • 암호화/복호화의 속도가 느림
    • 알고리즘이 복잡함
    • 개인키 암호화 기법보다 파일의 크기가 큼

3. 양방향 알고리즘 종류

  • SEED
    • 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 256 버전으로 분류
  • ARIA (Academy, Research Institute, Agency)
    • 국정원과 산학연협회에서 개발한 블록 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 192, 256 버전으로 분료
  • DES (Data ncryption Standard)
    • 미국 NBS에서 발표한 개인키 암호화 알고리즘
    • DES를 3번 적용한 3DES가 있음
    • 블록 크기 64비트, 키 길이 56비트
  • AES (Advanced Encryption Standard)
    • 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘
    • DES의 한계 때문에 개발
    • 블록 크기 128비트, 키 길이 56비트
  • RSA (Rivest Shamir Adleman)
    • MIT에서 개발한 공개키 암호화 알고리즘
    • 큰 숫자를 소인수분해하기 어렵다는 것에 기반
    • 공개키와 비밀키를 사용, 키는 상수
  • ECC (Elliptic Curve Cryptography)
    • RSA 암호 방식의 대안
    • 이산대수 문제를 타원 곡선으로 옮겨 기밀성과 효율성을 높임
  • Rabin
    • 미하엘 라빈이 개발
    • 소인수분해의 어려움에 안전성의 근거를 둔 암호화 알고리즘

4. 해시 (Hash)

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
  • 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값, 해시키로 부름
  • 무결성 검증을 위해 사용되며 정보 보호의 다양한 분야에 활용
  • 복호화가 불가능한 일방향 함수
  • SHA 시리즈, MD5, N-NASH, SNEFRU

5. 솔트 (Salt)

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

참고 사이트

애기 개발자 - 정보처리기사 필기 공부 5과목 (정보시스템 구축관리)


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.