소프트웨어 개발 보안 설계
SW개발보안의 개요
SW개발보안은 해킹 등 사이버공격의 원인인 보안 취약점을 SW개발 단계에서 미리 제거하고
SW개발에 따른 생명주기별 단계적으로 수행하고
개발 과정에서 보안 업무를 수행하며
안전한 보안 요소를 만족하는 소프트웨어를 개발 · 운영하기 위한 목적으로 개발 방법
SW개발보안의 3요소
- 기밀성(confidentiality) - 승인된 주체들에게만 접근 허용
- 무결성(itegrity) - 승인된 사용자들이 적시에 사용 가능하도록 함
- 가용성(availability) - 승인된 사용자들이 적시에 사용 가능하도록 함
SW개발보안 용어
(1) 소프트웨어 자산(Asset)과 관련된 상세 자산
- 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
- (서버의 하드웨어, 소프트웨어와 기업의 중요 데이터)
(2) 위협원(Threat agents)
- 조직 자산의 파괴와 손해가 발생하는 행동을 할 수 있는 내·외부의 주체
- (해커, 내부의 인가받지 않는 임직원, 단체, 자연재해)
(3) 위협(Threat)
- 조직의 자산에 대한 위협이 되는 위협원의 공격 행동
- (해킹, 삭제, 자산의 불법적인 유출, 위/변조, 파산)
(4) 취약점(Vulnerability)
- 위협이 발생하기 위한 사전 조건에 따른 상황
- (평문을 전송, 입력값을 검증하지 않음, 비밀번호를 공유하는 행위)
(5) 위험(Risk)
- 위협원이 취약점을 사용하여 위협 행동하여 자신에 나쁜 영향의 결과를 확률과 영향도
정보보호관련 법령 목록
| 구분 | 법령명 |
| 국가기밀보호 | 보안업무 규정, 군사기밀 보호법과 군형법 등 |
| 중요정보의 국외 유출 방지 |
산업기술의 유출 방지 및 보호에 관한 법률, 기술의 이전 및 사업화 촉진에 관한 법률, 민군겸용기술사업 촉진법, 부정경쟁방지 및 영업 비밀 보호에 관한 법률 등 |
| 전자서명 및 인증 | 전자서명법, 전자정부법 등 |
| 정보통신망과 정보 시스템의 보호추진 | 국가정보화기본법, 정보통신기반보호법, 정보통신망 이용촉진 및 정보보호 등에 관한 법률, 전자정부법, 전자 문서 및 전자거래 기본법, 국가사이버안전관리 규정 등 |
| 침해 행위의 처벌 | 전자무역 촉진에 관한 법률, 형법, 정보통신기반 보호법, 정보통신망 이용촉진 및 정보보호 등에 관한 법률 |
| 개인정보보호 | 개인정보 보호법, 정보통신망 이용 촉진 및 정보보호 등에 관한 법률, 신용정보의 이용 및 보호에 관한 법률 등 |
정보보호관련 법령에 따른 검토
(1) 개인정보 보호법을 검토
1) 개인정보 고유식별 정보의 처리 제한 요구사항을 수집
개인을 식별하는 고유한 식별정보(주민등록번호, 또는 여권번호, 개인의 운전면허번호, 외국인의 외국인등록번호)를 처리하
는 경우 그 정보가 분실, 도난, 유출, 변조 또는 훼손되지 않도록 암호화를 통하여 안전성을 확보하고 필요한 조치를 해야 한
다.
2) 개인정보보호법 안전조치 의무화 요구사항을 반영
개인정보가 분실, 도난, 유출, 변조 또는 훼손돠자 않도록 조직 내부의 보안관리 계획을 수립하고, 접속기록보관이 필요하기
때문에 안전성 확보를 위해 필요한 기술적, 관리적, 물리적 조치를 하여야 함.
3) 개인정보의 안전성 확보 조치 요구사항을 수집
개인정보를 안전하게 저장, 전송할 수 있는 암호화 기술의 적용 또는 이에 상응하는 조치가 필요
(2) 정보통신망 이용촉진 및 정보보호 등에 관한 법률을 검토
1) 개인정보의 보호조치 시행령 제 15조를 분석함.
- 비밀번호 및 바이오정보(지문, 홍채, 음성, 필적 등) 단방향 암호화 저장.
- 개인의 주민등록번호와 금융 계좌번호, 그리고 금융정보를 암호화하여 저장.
- 개인정보와 인증정보를 송·수신하는 경우 보안이 강화돤 서버 인프라 구축 등의 조치.
2) 개인정보의 보호조치 법률 제 28조를 분석
- 개인정보를 취급할 때에는 개인정보의 분실, 도난, 누출, 변조 또는 훼손을 방지하기 위해 기술적, 관리적 조치를 하여야 하며
- 개인정보를 안전하게 저장, 전송 할 수 있는 암호화 가술 등을 이용한 보안조치를 취해야 함.
3) 개인정보의 암호화를 분석
- 비밀번호, 바이오정보는 복호화되지 않도록 일방향 암호화하여 저장
- 주민등록번호, 신용카드 번호, 은행 계좌번호에 대해서는 안전한 암호화 알고리즘으로 암호화하여 저장.
- 서비스를 제공하는 서버는 SSL(Secure Socket Layer) 인증서를 통하여 정보를 암호화하여 송·수신
- 서비스를 제공하는 서버에 암호화 응용프로그램을 설치하여 전송하는 정보를 암호화.
암호 알고리즘
1. 비밀키(대칭 키) 암호
1) 치환 암호

2) 전치 암호

3) DES(Data Encryption Standard)
- 데이터 암호화 표준은 블록 암호의 일종으로, 미국 NBS(현재 NIST)에서 국가 표준으로 정한 암호
- DES는 대칭키 암호이며, 64비트 키 중 56비트의 키는 암호화 복호화에 사용하고 나머지 8비트는 키 블록의 parity check 용 사용함
- DES는 비트의 전치(Transposition)와 비트의 치환, Exclusive-OR 등의 연산을 거쳐 암복호 됨
4) AES(Advanced Encryption Standard)
- DES의 보안성에 문제점이 제기되어 이를 보완하고자 미국의 표준기술연구소(NIST)에서 차세대 암호표준으로 선정한 대칭형 암호알고리즘이다.
- 128비트, 192비트, 256비트 등의 형태로 제공됨
- 블록 암호 방식
5) SEED
- 1999년 2웧 한국정보보호진흥원의 기술진이 개발한 128비트 및 256비트 대칭 키 블록 암호 알고리즘
- 대한민국의 인터넷 뱅킹 및 쇼핑 환경에서 자주 쓰이나, SEED 기반 보안 프로그램은 액티브엑스 플러그인으로 배포될 수밖에 없기 때문에 공인인증서와 함께 대한민국의 웹 호환성 문제와 가장 밀접하게 연관되어 있음
- 국내 보안업체들은 128비트 보안을 위한 별도 프로그램을 개발하기 위해 노력했으며, 그렇게 개발된 프로그램이 웹브라우저 플러그인으로 배포되어 국내 인터넷 뱅킹에 사용되기 시작
- 블록 암호 방식
2. 공개키 (비대칭 키) 암호
1) RSA 암호
- RSA 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자 서명이 가능한 최초의 알고리즘으로 알려져 있음
- RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였음
- 정수론에 기반을 두고 있으며 매우 큰 수의 소인수 분해가 어렵다는 가정 하에 설계된 알고리즘
2) Diffie-Hellman(디피-헬만)
- Diffie와 Hellman이라는 사람에 의해 1976년 개발된 최초의 공개키 알고리즘
- 이산대수 로그문제의 계산이 어렵다는 이론에 기초를 둠
- 이 알고리듬은 메시지를 암복호화하는데 사용되는 알고리즘이 아니라 암복호화를 위해 사용되는 키의 분배 및 교환에 주로 알고리즘
3) 엘가말(ElGamal)
- 디피-헬만처럼 이산대수 문제가 매우 어렵다는 가정하에 제안된 공개키 암호 시스템
- 키 길이의 강도는 RSA와 비슷
- 그러나 난수 발생을 필요로 하기 때문에 다른 공개키 암호화 시스템에 비해 느린편에 속함
- 현재 이산대수 문제를 기초로 만들어진 알고리즘의 대부분이 엘가멜을 기초로 발전
4) ECC(타원곡선알고리즘)
- 이 알고리즘의 원리는 유한체상에서의 정의된 타원곡선 한 점 Q와 P의 관계가 Q=dP러고 할 때, d를 알아내기 이론에서 출발
- 이 알고리즘도 ElGamal처럼 이산대수의 문제에 기반을 둠
- 기존 RSA, ElGamal등의 공개키 암호 시스템보다 작은 키 길이를 사용하면서 그것들과 비슷한 성능을 낼 수 있음. (RSA에서 1024비트 키를 사용한 보안강도와 ECC에서 160비트 키를 사용한 강도가 비슷)
- RSA의 주요연산이 곱셈인 반면 ECC는 덧셈이기 때문에 계산이 훨씬 빠름
- 비트코인
서비스 공격 유형
1. 수동적 공격
스니핑(Sniffing)
- 네트워크상에 지나다니는 패킷들을 캡처하여 그 안에 있는 내용을 들여다보는 기슬
- 이런 스니핑을 할 수 있도록 도와주는 도구를 "스니퍼(Sniffer)"라고 함
스니핑의 종류
- 다른 이의 대화를 엿듣는 것
- 도청(Eavesdropping)
- 전기적 신호를 분석해 정보를 찾아내는 것
2. 능동적 공격
1) 세션 가로채기 공격
① IP Spoofing
다른 컴퓨터 시스템인 것처럼 가장 하기 위해 거짓 소스 IP 주소로 인터넷 프로토콜 패킷을 만드는 일
② DNS Spoofing
실제 도메인 네임 시스템(DNS) 서버를 해킹하거나, 위조 DNS 서버를 설치하여 공격하는 방법
사용자가 질의한 도메인 이름에 대해 고의로 잘못된 인터넷 프로토콜(IP) 주소를 응답으로 보내 사용자가 잘못된 사이트에
접속하게 하여 개인정보 등의 정보를 탈취
2) DoS(Denial of Service)
① Teardrop
서비스 거부 공격(DOS)의 하나. 공격 대상 컴퓨터에 헤더가 조작된 일련의 IP 패킷 조각(IP fagments)들을 전송함으로써
컴퓨터의 OS를 다운시키는 공격

② Smurf 공격
스머프 공격 또는 스머핑은 희생자의 스푸핑된 원본 IP를 거진 수 많은 인터넷 제어 메시지 프로토콜(ICMP) 패킷들이 IP
브로드캐스트 주소를 사용하여 컴퓨터 네트워크로 브로드캐스트하는 분산 서비스 거부 공격
③ TCP SYN Flooding 공격
- TCP의 초기 연결과정인 TCP 3-way Handshaking을 이용하 보안공격
- TCP 연결설정 과정의 취약점을 이용한 보안 공격
3) DDoS(Distributed Dos)
여러 대의 공격자를 분산적으로 배치해 동시에 서비스 공격을 하는 방법
Zero Day Attack 공격
컴퓨터 소프트웨어의 취약점을 공격하는 기술적 위협으로, 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어
지는 공격을 말함
침입차단시스템(TMS System)
- TMS(Threat Management System)
- 위협관리 시스템
- 취약성 정보와 국내외 네트워크 분석을 통해 인터넷상의 위협을 사전에 감지
- 보안정책설정 기준과 대체방안을 제공
랜드 어택(Land Attack)
출발지와 목적지와 같은 패킷을 만들어 공갹 대상이 자기 자신에게 응답하도록 해 부하를 발생시킴
'정보처리기사 실기 > 소프트웨어 개발 보안 구축' 카테고리의 다른 글
| 소프트웨어 개발 보안 구현 (0) | 2025.03.06 |
|---|