🔒 암호학의 정의와 기본 개념
- 암호학(Cryptography)은 고대 그리스어 Kruptós(비밀) + gráphō(쓰기)에서 유래되었다고 한다.
- 암호학이란 적대적 행동이 존재하는 상황에서 안전한 통신을 위한 기술이라고 한다.
- 암호학적 기본 요소(Cryptographic primitives)는 컴퓨터 보안 시스템을 위한 암호화 프로토콜을 구축하는 데 사용되는 잘 확립된 저수준 암호화 알고리즘이라고 한다.
- primitive → 알고리즘이라고 생각하면 편함
- 저수준의 암호화 알고리즘 → 보안 프로토콜과 시스템의 기초가 되는 기본적인 암호화 기법
- 암호화 프로토콜은 보안 관련 기능을 수행하고 암호화 방법을 적용하는 추상적 또는 구체적 프로토콜이라고 한다.
- protocol → 암호화된 데이터를 주고받는 규약
🤔 암호학의 주요 영역:
- 대칭 암호화(Symmetric encryption)
- 비대칭 암호화(Asymmetric encryption)
- 공개키와 개인키라는 한 쌍의 키를 사용하는 방식
- 공개키는 누구나 알 수 있지만, 개인키는 소유자만이 알고 있어야 함
- 송신자는 수신자의 공개키로 평문을 암호화하고, 수신자는 자신의 개인키로 암호문을 복호화함. 또는, 송신자는 자신의 개인키로 메시지에 서명하고, 수신자는 송신자의 공개키로 서명을 검증할 수 있음.
- 데이터 무결성 알고리즘(Data Integrity algorithms)
- 데이터 무결성 알고리즘은 데이터가 전송 또는 저장 중에 변경되지 않았음을 확인하는 데 사용됨
- 인증 프로토콜(Authentication protocols)
- 사용자의 신원을 확인하는 데 사용됨
📖 반드시 4가지로 grouping되는 것은 아님
🔐 컴퓨터 보안의 정의 (NIST):
컴퓨터 보안의 정의 (NIST): "자동화된 정보 시스템의 자원의 무결성, 가용성, 기밀성을 보존하기 위한 적용 가능한 목표를 달성하기 위해 제공되는 보호"
CIA 트라이어드:
- 기밀성(Confidentiality): 정보 접근 및 공개에 대한 승인된 제한 유지
- 무결성(Integrity): 부적절한 정보 수정이나 파괴로부터 보호
- 가용성(Availability):
- 정보에 대한 시기적절하고 신뢰할 수 있는 접근 보장
- 어떤 서비스를 이용하려 했을 때, 해당 서비스가 사용자에게 적절하게 제공됨
CIA 트라이어드 확장 개념:
- 진정성(Authenticity):
- 진짜임을 확인하고 신뢰할 수 있는 속성
- 사용자가 주장하는 대로인지 확인
- 통신하는 상대방이 그 상대방이 맞는지
- 책임성(Accountability): 행동을 특정 주체에 고유하게 추적할 수 있는 보안 목표, 시스템은 나중에 보안 침해를 추적하거나 거래 분쟁을 해결하기 위한 활동 기록 유지
🧐 보안 분야:
- 사이버 보안: 사이버 환경과 조직 및 사용자 자산을 보호하기 위한 도구, 정책, 개념 등의 집합
- 정보 보안: 정보의 기밀성, 무결성, 가용성 보존
- 네트워크 보안: 네트워크와 서비스를 무단 수정, 파괴, 공개로부터 보호하고 네트워크가 중요한 기능을 올바르게 수행하도록 보장
- 기타: 소프트웨어 보안, 웹 보안, 시스템 보안 등
🔫 위협과 공격:
- 위협(Threat): 보안을 침해하고 해를 끼칠 수 있는 상황, 능력, 행동 또는 사건이 있을 때 존재하는 보안 위반의 잠재적 가능성
- 공격(Attack): 지능적인 위협에서 파생된 시스템 보안에 대한 공격, 시스템의 보안 정책을 위반하고 보안 서비스를 회피하려는 의도적인 시도
⚙️ OSI 보안 아키텍처:
- 보안 공격: 정보의 보안을 손상시키는 모든 행동
- 보안 메커니즘: 보안 공격을 탐지, 방지, 복구하기 위한 프로세스
- 보안 서비스: 시스템 보안을 강화하는 처리 서비스, 보안 공격에 대응하기 위한 것으로 하나 이상의 보안 메커니즘을 활용
🔫 보안 공격 유형:
- 수동적 공격(Passive Attack):
- 시스템에서 정보를 학습하거나 사용하려고 시도하지만 시스템 리소스에 영향을 주지 않음
- 데이터 변경이 없어 감지하기 어려움
- 예: 도청, 트래픽 모니터링
- 능동적 공격(Active Attack):
- 시스템 리소스를 변경하거나 작동에 영향을 주려는 시도
- 데이터 스트림을 수정하거나 거짓 스트림을 생성
- 다양한 물리적, 소프트웨어, 네트워크 취약점으로 인해 방지하기 어려움
- 유형:
- 가장(Masquerade): 한 개체가 다른 개체인 척함
- 재생(Replay): 데이터 유닛을 수동적으로 캡처하여 재전송
- 데이터 수정: 합법적인 메시지의 일부 변경, 지연, 재정렬
- 서비스 거부: 통신 시설의 정상적인 사용이나 관리를 방해
🛅 보안 서비스:
- 인증(Authentication):
- 통신의 진정성 보장
- 피어 엔티티 인증: 연결에서 피어 엔티티의 신원 확인
- 데이터 원본 인증: 데이터 단위의 출처 확인
- 접근 제어(Access Control):
- 호스트 시스템과 애플리케이션에 대한 접근 제한 및 제어
- 접근 권한을 개인에 맞게 조정하기 위해 각 엔티티는 식별되고 인증되어야 함
- 데이터 기밀성(Data Confidentiality):
- 수동적 공격으로부터 전송 데이터 보호
- 트래픽 분석으로부터 트래픽 흐름 보호
- 인가되지 않은 사용자로부터의 데이터 보호
- 데이터 무결성(Data Integrity):
- 메시지가 중복, 삽입, 수정, 재정렬 또는 재생 없이 전송된 대로 수신되도록 보장
- 부인 방지(Nonrepudiation):
- 송신자나 수신자가 전송된 메시지를 부인하지 못하게 함
- 메시지 전송 시 수신자는 송신자가 실제로 메시지를 보냈음을 증명 가능
- 메시지 수신 시 송신자는 수신자가 실제로 메시지를 받았음을 증명 가능
- 가용성(Availability):
- 시스템 가용성을 보장하기 위한 보호
- 서비스 거부 공격으로 인한 보안 문제 해결
⚙️ 보안 메커니즘:
- 암호화 알고리즘: 암호화, 암호학적 기본 요소, 암호화 알고리즘, 해시 알고리즘
- 데이터 무결성: 데이터 단위의 무결성을 보장하기 위한 다양한 메커니즘
- 디지털 서명: 데이터 단위의 출처와 무결성을 증명하고 위조로부터 보호
- 인증 교환: 정보 교환을 통해 엔티티의 신원을 보장하기 위한 메커니즘
- 트래픽 패딩: 트래픽 분석 시도를 좌절시키기 위해 데이터 스트림의 간격에 비트 삽입
- 공증: 데이터 교환의 특정 속성을 보장하기 위한 신뢰할 수 있는 제3자 사용
- 접근 제어: 리소스에 대한 접근 권한을 시행하는 다양한 메커니즘
📒 Kerckhoff의 원칙:
❗ 가장 중요함
-
암호 시스템은 키를 제외한 모든 세부 사항이 공개적으로 알려져 있더라도 안전하도록 설계되어야 함
-
"암호 방식은 비밀일 필요가 없어야 하며, 적의 손에 들어가도 불편함 없이 사용할 수 있어야 한다."
-
암호 방식의 보안은 알고리즘의 비밀성이 아닌 비밀 키에만 의존해야 함
📖 알고리즘이 노출되더라도 알고리즘을 수정할 필요 X