[9. 소프트웨어 개발 보안 구축] 보안 기초

수정 Soojung·2023년 9월 29일
0

정보처리기사 실기

목록 보기
2/14
post-thumbnail

💡 Secure SDLC

보안상 안전한 SW 개발 위해 SDLC (SW개발생명주기) 에 보안 강화를 위한 프로세스를 포함한 것

  • 방법론 - CLASP (초기) / SDL (MS사) / Seven Touchpoints (모범사례)
  • 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수

💡 시큐어 코딩 (Secure Coding)

구현 단계에서 발생 가능한 취약점을 최소화하기 위해, 보안 요소들을 고려하며 코딩하는 것

  • 사전 대응 > 안정성 & 신뢰성 확보

💡 SW 개발 보안의 3대 요소

(1) 기밀성 (Confidentiality)

인가 O 사용자에게만 자원 접근 가능 / 인가 X 개인 or 시스템 접근에 따른 정보 공개 및 노출 차단

(2) 무결성 (Integrity)

인가 O 사용자만 수정 가능 / 전송 중인 정보는 수정되지 않아야 함

(3) 가용성 (Availability)

인가 O 사용자는 시스템 내 정보 및 자원을 언제든 사용 가능
권한 가진 사용자,앱이 원하는 서비스를 지속 사용 보장

💡 입력 데이터 검증 및 표현 취약점

(1) XSS (Cross Site Scripting)

웹페이지에 악의적인 스크립트를 삽입하여, 방문자들의 정보 탈취 혹은 비정상적인 기능 수행 유발

(2) 사이트 간 요청 위조 (CSRF ; Cross-site Request Forgery)

사용자가 자신의 의지와 무관하게, 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격

(3) SQL 삽입 (Injection)

웹 응용 프로그램에 SQL 삽입하여, 내부 DB 데이터 탈취 혹은 조작 행위

  • 이외에도, 경로 조작 및 자원 삽입 / 운영체제 명령어 삽입 / 위험한 형식 파일 업로드
    / 신뢰되지 않는 URL 주소로 자동접속 연결 / 메모리 버퍼 오버플로
    등이 있음

💡 보안 점검 항목 (Feat. SW 구현 단계)

(1) 보안 기능

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

  • ex) 적절한 인증 없이 중요기능 허용 / 부적절한 인가 / 중요한 자원에 대한 잘못된 권한 설정 /
    취약한 암호화 알고리즘 사용 / 중요정보 평문 저장 및 전송 / 하드코드된 암호화 키

(2) 코드 오류

SW 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 Type 변환, 자원 반환 등 오류 예방 위한 점검 항목

  • ex) 널 포인터 역참조 / 부적절한 자원 해제 / 해제된 자원 사용 / 초기화되지 않은 변수 사용
  • 스택 가드 (Stack Guard) - 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나

(3) 캡슐화

정보 은닉이 필요한 중요 데이터/기능을 불완전 캡슐화 or 잘못 사용으로 발생하는 문제 예방 위한 점검 항목

  • ex) 잘못된 세션에 의한 정보 노출 / 제거되지 않고 남은 디버그 코드 / 시스템 데이터 정보 노출 /
    Public 메소드로부터 반환된 Private 배열 / Private 배열에 Public 데이터 할당
  • 접근 제어자 - 특정 개체를 선언할 때, 외부로부터의 접근을 제한하기 위해 사용되는 예약어
    • Public ~ Protected ~ Default ~ Private

💡 서버 인증

(1) 보안 서버

개인정보를 암호화하여 송수신할 수 있는 기능 갖춘 서버

  • 기능
    • 서버에 SSL 인증서 설치하여, 전송 정보를 암호화하여 송수신하는 기능
    • 서버에 암호화 응용 프
      로그램 설치하고, 전송 정보를 암호화하여 송수신하는 기능

(2) 인증 (Autentication)

로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
네트워크로 컴퓨터에 접속하는 사용자의 등록 여부 확인 & 전송된 메시지의 위변조 여부 확인

i) 지식 기반 인증 (Sth You Know)

  • 사용자가 기억하고 있는 정보를 기반으로 인증 수행
    • 관리 비용 저렴 / 기억하지 못하면 본인도 인증 불가
  • 고정된 패스워드 : 사용자가 알고 있는 비밀번호를 접속할 때마다 반복해서 입력함
  • 패스 프레이즈 : 일반 패스워드보다 길고 기억하기 쉬운 문장을 활용하여 비밀번호 구성
  • 아이핀 (i-PIN) : 인터넷에서 주민등록번호 대신 쓸 수 있도록 하는 사이버 주민번호

ii) 소유 기반 인증 (Sth You Have)

  • 사용자가 소유하고 있는 것을 기반으로 인증 수행
    • 소유물이 쉽게 도용 가능
  • 신분증 : 사용자의 사진이 포함된 민증, 면허증, 여권 등을 사용하여 사용자의 신분 확인
  • 메모리 카드 (토큰) : 마그네틱 선에 보안 코드 저장하여 사용, 카드 리더기로만 읽기 가능
  • 스마트 카드 : 사용자의 정보뿐만 아니라 특정 업무를 처리할 수 있는 기능 내장
  • OTP (One Time Password) : 사용자가 패스워드를 요청할 때마다 암호 알고리즘을 통해 새롭게 생성된 패스워드 사용, 한 번 사용된 패스워드는 폐기됨

iii) 생체 기반 인증 (Sth You Are)

  • 사용자의 고유한 생체 정보를 기반으로 인증 수행
    • 사용 쉬움, 도난 위험 적음, 위조 어려움
  • ex) 지문, 홍채/망막, 얼굴, 음성, 정맥

행위 기반 인증 (Sth You Do) : 사용자의 행동 정보 이용해 인증 수행 ex) 서명, 동작
위치 기반 인증 (Sth You Are) : 인증 시도하는 위치의 적절성 확인 ex) GPS, IP

profile
💬 Backend Developer

0개의 댓글

관련 채용 정보