요구사항에 따라 DB테이블 설계,
# 3차 정규형까지 만족하는 ERD그리기
- 정규형: 이상 방지(삭제이상, 삽입이상, 갱신이상) https://blog.naver.com/zzoyou_/221330962821
1정규형(모든 도메인이 원자값 만으로 구성: 속성의 도메인이 원자값만 포함, 튜플의 모든 속성이 도메인에 속하는 한개의 값을 가짐)
> 한튜플의 속성 하나에 둘 이상의 값을 가지는 등 충족불가시, 값하나만 삭제불가해서 삭제이상, 삽입, 갱신 이상
> 모든 도메인이 하나씩의 값을 가지도록 튜플을 분해하는 과정
>> 1정규형을 만족하고, 키에 속하지 않는 애트리뷰트(속성)은 모두 기본키에 완전함수 종속
2정규형: 부분함수종속 제거 -> 모든 속성이 기본키에 완전함수종속 됨. (속성정보를 알려면 기본키가 모두 필요해야 함. 일부만필요하면 부분함수종속)
-결정자에 따른 종속자의 값이 같아야함.
-기본키가 전부사용되어야 모든튜플 구분될수있도록 분리
3정규형: 2정규형을 만족하면서 이행적함수종속관계를 분해 -> 비이행적 함수 종속화(기본키에 완전함수종속관계로 유지)
- 삽입/삭제/갱신이상
- 기본키를 전부사용하지 않아도 연쇄적으로 파악 가능한 경우, 연결되는 키를 중심으로 테이블 분리
보이스코드 정규형(BC-NF): 후보키가 아닌데 기본키역할을 할 수 있는 결정자가되는 경우 분해
4정규형: 다치종속(하나의 속성값이 여러개의 속성들을 결정(속성3개이상일때))이 성립하는 경우, 분해 (함수종속과 다름)
5정규형: 후보키를 통하지 않은 조인종속 관계 제거 -> 후보키를 통해서만 조인종속 성립하도록 분리
- 조인종속: 릴레이션 분해해서 자연조인했을 때, 원래릴레이션이 나오는 종속성
- ERD요소: 객체(사각형)-(크로우핏/차수)관계(다이아)-객체-속성(타원:기본키)
# 출력하는 SQL문 짜기
- having: where절에서는 집계함수 사용불가하므로 집계함수를 토대로 조건비교 시 사용.
group by와 함께 사용 필요! select 집계함수(~) from ~,~ where 조건 group by 컬럼 having 집계함수 조건비교;
- group by: 데이터를 그룹으로 나눔. 집계함수 사용 가능. Select ~, MIN(~) from ~ group by ~
- 그룹없이 속성에 대한 중복제거는 DISTINCT ~
- 서브쿼리: nested된 select 문장, (서브쿼리)로 사용, from절에오는 서브쿼리=인라인뷰, ... https://blog.naver.com/happymi_/221384722878
# 숫자+알파벳인 사용자 암호 저장시 AES-128bit 블록 암호를 사용하여 ECB모드로 암호화한 binary로 테이블에 저장한다면,
해당 DB컬럼 크기를 최소 몇바이트 이상으로 해야 하며, 이유는 무엇인지
- DB컬럼 타입 종류: http://www.incodom.kr/DB_-_%EB%8D%B0%EC%9D%B4%ED%84%B0_%ED%83%80%EC%9E%85/MYSQL
- (대칭키암호화:DES+56bit only)AES-128비트 블록암호: NIST, 고급암호화표준, 최소192bit이상 256bit이상으로보통 사용
128/192/256bit 키, 128bit 블록, 서버관리자도 암호 알수없음(키 저장안하면)
- ECB모드: 동일한 입출력 크기 나옴. chain~이거도 동일하게 패딩넣음
https://code.i-harness.com/ko-kr/q/321b4b
*비대칭키암호화: RSA - 대칭키암호화의 키 전달 용도.
간단한 알고리즘 손코딩
# 소프트웨어 개발 보안이란? SW개발과정에서 개발자의 실수, 논리적 오류 등으로 인해 발생될 수 있는 보안 취 약점, 보안약점들을 최소화하여 사이버 보안위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일 련의 보안활동.
즉, SW개발 생명주기(SDLC, Software Development Life Cycle)의 각 단 계별로 요구되는 보안활동을 수행함으로써 안전한 소프트웨어를 만들 수 있도록 한다.
- 안전한 소프트웨어를 만들기 위해서는 프로젝트에 참여하는 각 구성원들의 역할과 책임이 명확하게 정의되어야 하며, 개발팀에게 충분한 소프트웨어 보안 교육을 제공해야 한다. 또한 소프트웨어 개발 생명주기의 각 단계에 보안활동이 수행되어야 하며, 개발보안을 위한 표준이 확립되어야 한다. 재사 용가능한 보안 라이브러리를 작성하여 비슷한 기능을 수행하는 프로젝트에 도입함으로써 일반적인 안전성을 확보할 수 있도록 해야 하며, 보안통제의 효과성 검증을 통해 향후 새로운 프로젝트에서 효 과적인 보안정책이 적용될 수 있도록 해야 한다.
중요성은? 해킹 등 사이버공격의 원인인 보안약점을 SW개발단계에서 사전에 제거하고 SW 개 발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통하여 안전한 SW를 개발·운영하기 위한 목적으로 적용하는 개발체계이다.
- 유지보수비 1/30으로 절감
- 현재는 SW 개발과정 중 소스코드 구현단계를 중심으로 SW 개발보안 적용
*소프트웨어 보안 취약점은 해킹 등 실제 보안사고에 이용되는 SW 보안약점
‐ 보안요구사항이 정의되지 않았거나, ‐ 논리적인 오류를 가지는 설계를 수행하였거나, ‐ 기술취약점을 가지는 코딩 규칙을 적용하였거나, ‐ 소프트웨어 배치가 적절하지 않았거나, ‐ 발견된 취약점에 대해 적절한 관리 또는 패치를 하지 않은 경우 발견되며, 이러한 취약점으로 인해 시스템이 처리하는 중요정보가 노출되거나 정상적인 서비스가 불 가능한 상황이 발생하게 된다.
* 보안약점 (Weakness) : 보안취약점의 근본 원인이 되는 SW 허점, 결점, 오류 등
# C언어코드에서 수정할 부분 찾기
java코드에서 수정할 부분 찾기
e.g. 소스에서 divide by zero 찾기
# 완전이진트리 문제: 트리그리기, 코드 완성
완전 이진 트리(完全二進-, 영어: complete binary tree)에서, 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있으며,
마지막 레벨의 모든 노드는 가능한 한 가장 왼쪽에 있다.
마지막 레벨 h 에서 1부터 2h-1 개의 노드를 가질 수 있다.
# sql injection: 데이터베이스(DB)와 연동된 웹 어플리케이션에서 입력된 데이터의 유 효성 검증을 하지 않은 경우 발생 – 공격자가 입력 폼 및 URL입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 약점
# xss : 웹페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유 도하여, 정보유출 등의 공격을 유발할 수 있는 취약점
- 악성 스크립트가 서버에 저장됨. 클라이언트 브라우저에서 악성 스크립트 실행(클라이언트 공격)
- 변조된 홈페이지 접속시 악성코드 감염
*CSRF 크로스사이트요청위조: 서버로 요청하는 쿼리를 임의로 조작하여 실행하게 하는 공격 – 피해자의 권한을 이용하여 공격도 가능
피해자의권한을이용하여 피해자가조작된패킷을전송하여 이결과로 공격자가이득을얻는형태의공격(홈페이지자동가입등)
# 공인인증서 : 금융업계의 공인인증서 발급.(yessign), 공인인증서 폴더 탈취 가능. 보안토큰 사용필요.
https://namu.wiki/w/%EA%B3%B5%EC%9D%B8%EC%9D%B8%EC%A6%9D%EC%84%9C
- PKI (공개키기반): http://crazia.tistory.com/entry/PKI-PKI-%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EA%B0%84%EB%8B%A8-%EC%84%A4%EB%AA%85
- message digest(해쉬함수), 대칭키, 비대칭키
- X.509 인증서 포맷
*전자서명: https://d2.naver.com/helloworld/744920
# 방화벽, IDS, IPS 기능 약술
- 방화벽, IDS(3-7계층까지의 packet 내용 문자열 비교, payload까지 분석-성능이슈)가 동작하는 Layer, 작동 약술, 활용방안 서술
- 방화벽: 네트워크 패킷, 3-4계층(IP+port정보) 기반 접근제어기능 by 룰셋. 패킷 차단만
.TCP/IP 프로토콜상에서 네트워크계층의 IP address(예:100.100.100.100) 및 전송계층의 service port(예: HTTP – 80) 정보
- IDS(감시): 설치위치/목적에 따라 호스트기반/네트워크기반.
패킷 분석만 (규칙기반 오용, 통계적변형(침입탐지에 시간 지연, 판단범위 모호=False positive높음) 이상 탐지가능)
.호스트기반HIDS: (서버에직접설치)운영체제에 접근시도/작업기록/추적(성능부하발생).
네트워크 침입탐지 안됨. 공격을 받아야 침입탐지 가능(Tripwier)
.네트워크기반NIDS: (snort: tcp dump등) 네트워크 자원 손실X/데이터변조 안됨.
패킷헤더/데이터/트래픽양/로그에 대해 분석하여 감사와 로깅 기능. 네트워크에 독립된 시스템. 네트웍전반 감시가능.
패킷암호화시 탐지 불가능. 트래픽 많으면 성능이슈 발생
- IPS(차단): IDS+FW. 탐지와 차단 가능(패킷 분석과 차단)
. 내부네트웍 > IPS > FW > 라우터 > 외부인터넷 (성능최대화한 효율적인 패킷 검사)
*내부네트웍>보통IPS/IDS(방화벽공격에취약)>FW>IPS/IDS>외부인터넷
*http://jihoon6078.tistory.com/27
*http://vnfmsehdy.blogspot.com/2016/08/26-ids-ips.html
*http://saysecurity.tistory.com/9
네트워크 이중화
특히 IPS의 경우 인라인장비로서 가용성이 매우 중요합니다. 반드시 이중화하여 장비가 다양한 이유로 다운 될 경우에도 네트워크 가용성이 확보될 수 있어야 합니다.
*http://woounnan.tistory.com/29
# 소프트웨어 재사용 장점 5가지 내외 쓰기: 개발시간/비용 단축, SW품질 향상, 프로젝트 실패위험 감소, 시스템 구축 지식 공유
- 재사용: 이미 개발되어 인정받은 SW의 전체/일부를 다른 SW개발이나 유지보수에 사용하는 것
- 솔루션, 라이브러리, 오픈소스 등이 그 예시. 재사용가능한 요소는 "전체프로그램, 부분 코드, 응용지식, 데이터모형, 구조, 테스트 계획, 문서화방법", 다른 개발건에서 나온 매뉴얼 양식 차용 등
- 재사용의 문제점: 적절한 선정, 프로그램 표준화 부족, 새로운개발방법론 도입이 어려움, 재사용을 위한 관리 및 지원 필요, 프로그램 언어가 종속적, ...
CBD 컴포넌트 사용, 확장효율성, 독립성, 0에 대해 서술, 개념 장점
당사에 소프트웨어 재사용을 하려면 어떻게 해야하는지 서술: 합성중심(Composition Based: 블록구성방법) 모듈을 맞춰끼워 완성, 생성중심(Generation Based, 패턴구성방법) 추상화 명세를 구체화
- 게시판 플러그인 등, 프레임워크 도입 등. 둘다는 워드프레스 사용
- 전체 은행시스템을 예금/대출/신용카드 솔루션 등 여러 소프트웨어를 사용. 하나의 시스템처럼 인터페이스 통일/연동. 재공학 중심으로 시스템 구축/운영 필요한 금융권(재사용을 많이해서)
# 사업계획서 쓰기
PM이라고 가정했을 때 앱 개발 베타테스트 중 문제가 발생하여, 경영진에게 추가 개발기간을 요구하는 문서 작성
자료주고 A기업 핀테크 서비스 개선 방안 쓰기 - 전자지갑 서비스 A,B,C사 특징제시 후, 경쟁력 확보 방법 서술
- 전자지갑: 근거리 무선 통신 시스템(NFC)을 휴대전화에 탑재하고 가맹점이나 금융기관 등에서 비접촉 방식으로 실제 신용카드처럼 사용할 수 있는 모바일 지불결제서비스로 여러 신용카드를 통합 저장해 전자상거래시 사용할 수 있는 시스템
# DMZ구간
=> 군사용어인 비무장 지대와 비슷한 개념으로, 내부 네트워크에 포함되어 있으나, 외부에서 접근할 수 있는 구간을 지칭하는 네트워크 디자인 개념. 일반적으로 인터넷을 통해 외부에 서비스를 제공해야 하는 웹 및 메일 서버 등이 위치하는 구간을 지칭하며, 정보보안 강화를 위해 방화벽을 이용하여 내부망과 분리되도록 구성
NCS정보능력