PROJECTS: trueToken - usb token with an open source code

What is the token?

Token - personal authentication device, that allows to store and use passwords, cryptographic keys, digital signatures and other personal data secure.

It's major purposes are two-factor authentication, protection of e-mails and financial transactions.

Using our trueToken firmware, you can transform SenseLock hardware key into the full featured token, that supports PKCS#11 standart, version 2.11.

PKCS#11 is a cryptographic standart for tokens, developed by RSA Laboratories.

Learn more about PKCS#11.

Ýëåêòðîííûé êëþ÷ çàùèòû îò âçëîìà SenseLock RTC Ýëåêòðîííûé êëþ÷ çàùèòû îò âçëîìà SenseLock Genii

trueToken Features

  • HID-mode. No need to install any drivers.
  • 32 kb of non-volatile memory for data storage.
  • Assymetric cryptography using RSA-1024 algorithm inside of the token.
  • Symmetric cryptography using DES and 3DES algorithms inside of the token.
  • Hash calculation using SHA-1.
  • Creation and verification of digital signatures using RSA-1024 and SHA-1.
  • Key generation for asymmetric and symmetric cryptographic algorithms.

Benefits of trueToken

  • Open source code of token firmware guarantees, that there would be no backdoors or "engineer passwords".
  • Modifications to the token firmware can be done at any time.
  • New cryptographic algorithms, such as GOST 28147-89 and AES, can be added at any time by the developer.
  • Possible to use token in HID mode without any additional drivers.
  • trueToken is based on the SenseLock hardware key. It has Philips EAL5+ certified smart-card chip with hardware implemented RSA-1024, DES, 3DES and SHA-1 algorithms.

Special features

First RSA encryption/decryption call is slower than following calls using the same key. It is connected with caching function that holds the key in cache until next encryption/decryption call using different key.

InitPIN function is not implemented. It is connected with internal data decryption using User PIN meantime InitPIN is executed in SO mode.

C_GenerateKeyPain generates keys within software interface module and then passes them into the trueToken. It is connected with Senselock EL file system features.

Download

EXF module version: 1.16
DLL version: 1.16
Last update: February 27, 2009

Project includes:

  • TokenDemo.exe - small utility, that allows programming of blank SenseLock dongles with trueToken firmware and use some basic PKCS#11 functions.
  • SENSELOCK_PKCS.DLL - PKCS#11 interface library for trueToken.
  • SENSELOCK_PKCS_DEBUG.DLL - Debug version of PKCS#11 interface library for trueToken. It creates PKCS.LOG file in the current folder and logs all activity.

After initialization, user PIN is set to "12345678" (8 chars), and administrator PIN is set to "123456781234567812345678" (24 chars).

Download trueToken files

If you want to use trueToken in your products, please contact us using our contacts information.

Feature developments

Following items will be released in the nearest feature:

  • Creation of public/private keys inside of the SenseLock.
  • Add following mechanisms:
    CKM_AES_KEY_GEN
    CKM_AES_ECB
  • Add following functions:
    C_WrapKey
    C_UnwrapKey
    C_CopyObjects
  • GOST 28147-89 implementation.
  • "Danger" user PIN implementation. If this PIN will be used with trueToken - all stored data (passwords, keys) will be totally destroyed.

Supported PKCS#11 classes

When used with SenseLock dongles (64 kb models), 32 kb of memory will be available for user data storage.

NameSupported
CKO_DATAYes
CKO_PUBLIC_KEYYes
CKO_PRIVATE_KEYYes
CKO_SECRET_KEYYes

Supported PKCS#11 mechanisms

NameSupported
CKM_RSA_PKCS_KEY_PAIR_GEN
  Generate Key PairYes
CKM_RSA_PKCS
  EncryptYes
  DecryptYes
  SignYes
  VerifyYes
  WrapNo
  UnwrapNo
  Sign and RecoveryNo
  Verify and RecoveryNo
CKM_SHA1_RSA_PKCS
  SignYes
  VerifyYes
CKM_DES_KEY_GEN
  Generate KeyYes
CKM_DES_ECB
  EncryptYes
  DecryptYes
  WrapNo
  UnwrapNo
CKM_DES3_KEY_GEN
  Generate KeyYes
CKM_DES3_ECB
  EncryptYes
  DecryptYes
  WrapNo
  UnwrapNo

Supported PKCS#11 functions

NameSupported
C_InitializeYes
C_FinalizeYes
C_InitTokenYes
C_GetInfoYes
C_GetFunctionListYes
C_GetSlotListYes
C_GetSlotInfoYes
C_GetTokenInfoYes
C_GetMechanismInfoYes
C_GetMechanismListYes
C_InitPINNo
C_SetPINYes
C_OpenSessionYes
C_CloseSessionYes
C_GetSessionInfoYes
C_LoginYes
C_LogoutYes
C_CreateObjectYes
C_CopyObjectYes
C_DestroyObjectYes
C_GetObjectSizeYes
C_GetAttributeValueYes
C_SetAttributeValueYes
C_FindObjectsInitYes
C_FindObjectsYes
C_FindObjectsFinalYes
C_WaitForSlotEventYes
C_SeedRandomYes
C_GenerateRandomYes
C_GenerateKeyYes
C_GenerateKeyPairYes
C_WrapKeyNo
C_UnwrapKeyNo
C_EncryptYes
C_EncryptInitYes
C_EncryptUpdateYes
C_EncryptFinalYes
C_DecryptYes
C_DecryptInitYes
C_DecryptUpdateYes
C_DecryptFinalYes
C_DigestYes
C_DigestInitYes
C_DigestUpdateYes
C_DigestFinalYes
C_SignYes
C_SignInitYes
C_SignUpdateYes
C_SignFinalYes
C_VerifyYes
C_VerifyInitYes
C_VerifyUpdateYes
C_VerifyFinalYes
C_GetOperationStateNo
C_SetOperationStateNo
C_CopyObjectNo
C_DigestKeyNo
C_SignRecoverInitNo
C_SignRecoverNo
C_VerifyRecoverInitNo
C_VerifyRecoverNo
C_DigestEncryptUpdateNo
C_DecryptDigestUpdateNo
C_SignEncryptUpdateNo
C_DecryptVerifyUpdateNo
C_DeriveKeyNo
C_CancelFunctionNo
C_GetFunctionStatusNo