Michael Crichton's Mousetrap
Ruby, 171 167 157 bytes

require'io/console';t=Time;f=-&gt;a{loop{x=t.now;STDIN.getch==?\r?break: a&lt;&lt;t.now-x};a};p"Please type the key phrase";f[r=[]];p"Please type the key phrase again";p r.zip(f[[]]).map{|x,y|(1-x/y).abs}.reduce(:+)/r.size&gt;0.2


Outputs true if average variance is above 20%, otherwise outputs false.

Dinosaur ASCII art attempt:

(_=/\
  \ \
   \ \
    \ \              _...---..__
     \ \          .∕` #{t=Time} `\._
      \ \      .∕ #{z='io/console'} `\.
       \ \.__.∕  #{require z;s=STDIN} `\.
        \ #{p'1:';f=-&gt;a{loop{x=t.now;#   \.
         s.getch==?\r?break: a&lt;&lt;t.now-x;# `\.
          };a};f[r=[]];p'2:';p r.zip(f[[]])#\  
           .map{|x,y|(1-x/y).abs}.reduce(:+)#|
            .fdiv(r.size)&gt;0.2}###########\   \
            `-._    ,___...----...__,   ,__\  \
                |   |_|           |_|   |    \ \
                |___|               |___|      \\/)


Ungolfed:

require 'io/console' # so we can read one char at a time

t = Time

f = -&gt;(a) {
  loop {
    x = t.now # record start time
    break if STDIN.getch == ?\r
    a &lt;&lt; t.now - x # push (start time - end time) into array
  }
  a
}

puts "Please type the key phrase"
f[r = []] 

puts "Please type the key phrase again"

# interweave timing arrays, compute variances, sum elements
# then divide by array length. Check to see if average
# is greater than threshold (0.2)
p r.zip(f[[]]).map { |x,y| (1-x/y).abs }.reduce(:+) / r.size &gt; 0.2


require 'io/console' could be removed when run in some Ruby REPLs, as the library is already loaded.