접근통제 정책 (Access Control Policy)
DAC (Discretionary Access Control, 임의적 접근 통제)
- 사용자가 다른 사용자에게 접근 권한을 줌
- 개인 기반 정책과 그룹 기반 정책을 포함한다
- 객체에 접근하고하자 하는 주체(또는 주체가 속한 그룹)의 접근 권한에 따라 접근 통제를 적용한다.
- 특정 접근 허가를 가진 주체는 임의의 다른 주체에게 자신의 접근 권한을 넘길 수 있다.
- ex) ACL(Access Control List), 방화벽 정책, TCP Wrapper, 리눅스의 네트워크 서비스
MAC (Mandatory Access Control, 강제적 접근 통제)
- 전체에게 설정 가능하나 각각의 객체 단위로는 접근 제한을 설정할 수 없음
- 보안 등급, 규칙 기반, 관리 기반의 접근 통제 방식이다.
- 주체의 레이블과 주체가 접근하고자 하는 객체의 보안 레이블을 비교하여 보안 정책에 합당한 접근 통제 규칙에 의한 통제 방법이다.
- ex) 네이버/다음 카페에서의 등급 제한 게시판, 그누보드나 제로보드의 레벨 제도
RBAC (Role Based Access Control, 역할기반 접근 통제)
- DAC와 MAC의 단점을 보완한 방식
- 권한을 사용자가 아닌 그룹에 부여하고, 그룹이 수행하여야 할 역할을 정의
- 각 주체에 허용된 접근 수준과 객체에 부여된 허용등급에 근거하여 접근 통제를 운영
- 비 임의적 접근통제 모델 또는 임무기반 접근통제 모델로 불리기도 함
- ex) 리눅스의 그룹 퍼미션
소프트웨어 모듈화
시스템의 계층을 나누고 기능별로 분해하여 소프트웨어의 성능, 유지보수성, 재사용성 등을 향상시키는 설계 기법
속성
- 응집도 : 모듈 내의 관련성이 없는 기능들이 포함되어있으며 모듈화가 낮은 것
- 결합도 : 모듈간 결속이 강하고 영향도가 크다면 모듈화가 낮은 것
- 모듈화의 목표 : 모듈간의 결합도는 최소화시키고 모듈 내의 요소들간 응집도의 최대화
응집도
- 응집도는 모듈 내부의 기능적인 응집 정도를 나타냄
- 응집도는 높을 수록 모듈화가 잘 된 것
종류
우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도
우논시절교순기 => 우는시절교수가
우연적 응집도(Coincidental Cohesion) |
모듈 내부의 각 구성요소들이 연관이 없을 경우 |
논리적 응집도(Logical Cohesion) |
실제와 달리 논리적으로만 같은 그룹으로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 |
시간적 응집도(Temporal Cohesion) |
연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 |
절차적 응집도(Procedural Cohesion) |
모듈 안의 구성요소들이 서로 다른 기능을 하지만 그 기능을 순차적으로 수행할 경우 |
교환적 응집도(Communication Cohesion) |
서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용하는 활동들이 모인 경우 |
순차적 응집도(Sequential Cohesion) |
모듈 내의 한 활동으로부터 나온 출력값을 모듈 내의 다른 활동이 사용할 경우 |
기능적 응집도(Functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
결합도
- 결합도는 모듈과 모듈간의 상호 결합정도를 나타냄
- 결합도는 낮을 수록 모듈화가 잘 된 것
종류
자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도
자스제외공내 => 잤으재왜공내
자료 결합도(Data Coupling) |
모듈간의 인터페이스 전달되는 파리미터를 통해서만 모듈간의 상호 작용이 일어나는 경우 |
스탬프 결합도(Stamp Coupling) |
모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우 |
제어 결합도(Control Coupling) |
단순히 처리를 해야할 대상의 값만 전달되는게 아닌 어떻게 처리를 할지 결정하는 제어 요소(DCD, Flag 등)이 전달 되는 경우 |
외부 결합도(External Coupling) |
어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우 |
공통 결합도(Common Coupling) |
파라미터가 아닌 모듈 밖에 선언되어어있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우 |
내용 결합도(Content Coupling) |
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 |
보안
세션 하이재킹(Session Hijacking)
세션을 가로채는 것으로 정상적인 사용자의 연결을 RST 패킷을 통해 종료시킨 후 공격자로 연결시키는 방법
- ACK Storm : 세션 하이재킹에 의해 루핑이 발생하는 현상(무한 로딩)
스니핑 (Sniffing)
코를 킁킁거리다, 냄새를 맡다 라는 뜻으로 네트워크 상에서 자신이 아닌 다른 상대들의 패킷 교환을 엿듣는 것을 의미한다, 즉 네트워크 트래픽을 도청하는 과정을 스니핑이라 한다
스누핑 (Snooping)
snoop은 기웃거리다, 염탐하다 로 네트워크 상에서 떠도는 중요 정보를 몰래 획득한다, 스니핑과 유사하지만 스니핑은 엿듣는 의미고 스누핑은 뺏는 의미이다.
스푸핑 (Spoofing)
야바위치다, 우롱, 사취, 속이다 라는 뜻으로 해커가 악용하고자하는 호스트의 IP 어드레스를 바꾸어서 이를 통해 해킹을 하는 것
- IP 스푸핑 : 로그인하려는 컴퓨터가 허가받은 IP를 도용해 로그인하는 기법
- ARP 스푸핑 : 근거리 통신망(LAN) 하에서 주소 결정 프로토콜(ARP) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법
SQL Injection
웹 페이지의 입력값을 통해서 SQL 명령어를 주입하여 오작동을 일으키는 해킹방법
정보보안의 3대 요소
기무가
- 기밀성(Confidentiality) : 인가된 사용자만 정보에 접근할 수 있다.
- 무결성(Integrity) : 적절한 권한을 가진 사용자가 인가한 방법으로만 정보를 변경할 수 있도록 정보 통제하는 것을 의미
- 가용성(Availability) : 필요한 시점에 정보 자산에 접근이 가능하도록 하는 것 (ex : 백업)
웹의 AAA 요소
- 인증(Authentication)
- 권한부여(Authorization)
- 계정관리(Accounting)
트랜잭션
트랜잭션의 특성, ACID, 원일독지
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하는 4가지 성질 (ACID)
원자성(Atomicity)
- 트랜잭션과 관련된 작업은 모두 반영되거나 반영되지 않아야 한다.
일관성(Consistency) :
- 트랜잭션 실행이 성공적으로 완료되면 언제나 일관성이 있는 데이터베이스 상태를 유지한다.
독립성(Isolation) :
- 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업에 끼어들지 못하도록 보장한다.
지속성(Durability) :
- 성공적으로 수행된 트랜잭션은 영원히 반영된다.
병행제어 기법
로킹(Locking)
- 트랜잭션이 어떤 데이터를 접근하고자 할 때 로킹 수행
- 로킹이 되어 있는 데이터에는 다른 트랜잭션이 접근할 수 없음
- 트랜잭션은 로킹 된 데이터에 대해서만 연산 수행
- 로킹의 단위가 크면 : 관리하기는 쉬우나 병행성이 떨어짐
- 로킹의 단위가 작으면 : 관리하기는 까다롭지만 병행성이 높아짐
2단계 로킹 규약(Two-Phase Locking Protocol)
- Lock과 Unlock이 동시에 이루어지면 일관성이 보장되지 않으므로, Lock이 가능한 단계, Unlock만 가능한 단계를 구분
- 확장단계 : 새로운 Lock은 가능 Unlock은 불가능
- 축소단계 : Unlock은 가능하고 새로운 Lock은 불가능하다
- 교착상태가 발생할 수 있다
- 직렬가능성을 보장한다
타임스탬프(Time Stamp)
- 데이터에 접근하는 시간을 미리 정하여 정해진 시간의 순서대로 데이터에 접근하여 수행
- 직렬가능성을 보장
- 교착상태가 발생하지 않음
- 연쇄 복귀를 초래할 수 있음
낙관 병행제어(Optimistic Concurrency Control)
- 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사
- 트랜잭션 수행 동안 그 트랜잭션을 위해 유지되는 데이터 항목들의 지역 사본에 대해서만 갱신
- 트랜잭션 종료 시에 동시성을 위해 트랜잭션 직렬화가 검증되면서 일시에 DB로 반영
다중 버전 행정제어(Multi-version, Concurrency Control)
- 여러 버전의 타임스탬프를 비교하여 스케줄상 직렬가능성이 보장되는 타임스탬프를 선택
- 충돌이 발생할 경우 복귀 수행, 연쇄 복귀 발생 가능성
회복(Recovery)
트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복귀시키는 작업
장애 유형
- 트랜잭션 장애 : 트랜잭션의 실행 시 논리적인 이유로 발생할 수 있는 에러 상황
- 시스템 장애 : H/W 시스템 자체에 발생할 수 있는 에러 상황
- 미디어 장애 : 디스크 자체의 손상으로 발생할 수 있는 에러 상황
Undo와 Redo
- Undo : 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행
- Redo : 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행하여 복구 수행
로그 파일
트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스, 안전한 하드디스크에 저장되므로 전원과 관계 없이 기록이 존재
회복 기법
로그 기반
- 지연갱신 회복 기법(Deferred Update)
- 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장
- 커밋이 발생하기 전까진 데이터베이스에 기록하지 않음
- 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없고 로그파일 만 폐기하면 됨
- 즉시갱신 회복 기법(Immediate Update)
- 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록
- 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생시 UNDO 필요
검사점(Checkpoint) 회복 기법
- 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복에서 제외, 이후에 처리된 트랜잭션만 회복 작업 수행
그림자 페이징 회복(Shadow Paging Recovery) 기법
- 트랜잭션이 실행되는 메모리 상의 Current Page Table과 하드디스크의 Shadow Page Table 이용해서 회복 작업 수행
미디어 회복(Media Recovery) 기법
- 디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법
- 데이터베이스 내용을 백업, 미러링, RAID 등을 통해 별도의 물리적 저장장치에 덤프
정규화
- 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다
- 정규화된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안전성 등을 보장한다.
정규화 목적
- 데이터 구조의 안정성 및 무결성을 유지
- 효과적인 검색 알고리즘을 생성할 수 있어 자료 검색과 추출의 효율성을 높인다
- 데이터 중복을 배제하여 이상(Anomaly)의 발생 방지 및 자료 저장 공간의 최소화가 가능하다
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다
- 데이터 모형의 단순화가 가능하다.
이상(Anomaly)
정규화를 거치지 않은 데이터베이스에서 발생하는 문제
- 삽입이상(insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없는 값들도 함께 삽입되는 현상
- 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플 삭제시 의도와는 상관없는 값들도 삭제되는 연쇄가 일어나는 현상
- 갱신 이상(Update Anomaly) : 릴레이션 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되며 모순이 생기는 현상
정규화 과정
출처 : https://devinus.titory.com/26
비정규 릴레이션 -> 1NF -> 2NF -> 3NF -> BCNF -> 4NF -> 5NF
도부이결다조 => 두부이걸다줘
파이썬
for i in range(n,m)
i가 n 부터 시작하여 i가 m-1 값이 될 때까지 증가하고 코드 실행 후 종료
a = 100
result = 0
for i in range(1,3);
result = a >> i
result = result + 1
pirnt(result)
그렇기에 위 코드에서 i의 마지막은 2이므로 a >> i는 25 입니다
25 + 1 - 26
블록암호(Block Cipher)
- 평문을 일정한 크기의 블록으로 잘라낸 후 각 블록을 암호화하는 방식
종류
- DES(Data Encryption Standard)
블록 암호의 일종으로, IBM에서 개발하고 미국 NBS(현 NIST)에서 국가 표준으로 정한 암호화 알고리즘이나 취약점이 발견되어 사용되지 않음
- AES(Advanced Encryption Standard)
DES를 대체하는 미국 표준 대칭키 알고리즘
- IDEA(International Data Encryption Algorithm)
국제 데이터 암호화 알고리즘, IDEA는 DES를 대체하기 위해서 스위스에서 개발
- RC5
다양한 크기의 키, 블록, 라운드를 가질 수 있는 블록 암호 알고리즘