2011-08-04 22 views
7

Tôi đã thực hiện rất nhiều nghiên cứu về các câu hỏi này nhưng vẫn không thể tìm thấy những gì tôi đang tìm kiếm. Về cơ bản tôi đã tạo ra một trò chơi cho WP7 và tôi muốn nó kết nối với dịch vụ của tôi tôi tạo ra để gửi điểm số cao và nhận được các bảng xếp hạng. Ngay bây giờ dịch vụ rất đơn giản và chỉ có một tên người chơi và điểm số trong định dạng chuỗi.Tạo một dịch vụ điểm số cao SECURE bằng cách sử dụng ASP.NET MVC 3

Tôi đã nhìn thấy rất nhiều hướng dẫn về cách mã hóa và giải mã dữ liệu nhưng tất cả dường như tạo ra một khóa dựa trên thông tin người dùng và thường chỉ là các ví dụ địa phương. Tôi sẽ không phải sử dụng cùng một khóa mà tôi đã sử dụng để mã hóa dữ liệu của mình ở phía ứng dụng để tôi có thể giải mã nó ở phía máy chủ không? Tôi có tạo khóa riêng mà tôi sử dụng trên ứng dụng và trên máy chủ không? Làm cách nào để tôi bảo mật khóa đó?

Tôi đã rối tung xung quanh với phương pháp này để gửi chuỗi mã hóa để dịch vụ của tôi: http://robtiffany.com/windows-phone-7/dont-forget-to-encrypt-your-windows-phone-7-data/

Nhưng tôi thực sự bối rối về cách đồng bộ hóa quá trình đó trên cả hai phía ứng dụng và máy chủ bên vì sự tạo khóa.

Nếu có ai đó đã tạo dịch vụ điểm số cao và có một số mẹo hữu ích.

Trả lời

2

Nếu bạn muốn thực hiện thực sự an toàn (có thể không cần thiết), thì tình huống rất phức tạp - bạn phải giả định rằng người chơi có quyền truy cập vào mã nguồn của ứng dụng của bạn (vì anh ấy/cô ấy có thể dịch ngược nó) và cũng có quyền truy cập vào tất cả các khóa được lưu trữ trong ứng dụng hoặc bất cứ nơi nào trong điện thoại. Điều này có nghĩa, nếu ứng dụng của bạn mã hóa điểm số bằng cách sử dụng một khóa được lưu trữ trên điện thoại, thì kẻ tấn công có thể làm tương tự với một số điểm giả mạo.

Để làm cho nó thực sự an toàn, bạn có thể cần phải gửi một số bản ghi của trò chơi đến máy chủ và máy chủ sẽ phải xác minh rằng nhật ký là một cách hợp lý để hoàn thành trò chơi (tức là trò chơi có thể chơi theo cách đó). Để giả mạo một điểm số trong hệ thống này, kẻ tấn công sẽ phải tạo ra một bản ghi của trò chơi - có nghĩa là tạo ra một AI có thể chơi trò chơi tốt hơn so với con người (để có được điểm số tốt hơn). Điều này vẫn có thể thực hiện được (nếu trò chơi là dễ dàng cho máy tính), nhưng tôi đoán nó không có khả năng ai đó sẽ bận tâm.

Trong thực tế, tôi nghĩ bạn chỉ có thể thêm một số obfuscation vào cách điểm số được mã hóa (ví dụ: sử dụng mã hóa đối xứng với cùng một khóa trên máy chủ và máy khách). Nếu ai đó nhìn vào dữ liệu được gửi qua mạng, họ sẽ không dễ dàng có thể giả mạo điểm số tốt hơn. Nếu họ dịch ngược ứng dụng, thì họ vẫn có thể làm điều đó, nhưng có thể là không chắc chắn (và bạn có thể kiểm tra điểm số bằng tay để xem liệu có điều gì đáng ngờ không).

[EDIT: Tôi không phải là chuyên gia WP7, do đó có thể có một cái gì đó đặc biệt được cung cấp bởi WP7 nhưng, về nguyên tắc, nó vẫn sẽ có cùng một vấn đề]

+0

Obfuscation là điều mà tôi chắc chắn nên xem xét, nhờ thông tin. Tôi đang cố gắng tránh việc chọn tay càng nhiều càng tốt nhưng có thể phải là trường hợp nếu bất kỳ người chơi độc hại nào tìm cách tạo điểm số của riêng họ. – Tom

0

Bạn có thể thử sử dụng chứng chỉ ứng dụng khách để mã hóa dữ liệu. This là một chủ đề phong nha bởi một người nào đó cố gắng để thực hiện điều tương tự.

Các vấn đề liên quan