Pervasive logo

Prev What's New in Pervasive.SQL V8.5 Next

Encrypted Network Communications


This release adds support for encrypting the database-related network traffic that occurs when using Pervasive.SQL. This type of encryption is often called wire encryption because it protects the data when it is traveling on the network wire, or on any intervening network infrastructure, including wireless. While the use of wire encryption is not required, it provides additional deterrence against unauthorized access to the data transmitted by your application over a network.

This encryption feature is not directly related to the new security models available in this release. Any of the security models can be used with or without wire encryption turned on.

New Configuration Parameters

This section describes the new Configuration parameters associated with this feature. These parameters must be set at each client machine as well as the server. Within Configuration, they can be located under Client 4 Access or Server 4 Access, as appropriate.


Note
The Pervasive.SQL client and server both share a single encyption setting which is found in the Server settings.

Wire Encryption Level
Name
Type
Range
Default
Units
Encryption Level
SelectOne
Low, Medium, High
Medium
N/A

This new setting specifies the strength of the encryption key that should be used for encrypted communications. The following levels are available:

 
Table 1-3 Meaning of Wire Encryption Level Values

Value
Meaning
Low
40-bit encryption key used
Medium
56-bit encryption key used
High
128-bit encryption key used

Encryption using a key 128 bits long is generally accepted as "strong" encryption. The other settings provide progressively less protection but higher performance, in the event that you require some level of encryption but are willing to accept a lower level of deterrence to gain better performance.

When a client and a server both require encryption and one specifies a stronger encryption level than the other, the two entities use the stronger level to communicate.

This setting is ignored if the setting Wire Encryption is set to Never.

Wire Encryption
Name
Type
Range
Default
Units
Wire Encryption
SelectOne
Never, If Needed, Always
If Needed
N/A

This parameter specifies whether the given client or server should use encryption for its network communications. The default value of If Needed means that the client or server only uses encryption if the other end of the communication stream requires it. For example, assume that Server A has its Wire Encryption value set to Always. Server B has its value set to Never. Your client has its value set to If Needed. In this case, the client will use encryption when communicating with Server A, but it will not use encryption when communicating with Server B.

The following chart summarizes the behavior given each possible combination of client and server values:

 
Table 1-4 Client/Server Results of Wire Encryption Combinations

Client Setting
Server Setting "Never"
Server Setting "Always"
Server Setting "If Needed"
Never
Encryption not used
Status Code 5001
Encryption not used
Always
Status Code 5000
Encryption used; level determined by highest Wire Encryption Level setting between client and server
Encryption used; level determined by client's Wire Encryption Level setting.
If Needed
Encryption not used
Encryption used; level determined by server's Wire Encryption Level setting
Encryption not used

Remarks

This release of the product uses a well-known and time-tested public domain encryption algorithm called "Blowfish" to perform the encryption before data passes over the network.

Encryption using a 40-bit key provides the least amount of protection for the data. Encryption using a 56-bit key is more difficult to compromise. Finally, encryption using the 128-bit key is the generally considered very difficult to compromise.


Note
Using encryption slows the network throughput of your data.

Backward Compatibility

Because previous versions of Pervasive.SQL did not support wire encryption, they will be unable to communicate with a client or server from this release that requires encryption. Any client or server that does not support encryption will return an error if it attempts to connect to a client or server that requires encryption.

Setting Up Encryption

Before turning on the encryption settings in your environment, think about your encryption needs first. You can set up your encryption environment in a variety of ways, depending on your situation. There are four general schemes possible:

No Encryption

First of all, consider whether your data has characteristics that would favor encryption. Is your data confidential or proprietary? Is it protected from the public by federal, state, or local laws? Is it valuable in the hands of unauthorized users? Can it be used to harm your organization? If you answer no to these question and others like them, then your data may not need to be encrypted at all. Under these circumstances, there may be no reason to incur the performance trade-off that encryption entails. If you aren't sure, consult a data security expert.

Assuming your data does need to be protected, you still may not need encryption. If your applications run solely on a LAN, and you are comfortable with the physical security of your network infrastructure, encryption may not be necessary.

Encryption to/from Specific Clients

Now suppose that you have one major customer at a remote site that has a connection to your database. You may wish to use encryption only for the communications that go to/from that remote client. You can achieve this affect by setting Wire Encryption at the remote client to Always and setting the server values accessed by that remote client to If Needed. All your internal clients would be set to Never. Thus, the servers will only use encryption when communicating with the remote client that requires encryption.

Encryption to/from Specific Servers

Now, suppose the situation is reversed and your environment includes one or more remote servers that are accessed by network infrastructure that you do not trust 100%. In this case, you can set those server values to Always, and set the local client values to If Needed. The result is encrypted communications only to those remote servers that require it.

All Communications Encrypted

Finally, if your Pervasive-based applications often run over WAN, VPN, or other external networks that you do not trust 100%, then you may wish to encrypt 100% of your database communications. In this scenario, you would set Wire Encryption to Always at all clients and servers.

Choosing an Encryption Level

Once you have decided which clients and servers require encrypted communications, you must decide what level of deterrence is appropriate for your needs.

While Pervasive Software Inc. cannot offer advice regarding the encryption level that meets your specific needs, we can provide some guidelines to help inform your discussions with an appropriate data security expert. These guidelines do not represent a guarantee or warranty from Pervasive that no third party will be able to intercept and/or decode your encrypted data. As with any encryption scheme, there is no such thing as an "unbreakable" code, only varying levels of difficulty to compromise different types of encryption. Pervasive.SQL's 128-bit encryption would be considered "very difficult" to decode using techniques and equipment available to a highly sophisticated individual hacker.

Low (40-bit) Encryption

Consider using this level of encryption in cases where your data has limited ability to harm your organization or your customers if it falls into the wrong hands. Another reason to consider a Low level of encryption is if you wish simply to prevent a casual observer on your network from being able to read your data as it travels over the wires.

Medium (56-bit) Encryption

Consider using this level of encryption in situations where you believe you need somewhat more protection than against just a casual observer, but you do not believe you require the strongest level of security.

High (128-bit) Encryption

Consider using this level of encryption in situations where your data contains very sensitive information such as credit card numbers, social security numbers, financial account numbers, or other information protected by law. Especially consider this level of encryption if your database is associated with an entity on the network that is well-known to contain sensitive data, such as an Internet shopping web site or an online securities brokerage web site. Consider this level of encryption if your organization has previously suffered attempts to compromise its data security.

Effects

Using encryption reduces client/server performance. With encryption turned on, each piece of data must be encoded at the source and decoded at the destination. This process requires additional CPU cycles when compared to the same operations performed without encryption. The level of encryption should not affect the performance. The performance drop in using encryption is roughly the same no matter which of the three encryption levels you choose.

Examples

This section describes the set-up procedures for some common encryption scenarios.

To set up maximum encryption for all clients and servers

  1. Using PCC, connect to each database server that you wish to require encrypted communications. If you need instructions on how to connect to a server in PCC, see Pervasive.SQL User's Guide.
  2. For the selected server within PCC, double-click Configuration; double-click Server; double-click Access.
  3. Double-click Wire Encryption, and set the value to Always. Click OK.
  4. Double-click Encryption Level, and set the value to High (128-bit). Click OK.
  5. Exit from PCC and restart the database engine. Repeat steps 1-5 for each server computer that you wish to require encrypted communications.
  6. Using PCC at each client, double-click the computer icon representing the client computer. Double-click Configuration; double-click Client; double-click Access.
  7. Double-click Wire Encryption, and set the value to Always. Click OK.
  8. Double-click Encryption Level, and set the value to High (128-bit). Click OK.
  9. Exit from PCC and restart the client applications.
  10. Repeat steps 6-9 for each client computer that you want to use encryption.

To set up minimum encryption for certain servers

  1. Using PCC, connect to each database server that you wish to require encrypted communications. If you need instructions on how to connect to a server in PCC, see Pervasive.SQL User's Guide.
  2. For the selected server within PCC, double-click Configuration; double-click Server; double-click Access.
  3. Double-click Wire Encryption, and set the value to Always. Click OK.
  4. Double-click Encryption Level, and set the value to Low (40-bit). Click OK.
  5. Exit from PCC and restart the database engine. Repeat steps 1-5 for each server computer that you wish to require encrypted communications.
  6. Using PCC at each client, double-click the computer icon representing the client computer. Double-click Configuration; double-click Client; double-click Access.
  7. Double-click Wire Encryption, and set the value to If Needed. Click OK.
  8. [Optional] Double-click Encryption Level, and set the value to Low (40-bit). Click OK.

    This step is optional. When the client's Wire Encryption value is If Needed, the level of encryption used is determined solely by the server setting for Encryption Level.

  9. Exit from PCC and restart the client applications.
  10. Repeat steps 6-9 for each client computer that you want to use encryption.

Prev
New Security Models for Btrieve Applications
Contents
Up
Check for Revisions
Next
Improved SQL Support