컴퓨터 네트워크 보안 4장 연습 문제
1번. Holmes의 이야기를 마무리 하라
1. A는 무작위 숫자 R을 생성하고, 자신의 이름 A, 목적지 B와 함께 E(Ka, R)를 서버에 전송한다.
2. 서버는 E(Kb, R)를 A에게 응답으로 전송한다.
3. A는 E(R, M)과 함께 E(Kb, R)를 B에게 전송한다.
4. B는 Kb를 알고 있으므로, E(Kb, R)을 복호화하여 R을 얻고, R을 사용하여 E(R, M)을 복호화하여 M을 얻는다.
Solution
Z는 서버에게 소스 이름 A와 목적지 이름 Z(자신의 것)를 전송하며, 동시에 E(Ka, R)을 전송합니다.
이는 마치 A가 B에게 전송한 것처럼 동일한 키 R로 암호화된 동일한 메시지를 전송하려는 것처럼 보입니다.
서버는 A에게 E(Kz, R)를 전송하지만, Z가 그 메시지를 가로챕니다.
Z는 자신의 키 Kz를 알고 있기 때문에 E(Kz, R)을 복호화하여 R을 얻을 수 있습니다. 그런 다음 R을 사용하여 E(R, M)을 복호화하고 M을 얻을 수 있습니다.
4번. PCBC가 뒤에 따르는 블럭에 영향을 주지 않는다는 것을 보여라
PCBC는 암호 블록 체인 모드 (CBC)와 비슷하지만 오류 전파 방식의 차이가 있습니다.
- PCBC는 Kerberos4에서 사용되며, 이전 평문 블럭도 암호화에 추가하여 하나의 암호 블럭에서 오류가 발생하면 나머지도 사용하지 못한다
- 대신 복호화에서 취약점이 발생하는데, 2 개의 인접 블럭을 바꿔도 암호화에 영향을 주지 않는다
PCBC 모드의 복호화 식은 다음과 같습니다.
위의 복호화 식에 따라서 식을 전개하면 아래와 같습니다
임의의 두 블럭을 변경 했을 때의 식을 전개하겠습니다
Q3와 P3의 식을 전개하면, 각각 1-2번째 블럭은 변화가 있지만 3번째부터는 영향을 받지 않음을 알 수 있습니다.
7번. 비대칭 암호화에 기반한 일방향 인증 기법 문제
A-> B: IDa
B ->A: E(PUa, R2)
A->B: R2
Explain the Protocol
- A는 자신의 식별자(IDa)를 B에게 전송합니다.
- B는 무작위 값 R2를 생성하고, A의 공개 키(PUa)로 이 값을 암호화한 후 A에게 전송합니다.
- A는 자신의 개인 키를 사용하여 암호화된 메시지를 복호화하여 R2를 얻습니다. 그 후, A는 R2를 B에게 전송합니다.
- B는 받은 R2 값이 처음에 생성한 R2 값과 동일한지 확인합니다. 동일하다면 A의 인증이 성공한 것으로 간주합니다.
What Type of Attack is This Protocol Susceptible To?
이 프로토콜은 중간자 공격(Man-in-the-Middle, MITM)에 취약합니다.
공격자 C가 A와 B 사이의 통신을 가로채고, A가 암호화된 메시지를 복호화하도록 요청할 수 있습니다.
공격자 C는 암호화된 메시지를 R2로 사용하여 프로토콜을 실행하고, A가 복호화한 값을 확인할 수 있습니다.
이를 통해 공격자 C는 원래 A에게 전송된 암호화된 메시지를 복호화할 수 있습니다.
이러한 공격을 ㅔ방지하기 위해서는 메시지 무결성과 인증을 확인하는 방법과 함께 안전한 키 교환 프로토콜을 사용해야 합니다.
예를 들어, 디지털 서명이나 인증서를 사용하여 A와 B 간의 통신을 보호할 수 있습니다.
8번. Kerberos에서 밥이 앨리스로부터 티켓을 받았을 때, 그 티켓이 올바른 것인지 어떻게 알 수 있나
밥(Bob)은 사용자(Client)의 역할을 하며, 앨리스(Alice)는 서비스(Service)를 제공하는 역할을 합니다.
Timestamp와 lifetime을 통해 재전송 공격을 방어 할 수 있습니다.
엘리스는 Ticket과 Authenticator를 보고 사용자를 확인합니다.
커버로스에서 밥이 앨리스로부터 티켓을 받았을 때, 그 티켓이 올바른지 알 수 있는 이유는 세션 키로 암호화된 nonce(예: 타임스탬프)를 가지고 있기 때문입니다.
이 nonce를 이용하여 티켓의 유효성을 검증할 수 있습니다.
Nonce는 커버로스 과정 중 언제 생성되는가
커버로스 프로토콜의 과정 중에 사용자는 인증서버(AS)로부터 티켓 발행 서버(TGS)에 대한 TGT(Ticket Granting Ticket)를 받습니다.
사용자는 TGT와 함께 서비스 티켓을 요청하며, 이때 nonce가 포함됩니다.
티켓 발행 서버는 이 nonce를 사용하여 사용자가 요청한 서비스 티켓을 생성하고, 사용자에게 반환합니다.
사용자는 이 서비스 티켓을 이용하여 서비스에 접근할 수 있게 됩니다.
10번. Kerberos에서 엘리스가 응답을 받았다. 그러면 그 응답이 밥으로부터 왔다는 것을 어떻게 알 수 있을까?
엘리스가 응답을 받았다면, 엘리스는 클라이언트이다.
밥이 AS,TGS이므로, 밥은 엘리스에게 Key를 보냄으로써 자신임을 인증한다.
밥이 AS인 경우
AS는 클라이언트에게 클라이언트의 ID를 받는다. ID를 보고, 클라이언트의 고유키로 결과인 TGT 등을 암호화해서 보낸다.
즉 엘리스는 밥이 자신의 고유키로 암호화해서 보낸 것을 보고 밥으로부터 왔음을 확신 할 수 있다.
밥이 TGS인 경우
TGS는 클라이언트와 TGS의 공유키로 결과 값을 암호화해서 보내므로, 엘리스는 밥이 공유키로 암호화해서 보낸 것을 보고 밥으로부터 암호화했음을 알 수 있다
==16번. PKI의 핵심 요소는 무엇인가? 간단히 설명하라
- 디지털 인증서 (공개 키 인증서, X.509 인증서)
- 디지털 인증서는 엔티티의 하나 이상의 속성을 해당 공개 키와 결합하는 서명된 데이터 구조입니다.
- 인증 기관(CA)이라는 인정된 신뢰할 수 있는 기관에 의해 서명되어 있어 특정 공개 키가 특정 엔티티에 속하고 (그리고 해당 엔티티가 해당 개인 키를 소지하고) 있다는 것을 보장합니다.
- 인증 기관 (CA)
- 인증 기관은 PKI 내에서 사용되는 공개 키 인증서의 생성, 발급 및 관리에 대한 책임을 지는 사람, 프로세스 및 도구입니다.
- 등록 기관 (RA)
- 등록 기관은 CA로부터 인증서가 필요한 새로운 엔티티(사용자 또는 컴퓨팅 장치)의 신원을 인증하는 데 책임지는 사람, 프로세스 및 도구입니다.
- RAs는 또한 로컬 등록 데이터를 유지하고 오래되거나 불필요한 인증서를 갱신하거나 폐기하는 프로세스를 시작합니다.
- 그들은 CA의 대리인으로 작용하며 (이러한 측면에서 필요한 경우 CA의 일부 기능을 수행할 수 있습니다).
- 인증서 저장소
- PKI의 모든 사용자가 접근할 수 있는 데이터베이스 또는 기타 저장소로, 공개 키 인증서, 인증서 취소 정보 및 정책 정보를 보유할 수 있습니다.
- PKI 클라이언트 소프트웨어
- PKI 엔티티가 PKI의 키 및 디지털 인증서 관리 서비스를 이용할 수 있도록 클라이언트 측 소프트웨어가 필요합니다 (예: 키 생성, 자동 키 업데이트 및 갱신).
- PKI 지원 애플리케이션
- 소프트웨어 애플리케이션이 PKI 내에서 사용되기 전에 PKI를 지원해야 합니다.
- 정책
18번. 다음과 같은 프로토콜을 고려해보자
A-> KDC : ID_a||ID_b||N1
KDC -> A : E(Ka, [K_s || ID_b ||N1 ||E(Kb, K_s || ID_a))
A->B : E(Kb, Ks|| ID_a])
B->A : E(K_s,N2)
A->B : E(K_s,f(N2)
- 사용자 A는 KDC(키 배포 센터)에게 A와 B 사이에 사용할 세션 키를 요청합니다.
- 이때 난스(Nonce) N1이 사용되며, 이는 도전-응답 메커니즘에 사용됩니다.
- 도전-응답 메커니즘은 두 개체 간의 인증을 수행할 때 사용되는 방법으로, KDC는 난수 N1을 포함한 요청을 받습니다.
- 이 난수는 KDC가 인증 과정에서 전송되는 메시지를 구별하고, 사용자 A가 이전에 전송한 요청과 현재의 요청을 구별할 수 있도록 돕습니다.
- 이 프로토콜은 재전송 공격에 취약할 수 있습니다.
- 만약 공격자가 오래된 세션 키 Ks를 획득하면, 단계 3의 메시지를 사용자 B에게 다시 전송하여 사용자 A처럼 행동하고 B와 통신할 수 있습니다.
- 이러한 취약점을 방어하기 위해 메시지와 함께 타임스탬프를 포함시킬 수 있습니다.
- 타임스탬프를 사용하면 오래된 메시지의 재전송을 감지하고 막을 수 있습니다.
이 프로토콜에서 재전송 공격의 예시는 다음과 같습니다:
- 공격자가 사용자 A가 사용자 B에게 전송한 메시지 (E(Kb, Ks || ID_a))를 가로채서 저장합니다.
- 공격자는 나중에 이 메시지를 사용자 B에게 다시 전송합니다. 사용자 B는 이 메시지를 사용자 A로부터 온 것으로 인식하게 됩니다.
Nonce의 매커니즘은 다음과 같이 요약할 수 있습니다:
- Nonce는 일회용 난수로, 프로토콜에서 도전-응답 메커니즘에 사용됩니다.
- Nonce는 사용자 A와 KDC 간의 인증 과정에서 전송되는 메시지를 구별하는 데 도움을 줍니다.
- Nonce는 재전송 공격을 방지하는 데 도움이 되지만, 타임스탬프를 추가하여 더 강력한 보호를 제공할 수 있습니다.
프로토콜 세부 설명
이 프로토콜은 인증과 공유키 배포를 위한 암호 프로토콜 중 하나입니다. 각 단계에 대한 설명은 다음과 같습니다.
A-> KDC : ID_a||ID_b||N1
- 사용자 A가 키 배포 센터(KDC)에게 사용자 B와의 세션 키를 요청합니다.
- 요청에는 사용자 A와 B의 ID와 함께 nonce(난수) N1이 포함됩니다.
KDC -> A : E(Ka, [K_s || ID_b ||N1 ||E(Kb, K_s || ID_a))
- KDC는 요청을 받고, 세션 키 K_s를 생성합니다.
- 그런 다음 K_s, ID_b, N1을 사용자 A의 공개키 Ka로 암호화하고, K_s와 ID_a를 사용자 B의 공개키 Kb로 암호화합니다.
- 이렇게 만들어진 암호화된 메시지를 사용자 A에게 전송합니다.
A->B : E(Kb, Ks|| ID_a])
- 사용자 A는 KDC로부터 받은 메시지를 복호화하여 세션 키 K_s를 얻습니다.
- 그런 다음 사용자 A는 K_s와 ID_a를 사용자 B의 공개 키 Kb로 암호화한 메시지를 사용자 B에게 전송합니다.
B->A : E(K_s,N2)
- 사용자 B는 메시지를 복호화하여 세션 키 K_s를 얻습니다.
- 사용자 B는 새로운 nonce N2를 생성하고, 이를 세션 키 K_s로 암호화한 다음 사용자 A에게 전송합니다.
A->B : E(K_s,f(N2))
- 사용자 A는 사용자 B로부터 받은 메시지를 복호화하여 N2를 얻습니다
- 사용자 A는 N2에 함수 f를 적용한 후, 결과를 세션 키 K_s로 암호화하여 사용자 B에게 전송합니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'Computer Science > Security' 카테고리의 다른 글
공개키 기반구조(PKIX) (1) | 2023.04.19 |
---|---|
비대칭 암호를 이용한 키 분배 (0) | 2023.04.19 |
암호 피드백 모드 (CFB) (0) | 2023.04.18 |
페이스텔 암호의 암호화와 복호화 증명 (0) | 2023.04.18 |
TEA 알고리즘 (0) | 2023.04.18 |