A SPICE client connection to a remote desktop server consists of multiple data channels, each of which is run over a separate TCP or UNIX socket connection. A data channel can be designated to operate in either clear-text, or TLS modes, allowing the administrator to trade off the security level vs performance. The TLS mode provides strong encryption of all traffic transmitted on the data channel.
In addition to encryption, the SPICE protocol allows for a choice of authentication schemes. The original SPICE protocol defined a ticket based authentication scheme using a shared secret. The server would generate an RSA public/private keypair and send its public key to the client. The client would encrypt the ticket (password) with the public key and send the result back to the server, which would decrypt and verify the ticket. The current SPICE protocol also allows for use of the SASL authentication protocol, thus enabling support for a wide range of admin configurable authentication mechanisms, in particular Kerberos.
While only one server implementation exists, several programmers have developed new implementations of the SPICE client-side since the open-sourcing of SPICE.
The SPICE protocol originated to provide improved remote desktop capabilities in a fork of the KVM codebase.
"Red Hat open-sources SPICE". Red Hat. 9 December 2009. Retrieved 2013-10-25. https://www.redhat.com/about/news/press-archive/2009/12/spice-os ↩
"Project website". spice-space.org. Retrieved 2019-12-25. https://www.spice-space.org/ ↩
"spice-protocol GIT repository". cgit.freedesktop.org. Retrieved 2013-10-25. http://cgit.freedesktop.org/spice/spice-protocol/tree/spice ↩
"spice/spice". cgit.freedesktop.org. Retrieved 2023-01-05. https://cgit.freedesktop.org/spice/spice/ ↩
"spice-gtk GIT repository". cgit.freedesktop.org. 2013-10-10. Retrieved 2013-10-25. http://cgit.freedesktop.org/spice/spice-gtk/ ↩
"spice-html5 GIT repository". cgit.freedesktop.org. Retrieved 2013-10-25. http://cgit.freedesktop.org/spice/spice-html5/ ↩
websockify on GitHub https://github.com/kanaka/websockify ↩
"QEMU/KVM Virtual Machines". pve.proxmox.com. Retrieved 2023-09-18. https://pve.proxmox.com/pve-docs-7/chapter-qm.html ↩
"XSpice README". cgit.freedesktop.org. Retrieved 2013-10-25. http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/tree/README.xspice ↩