[넷텐션] KGC 2010 공개 영상물입니다

by nettadmin / 2010. 09. 16. [16:18]

인터뷰에 응해주신 분들께 다시 한번 감사를 드립니다.

KGC2010 기간동안 무한출연 해주셨습니다. ^^;

3. 넷텐션 뉴스

게임엔진 회사의 사명 (덤: 자체 게임개발을 요새 안하는 이유)

by nettadmin / 2010. 09. 07. [01:56]

주변에서 이런 말을 들었습니다.

"탄탄한 게임엔진 개발사니, 게임 만들어 대박내셔야죠? 게임 금방 만드시죠?"

 

맞습니다. 게임을 금방 만드는 것은 사실입니다. 문제는 재미있는 게임을 만드는 것이 어렵다는 데 있죠.

 

열심히 만들었는데 정작 재미가 부족하거나, 재미가 충족되어도 유저들의 수요를 맞추지 못해서 힘들어하는 게임 개발사들이 많습니다. 힘들게 만들어서 오픈베타까지 했는데도 저조한 동접에 절망적인 상황이 되는 프로젝트나 회사도 더러 있습니다.

 

마침, 저희도 올해 상반기에 간단한 온라인 게임을 하나 만들어봤습니다. 프라우드넷의 차기작 버전을 위한 검증용 게임이기도 합니다. 엔진 유지보수,기술지원,새 엔진 기능 개발 기간을 제외한다면 데모 순개발량은 3명 * 1달입니다. 프로토타입 수준이지만, 게임서버엔진 개발사답게 서버&네트웍쪽은 상용화 수준으로 스케일아웃했고요. 이브온라인 같은 류의 게임이지만 조작이 훨씬 캐주얼한 게임이었습니다.

 

엔진 검증은 잘 했지만, 불행하게도 게임 자체는 재미가 없었습니다. 컨텐츠 부족이네, 지형지물이 부족한 게임이라 그렇네, 이유는 다양합니다. 어쨌거나 게임은 재미가 없었습니다. 

 

결론은 간단히 났습니다. "나중에 엔진 샘플로 넣읍시다..." 그렇습니다. 조만간 우주전쟁 MMO 슈팅게임이 엔진 샘플로 들어갈지도 모릅니다. -_-;;;;;;;;;;;

 

그렇습니다. 저희는 게임을 개발하면 프로그램쪽 만큼은 금방 만들어냅니다. 그러지만 재미있는 게임을 집중해서 만들 정도가 되려면 좀 더 수련해야 하는 입장입니다. 그리고 지금은 게임엔진 사용자(즉 게임회사)를 위해 집중력을 잃지 말아야 할 시기입니다. 그래서 아직 게임을 안만들고 있습니다.

 

그런데, 이것은 확실합니다. "많은 게임을 만들어보고 버려봐도 재미있는 게임을 만들 수 있다."

 

재미있는 캐주얼 게임 개발사로 유명한 PopCap Games는 단 1개의 재미있는 게임은 50개 게임 출시의 가치를 가지며 재미가 부족하면 언제든지 거의 다 만든 게임이라도 버릴(KILL) 준비가 되어있다고[1] 말하는 회사입니다. 

 

게임 개발을 많이 해보고 많이 평을 들어봐야 합니다. 이러려면 게임 개발의 주기가 짧아야 합니다. 그리고 만든 게임이 별로다 싶으면 상한선 없이 롤백할 수 있는 용기가 있어야 합니다. 단, 개발팀은 그대로 유지해야 하고요.

 

여기에 바로 게임엔진의 효용가치 #1이 있습니다. 좋은 게임엔진의 선택은 개발 주기를 줄입니다. 주기를 줄인만큼, 만든 게임이 재미없을 때 때 패닉을 더 쉽게 극복할 수 있습니다.

 

혁신적인 게임을 개발하는 요령 중 하나는 혁신적인 기능을 제공하는 엔진을 개발하거나 도입하는 것입니다. 혁신적인 기능을 가졌지만 아직 그 엔진을 사용한 게임이 아직 없거나 매우 적을 때가 적절한 시기입니다. 그 엔진이 가진 기능을 보면서 뭔가 기발한 게임기획이 나올 수 있다면 그것이 게임엔진의 효용가치 #2 입니다. 즉 게임엔진의 두번째 사명은 게임 시장에서 새 트렌드를 창발할 수 있는 가능성을 주는 데 있습니다.

 

예를 들죠. 프라우드넷은 MMO게임에서도 P2P를 혼용해서 대량 트래픽을 서버로부터 분리하는 기술을 갖추었습니다. (관련 특허 출원하는데 천몇백만원 깨졌습니다. -_-;) 최근 이 기능 덕택에, 랙에 민감하고 트래픽이 많은 온라인 게임(가령 MMO 액션 게임이나 MMOFPS 게임) 개발을 위해 프라우드넷이 라이선싱되고 있습니다. 몇년 지나면 프라우드넷 쓰는 MMO 게임을 주변에서 보실 수 있을 것 같아요. ㅎㅎㅎㅎㅎ

 

정리하자면,

  • 요새 게임을 안만드는 이유는 재미있는 게임 개발보다는, 게임회사가 재미있는 게임을 개발할 수 있게 해주는 데 집중하겠다는 것이고요, 
  • 게임 엔진 회사의 사명은 게임 개발자에게 (갈아엎는) 용기와 (신장르 개척의) 기회를 주는 데 있습니다.
물론, 저희도 언젠가는 게임을 또 만들겠죠. 매달 하나씩 만들어보고 아니다 싶으면 엔진 데모행, 잘 되면 그걸로 고고고~...퍽!
 
-----------------------
 
[1] "We are willing to kill a game at any stage if we don't think it's working out - even ones we've been working on for months." PopCap Games는 한 타이틀 제작에 몇 달이 소요됩니다.

4. 개발 이야기

넷텐션이 2010 KGC 10주년~ 참가합니다. 파티도 합니다~

by nettadmin / 2010. 08. 27. [18:18]


 

 

 

 넷텐션이 올해도 KGC 에 참가합니다.

 

 부스도 운영하고 배현직 대표님은 강연도 합니다.(강연 내용은 게임엔진의 API 디자인 잘 하기입니다)

 

 평범하게 참가할 줄 알았으나~~~~~

 

 색다른 행사를 준비했습니다.  넷텐션이 주최하는~ 개발자 네트워크 파티 (Proud Network Party 를 진행합니다~

  

 비용은~~~~ NO, 0원..입니다. 넷텐션이 쏩니다.

 물론 Cool 하게 무한정 지원할 수도 있겠으나, 테이블당 안주 두개에 생맥주 무제한?  상황봐서 지원됩니다.

 

 참석은 초청권을 가지신분이 일행중에 단 한명이라도 있으셔야 입장가능합니다~~

 

 

 

 

 

3. 넷텐션 뉴스

게임서버 엔진 홀펀칭 Test머신 정리

by nettadmin / 2010. 08. 12. [11:18]

오늘의 이야기는.

프라우드넷 관련 글들이 올라오게 되면 항상 나오게 되는 주인공!!

바로 요놈이다..

 

수많은 공유기를 P2P연결하여 각각 한 개씩 모든 Test케이스 들을 거치게 되며, 나오게 되는 생성되는 Test 케이스 들은 약 천가지 정도.. 걸리는 시간만 해도 무려 서너 시간은 가뿐히 걸린다. 그렇게 때문에 넷텐션을 대표 하는 상징 중 한 녀석이 되어 버리고 만 요놈..

 

그러나 이 녀석을 자세히 들여다 보면 매우 매우 악당이 아닐 수 없다.

힌트 하나를 주자면, 공유기 하나에 세줄의 선이 붙는다. 외부에서 들어오는 랜선과 컴퓨터로 연결되는 랜선 그리고 전선이다. 그리고 요 뒤에 사내의 모든 선이 모두 모여드는데…

 

선들로 인해 보이지 않는 바닥..

먼지 검은 먼지 쌓인 다이..

공유기들은 열심히 쌓아 놓으면 우르르 무너지기 일수..

 

 

 

아가야 저긴 이런 곳이란다..

 

모처럼 맡겨진 새 임무!!

냥이의 임무 Test컴퓨터들의 버츄얼 머신들을 모델들의 정보에 마추어 깔끔히 다시 정리하고 세팅하라.

 

마침 몰래 속으로 벼루어 왔던 머신들의 정리. 요런 때 하지 않으면 언제 하랴!!

“사장님 시간 좀 걸리드라도 제가 정리하게 허락 해주세요..”

 

 

 

 

사장님의 흔쾌한 승락 하에 시작한 뒷선들 정리!!!!

 

복잡하고 지저분한 선들을 한대 묶고, 공유기 들을 다시 정리하고, 하나하나 견찰지를 붙인다.

꽉 짠 걸레로 시커먼 먼지 청소 마무리 까지.

 

요렇게 테스트 컴퓨터 별로 묶어주고..

 

 

 

 

 

이젠 바닥도 보인다.. 사진으로는 여전히 복잡해 보이지만 사실은 엄청 깨끗해 진 모습.

저 지독한 양의 공유기 코드들. 다이 밑으로 밀어 넣어도 많아서 삐져나온 모습들..

 

 

 

 

 오오 모니터에 후광이 이 깔끔한 모습 ㅜ_ㅠ

 

 

요기도 반짝..

 

 

 

 

 

 

 

전체적으로 깔끔해진 모습.. 그러나 사진으로 보면 분명 ‘모야 똑같자나’ 하고 말할지 모른다.

그러나 넷텐션에서는 적어도 몇일은 깔끔해진 느낌에 모두 싱글벙글 할 수 있었다.

 

다음은 장비 설정 공유기 하나당 하나 이상의 버추얼 머신이 돌아간다. 저 머신을 위하여 넷텐션의 컴퓨터들은 항상 시중에 가장 많은 랜카드를 보유한 메인보드라는 전제가 붙어 있다. 더불어 USB 랜카드도 있는건 첨봤다..

 

 

이로서 모든 공유기를 테스트 머신 별로 별로 엑셀 파일로 만들어 정리한 후. 버츄얼 머신 제설치 밑 모든공유기들의 이름 확인과 정리, 실수할 수 있는 모든 세팅 명세를 상세화까지 깔끔하게 새 단장을 마치 수 있었다.

삽질도 많고 탈도 많았지만 뿌듯뿌듯!!

 

정리하게 되면서 들을 수 있었던 사장님의 공유기 수집이야기들..

요 이야기들이 은근히 재미있다. 동남아시아 까지 가서 현지 상인조차 “아니 그걸 왜 사요?” 하며 이상한 눈초리로 멀뚱히 처다 보게 끔 했을 정도의 구닥다리 공유기 까지!

최악의 네트워크를 상황을 만들어 통과 시키기 위해 했던 노력들.. 그리고 최대한 많은 랜선을 끼울 수 있게 하기 위한 컴퓨터 구입 노하우 등등..

 

뭐.. 한마디로 축약하자면 여기 테스트기 들은 고물 공유기 상이자 여기 공유기들은 안사는게 최고라는 이야기가 되지만.. ㅋㅋ

무론 대다수 구하기도 힘들다.

 

이야기가 너무 길면 루즈해 지는 법!

요 이야기 들은 다음 이야기에서 서서히 풀어 나가려 한다.

3. 넷텐션 뉴스

회사 홈페이지 리뉴얼

by nettadmin / 2010. 07. 21. [00:30]

회사 홈페이지 리뉴얼했습니다.

http://www.nettention.co.kr 

4. 개발 이야기

프라우드넷 간단 소개 슬라이드

by nettadmin / 2010. 06. 14. [15:34]

프라우드넷 간단 소개 프리젠테이션 슬라이드입니다.

4. 개발 이야기

닥.서.팩!!!

by nettadmin / 2010. 05. 25. [18:49]

오늘 기술지원 이슈를 하나 받았습니다.

 

매우 이상한 이슈 이던군요... 어떤 문제인고 하니..

 

vs2005 Release 빌드 Server에서 Client가 접속이 끊겼을때의 이벤트가 나오지 않는다는 이슈 였습니다.

 

저는 생각하기를...'아닌데..테스트를 많이 해봤는데..'라고 생각하며 다시 테스트를 했습니다.

 

그런데, 아니나 다를까 이벤트가 잘오더군요...쩝..

 

그래서 엔진 패키징 하는 컴퓨터에 접근하여 문제가 생기는 버젼을 빌드하여 테스트 해봤더니...

 

'헉...이벤트 타이머가 작동을 안하자나....jQuery1520967723500682041_1326957222827?'

 

이벤트 타이머가 작동을 안하면...모든 이벤트와 처리등이 죽는등의 크리티컬한 문제 였습니다.

 

그래서 이벤트를 추적...1개 1개...용의자를 좁혀가던중...

 

'double연산이 이상하게 나오네??? NaN??..헐 나눗셈에서 분모에 0이 들어갔나 보군..'

이라고 생각을...

 

했는데!! 글쎄 모든 값은 정상인데..꼭 그부분에서만 연산 결과 값이 이상하게 나오던군요..

 

'이건 뭥미...?^^;'하고.. asm을 보니 캐스팅부분이 이상하게 나오던 부분이 있더군요...

 

결국 컴파일러 버그...^^; '근데 내컴에선 왜 잘되지? 로직은 똑같은데...'라는 생각이 번쩍!!

 

하고 드는 순간...버젼을 체크해보니...아니나 다를까 service pack1이 안깔려 있더군요...ㅜ,.ㅜ

 

결론은 닥.치.고. 서.비.스.팩.깔.아!!!

4. 개발 이야기

넷텐션 기업부설연구소 인정서 획득~(프라우드넷)

by nettadmin / 2010. 05. 13. [14:35]

 

지난 3월 벤처기업인증에 이어 5월7일자로 기술연구소 인정을 받았습니다.  ^^;

ProudNet을 사용하거나 하실 프로젝트에 좀 더 보탬이 되는 연구개발 열심히 하겠습니다.  축하해주세요~

 

 

3. 넷텐션 뉴스

게임엔진과 컨텐츠의 차이

by nettadmin / 2010. 05. 10. [10:41]

저번 냥이 술자리 껀의 뒷 이야기를 살살 풀어보려 한다.

바빠서 너무 오랜만에 글을 올려 본다..

 

먼저 엔진과 컨텐츠의 차이에 대하여 이야기 해보고 싶다.

아는 사람들은 왜 저런 뻔한 소리를 하고 그러냐고 하겠지만 의외로 모르는 사람이 더 많다.

하물며 개발자 중에도 프로그래머 아니면 모르는 사람이 있는데 일반인이야 오죽할까..

 

엔진하면 무엇이 떠오를까? Engine!! (기관!!)

흔히 자동차 엔진을 많이 생각하리라 생각된다.

냥이 로봇에도 엔진…?!

 

기계들마다 엔진이 다 들어가는데 프로그램 소스에도 엔진이 들어갈 수 있지 않을까? 꼭 물리적 개념으로 생각하지 말아보자.

 

크라이 엔진, 언리얼 엔진 이라고 하면 일반 유저도 다 안다.

3D 엔진!

모르면 간첩내지 게임을 하지 않는 사람, 나이 많으신 분, 너무 어린애, 매우 바쁜 삶으로 잠깐씩만 게임으로 시간 때우는 사람......

음.. 은근히 늘어놓으려니 많다. 괜한 짓 했다..

 

이제 이야기를 조금 확장해 보자.

3D에는 엔진이 있다. 흔히 거 그래픽 구리네 돈 좀 더 쓰지 하는 말을 하곤 한다.

그렇다면 서버 발로 만들었냐 하는 말들이 게시판에 오르는 건 어떻게 생각하는 가? (개발자는 정말로 손으로 만들었다며 아니라고 운다.. ㅠ_ㅜ)

응?

 

유저가 보지 못하는 서버와 통신을 위한 엔진 있을 것 같아지지 않는가? 그냥 단순히 Send Recv 이걸로만 게임 다 만들 수 있을까?

서버와 클라이언트 간에 많은 데이터가 오가면서 많은 연산이 필요하다. 클라이언트는 결과값을 보여주는 역할이며, 모든 중요연산은 서버가 다 한다.

그렇다면 모든 것은 통신 데이터의 신뢰성과 안전성 있는 하위 개발의 바탕부터 깔려주어야 작업이 가능해 진다는 말이 된다.

 

물론 3D엔진과 서버엔진이 빵빵 하다고 다는 아니다. 어떻게 쓰느냐가 또한 아주 중요한 문제가 되며 잘 못쓰게 되면 발제(수제의 반대) 서버가 나오기도 한다.

 

 

 

보검을 들고 주먹과 동등하면 암울..

 

그런고로 3D엔진과 통신엔진이 존재하고 이것을 이용하여 기능들을 구현하는 부분을 컨텐츠라 한다.

 

 

‘엔진이 왜 필요하고 중요할까’ 하고 심도 있게 생각해 본 사람이 과연 얼마나 될까?

(개발자 뺴고..-_-;;)

 

알다시피 유명하고 비싼 엔진 쓰면, 거시기한 말로 "퀄리티 쩐다."

그럼 안쓰면 안쩌나?

꼭 그렇지 않다!!

 

프로그래머들이란 자신의 기술력에 자부심을 갖고 있거나 갖을 만큼 실력을 키우고 싶어 하는 존재 들이다. 반대로 개발능력이 되는 사람도 상당히 있다는 소리.

실력 되면 만들 수 있다. 하지만 그래도 사 쓴다.

 

왤까?!?!

 

사장님 왈

"저도 게임 만들 때 엔진 직접 다 만들었죠. 속된 말로 ‘씩X 엔진 만들다 토나오겠네’가 입에서 튀어나오죠 그게 엔진 만들 줄 알아도 사는 이유 중 하나랍니다..."

 

 

 

워워 릴렉스..

 

엔진 무엇이 편해서 쓰는 걸까?

 

만들 때에는 신경 쓸 것이 별의 별게 많다. 쓰기도 편해야 한다.

엔진 하나 만드는데 얼마의 시간과 사람이 필요할까?

1. 최소 5년 이상의 경력자 1~2명 이상 필요.

2. 그 프로그래머가 전에 다니던 회사서 만든 엔진은 그 회사의 재산이다.

3. 개발은 1년은 잡아야 안전성이 높다.

4. 테스트 머신 100마리 200마리 늘려가며 테스트하다 뭔가 이상하면 다시 문제 해결하고 다시 테스트.

5. 아니면 그냥 그 연봉 값과 시간, 개발진들의 스트레스로 엔진을 산다..(잘 만들어진 엔진의 사용은 시간과 돈에 있어 상당히 큰 절약의 수단이 된다.)

 

그리고 나서 만약 엔진 쪽에 에러가 났다. 시급히 잡아야 한다. 근데 다른 일도 너무 많다.

1. 직접 만들고 죽자 살자 미친 듯이 고치자. 까짓 거 없는 시간은 한 달이고 일년이고 잠 안자고 개인시간 다 버리면 되지

   뭐. 그래도 안되면 사람도 더 써!!

2. 걍 사쓰고 에러 났다고 빨랑 고치라고 통보만 보내면 빠른 시일 내에 알아서 해준다. 추가 인력도 안 들고 내 일에만 집

   중하면 된다. (스트레스 감소 최대화)

 

 

 

안전성에 대한 증명사례가 필요하다

1.     미친 듯이 테스트 머신 돌리고 사람 붙여봐서 안 걸려도 만 단위 이상 붙으면 무슨 일이 생길지 아무도 모름..

2.     그냥 이미 다른 게임에서 성공사례가 있는 엔진을 사자..

 

속도가 느리다. 엔진에 대한 업그레이드가 필요하다.

1.     할게 많고 미친 듯이 바쁘다.. 시간을 쪼개고 쪼개서 계획을 세우자..

2.     엔진이나 사 쓰고 통보 한번 보내자 어디가 느리면 테스트 툴로 테스트해 보고 요청 보내면 끝.

 

더러는 어떤 기능을 구현하려고 한다.

1.     죽어라 개발하고 2~3명씩 붙여 유지 관리도 해주어야 할 때가 있다.

2.     그냥 엔진에 붙은 기능 쓰자.

 

네트워크의 경우 플레이어가 2배로 늘면 버그는 제곱으로 는다.. ㅠ_ㅜ 

      1. 내부 테스트에서 잘돌아간다고 그게 정말 버그가 없는 것일까?

      2. 내부 테스트로 모든 확인이 가능하면 '발로 만든' 꼬리표는 세상에 나오지도 않았을 것이다..

 

 

 

실수란 아무리 뛰어난 실력자라 할지라도 피할 수 없다. 사람이기에!!!

결국 가장 중요한 것은 개발된 후, 버그가 발견되고 수정되며 흘러온 많은 시간과, 실질 적용된 사례이다.

 

가만있으면 알아서 어떤 기능이 추가 되어져 올 때가 있다. 예를 들면 다른 게임회사에서 들어가는 어떤 기능 추가 요청에 대한 트렌드가 될 수도 있다. 그냥 그런 기능을 연결만하면 유저는 ‘오 많이 발전했다’ 하고 놀랜다..

 

 

삽질은 많이 해봐야 삽질일 뿐…

 

어떤 에러의 경우 1프로 이하의 확률로 일어나며,

데이터 베이스, 서버엔진, 서버 컨텐츠, 클라이언트 컨텐츠, 글라이언트 엔진

중에 어디가 문제인지 참 애매할 때가 있다. 이럴 때 정신적 고통을 줄이고 시간을 절약하기 위해서도 엔진은 절대적으로 견고해야만 한다.

특히 한달 두달 날수만 늘고 희박한 확률로 버그가 튀어나와서 감도 안 잡히는 경우도 꾀나 종종 생기게 되는데 이런 피마르는 상황을 줄이기 위해서도 엔진의 안정성은 절대적이지 않을 수 없다.

그리고 이중에 저 Server Engine을 개발 하는 회사가 우리 넷텐션인 것이다.

 

 

글좀 줄여바.. 너무 길자나..

4. 개발 이야기

온라인 게임에서 통신 암호화

by nettadmin / 2010. 05. 05. [11:14]

온라인 게임 개발에서 로그인 과정은 만들기가 까다롭고 짜증나는 부분 중 하나입니다. 로그온 과정까지 만들기 위해 넘어야 할 산들은 많습니다. 오죽하면게임 서버 개발에서 로그인 과정까지 완성되면 서버 개발의 반은 끝났다고 하겠습니까?

완성되고 나서도 로그온 부분에서 말썽을 일으키기 십상입니다. 로그인 과정 중 오류, 데이터베이스 랙, 그리고 서비스 오픈하면 한차례 겪는 해킹, 아이템 복제 등 후폭풍이 기다립니다.

 

프라우드넷(ProudNet)은 로그인 과정을 쉽고 안전하게 만들 수 있는 여러가지 장치들을 제공합니다. 그중 보안 부분에 대해서 소개합니다.

프라우드넷은 강력한 보안 통신 기능을 제공하고 있습니다. 가령, 로그인 관련 메시지를 높은 암호화를 수행하게 합니다.

 

먼저, 암호화라는 것이 무엇인지 알아봅시다.
어떤 메시지가 다른 컴퓨터로 전달될 때 제3자가 내용을 해독하거나 변조할 수 있으면 해킹을 당하기 쉽습니다. 예를 들어 입력한 아이디,비밀번호가 제3자에 의해 해독/변조가 될 수 있으면, 어느날 게임에 접속했더니 자기 캐릭터가 알몸이 되어 있겠죠.

 

그래서 메시지를 암호화하려면 암호화,해독(복호화)를 하는 알고리즘(공식)이 각각 있어야 합니다. 하지만 알고리즘이 공개되면 위험할 수 있겠죠? 그래서 뻔히 아는 알고리즘이 눈 앞에 있어도 암호화된 메시지를 풀지 못하게 하는 수단, 즉 열쇠(키)가 있어야 합니다. 현대 전산학에서 암호화 알고리즘은 키 기반 암호화가 통용되고 있습니다. 암호키의 길이는 1비트에서 수백 비트까지 다양합니다.

 

해커가 암호화된 메시지를 캐내서 얻어냈다고 가정하겠습니다. 해커가 그 메시지의 내용을 알아내려면 메시지를 해독할 키를 알아야 합니다. 이미 알고리즘은 얻었다고 가정합시다. 어떤 키를 넣어봐야 할지 시도해볼 것입니다. 암호키를 일일히 대보는 해커가 만들었다고 가정해도 어마어마한 시간이 소요됩니다. 

 

키, 즉 암호키는 크게 비대칭키와 대칭키로 구별됩니다. 비대칭키는 한 쌍의 열쇠가 있어서, 한 개의 열쇠로 암호화하면 나머지 한 개의 열쇠가 없으면 해독할 수 없습니다. 대칭키는 암호화할 때 쓴 키와 해독할 수 있는 키가 서로 같음을 의미합니다. 이러한 성질을 활용해서, 컴퓨터 네트워크에서는 암호화된 메시지를 전송하기 위해 대칭키와 비대칭키를 혼용하기도 합니다.

 

두 호스트 A,B가 있다고 가정하죠. A가 B에게 안전하게 암호화된 메시지를 전달하고자 합니다. A는 먼저 비대칭키 한쌍을 만듭니다. 그리고 하나는 자기가 갖고 있고 나머지를 B에게 전송합니다. 자기가 갖고 있는 것을 개인키(Private Key), B에게 전송한 키를 공개키(Public Key)라고 부릅니다.

이때 해커는 가뿐하게 공개키를 얻어버렸다고 가정하겠습니다.

 

 

B는 대칭키(Session Key)를 만들고 갖고 있습니다. A로부터 공개키가 도착했습니다. 이제 그것을 갖고 있는 대칭키로 암호화합니다. 그리고 암호화한 대칭키를 A에게 보내줍니다. 해커는 역시 그것도 얻어버렸습니다.

  

A는 받은 대칭키를 개인키로 복호화합니다. 그리고 B가 만든 대칭키를 공유합니다. 해커는 공개키와 암호화된 대칭키를 갖고 있지만 정작 개인키가 없어서 대칭키 내용을 알 수 없습니다.

 

이제 A는 암호화할 메시지 본문을 B로부터 받은 대칭키로 암호화 후 B에게 전송합니다. 해커는 이것도 갈무리했습니다.

B는 암호화된 본문을 가지고 있는 대칭키로 복호화해서 잘 씁니다. 한편, 해커는 아직도 대칭키를 얻지 못했기 때문에 해킹해서 갈무리한 메시지를 얻어내지 못합니다.

 

 

에라 모르겠다, 해커는 B에게 메시지 내용을 이것저것 훼손해서 보내봅니다. B는 받아서 복호화해봤더니 복호화가 되지 않습니다. 뭐, 그냥 버립니다.

 

프라우드넷은 이러한 암호화 방식을 내장하고 있습니다. RSA는 매우 강력합니다. 하지만 계산량이 막대해서 모든 메시지를 암호화하기에는 벅찹니다. 그래서 대칭키 알고리즘과 혼용합니다.

프라우드넷의 이러한 기능을 쓰기 위해서 사용자(게임 프로그래머)는 딱 하나만 하면 됩니다. 프라우드넷에서 메시지 형식을 정의할 때 “이건 암호화할거임~”만 한마디 적어주면 끝입니다. 위 키 주고받기 과정은 사용자는 신경쓰지 않아도 됩니다. 

 

프라우드넷은 클라이언트와 서버간 통신 뿐만 아니라 P2P로 통신할 때도 지금까지 설명한 방식의 암호화 기능을 제공합니다. P2P간 통신도 제3자가 해독/변조하지 못하게요.

 

여기서 잠깐! 프라우드넷이 어떻게 암호화를 하는지 대놓고 공개해도 괜찮냐고요? 암호화 기법은 알고리즘을 공개해도 뚫지 못하는 데 그 가치가 있습니다. 이렇게 대놓고 공개해도 안뚫리니까 공개하는거죠. ^^;;;

 

프라우드넷이 제공하는 기능은 많습니다. 암호화 기능은 작은 부분에 불과합니다. 하지만 지금까지 홍보가 부족했던 것 같습니다.

 

 

 

4. 개발 이야기