Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
stoken(1)		     General Commands Manual		       stoken(1)

NAME
     stoken - software token for cryptographic authentication

SYNOPSIS
     stoken [tokencode] [--stdin] [--force] [--next] [opts]

     stoken import {--file=file | --token=token_string} [--force] [opts]

     stoken setpin [opts]

     stoken setpass [opts]

     stoken show [--seed] [opts]

     stoken  export  [{--blocks  |  --iphone  |  --android  |  --v3  | --sdtid |
     --qr=file.png | --show-qr}] [opts]

     stoken issue [--template=file]

     stoken help

     stoken version

DESCRIPTION
     stoken is a software token compatible with RSA SecurID  128-bit  (AES)  to-
     kens.  The command-line interface provides facilities for importing new to-
     kens,  displaying	the  current tokencode, encrypting the seed with a user-
     specified password, storing the user's PIN alongside the token, and viewing
     or exporting the token data.

BASIC USAGE
     Use stoken import to decode a token string and write it  into  ~/.stokenrc.
     This  may prompt for a device ID and/or password, depending on what options
     your administrator used to create the token.  The token string can be  pro-
     vided on the command line, or read from a text file.

     stoken will autodetect the following types of token strings:

     286510182209303756117707012447003320623006...
     29658-21098-45467-64675-65731-01441-11337...
	    Pure  numeric  (81-digit)  "ctf"  (compressed token format) strings,
	    with or without dashes.  These may have  been  furnished  as-is,  or
	    they could have been derived from an sdtid file by the RSA TokenCon-
	    verter program.

     com.rsa.securid.iphone://ctf?ctfData=229639330774927764401...
	    iPhone-compatible token strings.

     http://127.0.0.1/securid/ctf?ctfData=250494932146245277466...
     http://127.0.0.1/securid/ctf?ctfData=AwAAfBc3QSopPxxjLGnxf...
	    Android-compatible token strings.

     <?xml version=...
	    RSA  sdtid-formatted  XML  files.	These  should be imported from a
	    file: stoken import --file=FILE.SDTID.

     Tokens supplied as QR codes can be converted back to standard URIs by  run-
     ning zbarimg(1) on the image file.

     The  device ID, if used, can be viewed in the "about" menu for the RSA soft
     token app on the phone.  Numeric ctf strings and smartphone tokens bound to
     a device ID contain a seed that is encrypted using the device ID, so the ID
     must be furnished before stoken can successfully import the  token.   sdtid
     files  can  be  imported without knowledge of the device ID, as long as the
     password (if any) is known.

     By default, stoken import will refuse to overwrite  an  existing  token  in
     ~/.stokenrc.  The --force switch overrides this check.

     stoken import will normally prompt for a new password, which is used to en-
     crypt  the  seed before storing it in ~/.stokenrc.  This can be bypassed by
     entering an empty password, or specifying --new-password='' on the  command
     line.   It  is recommended to choose a longer, hard-to-guess passphrase for
     this purpose.

     After a token has been imported, running  stoken  with  no  arguments  will
     prompt  for  any  required password or PIN, then display the current token-
     code.

     Tokencodes are computed from the raw (decrypted)  seed  data,  the  current
     time  of  day,  and the PIN.  If the same seed is installed on multiple de-
     vices, they should all produce identical tokencodes.  If they do not,  dou-
     ble-check	the  timezone  setting and consider using NTP to synchronize the
     system time to a known good source.

     stoken setpin can be used to save the PIN in ~/.stokenrc.	Not  all  tokens
     will  require  a  PIN;  this can be configured by the SecurID administrator
     when generating new tokens.  Setting an empty PIN will remove the PIN  from
     ~/.stokenrc  so  that  the user will be prompted every time it is required.
     See the SECURITY CONSIDERATIONS section below for additional details.

     stoken setpass encrypts the seed and PIN (if present) in ~/.stokenrc with a
     user-selectable password or passphrase.  If an empty password  is	entered,
     the  password will be removed.  See the SECURITY CONSIDERATIONS section be-
     low for additional details.

VIEWING TOKENS
     stoken show displays information about the current  token,  typically  read
     from  ~/.stokenrc.   The --seed option displays the encrypted and decrypted
     seed bytes (which should be treated as sensitive data, as they can be  used
     to derive tokencodes).

     stoken  export  translates the current token into a format suitable for im-
     portation to another device.

     stoken issue generates a new software token in XML sdtid  format.	 A  tem-
     plate file, itself in sdtid format, may be provided to override some or all
     of  the  human-readable  fields.  This would permit appropriate serial num-
     bers, expiration dates, usernames, etc. to be specified.  If Secret,  Seed,
     or MAC fields are present in the template file, they will be ignored.

GLOBAL OPTIONS
     --rcfile=file
	    Use  an  alternate	.stokenrc configuration file.  This is typically
	    used to support multiple tokens on the  same  user's  UNIX	account.
	    Note  that	the  .stokenrc	file stores additional data (such as the
	    PIN), so it cannot be parsed as  a	"raw"  token  string  by  stoken
	    --file.

     --password=password, -p password
	    Use  a password supplied from the command line, instead of prompting
	    the user.  See notes in SECURITY CONSIDERATIONS below.

     --pin=pin, -n pin
	    Use a PIN supplied from the command line, instead of  prompting  the
	    user.  See notes in SECURITY CONSIDERATIONS below.	If you save your
	    PIN  in ~/.stokenrc, note that --pin=0000 is often required when ac-
	    tivating a new soft token for the first time.

     --devid=devid
	    Use a device ID supplied from the command line to decrypt the token.
	    A token can be bound to a class GUID device ID (i.e. a certain  type
	    of	device,  such as "iPhone" or "Android"), a unique device ID (one
	    specific unit), or	nothing.   stoken  will  attempt  to  autodetect
	    matches  with  a  class  GUID, but on rare occasions this results in
	    false positives due to hash collisions.  In these cases,  the  bound
	    device  ID	should	be specified on the command line to override au-
	    todetection.

EXPORT OPTIONS
     --new-password=password
	    Supply the encryption password from the command line for  operations
	    that  write  out  a  token string or .stokenrc file: import, export,
	    setpass, and issue.  See notes in SECURITY CONSIDERATIONS below.

     --keep-password
	    If the token in the .stokenrc file is protected with a password, re-
	    tain the same password when exporting the token.   By  default,  the
	    export  operation  will  not encrypt the token with a password; note
	    that it may not be possible to enter all possible passwords  on  de-
	    vices with limited text input capabilities (such as feature phones).

     --new-pin=pin
	    Supply  a  new  PIN  from the command line for the setpin operation.
	    See notes in SECURITY CONSIDERATIONS below.

     --new-devid=devid
	    Used with the export or issue command to encrypt the new token  with
	    a specific device ID.  This is only used for testing purposes.

     --blocks, --iphone, --android, --v3
	    Used with the export command to select the output format.  See exam-
	    ples  in  BASIC USAGE.  By default, the export command will print an
	    unformatted 81-digit string to standard output.

     --sdtid, --xml
	    These options are synonyms.  Both export a token to standard  output
	    in RSA's sdtid XML format.

     --qr=file.png
	    Encode  the  token	as a QR code and write it to file.png.	This re-
	    quires the qrencode program to be installed.

     --show-qr
	    Encode the token as a QR code and  immediately  display  it  on  the
	    screen.  This requires the qrencode program to be installed.  If the
	    QR_VIEWER  environment variable is set, stoken will use that program
	    as the preferred viewer.  Otherwise it will try  to  execute  a  few
	    common Linux image viewers, and give up if none of them exist.

     --template=file
	    Used with the export or issue commands to override fields in the XML
	    output.  The template file should look like any standard sdtid file,
	    but all fields are optional and will default to reasonably sane val-
	    ues  if  omitted.  This can be used to force the output XML to use a
	    specific serial number, user name, expiration  date,  etc.	 Correct
	    MAC  checksums will be (re)computed on the provided values.  See the
	    examples directory in the source distribution for more information.

OTHER OPTIONS
     --use-time={unix_time|+offset|-offset}
	    Instead of generating a tokencode based on the current time of  day,
	    force  a  specific time, or adjust the current time based on a posi-
	    tive or negative offset (specified in seconds).  This is  only  used
	    for testing purposes.

     --next
	    Generate the next tokencode instead of the current tokencode.  For a
	    60-second token, this is equivalent to --use-time=+60.

     --stdin, -s
	    When  generating a tokencode that requires either a password or PIN,
	    read the password or PIN as single line from standard  input.   This
	    is	intended  to  allow external programs to call stoken to generate
	    single-use passwords without user intervention; see  NON-INTERACTIVE
	    USE below.

     --force, -f
	    Override token expiration date checks (for tokencode) or token over-
	    write checks (for import).

     --batch, -b
	    Abort  with  an  error exit code if any user input is required.  In-
	    tended for automated operation and testing.

     --file=file
	    Read a ctf string, an Android/iPhone URI, or an XML sdtid token from
	    file instead of the .stokenrc configuration.  Most	stoken	commands
	    accept this flag, but it is expected that the typical user will save
	    his  token	in  ~/.stokenrc instead of supplying it by hand on every
	    invocation.  Typically --file and --token are only used for the  im-
	    port command.

     --token=token_string
	    Use  a  token  from  the command line instead of the .stokenrc file.
	    See above notes on --file.

     --random
	    Generate a random token on the fly.  Used for testing or  demonstra-
	    tions  only.   These  tokens should not be used for real authentica-
	    tion.

     --help, -h
	    Display basic usage information.

     --version, -v
	    Display version information.

SECURITY CONSIDERATIONS
     Software tokens, unlike hardware tokens, are relatively easy to  replicate.
     Systems  that store soft token seeds should be carefully guarded to prevent
     unauthorized disclosure.  The use of whole-disk encryption, such  as  True-
     Crypt,  is strongly recommended for laptops and other portable devices that
     are easily lost or stolen.

     stoken permits users to store their PIN in ~/.stokenrc to allow  for  auto-
     mated (scriptable) generation of tokencodes, but the risks of this approach
     should be carefully weighed against the benefits.

     Using  the  setpass command to encrypt the seed and PIN in ~/.stokenrc pro-
     vides some degree of protection against unauthorized access, but  does  not
     necessarily cover all possible attack vectors.  A host that is already com-
     promised  (e.g.  running  a keylogger) will not provide adequate protection
     for any seed(s) stored on it.

     stoken encryption passwords may be up to  40  characters  long.   A  longer
     passphrase  constructed  from several random words can provide more protec-
     tion from brute-force attacks than a shorter password.

     Entering a password or PIN on the	command  line  is  generally  unsafe  on
     multiuser	systems, as other users may be able to view the command line ar-
     guments in ps or similar utilities.  The command line could also be  cached
     in shell history files.

     Encoding  QR  tokens may expose the seed data through ps, and the --show-qr
     option writes temporary PNG files in /tmp.

     stoken attempts to lock pages to prevent swapping out to disk, but does not
     scrub secrets from process memory.

NON-INTERACTIVE USE
     Other applications, such as VPN clients, may want to invoke stoken  non-in-
     teractively  to  generate single-use passwords.  Three usage modes are sup-
     ported, depending on the level of security (and/or convenience) that is re-
     quired:

   No password or PIN
     The user configures stoken to print a tokencode  immediately  upon  invoca-
     tion,  with no prompts, by using setpin to store the PIN in ~/.stokenrc and
     using setpass to set an empty password.  The other application can then in-
     voke stoken --batch and read the tokencode through  a  pipe  from	standard
     output.

     This  provides  no security for the seed, but may be useful in applications
     where (re-)authentication is frequent or unattended operation is required.

   Save the PIN and set a password
     The user configures stoken to encrypt the ~/.stokenrc secrets with a  pass-
     word  using  setpass, then saves the PIN with setpin.  The PIN and the seed
     will both be encrypted with the password.	The other application  will  re-
     quest the password from the user, then call stoken --stdin, write the pass-
     word  to  stoken's standard input through a pipe, and read back a tokencode
     from stoken's standard output.

   No password; prompt for the PIN
     Similar to above, but set an empty password using setpass, do not save  the
     PIN in ~/.stokenrc, and pass the PIN to stoken --stdin via standard input.

BUGS/TODO
     sdtid  support  is  still	new  and  may  choke  on unexpected input.  As a
     short-term workaround you can try	commenting  out  the  sanity  checks  in
     sdtid_decrypt() to see if the problem goes away.

     Features  under  development  include: hardware token seeds (and the stoken
     split command needed to work with them), and support for non-Linux hosts.

     Patches are always welcome.

SEE ALSO
     stoken-gui(1).

FILES
     ~/.stokenrc
	    Default configuration file.

AUTHOR
     Kevin Cernekee <cernekee@gmail.com>

				   2012-09-09			       stoken(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=stoken&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help