HetCommon Scrambling Algoritme (CSA) is een symmetrischencryptiealgoritme dat gebruikt wordt om digitale televisie-uitzendingen viaDigital Video Broadcast (DVB) te versleutelen. Het is gestandaardiseerd in1994 doorETSI en overgenomen door het DVB-consortium. Belangrijke details van het CSA, zoals de topologie van de S-boxen, werden geheimgehouden tot 2002, waardooropenbronimplementaties ondenkbaar waren.
Oorspronkelijk was CSA ontworpen als eenalgoritme bedoeld om te worden geïmplementeerd opchip, zoals eenFPGA of eenASIC. 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, dat uitkwam in 2002. Debroncode van dit programma werd niet vrijgegeven, maar door deassemblage werden de ontbrekende details blootgelegd. Snel volgden implementaties van CSA in een hogereprogrammeertaal.
Toen de werking van CSA volledig bekend raakte werd door cryptoanalisten 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 headers van eenMPEG-2-pakket. Dit verkort substantieel de tijd die nodig is om de sleutels te kraken.
De sleutellengte die wordt gebruikt is 64bits. Dit resulteert in theorie tot 264 sleutelmogelijkheden. Van deze sleutels worden echter slechts 48 bits gebruikt.Byte 3 en byte 7 zijnchecksumbytes die snel kunnen worden berekend.
Gebruik makend van de twee vorige feiten kan men de zoektocht naar de juiste sleutel verkorten. Ten eerste kan men 16 bits (2 bytes) berekenen uit de gekozen sleutel, aangezien zij checksumbits zijn. Ten tweede kan men door gebruik te maken van stukken voorspelbare tekst een schatting maken van nog eens 16 bits. Hierdoor moeten nog slechts 32 bits metbrute 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 succesvolle ontcijfering van het algoritme gepubliceerd.
Het CSA-algoritme wordt voornamelijk gebruikt om te zorgen voor Conditional Access (CA), ofwel toegang onder voorwaarden. Door de encryptie kunnen leveranciers van digitale tv ervoor zorgen dat bepaalde programma's restricties hebben. Zo kan ervoor gezorgd worden dat enkel betalende klanten een bepaald programma kunnen decoderen.
De sleutels voor het decryptiealgoritme worden meestal opgeslagen op eenchipkaart. Deze kaart wordt in desettopbox gestoken waarop deze dan de decryptie kan uitvoeren.
CSA is gebaseerd op het principe vansymmetrische 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 asymmetrische. Maar het nadeel hiervan is dat de sleutel moet worden uitgewisseld. Deze uitwisseling gebeurt met eenasymmetrische encryptie.
Het versleutelingsalgoritme kan worden gezien als een ketting 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 alsnonce voor de stroomvercijfering.