Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Imagine that you are designing an online game, the framework consists of a playe

ID: 3669944 • Letter: I

Question

Imagine that you are designing an online game, the framework consists of a player A, a game host H and a trusted central server S.

The player A has a symmetric key KAS and id A that is known to the trusted central server (these would be set up using a registration key printed on the CD box).

The host and server have well known public keys.

The player will connect to the host H and set up a symmetric session key with which to play the game. You want to ensure that only people who have bought the game can play online. Therefore the host H will have to check with the server S that the player A really does have a key

Design a protocol that will let A connect to the host H and let H check with the server S to see if A is a legitimate player (i.e., really does have a shared key with S).

There is only one server but there may be a number of hosts and players. In particular, your protocol should make it impossible for an attacker to wrongly authenticate with a host by intercepting and replaying messages or by acting as a man-in-the-middle.

Write your protocol down using proper notation showing all the steps *VERY CLEARLY*.

Describe exactly what goals your protocol achieves.

Describe how it works (each step).

Describe how your protocol withstands the attacks mentioned above

Explanation / Answer

package com.edu4java.onlinegame;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Game extends JPanel {
int x = 0;
int y = 0;
private void moveBall() {
x = x + 1;
y = y + 1;
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillOval(x, y, 30, 30);
}

public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("Sample Frame");
Game game = new Game();
frame.add(game);
frame.setSize(300, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

while (true) {
game.moveBall();
game.repaint();
Thread.sleep(10);
}
}
}