Koodhka lambarrada ugu muhiimsan

Bishii Oktoobar 1999, koox uu hoggaaminayay Jon Lech Johansen oo ahaa 16 jir u dhashay Norway ayaa sii daayay barnaamijka DeCSS si ay uga gudubto ilaalinta DVD-ga ee Nidaamka Isku-dhafka ah (CSS). CSS waxay isticmaashay sir-gelinta 40-bit, oo ah furayaasha loo qaybiyay soo-saareyaasha shatiga haysta, si loo xaddido ciyaarista DVD-ga. Maadaama qaybinta koodku ay hoos timid DMCA-da Mareykanka oo sharci ahaan mamnuuc ahayd, dhaqdhaqaaqayaashu waxay raadiyeen siyaabo ay u qariyaan koodka inay tahay hay'ad xisaabeed.


Phil Carmody ayaa markaa sameeyay lambar muhiim ah kaas oo, marka lagu fasiro binary ka dib gzip decompression, uu ka kooban yahay koodhka isha oo dhammaystiran ee DeCSS. Xudunta algorithm-ka DeCSS waxaa lagu hirgelin karaa TypeScript sida soo socota, halkaas oo hawlgallada bit-ku ay si toos ah u sawiraan macquulka decryption-ka qaybta.:

function CSSdescramble(sec: Uint8Array, key: Uint8Array): void {
    let t1: number, t2: number, t3: number, t4: number, t5: number, t6: number;
    const end = 0x800;

    t1 = (key[0] ^ sec[0x54]) | 0x100;
    t2 = key[1] ^ sec[0x55];

    const keyView = new DataView(key.buffer, key.byteOffset);
    const secView = new DataView(sec.buffer, sec.byteOffset);

    t3 = (keyView.getUint32(2, true) ^ secView.getUint32(0x56, true)) >>> 0;
    t4 = t3 & 7;
    t3 = (t3 * 2 + 8 - t4) >>> 0;

    let offset = 0x80;
    t5 = 0;

    while (offset < end) {
        t4 = CSStab2[t2] ^ CSStab3[t1];
        t2 = t1 >>> 1;
        t1 = ((t1 & 1) << 8) ^ t4;
        t4 = CSStab5[t4];
        t6 = (((((((t3 >>> 3) ^ t3) >>> 1) ^ t3) >>> 8) ^ t3) >>> 5) & 0xff;
        t3 = (((t3 << 8) >>> 0) | t6) >>> 0;
        t6 = CSStab4[t6];
        t5 += t6 + t4;

        sec[offset] = CSStab1[sec[offset]] ^ (t5 & 0xff);
        t5 >>>= 8;
        offset++;
    }
}

Mabda'a ka dambeeya lambarka koowaad waa in loo fasiro koodhka isha oo dhan hal tiro oo adag. Maadaama uusan jirin fayl la bixiyay oo waligiis ah lambar koowaad, lambarka waxaa si macmal ah loogu kordhiyaa baytyo dheeraad ah (baakad). Baakadkan waxaa lagu kordhiyaa wareeg ilaa tijaabada koowaad, sida tijaabada Miller-Rabin, ay xaqiijiso in lambarku yahay mid heer sare ah. Soo-saare soo socda wuxuu adeegsadaa koodhka DeCSS ee kor lagu sharraxay wuxuuna raadiyaa matalaad lambar oo heer sare ah oo u dhiganta.:

import { isPrime } from 'crypto-utils-lib'; // Hypothetical library for primality testing

async function generateIllegalPrime(code: string): Promise<bigint | null> {
    const encoder = new TextEncoder();
    const bytes = encoder.encode(code);

    let hexBase = Array.from(bytes)
        .map(b => b.toString(16).padStart(2, '0'))
        .join('');

    // Start bei 1, da 0x00 immer gerade und damit keine Primzahl ist
    for (let i = 1; i < 256; i++) {
        const candidateHex = hexBase + i.toString(16).padStart(2, '0');
        const candidateInt = BigInt('0x' + candidateHex);

        if (await isPrime(candidateInt)) {
            return candidateInt;
        }
    }
    return null;
}

const source = `void CSSdescramble(unsigned char *sec, unsigned char *key) { ... }`;
generateIllegalPrime(source).then(p => console.log(p));

Khiyaamada lambarrada ugu muhiimsan weligeed ma ahayn mowduuc maxkamadeed oo gaar ah, mana ahayn mid loo baahnaa. Inkasta oo lambarkii ugu horreeyay ee Carmody uu lahaa 1401 lambar, haddana aad bay u yarayd liisaska ugu sarreeya ee lambarrada ugu waaweyn waqtigaas. Wuxuu markii dambe sameeyay nooc 1905-god ah, oo si macmal ah loogu buufiyay baytyo aan lahayn, si uu u gaaro kaalinta tobnaad ee darajada ECPP . Guushani waxay muujisay suurtogalnimada in la faafreebo xisaabta saafiga ah, maadaama lambarku uu kasbaday booskiisa liiska oo keliya iyadoo lagu saleynayo sifooyinkiisa xisaabeed.

Dib u laabo