Replicated

암호툴, 암호 알고리즘, 암호 프로토콜, 암호 기본 원칙 본문

스마트카 소프트웨어 보안

암호툴, 암호 알고리즘, 암호 프로토콜, 암호 기본 원칙

라구넹 2025. 4. 12. 20:01

공격 유형

수동적 공격(Passive Attack)

- 도청에 의한 내용 파악

- 트래픽 분석(Traffic Analysis)

 

능동적 공격(Active Attack)

- 변조 공격 (Modification)

- 삽입 공격 (Insertion)

- 삭제 공격 (Deletion)

- 재생 공격 (Replay)

- 서비스 거부 공격 (Denial-of-Service)

 

 

암호 시스템 적용 대상

- 기밀성 (Confidentiality)

- 메시지 무결성 (Integrity)

- 메시지 인증 (Message Authentication)

- 인증(사용자/사물) (Authentication)

- 부인방지 (Non-repudiation)

 

정보보호 3대요소

- 기밀성(Confidentiality) : 메시지 못보게

- 무결성(Integrity) : 변조되지 않도록

- 가용성(Availability) : 필요할 때 언제든

 

6대 원칙? (나머지는 여기 저기서 말하는게 다름)

- 인증성(Authenticity) : 누가 보낸 건지 확인, 본인이 맞음을 확인 가능해야 함

- 책임추적성(Accountability) : 언제, 어떤 방식으로 메시지를 보냈는지 추적 가능해야 함

- 부인방지(Non-repudiation) : 자신이 보내지 않았다고 부인할 수 없어야 함

 


 

암호툴(Cryptographic tools)

사용 툴: 난수 발생기

사용 사례: 난수생성

필요 분야: 암호화 키(비밀키)의 초기 생성

종류

TRNG(True Random Number Generator, 진 난수 발생기)

- 실제적으로 랜덤한 소스를 입력으로 사용

- 키보드 입력 타이밍 패턴 및 마우스 움직임

- 디스크의 전기적 활동, 시스템 클럭의 순간 값 등

PRNG(Pseudo Random Number Generator, 의사 난수 발생기)

- 고정값 seed, 결정적 알고리즘으로 출력 비트열 생성

- 제한이 없는 비트열 생성에 사용

- 알고리즘과 seed를 알고 있는 공격자는 비트열 재생성이 가능!

 

PRNG 요구사항

임의성

- 생성된 비트 스트림이 결정적일지라도 랜덤하게 보여야 함

- 비트열이 랜덤 -> 무작위로 추출된 어떤 비트열도 랜덤해야 함

비예측성

- 수열의 잇따른 다음 수의 순서에 대해 예측 불가

- 이전 비트 정보로 다음 출력 비트 예측 불가

- 생성된 어떤 값의 정보를 통해서도 seed 결정 불가

 

Seed 요구사항

- 예측 불가. (TRNG로 시드 생성)

 

Hybrid PRNG

- TRNG: 짧은 길이의 랜덤 밸류 생성

- PRNG: TRNG로 만든 랜덤 밸류를 Seed로 사용하여 PRN 생성

 

사용 툴: 해시함수

사용 사례: 데이터 압축

필요 분야: 임의의 길이 입력 데이터 처리

 

암호학적 해시 함수의 필요 조건

- 충돌 저항성 (Collision Resistance) - 서로 다른 입력으로 같은 값을 찾을 수 없어야 함

- 역상 저항성 (Preimage Resistance) - 출력으로 입력을 찾을 수 없어야

- 제2 역상 저항성 (Second Preimage Resistance) - 출력이 같은 입력을 찾을 수 없어야

 

사용 툴: 일방향 해시 함수

사용 사례: 일방향 연산

필요 분야: 패스워드 저장

- 계산하기는 쉽지만 역을 구하는 것이 어려운 함수, 결과값이 주어졌을 때 입력값을 구하는 것이 어려운 함수

 

안전하지 않거나 오래된 암호화 도구가 많음

암호화 툴 사용 전 권고 사항을 꼭 살펴야 함

 


 

암호 알고리즘

키생성 - 암호키 생성에 사용

데이터 암호화 - 데이터 기밀성 보장을 위한 암호화에 사용

메시지 인증 - 데이터 무결성 보장을 위한 메시지 인증 코드 생성에 사용 

 

키 생성

- 암호 키

    - 데이터 암호화 또는 데이터 무결성 검증에 사용할 검증 값 생성

    - 데이터 복호화 또는 데이터 무결성 검증 값 검증에 사용

 

데이터 암호화

- 데이터 기밀성 보장을 위한 암호화에 사용

- 대칭키, 공개키

 

메시지 인증

- 데이터 무결성 보장을 위한 메시지 인증 코드(MAC) 생성에 사용 

 

데이터 암호화 -> 데이터의 기밀성만 보장

데이터 인증 -> 데이터의 무결성만 보장


 

암호 프로토콜 (Cryptographic protocols)

- 특정 보안 조치를 실행하는 구체적인 프로토콜

- 암호 알고리즘과 암호 툴을 결합한 대화형 시퀀스

- 사용자 인증, 키 교환

 

사용자 인증의 예

- 클라이언트는 비밀키를 서버로 전송

- 서버는 수신한 비밀키, 저장된 비밀키 비교

-> 공격자가 통신회선 도청으로 키 획득 및 재사용 가능

 

키를 암호화하여 전송하면?

- 데이터 암호화는 데이터 인증을 제공하지 않음

-> 재사용

 

안전한 사용자 인증의 예

- 서버는 랜덤한 값을 클라이언트에 전송

- 클라이언트는 비밀키로 응답값 만듦

- 클라이언트는 응답값을 서버에 전송

- 서버는 응답값 검증

 

독자적인 암호 알고리즘과 암호 프로토콜을 구축하는 건 위험

안전성이 검증된 표준 암호 알고리즘과 암호 프로토콜을 사용해야 함

 


 

암호 기본 원칙(Fundamental crypto principles)

- Kerckhoffs' principle: 암호 알고리즘은 알고리즘의 모든 내용이 공개되어도 키가 노출되지 않으면 안전해야 함. 암호 알고리즘의 안전성은 키의 비밀(secrecy)에만 의존해야 하며 암호 알고리즘의 비밀에 의존하지 않아야 함

- Sufficient key space principle: 암호 알고리즘에서 사용하는 키의 범위는 충분히 커야 함

 

Kerckhoffs' principle -> 비밀 데이터가 적어질수록 전체적인 안전성은 높아짐

- 보안성 강화(Increased security) : 시스템에 비밀이 적을수록 더 쉽게 보호 가능

- 견고성 향상(Increased robustness) : 알고리즘 변경보다 키 변경이 더 쉬움

- 신뢰성 향상(Increased reliability) : 암호 전문가들이 모인 커뮤니티에서 공개된 시스템 검증

 

Sufficient key space principle

- 전수조사 공격에 대비

- 침입자가 평문-암호문 쌍을 알고 있으면 모든 키를 대입할 수 있음