Bau.Libraries.OneTimePassword 1.0.12

There is a newer version of this package available.
See the version list below for details.
dotnet add package Bau.Libraries.OneTimePassword --version 1.0.12                
NuGet\Install-Package Bau.Libraries.OneTimePassword -Version 1.0.12                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bau.Libraries.OneTimePassword" Version="1.0.12" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Bau.Libraries.OneTimePassword --version 1.0.12                
#r "nuget: Bau.Libraries.OneTimePassword, 1.0.12"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Bau.Libraries.OneTimePassword as a Cake Addin
#addin nuget:?package=Bau.Libraries.OneTimePassword&version=1.0.12

// Install Bau.Libraries.OneTimePassword as a Cake Tool
#tool nuget:?package=Bau.Libraries.OneTimePassword&version=1.0.12                

OneTimePassword

Implementaci�n de los algoritmos TOTP (RFC 6238) y HOTP RFC 4226 para generaci�n de contrase�as de un �nico uso con C#.

Publish package

Instalaci�n del paquete Nuget

dotnet add package Bau.Libraries.OneTimePassword

https://www.nuget.org/packages/Bau.Libraries.OneTimePassword

Introducci�n

Un algoritmo de contrase�a de uso �nico (One Time Password u OTP) es un m�todo de autenticaci�n que genera una contrase�a �nica y temporal para una sesi�n. Este tipo de contrase�a va a utilizarse una sola vez y caduca despu�s de un breve per�odo de tiempo.

Este tipo de algoritmos se utilizan para agregar una capa adicional de seguridad en diversas aplicaciones permitiendo la autentificaci�n en dos pasos (2FA o MFA).

Caracter�sticas clave de las OTP:

  • Temporalidad: tienen un tiempo limitado de validez, se pueden utilizar dentro de un breve per�odo de tiempo despu�s de su generaci�n.
  • Exclusividad: cada clave es �nica y se genera mediante algoritmos avanzados, garantizando que no se repita y que
  • solo sea accesible para su due�o.
  • Generaci�n segura: creadas mediante procesos criptogr�ficos que imposibilita la predicci�n para los atacantes.
  • F�cil implementaci�n: pueden enviarse a trav�s de varios medios, como mensajes de texto, correos electr�nicos o aplicaciones dedicadas, facilitando su integraci�n en diferentes sistemas.

Existen varios algoritmos para la generaci�n de claves OTP, esta librer�a genera claves utilizando HOTP o TOTP:

Algoritmo HOTP (HMAC-Based One-Time Password)

HOTP es un m�todo de autenticaci�n que genera contrase�as �nicas y temporales utilizando una clave secreta compartida y un contador. Este algoritmo es una parte fundamental de la iniciativa OATH (Initiative for Open Authentication) y publicado como RFC 4226 en 2005.

Caracter�sticas clave del algoritmo HOTP:

  • Clave secreta compartida: Ambas partes (el servidor y el dispositivo de autenticaci�n) comparten una clave secreta que se utiliza para generar las contrase�as OTP.
  • Contador: Un contador se incrementa cada vez que se genera una nueva contrase�a OTP. Este contador asegura que cada contrase�a OTP sea �nica.
  • Funci�n HMAC: La clave secreta y el valor del contador se procesan utilizando una funci�n HMAC (Hash-based Message Authentication Code) para generar la contrase�a OTP.
  • Generaci�n de OTP: La contrase�a OTP se genera combinando la clave secreta y el valor del contador, y luego truncando el resultado en un formato m�s amigable para el usuario, generalmente un n�mero de 6 a 8 d�gitos.

Proceso de funcionamiento del algoritmo HOTP:

  • Inicializaci�n: El servidor y el dispositivo de autenticaci�n acuerdan una clave secreta y un contador inicial.
  • Generaci�n de OTP: Cuando se necesita una contrase�a OTP, el dispositivo de autenticaci�n combina la clave secreta y el valor del contador actual, y aplica la funci�n HMAC para generar una contrase�a OTP.
  • Truncamiento: La salida de la funci�n HMAC se trunca para obtener una contrase�a OTP de 6 a 8 d�gitos.
  • Incremento del contador: Despu�s de usar la contrase�a OTP, el contador se incrementa en una unidad tanto en el servidor como en el dispositivo de autenticaci�n.
  • Autenticaci�n: El servidor verifica la contrase�a OTP proporcionada por el usuario generando una contrase�a OTP localmente con la clave secreta y el contador actual, y compar�ndola con la proporcionada por el usuario.

Ventajas del algoritmo HOTP: * Seguridad: Las contrase�as OTP son �nicas y temporales, lo que las hace m�s seguras que las contrase�as est�ticas. * Flexibilidad: Puede ser utilizado en una variedad de aplicaciones, incluyendo autenticaci�n en l�nea y transacciones financieras. Desventajas del algoritmo HOTP: * Problema de sincronizaci�n: Si los contadores del servidor y el dispositivo de autenticaci�n se desincronizan, puede requerir un protocolo de resincronizaci�n para resolver el problema. * No tiene per�odo de expiraci�n: Las contrase�as OTP generadas por HOTP permanecen v�lidas hasta que se utilice la siguiente, lo que puede ser un problema de seguridad si no se utiliza inmediatamente.

Algoritmo TOTP (Time-Based One-Time Password)

TOTP es un m�todo de autenticaci�n que genera contrase�as �nicas y temporales basadas en la clave secreta compartida y la hora actual. Este algoritmo es una variante del algoritmo HOTP (HMAC-Based One-Time Password) y se utiliza ampliamente en la autenticaci�n de dos factores (2FA).

Caracter�sticas clave del algoritmo TOTP:

  • Clave secreta compartida: ambas partes (el servidor y el dispositivo de autenticaci�n) comparten una clave secreta que se utiliza para generar las contrase�as OTP.
  • Hora actual: la hora actual se utiliza como variable para generar la contrase�a OTP, lo que asegura que cada contrase�a sea �nica y temporal.
  • Funci�n HMAC: La clave secreta y la hora actual se procesan utilizando una funci�n HMAC (Hash-based Message Authentication Code) para generar la contrase�a OTP.
  • Intervalo de tiempo: el algoritmo utiliza un intervalo de tiempo (generalmente 30 segundos) para determinar la validez de la contrase�a OTP.

Proceso de funcionamiento del algoritmo TOTP:

  • Inicializaci�n: el servidor y el dispositivo de autenticaci�n acuerdan una clave secreta y un tiempo inicial (generalmente el tiempo Unix).
  • Generaci�n de OTP: cuando se necesita una contrase�a OTP, el dispositivo de autenticaci�n combina la clave secreta y la hora actual y aplica la funci�n HMAC para generar una contrase�a OTP.
  • Truncamiento: La salida de la funci�n HMAC se trunca para obtener una contrase�a OTP de 6 a 8 d�gitos.
  • Verificaci�n: El servidor verifica la contrase�a OTP proporcionada por el usuario generando una contrase�a OTP localmente con la clave secreta y la hora actual, y compar�ndola con la proporcionada por el usuario.

Ventajas del algoritmo TOTP:

  • Seguridad: las contrase�as OTP son �nicas y temporales, lo que las hace m�s seguras que las contrase�as est�ticas.
  • Disponibilidad sin conexi�n: las contrase�as OTP se pueden generar sin conexi�n a Internet, lo que las hace ideales para usuarios que necesitan acceder a sus cuentas en �reas con poca o ninguna conectividad.
  • Usabilidad: el algoritmo TOTP es f�cil de implementar y utilizar, especialmente con aplicaciones de autenticaci�n como Authy y Google Authenticator.

Desventajas del algoritmo TOTP:

  • Problema de sincronizaci�n: si los relojes del servidor y el dispositivo de autenticaci�n no est�n sincronizados, puede requerir un protocolo de resincronizaci�n para resolver el problema.
  • Limitaciones de seguridad: aunque las contrase�as OTP son temporales, un atacante podr�a interceptar y utilizar una contrase�a OTP antes de que expire si tiene acceso a la clave secreta.

Utilizaci�n de la librer�a

Generaci�n de una clave HOTP

Para generar una clave HOTP utilizaremos la clase HotpGenerator. En el constructor debemos indicar:

  • Key: clave devuelta por el servidor de claves.
  • Encoding: modo de codificaci�n de la clave devuelta por el servidor de claves (texto plano, Base64 o Base32).
  • Algorithm: algoritmo de hashing utilizado para obtener los c�digos resultantes (Sha1, Sah128, Sha256). El valor habitual es SHA1.
  • Digits: n�mero de caracteres generados por el c�digo (de 6 a 8, lo habitual es 6).

Una vez inicializa la clase, simplemente llamando al m�todo Compute con el contador, obtendremos el c�digo de validaci�n:

using Bau.Libraries.OneTimePassword;

HotpGenerator hotp = new("KEY", Secret.Encoding.Plain, BaseTokenGenerator.HashAlgorithm.Sha1, 6);

string code = hotp.Compute(19238);

Generaci�n de una clave TOTP

Para generar una clave tOTP utilizaremos la clase TotpGenerator. En el constructor debemos indicar:

  • Key: clave devuelta por el servidor de claves.
  • Encoding: modo de codificaci�n de la clave devuelta por el servidor de claves (texto plano, Base64 o Base32).
  • Algorithm: algoritmo de hashing utilizado para obtener los c�digos resultantes (Sha1, Sah128, Sha256). El valor habitual es SHA1.
  • Digits: n�mero de caracteres generados por el c�digo (de 6 a 8, lo habitual es 6).

Una vez inicializa la clase, simplemente llamando al m�todo Compute para obtener el c�digo de validaci�n:

using Bau.Libraries.OneTimePassword;

TotpGenerator totp = new("KEY", Secret.Encoding.Plain, BaseTokenGenerator.HashAlgorithm.Sha1, 6);

string code = totp.Compute();

En este caso, si no le pasamos ninguna fecha, se utiliza la fecha del sistema pero le podemos pasar tanto una fecha en concreto como DateTime:

string code = totp.Compute(new DateTime(2024, 8, 2, 17, 30, 5));

como un valor long especificando la fecha Unix (n�mero de ticks desde el 1-1-1970):

string code = totp.Compute(1_991_289);

Inicialmente, el tiempo de validez de la clave, es de 30 segundos pero lo podemos modificar en cualquier momento:

using Bau.Libraries.OneTimePassword;

TotpGenerator totp = new("KEY", Secret.Encoding.Plain, BaseTokenGenerator.HashAlgorithm.Sha1, 6);

totp.TimeManager.IntervalSeconds = 60;

string code = totp.Compute();
Remaining Time

There is a method that will tell you how much time remains in the current time step window in seconds.

var remainingTime = totp.RemainingSeconds();
// there is also an overload that lets you specify the time
var remainingSeconds = totp.RemainingSeconds(DateTime.UtcNow);

Cr�ditos

Este proyecto se basa en Otp.Net desarrollado por .

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.19 97 8/20/2024
1.0.18 101 8/20/2024
1.0.17 96 8/19/2024
1.0.14 95 8/19/2024
1.0.13 93 8/19/2024
1.0.12 91 8/19/2024
1.0.8 97 8/18/2024
1.0.1 101 8/18/2024