전자서명

:암호방식에 따라 개키 서명 방식, 중재 서명 방식으로 나눌 수 있다.

:공개키 서명 방식은 서명 생성 및 검증이 간편

:중재 서명 방식은 서명 생성 및 검증을 중재하는 방식으로 제 3자의 참여가 있어야 한다.


과정

1. 송신자는 서명 알고리즘을 이용해서 메시지에 서명

2. 메시지와 서명은 수신자에게 전송

3. 수신자는 메시지와 서명을 받고 검증 알고리즘을 적용

4. 결과가 참이면 올바른 메시지, 거짓이면 그 메시지는 송신자가 전송한게 아님


서비스

-메시지 인증

-메시지 무결성

-부인방지(제 3자를 이용)

-기밀성(전사서명을 한다고 해서 기밀성이 보장되는 통신X,기밀성이 필요하다면 암·복호화를 할 수 있는 다른 수단이 적용되어야 한다.)


주요기능

-위조 불가

-서명자 인증

-부인방지

-변경 불가

-재사용 불가


RSA 전자서명 구조

:RSA 암호시스템을 이용한 전자서명의 안전도는 RSA 암호시스템의 안전도와 일치

:암호화의 경우에서처럼 수신자의 키를 사용하는 것이 아닌 송신자의 개인키와 공개키를 사용

:메시지 대신 메시지의 해시값에 서명을 하면 RSA 전자서명 구조에 대한 위험성은 해시 알고리즘의 강도에 좌우


타원곡선 전자서명 구조

:타원곡선에 기반을 둔 DSA(=ECDSA)

:짧은 처리 시간에 짧은 서명 생성이 가능


EIGamal 전자서명 구조

:EIGamal 암호시스템과 동일한 키를 사용하지만 알고리즘은 다르다.(이산대수 문제를 이용한 최초의 서명 방식)

:EIGamal 서명 알고리즘은 실제로 거의 사용되지 않는다.


Schnorr 전자서명 구조

:EIGamal에 기반을 두고 있지만 서명의 크기를 줄인 구조


DSS(=DSA , 전자서명표준)

:미국의 전자서명 표준으로 EIGamal  전자서명을 개선한 방식

:서명과 검증에 소요되는 계산량을 획기적으로 줄인 방식

:전자서명 기능만 제공, 암호화나 키 교환에 사용되지 않는다.

:EIGamal 서명 스킴보다 서명 길이가 320비트로 짧고, EIGamal에 대한 공격 중 일부가 적용되지 않는다.


KCDSA

:국내 전자서명 표준

:EIGamal 전자서명을 개선, DSS를 변형한 방식


전자서명 방식

메시지 복원형(RSA)

:메시지에 직접 서명하는 방식

:서명자의 개인키를 이용해 메시지를 암호화하여 전송

:검증자는 서명자의 공개키를 이용하여 서명된 암호문을 복호화하여 검증

:기존의 공개키 암호방식을 이용하므로 별도의 전자서명 프로토콜이 필요하지 않음

:메시지를 일정한 크기의 블록으로 나누어 각각의 블록에 서명을 해야 하므로 많은 시간이 소요되어 실제로는 사용되지 않음


메시지 부가형(EIGamal, DSS, KCDSA)

:메시지의 해시값에 서명하는 방식

:임의의 길이로 주어진 메시지를 해시 알고리즘을 이용하여 일정 길이로 압축

:해시값에 서명자의 개인키를 이용하여 전자서명을 하고 메시지에 붙여 전송

:수신된 메시지의 해시값과 공개키를 이용하여 전자서명을 복호화한 값과 비교

:전자서명을 붙여 전송하므로 전송량이 약간 늘어나지만, 메시지가 아무리 길더라도 한 번의 서명 생성만 필요하므로 효율적이며 실제로 많이 사용


특수 전자서명

부인방지 서명 : 서명자의 도움이 있어야 검증이 가능한 방식

의뢰 부인방지 서명 : 부인방지 서명의 서명자 익명성을 보장하지 못하는 문제점을 부분적으로 개선한 방식

수신자 지정 서명 : 지정된 수신자만이 서명을 확인할 수 있으며, 서명의 남용을 서명자가 아닌 수신자가 통제할 수 있는 서명 방식

은닉 서명 : 서명자가 문서 내용을 보지 않은 상태에서 서명을 하여 익명성을 제공하는 방식

위임 서명 : 서명자를 대신해서 대리로 서명할 수 있도록 구성한 서명 방식

다중 서명 : 동일한 문서에 여러 사람이 서명하는 방식


전자서명 응용

-보안공지

-소프트웨어의 다운로드

-공개키 인증서(공개키에 전자서명을 붙인 것)

-전자투표

-전자입찰


전자서명으로 해결할 수 없는 문제

:"서명 검증을 할 때 이용하는 공개키가 진짜 송신자의 공개키일 것"

:해결방법(공개키 인증서)


전자투표

:유권자가 투표소에 가지 않고 온라인 시스템을 통해 투표하는 것

:유권자 개인의 인증과 투표 내용의 기밀성 유지 등의 문제점이 있음


전자투표 시스템의 요구사항

-완전성

-비밀성

-재사용 불가

-공정성

-적임성

-검증성


전자투표 방식

-투표소 전자투표(PSEV, Poll Site E-Voting)

-키오스크(Kiosk)

-인터넷 투표(REV, Remote internet E-Voting)


전자입찰

:입찰방식을 인터넷을 통하여 구현


전자칩찰 시스템의 요구사항

-독립성

-비밀성

-무결성

-공평성

-안전성


문제점

:네크워크상의 메시지 유출

:입찰자와 서버 사이의 공모

:입찰자간의 공모

:입찰자와 입찰 공무자간의 공모


공개키 기반 구조(PKI, Public-Key Infrastructure)

:공개키 암호 기법을 이용한 인증 수단으로, 사전에 공유된 비밀 정보가 없어도 인증서에 기반해 상대방을 인증할 수 있다.

:공개키 알고리즘을 통한 암호화 및 전자서명을 제공하기 위한 복합적인 보안 시스템 환경을 말한다.

:기밀성, 무결성, 접근제어, 인증, 부인방지의 보안서비스를 제공

:인증기관, 등록기관, 사용자, 신뢰 당사자, 저장소 등의 요소로 구성


PKI의 주요 구성요소

인증기관(CA, Certification Authority)

:인증서를 발급해 주는 역할을 하며, 인증서는 사용자가 합법적인 사용자임을 입증한다.

:최상위 인증기관 -> 전자서명인증관리센터(KISA)

:공인인증기관 -> 한국정보인증(주), (주)코스콤, 금융결제원, 한국전자인증(주), 한국무역정보통신

-정책 승인기관(PAA, Policy Approving Authority)

:정책과 절차를 생성하여 수립

:하위 기관들의 정책 준수 상태 및 적성성을 감사

-정책 인증기관(PCA, Policy Certification Authority)

:인증기관의 공개키를 인증하고 인증서

:인증서 폐지 목록 등을 관리 

-인증기관(CA, Certification Authority)

:공개키 인증서를 발행하거나 폐지

:사용자에게 자신의 공개키와 상위 기관의 공개키 전달

:등록 기관의 요청에 의해 인증서를 발행


검증기관(VA, Validation Authority)

:인증서와 관련된 거래의 유효성을 확인하고 신뢰 당사자에게 확인시켜 준다.

:검증기관 없이 인증기관만 존재할 수 있으나, 보안측면에서 불완전하다고 간주될 수 있다.

:검증기관과 인증기관은 통합적으로 운영되거나 독립적으로 운영 될 수 있다.


등록기관(RA, Registration Authority)

:인증기관과 사용자 사이에 등록기관을 두어, 사용자의 인증서 신청 시 인증기관 대신 그들의 신분과 소속을 확인하는 기능을 수행한다.

:등록기관은 사용자의 신분을 확인하고 인증서 요청에 서명을 한 후 인증기관에 제출 -> 인증기관은 등록기관의 서명을 확인 후 사용자의 인증서 발행

:등록기관은 선택적인 요소, 등록기관이 없을 때에 인증기관은 등록기관의 기능을 수행할 수 있다고 가정한다.


저장소(Repository, Directory)

:사용자의 인증서를 저장

:사용자 자신이 원하는 상대방의 인증서를 검색할 수 있다.

:디렉터리 표준형식 X.500


사용자

:PKI 내의 사용자는 사람뿐만 아니라 사람이 이용하는 시스템 모두를 의미한다.



PKI의 형태

계층 구조

:최상위 루트 CA가 존재하고 그 아래 하위의 CA가 계층적으로 존재하는 트리형태

:최상위 인증기관 간의 상호인증은 혀용하지만 하위 인증기관 간의 상호인증은 원칙적으로 배제


네트워크 구조

:상위 인증기관의 영향 없이 인증기관 각각이 자신의 인증정책에 따라 독립적으로 존재하는 형태

:CA간에 인증을 위해 상호인증서를 발행하여 인증서비스를 한다.

:모든 상호인증이 허용되면 상호인증의 수가 대폭 증가하는 단점이 있다.


혼합형 구조

:계층 구조와 네트워크 구조의 장점을 취한 방법


구분

계층 구조

네트워크 구조

장점

정부와 같은 관료조직에 적함

인증경로 탐색이 간단

모든 사용자가 최상위 CA의 공개키를 알고 있으므로 인증서 검증 간단

유연하며 실질적인 업무관계에 적합

인증경로 단순

CA의 비밀키 노출 시 국소적 피해

단점

최상위 CA에 집중되는 오버헤드 발생가능

협동업무 관계에는 부적합

최상위 CA의 비밀키 노출 시 피해 규모 막대함

인증경로 탐색이 복잡

인증정책 수립 및 적용 어려움



공개키 인증서(PKC, Public-Key Certificate)

:공개키가 특정인의 것이라는 것을 확신할 수 있는 증거로서의 기능을 수행한다.

:공개키 인증서에는 개인정보 및 그 사람의 공개키가 기재되고, 인증기관의 개인키로 전자서명 되어있다.

:인증서 표준 규격은 ITU(국제전기통신연합)나 ISO(국제표준화기구)에서 정의하고 있는 X.509는 규격이다.

:X.509 인증서는 IPsec, SSL/TLS, SET, S/MIME에 사용된다.


X.509 v3 인증서 양식

요소

구분

설명

 버전

필수

 X.509 버전을 정의

 일련번호

필수

 인증기관에 의해 각 인증서에 부여되는 번호

 서명 알고리즘 식별자

필수

 서명하기 위한 알고리즘과 알고리즘 식별자를 포함, 서명 필드에 포함되기 때문에 이 필드는 쓸모 없음

 발행자 이름

필수

 발행자(인증기관)의 이름을 나타낸다. 이름은 국가명,조직명,부서명,일반이름 등의 속성으로 정의

 유효기간

필수

 인증서 유효 기간이 시작하는 날짜인증서 유효 기간이 종료하는 날짜로 구성

 주체 이름

필수

 사용자의 이름을 나타낸다. 上인증기관이 下인증기관에게 인증서를 발행하는 경우 사용자는 인증기관이 된다. 

 주체의 공개키 정보

필수

 사용자의 공개키에 대한 정보가 들어 있다.

 발행자 유일 식별자

선택

 발급자나 사용자의 이름이 중복되는 경우 이를 구별하기 위한 수단을 제공한다.

 주체 유일 식별자

선택

 비트열 필드로서 선택사항이다. 

 확장

선택

 발행자가 인증서에 추가적으로 사적인 정보를 넣을 수 있다. v3 버전에서 확장을 추가

 서명

필수

 인증서에 대한 서명값이 들어가는데, 인증서의 나머지 필드 전체를 보호한다. CA의 개인키로 암호화


인증서 확장 영역

:공개키 정보와 연관된 추가적인 정보를 제공하며, 인증서 계층 구조를 관리할 수 있는 방법을 제공한다.


-키와 정책 정보

구분

설명 

기관키 식별자

 개인키에 대응하는 공개키를 구분할 수 있는 수단을 제공

 사용자키 식별자

 여러 인증서를 획등한 경우, 특정공개키를 포함하는 인증서의 집합을 빠르게 구분할 수 있는 수단을 제공

 키 사용

 인증서에 포함된 키의 용도를 정의한다.

 인증서 정책

 인증기관은 자신이 발행한 인증서에 대한 정책을 인증서 내에 나타낼 수 있다.


-사용자와 발행자 속성

구분

설명

 사용자 대체 이름

 추가적인 신분이 인증서의 사용자와 결합할 수 있도록 한다.

 우편 주소, DNS이름, IP주소, URI가 포함

 발급자 대체 이름

 다양한 형식으로 된 하나 이상의 다른 대체 이름을 포함


-인증 경로 제약조건

구분 

설명

 기본 제한

 인증서의 사용자가 인증기관인지 여부를 구분한다.

 이름 제한

 사용자 DN(Distinguished Name)이나 사용자 대체 이름에 제약을 가할 수 있다. 

 정책 제한

 인증기관에게 발급된 인증서 내에는 정책 제한 확장을 적용할 수 있다.


CRL(Certificate Revocation List)

:인증서 폐지 목록(CRL)이라고 하며 인증기관의 저장소 or 디렉터리 시스템 등에 등재하여 신뢰 당사자가 언제든지 목록을 검색할 수 있도록 하여야 한다.

:버전, 서명 알고리즘 및 발급 기관의 이름, 인증서 발급입, 다음 번 갱신일, 취소된 인증서에 대한 정보(일련번호, 폐지일자, 폐지사유) 등이 포함


폐지사유

-사용자 개인키가 노출 or 훼손

-CA가 사용자를 더 이상 인증X

-CA의 인증서가 노출 or 훼손


온라인 인증서 상태 검증 프로토콜(OCSP, Online Certificate Status Protocol)

:실시간으로 인증서의 상태 정보를 확인할 수 있는 효율적인 방법

:OCSP 클라이언트, OCSP 서버, 인증 서버로 구성


서버 기반 인증서 검증 프로토콜(SCVP, Simple Certification Validation Protocol)

:SCVP 서버를 이용하여 클라이언트의 인증서 처리에 대한 부담을 줄여준다.

:인증서의 유효성 혹은 신뢰할 수 있는 인증서의 체인 등 다양한 정보를 제공

:클라이언트의 구현을 단순화시키고 기업 내에서 신뢰 및 정책 관리를 중앙 집중식으로 처리할 수 있도록 허용하는 데에 목적




일방향 해시함수

:임의 길이의 메시지 입력으로 고정 길이의 해시값을 출력한다.

:해시값을 고속으로 계산할 수 있다.

:일방향성을 갖는다.(해시값으로 부터 메시지를 역산할 수 없다는 성질)

:메시지가 다르면 해시값도 다르다.(무결성 확인)


충돌

:2개의 다른 메시지가 같은 해시값을 갖는 것을 충돌(Collision)이라고 한다.


충돌내성

:충돌을 발견하는 것이 어려운 성질을 가리킨다.


해시함수의 보안 요구사항

프리이미지 저항성(역상 저항성)

:주어진 임의의 출력값 y에 대해 y=h(x)를 만족하는 입력값 x를 찾는 것이 계산적으로 불가능하다.


제2프리이미지 저항성(두번째 역상 저항성, 약한 충돌 내성)

:주어진 입력값 x에 대해 h(x)=h(x'), x≠x'을 만족하는 다른 입력값 x'을 찾는 것이 계산적으로 불가능하다.


충돌 저항성(강한 충돌 내성)

:h(x)=(x')을 만족하는 임의의 두 입력값 x,x'을 찾는 것이 계산적으로 불가능하다.


전자서명에 이용되는 해시함수의 특성

:해시값을 고속으로 계산

:약 일방향성=프리이미지 저항성

:강 일방향성=제2프리이미지 저항성

:충돌 회피성=충돌 저항성


키가 없는 해시함수

블록암호 기반 해시함수

:압축함수 자리에 대칭키 블록암호를 사용

:블록암호의 암호화기능만 사용


전용 해시함수

:(SHA-1, RIPEMD, RIPEMD-128, RIPEMD-160, HAVAL) 등은 모두 MD5를 기초로 디자인

:MD5 해시값 크기 : 128 , 블록 크기: 512

:RIPEMD 해시값 크기 : 128 , 블록 크기: 512

:HAVAL 해시값 크기: 128, 160, 192, 224, 256블록 크기 : 1024

:HAS160은 한국형 전자서명 표준인 KCDSA에서 사용할 목적으로 개발 , 해시값 크기 : 160 , 블록 크기 : 512


모듈 연산 기반 해시함수

:압축함수의 기반을 모듈 연산의 반복적인 수행

:하드웨어/소프트웨어 자체에 내장된 모듈 연산을 사용

:속도가 빠르지 않고 안전성 연구에 대한 역사가 짧음


SHA(Secure Hash Algorithm)

:1993년 미국 표준 기술 연구소(NIST)에서 FIPS PUB 180 출판 -> SHA-0(표준 폐기)

:1995년 NIST에서 FIPS 180-1 출판-> SHA-1

:2002년 NIST에서 FIPS 180-2 출판-> SHA-2(SHA-256 / 224, SHA-512 / 384 ), 2004년 3DES 키 크기에 맞춰 해시값 크기를 조정한 SHA-224가 표준에 추가

:2008년 NIST에서 FIPS 180-3 출판-> SHA-3 공모 -> 2012년 Keccak이 해시 알고리즘으로 선정

구분

SHA-1

SHA-256 / 224

SHA-512 / 384

해시값 크기

160

256 / 224

512 / 384

블록 크기

512

512

1024

워드 크기

32

32

64

라운드

80

64

80

https://ko.wikipedia.org/wiki/SHA


키가 있는 해시함수

:메시지 인증 기능을 가진 함수

:함수 자체의 안전성과 키의 비밀성에 안전성을 두고 있음

:CBC모드를 이용하는 방법


해시함수 응용

-무결성점검

-소프트웨어 변경 검출

-메시지 인증 코드

-전자서명


랜덤 오라클 모델

:해시함수에 대한 이상적인 수학적 모델

:이진수로 고정된 길이의 메시지 다이제스트를 생성

:다이제스트가 존재하는 메시지가 주어지면, 오라클은 저장되어 있던 다이제스트 제공

:새로운 메시지에 대한 다이제스트는 다른 모든 다이제스트와는 독립적으로 선택될 필요가 있음


비둘기집 원리

:n+1마리의 비둘기가 n개의 비둘기집에 들어가 있다면, 적어도 1개의 비둘기 집에는 2마리의 비둘기가 들어있다는 뜻


생일 공격

:일방향 해시함수의 강한 충돌 내성을 깨고자 하는 공격

:같은 해시값을 생성하는 2개의 메시지를 구하는 것


해시함수에 대한 공격

무차별공격

:약한 충돌 내성을 깨고자 하는 공격


일치블록 연쇄공격 

:h(M)=h(M'), M≠M', 같은 해시값을 갖는 메시지(M')를 골라 사용하는 공격이다.


중간자 연쇄공격 

:전체 해시값이 아니라 해시 중간의 결과에 대한 충돌쌍을 찾는다.


고정점 연쇄공격 

:메시지 블록, 연쇄변수 쌍을 얻어 연쇄변수가 발생하는 특정한 점에서 임의의 수의 동등한 블록들을 메시지 중간에 삽입해도 전체 해시값이 변하지 않는다.


차분 연쇄공격

다중 라운드 블록암호 공격 : 다중 라운드 블록암호를 사용하는 해시함수에서, 입력값과 그에 대응하는 출력값 차이의 통계적 특성을 조사하는 기법

해시함수 공격 : 압축함수의 입출력 차이를 조사하여 0의 충돌쌍을 주로 찾아내는 방법


일방향 해시함수로 해결할 수 없는 문제

:조작과 변경을 검출할 수 있지만 거짓행세를 검출하지 못한다.

:무결성외 거짓행세를 검출하기 위해 인증이라는 절차가 필요

:해결방법(메시지 인증 코드, 전자서명)


변경 감지 코드(MDC, Modification Detection Code)

:메시지가 변경되지 않았다는 것(무결성)을 보장

:키가 없는 해시함수


메시지 인증 코드(MAC)

:무결성을 확인하고 메시지에 대한 인증을 하는 기술

:키가 있는 해시함수

:전자서명보다 빠름

:키 배송 문제가 있음


축소 MAC(nested MAC)

:해싱이 2 단계(키와 메시지를 이어 붙이는 해시 과정이 2번 있음)


HMAC(Hash MAC)

:일방향 해시함수를 이용하여 메시지 인증코드를 구성하는 방법

:RFC 2104로 출판

:TLS, IPSec, SET(Secure Electronic Transaction) 프로토콜에서 사용


CMAC(Cipher-based MAC)

:NIST는 CMAC or CBC-MAC이라 부르는 FIPS 113을 정의

:암호블록연쇄(CBC)모드와 유사한 방법, N개의 평문 블록으로 부터 N개의 암호문 블록을 만든는 것이 아님


카운터 암호 블록 연쇄 - 메시지 인증 코드(CCM, Counter with Cipher Block Chaining - MAC)

:NIST에 의해 IEEE802.11 무선랜의 보안 요구사항을 지원하기 위해서 표준화되었으나, 인증 암호를 요구하는 다양한 네트워크 응용에서 사용

:CCM의 주요 알고리즘 구성요소는 (AES 알고리즘, CTR 모드, CMAC) 이다.


MAC에 대한 공격

:재전송 공격

:키의 추측에 의한 공격(무차별 공격, 생일 공격)


재전송 공격 방어 방법

순서번호

:송신 메시지에 매회 1회씩 증가하는 번호를 붙이고 MAC 값을 계산

:통신상대마다 마지막 순서번호 기록해두어야 하는 번거로움이 있음


타임스탬프

:송신 메시지에 현재 시각을 넣고, 그 이전에 메시지가 왔을 경우에 MAC 값이 바르더라도 오류라고 판단

:송·수신자 사이에 시계를 일치시켜야 함


비표

:수신자는 송신자에게 일회용의 랜덤한 값을 줌(비표)

:비표를 포함해 MAC 값을 계산하며, 데이터의 양이 약간 증가


MAC으로 해결할 수 없는 문제

제 3자에 대한 증명 : 키를 송·수신자만 가지고 있기 때문에 제 3자를 증명할 수 없음 , 전자서명을 사용하면 제 3자에 대한 증명이 가능함 

부인 방지 : 송수신자가 송수신 사실을 부인하지 못하게 하는 것인데 MAC에서는 확인할 수 없음 , 전자서명을 사용하면 부인방지 가능


키 배송 문제

:대칭키 암호를 사용하려고 하면 키 배송 문제(key distribution problem)가 발생


키 배송 문제 해결 방법

-키의 사전 공유

-키 분배 센터에 의한 해결(온라인 키 분배)

-Diffie-Hellman 키 교환

-공개키 암호


키의 사전 공유

:키 관리기관(TA,Trusted Authority)이 임의의 두 사용자에게 비밀 경로를 통하여 임의 키를 선택하여 전달 하는 방법

:n 명의 사용자 , n-1가지 키 관리

TA는  가지 키를 관리


키 분배 센터(KDC, Key Distribution Center)에 의한 해결

:암호 통신이 필요해질 때마다 키 분배 센터에 의해서 개인키 분배 센터사이에서만 키를 사전에 공유하는 방법

:n명의 사용자가 있다면 n개의 키가 필요


Diffie-Hellman 키 교환(Diffie-Hellman 키 합의)

:공개키 암호 알고리즘(최초의 비밀키 교환 프로토콜)

:KDC없이 대칭 세션키를 생성

:대칭키를 만들기 전에는 양쪽은 두 개의 수 p와 g를 선택(p는 소수, 300자리가 넘는 십진수(1024bit))

:키 교환이라는 이름이 붙어 있지만 실제로는 키를 교환하는 것이 아니라 공유할 키를 계산하여 만들어 내는 것

:이산대수 문제 사용( 에서 n을 구하는 문제)

:완전 순방향 비밀성 = 비밀키가 노출되더라도 그 후의 키 분배 과정에서 얻는 세션키의 안전성에는 영향을 미칠 수 없어야 한다는 성질


공격

-이산대수 공격

:이브(Eve)가 x,y값을 구할 수 있다면 대칭키를 계산 할 수 있게 된다.


-중간자 공격(Man In The Middle Attack)

:키 교환의 중간에 끼어들어 정상적인 전송이 되는 것처럼 보이게 하는 공격

:이런 공격에 취약한 이유는 인증단계가 없기 때문


국대국 프로토콜(STS,Station-To-Station protocol)

:공개키 인증서를 이용한 전자서명을 사용

:중간자 공격을 해결


공개키 암호

1. 수신자는 미리 암호화키(공개키)를 송신자에게 알려 준다. 이 암호화키는 도청자에게 알려져도 괜찮다.

2. 송신자는 암호화키로 세션키를 암호화하여 수신자에게 보낸다.

3. 수신자는 복호화키(개인키)로 암호문을 복호화한다.

:공개키와 개인키는 서로 밀접한 관계(수학적 관계)가 있기 때문에 각각 별개로 만들 수는 없다.

:전자문서의 무결성부인방지 기능을 갖고 있는 전자서명 구현, 다양한 암호 프로토콜에 사용 가능

:느린 암호화 속도


공개키 암호의 역사

:1976년 휘트필드 디피 & 마틴 헬만이 공개키 암호의 아이디어를 발표

:1978년 론 라이베스트 & 아디 샤미르 & 레너드 애들먼이 공개키 알고리즘과 RSA를 발표

:현재 공개키 암호의 표준은 RSA


RSA 암호시스템

:공개키 암호의 표준

:개발자 세 사람의 이름, Rivest-Shamir-Adleman

:인수분해 문제해결의 높은 난이도를 이용 

:암호화, 전자서명의 용도로 사용

:SSL 프로토콜을 가진 웹 브라우저, PGP 등 RSA 사용


키 생성

p,q 선택 , p,q는 소수 (p≠q) , (개인,선택)

N=p×q를 계산 , (공개,계산)

ø(N)=(p-1)(q-1)를 계산

정수 e를 선택, gcd(ø(N),e) = 1 , 1 < e < ø(N) , (공개,선택)

확장된 유클리드 호제법을 이용 d를 계산 de mod ø(N) = 1  , (개인,계산)

공개키 PU={e,N}

개인키 PR={d,N}


ex)

p=17, q=11

N=17×11=187

ø(N)=16×10=160

e=7 선택

d<160, de mod 160 = 1 , d=23 ∵23×7=160×1+1

PU = {7,187}

PR = {23,187}


암호화와 복호화

RSA에서는 두 개의 지수 e,d 사용(e:공개값, d:비밀값) , 공개 : e,n 비밀 : d,p,q

(암호화)

(복호화)


공격

-소인수분해 공격

:현실적인 시간 내에 소인수분해를 마칠 수 있는 효율적인 소인수분해 알고리즘이 개발되지 않는 한 RSA는 안전하다고 말할 수 있다.

:Factoring Attack

-중간자 공격

:기밀성에 대해 매우 유효한 공격

:송신자와 수신자 사이에 들어가서 송신자에 대해서는 수신자처럼, 수신자에 대해서는 송신자처럼 행세하는 공격이다.

:RSA뿐만 아니라 어떤 공개키 암호에서도 사용 가능

:중간자 공격을 막기 위해서는 공개키 인증서가 필요


권장사항

p,q (p≠q) 거의 같은 크기의 소수이어야 한다.

p-1,q-1은 커다란 소인수를 각각 가져야 한다.

p-1,q-1의 최대공약수는 작은 수이어야 한다.

메시지는 OAEP를 사용해서 패딩되어야 한다.


Rabin 암호시스템

:합성수 모듈러에 관하여 제곱근을 찾기 어렵다는 사실로부터 안전성을 얻음


암호화와복호화

:연산은 오직 한 번의 곱셈으로 이루어져 있고, 이 연산은 매우 빠르게 수행된다.

:성능이 낮은 플랫폼에서 잘 활용된다. ex)스마트카드

:복호화를 하면 동등한 확률로 4개의 평문 후보가 나타난다.


Rabin 시스템의 보안

:p,q가 충분히 크기만 하다면 안전

:시스템 복잡도는 큰 수 n을 두 개의 소수의 곱으로, 소인수분해하는 수준의 복잡도와 동일


EIGamal 암호시스템

:이산대수 문제에 근거해서 만든 공개키 암호시스템

:암호문의 길이는 평문의 약 2배

:많은 메모리 공간이 필요하며 전송 속도가 느림

:키 교환,인증,짧은 메시지의 암/복호화에 사용

:암호 소프트웨어 GnuPG에 구현


타원 곡선 암호시스템(ECC, Elliptic Curve Cryptosystem)

:이산대수의 문제에 근거해서 만든 공개키 암호시스템

:ECC는 전자상거래의 핵심 기술

:160bit ECC는 1024bit의 RSA키와 동일한 보안수준

:H/W와 S/W로 구현 용이

:스마트카드, 무선통신 단말기 등과 같이 메모리와 처리능력이 제한된 응용분야에 효율적

ECC와 RSA 방식의 비교

항목

ECC 방식

RSA 방식

기반구조

WPKI(무선)

PKI(유선)

속도

우수

느림

키 크기

상대적으로 작은 키

ECC에 비해 큰 키

적용

소형 모바일 환경

인프라가 다소 구현된 환경


대칭키 방식과 비대칭키 방식의 비교

항목

대칭키

비대칭키

키의 상호관계

암호화키=복호화키

암호화키≠복호화키

안전한 키길이

128bit 이상

2048bit 이상

암호화키

비밀

공개

복호화키

비밀

비밀

비밀키 전송

필요

불필요

키 개수

N(N-1)/2

2N

암호화 속도

빠름

느림

경제성

높다

낮다

제공 서비스

기밀성

기밀성,부인방지,인증

목적

데이터(파일) 암호화

대칭키 교환

전자서명

복잡

간단

단점

키 교환 원리가 없다

중간자 공격에 취약

해당 알고리즘

DES, 3DES, AES, IDEA

RSA, ECC ,DSA


하이브리드 암호시스템

:대칭키 암호로 속도를 높이고, 공개키 암호로 세션키를 보호

:의사난수 생성기, 대칭키 암호, 공개키 암호라는 3가지 암호기술 사용

:메시지대칭키 암호로 암호화, 암호화 한 세션키의사난수 생성기로 생성, 세션키공개키 암호로 암호화

:PGP, SSL/TLS에서 하이브리드 암호시스템 사용

:PGP에서는 하이브리드 암호시스템에 (전자서명+전자서명의 검증+개인키 관리)를 추가하여 사용 


현대 블록 암호

:(이동, 교환, 분할, 조합), 전치 장치(Permutation, P-box), 치환 장치(Substitution, S-box), XOR연산의 조합으로 만들어진다.


S-box(혼돈,비선형 함수)

:입력비트와 출력비트의 개수가 같지 않아도 된다.

:역함수가 존재할 수 있고, 존재하지 않을 수도 있다.

:역함수가 존재하는 S-box는 입력 비트 == 출력 비트 개수가 동일


P-box(확산)

단순(Straight) P-box : 입력 비트와 출력비트는 일대일 대응, 역함수가 존재한다.

축소(Compression) P-box : 입력 비트 중 특정 비트는 소실되어 출력되지 않는다, 역함수 X

확장(Expansion) P-box : 입력 비트 중 특정 비트는 한 개 이상의 출력비트와 연결된다, 역함수 X , 비트 증가


혼돈과 확산

혼돈 : 암호문과  사이의 관계를 숨긴다.

확산 : 암호문과 평문 사이의 관계를 숨긴다. 평문의 통계적 성질을 암호문 전체에 퍼뜨려 숨긴다.


혼합 암호(Product Cipher)

:치환(Substitution) 암호와 전치(Permutation) 암호의 2가지 방법을 모두 사용하는 암호화 방법이다.


라운드(Round)

:반복적으로 사용되는 혼합 암호를 라운드라고 한다.


양자 암호

:하이젠베르크의 불확정성 원리를 응용한 암호화 방식이다.


파이스텔 암호(Feistel Cipher)

:블록 암호의 일종으로, 암호화 방식이 라운드 함수의 반복으로 이루어 진다.

:키 순서를 제외한 암호화 방식과 복호화 방식이 동일하다.

:파이스텔 구조(파이스텔 네트워크)는 3라운드 이상이며, 짝수 라운드로 구성된다.

:파이스텔 구조는 많은 블록 암호 알고리즘 (MARS, RC6, Twofish)에서 사용되고 있다.

방식

암호화하려는 정보를 길이가 같은 두 개의 정보로 쪼갠다. 이를 이라고 하고, 라운드 에서 사용되는 키를 , 그리고 라운드 함수를 로 놓는다.

암호화 과정에서는 각 라운드에서는 다음과 같은 연산이 이루어진다.

모든 라운드가 끝난 후, 최종적으로 가 암호화된 값이 된다.

복호화 과정에서는 반대의 연산이 이루어진다. 가 주어졌을 때, 각 복호화 라운드에서는 다음과 같은 연산이 이루어진다.

최종적으로 원래 값 를 얻는다.

출처:https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8A%A4%ED%85%94_%EC%95%94%ED%98%B8


SPN 구조(Substitution-Permutation Network)

:평문을 여러 개의 작은 블록으로 나누고 각 블록을 S-box로 입력하여 치환하고 나온 출력값을 P-box로 전치하는 과정을 반복하는 방식이다.

:라운드 함수가 역변환이 된어야 한다.

:많은 병렬성을 제공하기 때문에 암·복호화 알고리즘의 고속화를 요구한다.


현대 스트림 암호

:동기식과 비동기식 두 가지 종류로 분류된다.


동기식 스트림 암호

:키 스트림은 평문 or 암호문 스트림독립적이다.

-One-Time Pad(가장간단하고 안전한 암호, 키의 전달과 보관이 문제) 

-FSR(귀환 함수, 시프트 레지스터로 구성) 

-LFSR(하드웨어로 쉽게 구현, 선형성 때문에 공격에 취약)

-NLFSR(LFSR보다 안전한 스트림 암호)

-OFB(Output FeedBack)모드


비동기식 스트림 암호

:키 스트림은 평문 or 암호문 스트림종속적이다.

-CFB(Cipher FeedBack)모드는 스트림 암호 생성


DES(Data Encryption Standard)

:64bit 블록 암호 알고리즘

:Feistel 구조

키의 크기 : 64bit(56bit 비밀키 + 8bit parity bit), 56bit 비밀키를 사용 라운드 키 생성기48bit 라운드 키 16개 생성

암호화 과정 : P-box 2개, 16 라운드의 파이스텔 구조

DES 함수 구조 : 확장 P-box, 키 XOR, S-box 8개, 단순 P-box 4개

취약점 : 키의 크키가 작음


3DES(Triple-DES)

:하드웨어에서 매우 효율 적, 소프트웨어에서는 비효율적이다.


키의 개수

암호화-복호화-암호화 

키의 크기 

라운드 

 2개

 DES-EDE2

 112

48

 3개

 DES-EDE3

 168

48


AES(Advanced Encrypiton Standard)

:128bit 블록 암호 알고리즘

:SPN 구조

:AES 알고리즘으로 선택된 것은 라인달(Rijndael)이다.

버전 : AES-128, AES-192, AES-256 

키의 크기 : 128bit, 192bit, 256bit, 키 확장 알고리즘으로 부터 생성되는 라운드 키의 크기는 128bit 이다.

암호화 과정 : SubBytes(바이트 치환), ShiftRows(행의 이동), MixColumns(열의 혼합), AddRoundkey(라운드 키와 XOR)

라운드 : 10라운드-128bit, 12라운드-192bit, 14라운드-256bit


기타 대칭키 암호 알고리즘

IDEA : 64bit 블록, 128bit 키, 파이스텔 구조 변형, 8라운드, S-box 사용X, DES에 비해 안전, PGP 채택

Skipjack : 64bit, 80bit 키, 32라운드, Fortezza Card에 사용

RC5 : 입출력,키,라운드 수가 가변인 블록 알고리즘, 빠른 암·복호화

SEED : 128bit 블록, 128bit 키, 16라운드, 파이스텔 구조 변형, 한국표준 블록암호 알고리즘

AIRA : 입출력 크기와 키 크기는 AES와 동일

HIGHT : 64bit 블록, 저전력·경량화를 요구하는 컴퓨팅 환경

LEA : 128bit 블록, 경량 고속 블록 암호 알고리즘, AES보다 1.5~2배 빠름, 스마트폰 보안, 사물인터넷 등 저전력 암호화에 쓸 수 있음


Feistel , SPN 알고리즘

Feistel구조 알고리즘 종류

:DES, LOKI, CAST, CAST256, Twofish, Blowfish, MISTY, RC5, RC6, E2, MARS

SPN구조 알고리즘 종류

:SAFER, SAFER+, SHARK, Square, CRYPTON, PRESENT, Serpent, Rijndael


블록 알고리즘 종류

구분 

개발국가 

개발년도 

특징 

블록크기 

키의 크기 

라운드 

DES

미국

1972

NIST에서 표준으로 공표(1977년) 

64

56

16

FEAL

일본

1987

S/W구현에 적합 

64

64

4

IDEA

미국

1990

PGP 채택 

64

128

8

SKIPJACK

미국

1990

Fortezza카드에 사용 

64

80

32

RC5

미국

1994

알고리즘 간단, 빠른 암·복호화 

64

0-256

16

MISTY

일본

1996

차분/선형공격에 안정성증명구조 

64

128

8

CRYPTON

한국

1998


128

0-256

12

SEED

한국

1999

한국표준 블록암호 알고리즘

128

128

16

 Rijndael

 벨기에

 

2000년 AES알고리즘으로 선정 

128

128,192,256

10,12,14


블록 암호 모드

모드 이름

장점 

단점 

비고 

ECB 모드

간단/고속/패딩O

병렬 처리 가능(암/복호화 양쪽)

동일한 평문은 동일한 암호문 블록을 갖음

암호문의 한 블록에서 에러가 발생하면 대응되는 평문 블록에서 에러 발생

암호문 블록의 삭제나 교체에 의한 평문의 조작 가능

재전송 공격이 가능

비권장

CBC 모드

동일한 평문은 동일한 암호문 블록을 갖지 않음

병렬 처리 가능(복호화만)

암호화에서 병렬 처리 불가능

암호문 에서 오류가 발생하면 평문 와 에서 에러가 발생

평문 블록의 한 비트 오류는 출력되는 모든 암호문에 영향을 미침

권장 

CFB 모드

패딩X

병렬 처리 가능(복호화만)

암호화에서 병렬 처리 불가능

재전송 공격이 가능

CTR모드사용이 나음 

OFB 모드

패딩X

암/복호화의 사전 준비 가능

암/복호화가 같은 구조

비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러가 난다

병렬 처리 불가능

암호문 에서 에러가 발생하면 그 다음에 오는 평문은 모두 에러가 발생

CTR모드 사용이 나음

CTR 모드

패딩X

암/복호화 사전 준비 가능

암/복호화가 같은 구조

비트 단위의 에러가 있는 암호문을 복호화하면 평문에 대응하는 비트만 에러가 난다

병렬 처리 가능(암/복호화 양쪽)

공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다.

권장 


블록 모드 : ECB, CBC

스트림 모드 가능한 블록 모드 : CFB, OFB, CTR


블록 암호 공격

-차분공격 : 선택 평문 공격법, 두 개의 평문 블록들의 비트의 차이에 대응되는 암호문 블록들의 비트의 차이를 이용하여 사용된 키를 찾는 방법

-선형공격 : 평문 공격법, 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 키를 찾는 방법

-전수공격법 : 암호화할 때 일어날 수 있는 가능한 모든 경우에 대하여 조사하는 방법, 경우의 수가 많은 경우에 실현 불가능한 방법

-통계적 분석 : 암호문에 대한 평문의 각 단어별 빈도에 관한 자료와 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법

-수학적 분석 : 통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법


치환 암호와 전치 암호

치환 암호 : 평문의 문자를 다른 문자로 교환하는 규칙이다.

전치 암호 : 문자 집합 내부에서 자리를 바꾸는 규칙이다.


블록 암호와 스트림 암호

블록 암호 : 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용하여 암호화한다.

스트림 암호 : 데이터 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘이며, 평문과 키 스트림을 XOR하여 암호화한다.


구분

블록 암호

스트림 암호

장점

 높은 확산, 기밀성, 해시함수

 빠른 암호화, 에러 전달X 

단점

 느린 암호화, 에러 전달O

 낮은 확산 

사례

 DES,AES, IDEA, SEED, RC5

 LFSR, MUX generator

암호화 단위

 블록

 비트 

주요 대상

 일반 데이터 전송, 스토리지 저장

 음성, 오디오/비디오 스트리밍 


링크 암호화와 종단간 암호화

링크 암호화

:물리 계층과 데이터링크 계층에서 암호화

종단간 암호화

:애플리케이션 계층에서 암호화

구분

링크 암호화

종단간 암호화

특징

 (ISP나 통신업자)가 암호화

 헤더를 포함한 모든 데이터를 암호화

 사용자가 알고리즘 통제 X

 (사용자)가 암호화

 헤더는 암호화하지 않음

 사용자가 알고리즘 통제 O 

장점

 운영이 간단

 트래픽분석을 어렵게 함

 (온라인)으로 암호화

 중간 노드에서도 (데이터가 암호문으로 존재)

 사용자 인증 등 (높은 수준의 보안 서비스를 제공 가능)

단점

 중간 노드에서 (데이터가 평문으로 노출)

 (다양한 보안서비스를 제공하는데 한계)

 모든 노드가 암호화 장비를 갖추어야하므로 네트워크가 커지면 비용 과다

 트래픽분석에 취약

 (오프라인)으로 암호화


주요 암호기술

 대칭키 암호 

 암·복호화할 때 사용하는 키가 동일한 암호 알고리즘 방식

 비대칭키(공개키) 암호

 암·복호화할 때 사용하는 키가 서로 다른 암호 알고리즘 방식

 하이브리드 암호 시스템

 대칭키 암호와 공개키 암호의 장점을 조합한 것

 일방향 해시함수

 무결성을 제공하는 기술

 메시지 인증코드

 무결성과 인증을 제공하는 암호 기술 

 전자서명

 무결성을 확인하고, 인증과 부인방지를 하기 위한 암호 기술

 의사난수 생성기

 난수열을 생성하는 알고리즘

 암호학자의 도구 상자

 하이브리드 암호 시스템을 제외한 6가지를 합한 것이 암호학자의 도구 상자


기타 암호기술

스테가노그래피

:암호화는 메지시 내용을 은폐하는 것을 의미하며, 스테가노그래피는 다른 무언가로 감추어 메시지 자체를 은폐하는 것을 의미한다.

:전달하려는 기밀 정보를 이미지 파일이나 MP3 파일 등에 암호화해서 숨기는 심층암호 기술이다.


워터마크

:원본의 내용을 왜곡하지 않는 범위 내에서 혹은 사용자가 인식하지 못하도록 저작권 정보를 디지털 콘텐츠에 삽입하는 기술을 말한다.

:(투명,가시,강한,약한)워터마킹


핑거프린팅

:디지털 콘텐츠를 구매할 때 구매자의 정보를 삽입하여 불법 배포 발견 시 최초의 배포자를 추적할 수 있게 하는 기술이다.


디지털 저작권 관리(DRM)

:디지털 미디어의 불법 또는 비인가된 사용을 제한하기 위하여 저작권 소유자판권 소유자가 이용하는 정보 보호 기술의 일종인 접근제어 기술이다.


케르크호스프의 원리(Kerckhoff's principle)

:키를 제외한 시스템의 다른 모든 내용이 알려지더라도 암호시스템은 안전해야 한다는 원리이다.


암호분석의 종류

 암호문 단독 공격(COA, Ciphertext Only Attack)

 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법

 기지 평문 공격(KPA, Known Plaintext Attack)

 암호문에 대응하는 일부 평문이 사용가능한 상황에서의 공격

 선택 평문 공격(CPA, Chosen Plaintext Attack)

 평문을 선택하면 대응하는 암호문을 얻을 수 있는 상황에서의 공격

 선택 암호문 공격(CCA, Chosen Ciphertext Attack)

 암호문을 선택하면 대응하는 평문을 얻을 수 있는 상황에서의 공격


암호기술 평가

-암호 알고리즘 평가

-암호모듈 평가

-정보보호시스템에 대한 공통 평가 기준(CC, Common Criteria), CC 기반의 정보보호제품 평가

-응용시스템 평가


암호모듈의 안정성 평가(CMVP, Cryptographic Module Validation Program)

:CMVP는 암호모듈 안전성 검증을 위한 프로그램이다.

정보보호

:정보의 (수집,가공,저장,검색,송신,수신) 중에 발생하는 정보의 (훼손,변조,유출) 등을 방지하기 위한 (관리적,기술적) 수단 또는 그러한 수단으로 이뤄지는 행위


정보보호의 목표

 기밀성

 인가된 (사람,프로세스,시스템) 만이 알필요성에 근거하여 시스템에 접근해야 한다. 

 무결성

 송수신되는 데이터의 내용이 불법적으로 (생성,변경,삭제) 되지 않도록 보호되어야 한다.

 가용성

 권한이 있는 사용자가 (데이터,서비스)를 이용할 수 있어야 한다.


정보보호 관리

 기술적 보호대책

 접근통제, 암호기술, 백업 체제

 물리적 보호대책

 (화재, 수해, 지진, 태풍) 자연재해 대책, 출입통제, 잠금 장치

 관리적 보호대책

 법, 제도, 규정, 교육


OSI 보안 구조 *OSI(Open System Interconnection) : 개방형 시스템간 상호접속

 보안 공격

 기관이 소유한 정보의 안전성을 침해하는 제반(모든) 행위

 보안 메커니즘

 보안 공격을 탐지, 예방하거나 공격으로 인한 침해를 복구하는 절차

 보안 서비스

 시스템 보안이나 데이터 전송의 보안을 보장하는 서비스


소극적 공격과 적극적 공격

:보안 공격을 X.800과 RFC 2828에 따라 분류하면 소극적 공격과 적극적 공격으로 나눌 수 있다.

 소극적 공격 

 데이터 획득 및 시스템 자원에 손상을 주지 않는 공격

 적극적 공격

 시스템 자원을 변경하거나 시스템 작동에 손상을 주는 공격


기밀성을 위협하는 공격(Passive, 소극적 공격)

 스누핑(Snooping)

 데이터에 대한 비인가 접근 또는 탈취를 의미 , 정보를 염탐하여 불법으로 가로채는 행위

 트래픽분석(Traffic analysis)

 트래픽 흐름을 관찰함으로써 정보를 추측하는 것


무결성을 위협하는 공격(Active, 적극적 공격)

 변경(Modification)

 메시지 일부를 불법으로 수정하거나 메시지 전송을 지연시키거나 순서를 뒤바꾸어 인가되지 않은 효과를 노리는 행위

 가장(Masquerading)

 한 개체가 다른 개체의 행세를 하는 것, 이 공격은 다른 형태의 적극적 공격과 병행해서 수행

 재연(Replaying)

 획득한 데이터 단위를 보관하고 있다가 시간이 경과한 후에 재전송함으로써 인가되지 않은 효과를 노리는 행위

 부인(Repudiation)

 메시지 송수신자가 송수신 사실을 부인하는 것


가용성을 위협하는 공격(Active, 적극적 공격)

 서비스 거부(DoS, Denial of Service)

 시스템의 서비스를 느리게 하거나 완전히 차단하는 공격


보안 서비스

:시스템 보안이나 데이터 전송의 보안을 보장하는 서비스

:보안 정책과 보안 메커니즘에 의해서 구현된다.

 기밀성

 소극적인 공격으로부터 데이터를 보호

 무결성

 메시지 스트림, 단일 메시지, 메시지 안의 선별된 필드에 적용

 가용성

 시스템 자원에 접근할 필요가 있거나 사용하고자 할 때 허용

 인증

 연결지향통신 : 대등 개체 인증(송수신자에 대한 인증을 제공) / 비연결지향통신: 데이터 출처 인증

 부인방지

 메시지의 송수신자가 송수신 사실을 부인하지 못하게 하는 것

 접근제어

 통신 링크를 통한 호스트 시스템과 응용 간의 접근을 제한하고 통제할 수 있는 능력


시점별 통제

:취약점을 감소시키거나 억제하기 위해 사용되는 메커니즘을 말한다.

 예방통제(Preventive Control)

 사전에 위협과 취약점을 대처하는 통제

 탐지통제(Detective Control)

 위협을 탐지하는 통제

 교정통제(Corrective Control)

 위협이나 취약점을 감소시키는 통제


네이버에서 '구글' 검색한 결과를 웹 디버거 Fiddler로 확인한 결과입니다.



HTTP Request

<웹 디버거 Fiddler로 확인한 HTTP Request - 1>

HTTP Requset 메세지는 3가지 섹션으로 나눠진다.

:Request Line, Message Header, Message Body

Request Line은 Method, URL, Version로 구성된다.

Message Header는 뒤에 :(콜론)이 있으며, 공백 다음에 정보를 나타낸다.

Message Body는 페이지의 정보나 페이지에 필요한 인자값이 들어간다. 


<웹 디버거 Fiddler로 확인한 HTTP Request - 2>

Message Header 부분과 Message Body 사이 개행(Newline)이 있다.

GET 방식은 Message Body를 필요로 하지 않기 때문에 Message Body에 값이 들어가지 않는다.


HTTP 전송 방식 : 웹 서버로부터 자료를 가져오는 기능을 하는 GET을 많이 사용한다.

요청된 URL : 클라이언트가 자룔르 요청하기 위해 보내는 인자 값 등 임의의 쿼리 문자열을 의미한다.

HTTP 버전 : HTTP 버전은 1.0과 1.1이고, 대부분의 브라우저는 초기 값으로 1.1을 쓴다.

Host : URL 주소에 나타난 호스트명을 자세하게 나타내기 위해 사용, 다양한 웹사이트가 하나의 서버 안에서 호스트 됐을 때 필요

Referer : 해당 요청이 이전에 어디에서부터 요청을 받았는지에 대한 URL을 나타낸다.

User-Agent : 브라우저나 기타 클라이언트의 소프트웨어 정보를 보여 준다.

Cookie: 서버가 클라이언트에게 전송한 인자 값에 추가 정보를 보낼 때 사용한다.


 HTTP 전송 방식

 GET

 요청된 URL

 https:www.google.co.kr

 HTTP 버전

 1.1

 Host

 www.google.co.kr

 Referer

 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EA%B5%AC%EA%B8%80

 User-Agent

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

 Cookie

NID=102=eoHhwtYHqeKffKHpfHLB4V9oKLb7ytEXZ5VtZZijiODOV6atPXvXzgB7-6BvupLYhpHXqMwBYyx0EpsTMxR_UTZOpEl1EKiz_DQdhsBSZOy3O4b5Qok7AcF7u4pgWIuV


HTTP Response


<웹 디버거 Fiddler로 확인한 HTTP Response - 1>

HTTP Response 메세지도 마찬가지로 3가지 섹션으로 구분된다.

:Response Line, Message Header, Message Body

Response LiIne은 Version, Status Code, Status Phrases로 구성된다.


<웹 디버거 Fiddler로 확인한 HTTP Response - 2>



HTTP 버전 : 1.0 or 1.1 주로 1.1

요청에 대한 상태 코드 : '200'이 표시되면 요청이 성공적으로 이뤄졌고 요청한 자료가 클라이언트에게 보내졌다는 것을 뜻한다.

응답에 대한 상황을 설명해 주는 문자열 : 정상적으로 페이지가 전달됐기 때문에 OK라는 값을 보내준다.

Server : 웹 서버의 소프트웨어 정보를 제공하며, 가끔 설치 되어 있는 모듈과 운영체제에 대한 정보를 포함하기도 한다.

Set-Cookie : 브라우저에게 쿠키에 대한 정보를 알려준다. 클라이언트가 서버에게 페이지 요청 시 쿠키 형태로 사용된다.

Pragma : 브라우저가 응답한 내용을 캐시에 저장되지 않게 한다.

Expries : 응답한 내용이 만기가 되면 캐시에 저장되지 않게 한다.

Content-Length : Message Body 길이를 바이트 단위로 나타낸다.


 HTTP 버전 

 1.1

 요청에 대한 상태 코드

 '200' 은 성공, 정상적으로 처리했음을 의미

 응답에 대한 상황을 설명해 주는 문자열 

 OK

 Server

 gws(Google Web Server)

 Set-Cookie

 NID=102=PKKPgu1-Hwq6xBlWqA7yagsl6isF7ted3q7Gs1IWooDTAcyBwNA59rrW5SeLONOBOGDw4PyD8FzWa5YTC4vF8k3Pp0ofxqPS9LMX-nPZ7NbMDv6g9OD6dgdQtiH-08K8; expires=Sun, 05-Nov-2017 03:56:42 GMT; path=/; domain=.google.co.kr; HttpOnly

 Pragma

 ·

 Expires

 '-1' 캐시에 저장되지 못하게 한다.

 Content-Length

 214100 



'보안서적 > 웹 해킹&보안 완벽 가이드' 카테고리의 다른 글

핵심 방어 메커니즘  (0) 2017.04.23
용어정리  (0) 2017.04.21

핵심 방어 메커니즘


- 권한 없는 사용자, 데이터와 기능에 대한 사용자 접근 처리

- 의도하지 않은 행동을 유발하는 사용자 입력 값 처리

공격자에 대한 처리

실시간 모니터링 기능을 사용한 애플리케이션 관리




사용자 접근 처리


웹 애플리케이션 통제 3가지 보안 메커니즘

인증

세션관리

접근통제


인증

: 사용자가 자기 자신에 대해 어떤 사용자라고 주장하는 사실을 확인하는 것이다.

: 로그인 프로세스가 기본적으로 사용된다.

문제점

:다른 사용자의 아이디와 비밀번호를 추측하거나, 로직에 있는 결함을 악용함으로써 인증 과정을 우회할 가능성이 있다.


세션 관리
:인가된 사용자의 세션을 효과적으로 관리하는 것이다.

:애플리케이션은 각 사용자를 위한 세션을 만들어 주거나 사용자에게 세션을 확인하게 하는 토큰을 발행한다.

:세션은 서버에 할당되어 있는 데이터 집합의 구조이다.

:토큰은 애플리케이션이 세션에 나타내는 독특한 문자열이다.

:세션 토큰을 전송하는 표준 방법은 쿠키(Cookie)이다.

문제점

토큰에 대해 매우 의존도가 높기 때문에 공격자의 입장에서는 다른 사용자에게 발행한 토큰에 대해 집중적으로 공격이 이뤄지는 경향이 있다.


# 접근 통제

:애플리케이션에서 사용자의 요청이 허가되는지 아닌지 결정을 내리고 실행하는 것이다.

:항상 강력하게 설계되고, 다양한 요소를 고려해 구현해야 한다.

:사용자에 대한 식별을 통해 적절하게 수행되어야 한다.




사용자 입력 값 처리

:사용자가 입력한 값이 안전한 상태로 처리되어야 한다는 점

:공격자가 입력한 값을 안전한 방식으로 처리하는 것을 '입력 값 검증'이라 부른다.

:'입력 값 검증'은 공격자가 악의적으로 입력한 값에 대한 필수적인 방어 요소이다.


다양한 입력 값

:사용자가 입력한 값뿐만 아니라 브라우저를 통해 전달되는 다양한 데이터 항목을 받아들이기도 한다.


입력 값 조작에 대한 처리 방법

- 위험하다고 알려진 것들은 모두 차단

유효성 검증 메커니즘 : 블랙리스트(비효율적 방법)

:블랙리스트에 매칭되는 데이터를 차단하고 그 외의 값들은 허용한다.


문제점

:블랙리스트 기반 필터는 NULL 바이트 공격에 대한 취약점이 있다.

:차단된 표현식 전에 NULL 바이트를 입력하면 필터는 입력된 값들을 프로세스하지 않기 때문에 표현식을 인식하지 않는다.


- 안전하다고 알려진 것들은 모두 수용

유효성 검증 메커니즘 : 화이트리스트(효과적인 방법)

:화이트리스트에 일치하는 데이터를 허용하고 그 이외의 값은 차단한다.


문제점

사용자 입력 값을 제어하는 문제에 대해서는 완벽한 해결책은 아니다.


불순물 제거

:불안전한 문자를 안전한 상태로 바꾸는 것


경계 검증

:악의적인 입력 값으로부터 애플리케이션을 보호하기 위한 가장 효과적인 접근 방식


다단계 검증과 정규화

:입력 값의 한 부분이라도 수정이 일어나지 않을 때까지 계속 재귀적으로 불순물 제거 작업을 수행하는 것이다.




공격자 핸들링

:공격자가 공격을 실패하게 하기 위해 구현된 방법

- 에러 핸들링

- 감사 로그 관리

- 관리자에게 경고

- 공격에 대응


에러 핸들링

:시스템 기반 메시지나 디버깅 정보를 노출시켜서는 안 된다.

:대부분 웹 개발 언어는 try-catch 구문예외 검사를 통해 에러를 다룬다.

:서버에서 처리할 수 없는 에러를 특별한 정보가 없는 임의의 에러 메시지로 설정할 수 있다.


감사 로그 관리

:침해시도에 대한 조사가 이뤄질 때 조사에 우선시되는 요소

:각 이벤트의 시간과 요청이 들어온 곳의 IP 주소, 세션 토큰, 사용자의 계정 등을 기록

- 로그인 성공, 로그인 실패, 비밀번호 변경과 같은 인증 기능과 관련된 모든 이벤트

- 시용카드 결제와 자금 이체 같은 주요 거래

- 접근 통제 메커니즘에 의해 막혀진 접근 시도

- 잘 알려진 공격 문자열을 포함하고 있는 악의적인 의도를 명확하게 표시하는 요청


관리자에게 경고

경고 메커니즘

- 하나의 IP 주소나 한 명의 사용자로부터 비정상적으로 많은 양의 요청을 받은 경우

- 하나의 은행 계좌로부터 평소와 다르게 많은 돈이 인출된 경우

- 잘 알려진 공격 문자열을 포함하는 경우

- 일반 사용자들에게 숨겨진 데이터가 수정된 경우


공격에 대응

:비정상적인 작동을 유발시키는 입력 값을 차단 -> 필터를 우회하는 기법이 있기 때문에 취약점 존재

:공격자의 행동을 무력화하기 위한 자동 대응 조치 

ex) 요청에 점차적으로 늦게 대응, 공격자의 세션 종료시키고 다음 공격으로 이어지기 전에 로그인이나 다른 단계를 수행




애플리케이션 관리

:관리란 관리자에게 사용자 계정과 역할 관리, 감시와 감사 기능에 접근, 진단 작업 수행, 애플리케이션의 기능을 설정하는 방법 등 제공하는 애플리케이션 보안 메커니즘의 주요한 부분이다.

인증 메커니즘의 약점은 공격자가 전체 애플리케이션을 위험에 빠지게 할 수 있는 관리적인 접근 획득이 가능할 수 있다.

- 다수의 애플리케이션은 관리자 기능에 효과적인 접근 제어를 수행하지 않는다.
관리자 기능은 데이터를 표현하는 사항에 대한 기능을 포함 하는데 XSS 공격은 높은 수준의 권한을 가지고 있는 사용자 세션을 위협하기도 한다.
관리자 기능신뢰되는 사용자에 의해 사용된다고 생각되기 때문에 가끔 다른 기능성 검사보다 덜 엄격한 보안 검사를 받음으로 공격자가 관리자 기능을 탈취해 전체 서버를 장악 할수도 있다.


'보안서적 > 웹 해킹&보안 완벽 가이드' 카테고리의 다른 글

웹 애플리케이션 기술 -1  (0) 2017.05.02
용어정리  (0) 2017.04.21

HTTP(hypertext transfer protocol)

:웹 서버와 사용자의 웹 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약 프로토콜이다.

:비연결지향적 프로토콜


프론트엔드(Front-End)

:웹사이트 디자인이나 버튼 기능처럼 사용자가 바로 볼 수 있는 부분이다.

:HTML, CSS 등이 대표적인 프론트엔드 기술
 

백엔드(Back-End)

:사용자가 눈으로 볼 수 없는 뒷단 기술이다.
:서버단 기술이라 불리기도 한다. 
:DB, 서버를 다루는 부분이 벡엔드 기술

SSL(Secure Socket Layer)

:인터넷에서 데이터를 안전하게 전송하기 위한 인터넷 통신 규약이다.

:인터넷 프로토콜이 보안면에서 기밀성을 유지하지 못한다는 문제를 극복하기 위해 개발되었다.
:인터넷 상거래시 요구되는 개인 정보와 크레딧카드 정보의 보안 유지에 가장 많이 사용되고 있는 프로토콜이다.

서드파티(Third Party)

:다른 회사 제품에 이용되는 소프트웨어나 주변 기기를 개발하는 회사.


인증 실패

:로그인 메커니즘상의 다양한 취약점

:쉽게 추측이가능한 비밀번호 허용하는 취약점

:무차별 대입 공격을 허용하는 취약점

:인증 우회를 허용하는 취약점

접근 통제 실패

:민감한 데이터나 기능에 대해 불법적인 사용자의 접근을 제대로 통제하지 못하는것

:서버 내의 다른 사용자의 민감한 데이터를 열람하는 취약점
:서버 관리자용 업무를 수행할 수 있는 권한을 획득하는 취약점


SQL 인젝션(Structured Query Language Injection)
:SQL 입력문에 대한 필터링이 없을 경우, 공격자가 SQL문으로 해석될 수 있는 입력을 시도하여 DB에 접근 할 수 있는 보안 취약점

:DB에서 원하는 임의의 데이터를 가져오게 하는 취약점
:DB 서버에 원하는 명령을 수행하는 취약점


XSS(Cross Site Scripting)

:공격자가 대상 사이트의 다른 사용자로 도용 가능하게 하거나, 웹사이트에 방문하는 사용자들에게 악의적인 공격을 수행가능하게 하는 취약점
:공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것이다.


정보 누출

:애플리케이션이 내부에서 발생하는 에러 처리의 결함이나, 다른 비정상적인 기능으로 인해 민감한 정보를 공격자에게 누출함으로써 공격자가 공격을 위한 정보를 수집하는데 도움을 주는 취약점


CSRF(Cross Site Request Forgery)

:불특정 다수를 대상으로, 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 하게 만드는 공격이다.

프로세스(Process)

:컴퓨터 내에서 실행중인 프로그램
:여러 분야에서 과정 또는 처리라는 뜻으로 사용


클라이언트(Client)

:사용자가 서버에 접속했을 때 클라이언트는 사용자 자신을 말한다.

:사용자의 컴퓨터를 가리키기도 한다.

:컴퓨터에서 동작하고 있는 프로그램이 될 수도 있다.


쿠키(Cookie)

:어떠한 웹 사이트에 방문할 때 생성되는 정보를 담은 임시 파일로 크기는 4KB 이하로 작다.

:인터넷 사용자의 정보를 사용자의 컴퓨터에 저장한다.

Session Cookie 

:웹 사이트를 탐색하는 동안, 사용자의 컴퓨터 메모리에만 존재하는 쿠키 

:웹 브라우저가 종료되거나 탭이 닫힐 때 쿠키 삭제된다.

Persistent Cookie

:사용자 컴퓨터에 파일로 저장되는 쿠키

:유효 기간이 있으며, 웹 사이트가 해당 사용자에 대한 정보를 추적하거나 기억할 수 있도록 한다.

Secure Cookie

:secure 속성이 사용되는 쿠키

:HTTPS를 통해 암호화 되어 서버로 전송된다.
HttpOnly Cookie

:HttpOnly 속성이 사용되는 쿠키

:HTTP or HTTPS를 통한 요청을 전송할 때만 사용된다.
Third-Party Cookie

:도메인 이외의 도메인에서 만들어진 쿠키

:웹 페이지 내의 광고를 통해 생성된다.


세션(Session)

:통신에서는 사용자 간 또는 컴퓨터 간의 활성화된 연결

:프로그램 사용과 관련해서는 한 응용프로그램이 시작해서 종료할 때까지의 시간

:사용자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹서버 접속을 종료하는 기간을 말하며, 

 웹서버에 사용자의 정보를 저장한다.


토큰(Token)

:데이터 통신에서는 송신권(송신 허가증)

:문자열에서 구분할 수 있는 단위

:애플리케이션이 세션에 나타내는 독특한 문자열


SMTP(Simple Mail Transfer Protocol)

:인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약이다.


SOAP(Simple Object Access Protocol)

:웹서비스를 실제로 이용하기 위한 객체 간의 통신 규약이다.

:인터넷을 통하여 웹서비스가 통신할 수 있게 하는 역할을 담당하는 기술


URL(Uniform Resource Locator)

:자원 위치 지정자

:자원을 검색할 때 사용한다.

URL 형식

프로토콜://호스트명[:포트 번호]/[경로/]파일명[?param=값]

http://terms.naver.com/entry.nhn?docId=3571733&cid=59088&categoryId=59096


REST(Representational State Transfer)

:분산 시스템에서 사용하는 아키텍처 스타일이며, 요청과 응답 내용에 시스템 자원의 현재 상태를 나타낸다.

:WWW, HTTP 프로토콜, URL 형식 등에서 사용하는 핵심 기술은 REST 아키텍처 스타일과 비슷하다.

'보안서적 > 웹 해킹&보안 완벽 가이드' 카테고리의 다른 글

웹 애플리케이션 기술 -1  (0) 2017.05.02
핵심 방어 메커니즘  (0) 2017.04.23

+ Recent posts