시큐어 코딩 (Secure Coding)
- 소프트웨어 (SW)를 개발함에 있어 개발자의 실수, 논리적 오류 등으로 인해 SW에 내포될 수 있는 보안취약점을
배재하기 위한 코딩 기법
- 구현 단계에서 보안 약점을 최소화하기 위한 코딩 작업
- 소프트웨어 개발 보안 가이드라인에 맞게 작성
- 소프트개발자가 익혀야 할 코딩 실무 지침서
시큐어 코딩 가이드
적용대상 | 보안 약점 | 대응 방안 |
입력데이터 검증 및 표현 | 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정 |
입력 데이터에 대한 유효성 검증 체계 수립 |
보안기능 | 보안 기능 부적절한 구현 | 인증, 접근통제, 권한 관리 |
시간 및 상태 | 시간 및 상태 부적절한 관리 | 공유자원 접근 직렬화 |
에러 처리 | 에러 미처리 | 보안 약점 발생 방지 위해 시스템 설계 및 구현 |
코드오류 | 개발자가 범할 수 있는 코딩 오류 | 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위 최상향 조정 후 경고 메시지 코디 제거 |
캡슐화 | 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출 |
디버거 코드 제거와 필수 정보 외 클래스 내 프라이빗 접근자 지정 |
API 오용 | 의도된 사용에 반하는 방법으로 API 사용하거나 보안에 취약한 API 사용 |
개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 확보 |
접근 통제 (Access Control)
시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것 의미
1) MAC (강제적 접근통제)
- 주체와 객체 보안 등급의 비교 규칙 (Rule) 통한 접근통제 방식
- 보안 등급을 나타내는 보안레이블 (Label) 작성해 강제적 규칙 적용
2) DAC (임의적 접근통제)
- 데이터 소유자가 사용자 신분 (identity) 따른 접근통제 방식
- 데이터 소유자가 자신 의지로 접근통제 할 수 있어 임의적
- 시스템 접근을 개인 또는 그룹의 식별자에 기반 둔 방법으로 소유자 판단에 따라 권한 제어하는 접근제어 방식
3) RBAC (역할 기반 접근통제)
- 데이터 접근 결정을 주체 역할 (Role)에 기반하는 접근통제 방식
- 기업 내 개인 잦은 이동 및 조직 특성에 적용하기에 적합
- 보안 관리 단순하고 편리
인증 서버
1) SSO (Single Sign On : 싱글 사인 온)
한번의 로그인 이용해 여러 시스템에 접근
2) AAA서버 (3A)
Authentication (인증), Authorization (허가), Accounting (과금) 기능 가진 인증 서버
- Authentication (인증) : 접근 시도하는 사용자 또는 단말에 대한 식별 및 검증
- Authorization (허가) : 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스 허용
- Accounting (계정) : 리소스 사용에 대한 정보 수집하고 관리하는 서비스
암호 시스템
암호는 변경되지 않은 평문을 암호문으로 변환해 제3자가 평문의 내용 알지 못하도록 하는 기술
암호 시스템 종류
암호 시스템은 키의 운용에 따라 비밀키, 공개키 암호로 구분
1) 비밀키 암호 (Secret Key System) = 대칭키
- 암호키와 복호키 동일
- 송신자와 수신자가 키 공유하기에 키 전달 문제 발생
- 대표 알고리즘 : DES, AES 등
비밀키 암호 알고리즘 종류
구분 | 블록 사이즈 | 키 사이즈 | 라운드 수 | 구조 및 활용 |
DES | 64bit | 56bit | 16라운드 | Feistel |
AES | 128bit | 128bit 192bit 256bit |
10라운드 12라운드 14라운드 |
SPN (미국표준암호) |
ARIA | 128bit | 128bit 192bit 256bit |
12라운드 14라운드 16라운드 |
SPN (국내개발암호) |
AES
DES의 대안으로 미국 표준 기술 연구소 (NIST)에서 발표한 128비트 블록 크기 갖는 보안 알고리즘
2) 공개키 암호 (Public Key System) = 비대칭키
- 암호키와 해독키 서로 다름
- 공개키 (Public Key) 와 개인키 (Private Key) 한 쌍으로 생성
- 공개키 이용해 개인키 유추할 수 없어야 함
- 메시지 암호는 수신자 공개키로, 복호화는 수신자 개인키로 진행
- 대표 알고리즘 : RSA, Diffi-Hellman, ECC 등
공개키 암호 알고리즘 종류
수학원리 | 소인수분해 | 이산대수 | 타원곡선 |
알고리즘 | RSA | Diffie-Hellman Elgamal | ECC |
키 길이 (bit) | 1024 ~ 2048 | 1024 ~ 2048 | 160 ~ 256 |
해시 함수
- 가변 길이 메시지 입력하면, 고정 길이 출력 (해시값) 생성하는 함수
- 일방향 함수로 출력 이용해 입력값 구하는 것 불가능
- 메시지 무결성 제공
- 해시 함수 종류 : MD5 (128bit), SHA (160bit, 미국표준)
MD5 (Message-Digest Algorithm 5)
1991년 R.rivest가 MD4 개선한 암호화 알고리즘으로, 각각의 512 비트짜리 입력 메시지 블록에 대해 차례로 동작함.
각 512 비트 입력 메시지 블록 처리하고 나면 128 비트 스테이트 (State) 값이 변하는 암호화 알고리즘
VPN (가상사설망)
- 인터넷과 같은 공중망에 사설망을 구축해 마치 전용망을 사용하는 효과 가지는 보안네트워크
- 보안 프로토콜 집합으로 터널링 기술 통해 외부 영향없이 통신 가능
OSI 계층별 보안 프로토콜
7계층 | 응용 계층 | SSL, S-HTTP, S-MINE, SSH |
3계층 | 네트워크 계층 | IPsec |
2계층 | 데이터링크 계층 | L2TP, PPTP |
1) IPsec
- OSI 3계층, 네트워크 계층의 보안 표준 프로토콜
- IP패킷에 AH, ESP필드 추가해 보안 기능 제공
- AH : IP패킷에 대한 인증, 무결성 보장
- ESP : IP패킷에 대한 인증, 무결성, 기밀성 (암호화) 모두 보장
- 운영 모드 : Tunnel 모드와 Transport 모드
- 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 (ESP)를 이용한 네트워크 계층 보안 프로토콜
2) SSL (Secure Socket Layer)
- 웹 표준 암호화 통신으로서 웹 서버와 웹 브라우저 사이 모든 정보 암호화
- OSI 7 계층 중 전송 ~ 응용 계층 사이에서 동작
- SSL 인증서 이용해, 세션 키 암호화 수행
3) SSH (Secure Shell)
- Telnet, FTP rlogin 등 원격 접속 보안 프로토콜
- SSH 클라이언트와 서버 사이에서 인증, 암호화, 무결성 등 제공
- SSH는 TCP 22번 Port 사용해 통신
보안솔루션
1) 방화벽 (Firewall)
- 외부 불법 침입으로부터 내부망 보호하기 위한 침입 차단 시스템
- 관리자가 설정해 놓은 접근제어목록 (ACL) 따라 패킷 허용 또는 차단
- 방화벽 기본정책은 모든 접근 거부한 후 명백하게 허용 가능한 패킷만 허용
2) 침입탐지시스템 (IDS)
- 방화벽 통과한 패킷으로부터 내부 네트워크 침입 여부를 실시간 탐지하는 침입탐지 시스템
- IDS 기본정책은 모든 접근 통과시킨 후 명백하게 금지한 패킷만 금지
탐지 방법
- 오용 탐지 (Misuse) : 이미 발견되고 정립된 패턴DB를 이용해 공격 탐지
- 이상 탐지 (Anomaly) : 평균 상태를 기준으로 비정상 행위시 공격 탐지
'Study > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 프로그래밍 언어 활용 _ 입출력문, 조건문 (1) | 2025.03.19 |
---|---|
[정보처리기사 실기] 프로그래밍 언어 활용 _ 데이터 타입, 연산자 (0) | 2025.03.19 |
[정보처리기사 실기] 소프트웨어 개발 보안 구축 _ 소프트웨어 개발 보안 설계 (0) | 2025.03.17 |
[정보처리기사 실기] 소프트웨어 개발 보안 구축 _ 보안 요소 및 보안 공격 (1) | 2025.03.13 |
[정보처리기사 실기] SQL 응용 _ 응용 및 절차형 SQL (0) | 2025.03.12 |