New PAM module: VoiceAuth

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have been developing a way to authenticate users by their voice.
After a lot of work and tests on my box, I'm releasing it.

VoiceAuth is a module for the Linux-PAM project intended to authenticate
users by their voice, instead of letting the user type his/her
username/password. VoiceAuth has the following features:

- Speaker dependent (one cannot login as another user by
  just speaking someone's password)
- Password checking in various levels:
  + Voice password length
  + Fourier coefficients dependency

Of course, there is a need to have an sound driver up and running, such as
OSS or ALSA <http://www.alsa-project.org>. 
The current version works with the OSS API, but the ALSA OSS emulation is
fully functional.


The provided module has a few parameters the administrator can use to
improve the security of the password matches, while also giving a very
flexible in means of system configuration. They are:

        "va_dir="
        Define the directory to be used as repository of the
        voice password files.
        #define DEFAULT_VOICE_AUTH_DIR     "/etc/security/voiceauth"

        "audiodev="
        Define the audio device to be used when dealing with
        the microphone.
        #define DEFAULT_AUDIO_DEVICE       "/dev/dsp"

        "mixerdev="
        Define the mixer device to be used.
        #define DEFAULT_MIXER_DEVICE       "/dev/mixer"

        "mic_level="
        Set the default mixer volume. The default value (-1)
        means the microphone volume should not be modified.
        #define DEFAULT_MIC_LEVEL          -1

        "igain_level="
        Set the default input gain. The default value (-1)
        means the input gain level should not be modified.
        #define DEFAULT_IGAIN_LEVEL        -1

        "silence_level="
        Set the silence level. This can be used on a well-known
        environment, where the noise volume is always the same
        (I don't know of any, but..). This value can be overwritten
        by the application: the module can calibrate this level
        on every authentication.
        #define DEFAULT_SILENCE_LEVEL      32760

        "silence_threshold="
        Set the silence threshold, that is: the first data up to
        ($silence_level * (1 + $silence_threshold)) will be defined
        as the start of the speaking.
        #define DEFAULT_SILENCE_THRESHOLD  0.05

        "corr_threshold="
        Define the correlation threshold. This is one of the most
        important variables: it will tell the module if the password
        spoken by the user is the same as the stored one. Values
        smaller than 0.9 can authenticate wrong passwords.
        #define DEFAULT_CORR_THRESHOLD     0.9

        "passwd_maxlen_diff="
        Define the max difference in length between the stored
        password and the spoken one. This variable must be greater
        than 1.0. See the sources for more information about how
        this variable is used.
        #define DEFAULT_PASSWD_MAXDIFF     1.35


Some additional applications were also developed, in order to assist the
module. Since all I needed was to put it working, some things like
cryptography still doesn't exist, but they will appear on the next
release, probably by storing the coefficients, rather than the entire
password in 'plain spell'.
The applications are composed by a passwd-like program, to deal with the
new 'va_passwd', a login-like program and a 'playpasswd', to aid on this
first stage of the module: it is very helpful to discover if the password
is being stored correctly.

So, I'm asking every PAM-user and developer to help on testing and giving
any suggestions about the module itself, since this is my first contact
with PAM.

The module can be downloaded from http://cscience.org/~lucasvr/Projects/voiceauth.html .

Thanks in advance,
Lucas Correia Villa Real



_______________________________________________

Pam-list@redhat.com
https://listman.redhat.com/mailman/listinfo/pam-list

[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux