Jag kollade lite mer i deras källkod, mer specifikt på hur de genererar sina nycklar som skyddar filerna:
filen-sdk-ts/src/crypto/utils.ts at main · FilenCloudDienste/filen-sdk-ts
Här använder de NodeCrypto, vilket är bra. Men! Istället för att bara returnera nyckeln direkt från NodeCrypto så itererar de över en sträng med alfabetet och plockar chars från den. Nycklarna som används för att kryptera filerna är alltså 32 tecken långa och kan bara innehålla a-z, A-Z och 0-9. Det ger ett nyckelutrymme om totalt 2 * 10^57 unika nycklar. En proper implementation av AES-256 hade istället haft 10^77 nycklar, d.v.s. 20 magnituder(!) större.
De använder AES-256 i grund och botten, men nycklarna kommer aldrig bli 256 bitar långa, utan de kommer som mest bli ca 190 bitar (egentligen något mindre p.g.a. statistiska skäl). Eftersom nycklarna dessutom går att förutspå till viss del (då de bara använder ett visst subset av alla möjliga tecken) så öppnar man dessutom för andra typer av sidechannel-attacker.
Det hade räckt att de tagit en enda introduktionskurs i kryptering på universitetet så hade de vetat att detta är ett stort no-no.
Last edited: 2 september 2024
cog och Kristy gillar detta.