본문 바로가기
Quality control (Univ. Study)/Information Security

추가 개념정리(Midterm)

by 생각하는 이상훈 2024. 10. 22.
728x90

 


CIA Triad

Confidentiality: 권한이 있는 사람만 정보를 볼 수 있음

Integrity: 권한이 있는 사람만 수정할 수 있음

Availability: 접근하고 싶을때 접근할 수 있어야함

 

Advanced Persistent Threat

Organized

Directed

Well financed

Patient

Silent

 

Types of Attackers

Hacker

Terrorist

Criminal-for-hire

Individual

Organized crime member

Loosely connected group

 

Types of Harm

1. Interception(도청): 정보가 송수신되는 동안 공격자가 이를 가로채는 행위이다. 예: 도청, 스니핑.

2. Interruption(방해): 서비스나 데이터의 정상적인 흐름을 방해하여 시스템 기능을 중단시키는 공격이다. 예: 서비스 거부(DoS) 공격.

3. Modification(변조): 데이터를 허가 없이 변경하거나 조작하여 시스템에 오류를 유발하는 행위이다. 예: 데이터 변조, 패킷 변조.

4. Fabrication(위조): 시스템에 존재하지 않는 데이터를 허위로 생성하여 삽입하는 행위이다. 예: 가짜 이메일이나 로그를 생성하거나, 가짜 인증 정보를 만들어 시스템을 속이는 공격.

 

Controls

Encyption: Cleartext/Plaintext를 암호화하여 enciphered text/ciphertext로 변환하는것이다.

암호화는 데이터의 confidentiality를 높이고 그로인해 integrity도 올라간다. 그러나 암호화가 모든 컴퓨터 보안 문제를 해결하지는 않는다.

허술한 암호화는 안하느니만 못하다. 보안도 안되고 성능은 떨어지기 때문이다.

Software/Program Controls: 프로그램 자체도 외부의 공격을 방지해야한다.

Internal program은 보안 규정을 정해두어야한다. 예를 들어 관리 프로그램은 접근 권한을 엄격하게 제한해야한다.

OS와 network system도 권한을 제한하고 유저간의 통신에서 보안을 유지해야한다.

Independent program은 비밀번호 checker, virus scanner등과 같은 어플리케이션으로 다양한 취약점을 보호해야한다.

또한 penetration testing과 같은 과정을 거쳐서 development 과정에서 프로그램을 설계하고 코딩할때 일정 수준의 퀄리티를 보장하고 개발해야한다. Hardware적으로도 보안이 필요하다. 법적인 장치나 자체 policy도 control의 일종이 될 수 있다. 데이터센터를 지키는 경비원 같은 물리적인 control도 존재한다.

 

Principle of Weakest Link

보안의 정도는 해당 시스템의 가장 약한 부분보다 강할 수 없다. 결국 가장 취약한 부분이 시스템 security의 강도를 결정한다는 것이다. 단 한부분의 failure of control이 전체 security의 failure로 이어질 수 있다.

 

Identification vs Authentication

Identification: 유저가 누구인지 주장(저 성인이에요)

Authentication: 유저가 누구인지를 증명(민증을 보여줌)

유저가 아는 것(passward), 유저 자체(지문, face ID), 유저가 소유하고 있는 것(device)를 통해 authentication가능

 

Federated Identity Management

는 여러 애플리케이션 간에 인증을 연합하여, 사용자가 여러 시스템에 추가 인증 절차 없이 접근할 수 있게 해주는 관리 시스템이다. Identity Manager가 중심에서 사용자의 신원을 인증하고 여러 애플리케이션은 이를 신뢰하여 사용자의 접근을 허용하는 구조이다. 이를 통해 보안성을 유지하면서도 사용자 경험을 향상시키는 시스템이다.

Single Sign-On (SSO)는 사용자가 한 번 로그인한 후 여러 애플리케이션에 재인증 없이 접근할 수 있도록 해주는 시스템입니다. SSO Shell이 사용자를 인증하고 토큰을 발급하여 애플리케이션에 전달함으로써 사용자 인증을 처리합니다. SSO는 사용자 경험을 향상시키고 보안 관리 측면에서 일관성을 제공합니다.

 

Access Contol Matrix

필기에 적혀있듯 - 처리되어있는 권한이 있는 사람이 굉장히 제한적인 파일이 많을때 공간낭비가 심해진다.

 

Access Contol Directory

사용자가 자주 바뀌는 시스템에서 유리하다. 그냥 유저 디렉토리를 추가하고 제거하는 식으로 file에 대한 권한을 수정할 수 있어서 file자체에서 누가 어떤 권한이 있는지 하나하나 수정할 필요가 없기 때문이다.

 

Access Control List

각 리소스에 대한 접근 권한을 사용자나 그룹별로 관리하는 방식으로 세밀한 접근 제어가 가능한 것이 큰 장점이다. 그러나 사용자나 리소스가 많아질 경우 관리의 복잡성이 증가하며, 대규모 환경에서는 비효율적일 수 있다는 단점이 있다.

 

Key

DES와 발전된 버전인 AES는 Symmetric Cryptosystem을 갖고 있어서 숨겨야하는 Key를 A와 B가 몰래 알고 있고 이를 이용하여 암호화, 복호화를 진행하는 방식을 이용한다. 그러나 이는 Man in the Middle attack으로 인해 secret key가 털리는 경우 굉장히 치명적이다.

 

Error Detecting

Simple error detecting 방법으로는 컴퓨터 네트워크 수업때 배웠던 Parity checks, Cyclic redendancy checks등이 있다. 추가로 Cryptographic error detecting도 가능하다. One-way hash functions, Cryptographic checksums, Digital signatures가 그 방법이다.

One-Way Hash Functions: 데이터를 고정된 해시 값으로 변환하여 무결성을 확인하는 함수

Cryptographic Checksums: 암호화된 체크섬으로, 데이터 변조 방지와 무결성 확인을 보장

Digital Signatures: 전자적으로 문서를 서명하고, 인증과 무결성을 보장하는 서명 방식

 

Buffer Overflows

고의로 메모리보다 넘치게 넣어서 코드상으로 넘어가게 만들어 훼손시키거나 악성코드를 심음

Memory Organization

Buffer는 아래와 같이 Overflow될 수 있다.

아래와 같이 Procedure call이 설계되어있는 것을

이런식으로 수정시켜버릴 수 있다.

원래 Procedure B를 실행시키도록 해야하던 것이 code를 가르키게 된 것을 볼 수 있다.

 

Race Conditions

하나의 프로세스에 두명의 사용자가 존재하여 해당 프로세스에 접근하기 위해 경쟁하는 것을 의미한다. 시간차가 존재한다면 순서대로 프로세스에 접근하면 되니 문제가 없지만 접근 시간이 겹친다면 문제가 발생한다. Integrity가 지켜지지 않는다고 볼 수 있다.

A가 자리를 예약중인데 아직 확정짓지 못했기에 B도 같은 자리에 예약 프로세스에 들어간 것이다. A와 B 모두 예약에 성공하게 되어 중복 예약이 될 위험이 있다.

 

Malware

Virus: 자기 자신을 복제하여, 악성 코드를 비악성 프로그램에 전달하고 그 프로그램을 수정함으로써 퍼질 수 있는 프로그램

Worm: 네트워크를 통해 자신의 복사본을 퍼뜨리는 프로그램

Trojan horse: 비악성 프로그램인 것처럼 숨겨서 시스템안으로 들어가고 악성 프로그램으로 작동하는 프로그램

 

확산 방식

1. 설치 및 인스톨러 프로그램 (Setup and installer program): 악성코드는 정상적인 프로그램 설치 과정에 숨어있어 사용자가 인스톨러를 실행할 때 시스템에 감염될 수 있다.

 

2. 첨부 파일 (Attached file): 이메일이나 메시지에 첨부된 파일을 통해 악성코드가 전파될 수 있다. 특히 첨부된 실행 파일을 무심코 열었을 때 시스템에 감염이 발생할 수 있다.

 

3. 문서 바이러스 (Document viruses): 워드 문서나 스프레드시트와 같은 파일에 악성 매크로나 코드가 삽입되어 있을 수 있으며, 이러한 문서를 열면 감염이 시작된다.

 

4. 자동 실행 (Autorun): USB 드라이브나 외장 하드디스크와 같은 이동식 장치에서 자동 실행 기능을 악용하여 악성코드가 시스템에 전파될 수 있다. 이동식 장치를 삽입하면 악성코드가 자동으로 실행된다.

 

5. 비악성 프로그램을 이용한 전파 (Using nonmalicious programs): 악성코드가 비악성 프로그램과 결합하여 전파될 수 있는 몇 가지 방식이 있다.

첨부 바이러스(Appended viruses): 기존의 정상적인 프로그램에 악성코드가 추가되어 함께 실행된다.

프로그램을 둘러싼 바이러스(Viruses that surround a program): 악성코드가 프로그램의 앞이나 뒤에 위치해 프로그램 실행 시 함께 동작한다.

통합 및 대체 바이러스(Integrated viruses and replacements): 정상적인 프로그램을 악성코드로 대체하거나, 프로그램 내부에 악성코드를 통합시켜 실행된다.

 

활성화 방식

 

1. One-time execution (implanting): 일회성 실행으로 악성코드가 한 번 실행된 후 시스템에 심어지거나 설치되는 방식이다. 이후 지속적인 영향을 줄 수 있다.

 

2. Boot sector viruses (부트 섹터 바이러스): 이 바이러스는 컴퓨터가 부팅될 때 하드디스크나 이동식 디스크의 부트 섹터를 감염시킨다. 부팅 시마다 악성코드가 실행되도록 하여 시스템을 지속적으로 감염시킨다.

 

3. Memory-resident viruses (메모리 상주 바이러스): 이 바이러스는 시스템 메모리에 상주하여 컴퓨터가 켜져 있는 동안 계속 활동한다. 한 번 메모리에 로드되면, 다른 프로그램이나 파일을 감염시키기 쉽다.

 

4. Application files (응용 프로그램 파일): 응용 프로그램 파일에 악성코드가 포함되어 있거나 실행 시 해당 파일을 통해 감염이 발생할 수 있습니다. 이 방식은 주로 실행 파일(exe 파일)을 통해 이루어진다.

 

5. Code libraries (코드 라이브러리): 시스템이 사용하는 코드 라이브러리(DLL 파일 등)에 악성코드를 삽입하여, 프로그램이 해당 라이브러리를 호출할 때마다 악성코드가 실행된다. 이는 여러 프로그램에 동시에 영향을 미칠 수 있다.

 

Virus Detection

Virus scanner는 virus의 signature를 찾으려한다. 이는 file이나 memory에 존재하는 string pattern일 수도 있고 execution pattern일 수도 있고 storage pattern일 수도 있다.

 

Code testing

Unit testing

Integration testing

Function testing

Performance testing

Acceptance testing

Installation testing

Regression testing

Penetration testing

 

Design Principles for Security

Least privilege

Economy of mechanism

Open design

Complete mediation

Permission based

Separation of privilege

Least common mechanism

Ease of use

 

Browser Attack

Man-in-the-browser

Keystroke Logger

키보드에 입력되는 내용을 가로채버림

 

Page-in-the-Middle

 

Program Download Substitution

좋은걸 준다고 거짓말로 어떤 페이지로 유도해서 download하도록 하면 malware에 감염되도록 하는 방법

 

User-in-the-Middle

CAPTCHA를 다른 사람에게 시켜버리는 작업

 

SQL Injection

코드에서 사용되는 특수문자를 활용하여 ID, password등을 입력하는 순간 코드에 변형을 만들어 모든 아이디를 허가하고 비밀 번호는 입력할 필요도 없도록 해버린다.

 

Dot-Dot-Slash

이름 그대로 ../ 패턴을 이용하는 것이다. ../은 부모 디렉토리로 올라간다는 뜻이다. 이를 활용해 접근할 수 없던 위치의 폴더까지 접근해서 마음대로 보거나 수정하는 방법이다.

 

Database Security Requirements

1. Physical Integrity (물리적 무결성):

데이터베이스 하드웨어와 관련된 보호로, 하드웨어 손상으로 인한 데이터 손실을 방지하는 것을 의미합니다. 예를 들어, 하드 드라이브 고장이나 재해 발생 시 데이터를 안전하게 복구하는 능력을 포함합니다.

2. Logical Integrity (논리적 무결성):

소프트웨어적인 오류나 논리적 결함으로 인해 데이터가 손상되지 않도록 보장하는 것을 말합니다. 논리적 무결성은 데이터베이스의 구조가 올바르게 유지되고, 데이터의 논리적 일관성을 보호하는 것을 목표로 합니다.

3. Element Integrity (요소 무결성):

데이터베이스 내 개별 요소들(레코드나 필드)의 정확성과 적법성을 보장하는 것을 의미합니다. 이는 사용자나 응용 프로그램이 허용된 범위 내에서만 데이터를 수정할 수 있게 하는 규칙을 포함합니다.

4. Auditability (감사 가능성):

데이터베이스에서 이루어지는 모든 작업을 기록하고 추적할 수 있는 기능입니다. 로그 기록을 통해 데이터 액세스나 변경 사항을 감사할 수 있으며, 이를 통해 보안 문제나 잘못된 조작을 식별할 수 있습니다.

5. Access Control (접근 제어):

데이터베이스에 접근할 수 있는 사용자를 제한하고, 각 사용자별로 특정 데이터나 기능에 대한 접근 권한을 부여하는 것을 의미합니다. 이를 통해 데이터에 대한 불법적 접근을 방지할 수 있습니다.

6. User Authentication (사용자 인증):

데이터베이스에 접근하려는 사용자가 실제로 권한이 있는 사용자인지 확인하는 과정입니다. 비밀번호, 인증서 또는 생체 인증 등의 방법을 통해 이루어집니다.

7. Availability (가용성):

데이터베이스는 필요한 때에 적절한 접근 권한을 가진 사용자가 사용할 수 있어야 합니다. 이는 데이터가 손상되거나 공격을 받아 사용할 수 없는 상태가 되지 않도록 보호하는 것을 의미합니다.

 

Two-Phase Update

Two-Phase Update를 통해 race condition과 같은 상황에서도 데이터 베이스의 무결성을 유지할 수 있다.

1. Intent: write 빼고 모든 작업을 다 하는 phase이다. 결국 update를 하기 위해 준비하는 단계라고 볼 수 있다. commit flag를 남겨두어 다음 phase에서 문제가 생기면 commit 지점으로 돌아가면 된다.

2. Write: 모든 update 작업이 완성되고 commit flag를 제거한다.

 

Security vs Precision

데이터를 어디까지 공개하고 활용하느냐에 따라 trade off가 존재한다.

 

Suppression Techniques

데이터를 숨기는 방법이다.

1. Low-frequency elements는 특정할 수가 있기에 제거하고 공개한다.

2. 데이터를 그대로 공개하는 것이 아니라 몇가지 요소를 연산해서 제공한다.

3. Random sample

4. 작은 sample size를 가진 데이터는 막는다.

5. Random한 노이즈 즉 잘못된 error value를 조금 섞어서 공개한다.

6. 통계적 결과는 그대로 유지하되 individual한 record는 섞어버린다.

 

Data Mining Challenges

데이터 오류 수정

개인 정보 보호 유지

세분화된 접근 제어

안전한 데이터 저장

트랜잭션 로그

실시간 보안 모니터링


728x90

'Quality control (Univ. Study) > Information Security' 카테고리의 다른 글

Buffer-overflow attack lab (3)  (0) 2024.12.07
Network security  (2) 2024.12.06
Buffer-overflow attack lab (2)  (0) 2024.12.04
Buffer-overflow attack lab (1)  (1) 2024.12.02
Basic of Information Security(midterm)  (1) 2024.10.22