본문 바로가기

와사비크래커 IT Tip/보안

[보안] 메시지 무결성 및 키 관리

728x90
반응형

1     메시지 무결성 및 키 관리

1.1     메시지 무결성

1.1.1     문서와 핑거프린트

-      문서의 무결성을 보존하는 한 가지 방법은 핑거프린트를 이용하는 것이다.

-      핑거프린트 사용의 예시

s   A가 자신의 문서 내용이 변경되지 않기를 바란다면 문서의 끝부분에 문서의 핑거프린트를 첨부한다.

s   BA의 핑거프린트를 위조할 수 없기 때문에 이 문서의 내용은 변경하거나 위조문서를 만들 수 없다.

s   문서가 변경되지 않았다는 것을 확신하기 위해 문서에 있는 A의 핑거프린트는 파일 상의 핑거프린트와 비교되어야만 한다.

s   만약 이 두 핑거프린트가 동일하지 않다면 이 문서는 A가 보낸 것과는 다른 문서가 된다.

1.1.2     메시지와 메시지 다이제스트

-      문서와 핑거프린트는 전자적인 의미에서 각각 메시지와 다이제스트라고 한다.

-      메시지의 무결성을 보존하기 위해서는 메시지에 암호학적 해쉬 함수 알고리즘을 적용해야 한다.

1.1.3     문서와 핑거프린트 vs 메시지와 다이제스트

-      문서와 핑거프린트는 물리적으로 묶여있지만, 메시지와 메시지 다이제스트는 물리적으로 볼 때 묶여있지 않으며 따로 보낼 수 있다.

-      메시지 다이제스트는 변경되어서는 안 된다.

1.1.4     암호학적 해쉬 함수 기준

-      암호학적 해쉬 함수는 프리이미지 저항성, 2프리이미지 저항성, 충돌저항성의 기준을 충족해야 한다

-      프리이미지 저항성 (preimage resistance)

s   프리이미지 저항성이란 주어진 해쉬 함수 hy=h(M)에 대하여 B y=h(M’)를 만족하는 다른 메시지 M’를 찾아낸다는 것이 매우 힘들어야만 한다는 성질이다.

프리이미지 공격

주어진 정보

y=h(M)

구하려고 하는 것

y=h(M’)를 만족하는 M’

프리이미지

-      제2프리이미지 저항성 (second preimage resistance)

s   메시지를 쉽게 위조할 수 없도록 하는 성질이다.

s   만약 A가 메시지와 메시지 다이제스트를 생성해서 모두 C에게 보냈다고 하면, 이 기준은 B로 하여금 동일한 메시지 다이제스트를 생성해내는 원래의 메시지와는 다른 메시지를 쉽게 만들지 못하도록 하는 성질이다. , 주어진 특정 메시지와 그 메시지 다이제스트가 있다면 동일한 메시지 다이제스트를 갖는 다른 메시지를 만드는 것이 불가능하거나 적어도 매우 어려워야 한다는 것을 의미한다.

s   B는 메시지 M과 메시지 다이제스트 h(M)을 가로챈다. Bh(M)=h(M’)를 만족하는 다른 메시지 M’(M)을 생성해낸다. BM’h(M’)C에게 보낸다. B는 이렇게 해서 메시지를 위조할 수 있다.

제2프리이미지 공격

주어진 정보

Mh(M)

구하려고 하는 것

h(M)=h(M’)를 만족하는 M’(M)

두 번째 프리이미지

-      충돌 저항성 (collision resistance)

s   B로 하여금 동일한 메시지 다이제스트를 가지는 2개의 메시지를 구하지 못하도록 하는 것이다.

충돌 저항성

1.2     키 관리

1.2.1     대칭키 분배

1.2.1.1      키 배분센터 (KDC: Key Distribution Center)

-      KDC와 각각의 개인은 한 개씩의 비밀키를 공유한다. AKDC와 공유하는 비밀키는 KA라고 하고, BKDC와 공유하는 비밀키는 KB라고 한다.

-      A가 기밀성을 유지하면서 메시지를 B에게 전달할 수 있는가에 대한 절차 예시

s   A는 자신이 B와 통신하기 위해 세션 비밀키가 필요하다고 KDC에게 요청한다.

s   KDCA의 요청을 B에게 알린다.

s   B가 동의하면 두 사람 사이의 세션 키를 생성한다.

KDC

1.2.1.1.1     평등 다중 KDC (flat multiple KDC)

-      KDC를 이용하는 사람 수가 증가하면 시스템은 관리가 힘들어지는데, 이러한 문제를 해결하기 위해 KDC를 여러 개 설치하는 것을 의미한다.

-      집단을 여러 개의 도메인으로 나누고, 각 도메인에 한 개 혹은 다수 개의 KDC를 두는 것이다.

평등 다중  KDC

1.2.1.1.2     계층 다중 KDC

-      평등 다중 KDC의 확장 개념으로, 한 개 혹은 다수 개의 KDC가 최상위 계층에 있게 되는 것이다.

-      예를 들면, 지역 KDC, 전국 KDC, 국제 KDC 등이 존재하는 것이다.

1.2.1.2      세션키

-      KDC는 각 구성원을 위해 비밀키를 생성하는데, 이 비밀키는 구성원과 KDC 사이에서만 사용될 수 있고 구성원끼리의 통신에는 사용할 수 없다.

-      세션키 활용 예시

s   두 사용자 간의 기밀성을 유지하면서 통신을 한다고 가정하면, 두 사용자는 자신 사이에 비밀키가 한 개 필요하다.

s   KDC는 이들 두 사용자와 센터 사이의 비밀키들을 이용해서 두 사용자 사이에 필요한 세션키를 생성할 수 있다.

s   두 사용자가 센터와 개별적으로 가지고 있는 키를 사용해서 각각 자신을 센터에 인증하고, 그 키들을 이용하여 세션 키가 설정되기 이전에 양쪽이 서로 인증을 한다.

s   통신이 종료된 뒤에는 사용했던 세션 키는 폐기한다.

1.2.2     비대칭키 분배

1.2.2.1      인증 기관 (CA: Certification authority)

-      인증 기관에서는 공개키와 개체 사이를 연관시켜주고 인증서를 발급해준다.

-      인증 기관은 모든 사람이 알고 있는 공개키를 가지고 있으며 이것은 절대로 위조되지 못하도록 되어 있다.

-      인증 기관을 이용한 공개키 분배 예시

s   A가 자신의 공개키를 다른 사람들이 알기를 바라고, 자신의 공개키가 다른 사람들에게 전달될 때 위조되지 않도록 하고 싶다면 인증 기관은 우선으로 A의 신분을 확인한다.

s   이 때 A의 공개키를 물어본 다음 인증서에 그것을 쓴다.

s   이 인증서가 위조되는 것을 방지하지 위해서 인증 기관은 이 인증서를 자신의 개인키로 서명한다.

s   A는 이렇게 서명된 인증서를 업로드한 후, A의 공개키가 필요한 사람은 누구든지 이 서명된 A의 인증서를 다운로드할 수 있으며 인증 기관의 공개키를 이용하여 서명을 풀어서 A의 공개키를 얻을 수 있게 된다.

1.2.2.2      X.509

-      인증서를 구조적으로 나타내는 방법이다.

-      CA를 이용해서 공개키 위조를 막을 수 있지만, 한 인증서는 특정 형식으로 이루어져 있고 다른 인증서는 다른 형식으로 이루어져 있다면 한 인증서 속에서는 공개키가 첫 번째 줄에 있지만, 다른 형식의 인증서 속에는 공개키가 세 번째 줄에 있을 수도 있는 문제가 발생할 수 있다. 전체가 공동으로 사용하기 위해서는 전체에 통용되는 공통 형식을 갖추어야 하기 때문에 이러한 문제를 없애기 위해서 X.509를 설계하였다.

-      인증서 갱신

s   모든 인증서에는 유효기간이 있다.

s   인증서에 문제가 없다면 CA는 사용 중인 인증서의 유효기간이 끝나기 전에 새로운 인증서를 발급해준다.

-      인증서 폐지

s   인증서 폐지는 주기적으로 시행하게 되는데 이때 인증서 폐지 목록(CRL: Certificate Revocation List)을 발행한다. 이 목록에는 CRL이 발행되는 날까지 유효기간이 끝나지 않은 폐지 대상의 모든 인증서가 포함된다. 사용자가 인증서를 사용하고자 할 때에는 해당 CA의 디렉터리를 확인해서 최신의 인증서 폐지 목록을 살펴보면 된다.

s   사용자의 개인키가 침해당했을 경우에 인증서를 폐지한다.

s   CA가 사용자를 더 이상 인증하지 않을 때 인증서를 폐지한다.

s   인증서를 검증하는데 필요한 CA의 개인키가 침해를 받았을 경우. 이 경우에는 CA는 유효기간이 남아있는 모든 인증서를 폐지해야만 한다.

-      델타 폐지 (delta CRL)

s   인증서 폐지를 보다 효율적으로 하기 위한 방법으로 델타 인증서 폐지 목록이 있다.

s   델타 인증서 폐지 목록은 업데이트 일자와 다음 업데이트 일자, 이후에 변경이 생길 경우에 만들어서 공표하는 것을 의미한다.

1.2.2.3      공개 키 기반 (PKI: Public Key Infrastructure)

-      X.509에 기초해서 인증서를 만들고, 분배하고, 폐지하는 모델이다.

1.2.2.3.1     임무

-      인증서와 관련된 모든 임무를 처리한다. , 인증서의 발급, 갱신 및 폐지의 임무를 한다.

-      키 저장 및 갱신을 한다. , PKI는 자신의 개인키를 안전한 장소에 보관하기를 원하는 사람을 위해 저장소를 제공하고, 구성원이 키를 갱신하고자 할 경우에는 이를 갱신하는 책무를 가지고 있다.

-      다른 프로토콜에 대한 서비스를 제공한다.

-      PKI는 데이터베이스에 저장된 정보에 다양한 접근 수준을 결정할 수 있다.

1.2.2.3.2     신뢰 모델

-      모든 사람들이 하나의 CA가 인증서를 발급하는 것은 불가능하기 때문에 여러 개의 CA가 있어서 각자 제한된 수의 인증서를 만들고, 저장하고, 발급하고 폐지하는 기능을 가지고 있어야 한다.

-      신뢰 모델은 어떻게 사용자가 한 CA로부터 발급받은 인증서를 검증할 수 있는지를 정의한다.

-      계층 모델 (Hierarchical Model)

3가지 유형의 루트 CA가 있다.

루트 CA는 자체-서명되고, 자체-발행한 인증서를 가지고 있다. 이 시스템이 제대로 동작되려면 이렇게 자체-서명되고 자체-발행한 인증서를 다른 CA나 사용자들이 신뢰를 해야만 한다.

-      메쉬 모델 (Mesh Model)

계층 모델은 하나의 기관이나 비교적 소규모 집단에 적합하지만, 집단이 거대해지면 여러 개의 계층 구조를 서로 묶어야 할 필요가 생긴다. 루트들을 서로 연결하기 위해서 메쉬 모델을 이용하는 방법이 하나의 해결책이 될 수 있다.

-      신뢰 망 (Web of Trust)

전자 메일의 안전한 서비스인 PGP(Pretty Good Privacy)에서 사용된다.

반응형