Security
Dependability vs Security: 신뢰성과 보안
신뢰할 수 있는 컴퓨터 시스템은 그 서비스를 제공할 것이라고 정당하게 믿을 수 있는 시스템이다.
신뢰성과 관련된 요구사항
Requirement | Description |
Availability(가용성) | Readiness of usage: 사용준비 |
Reliability(신뢰성) | Continuity of service delivery: 서비스 제공의 유지 |
Safety(안전성) | Very low probability of catatrophes: 비극의 낮은 가능성 |
Maintainability(유지보수성) | How easy to be repaired: 얼마나 수리하기 쉬운가 |
이 외의 의도적인 실패는 일반적으로 보안 문제로 간주된다.
CIA Triad: CIA 삼각형
- Confidentiality(기밀성): 컴퓨터 시스템의 정보가 허가된 당사자에게만 공개되는 속성
- Integrity(무결성): 시스템의 자산에 대한 수정은 허가된 방식으로만 이루어질 수 있는 속성
- Availbility(가용성): 정보는 허가된 당사자에게 항상 일관되고 쉽게 접근해야하는 속성
Security Threats: 보안 위협
- Interception(가로채기): 허가되지 않은 사용자가 접근 (e.g., Evaesdropping: 도청)
- Interruption(중단): 서비스나 데이터가 사용할 수 없게 되는 경우(e.g., Denial of Service: 서비스 거부)
- Modification(수정): 서비스나 데이터가 허가 없이 변경되는 경우(e.g., message tampering: 메시지 변조)
- Fabrication(위조): 추가적인 서비스나 데이터가 조작되어 생성되는 경우(e.g., masquerading, replaying: 위장, 재전송)
Security Policy: 보안 정책
정책이란, 공격으로부터 보호하기 위해 보안 메커니즘을 사용하는 방법을 규정한 것이다.
도메인 간 인증(cross-domain authentication) 및 사용자를 전역적으로 인식할 수 있도록 하는 메커니즘을 도입한다.
Security Mechanisms
- Encryption(암호화): 데이터를 공격자가 이해할 수 없는 형태로 변환
- Authenticaiton(인증): 사용자가 주장하는 신원을 확인
- Authorization(인가): 인증된 사용자가 요청한 작업을 수행할 권한이 있는지 확인
- Access control(접근 제어): 보호 도메인, 접근 제어 목록 등을 통해 자원에 대한 접근을 제어
- Auditing(감사): 어떤 클라이언트 또는 내부 서비스가 무엇을 어떤 방식으로 접근했는지를 추적
Security Design
- 제어에 집중: 허가되지 않은 사용자, 유효하지 않은 직업, 데이터로부터 보호
- 보안 메커니즘의 계층화: 보안 메커니즘이 구현되는 논리적 수준을 결정
- 보안 메커니즘의 분산: 신뢰할 수 있는 컴퓨팅 기반(Trusted computing base, TCB - 분산 시스템에서 보안 정책을 시행하는데 필요한 모든 보안 메커니즘의 집합, 작을수록 좋다.), 보안 시스템 구성 요소에 대한 인터페이스 축소 원칙(The principle of Reduced Interfaces for Secure Components, RISSC)
Cryptography(암호학)
- Encryption(암호화): 메시지의 내용을 숨기기 위해 메시지를 인코딩하는 과정
- Key encryption: 공개 키와 개인 키, 공유 비밀을 사용
- 암호학의 사용: 비밀성과 무결성(Integrity)의 보장, 인증, 디지털 서명(Non-repudiation, 부인 방지, 서명자가 서명을 부인할 수 없도록 보장)
Authentication(인증)
인증과 무결성은 서로에게 의존한다.
- Authentication without integrity: 메시지가 인증되더라도, 내용이 침입자에 의해 변조되었다면 인증은 의미를 잃는다.
- Integrity without authentication: 메시지가 원본 상태를 유지하더라도, 출처가 침입자에 의해 위장되었다면 무결성은 의미를 잃는다.
인증의 방법은 다음과 같다.
- Password-based authentication
- Multi-factor authentication(MFA)
- Certificate-based authentication(인증서 기반 인증): Public and private keys, Digital cerificates
- Biometirc authentication(생체 인증): Facial recognition(얼굴 인식), Fingerprint scanning(지문 스캔), Speaker recognition(음성 인식), Eye scanning(안구 스캔)
- Token-based authentication
Authorization(인가)
인증은 주체(subject)의 신원을 확인하는 것이고,
인가는 주체가 특정 객체(object)에서 요청된 작업을 수행할 권한이 있는지 결정하는 것이다.
즉, 인가는 요청 주체가 인증되었을 때만 의미를 가지는 것이다.
Access Control(접근 제어)
파일이나 프로그램과 같은 리소스에 대한 접근을 제어하는 것이다.
접근 행렬(Access matrix)이란, 시스템 내 리소스에 대해 사용자의 접근 권한을 나타내는 행렬이다.
access matrix(user, resource) = access right 으로 정의된다.
접근 행렬은 희소(sparse)하고 크기가 클 수 있으므로 효율적인 저장 관리가 필요하다.
접근 제어의 방법은 다음과 같다.
- 접근 제어 목록(Access control List): 특정 리소스에 접근 가능한 사용자와 그 권한을 나열한 목록이다. 사용자의 고유 식별자가 필요하며, 주로 대규모 리소스에 사용한다.
- 능력(Capabilities): 사용자가 특정 리소스에 대해 가지는 접근 권한의 목록이다. 능력은 키를 사용하여 암호화가 가능하다.
Firewalls(방화벽)
내부 네트워크를 보호하기 위해 들어오고 나가는 통신에 대해 필터링 작업을 수행하는 것이다.
방화벽은 내부 침입자(Internal intruders)에 취약하다. 이를 완화하기 위해 사용자 인증과 결합한다.
또한 IP Spoofing과 같은 서비스 거부 공격(Denial-of-Service Attacks)에 취약하다. 이는 Qos메커니즘을 사용해 데이터 흐름을 제한하여 완화가 가능하다.
Security in Distributed Systems
Code Security
복잡한 버그를 탐지하여 정의되지 않은 동작이 사용자에게 영향을 미치지 않도록 방지하고, 서비스를 손상시키는 취약점을 수정한다.
SonarQube와 같은 도구를 사용한다.
Cookie vs JSON Web Token(JWT)
Cookie(서버 측 세션): 서버가 세션 ID를 생성하고, 해당 ID를 포함한 쿠키를 브라우저(클라이언트)로 전송한다. 클라이언트는 쿠키를 기반으로 서버에 요청을 보낸다.
다만, 쿠키에는 문제가 있다.
쿠키는 서버 측 세션이기 때문에, 여러 서버가 존재하는 시스템에서는 쿠키를 사용할 수 없다.
즉, 하나의 서버를 위한 쿠키가 생성되면, 그 서버에서만 쿠키를 사용할 수 있다.
따라서 요즘은 JWT를 사용한다.
JWT는 JSON형태로 정보를 안전하게 전송하기 위한 규칙을 정의한다. 간결하고, 자족적이다.
서버는 ACCESS_TOKEN_SECRET으로 사용자 ID와 만료 날짜를 암호화하여 액세스 토큰을 생성하고, 해당 토큰을 브라우저로 전송한다. 브라우저는 해당 토큰을 기반으로 서버에 요청을 보낸다.
Workload Identity
워크로드는 애플리케이션의 실행 중인 인스턴스를 의미한다.
Zero Trust는 시스템을 보호하기 위한 전략적 접근 방식으로, 암묵적인 신뢰를 제거하고 디지털 상호작용의 모든 단계를 지속적으로 검증한다.
Data Security
데이터의 유형에는 사용중인 데이터, 저장된 데이터, 전송중인 데이터가 있다.
- 사용중인 데이터: 일반적으로 암호화되지 않고 쉽게 접근이 가능하다. 신원 관리(Identity management)가 필요하다.
- 저장된 데이터: 데이터베이스 같은 특정 위치에 저장된 데이터다. 접근 제어가 필요하다. 암호화가 되어있다. (파일 레벨 암호화, 셀 레벨 암호화, 열 레벨 암호화 - 행 레벨 암호화, 테이블 스페이스 레벨 암호화)
- 전송중인 데이터: 한 위치에서 다른 위치로 이동 중인 데이터다. 트래픽 암호화가 되어있다.
Trusted Execution Environments (TEE)
메인 프로세서 내의 보안 영역으로, 내부에 로드된 코드와 데이터가 기밀성 및 무결성 측면에서 보호될 것을 보장한다.
Linux Security Modules (LSMs)
Linux 커널이 다양한 컴퓨터 보안 모델을 지원할 수 있도록 하는 프레임워크이다.
Secure computing (Seccomp)
Linux 커널의 보안 기능이다.
프로세스가 특정 시스템 호출을 제외하고는 모든 시스템 호출을 수행할 수 없는 "보안"상태로 일방적으로 전환할 수 있도록 허용한다.
Network Attacks
원래 같으면 Bob과 Alice가 서로 통신을 해야하지만, Attacker가 IP를 가로채는 경우이다.
해커가 거짓 DNS 엔트리를 사용하여 클라이언트가 거짓 웹사이트로 연결되게 하는 공격이다.
악의적인 사용자가 임의의 코드를 실행할 수 있도록 코드의 구조를 악용하는 것이다.
이 역시 코드에 '를 추가하고, 뒷 내용들을 주석처리 하여 코드를 악용한다.
Intrusion Detection(Prevention): 침입 탐지(방지) 시스템
- Network intrusion detection system(NIDS): 네트워크 침입 탐지 시스템은 네트워크 또는 네트워크 서브넷으로 들어오고 나가는 패킷을 모니터링한다. 잠재적인 침입을 알려진 비정상적 또는 해로운 동작과 비교한다.
- Host intrusion detection system(HIDS): 호스트 침입 탐지 시스템은 호스트에서 실행되며 해당 호스트를 모니터링한다. 트래픽을 모니터링할 수 있지만 시스템 활동 모니터링에 초점을 맞춘다. (비정상적인 파일 접근, 프로세스 실행, 로그인 등을 탐지)
- Signatrue-based(서명 기반): 알려진 공격 행동의 목록에 의존한다.
- Anomaly-based(이상 기반): 네트워크 또는 시스템의 정상적인 동작 모델로 시작하여, 정상 동작 모델에서 벗어나는 동작이 탐지될 때 관리자에게 경고한다.
** 대학교 수업을 듣고 이해한 부분을 최대한 풀어서 작성한 글입니다.
틀린 정보가 존재할 수 있으며, 언제나 피드백은 환영입니다. **
'DKU > 분산처리' 카테고리의 다른 글
Distributed System 19 (3) | 2024.12.15 |
---|---|
Distributed System 18 (1) | 2024.12.15 |
Distributed System 16 (1) | 2024.12.13 |
Distributed System 15 (1) | 2024.11.21 |
Distributed System 14 (1) | 2024.11.18 |