Common Scrambling Algorithm
Het Common Scrambling Algoritme (CSA) is een symmetrisch encryptie algoritme dat gebruikt wordt om digitale TV uitzendingen via DVB te versleutelen. Het is gestandariseerd in 1994 door ETSI en overgenomen door het DVB consortium. Belangrijke details van het CSA, zoals de topologie van de S-boxen, werden geheim gehouden tot 2002, waardoor open source implementaties ondenkbaar waren.
Oorspronkelijk was CSA ontworpen als een algoritme bedoeld om te worden geïmplementeerd op chip, zoals een FPGA of een en:ASIC. Deze aanpak zorgde ervoor dat het moeilijk was om CSA te kraken. Uiteindelijk is men toch overgestapt naar een softwareoplossing vanwege de flexibiliteit ervan. Een implementatie hiervan is FreeDec welke uitkwam in 2002. De broncode van dit programma werd niet vrijgegeven, maar door deassemblering werden de missende details blootgelegd. Snel volgden implementaties van CSA in een hogere programmeertaal.
Betrouwbaarheid van CSA
Aangezien de werking van CSA nu volledig bekend is werd er door cryptoanalysten een zoektocht opgestart naar eventuele fouten in het algoritme. Zoals in elk encryptiealgoritme is de grootste zwakte de encryptie van eenvoudig te voorspellen stukken data, zoals de hoofdingen van een MPEG2 pakket. Dit verkort substantieel de tijd die nodig is om de sleutels te kraken.
De sleutellengte die wordt gebruikt is 64 bit. Dit resulteert in 264 sleutelmogelijkheden. Van deze sleutels worden echter slechts 48 bit gebruikt. Byte 3 en byte 7 zijn checksum bytes die snel kunnen worden berekend. Dit zorgt ervoor dat er een er een afweging kan worden gemaakt tussen het aantal sleutels dat wordt berekend en de nodige processortijd.
Gebruik makend van de twee vorige feiten kan men de zoektocht naar de juiste sleutel verkorten. Ten eerste kan men 16 bits berekenen uit de gekozen sleutel aangezien zij checksum bits zijn. Ten tweede kan men door gebruik te maken van stukken voorspelbare tekst een schatting maken van nogeens 16 bits. Hierdoor moeten nog slechts 32 bits met brute kracht worden berekend, wat door een goede implementatie op FPGA snel kan worden gedaan.
Het eventuele kraken van CSA zou grote problemen betekenen voor de TV industrie omdat te betalen uitzendingen dan ontcijferd kunnen worden. Tot op heden is er echter nog geen aanval gepubliceerd geweest. Het blijft echter de vraag hoe lang deze encryptie nog stand houdt.
Werking
CSA is gebaseerd op het principe van symmetrische encryptie. Dit houdt in dat zender en ontvanger dezelfde sleutel gebruiken om de boodschap te vercijferen en vervolgens te ontcijferen. Het voordeel van de symmetrische encryptie is dat ze sneller werkt dan assymetrische. Maar het nadeel hiervan is dat de sleutel moet worden uitgewisseld. Deze uitwisseling gebeurt met een asymmetrische encryptie.
Het versleutelingsalgoritme kan worden gezien als een cascade van eerst een blokvercijfering en een stroomvercijfering. Beide vercijferingen gebruiken dezelfde sleutel van 64 bits. Om de boodschap te vercijferen wordt de data in blokken verdeeld van acht bytes. Vervolgens wordt de data door de blokvercijfering versleuteld in CBC mode. De laatste uitgang van deze vercijfering wordt gebruikt als nonce voor de stroomvercijfering.