Question: I have tried this on `Fedora` and on `Ubuntu`.

```
kshitiz@kshitiz:~$su
su: Authentication failure

kshitiz@kshitiz:~$sudo su

root@kshitiz:/home/kshitiz#

```

I am entering the same password in both the cases.

Answer: 
`su` requires the password of the account whose privileges you are trying to assume (apparently `root` in this case). 

`sudo` requires the password of the current user - that is, the password for user `kshitiz`.

By running `sudo su`, you are effectively becoming `root`, then running `su` to get a root shell - that is, your privileges are already elevated to `root` before the call to `su` is executed, which is why you don't get prompted for the root password again.
In fact, you can specify in the `/etc/sudoers` file (use `visudo`) which password the user who issues `sudo` has to enter. If these lines

```
# Defaults      targetpw
# ALL   ALL = (ALL) ALL  

```

were uncommented, you would have to enter the root-password to run passwords with root-permissions via `sudo`.