2012-10-09 2 views
2

저는 현재 C 언어의 기본 네트워킹에 대해 배우고 있으며 인터넷의 "모호한 부분 : 비밀 프로토콜"에 관심이 있습니다.비밀 서버 프로토콜 유지 소프트웨어 무료

내가 멀티 플레이어 온라인 게임을 개발한다고 가정 해 보겠습니다. 패키징 및 데이터 압축 풀기에 대한 자체 프로토콜을 설계하므로 클라이언트와 서버가 정보를 제대로 보내고 수신하고 구문 분석 할 수 있습니다 (예 : 위치 패킷, 캐스팅 주문 ... 등). 물론 내 프로토콜에 공개 프로토콜을 사용하고 싶지는 않습니다. 왜냐하면 내 서버에서 "나쁜 것"을 만들고 싶은 사람은 누구나이를 할 수 있기 때문입니다. 하지만 내 프로젝트를 무료 소프트웨어로 유지하고 싶습니다.

어떻게해야합니까? 가짜 프로젝트를 오픈 소스로 유지하는 법을 알려주시겠습니까? 사전

불가능
+5

http://en.wikipedia.org/wiki/Security_through_obscurity – ouah

+0

@ouah, 나는 답변으로도 upvote 것입니다. (내가 읽은 페이지는 읽지 않았지만). –

+0

사용자/통과 메커니즘을 통해 서버에 대한 액세스를 제한 할 수있는 제한 사항이 있습니까? 독점 프로토콜은 리버스 엔지니어링 할 수 있습니다. – Ifthikhan

답변

6

에서

감사합니다 - 소스 코드를 제공하는 경우, 당신은 또한 프로토콜의 구현을 제공하고 있습니다. 문을 활짝 열어 놓은 것을 확보 할 수는 없습니다. 대신 서버 쪽 물건에 대한 ACCESS 보안에 중점을 둡니다.

ID 배지로 영어 사용자를 필터링하는 데 주력해야하는 경우 사람들이 귀하의 애플리케이션이 영어를 말하는지 알지 못하게하려는 것입니다.

+0

@ PawełDziepak 나는 같은 생각. "디 컴파일"은 어떨까요? 프로토콜에 관한 모든 내용은 정적 라이브러리에 저장되며 코드는 클라이언트 실행 파일로 복사됩니다. 따라서 일부 고급 지식을 가진 모든 사람 (나 아님)은 컴파일 된 코드를 처리 할 수 ​​있습니다. (죄송합니다, Paul은 지금은 사용 가능하지 않다는 의견을 말했습니다) –

3

암호화를 사용할 수 있으며 오픈 소스에 클라이언트 키를 포함 할 수 없습니다. 그러나 클라이언트에 포함시켜야하기 때문에 쉽게 해킹 될 수 있습니다. 항상 서버를 해킹 할 수는 있지만 대부분의 경우 서버에서 제어 및 유효성 검증을 유지할 수 있습니다. 예를 들어, 서버가 보유하고있는 많은 금 조각을 추적 할 수 있으며 클라이언트는 서버에 X 금색 조각에 대한 새 도구를 구입할 것을 알릴 수 있습니다. 서버는 트랜잭션을 쉽게 확인하고 인벤토리를 유지할 수 있습니다. 서버는 클라이언트가있는 위치와 이동할 수있는 위치를 알고 있습니다. 그러나 이것은 로봇을 막지는 못합니다.

+0

나는 그렇게하지 않는 편이 좋다고 생각합니다. 여러분이 지적했듯이, 쉽게 해킹 될 수 있기 때문입니다. 프로토콜은 데이터 캡슐화, 패딩 및 데이터 암호화 ("외부 실드")를 정의해야합니다. 사람들이 프로토콜을 알고 있고 키가 들어있는 파일을 가지고 있으면 메시지를 해독하기가 쉽지 않을 것입니다. 어떤 경우에 고마워 –

+0

글쎄, 내가 말했듯이, 열쇠를 공급하지 마라. 내가 정확하게 기억한다면 안드로이드는 유료 앱용 암호화 된 애플리케이션 패키지를 사용할 것이다. 이를 사용하면 키를 얻는 것이 훨씬 더 어려워지고, 키가 유출되면 키를 무효화하기가 쉽습니다. 따라서 어떤 시스템을 대상으로하는지에 따라 다릅니다. 어쨌든, 가장 중요한 부분은 서버가 내 대답에 따라 명령을 검증해야한다는 것입니다. –

+0

데스크톱 컴퓨터 (랩탑뿐 아니라 ... 등)도 타겟팅하고 있습니다. 당신을 오해해서 미안합니다 - 나는 당신이 "당신은 그것을 고객에게 포함시켜야한다고 ..."라고 생각했습니다. 당신의 대답이 끝나면 그 유효성 확인은 생각입니다. 그래서 나는 종이를 가져갈 것이고 그 머리는 당신이 말한 모든 것에 대해 생각하고 생각해 볼 것입니다. 감사! –

관련 문제