반응형

모바일 서비스 및 보안 기술 동향 세미나 요약 보고서

모바일 인터넷 애플리케이션은 이동통신망을 통해 엔드유저의 모바일 디바이스에 제공되는 서비스를 가능케 하는 애플리케이션이다. 즉 모바일 인터넷 애플리케이션은 모바일 디바이스 내에서 구동하는 애플리케이션뿐만 아니라, 모바일 디바이스에 서비스를 제공하는 백엔드 시스템과 애플리케이션을 모두 포함한다고 할 수 있다. , 모바일 통합 솔루션일 경우 모바일 애플리케이션은 모바일 디바이스뿐만 아니라 유선 인터넷의 주요 플랫폼이라 할 수 있는 PC까지 포함하게 된다. 모바일 인터넷 애플리케이션이 기존 유선 인터넷 애플리케이션과 구별되는 다음과 같은 특징을 보유하고 있다. 네트워크 자체의 트래픽 관리와 보안 위협요소를 최소화하기 위해 네트워크 보안기술의 흐름을 파악하고 현재의 네트워크 보안 장비에서 보다 향상된 트래픽 제어기술과 네트워크 보안이 접목된 기술, 침입차단기술, VPN 기술, 웹 서비스에 대한 보안기술 등 안정된 네트워크 통합보안기술을 요구하고 있다.

제한된 모바일 인터넷 사용 환경에 적합한 기술 및 비즈니스 모델 적용

모바일 인터넷 애플리케이션과 기존 유선 인터넷 애플리케이션의 가장 큰 차이점은 사용 환경이다. 네트워크 속도 이외에도 모바일 디바이스의 제한된 화면 크기와 색상도 모바일 애플리케이션 개발의 제약 조건으로 작용한다. 3G 상용화와 디바이스 개발을 통해 이와 같은 제약 조건이 완화될 것으로 기대하는 낙관론자도 있지만 아직은 서비스 사용료와 디바이스가 아직은 고가이기 때문에 개선된 모바일 인터넷 환경에 적합한 애플리케이션이 상용화되기까지는 2-3년은 더 기다려야 할 것이다.

개인화된 솔루션

개인화(Personification)는 모든 인터넷 기반 애플리케이션 및 서비스의 주요 트렌드이지만, 개인 소유 성격이 강한 모바일 디바이스를 대상으로 한 모바일 애플리케이션의 경우 더 높은 수준의 개인화를 요구하고 있다.

네트워크 통합보안기술 전망

향후 네트워크 보안은 정책기반 관리방식의 중심으로 통합보안 제품으로 지속적으로 발전할 것으로 전망되고 있다. 또한, 네트워크 보안장비는 고속의 트래픽 처리능력과 더불어 보안기능을 가지고 있는 형태와 라우팅 기능은 배제한 채 보안 기능만을 지닌 전용장비 형태가 함께 발전할 것으로 예측된다. 따라서 앞으로는 여러 보안기능을 포함하고 있는 통합보안장비 또는, 복합보안장비들 및 고성능의 네트워크 보안전용장비들이 정책기반으로 정보를 서로 공유하여 날로 다양해지고 복잡해져 가는 사이버 위협에 대처할 것으로 보인다.

완벽한 네트워크 보안 관리는 하나의 박스나 장비로 절대 이뤄질 수 없는 것이다. 결국 보안 취약점을 보안하는 기술을 올바르게 적용하여 실제 현장에서 필요로 하는 통합보안제품으로 발전시켜야 한다.

P-세미나 요약 보고서(모바일 서비스 및 보안 기술 동향).hwp
0.01MB

반응형
반응형

Chapter 5 전자메일 보안

복습문제

5.1 PGP가 제공하는 5가지 주요한 서비스는 무엇인가?

디지털 서명: SHA-1을 이용해서 메시지의 해쉬코드를 생성한다. 이 메시지 다이제스트 를 송신자의 개인키로 DSS RSA 를 이용해서 암호화 한다. 그리고 메시지에 첨부한다.
메시지 암호화: 송신자가 생성한 일회용 세션 키로 CAST-128 이나 IDEA 3DES 를 이용해서 메시지를 암호화한다. 수신자의 공개키로 Diffie_Hellman 이나 RSA를 이용해 서 세션 키를 암호화하고 메시지에 첨부한다.
압축: 저장하거나 전송하기 위해 ZIP을 이용해서 메시지를 압축한다.
전자메일 호환성: 전자메일 응용에 대한 투명성을 제공하기 위해서 암호화된 메시지를 기수-64 변환을 이용해서 ASCII 문자열로 변환할 수 있다.
단편화: 최대 메시지 크기한계까지 사용하기 위해서 PGP는 단편화와 재조립방법을 사용한다.

5.2 별도서명의 용도는 무엇인가?

저장할 수도 있고 서명하고자 하는 메시지와 별도로 전송할 수도 있는데, 여러 상황에 유용하게 쓰인다. 어떤 사용자는 보내거나 받은 모든 메시지들의 별도서명 기록들을 보관하고 싶어 할지도 모른다. 실행 프로그램의 별도서명을 이용해서 실행파일에 붙어오는 바이러스를 감지할 수도 있다. 끝으로 법적인 계약서 같이 한 개체 이상의 여러 개체들이 함께 서명을 해야만 할 때에도 별도서명을 사용할 수 있다. 각 개인의 서명은 서로 독립적이므로 오직 문서의 인증만을 보장한다. 그래서 문서뿐 아니라 서명에 참여하는 사람들 모두를 연관시켜 놓으려면 서명을 중첩해서 해야 한다. , 두 번째 사람이 서명을 할 때에는 첫 번째 사람의 서명과 문서 모두에 서명을 하고, 이런 식으로 마지막 사람까지 계속 서명해 나가는 것이다.

5.3 PGP는 왜 압축을 하기 전에 서명을 생성하는가?

기본적으로 PGP는 서명을 한 후 암호화하기 전에 미시지를 압축(compression)한다. 이렇게 하면 전자메일 전송과 파일저장에 있어 저장 공간을 줄일 수 있는 장점이 있다. 나중에 확인을 할 때 오직 압축되지 않은 메시지만 서명과 함께 저장하면 되기 때문이다. 만일 압축된 문서를 서명한다면 나중에 확인하기위해 메시지의 압축 버전을 저장해야 하거나 확인이 필요할 때마다 메시지를 다시 압축해야하는 두 가지 중 어느 한 가지는 꼭 수행해야 하기 때문이다.

압축 후에 해쉬함수와 서명을 적용하면 압축에 사용했던 알고리즘 버전과 똑같은 알고리즘 버전만이 압축을 풀 수 있게 되어 결국 PGP 기능을 충분히 활용하지 못하고 사용에 제한을 가하는 꼴이 된다.

5.5 R64 변환은 왜 전자메일 응용에 유용한가?

일반적으로 임의의 2진 데이터를 부호화하는데 사용하는 방법이다. 이 방법으로 부호화를 하면 메일 전송 프로그램이 부호화 처리를 할 때 발생할 수 있는 데이터 변경에 매우 강하다.

Chapter 6 IP 보안

복습문제

6.1 IPSec 의 응용 예들을 들어라.

인터넷을 통한 안전한 지사사무실 연결: 회사는 인터넷이나 공공 WAN을 통해 안전한 가상사설망을 구축할 수 있다. 이를 이용해서 사업을 하면 인터넷을 적극적으로 사용하 고, 사설망의 필요성을 줄여주고, 비용절감과 네트워크 관리 부담을 줄일 수 있다.
인터넷을 통한 안전한 원격 접근: IP 보안 프로토콜이 장착된 시스템을 사용하는 종단 사용자는 인터넷 서비스 제공자(ISP:Internet service provider)로 시내전화를 걸어 회 사네트워크에 안전하게 접근할 수 있다. 이렇게 하면 출장중인 직원과 재택근무자의 전 화통신비용을 줄일 수 있다.
협력업체와의 인트라넷과 엑스트라넷 구축: IPSec을 이용하면 인증과 기밀성을 보장할 수 있다. 그리고 키교환 메커니즘을 제공하여 다른 기관과 통신을 안전하게 할 수 있다.
전자상거래 보안강화: 비록 어떤 웹과 전자상거래 응용프로그램에는 보안 프로토콜들이 내장되어 있지만 IPSec을 사용하게 되면 보안성을 더 강화 할 수 있다.

6.2 IPSec에서 제공되는 서비스는 무엇이 있는가?

접근제어(Access control)
비연결 무결성(Connectionless integrity)
재전송 캐킷의 거부(Data origin authentication)
재전송 패킷의 거부(Rejection of replayed packets)(순서 무결성이 불완전한 패킷 형태)
기밀성(Confidentiality)(암호화)
제한된 트래픽 플로우 기밀성(Limited traffic flow confidentiality)

6.4 전송 모드와 터널 모드의 차이는 무엇인가?

전송 모드의 AHIPvp이로드와 선택된 IPgp더 일부와 선택된 IPv6확장헤더 일부를 인증하지만, 터널 모드는 내부 IPvozlt 전체(내부 헤더와 IP페이로드)를 인증하고 선택된 외부 헤더 일부와 선택된 외부 IPv6확장 일부를 인증한다. 전송 모드의 ESPIP페이로드와 ESP헤더 뒤에 있는 모든 IPv6확장 헤더들을 암호화 하지만, 터널 모드는 내부 IP패킷을 암호화한다. 전송 모드의 인증 ESPIP페이로드와 ESP헤더 위에 있는 모든 IPv6확장헤더를 암호화 한다. IP페이로드는 인증하지만 IP헤더는 인증하지 않는다. 그러나 터널 모드는 내부 IP패킷을 암호화 한다. 그리고 내부 IP패킷을 인증한다.

6.5 재전송 공격은 무엇인가?

재전송 공격이란 공격자가 인증된 패킷의 복사본을 입수하여 보관하고 있다가 나중에 그것을 그 패킷의 원래 목적지로 전송하는 것을 말한다. 나중에 전달된 이 복사본을 수신하게 되면 인증된 IP 패킷은 서비스를 방해하거나 원치 않는 말썽을 일으킨다. 이 공격을 막기위해 순서번호필드가 설계 되었다.

연습문제

6.1 AH처리에 대한 논의에서 IP헤더안의 모든 필드들이 MAC계산에 사용되는 것 은 아니라고 했다.

a. IPv4헤더 안의 각 필드에 대해 그 필드가 불변인 필드(immutable)인지, 가변 필드인데 예측 가능한 필드인지, 혹은 가변필드인지(ICV 계산이전에는 0값을 갖는다)를 구별하라

IPv4를 사용하는 전송 모드 AH(transport mode AH)에 대해, AH를 원래의 IP헤더 뒤와 IP 페이로드 앞에 삽입한다. IPv4헤더 안의 MAC계산을 위해 0으로 설정된 가변 필드를 제외한 전체 패킷을 인증한다. 목적지옵션확장헤더는 원하는 의미에 따라 AH헤더의 앞이나 뒤에 올 수 있다. MAC계산을 위해 0으로 설정된 가변 필드를 제외한 전체 패킷에 대해 인증 한다.

IPv4에 있어 불변인 필드의 예로는 인터넷헤더길이(Internet Header Length)와 근원지 주소(Source Afddress)가 있다. 가변인 예측 가능한 필드의 예로는 목적지 주소가 있다.(느슨한 혹은 엄격한 근원지 경로배정의 경우). ICV 계산 이전에 0값을 갖는 가변 필드의 예로는 TTL(Time to Live)필드와 헤더 검사합(Header Checksum)필드가 있다. 발신자 주소와 목적지 주소필드는 둘 다 보호되므로 주소 스푸핑을 할 수 없다.

b. IPv6헤더들에 대해서도 a와 같은 구별을 하라.

IPv6 에 있어 기본헤더 안의 예들로는 버전필드(불변), 목적지주소필드(변할 수 있지만 예측 가능함), 플로우 레이블(변하지 않고 계산을 위해 0값이 주어짐)이 있다.

c. IPv6확장헤더들에 대해서도 같은 구별을 하라.

IPv6 패킷은 IPv6 헤더와 추가되는 확장헤더로 구성되는데 확장헤더가 없을 수도 있다. IPv6 헤더와 각 확장 헤더는 한 개의 다음헤더 필드를 포함하고 있다. 이 필드는 바로 뒤에 따르는 헤더의 유형을 나타낸다. 만일 다음 헤더가 확장헤더라면, 이 필드는 그 헤더의 유형 식별자를 포함한다. 다른 경우, 이 필드는 IPv6 를 이용하는 상위-계층 프로토콜의 프로콜로 식별자를 포함한다.

각 경우에, 각 필드에 대한 자신의 대답에 대해 이유를 말하라.

6.3 두 호스트 사이에는 종단--종단 인증과 암호화가 바람직하다. 그림 6.6 및 그림 6.9와 비슷한 그림을 그려 다음을 보여라.

a. 인증을 하기 전에 암호화를 먼저 적용하는 중첩 전송(adfacency)

터널링을 사용하지 않고 동일한 IP 패킷에 한 개 이상의 보안 프로토콜을 적용하는 것을 의미한다. AH ESP 를 묶는 이 방법을 이용하면 오직 한 레벨의 묶기밖에 못한다. , 중첩된 적용을 한다고 해서 더 이점이 생기지는 않는다. 그 이유는 처리가 한 IPSec(, 최종 목적지)에서 이뤄지기 때문이다.

b. 인증을 하기 전에 암호화를 먼저 적용하는 터널 SA안에서 묶이는 전송 SA

두 개의 전송 SA 묶음을 사용하는 것이다. 이때 안쪽의 것은 ESP SA 이고 바깥쪽의 것은 AH SA 이다. 이 경우에 ESP는 인증 옵션 없이 사용한다. 내부 SA 는 전송 SA 이므로, IP 페이로드를 암호화한다. 결과로 나오는 패킷은 IP헤더와 그 뒤에 붙는 ESP 로 구성된다. 그 다음 AH를 전송 모드로 하여 ESP 와 원래 IP 헤더에 적용한다. 이 때 가변 필드는 제외시킨다. 단순히 ESP 인증 옵션이 있는 한 개의 ESP SA 를 사용하는 방법보다 나은 점은 근원지와 목적지 IP주소를 포함하는 보다 많은 필드를 인증할 수 있다는 것이다.

c. 암호화를 하기 전에 인증을 먼저 적용하는 터널 SA안에서 묶이는 전송 SA

인증 데이터를 암호화로 보호할 수 있다. 그래서 어느 누구도 발각되지 않고 메시지를 가로채서 인증된 데이터를 수정할 수 없게 된다. 그리고 후에 참고하기 위해 목적지에서 인증 정보를 메시지와 함께 저장하는 것이 바람직하다. 만일 인증 정보를 암호화되지 않은 메시지에 적용한다면 이 방법이 훨씬 편리하다. 그렇지 않을 경우 메시지는 인증 정보를 확인하기 위해 번거롭게 다시 암호화를 해야만 한다.

6.4 IPSec 구조 문서에 다음과 같이 언급되어있다. 종단--종단 플로우에서 AH ESP 프로토콜 두 개를 모두 허락하기 위해 두 개의 전송 모드 SA 를 묶을 때, 보안 프로토콜들의 순서들 중 오직 한 가지만이 적합하다. , AH 프로토 콜을 수행하기 이전에 ESP 프로토콜을 수행하는 것이다. 왜 암호화 이전에 인 증을 하는 것 보다 이 방법이 권장되는 이유를 말하라.

암호화를 하기 전에 인증을 한다면, 인증 데이터를 암호화로 보호할 수 있고, 후에 참고하기 위해 목적지에서 인증 정보를 메시지와 함께 저장하는 것이 하지만, 두 개의 전송 SA묶음을 사용하는 것이다. 이때 안쪽의 것은 ESP SA 이고 바깥쪽의 것은 AH SA 이다. 이 경우에 ESP 는 인증 옵션없이 사용한다. 내부 SA는 정송 SA 이므로, IP페이로드를 암호화한다. 결과로 나오는 패킷은 IP헤더와 그 뒤에 붙는 ESP로 구성된다. 그 다음 AH를 전송 모드로 하여 ESP와 원래 IP 헤더에 적용한다. 단순히 ESP 인증 옵션이 있는 한 개의 ESP SA를 사용하는 방법보다 나은 점은 근원지와 목적지 IP 주소를 포함하는 보다 많은 필드를 인증할 수 있다는 것이다.

Chapter 7 웹 보안: SSL, SET 요약정리

SSL(Secure Socket Layer) 안전한 소켓 계층

SSL은 신뢰할 수 있는 종단--종단의 안전한 서비스를 제공하기 위해 TCP를 사용 하도록 설계하였다. SSL은 단 하나의 프로토콜로 이뤄진 것이 아니라 두 계층의 프로 토콜로 이뤄졌다.

SSL 레코드 프로토콜은 다양한 상위-계층 프로토콜들에게 기본적인 보안 서비스를 제 공한다. 특히 웹 클라이언트/서버 상호교환을 위해 전송 서비스를 제공하는 HTTPSSL 위에서 작동할 수 있다. 3개의 상위-계층 프로토콜들을 SSL의 일부로 정의하는데 이 3가지는 핸듯Pdlzm 프로토콜, 암호 명세 변경 프로토콜, 그리고 경고 프로토콜이다. SSL 교환 관리에 이 SSL-지정 프로토콜들을 사용한다.

네스케이프가 처음으로 SSL 을 만들었다.
SSLv3 은 공개적인 검토를 통해 네스케이프사가 투자하고 설계하였으며 인터넷 드래프트 문서로 출판되었다.
이 프로토콜을 인터넷 표준으로 하자는 여론이 형성되었을 때, 일반 표준을 개발하기 위해 IETF 안에 TLS 작업 그룹을 구성했다.
TLS 의 첫 번째 버전은 SSLv3.1 이고 SSLv3 와 매우 유사하고 역 호환이 가능하다.
SSL 레코드 프로토콜은 다양한 상위-계층 프로토콜들에 기본적인 보안 서비스를 제공한다.
웹 클라이언트/서버 상호교환을 위해 전송 서비스를 제공하는 HTTPSSL 위에서 작동할 수 있다.

3 개의 상위-계층 프로토콜들을 SSL 의 일부로 정의하는데 이 3 가지는 다음과 같다.

- 핸드셰이크(Handshake) 프로토콜
- 암호 명세 변경(Change Cipher Spec) 프로토콜
- 경고(Alert) 프로토콜

SSL 교환 관리에 이 SSL-지정 프로토콜들을 사용한다.
SSL 연결 상태 매개변수 정의

- 서버와 클라이언트 랜덤(server and client random)
- 서버 기록 MAC 비밀(Server write MAC secret)
- 클라이언트 기록 MAC 비밀(Client write MAC secret)
- 서버 기록 키(Server write key)
- 클라이언트 기록 키(Client write key)
- 초기화 벡터(Initialization vectors)
- 순서 번호(Sequence numbers)

SET(Secure Electronic Transaction) 안전한 전자 거래

SET은 인터넷과 같은 공개된 네트워크(Open Network)상에서의 신용카드 지불을 위한 Protocol이라 할 수 있다.

, 인터넷 쇼핑시 신용카드를 사용하여 대금을 결제하고자 할때, 공개된 네트워크 상에서 보다 안전하게 지불처리를 할 수 있도록 암호화 및 정보보안에 관해 제정된 표준안이다.

초기에 SETS/W 구현에 국한하여 출발하였으나, 최근에는 SETChip-Card로 구현하려는 시도가 진행 중이다.

, SETS/W뿐 아니라 H/W 구현에 대한 표준까지 포괄하고 있다.  

SET이 제공하는 3 가지 서비스
- SET 자체가 지불 시스템은 아니다.
- 오히려 이것은 사용자들이 기존의 신용카드 지불 기반구조를 인터넷 같은 개방된 네트워 크에서 안전하게 사용할 수 있도록 하는 보안 프로토콜들과 포맷들을 모아놓은 것이다.
- 거래에 관여하는 모든 개체 사이에 안전한 통신 채널을 제공한다.
- X.509v3 디지털 인증서를 사용하여 신뢰를 제공한다.
- 정보를 거래가 필요한 때나 장소에서 해당되는 개체들만 사용할 수 있기 때문에 기밀성 이 보장된다.

요구 사항

인터넷이나 다른 네트워크상에서 신용카드를 이용하여 안전하게 지불 처리를 하기 위해서 다음과 같은 사업 요구 사항을 SET 명세의 Book 1 에 목록으로 나타냈다.

* SET 의 주요 기능

정보의 기밀성(Confidentiality of Information): 카드소지자의 계좌와 지불정보는 네트워크로 이동하는 도중에 안전하다. 흥미롭고 중요한 SET 의 한 기능은 상인들이 카드소지자의 신용카드번호를 알지 못하게 하는 기능이다; 이 기능은 오직 발급하는 은행에게만 제공된다. DES 를 이용한 관용암호를 사용해서 기밀성을 제공한다.

데이터 무결성(Integrity of data): 카드소지자가 상인에게 보내는 지불정보에는 주문정보, 신상데이터, 지불명령이 포함된다. SET 는 이 메시지 내용들이 전송도중 변경되지 않음을 보장한다. SHA-1 해쉬코드를 사용하는 RSA 디지털서명을 이용해서 메시지 무결성을 제공한다. 어떤 메시지는 SHA-1 을 사용하는 HMAC 으로 보호한다.

카드 소지자 계좌 인증(Cardholder account authentication): SET 는 상인으로 하여금 카드소지자가 유효한 카드계좌번호의 합법적 사용자임을 확인할 수 있게 보장한다. SET 는 이를 위해 RSA 서명을 쓰는 X.509v3 디지털 인증서를 사용한다.

상인 인증(Merchant authentication): SET 는 카드소지자로 하여금 상인이 금융기관과 관계를 갖고 있다는 것을 확인할 수 있게 한다. 그래서 상인이 지불카드를 받는 것을 허락한다. SET 는 이를 위해 RSA 서명을 쓰는 X.509v3 디지털 서명을 사용한다.

IPSec SSL/TLS 와는 다르게 SET 는 오직 하나의 암호 알고리즘만 사용할 수 있다는 것에 주목하기 바란다. 이렇게 하는 것이 타당한 이유는 SET 는 한 개의 요구 사항 집합만을 만족시키면 되는 단일 응용프로그램이기 때문이다. 반면에 IPSec SSL/TLS 는 여러 응용프로그램들을 지원하도록 만들어졌다.

* Scope

SET은 전자상거래의 지불 시스템 중 신용카드 기반의 지불에 관한 사항만을 정의하고 있다. 전자상거래를 몇 단계로 구분 시 SET의 범위를 아래의 표에서 볼 수 있다.

단계

설명

SET Scope

1

카드소지자는 상품 및 서비스 정보를 검색한다.

WWW상의 Cyber Shopping Mall

상인이 제공하는 상품정보 CD-ROM

기존의 인쇄물 형태의 Catalog

 

2

카드소지자는 구매할 Item을 선정한다.

 

3

카드소지자는 선정한 Item의 목록과, 단가, 배달료 세금등이 포함된 총 가격을 확인하고, 주문서를 전자적으로 발송할 주문서를 작성한다.

 

4

카드소지자는 지불수단을 선택한다.

(이예의 경우에서는 물론 신용카드를 선택한다.)

 

5

카드소지자는 지불지시를 포함하고 있는 완성된 주문서를 상인에게 발송한다.

(SET에서는 주문 및 지불정보는 승인된 카드소지자에 의해 전자적으로 서명된 상태로 전송되어야 한다.)

SET 범위

6

상인은 카드소지자의 금융기관이 해당거래에 대한 지불을 승인할 것을 요청한다.

SET 범위

7

상인은 승인이 확인되면 주문에 대한 확인을 카드소지자에게 발송한다.

SET 범위

8

상인은 주문서의 내용에 맞는 상품을 발송한다.

(서비스 요청의 경우 해당 서비스를 수행한다.)

 

9

상인은 카드소지자의 금융기관에게 지불을 요청한다.

SET 범위

P-Report#3_표지.hwp
0.01MB
P-Report#3.hwp
0.01MB
Report#4_표지.hwp
0.02MB
Report#4.hwp
0.37MB


반응형
반응형

Chapter 2 대칭 암호와 메시지 기밀성

복습문제

1.4 블록 아호와 스트림 암호의 차이는 무엇인가?

블록 암호(block cipher)는 한 번에 한 블록씩 입력하여 처리하고 한 블록씩 출력한다. 스트림 암호(stream cipher)는 입력 요소들을 연속적으로 처리하여 입력된 요소들이 끝날 때까지 한 번에 한 요소씩 출력한다.

1.7 3중 암호화란 무엇인가?

알고리즘은 암호-복호-암호(EDE: encrypt-decrypt-encrypt) 순서를 따른다.

C = 암호문
P = 평문
EK[X] = K 를 이용해서 X 를 암호화
DK[Y] = K 를 이용해서 Y 를 복호화

복호화는 단순히 키의 순서를 바꿔서 적용하면 된다.

1.10 비밀키를 통신 양측에 분배하는 방법들을 열거하라.

A 가 키 한 개를 선택해서 물리적 수단을 통해 B 에게 전달한다.
3자가 키를 선택하고 물리적 수단을 통해 A B 에게 전달한다.
A B 가 최근까지 이미 사용하고 있는 키를 가지고 있다면, 어느 한 쪽이 그 키를 이용해서 새 키를 암호화하여 상대방에게 전송한다.
A B 가 제3C와 암호화된 연결을 할 수 있다면, C가 암호화된 링크를 통해 A B 에게 키를 전달할 수 있다.

1.11 세션 키와 마스터 키의 차이점은 무엇인가?

세션 키(Session key)는 양쪽 시스템(호스트,터미널 등)이 통신을 하고자 할 때 논리적 연결을 설정한다(가상 회성). 가상회선이 설정된 동안 모든 사용자 데이터는 일회용 세션 키(on-time session key)로 암호화된다. 세션이나 연결이 종료되면 세션 키를 폐기 한다. FEPKDC 사이의 통신은 둘 만이 공유하는 마스터 키를 이용해서 암호화 된다.

연습문제

2.2 ECB 모드에서 전송된 암호문 블록에 오류가 발생한다면 단지 해당되는 평문 블록에만 영향을 준다. 그러나 CBC 모드에서는 이 에러가 확산된다. 예를 들면, 전송된 C1 은 당연히 P1P2에 영향을 준다.

a. P2 이후의 블록들도 영향을 받는가?

암호 블록 체인 모드(CBC:cipher block chaining mode)에서는 현재의 평문 블록과 바로 직전의 암호 블록을 XOR 한 것을 알고리즘의 입력으로 사용한다. 각 블록에서 동일한 키를 사용한다. 사실 평문 블록 열의 처리를 이어서 한 줄로 연결한 것이다. 각 평문 블록에 대한 암호 함수의 입력이 평문 블록에 끼치는 영향은 일정한 형태가 아니다. 따라서 64비트 반복 패턴들이 드러나지 않게 된다.

b. P1 의 초기 버전에 단일 비트 오류가 있다고 가정하자. 이 오류가 몇 개의 암호 블록에 확산되는가? 수신자는 어떤 영향을 받는가?

복호에서는 각 암호 블록을 복호 알고리즘에 입력한다. 결과로 출력된 블록은 평문을 복구하기 위해 전 단계의 암호블록과 XOR 를 한다.

첫 번째 암호블록을 만들기 위해 초기화 벡터(IV:Initialization Vector)와 첫 번째 평문 블록을 XOR 한다. 복호에서 IV 는 첫 번째 평문 블록을 복구하기위해 복호 알고리즘의 출력과 XOR 을 한다.

송신자와 수신자는 모두 IV를 알고 있다. 보안성을 강화하기 위해 IV도 키 처럼 보호해야 한다. 이를 위해서 IV 를 보낼 때 ECB 암호를 이용해서 보낼 수 있다. IV를 보호해야 하는 이유는 다음과 같다. 어떤 공격자가 다른 값을 갖는 IV 를 가지고 수신자를 속일 수 있다면 그 공격자는 첫 번째 평문 블록의 선택된 비트들을 회복할 수 있다.

2.3 8비트 CFB 모드에서 암호문 문자 전송 중 한 비트 오류가 있다면 그 오류가 어디까지 확산되는가?

어떤 블록 암호도 스트림 암호로 바꿀 수 있다. 스트림 암호의 경우 메시지의 길이가 블록의 정수배가 되도록 패딩을 할 필요가 없고 실시간으로 사용할 수 있다. 따라서 한 문자를 전송하는 경우 문자 중심 스트림 암호를 이용하여 각 문자가 암호화 되는 즉시 전송할 수 있다.

전송 단위를 s 비트라고 가정한다. 보통 s=8이다. CBC의 경우처럼 평문의 단위가 연결되어 있기 때문에 평문을 암호화할 때 바로 한 단계 전의 평문을 입력으로 사용한다. 암호 함수의 입력은 어떤 초기값 IV 를 갖는 64비트 쉬프트 레지스터이다. 암호화 함수 출력의 가장 왼쪽 s 개 비트들은 암호문 C1 의 첫 번째 단위를 생성하기 위해서 평문 P1의 첫 번째 단위와 XOR 을 한 다음 전송한다. 그리고 쉬프트 레지스터의 내용을 s 비트만큼 왼쪽으로 이동하고 C1 을 쉬프트 레지스터의 가장 오른쪽 s비트에 복사한다. 평문이 모두 암호화 될 때까지 이 과정을 계속한다.

2.5 두 사람이 동일한 비밀키를 갖고 있는지 확인하는 확실한 방법으로 다음과 같은 방법을 제시하였다고 하자. 송신자는 자신이 가지고 있는 키의 길이와 같은 임의의 비트 스트링을 생성하고, 그것을 키와 XOR 하고, 채널을 통해 그 결과를 수신자에게 보낸다. 수신자는 키(송신자와 같은 키)를 가지고 수신된 블록을 XOR 하여 그 결과를 돌려보낸다. 송신자는 그 값을 검사해서 만일 돌려받은 것이 자신이 생성해서 보냈던 임의 스트링과 같으면 수신자가 동일한 비밀키를 가지고 있다고 확신하는 것이다. 여기서 양쪽 어느 누구도 키를 전송한 적이 없음에 주의하라. 이 시스템에 결함이 있는가?

링크 암호화나 종단--종단 암호화에 적용할 수 있기는 하지만 공격자가 어떤 기회를 틈타서 한 번이라도 키를 얻을 수 있게 되면 그 뒤에 따르는 키들은 공격자에게 전부 노출 된다.링크 암호화 키들을 빈번히 바꿔야 한다면 매번 사람이 직접 전달을 해야만 하낟. 종단--종단 암호화에서 키를 보내기 위해서는 AB가 제 3C와 암호화된 연결을 할 수 있다면, C가 암호화된 링크를 통해 AB에게 키를 전달하는 방법을 이용하는 것이 좋다.

Chapter 3 공개키 암호와 메시지 인증

복습문제

3.1 메시지 인증에 대한 3가지 방법을 말하라.

관용 암호 사용 방법
: 송신자와 수신자가 동일한 키를 가지고 있다고 가정하면(필히 가지고 있어야 한다) 오직 진짜 송신자만이 수신자에게 보내는 메시지를 성공적으로 암호화 할 수 있다. 오직 송신자와 수신자만이 암호화키를 소유 한다면 인증을 확인할 수 있다.
공개키 암호 사용 방법

비밀값 사용 방법
: 통신의 양쪽 AB가 공통 비밀값 SAB를 가지고 있다는 가정 하에 수행된다. AB에게 보낼 메시지가 있을 때 비밀값에 메시지를 붙인 뒤에 그것에 해쉬함수를 적용한다. AB에게 [MMDM]을 보낸다. BSAB를 가지고 있기 때문에 H(SABM)을 계산할 수 있고 MDM을 확인할 수 있다. 비밀값 자체를 보내지 않기 때문에 공격자가 중간에 가로챈 메시지를 수정하는 것이 불가능하다.

3.5 해쉬함수의 입장에서 압축 함수란 무엇인가?

압축함수가 충돌(collision)에 저항성을 갖는다면 결과로 얻어지는 해쉬함수도 충돌에 강할 것이다. 그래서 이 구조를 이용하면 어떤 크기의 메시지에도 적용할 수 있는 안전 해쉬함수를 만들 수 있다. 문제를 단순화 하면 이것은 일정한 크기의 입력에 적용할 수 있는 충돌 저항성을 갖는 압축 함수를 설계하는 문제이다. 이 방법은 근본적으로 강하다고 검증되었고 새로운 디자인이라고 하는 것들은 해쉬함수를 좀 더 세밀하게 만들고 해쉬코드 길이를 늘이는 정도의 변화를 추구하는 것에 불과하다.
각 라운드가 20단계로 된 네 개의 라운드로 이뤄진 것이 압축 함수이다.

3.10 공개키 인증서란 무엇인가?

공개키 인증서(public-key certificate)란 공개키와 키 소유자의 사용자 ID로 구성되고 이 전체에 대해 신뢰할만한 제3자가 서명한 것을 말한다. 전형적으로 제3자라 하면 정부기관이나 금융기관 같은 사용자들 모두가 신뢰하는 인증기관(CA: certificate authority)을 말한다. 사용자는 안전한 방법으로 자신의 공개키를 기관에 제시하고 인증서를 발급받아 그 인증서를 공개할 수 있다. 이렇게 공개된 공개키를 이용하고자 하는 다른 사용자들은 인증서를 얻을 수 있고 첨부된 신뢰할만한 서명을 이용해서 그 공개키가 적법한 것임을 확인할 수 있다.

연습문제

3.6 RSA를 이용하는 공개키 시스템에서, 공개키가 e = 5, n = 35 인 사용자에게 보내지는 암호문 C = 10 을 가로챘다고 하자. 이 때 이에 대응되는 평문 M 은 무엇인가?

M = Cd
φ(n) = (p-1)(q-1), p=5, q=7
φ(35) = 4×6 = 24
d×5 mod 24 = 1, d = 5
M = Cd = 105 = 100000

 

3.7 RSA 시스템에서 한 사용자의 공개키가 e = 31, n = 3,599 이다. 이 사용자의 개인키는 무엇인가?

개인키 KR = {d,n}
de mod φ(n) = 1
φ(n) = (p-1)(q-1)

여기서 pq는 프로그램을 이용하여 구하였음.(소스코드는 아래와 같음)

#include <iostream.h>
int IsPrime(int num);
void main()
{
	int p, q;
	bool c = true;

	for(p=2p++)
	{
		if(!IsPrime(p)) continue;
		if(c==true)
		{
			for(q=2q++)
			{
				if(!IsPrime(q)) continue;
				if(p*q == 3599)
				{
					cout << "p:" << p << "q:" << q << endl;
					c = false;
					break;
				}
				else if(p*q > 3599)
					break;
			}
		}
		else
			break;
	}
}
int IsPrime(int num)
{	
	int i,flag=1;
	for(i=2; i < num; i++ ){ 
		if(num % i==0)
		{
			flag=0; 
			break;
		}
	}
	
	return flag;
}

n = p×q, 3599 = 59×61
φ(3599) = 58×60 = 3480
(d×31) mod 3480 = 1 d계산은 프로그램을 이용하여 구하였습니다.(소스코드는 아래와 같습니다.)
d = 3031

#include <iostream.h>
#include <math.h>

void main()
{
	int d=1;
	while(1)
	{
		if(d*31 % 3480 == 1)
		{
			cout << "d:" << d << endl;
			break;
		}
		else
			d++;
	}
}


3.11 일방향 해쉬함수를 만들기 위해 알려진 키를 가지고 RSA를 이용하는 것을 고 려해보자. 다음과 같은 블록들로 구성된 메시지를 처리한다: 첫 번째 블록을 암호화 하고, 그 결과를 두 번째 블록과 XOR 한 다음 암호화를 하고, 이 과정 을 계속 한다고 하자. 아래의 문제를 풀어서 이 구조가 안전하지 않다는 것을 보여라. 두 블록 메시지 B1, B2와 해쉬

RSAH(B1, B2) = RSA(RSA(B1)B2)

가 주어졌다. 주어진 임의의 블록 C1에 대해 RSAH(C1,C2) = RSAH(B1,B2) 가 되도록 C2를 선택하라.

일방향 해쉬함수를 만들기 위해 RSA를 이용하는 방법을 고려해 보았지만 문제를 풀 수 없었습니다. 일방향 해쉬함수와 RSA와 관련된 내용 학습이 좀 더 필요한 것 같습니다. 블록 단위로 암호화하고 XOR 하는 과정과 주어진 조건에 맞게 해를 구해낼 수 있도록 추가적인 학습을 하도록 하겠습니다. 아래는 관련 내용을 정리해본 것입니다.
해쉬코드만 암호화할 경우에는 비록 단순한 XOR 이나 회전 XOR(RXOR)이 불충분하기는 하지만 어떤 사람들은 해쉬코드뿐만 아니라 메시지까지 암호화 할 때 이와 같은 단순한 함수가 유용하다고 여길 수 도 있다. 연속된 64-비트 블록들 X1,X2,XN으로 이뤄진 메시지가 주어졌다. 블록별 XOR이나 모든 블록으로 해쉬코드 C를 정의하고 마지막 블록에 그 해쉬코드를 덧붙인다.

C = XN+1 = X1X2⊕…⊕XN

3.12 공통된 소수 q = 11과 원시근 α = 2를 가지는 Diffie-Hellman 구조를 고려 하자.

a. 만일 사용자 A가 공개키 YA = 9를 갖는다면, A의 개인키 XA는 무엇인가?

YA = mod q, XA < q
9 = mod 11
Xa는 프로그램을 이용하여 구하였습니다.(소스코드는 아래와 같습니다.)
Xa = 6

#include <iostream.h>
#include <math.h>

void main()
{
	double xa=1;
	int tmp;
	
	while(1)
	{
		tmp = pow(2, xa);
		if(tmp%11 == 9)
		{
			cout << xa << endl;
			break;
		}
		else
			xa+;
	}
}

b. 만일 사용자 B가 공개키 YB = 3을 갖는다면, 공유하는 비밀키 K는 무엇인가?

k = mod q, 36 mod 11 = 3

P-Report#1_표지.hwp
0.01MB
P-Report#1.hwp
0.01MB
P-Report#2_표지.hwp
0.01MB
P-Report#2.hwp
0.02MB

반응형

+ Recent posts