Q: How to do you decide that a particular key is a weak key?
Dipende dal codice (l'algoritmo stesso). Secondo Wikipedia:
In cryptography, a weak key is a key, which, used with a specific cipher, makes the cipher behave in some undesirable way.
Q: I got some things like in case of WEP , the weak keys are those whose initialization vectors are in the form of ( B + 3,255,x).
WEP usa RC4 che, sempre secondo Wikipedia:
Unlike a modern stream cipher (such as those in eSTREAM), RC4 does not take a separate nonce alongside the key. This means that if a single long-term key is to be used to securely encrypt multiple streams, the protocol must specify how to combine the nonce and the long-term key to generate the stream key for RC4.
Quindi, a differenza della maggior parte dei cifrari, i tasti deboli includono l'IV . Sfortunatamente il programma chiave di RC4 è debole, l'IV di WEP troppo corto e la costruzione di combinare (concatenare) la chiave e IV troppo semplicistico, portando a un attacco .
Q:and does the condition for weak keys depend on the type of encryption function we use . ex - in wep , finally we are XORing the plaintext and the key sequence to get the ciphertext
Di nuovo, dipende dal codice.
Quello che descrivi sopra è la struttura generale che un codice di flusso utilizza per crittografare i dati. Esistono codici di flusso che hanno chiavi deboli o sono altrimenti vulnerabili. Ma ci sono certamente cifrari in streaming che non hanno chiavi deboli e sono considerati sicuri.
Lo XOR del flusso di chiavi con il testo in chiaro non è il problema qui.
Altre crittografie (blocco) con chiavi deboli sono IDEA, Blowfish. DES è probabilmente il cifrario più conosciuto con i tasti deboli:
Since all the subkeys are identical, and DES is a Feistel network, the encryption function is self-inverting; that is, despite encrypting once giving a secure-looking cipher text, encrypting twice produces the original plaintext.
Ciò significa che se un utente malintenzionato dovesse rimandare il testo cifrato come testo in chiaro affinché tu possa crittografarlo (ad esempio utilizzandoti come oracle di crittografia), l'utente malintenzionato recupera il testo in chiaro nel caso in cui siano state utilizzate chiavi deboli.
Inutile dire che i codici moderni cercano di evitare le chiavi deboli; ogni chiave dovrebbe essere sicura come qualsiasi altra chiave.