cfSOFTWARE Contact Us Technical Support About Us cfSOFTWARE

corner
Across the Boards
Introduction
System Specs
APPX Peer-to-Peer Communications
APPX Router
Dialog - Terminal Scripting
XAPI - Terminal Access and Control
New Features and Updates
Request a Trial
corner
   Across the Boards updates

New Features and Updates for APPX Router

Last Update: 11/17/01
pages


1. APPX Router v1.40 Enhancements
=================================
   - Encryption
   - Encryption Negotiation
   - Specifying Encryption (PC Client)
   - Encryption Exits
   - Specifying Encryption (APPX Router)
   - Encryption Databases
       - Operation of Encryption without a Database
       - Configuring a Local Database
       - Configuring a Remote Database (TCP/IP)
       - Accessing a Remote Database via LU6.2
       - Accessing the pcMAINFRAME Remote Database
       - Configuring a Database DLL
   - Encryption Module "0" - Description
   - Encryption Module "A" - Description


Encryption
==========
The most significant new feature of v1.40 is support for link level
encryption between PC clients and the APPX Router.  This release adds
support for encrypting PC initiated sessions.  Encryption on host initiated
sessions is not supported.  Support is provided for the coexistence of
non-encrypted sessions, if needed.  Once the encrypted session is
established, the existence of encryption is essentially transparent to
the APPX applications.

Encryption (a separately licensed feature of Across the Boards and
pcMAINFRAME, available only in the United States) is provided by
enhancements to the APPX/TCP device drivers, and new loadable encryption
modules.  Encryption modules support one or more modes of operation, and
each side of the link (eg. the PC client and the APPX Router) are configured
with a list of "encryption modes" that are acceptable to that side.  At
link startup, the two side will negotiate (if possible) an encryption mode
acceptable to both sides.  If so configured, the two side may agree on
a non-encrypted mode of operation as well.

Note: encryption modules have considerable latitude in how things like
key exchange are implemented.  The following discussion describes typical
cases.  See the description of individual encryption modules for more
information.

In addition to the standard link startup data, additional data is required
during the startup of most encrypted sessions.  Amongst other things, three
data strings are factored into the session key used to actually encrypt
the link.  These are a "Shared Secret", an "ID" and an "ID Shared Secret."
In most applications, the ID and ID Shared Secret are implemented as a
user ID and password.  These are all optional.  In addition, most encryption
modules provide for an optional Diffie-Hellman exchange, or other key
exchange, in addition to the three user specified data items.

Encryption modules are structured so that neither of the shared secrets are
ever directly exchanged over the link, in any form.  They are verified as
they are used to modify the session encryption key during the key negotiation
process.  If the shared secrets on the two sides do not match, "challenge
strings" sent back and forth will not be decryptable into valid data
by the receiver, thus leading to a key negotiation failure.

If an ID is provided, it is exchanged over the link in encrypted form.  In
this phase the encryption key is built from the shared secret and any
data from the (optional) key exchange protocol.  The initiating PC client
provides its local encryption module with the ID and its corresponding ID
shared secret.  The answering side (the APPX Router) receives only the ID
(as described above), and uses that to look up the corresponding ID shared
secret in a database.  Both sides then factor the ID shared secret (in
addition to the other data) into the session key, and again exchange
challenge strings.  If successful, an encrypted session is established,
and the PC client and APPX Router will have authenticated themselves to
each other.

In addition to encryption modes, the two sides can negotiate non-encrypted
operation or non-encrypted-ID'd operation.  Non-encrypted operation is
essentially the same as "old" APPX operation, while non-encrypted-ID'd
provides for an exchange of ID and ID shared secret information in a non-
encrypted form.  Non-encrypted-ID'd operation is useful in cases where
encryption is not required (for example, for users on an internal LAN),
but the application wishes to let APPX and the APPX Router take care of
authentication.

Note: A mainframe APPX application that wishes to require encryption,
or at least an "ID'd" mode, must enforce that requirement.  An APPX
session can still be started with that mainframe application, especially
over a link that does not support encryption (for example, over a 3270
connection).  If this is not acceptable, the mainframe APPX application
must check the status of the session after the APPX Connect, and reject
the session (via an APPX Disconnect), if encryption is not on.  A PC
application can require encryption by specifying the "Encryption
Required" option, and verifying that the device driver accepted the
ENCRYPTLINK data.

Encryption support requires an APPX Router v1.40, with installed
encryption modules, and client APPX/TCP device driver (CFXATWS3) with
a build date of at least 7/10/01, with installed encryption modules.
Encryption also requires that the PC client be configured to use the
"Format-3" (or "APPX Router") connect type (the Format-2 connect type
is intended to support CICS Listeners, and does not have provisions for
exchanging the extra data required to negotiate encryption).  In addition,
each side must have a configured list of acceptable encryption modes,
and must specify an "encryption requirement."



Encryption Negotiation
======================
Encryption modes are negotiated by the initiating and answering APPX
service modules (the APPX/TCP driver on the PC client side).  Each side
begins with a user configurable list of acceptable encryption modes.  In
addition, a "encryption requirement" flag is defined for each side.  Each
entry in the mode list is three characters, typically a letter and two
digits.  The letter is used to build the name of the encryption module (eg.
CFXENCRx3.DLL), and the digits are used to select the mode of operation
(00-31).  The list of acceptable modes from the initiating APPX is matched
by the answering APPX Router against its list of acceptable modes.  The
"leftmost" matching mode in the answerer's list is selected.

In addition to the specific encryption modules' modes, modes "000" and
"001" are available.  Mode "000", specifies no encryption, if negotiated.
Mode "001" specifies no encryption, but requires an ID exchange.  While
these modes may be specified explicitly, they are usually added to the
list of modes implicitly by the specified "encryption requirement."  If
encryption "allowed" is specified, "001" and "000" are implicitly added
to the list of modes.  If "allowed ID" is specified, only "001" is
implicitly added.

Each side may specify one of four "encryption requirement" settings:

        - Not allowed   - Encryption is never negotiated
        - Allowed       - Encryption is negotiated if possible
        - Allowed ID    - Encryption is negotiated if possible, but if
                          not, only the ID exchange non-encrypted mode
                          is allowed
        - Required      - Encryption is required, and one of the explicitly
                          listed modes must be negotiated

Note: if modes "000" or "001" are explicitly specified, these may weaken
the meaning of the encryption requirement setting.  Any mode specified
explicitly will negotiate as an acceptable mode for that encryption
requirement.  Thus explicitly specifying mode "001" and "encryption
required," will allow mode "001" to be negotiated.

If "Allowed ID" or "Encryption Required" is specified, the session will fail
if a Format-3 connect is not used, even if mode "000" is explicitly listed.
At the APPX Router side, the specification of allowed-ID or encryption
required will fail the session if the PC client does not use the Format-3
connect, and does not offer to negotiate encryption (eg. if the PC specified
"Encryption Not Allowed" or is an older version that does not support
encryption).

"Preference tags" may be included in a mode list.  A preference tag is two
dash characters followed by a digit, 1-9.  Preference tags are inserted in
the list of acceptable modes, and are included in the list sent during the
negotiation process.  An implicit preference tag of "--0" exists at the
very left of the acceptable mode list, and preference tag "0" remains in
effect until another tag is encountered.  When matching modes, the answering
APPX keeps track of the preference tag in effect for each list (the one from
the initiator and the one from the caller), and records the preference tag
in effect for the mode selected.  For example, given the following lists:

        D01 --2 D02 --7 C01 --9 B02 B01         (initiator)
        A01 A02 --2 B01 B02 --3 C01 C02         (answerer)

The matched mode would be "B01", and the preference tag returned to the
initiator would be "9", and "2" would be returned to the answerer.

Wildcards may be included in a mode list.  The initiator expands any
wildcards in its list by attempting to load all encryption modules matching
the wildcard, and enumerating all modes in the selected modules matching the
wildcard.  Thus the list sent to the answerer in the negotiation process
contains no wildcards, and only modes that are actually supported at the
client.  The answerer follows a similar process before matching its list of
acceptable modes against the client's.  An asterisk in the first position of
the mode provides for a wildcard selection of the encryption DLL.  Asterisks
or letters in the second and third position provides for wildcard selection
of the mode with the selected DLL(s).  See the section on "Wildcard Mode
Selection" below.  Some sample wildcard  specifications:

        A**     - Any mode in encryption DLL "A"
        AAB     - Encryption DLL "A", any mode that "Includes Shared Secret"
        ***     - Any encryption DLL, any mode
        *01     - Any encryption DLL, mode 1
        *AJ     - Any encryption DLL, any mode w/"Shared Secret" and "Strong"


        Wildcard Mode Selection
        -----------------------
        The wildcard used for mode selection is a two character string
        representing an eight bit binary number.  Any set bit in the
        binary number adds a filter to the modes selected for the
        encryption DLL.

                              hgfedcba
                              --------     a - Includes Shared Secret
                       "**" - 00000000     b - Includes ID Shared Secret
                       "AA" - 00000000     c - Include Key Exchange
                       "AB" - 00000001     d - "Strong" Encryption
                       "AC" - 00000010
                         .                e-h - Reserved
                         .
                         .                Note: "**" is a synonym for "AA"
                       "AP" - 00001111
                       "BA" - 00010000
                         .
                         .
                         .
                       "PP" - 11111111


The selected mode, and its associated preference tag, is returned to the
initiating APPX.  The mode and preference tag are also made used by the
APPX Router and passed to the mainframe APPX.  Note that the two
preference tags represent the tags for each side, and may well be different.



Specifying Encryption (PC Client)
=================================
The PC client specifies its encryption requirement by sending an ENCRYPTLINK
XAPI Device Control String to the device driver before the APPX Connect.

The ENCRYPTLINK control string is shown in "Appendix B - ENCRYPTLINK Control
String" (see cfxctls.h for the latest version).  The control string provides
for the specification of the encryption requirement, list of acceptable
encryption modes, shared secret, ID and ID shared secret, as described in
the previous sections.  The shared secret, ID and ID shared secret fields
should be padded with nulls.  The exact interpretation of the ID field
is dependent on the encryption database source configured at the APPX
Router, but the ID field is typically case-insensitive.  The two shared
secret fields are always case sensitive and must match the values specified
at the APPX Router bit for bit.  pcMAINFRAME note: pcMAINFRAME uses only
uppercase passwords for the ID shared secret.

The PC client may specify the address of an encryption exit that is called
by the encryption support in the driver to provide an additional source of
data and to further qualify the session authorization.  In conjunction
with the exit, the PC client may specify up to 32 bytes of data in the
session_id field.  This is a data area reserved for the application and
will be passed intact to the encryption exit.  While any data the
application wishes may be stored in the session_id field, the primary use
for this field is to allow the encryption exit to correlate a call to
the exit, to a particular APPX session in the application.  A common use
for the session_id field is to pass a pointer to a storage area to the exit
(this is especially useful if the application is multi-threaded and more
than one APPX Connect can be in progress at a time).

Programming note: a client application that wishes to provide the user
with a signon screen, and an ability to retry the signon if it fails,
should interpret the message field if the APPX connect fails.  Specifically
the 1x10:, 1x13: and 1582: messages should be considered for retry.

The PC client APPX application may also check the status of the encryption
on the link via the ENCRYPTSTATUS XAPI Send/Receive Device Control String.

The ENCRYPTSTATUS control string is shown in "Appendix C - ENCRYPTSTATUS
Control String" (see cfxctls.h for the latest version).



Encryption Exits
================
The application may specify an encryption exit, which will be invoked
during negotiation and key exchange to supply data and validate the
connection.

The address of the encryption exit is passed in the ENCRYPTLINK control
string.

The exit is called and passed a pointer to an ENCR_EXIT_BLOCK control block.

The ENCR_EXIT_BLOCK control block is shown in "Appendix D - ENCR_EXIT_BLOCK
Control Block" (see cfxctls.h for the latest version).

If an exit exists, it may provide the following functions:

        1. Get Version
           - Returns version information about exit
        2. Get ID
           - Returns ID to use
           - If the exit does not respond to this request, the ID specified
             at connect time will be used.  If no ID was specified at connect
             time, a default of nulls will be used for the ID.
        3. Get shared secret
           - If the exit does not respond to this request, the shared secret
             specified at connect time will be used.  If no shared secret
             was specified at connect time, a default of nulls will be used.
        4. Get shared secret for ID
           - Query ID shared secret based on ID
           - Exit must fill in ID-shared-secret based on passed ID
           - At the answering APPX: If the exit does not respond to this
             request, the ID passed at the connect, will be matched against
             the ID from the peer.  If they match, the shared secret set at
             connect time will be used (default of null).  Two special IDs
             are defined that may be passed at connect: "<ignore"> and
             "<nomatch>".  "<ignore>" will always match, and "<nomatch>"
             will always fail to match.
        5. Validate session
           - The encryption mode, preference tag, ID, IP address, and other
             data is passed
           - The exit must decide if the session may proceed
           - If the exit does not respond to this request, the session will
             be accepted.
        6. Session Failure report
           - If the encryption module fails a session due to a negotiation
             error, or a shared secret error, this exit function will be
             called.  If available, the ID, and other information, will be
             passed.  Intended to allow "locking" an ID if too many errors
             occur.
        7. There are "special" variants of "Get shared secret for ID" and
           "Validate session."  With these, special names of the form "<..>"
           can be passed.  Note that these names are reserved, and should be
           rejected for the non-special versions of these functions.
           Currently defined are:

                <nil>           - Used if passed User ID is all nulls
                <unknown>       - Used if no User ID is available (eg. for
                                  a non-encrypted session or a "000" session)


The exit can set various return codes, in addition to the defined responses:
       -1. No response
        0. OK, continue
        1. Reject ID (message returned)
        2. Reject ID Locked (message returned)
        3. Reject session (message returned)
        4. Error (graceful shutdown) (message returned)
        5. Error (hard shutdown) (message returned)



Specifying Encryption (APPX Router)
===================================
Encryption is specified on the APPX Router on a per-listener basis.  The
"Encryption" tab of a TCP/IP listener may be used to specify the "encryption
requirement" flag and the list of acceptable encryption modes.  In addition,
the encryption database source may be defined.

An encryption source of "None" may be specified.  This is equivalent to
specifying an encryption database source that itself is coded as have
a source of "None."

Encryption Database Sources are a new major level configuration option in
the APPX Router.  One encryption database source may be used by one or
more TCP/IP listeners.

The encryption database source entry defines the source of the encryption
database containing IDs, ID shared secrets and similar data.  Four types of
sources may be defined (these are described in more detail below):

        None (or "None" Specified in Listener)
        --------------------------------------
        No database is specified.  In general this will lead to all encrypted
        sessions failing, unless an encryption mode with no external data
        requirements is used.

        Local Database
        --------------
        A file on the APPX Router is used as the database.  Currently, one
        format, "EX1", is supported.  The layout of and features of this
        file is described in "Appendix A - Router Encryption Database 'EX1'
        Format."

        Remote Database (TCP/IP)
        ------------------------
        A remote encryption database server is queried for the encryption
        data.  pcMAINFRAME's security database can be used for a Remote
        database.

        Database DLL
        ------------
        A user written DLL is called for the encryption data.



Encryption Databases
====================
Encryption databases are used to store data specific to an ID on the APPX
Router.  Encryption database can provide several types of information, based
on, and in addition to, the basic ID data.  The exact capabilities are
dependent on the particular data source, but an overview is provided in this
section.

Note: encryption databases may contain entries for two special user names:
"<nil>" and "<unknown>".  The <nil> user ID is used if the client passes
a user ID of all nulls. The <unknown> user ID is used when no ID is
exchanged with the client (for example, if an old non-encryption capable
client starts a session).  These special users allow for other data,
such as security classes and overrides, to be supplied for sessions not
using user IDs.

Note: From the APPX Router's perspective, the encryption database has one
flat record per ID.  Most databases will physically have a more complex
structure, but the code supporting those databases hides those complexities
from the Router (for example, "EX1" format local databases use a two level
scheme of users and profiles, but present only "users" to the Router).

Note: Encryption databases are queried from inside an Encryption Exit
supplied by the APPX Router to the encryption module.  The database should
be designed to support the queries defined in the interface to the
encryption exit.

Databases may provide additional rules regarding encryption requirements
for specific users, and for specific IP addresses.  Encryption can be
allowed, disallowed or required on a per-user basis, and also based
on the source address of the Client (for example, encryption might be
optional for a particular user while working from the company's internal
LAN, but required when working from home).

Note: Some care must be taken when planning the encryption requirements
and allowed mode list configured for the listener in the APPX Router, as
they interact with the encryption requirements specified in the encryption
databases.  The base session is established by the rules specified for the
listener (the base session and listener encryption rules are applied before
the encryption database is accessed).  Thus, if encryption is required in
the listener definition, encryption will always be required at the base
level, and a specification of "encryption optional" in the database will
not have any real effect.

A database may provide some scheme for classifying encryption modes
(generally based on the associated preference tags), and provide rules
for when which class of encryption modes is allowed.

Databases may provide additional security classes that are processed by
the APPX Router, and allow authorization of Host Connections based on the
user ID.

Databases may also provide additional ("Format-3") override data on a per
user basis.  This would, for example, allow storage of the LU6.2 user ID
and password (if needed for a particular host connection) on the APPX Router,
instead of allowing/requiring end-users to set that configuration.  Overrides
specified in the encryption database are applied before overrides from the
client, thus may be overridden by data from the client.

The format and capabilities of the "EX1" format local encryption database
are described in "Appendix A - Router Encryption Database 'EX1' Format."


Operation of Encryption without a Database
------------------------------------------
If no database is specified, the APPX Router will provide default values
of all nulls for the "Shared Secret", "ID" and "ID Shared Secret."  In
general this will lead to all encrypted sessions failing, unless an
encryption mode with no external data requirements is used, or nulls are
specified for the "Shared Secret", "ID" and "ID Shared Secret" on the client.


Configuring a Local Database
----------------------------
A local database is a file containing the user IDs, passwords, and security
information that is accessible to the APPX Router.

To configure a Local Encryption Database, create an Encryption Database
Source with a type of "Local Database", and specify the filename of the
local database file (as described in "Appendix A - Router Encryption
Database 'EX1' Format").  The APPX Router will load the specified database
into memory at startup.  The database can be reloaded without stopping the
Router from the APPX Router Manager application.


Configuring a Remote Database (TCP/IP)
--------------------------------------
A remote database is a database hosted on another machine.  The APPX Router
establishes an APPX connection to a transaction program on that remote
machine which handles the database queries from the APPX Router encryption
support.  Typically the remote transaction will access a file or database
on the remote machine.

cfSOFTWARE's pcMAINFRAME v5.50 includes a remote database transaction that
uses the pcMAINFRAME "PCID" database to provide the required security data.

See Section 9, "Programming a Remote Encryption Database Transaction or
Database DLL" for information on writing a remote encryption database
transaction.

The remote database support in the APPX Router creates a pool of worker
threads (one or more), which establish APPX/TCP (TCP/IP Direct) sessions
to the remote database transaction.  The worker threads start the sessions
on demand, and shut them down if no new requests are received in a configured
interval.  During periods of modest demand, only a single session will be
established, but under high loads additional worker threads will be
established, allowing multiple database queries to occur in parallel.

All database queries are processed through the active worker threads, and
a single worker thread (and associated APPX session and remote transaction)
may remain active for a considerable period of time (assuming there is work
to do), and process the queries for a large number of incoming sessions.

By taking advantage of the APPX Router, remote databases can be accessed
via LU6.2 as well.  This is described below.

To configure a Remote Encryption Database, create an Encryption Database
Source with a type of "Remote Database (TCP)", and specify the
communications parameters as required.  These are described below:

    DB: Host        - The DNS name or IP address of the host running
                      the remote database transaction.  Note: if the
                      APPX Router on the same machine will be used
                      to translate the APPX/TCP connection to an LU6.2
                      connection, the loop-back address of 127.0.0.1 or
                      "localhost" should be specified.  *Required*

    DB: Port        - The port number on which the host running the
                      remote database transaction is listening.  *Required*

    Conn: Fmt       - The APPX/TCP Connect Format to be used (1-3).
                      Hosts connecting via native sockets support in
                      CICS use Format-2 connects, host connecting via
                      the APPX Router or the APPX TPNS Service use either
                      Format-2 or 3.  *Required*

    Conn: TPN       - The name of the transaction program to run.  Applies
                      only to Format-2 and 3 connections.  *Required*

    Conn: Data      - Additional data passed to the host on Format-2 and 3
                      connections.  On Format-2 connections this is the
                      "User Data" field as described for the IBM or
                      cfSOFTWARE TCP/IP Listeners for CICS.  For Format-3
                      connections, this can contain Host Connection Override
                      data as described in the APPX Router documentation.

    Exit: Name      - This data is passed to the remote database transaction
                      in the parm1 field during the AREN_XREQ_INIT request.
                      The usage is specific to the remote database
                      transaction, and is intended to allow a single
                      transaction program on a host to support more than
                      one database.  The contents of this field would be used
                      by the transaction program to select which database
                      it will serve.

    Exit: Data      - This data is passed to the remote database transaction
                      in the parm2 field during the AREN_XREQ_INIT request.
                      The usage is specific to the remote database
                      transaction, and is intended to pass transaction
                      program specific parameters to the transaction program.
                      This may be considered an extension of the "Exit: Name"
                      field.

    Threads: Limit  - The maximum number of worker threads (and thus the
                      maximum number of parallel sessions to the remote
                      database transaction) that will be created.  From 1
                      to 10 may be specified.  Note: except for installations
                      with very high loads, the default of 1 is typically
                      adequate.  *Required*

    Threads: Start Delay - The time delay (in seconds) that is applied before
                      the APPX Router activates additional worker threads
                      (parallel sessions).  New worker threads are activated
                      if the time database requests are spending in the queue
                      exceeds this time interval.  Note: if all worker
                      threads are idle, and a database request is queued,
                      this delay does not apply, and a worker thread is
                      activated immediately.  From 1 to 10 seconds may be
                      specified.

                      The default of 2 seconds is a good starting point for
                      most installations.  If a smaller value is configured
                      more worker threads will typically be activated, a
                      higher value will cause fewer worker threads to be
                      activated.

                      Worker threads are managed based on this field and the
                      "Threads: Cache Time" field.  Note: if the "Threads:
                      Limit" field is 1, this field has no effect.

                      *Required*

    Threads: Cache Time - The time that an active worker thread (active
                      session with a remote database transaction) will be
                      kept active while it has no work to do.  If the worker
                      thread processes no database requests for this
                      interval, it will be shut down.  From 10 to 600 seconds
                      may be specified.

                      The default of 30 seconds is a good starting point for
                      most installations.  If a smaller value is configured,
                      worker threads will be deactivated more often, and thus
                      there will be more worker thread activations.  A larger
                      setting will have the opposite effect, but idle worker
                      threads and sessions will remain active longer.  Worker
                      thread and remote database transaction session startup
                      is relatively expensive both in time and resource
                      requirements.

                      By caching active worker threads and sessions, the APPX
                      Router reuses sessions with the remote database
                      transaction for multiple database queries, reducing
                      overhead and increasing query performance.  On the
                      reverse side, active, but idle, worker threads and
                      sessions do have some communications and system
                      overhead (both on the Router and on the host running
                      the transaction), and should be shut down if they are
                      unlikely to have work to perform in the near future.

                      Worker threads are managed based on this field and the
                      "Threads: Start Delay" field.

                      *Required*

    Comm: Timeout   - The communications timeout for the session with the
                      remote database transaction.  If the remote transaction
                      does not respond to a query within this interval, the
                      session will be assumed to have failed, and will be
                      restarted.

                      From 10 to 600 seconds may be specified.  The default
                      of 30 seconds is a good starting point for most
                      installations.

                      Note: as a practical matter, the timeout at the
                      client APPX should be set to at least this value, or
                      it will timeout while the APPX Router continues to
                      wait for a response from the remote transaction.

                      *Required*

    Comm: Trace     - If a non-zero value is specified, diagnostic traces
                      of the communication with the remote database
                      transaction will be produced.  Two traces for each
                      session will be created.  First, an APPX trace named
                      "ex2ppx###.buf" will be created, and second a TCP/IP
                      line trace (using the specified trace buffer size in
                      KB) named "ex2tcp###.buf" will be created.  These are
                      standard Across the Boards traces, and may be formatted
                      with the TRACEFMT.EXE utility.

                      Normally a trace should only be configured at the
                      request of cfSOFWARE technical support.


Accessing a Remote Database via LU6.2
-------------------------------------
By using the APPX Router, a remote database transaction can be accessed
via LU6.2.  For example, a remote database transaction running in CICS
on a mainframe might be accessed this way.  pcMAINFRAME provides such a
remote database, described in the next section.

To configure this, a normal Encryption Database Source with a type of
"Remote Database (TCP)" is created, but with the "DB: Host" and "DB: Port"
fields pointing at the APPX Router that will handle the connection.  The
"Conn: TPN" is then used to select a Host Connection on that Router, which
is used to establish the LU6.2 connection to the host.  The "Conn: Fmt"
and "Conn: Data" fields further qualify the session with the APPX Router.

In general, the port number may reference any Listener on an APPX Router
that does not require encryption.  If all other users of the APPX Router
require encryption, or increased isolation is desired, it is simple to set
up a Listener dedicated to the remote encryption database support on an
unused port.

The Host Connection should specify the name of the transaction (TPN) and
the LU name in which it runs.

The Host Connection must be protected from general access.  APPX Router
security classes can be used to accomplish this.  In the Listener that will
be used to access the host connection, a specific address range entry for
the source address of the remote database requests (eg. the APPX Router at
which the database requests originate) should be entered, and a specific
security class, unused by any other Host Connections, should be assigned to
that IP address (be sure to assign the security class to the IP address [on
the "Addresses" tab], and not to the Listener [on the "General" tab]).  If
more than one APPX Router will be accessing a remote database via this
Listener, then the IP addresses of all of those Routers should be configured
with that class.

Note: if the Host Connection will be accessed via the loopback address from
the local Router, specify the address as 127.0.0.1.

Next, in the Host Connection definition itself, specify only the security
class assigned to the "allowed" IP addresses.  This will prevent anyone
other than those IP addresses from accessing the Host Connection leading
to the remote database transaction.

If desired, the LU6.2 login information can also be used to help secure
the connection.  By coding the LU6.2 user ID and password as Host Connection
overrides in the "Conn: Data" field, and allowing those parameters to be
overridden in the Host Connection definition (and including the appropriate
security definitions on the mainframe), the user of the remote database
transaction will be required to supply correct mainframe logon data.  Note:
as the Router is typically installed in the data center, this is not usually
required.


Accessing the pcMAINFRAME Remote Database
-----------------------------------------
pcMAINFRAME v5.50 provides an LU6.2 Remote Database transaction suitable for
use with the APPX Router.  This remote database transaction uses the existing
pcMAINFRAME "PCID" database (with enhancements) to provide logon and security
data to the APPX Router.  In general, follow the procedures described in the
two prior sections for setting up access to the pcMAINFRAME remote database.

The pcMAINFRAME remote database is usually installed as transaction "PCME",
and does not make use of the "Exit: Name" and "Exit: Data" fields.  The
normal PCMM transaction is used to manage PCID records and security profiles
(pointed to by the PCID records) which make up the pcMAINFRAME encryption/
security database.  In addition, some global fields are defined on the
Options Customization screen.  Overall the pcMAINFRAME encryption database
parallels the local "EX1" format database in structure.  See the pcMAINFRAME
documentation for additional information.

The following is a sample configuration for an Encryption Database Source
accessing a pcMAINFRAME remote encryption database.

Assumptions:

    - The local APPX Router will be used to access the mainframe pcMAINFRAME
      components, including the encryption database, thus the loopback
      address will be used.
    - The LU name of the CICS region running pcMAINFRAME v5.50 is "DBDCCICS"
    - The standard pcMAINFRAME transaction names are in use ("PCME" for the
      remote database transaction).
    - TCP/IP Port number 2501 is available on the APPX Router machine, and
      can be used for a new Listener to support the remote encryption
      database.  Note: a new Listener is not necessary, but is easier to
      explain and plan since it only needs to support one type of traffic.
    - Security Class "E" is not being used and is available.
    - LU6.2 access is already established for the APPX Router machine to
      the CICS region running pcMAINFRAME.
    - An existing Listener has been set up to access pcMAINFRAME, and this
      Listener will be changed to use encryption.


Step 1: Create a new Encryption Database Source:

  Encryption Tab
  --------------
    Name                  - pcMAINFRAME Remote DB
    Database Source       - Remote Database (TCP)
    DB: Host              - 127.0.0.1
    DB: Port              - 2501
    Conn: Fmt             - 3
    Conn: TPN             - PCMEHC
    Conn: Data            - <leave blank>
    Exit: Name            - <leave blank>
    Exit: Data            - <leave blank>
    Threads: Limit        - 1
    Threads: Start Delay  - 2
    Threads: Cache Time   - 30
    Comm: Timeout         - 30
    Comm: Trace           - 0


Step 2: Create a new Listener:

  General Tab
  -----------
    Description           - Listener for pcMAINFRAME Remote DB
    Port                  - 2501
    Security Classes      - <leave blank>

  Addresses Tab
  -------------
    Add a single address range with the following properties:
      From-Address        - 127.0.0.1
      To-Address          - 127.0.0.1
      Security Classes    - E           (add security class "E" only)

  Encryption Tab
  --------------
    Encryption Req'ment   - None
    Allowed Modes         - <leave blank>
    Source                - None

  Advanced Tab
  ------------
    Trace Size            - 0


Step 3: Create a new Host Connection:

  General Tab
  -----------
    Client TPN            - PCMEHC
    Variant               - <leave blank>
    Host TPN              - PCME
    PLU                   - DBDCCICS    (or the alias defined for the LU)
    Mode Name             - #INTER
    LU                    - <leave blank>  (not needed in most cases)
    (leave the "Overridable" items unchecked)

  Security Tab
  ------------
    Add security class "E" only.

  Advanced Tab
  ------------
    Conversation Security
      Type                - Default             (if a CICS signon is required,
      User ID             - <leave blank>       set the Type to Program and
      Password            - <leave blank>       enter a User ID and Password)
      (leave the "Overridable" items unchecked)
    Trace Size            - 0

Note: the existing Host Connection definition for pcMAINFRAME (typically
"PCMX") may be used as a model - typically only the Client TPN and Host TPN
fields will need to be changed.


Step 4: Change the Listener that runs pcMAINFRAME (PCMX) to use encryption:

  Encryption Tab
  --------------
    Encryption Req'ment   - Allowed
    Allowed Modes         - A01         (Additional modes as desired)
    Source                - pcMAINFRAME Remote DB


Step 5: Define the required PCIDs and Security Profiles in pcMAINFRAME with
the PCMM transaction.  Also, enable encryption in the Options Customization
screen, and define the APPX Router LU as one of the "Trusted LU Names."

Configuring a Database DLL
--------------------------
A Database DLL is a Win32 DLL which is written to support encryption database
queries from the APPX Router.  Note: cfSOFTWARE does not currently supply
any Database DLLs, but provides documentation and other materials to
people needing to write one.

To configure a Database DLL, create an Encryption Database Source with a
type of "Database DLL", and specify the filename of the DLL to access.  If
required the "DLL Parm 1" and "DLL Parm 2" fields can be specified.  These
are passed to the Database DLL in the parm1 and parm2 fields during the
AREN_XREQ_INIT request.

See the documentation for the Database DLL for more information.

See Section 9, "Programming a Remote Encryption Database Transaction or
Database DLL" for information on writing a database DLL.


Encryption Module "0" - Description
===================================
Encryption module "0" is not a real encryption module, rather support
for encryption modes "000" and "001" is built into the APPX/TCP driver.

Encryption mode "000" is "no encryption," and if negotiated, will result
in no encryption being performed.  Mode "000" does not support any ID or
authentication mechanism.

Encryption mode "001" provides ID data exchange (signon) only, but with
no encryption.  The ID and ID shared secret is passed, unencrypted, to
the APPX Router and validated against the encryption database.  Security
classes and overrides are processed as normal.



Encryption Module "A" - Description
===================================
Encryption Module "A" uses the "Blowfish" encryption algorithm and provides
authentication via an ID and ID Shared Secret.  Four modes of operation are
supported:

        A00 - 128 bit blowfish
        A01 - 128 bit blowfish, plus Diffie-Hellman
        A02 - 40 bit blowfish
        A03 - 40 bit blowfish, plus Diffie-Hellman

Each mode optionally makes use of a shared secret.

Encryption module "A" is implemented by CFXENCA3.DLL in ATB/Win32.


<< Previous Page Next Page >>