Let me just use an answer to explain differences between key-stretching and hashing, even though this isn't an answer to your question.
I'm not going to use a real-world example of collisions, because I don't know what they are, so my hash examples will be purely random.
Imagine your password is pass123, let
sha1Result = sha1('pass123').
A collision is when bksdajfdjfaskf can also be used, where
sha1Result also = sha1('bksdajfdjfaskf').
A KDF is a feedback loop, where
sha1Result2 = sha1(sha1Result) and
sha1Result3 = sha1(sha1Result2) and so on n number of times.
The below example
KDF() function will be
KDF(password, hash-algorithm, iteration-count)
kdfResult = KDF('pass123', SHA1, 100,000).
kdfResult also = sha1('jadfjlkdfjasldfjskdf') because we have a collision, sort-of, but not really.
Because in order for you to log into my system, you must pass through my
KDF(), just having a
sha1() collision of my
KDF() does not help you, because I do not
sha1() your supplied cleartext in order to authenticate you, I
KDF() your supplied cleartext, and
KDF('jadfjlkdfjasldfjskdf', SHA1, 100,000) does not match
KDF('pass123', SHA1, 100,000).
This is a different use-case for a KDF than for HDD encryption. For HDD encryption, the KDF is not used to authenticate, but its used as a key for the encryption of the data.
However, that might be what you should reform your question around. Are the SHA1 collision vulnerabilities still a vulnerability when iterated 103,696 times?