TLS Hanshake(1.0, 1.2) overview



 
TLS 를 사용할 경우 매 세션 성립 시 마다 인증서를 주고받고, 확인하면 세션 성립까지 시간이 오래 걸리기 때문에, 최초 세션 성립을 위해서만 full handshake를 수행하고 다음부터는 일부 과정을 생략한 세션 성립(abbreviated handshake) 를 수행한다. 아래는 TLS 프로토콜 및 세션 성립을 위한 절차(full handshake, abbreviated handshake)를 보고자 한다.

아래는 RFC5246 문서의 내용 중 일부인 TLS handshake 과정을 번역한 내용이다.

TLS 는 handshake protocol에 의해 성사되며, 요약을하면 아래와 같다.
클라이언트가 ClientHello 메시지를 보내면 서버는 ServerHello 메시지로 반드시 응답을 줘야하며, 그렇지 않을 경우 치명적인 에러가 발생하고 세션 연결이 실패할 것이다.
ClientHello 와 ServerHello는 클라이언트와 서버 간 향상된 보안기능(security enhancement capabilities)을 설정하기 위해서 사용된다. ClientHello 와 ServerHello는 프로토콜 버전, 세션 ID, Cipher Suite, 압축 방법의 속성들을 설정한다. 추가적으로, ClientHello.random, ServerHello.random 의 두 랜덤 값을 생성하고 교환한다.

키 교환을 위해서는 다음의 4가지 메시지를 사용한다.

(서버)Certificate, ServerKeyExchange, (클라이언트)Certificate, ClientKeyExchange.

새로운 키 교환 방법은 위 4가지 메시지의 형식을 지정하여 클라이언트와 서버가 공유 비밀(shared secret)에 합의 할 수 있도록 메시지의 사용을 정의하여 만들 수 있다. 이 비밀은 반드시 길어야 한다.(현재 정의된 키 교환 방법은 46 bytes 이상의 비밀(secrets)을 교환한다.)

클라이언트와 서버 간 주고받는 Hello 메시지들 다음으로, 인증을 해야하는 경우 서버는 Certificate 메시지에 인증서를 보낼 것이다. 하지만 서버에 인증서가 없거나, 인증서가 사인을 위한 인증서인 경우 ServerKeyExchange 메시지를 전달할 것 이다. 서버가 인증된 경우, 선택된 cipher suite가 맞다면 클라이언트에게 인증서를 요구 할 것이다. 다음으로, 서버는 handshake의 hello-message 단계가 완료되었음을 표시하는 ServerHelloDone 메시지를 보내고 클라이언트의 응답을 기다린다. 서버가 CertificateRequest 메시지를 보냈다면 client는 반드시 Certificate 메시지를 보내야 한다. 그 다음에는 ClientKeyExchange 메시지를 보내며, 메시지의 내용은 ClientHello와 ServerHello 사이에 선택된 공개 키 알고리즘에 따라 달라진다. 만약 클라이언트가 서명능력(?)과 함께 인증서를 보낼 경우,(If the client has sent a certificate with signing ability,) 디지털설명 CertificateVerity 메시지가 명시적으로 인증서의 개인 키 소유를 확인하기 위해 전송됩니다.

이 시점에서, 클라이언트가 ChangeCipherSpec 메시지를 전송하고, 전송한 암호사양(Cipher Spec)을 현재의 암호 사양(Cipher Spec)에 복사한다. 이후, 새로운 알고리즘, 키 값, 그리고 비밀들(secrects) 기반의 Finished 메시지를 즉시 보낸다. 서버는 응답으로 ChangeCipherSpec 메시지를 보내고, 수신한 암호 사양(Cipher Spec)을 자신의 현재 암호 사양(Cipher Spec)으로 이동 시킨 후 Finished 메시지를 새로운 암호 사양(Cipher Spec)에 맞춰 보낸다. 여기서 handshake는 완료되고, 클라이언트와 서버는 application layer의 데이터 교환을 시작한다(아래 flow chart 참조). application data(application layer의 데이터)는 첫번째 handshake 완료 이전에는 절대 보내서는 안된다.(TLS_NULL_WITH_NULL_NULL 이외의 Cipher Suite가 설정되기 전에는 보내선 안된다.)

      Client                                               Server

      ClientHello                  -------->
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   <--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     -------->
                                               [ChangeCipherSpec]
                                   <--------             Finished
      Application Data             <------->     Application Data

             Figure 1.  Message flow for a full handshake

'*' 은 옵션 또는 상황에 따른 메시지를 나타낸 것으로서, 매번 전달(송신)하지는 않는다.

Note: 파이프라인의 막힘을 피하기 위해 ChangeCipherSpec 는 TLS 프로토콜 컨텐츠 타입과 독립적이며, 실제적으로 TLS 세션성립 메시지가 아니다.


서버와 클라이언트가 이전 세션을 재개 또는 존재하는 세션을 복제하기 위해서(새로운 보안 파라미터들을 협상하는 대신) 아래와 같이 사용한다.
클라이언트는 세션 재개를 위해서 현재 세션의 Session ID를 이용하여 ClientHello 메시지를 보낸다. 서버는 세션 캐쉬를 체크하여 Session ID 가 존재하는지 확인하고, 존재하는 경우 지정된 세션 상태에 맞춰 연결을 재성립하기 위해 동일한 Session ID로 ServerHello 를 보낸다. 클라이언트와 서버 양측 모두 반드시 ChangeCipherSpec 메시지를 보내고 바로 Finished 메시지를 진행해야 한다. 세션 재성립이 완료되면, 클라이언트와 서버는 application layer의 데이터교환을 시작한다(아래 flow chart 참조). 만약 Session ID 가 존재하지 않으면 서버는 새로운 Session ID 를 만들고, TLS 클라이언트와 서버는 full handshake를 수행해야 한다.

      Client                                                Server

      ClientHello                   -------->
                                                       ServerHello
                                                [ChangeCipherSpec]
                                    <--------             Finished
      [ChangeCipherSpec]
      Finished                      -------->
      Application Data              <------->     Application Data

          Figure 2.  Message flow for an abbreviated handshake


각 메시지의 내용과 의미는 다음 섹션에서 이어진다.(rfc 5246참조)

   

[아래는 원문]

몬스터 길들이기 팀 대전 TIP!

현재 1%와 2%를 왔다갔다하는 유저에요.

제 조합은 아래에서 얘기하고 우선은 제가 경험한 5성 이하 최고의 조합을 말해드리고 싶어요.

사실,,, 제가 4성 3마리라서 6성들하고 게임을 몇 번 못해봤어요... ㅠㅜ




아무튼!!!

제 경험상 최고의 조합은 방어형 3 마리로 구성된 팀으로, 산개 또는 공격+지원 조합인것 같아요.

캐릭으로만 보면 아옭킹 또는 슬라킹그리피아스(독수리 닮은 애), 원거리 캐릭(아무거나) 인듯해요.



슬라킹


우선 슬라킹은 아래 그림처럼 피가 장난이 아니에요 -_-

거기다가 방어력 증가도 가능하고 근거리로 120% 공격 스킬도 두개나 가지고 있어요.

그래서 팀 대전에서 붙으면 피도 안줄고 공격력도 의외로(?) 좋다보니 힘들더라고요 ㅠ

한 번 만나봤는데 졌어요,,, 그것도 무참히,,,,



아옭킹


아옭킹도 슬라킹과 마찬가지로 피가 장난이 아니에요 -_-

슬라킹처럼 방어력 증가도 가능하고, 심지어 체력 회복까지 가능해요;;;

아옭킹이 있는 팀하고 붙은 적이 한 번 있는데, 두 마리 순식간에 죽이고 1:3으로 싸웠는데 졌어요 -_-;;

물론 그때는 강화율이 낮긴 했지만서도 (대장못방망(3강), 프랭크(1강), 붉은 서슬(무강))

충격이 컸어요. 방어력 높이고 체력 회복하면서 공격하니까 붉은 서슬부터 죽고, 프랭크, 대장못방망 순으로 죽더라고요;;

아무튼 제 경험상 아옭킹은 정말 미친듯이 때려도 4성의 공격력은 가볍게 커버를 하더라고요.

처음으로 저를 좌절하게 만든 캐릭이에요



그리피아스


그리피아스는 공격력도 세고 몸빵도 되고 스킬까지 되는 캐릭이기 때문에 팀 대전에 딱 맞는 캐릭인것 같아요. 

특히 상대방 공격력을 낮추는 스킬도 있기 때문에 때려도 피가 줄어들지 않더라고요  ㅠ

가지고 싶어라 ㅜㅡ

단적인 예로, 그리피아스 있는 팀하고 5번 정도 붙은것 같은데 4번 지고, 1번 2분 30초 동안 싸워서 이겼네요 ㅎㅎ

그리피아스 vs 대장못방망, 프랭크(1:2)로 2분 정도 싸운것 같아요 ㅎㅎㅎ

이겼을때 상대팀 조합은 그리피아스(5성,Lv.29), 대장방망이(3성), 베르나(4성) 였어요.

그리피아스가 Lv.30 이었다면 졌을지도.... ㅜㅠ


지금 보니 제가 말한 슬라킹, 아옭킹, 그리피아스 세 마리의 피랑 공격력 방어력이 비슷하네요.;;

어쩐지 계속 지더라...





이쯤에서 저희 경험적 분석을 마치고 제 팀의 조합을 보여드릴게요.

저는 대장못방망(4성 5강), 프랭크(4성 4강), 붉은 서슬(4성 3강)을 써요.



이 조합의 최고 장점은 대장못방망과 프랭크에요.

대장못방망

대장못방망은 범위공격 케릭이기 때문에 상대방과 근접전을 하면 동시에 다 때려버려요. ㅋㅋㅋ

거기다 치명타도 잘터지는 케릭이고, 아이템도 치명타 +2를 착용 시켜놨더니 무한대전, 필드, 팀 대전에서 아주 유용해요 

혹시 대장못방망을 가지고 계시다면 꼭 치명타 + @ 아이템을 착용시키세요 ㅎㅎㅎ

프랭크

프랭크는 기절 스킬이 있는데, 이게 대장못방망과 아주 잘 맞아 떨어지더라고요.

프랭크가 기절시키고 대장못방망이 치명타 두 세번 날리면 상대방 체력 최소 5%씩은 쭉쭉 빠지는거 같아요.


붉은 서슬

사실 붉은 서슬은 다른 방어형 케릭이 나오면 바꾸려고 생각 중이에요.

공격력이 좋기는 한데,,, 체력이 너무 약해서 매일 처음으로 죽더라고요;;

물론, 초반에 공격속도 향상 스킬 시전하고 미친듯이 상대방을 때리고 죽기는 하지만 ㅋㅋㅋ
(이때 상대방 피가 쭉쭉 빠짐)



근데 문제는 붉은 서슬은 우리 팀에 잘 안맞는다는 거에요.

붉은 서슬과 대장못방망이는 팀 대전에서는 잘 안맞아요.;;


원인 
1. 아시는것처럼 무한대전은 쿨타임이 끝나면 자동으로 스킬을 사용하고, 

2. 대장못방망은 범위 공격을 쓰기 때문에 몰려있는게 좋아요.

3. 헌데, 붉은 서슬의 스킬은 회오리 공격(?)이고 이걸 쓰면 순식간에 저~ 멀리까지 가요.


결과
1. 문제는 여기부터인데, 붉은 서슬한테 맞은 케릭은 꼭 붉은 서슬을 쫓아가더라고요.

2. 대장못방망은 쿨타임이 끝나서 그때 스킬을 시전하지만 상대 케릭은 이미 자리를 옮긴지 오래 ㅜㅠ

3. 그래서 헛방맹이질 할 때가 많아요 ㅜ

그것만 다 들어가도 훨씬 빨리 끝날텐데;;;



그래도 보통 12~13초면 승리하는 팀 조합이니 꽤 괜찮은것 같기도 해요 ㅎㅎ

얼른 5성을 뽑아야 할텐데 쉽지 않네요 ㅠㅜ

아무튼 저의 TIP 아닌 TIP 은 여기까지에요.!

모두 몬길하세요.! ^^




2013년 9월 2일자 몬스터 길들이기 퀴즈 정답!!!

2013년 9월 2일자 몬스터 길들이기 퀴즈 정답!!!

knight

힌트는 절망의 기사와 죽음의 기사 공통점은? 이네요 ㅎㅎ
오늘도 즐거운 몬길~

*혹시 틀리다고 나오면 다시 해보세요~ 서버 오류로 틀렸다고 나올때가 있네요 ㅋㅋ

그나저나 저는 오늘 팀 대전 1% 들어갔습니다 ㅋㅋㅋ 

근데 언제 또 떨어질지 모르겠네요 ㅋㅋㅋ 

꾸준히 안하면 바로바로 떨어지니 이거 원 ㅋㅋㅋ

몬스터 길들이기 팀 대전!!! ㅋㅋㅋ

몬스터 길들이기 팀 대전!!! ㅋㅋㅋ



이건 어제 30연승 했을때 스샷!
40연승때 다시 찍으려고 했는데 39연승하고 40번째에서 패배...
지금은 3000점 찍었는데, 저 이후로 20연승 이상 못했다는게 함정...

참고로 지금 나는 대장못방망(4성), 프랭크(4성), 붉은 서슬(4성) 조합인데, 꽤 괜찮은 듯 하다.
대장못방망이이 범위공격에 치명타가 꽤 잘나오고, 프랭크는 애들 기절시키거나 가끔 범위로 치명타 날리고,
붉은 서슬은 공격력이 워낙 좋으니 근접전 거의 최강인듯.
근접전에서는 1 번인가 빼고 모두 승리한듯. 

단, 웨이넬 강화 높은애랑 붙으면 거의 패배... 
지금까지 118 게임하면서 9패 했는데, 웨이넬 낀 팀이 5~6 팀 되는듯..
웨이넬이 4성 중에서는 최강인듯 하다.

근데 경험상 최강의 조합은 원거리 2마리 이상 조합 인듯.
아무리 치명타를 많이 날려도 각자 떨어져 있으니 왔다갔다하다 피만 죽죽 -_-,,,
흐미,,,
암튼 지금 3% 인데 얼른해서 1% 들어가도록 노력하자!!! 아자 ㅋㅋㅋ

2013년 9월 1일자 몬스터 길들이기 퀴즈 정답!!!

2013년 9월 1일자 몬스터 길들이기 퀴즈 정답!!!

taming!!

그나저나 팀 대전 39연승에서 끝나서 아쉽다 ㅠㅜ 40연승에서 스샷 찍을라했는데 ㅜㅠㅡ

아쉽지만 30연승까지만 스샷 촬영 ㅋㅋㅋ

가능할지 모르겠지만 1% 안에 들었음 좋겠다 ㅎㅎ