[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: EDI over http?



> From:          Peter Rawlinson <PeterR@xxxxxxxxxxxxx>

> I think the use of IP connection could run into some difficulties.  I
> can't immediately see the benefit in using a new port, when HTTP is a
> well established medium for 'dropping off' information over 80.  Company
> firewall policy will be far more 'agreeable' over the established port
> 80, rather than a 'proprietary' standard which adopts IP connection over
> another designated port.  Additional testing would have to be conducted
> to confirm prevention of malicious acts using this port.

I think the opposite might be true. An EDI system should really be 
separated from the more general purpose HTTP systems, and using a 
separate machine and separate port (the number doesn't matter) for 
firewall filtering provides the best security.

There is nothing magic about port 80-- it's simply a parameter in a 
firewall-router. Company policy should be in securing access, and if 
separating a port for important financial transactions improves 
security, they would prefer to do that.

You don't need to test some other port running plain (secured) 
X12/EDIFACT packets, other than of course testing the X12/EDIFACT 
message processing. This wouldn't be a proprietary standard-- just 
elimination of unneeded overhead, and the potential security or other 
problems associated with the overhead processing. Instead of being 
able to break an HTTP server and CGI gateway software, an attacker 
could only break the X12/EDIFACT processor, which could be done as 
well via CGI gateway.

Actially, HTTP servers and CGI processing in particular, are common 
sources of security problems, since they are quite complex. Every now 
and then problems are fixed in HTTP servers, and many people running 
default distributions (e.g. NCSA) ran CGI programs that allowed 
remote access. Famous hacks like the CIA site were due to HTTP 
server breakins.

Email is more secure in general than HTTP, and most security problems 
are related to the notoriously complex sendmail program. 
Sendmail does message translation and forwarding-- not needed 
for EDI use.

I would see a firewall as having port 80 access (incoming, plus 
outgoing proxy) to an HTTP server, plus a separate port to a separate 
isolated machine for EDI use. The EDI system is separately isolated 
from the corporate LAN/Intranet, including the HTTP server and
independent of the Internet firewall (though could be done by the 
same router). Basically you want a separate secured "room" with only 
one small "hole" to pass EDI application level interchanges. A 
separate machine or another "hole" would be used for general EDI 
support via SMTP (AS1). Everybody is isolated from this system, 
including others in the corporation. (Inside jobs are >10X more 
common than outside hacks.) I see a HTTP/CGI interface using the same 
real-time EDI exchange as a means to link HTTP services with a 
secured transaction processing system.

-------------

> From:          Dave Darnell <dave_d@xxxxxxxxxxxxx>

> But what about PPTP (Point to Point Tunneling Protocol) or IPSec
> where you could have multiple secure IP connections?

PPTP, IPSec, and SSL all provide a somewhat transparent layer of 
security over basic IP messaging. Either a private secured net (e.g. 
within a computer room), or one (or more) of these security layers 
allows the direct real-time application-application linkage provided 
by IP. These aren't incompatible, and one can be used in lieu of 
another. From the application programming point of view, these are 
all basically just IP, with some minor differences in initializing 
library subroutine calls.

However, with all these, some provision should be made for sending 
digital signatures or exchanged data (for general data-- not 
protocol/message specific), for purposes of non-repudiation. A simple 
extension can be made to SSL, and I'm not sure of the others.

I think an advantage of SSL over IPSec or PPTP is that SSL is a layer 
on top of regular IP and can be intergrated with an application 
program sold to third parties. IPSec or PPTP have thier advantages 
(mostly for other uses than TP-TP erchange), but are more integrated 
with the guts of IP and/or routers. You can use PPTP, of course, but 
it's main use is subnetwork-subnetwork linkage rather than 
application-application, which is the only thing SSL provides.

-----

> From:          Rik Drummond <drummond@xxxxxxxxxx>
> Good points....Ya know,  this establishes the secure process to
> process connection, but does not establish the protocol for the
> exchange of the data objects. Would we not have to establish a new
> protocol or use something like smtp, esmtp, http, or ftp inside of
these?

X12 and EDIFACT already have almost everything needed for messaging, 
e.g. a header, some data, and a terminator. A new data protocol isn't 
needed, but an administrative/procedural protocol needs to be defined 
to know when to drop the connection and for acknowledgement.

Of course, if you define some port for EDI, you can't just send any 
general "data objects"-- it must be for something specific, e.g. 
limited to X12 and/or EDIFACT interchanges. Someone could define some 
new future protocol, in which case that might need a separate port or 
wrapper that defines the data objects. But new future protocols don't 
exist yet, and we don't need any overhead for the protocols we do 
have, like X12 or EDIFACT, which are fairly complete. (I think HL7 
has it's own IP level messaging included in the standard.)

This, of course, only applies to TPs with IP connectivity, and a 
protocol like AS1 is needed for general store-and-forward, gateway 
systems, and off-line or part-time processing.

To use plain X12, for example, there could be an agreement for 
exchanges over IP (with security layer of some sort):

  - TP listens for connections on IP port XXX.
  - Sender initiates connection and writes the X12 interchange to
    the socket.
  - Sender waits and reads an interchange as a reply. If no reply is
    received within a timeout period, assume a failure, drop and 
    retry.
  - Recipient accepts a connection, and reads the X12 interchange 
    data.
  - Recipient responds with an interchange containing a 997 
    Functional ACK, and optionally another transaction, e.g. a
    PO Reply, in response to the interchange.
  - Sender reads the reply interchange, and checks the transactions.
  - If the reply contains only a 997, the sender drops the 
    connection.
  - If the reply read by the Sender contains a non-997 transaction,
    the role of Sender-Recipient reverses, and processing continues
    as described above, where the original Sender must respond with
    a 997 and optional additional message in the "conversation".

Here, 997's are used in lieu of transport protocol ACKs or SMTP MDN 
receipts. The ACK goes all the way into the EDI translator, and 
provides EDI (X12) specific info on the interchange status. Here we 
require 997s in all cases. If necessary, an EDI-IP server could 
generate dummmy success 997's if an EDI translator didn't generate an 
error 997.

Other EDI protocols, including any new real-time conversational EDI, 
need to include some sort of ACK and definition of the type of reply 
required.

Defining the length or end of data in a transfer protocol isn't 
needed, since these are already part of the X12/EDIFACT interchange.

The protocol defined above might also be used with a SMTP or HTTP 
gateway machine, which passes the interchanges to a secured 
transaction processing system between the SMTP messaging system or 
WWW end-user GUI. The EDI system uses raw X12 over IP on machines 
isolated from the net servers which handle transport layers, email 
exchanges, MDN reciept generation, etc., or provides user-level 
human-machine transactions, e.g. via plain ASCII email or WWW.

BTW, there is a separate issue on establishing a TP relationship, 
e.g. how can a new customer just start a transaction without having 
lawyers on both sides spend a week faxing documents back and forth.
This goes beyond a transport protocol, though, and gets into some 
limitations with X12/EDIFACT. I suppose regular WWW might be good for 
manually setting up a TP relationship, and a CGI script could return 
a customer ID that can be used in X12/EDIFACT exchanges. 
Unfortunately X12 can't use the unique internet email IDs as 
TP identifiers due to length limitations.
--------------------------------------------------------------------------
Carl Hage                                              C. Hage Associates
<mailto:carl@xxxxxxxxx> Voice/Fax: 1-408-244-8410      1180 Reed Ave #51
<http://www.chage.com/chage/>                          Sunnyvale, CA 94086