4. (20 points) Evaluating Hash Function Security The birthday paradox (birthday problem or birthday attack in security context) refers to the counterintuitive probability result that in a group of randomly chosen people, the probability that at least two of them share the same birthday exceeds \( 50 \% \) when the group has just 23 people, despite there being 365 possible birthdays. Given a hash function with an output size of \( n \) bits (i.e., \( 2^{n} \) possible outputs), the probability of finding a collision (i.e., two distinct inputs \( x \neq x^{\prime} \) such that \( \left.H(x)=H\left(x^{\prime}\right)\right) \) exceeds \( 50 \% \) after approximately \( 1.17 \cdot \sqrt{2^{n}}=1.17 \cdot 2^{\frac{n}{2}} \) random input are hashed. Suppose Manhattan University has deployed a custom hash function \( H \) that produces a 64 -bit output, intended for use in cryptographic applications such as digital signature generation. An attacker wants to find a collision using the birthday attack. Assume the attacker has access to a modern laptop with the following specifications: - CPU clock speed: 3.2 GHz (single core) - Hash computation time: 500 CPU cycles per hash (optimized implementation) - Only one CPU core is used (no parallelization) (a) (4 points) Using the birthday paradox, estimate how many hash computations are needed before the attacker has a \( 50 \% \) chance of finding a collision. (b) (6 points) Calculate how long (in minutes) it would take the attacker to compute this number of hashes using the laptop described. (c) (4 points) Based on your result, explain whether using a 64 -bit hash function is secure for applications requiring collision resistance, such as digital signatures or file integrity checks. (d) (6 points) Let's define "secure" as: A collision attack must take at least 100 years on a single core. How many bits are needed for a hash function to be considered secure against birthday attacks using modern laptop hardware.