Opened 10 years ago

Last modified 7 days ago

#26 assigned defect

Update clok card to support contemporary time zones

Reported by: Eric Swenson Owned by: Eric Swenson
Priority: major Milestone: MR12.9
Component: Hardcore Version: MR12.5
Keywords: Cc:

Description

Bring the configuration deck 'clok' card time zone list up to contemporary usage. -- Charles

Change History (4)

comment:3 by Eric Swenson, 10 days ago

Milestone: → MR12.9
Status: new → assigned
Version: → MR12.5

comment:4 by Eric Swenson, 9 days ago

What exists already (from the 1984 PNT version 2 work)

  • The PNT can store long passwords. pnt_entry.incl.pl1 declares password and network_password as char (32), with flags short_pw and short_network_pw meaning "this is an 8-character password scrambled the old way".
  • The header comment describes the intended design: "Since the 32 character scrambling algorithm will not give the same results, the short_XX flags indicate that the old scrambler should be used. The short flags are automatically turned off by calls to update the password with the long-scrambled form."
  • The PNT already compares long passwords. pnt_db_util_ (bound_pnt_interface_) compares the first 8 characters when short_pw is on, and all 32 otherwise.

What is missing:

  1. A 32-character scrambler. scramble_ (bound_user_ctl_) takes and returns char (8). No long form was ever written. A new routine is needed (for example scramble_$long). It should be a one-way hash of up to 32 characters into 32 characters (or the stored form's 256 bits). Ideally it would be a modern construction; something DES-based like encipher_ would at least match the existing style. The choice affects security and is permanent once passwords are stored.
  2. Every place that reads, scrambles or compares a password must handle 32 characters. Each of these calls scramble_ or read_password_ with 8-character variables (found by grep; each needs review):
Area Programs
Login (answering service)bound_user_ctl_: lg_ctl_.pl1, dialup_.pl1; bound_ls_user_ctl_: uc_login_.pl1; bound_login_server_: ls_validate_user_.pl1
FTP and network loginsbound_ftp_ctl_: ftp_dialup_.pl1 |
Password administration bound_admin_rtnes_: new_user.pl1; bound_admin_tools_: set_special_password.pl1; bound_pnt_interface_: pnt_db_util_.pl1, convert_v2_pnt_.pl1
Operator/admin modes bound_system_control_: sc_admin_mode_.pl1, sc_requests_.pl1
Card input, remote I/O, I/O daemon bound_card_input_: read_cards_.pl1, cards_overseer_.pl1; bound_remote_io_: remote_driver_.pl1; bound_iodd_: iodd_.pl1
Reading passwords bound_cipher_: read_password_.pl1 (input length)
Others, which use their own passwords, not the PNT encode, intermultics_copy, user_ftp_requests_, cftp_, exp_getpw_, COBOL MCS, APL

Also: the login dialogue's password masking, the -change_password
handling (old/new password prompts, the length check), and the messages
that say a password may have at most 8 characters.

  1. Migration. Existing 8-character passwords keep short_pw on and are checked with the old scrambler. When a user changes a password, it is stored in the long form and short_pw is turned off. That is what the 1984 design intended, so no conversion pass is needed.

Suggested plan

  1. Choose the long scrambling algorithm and write scramble_$long (with a test program).
  2. Change the PNT update path (pnt_manager_/pnt_db_util_ and new_user/password changes) to store long passwords and clear short_pw.
  3. Change each login path in the table to read up to 32 characters, and compare with the scrambler matching the entry's short_pw flag.
  4. Update the documentation (login, new_proc, change_password, new_user, AG/AK manuals) for the new limit.

All of these are standard-system and answering-service changes, so this
needs a set of MCRs and careful testing on a test system, including the
login server and FTP logins.

Version 0, edited 9 days ago by Eric Swenson (next)
Note: See TracTickets for help on using tickets.