컴퓨터 보안

Database Security

앜지 2024. 4. 13. 00:22

-Overview of Databases and DBMS

간단하게 DB와 DBMS를 살펴보자면

데이터베이스는 데이터와 메타데이터가 구조화된 형식으로 조직된 컬렉션이다.

데이터의 종류에는 

  • 통합 데이터: 중복되지 않는 데이터의 집합
  • 저장된 데이터: 저장 매체에 저장된 데이터 집합
  • 운영 데이터: 기능 수행에 필요한 데이터
  • 공유 데이터: 하나 이상의 응용 프로그램에서 사용되는 구조화된 데이터 집합

데이터베이스의 특성:

  • 원칙적으로, 데이터베이스는 동일한 데이터가 중복되지 않는 것을 의미한다.
  • 데이터 항목 간의 관계 및 데이터 항목 그룹을 포함한다.
  • 때로는 보안이 필요한 민감한 데이터를 포함할 수 있다.

DBMS(Database Management System)은 데이터베이스를 쉽게 생성,액세스 및 수정할수 있도록 하는 소프트웨어이다. 

기본용어

  1. 관계/테이블/파일 (Relation/Table/File):
    • 관계형 데이터베이스에서 데이터가 구조화된 형태로 저장되는 곳을 가리킨다
    • 테이블은 행과 열의 형태로 데이터를 저장하며, 각 열은 특정 유형의 데이터를 나타내는 속성을 가진다.
  2. 튜플/행/레코드 (Tuple/Row/Record):
    • 테이블의 개별 항목을 나타낸다.
    • 각 튜플(행 또는 레코드)은 테이블에 저장된 하나의 데이터 레코드를 의미한다.
  3. 속성/열/필드 (Attribute/Column/Field):
    • 테이블의 열은 데이터의 특정 유형 또는 속성을 나타낸다.
    • 각 열은 특정 유형의 데이터(숫자, 문자열, 날짜 등)를 포함한다.
  4. 기본 키 (Primary Key):
    • 테이블에서 각 행을 고유하게 식별하는 데 사용되는 열 또는 열의 조합이다.
    • 기본 키는 중복이 허용되지 않으며, 테이블의 각 행은 고유한 기본 키 값을 가져야 한다.
  5. 외래 키 (Foreign Key):
    • 한 테이블의 속성이 다른 테이블의 기본 키와 관련된 키
    • 외래 키를 사용하여 두 테이블 간의 관계를 설정하고 참조할 수 있다.
  6. 뷰/가상 테이블 (View/Virtual Table):
    • 하나 이상의 기본 테이블로부터 선택된 행과 열의 결과를 가지고 있는 가상 테이블.
    • 뷰는 데이터베이스 사용자에게 특정 관점이나 요구에 맞는 데이터만을 보여주는 역할을 한다.

SQL(Structured Query Language):

SQL은 데이터베이스에서 데이터를 정의, 조작, 조회하기 위한 언어이다.

문법에는 DDL(Definition),DML(Manipulation),DCL(Control)이 있다

 

Introduction to Database Security Issue

❖ Three Basic Concepts for Database Security:

  • 데이터베이스 보안에는 세가지 기본 개념이 존재한다.
  • Authentication: 사용자가 진짜로 자기가 주장하는 사람인지 증명하는 매커니즘
  • Authorization: subject가 시스템의 object에 대해 권한을 갖게 하는 것이다
  • Access Control: 시스템의 subject에 대한 액세스를 제한하는 것

❖ Database Security Threats

  • Any situation or event, whether intentional or unintentional, that will adversely affect a database system and consequently an organization
  • Loss of integrity
  • Loss of availability
  • Loss of confidentiality

❖ To protect databases against these types of threats, four kinds of countermeasures can be implemented: 

  • Access control: This function is handled by creating user accounts and passwords to control login process by the DBMS. (MAC, DAC, RBAC) 
  • Inference control: This function is handled by controlling the access to a statistical database, which is used to provide statistical information or summaries of values based on various criteria. ▪
  • Flow control: This function is handled by preventing information from flowing in such a way that it reaches unauthorized users. 
  • Encryption: This function is handled by protecting sensitive data (such as credit card numbers) that is being transmitted via some type communication network

 

Database Access Control Issues: SQL Injection Attacks

 

One of the most prevalent and dangerous network-based security threats

Depending on the environment, SQL injection can also be exploited to:

▪ Modify or delete data

▪ Execute arbitrary operating system commands

▪ Launch denial-of-service (DoS) attacks

SQL Injectoin은 일반적으로 문자열을 미리 종료시키고 새로운 명령을 추가시켜서 작동시킨다.

이런식으로 sql문이 짜져있다면 

원래 목적은 사용자의 id가 주어진다면 해당되는 사용자를 select하는 것이다.

그런데 공격자가 만약에 'UserId: 105 OR 1=1'라고 입력을 넣는다면 SQL 문장은 이렇게 될것이다

이 둘중 하나

그러면1-1은 true를 반환하기 때문에 모든 "User"의 행을 반환할 것이다.

SQLi Countermeasures

그렇다면 이 인젝션 공격을 대비하려면 어떻게 해야할까.

크게는 세가지로 나눌수가 있다.

❖ Defensive coding: stronger data validation. 더 강력한 데이터 유효성 검사를 통해 SQL 쿼리에 대한 안전한 입력을 보장한다. 입력을 받기 전에 데이터를 정리하고 문자열을 쿼리에 직접 삽입하지 않고 매개변수화된 쿼리등의 방법을 사용한다.

❖ Detection

  • Signature based: 알려진 인젝션 패턴을 감지한다
  • Anomaly based: 기본적인 시스템 동작에서 벗어나는 활동을 탐지한다.
  • Code analysis: 소스코드를 분석하여 취약점을 탐지한다.

❖ Runtime prevention: Check queries at runtime to see if they confirm to a model of expected queries. 런타임에서 쿼리를 확인하여 예상치 않은 쿼리의 변경이 감지되면 차단한다.

 

Inferential Attack(추론 공격)
❖ Inferential attack (Gathering Information)
: 추론적 공격은 데이터의 실제 전송이 없지만, 공격자가 특정 요청을 보내고 웹사이트/데이터베이스 서버의 결과 동작을 관찰함으로써 정보를 재구성할 수 있는 공격 
• Illegal/logically incorrect queries: 문법에 맞지 않은 타입이나 데이터를 입력으로 넣어서 데이터베이스의 테이블이 무슨 이름을 가지고 있는지, 등등 다른 특성들을 파악하는 공격이다.
• Blind SQLi: 블라인드 SQL 인젝션은 추론적 공격의 한 예시이다. 공격자는 직접적 응답이 없는 상황에서 SQL 쿼리를 삽입하여 결과를 유추하려고 시도한다.

Inference Countermeasures
❖ Inference detection at database design
▪ Alter database structure or access controls:설계과정에서 추론적 공격에 대한 감지를 위한 조치를 취한다.
❖ Inference detection at query time
▪ By monitoring and altering or rejecting queries 쿼리를 모니터링하고 수정,거부를 통해 공격을 감지한다.

 

Statistical Databases

통계 데이터베이스는 주로 통계 분석 목적으로 사용되는 데이터베이스. 온라인 트랜잭션 처리(OLTP) 시스템 대신 온라인 분석 처리(OLAP) 시스템으로 분류된다.

통계적인 성격의 데이터를 제공하며 계수,평균같은 지표도 제공을 한다.

유형은 두가지가 있는데,

  1. 순수 통계 데이터베이스(Pure statistical database): 오직 통계 분석을 위한 목적으로만 사용되며, 일반적인 데이터베이스 기능은 없다.
  2. 통계적 접근이 있는 일반 데이터베이스(Ordinary database with statistical access): 일반적인 데이터베이스 기능을 가지고 있지만, 특정 사용자는 통계적인 접근만을 갖고 있다.

통계 데이터베이스에서의 접근 제어는 개별 항목을 공개하지 않으면서도 통계적 사용을 허용하는 것을 목표로 한다.

그러니까 이런 통계 데이터베이스에서는 추론 공격에 대비하여 보호되어야 한다.

이렇게 사용되는 주요 기술로는 왜곡(Perturbation)이 있다.

 

• Query restriction(suppression) techniques – Restrict the query size, control the overlap among successive queries – Will result in differences in statistics: 쿼리의 크기를 제한하고 연속 쿼리간의 중복을 제한한다.

• Data perturbation techniques – Data swapping – Generate statistics from probability distribution of attributes 데이터 교환(Data swapping) 또는 속성의 확률 분포로부터 통계를 생성하여 데이터를 왜곡시다.

• Output perturbation techniques – Add noise to statistics generated from data – Statistic adjustment 데이터에서 생성된 통계에 노이즈를 추가하거나 통계를 조정하여 통계적 결과를 왜곡시킨다.

Database Encryption

데이터베이스가 중요한 데이터를 저장하는 귀중한 자원이니까 원래 다수의 레이어에 걸쳐 보안이 펼쳐져 있다.

firewalls, authentication, O/S access control systems, DB access control systems, and database encryption

사실 데이터베이스 전체를 암호화할수가 있지만 이 방법은 아주 비효율적이고 inflexible하다.

아니면 개별 테이을 암호화할수도 있다. 이는 단순하지만 비효율적이다.

가장 최적의 방법은 열이나 행을 암호화 하는 것이다.

'컴퓨터 보안' 카테고리의 다른 글

User Authentication  (0) 2024.04.12
Computer Security Overview  (0) 2024.03.08