Suppose you want to design a program that plays a card game (like Skat) for three players over the Internet. At the beginning of the game it is needed to deal the cards in a way, that each player gets the same amount of cards, but one must not know the other players' cards. Is it possible to design a system, where the players can deal the cards without the need to trust any of the programs?
It is clearly not enough to let one players' program deal the cards and send them to the others, because the player may have tweaked his program in a way that he knows which cards were dealt. One way would be to use a (trusted) server that deals the cards, but that would be too much overhead.
Is it possible to create a (cryptographic) system, that allows the players to deal the cards without the need to trust the programs of the other players?