1.인터페이스 보안
1. 인터페이스 보안의 중요성
- 인터페이스는 시스템 모듈 간 통신 및 정보 교환의 중요한 접점이기 때문에
인터페이스 보안 취약성은 시스템에 심각한 피해를 입힐 수 있다.
- 인터페이스 모듈 자체의 보안 취약점으로 인해 데이터 변조 및 탈취 등의 보안 사고가 발생 할 수 있다.
2. 인터페이스 보안 취약점
1. 데이터 통신 시 데이터 탈튀 위협
- 인터페이스를 위한 송/ 수신 시스템 간의 데이터 통신시 스니핑을 통해 데이터 전송 내역을 감청하여 데이터를 탈튀하는 위협이 존재한다.
cf : 스니핑(Sniffing) : 스니핑이란 공격대상에게 직접적으로 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법
2. 데이터 통신 시 데이터 위/변조 위협
- 인터페이스를 위한 송.수신 시스템 간의 데이터 통신 시 전송 데이터에 대한 삽입, 삭제, 변조 공격을 통한 시스템 위협이 존재한다.
3. 인터페이스 보안 구현
1. 시큐어 코딩 가이드 적용
- 인터페이스 개발시 보안 취약점을 방지할 수 있는 시큐어 코딩 가이드에 따른 개발 수행이 필요하다
[시큐어 코딩 가이드]
1. 입력 데이터 검증 및 표현
[보안 약점] : 프로그램 입력값에 검증 누락/부적절한 검증, 잘못된 형식 지정
[대응 방안] : 사용자/프로그램 입력데이터에 대한 유효성 검증 체계를 수립하고 실패시 처리 설계 및 구현
2. 보안 기능
[보안 약점] : 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현
[대응 반응] : 사용자/프로그램 입력 데이터에 대한 유효성 검증 체계를 수립하고 실패 시 처리 설계 및 구현
3. 시간 및 상태
[보안 약점] : 거의 동시에 수행 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
[대응 방안] : 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀 함수 호출
cf : 직렬화(Serialization) : 직렬화는 데이터 구조나 오브젝트 상태를 다른 컴퓨터 환경으로 저장하고 재구성할 수 있는 포맷으로 변환하는 과정이다.
4. 에러 처리
[보안 약점] : 에러 미처리, 불충분한 처리 등으로 에러 메시지에 중요 정보가 포함
[대응 방안] : 에러 또는 오류 상황을 처리하지 않거나, 불충분하게 처리되어 중요 정보 유출 등 보안 약점 발생하지 않도록 시스템 설계 및 구현
5. 코드 오류
[보안 약점] : 개발자가 범할 수 있는 코딩 오류로 인해 유발
[대응 방안] : 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거
6. 캡슐화
[보안 약점] : 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출
[대응 방안] : 디버거 코드 제거와 필수 정보 외의 클래스 내 프라이빗(pricate)접근자 지정
7. API 오용
[보안 약점] : 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용
[대응 방안] : 개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용
2. 데이터베이스 보안 적용
- 데이터베이스의 기밀성을 유지하기 위해서 인터페이스 시 활용되는 중요 데이터에 대해서는 필요한 보안 요구사항을 적용한다.
- 현재 시점에서 안정성이 검증된 암호화 알고리즘을 활용하여 중요한 민감데이터는 반드시 암호화하고, 데이터베이스 보안 요구사항은 해당 인터페이스 조건에 부합되도록 적용한다.
가. 데이터베이스 암호화 알고리즘
- 데이터베이스 암호화 알고리즘은 양방향 암호화 알고리즘인 대칭 키 암호화 알고리즘, 비대칭 키 암호화 알고리즘, 일방향 암호화 알고리즘인 해시 암호화 알고리즘이 있다.
[데이터베이스 암호화 알고리즘]
1. 대칭 키 암호화 알고리즘
- 암호화 알고리즘의 한 종류로, 암/복호화에 같은 암호 키를 쓰는 알고리즘을 의미
2. 비대칭 키 암호화 알고리즘
- 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개 키와 비밀 키를 사용하는 알고리즘
3. 해시 암호화 알고리즘
- 해시 값으로 원래 입력값을 찾아낼 수 없는, 일방향성의 특성을 가진 알고리즘
나. 데이터베이스 암호화 기법
- 데이터베이스 암호화 기법으로는 애플리케이션에서 암호화를 수행하는 API방식과 데이터베이스에서 암호화를 수행하는 Plug-in 방식, API 방식과 Plug-in방식을 혼합한 Hybrid 방식이 있다.
API 방식
- 애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이ㅏ션 수정 방식
- 애플리케이션 서버에 암/복호화, 정책 관리, 키 관리 등의 부하 발생
Plug-in 방식
- DB 레벨의 확장성 프러시저 기능을 이용, DBMS에 Plug-in 모듈로 동작하는 방식
- DB 서버에 암/복호화, 정책 관리, 키 관리 등의 부하 발생
Hybrid 방식
- API 방식과 Plug-in 방식을 결합하는 방식
- DB 서버와 애플리케이션 서버로 부하 분산
다. 데이터베이스 보안 요구사항
- 데이터 암/복호화 자체는 암호화 알고리즘에 따라 진행되므로 간단하지만, 송/수신 시스템 간의 데이터 통신 시 송/수신 데이터베이스에 대한 기밀성 보장을 위해서는 여러 가지 항목의 보안 요구사항 적용이 필요하다.
- 해당 인터페이스 조건에 부합되도록 데이터베이스 보안 요구사항을 적용한다.
1. 암호지원
보안 요구 사항 : 안전성이 검증된 암호 모듈 및 알고리즘 사용
요구 기능 : ARIA 128/192/256, SEED && SHA-256/384/512,HAS-160
2. 암호 키 관리
보안 요구 사항 : 암.복호화 암호문 및 인덱스 등 중요 데이터의 안정성 확보
요구 기능 : 안전한 암호 모듈을 통하여 암/복호화 구현, 원본 데이터는 암호화 후 삭제 필요
3. DB 암/복호화
보안 요구 사항 : 암/ 복호화 암호문 및 인덱스 등 중요 데이터의 안정성 확보
요구 기능 : 안전한 암호 모듈을 통하여 암/복호화 구현, 우너본 데이터는 암호화 후 삭제 필요
4. 접근 제어
보안 요구 사항 : 암호키,암호문 등에 대한 비인가자의 접근 차단
요구 기능 : DB 계정, IP, 애플리케이션, 접속 기가능 등에 대한 조건별 접근 제어 정책 적용
5. 암호통신
- 보안 요구 사항 : 전송 데이터의 기밀성 및 무결성 유지
- 요구 기능 : 시스템 간 안전한 전송 보장
6. 식별 및 인증
- 보안 요구 사항 : 사용자의 신원 확인 및 검증
- 요구 기능 : 사용자의 연속된 인증 실패 후 초기화 구현, 인증 데이터 재사용 공격 방지
7. 보안 감사
- 보안 요구 사항 : 중요한 이벤트에 대한 감사 기록
- 요구 기능 : 감사 데이터는 인증된 사용자만 접근할 수 있도록 접근 제어
3. 중요 인터페이스 데이터의 암호화 전송
- 민감한 정보를 통신 채널을 통하여 전송 시에는 반드시 암/복호화 과정을 거쳐야 하고, IPSec, SSL/TLS 등 보안 채널을 활용하여 전송한다.
cf: IPSec(IP Security) : IP계층(3계층)에서 무결성과 인증을 보장하는 인증헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용한 IP 보안 프로토콜이다.
cf: SSL/TLS : 응용 계층과 TCP/IP 계층 사이에서 웹 데이터 암호화 및 전송시 기밀성을 보장하는 공개키 기반의 보안 프로토콜이다.
2. 소프트웨어 연계 테스트
1. 인터페이스 기능 구현
- 개발하고자 하는 응용소프트웨어와 연계 대상 모듈 간의 세부 설계서를 확인하여 일관되고 정형화된 인터페이스 기능을 구현한다
1. 모듈 간 세부 설계서 확인
- 각 모듈의 컴포넌트 명세서와 인터페이스 명세서 등 세부 설계서를 확인하여 인터페이스에 필요한 기능을 확인한다.
2. 일관되고 정형화된 인터페이스 기능 정의
- 분석된 인터페이스의 기능, 데이터 표준, 모듈 설계 명세서를 통하여 일관되고 정형화된 인터페이스의 기능을 정의
3. 정의된 인터페이스 기능에 대한 정형화
- 정의된 인터페이스 기능을 표준화하고, 사람들이 보기 쉽게 정형화한다.
- 특정 하드웨어나 소프트웨어에 의존적이지 않게 작성하고, 가독성을 높이기 위해 프로세스 형태나 유스케이스 다이어그램의 형태로 작성하는 것이 필요하다.
4. 인터페이스 기능 구현
가 사전에 정의된 기능에 대한 구체적 분석
- 상세하게 정의된 기능 구현 정의 내용을 토대로 어떻게 구현할 것인지 분석한다.
나. 인터페이스 구현
- 인터페이스 구현 방법에는 데이터 통신을 사용하는 방법과 인터페이스 개체를 사용하여 인터페이스를 구현하는 방법이 있다.
- 데이터 통신을 사용하여 인터페스를 구현하는 방법은 아래와 같다.
2. 소프트웨어 연계 테스트
- 소프트웨어 연계 테스트는 송신 시스템과 수신 시스템을 연계하였을 경우 데이터의 정합성과 데이터 전송 여부에 대한 테스트이다.
- 소프트웨어 연계 테스트는 사전에 테스트 케이스(Test Case)를 작성하고, 작성된 테스트 케이스를 활용하여 소프트웨어 연계 테스트를 수행한 후 수행 결과를 검증하는 방식으로 진행 한다.
1. 소프트웨어 연계 테스트 케이스(Test Case) 작성 및 명세화
- 소프트웨어연계 테스트 케이스는 송/수신 시스템에서 확인해야 할 사항을 각각 도출하여 단위 테스트 케이스와 통합 테스트 케이스를 작성한다.
가. 소프트웨어 연계 테스트를 위한 단위 테스트 케이스 작성
- 송/수신 시스템 간 연계 데이터 정상 추출 여부, 데이터 형식 체크, 데이터 표준 준수 여부 등을 테스트할 수 있도록 작성한다.
2. 소프트웨어 연계 테스트 수행
가. 데이터 통신을 사용하는 소프트웨어 연계 테스트 수행
- 데이터 통신을 사용하는 소프트웨어 연계 테스트 수행 시에는 송.수신 시스템에서 인터페이스를 위한 객체 생성의 정확성 여부, 데이터 통신의 오류 여부, 송.수신 데이터의 일치성 여부 등을 테스트한다.
- 테스트에 따라 오류가 발생한 경우에는 정확한 분석을 통해 해당하는 부분에 대한 오류 수정을 한다.
나. 인터페이스 개체를 사용하는 소프트웨어 연계 테스트 수행
- 인터페이스 개체를 사용하는 소프트웨어 연계 테스트 수행 시 인터페이스 동작 단계별 오류 여부를 체크하여, 오류 발생 시 정확한 분석을 통해 해당하는 부분에 대한 오류 수정을 한다.
- 송수신 인터페이스 테이블을 통한 인터페이스 트랜잭션이 실패하였을 경우에는 인터페이스 프로세스 구간별로 예외 처리 방안을 고려한다.