<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for nchriss</title>
    <link>http://www.advogato.org/person/nchriss/</link>
    <description>Advogato blog for nchriss</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 10 Oct 2008 18:49:01 GMT</pubDate>
    <item>
      <pubDate>Sat, 26 Jul 2003 20:26:36 GMT</pubDate>
      <title>26 Jul 2003</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=7</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=7</guid>
    </item>
    <item>
      <pubDate>Thu, 29 Nov 2001 23:20:23 GMT</pubDate>
      <title>29 Nov 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=6</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=6</guid>
      <description>&lt;b&gt;Complexities of Multicast IPSec Key Management&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; The following are notes applicable to the issue 
of 
multicast IPSec key management.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt;IKE authenticates two peers via 
authenticated 
DH 
exchange. It is possible to extend a basic Diffie-Hellman 
exchange to more than two members, but it is 
computationally costly.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt;addition or deletion of a single member 
requires a 
similiar &lt;i&gt;n&lt;/i&gt;-way exchange (where &lt;i&gt;n&lt;/i&gt; is the # of 
group participants)

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt;join latency (time required to join the 
IPSec 
group 
and 
begin sharing secure traffic), rekeying (retiring old keys 
and distributing fresh keys), forced member removal 
(exclusion/revoking of IPSec group participation) are all 
affected by the same complexity issues.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;b&gt;Approaches to Multicast Key Management 
Protocols&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;b&gt;&lt;tt&gt;Shared Secret&lt;/tt&gt;&lt;/b&gt;
&lt;p&gt;&lt;li&gt;Shared Secret: a shared secret is established 
between 
each group member and the key holder.
&lt;blockquote&gt;&lt;li&gt;secret is used as a key encrypting key 
(KEK), 
which is then used to distribute the shared group key to 
individual members.&lt;/blockquote&gt;
&lt;li&gt;&lt;blockquote&gt;each member retains knowledge of the shared 
secret 
with the key distributor, but the key distributor must 
retain knowledge of all keys it shares with the group 
members.&lt;/blockquote&gt;
&lt;li&gt;limitations: as the number of members in the group 
rises, the key distribution mechanics scale poorly
&lt;blockquote&gt;&lt;li&gt;key acquisition latency is too high in 
large 
groups.&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;li&gt;revoking/rekeying latency also remains high 
in the 
event that a member needs to be forcibly 
removed.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; The addition of a &lt;i&gt;Complimentary Variable&lt;/i&gt; 
to 
the 
shared key:

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt;A list of variables is sent to each group 
member, 
encrypted with the KEK.
&lt;li&gt;Each member is assigned a &lt;i&gt;cv&lt;/i&gt; and is given the 
&lt;i&gt;cv&lt;/i&gt; of every other member in the group.
&lt;li&gt;for a group of &lt;i&gt;n&lt;/i&gt; members, there will be &lt;i&gt;n&lt;/i&gt; 
complimentary variables and each member &lt;i&gt;j&lt;/i&gt; recieves 
all variables &lt;i&gt;i&lt;/i&gt; where i=1,2..,&lt;i&gt;n&lt;/i&gt;, but 
&lt;i&gt;i&lt;/i&gt; != &lt;i&gt;j&lt;/i&gt;.
&lt;blockquote&gt;&lt;li&gt;IOW, each member knows the complimentary 
variable of 
every other member but does not know his 
own.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;blockquote&gt;&lt;li&gt; For forcibly removing a member 
&lt;i&gt;b&lt;/i&gt;, 
the group owner issues a message to all group members 
specifying the generation of a new key &lt;i&gt;using&lt;/i&gt; the 
existing key and the complimentary variable for member 
&lt;i&gt;b&lt;/i&gt; (possibly by hashing the two together). Being that 
member &lt;i&gt;b&lt;/i&gt; does not have his own complimentary 
variable, he is unable to recompute the new key and is 
effectively out of the group.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;blockquote&gt;&lt;li&gt;limitations of &lt;i&gt;cv&lt;/i&gt;: each time 
a 
new 
member joins the group, the members new complimentary 
variable needs to be redistributed to established group 
members. Also, for large groups, storing complimentary 
variables for every other member becomes 
cumbersome.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;b&gt;&lt;tt&gt;Hierarchical Tree&lt;/tt&gt;&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt; In this technique, there is no single key, 
there 
are 
many.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt; Keys are maintained by the group owner by 
constructing 
and maintaining a hierarchical tree.

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;blockquote&gt;&lt;li&gt; At the root of the tree is the 
main 
group 
key.&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;li&gt; Each member is a leaf on the tree and is 
given the set of keys from the root, through all 
intermediate nodes, to the leaf that represents 
itself.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;li&gt; To construct this tree the keyserver (who is 
not 
necessarily the root of the tree but possibly an 
intermediary) establishes a shared secret (a KEK) with each 
leaf node, each user.
&lt;blockquote&gt;&lt;li&gt;The root key and the keys of the leaf's 
parent nodes are transmitted to it encrypted with the 
KEK.&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;li&gt;Addition of a new member requires only 
establishing of a KEK and then a single message containing 
all the keys of its parent nodes encrypted in that 
KEK.&lt;/blockquote&gt;
&lt;li&gt;Rekeying is less labor intensive and impacts a smaller 
group of members.
&lt;blockquote&gt;&lt;li&gt;For a group of &lt;i&gt;n&lt;/i&gt; members, the group 
owner must do 2 * &lt;i&gt;log n&lt;/i&gt; key encryptions to rekey the 
group.
&lt;blockquote&gt;&lt;li&gt;For a tree of depth &lt;i&gt;d&lt;/i&gt;, each user 
must store &lt;i&gt;d&lt;/i&gt; + 1 keys while the group owner must 
keep all keys.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt; ..next post, Multicast Key Distribution with 
&lt;b&gt;CBT&lt;/b&gt; and/or 
&lt;b&gt;MKMP&lt;/b&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 29 Nov 2001 18:57:36 GMT</pubDate>
      <title>29 Nov 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=5</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=5</guid>
      <description>Hrm. I should really have used formatting tags on that last 
post. Still getting used to posting regularly here.

&lt;p&gt; &lt;p&gt;-Installing OpenCA on openbsd sometime this evening

&lt;p&gt; &lt;p&gt;-Writing a quick and dirty on strong authentication for 
isakmpd using a third-party CA - not really difficult but 
worth the excersize.

&lt;p&gt; &lt;p&gt;-looking into core-based trees and other such 
nonsense


&lt;p&gt; Setting up records for gndr.org tonight.</description>
    </item>
    <item>
      <pubDate>Tue, 27 Nov 2001 20:44:32 GMT</pubDate>
      <title>27 Nov 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=4</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=4</guid>
      <description>IPSec Mesh Notes

&lt;p&gt; &lt;p&gt;Problem:
We have remote sites which need authenticate and 
confidential access between themselves. IPsec provides the 
necessary functions, but bandwidth required to support 
multiple full-time tunnelled IPSec sessions through one 
central location (e.g. hub-spoke) is taxing (how 'taxing', 
we have yet to measure). Additionally, the latency cost 
associated with what would be an inherent ineffeciency in 
routing due to uknowns about geography is also unacceptable 
(through a central location, a node in NY and a node in FL 
would have to speak through the central node, for instance, 
in CA).

&lt;p&gt; &lt;p&gt;Solution:
Among other solutions, the concept of an IPSec 'mesh' was 
proposed by &lt;a href="http://www.advogato.org/person/ajaxx/" &gt;ajaxx&lt;/a&gt; and azure, 
although the 
functional solution, at the time, was tentative. The 
benefits of the mesh IPSec configuration are illustrated in 
the following:

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt; the configuration can be used to link 
all nodes 
together 
without the added performance limit of keeping full-time 
tunnels open.

&lt;p&gt; &lt;p&gt;&lt;li&gt; as follows from the above, tunnels will be 'on-
demand'

&lt;p&gt; &lt;p&gt; &lt;li&gt;IPSec communication between nodes can occur with 
only 
light participation of an intermediary (the 
CA).&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;b&gt;Details:&lt;/b&gt;
&lt;pre&gt;The following is a first attempt at a concrete 
functional solution so that we can start listing the 
requirements for establishing the mesh. To start out, 
here's a simple skeleton:&lt;/pre&gt;

&lt;p&gt; &lt;p&gt; The overall solution consists of a simple Central 
Authority 
which will authenticate the validity of communicating nodes.

&lt;p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Scenario&lt;/i&gt;&lt;/b&gt;:

&lt;p&gt; &lt;p&gt; Communication between nodes A and B is desired by node 
A.

&lt;p&gt; &lt;p&gt; Endpoint A of the VPN tunnel presents a certificate 
that is 
signed by our central cert. authority. Node B does not need 
to have previous knowledge of node A since the 
certification authority vouches for the authenticity of 
(the certificate presented by) A. The subsequent session is 
then negotiated via isakmpd.

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt;There is no on-line communication with 
the CA during the negotiation.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt;Endpoint B has the public key of the CA 
and can thus 
verify the certificate presented by A.

&lt;p&gt; &lt;p&gt;&lt;li&gt;A does not trust B and so B must also present a 
certificate to A.

&lt;p&gt; &lt;p&gt;&lt;li&gt;The second certificate must be signed by a CA 
acceptable to A.

&lt;p&gt; &lt;p&gt;&lt;li&gt;In our system, all keys are signed by the same 
CA.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;b&gt;Revocation&lt;/b&gt;
 Two possible mechanisms can prevent compromised nodes from 
linking to the VPN.

&lt;p&gt; &lt;p&gt;&lt;li&gt;Certificates with limited lifetimes
&lt;blockquote&gt;&lt;li&gt;unless certificates are renewed they become 
useless.&lt;/blockquote&gt;
&lt;li&gt;Blacklisting nodes
&lt;blockquote&gt;&lt;li&gt;by changing the policy file, we can prevent 
nodes from accepting connections from blacklisted 
nodes&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; Issues/Concerns

&lt;p&gt; &lt;p&gt; The major issues with the above plan were:

&lt;p&gt; &lt;p&gt;&lt;li&gt;Key management
&lt;blockquote&gt;&lt;li&gt;join latency
&lt;li&gt;rekeying&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;li&gt;IP Addressing

&lt;p&gt; &lt;blockquote&gt;&lt;li&gt;subnet addressing guidelines
&lt;li&gt;communication with multiple nodes
&lt;li&gt;research users
&lt;li&gt;route distribution&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;b&gt;Key Management&lt;/b&gt;
&lt;blockquote&gt;Join Latency: This wouldn't be an issue, as it 
turns out, 
because there's not underlying fabric to join. When 
discussing groups of IPSec communicators, I immediately 
began reasoning along the lines of a 'fabric-oriented' 
approach, which starts sounding much more like multicast-
IPsec than what's really necessary for our requirements. 
This is not to say we can't tie all nodes together in a 
multi-cast-like setting, but I would say that's for a 
future implementation. The complication of source 
authentication and key management make a potential solution 
difficult, although I have provided possible solutions 
below. We may want to start a project on multicast IPSec. 
This particular point is only important when considering a 
more seamless level of resource sharing.

&lt;p&gt; &lt;p&gt; In the above proposed scenario, keys can be distributed 
and updated using a simple automated method such as CVS. 
Certificates need to be kept for both independent 
researchers and nodes so as to allow the same. As the scale 
of the network increases, we can develop something more 
automated, which is described below.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;b&gt;IP Addressing&lt;/b&gt;
&lt;li&gt;Subnet Addressing:
&lt;blockquote&gt; This should also be a non-issue. We should 
provide 
guidelines that administrators stick to 10.0.*/24 and even 
hand out address spaces, but largely IPSec communication 
between two or more IPSec nodes can go ungoverned. To keep 
life sane for everyone, we should make sure to specify what 
subnets.. the CA only authenticates nodes.

&lt;p&gt; &lt;p&gt; Communication with multiple nodes:
Communication between from Node A and Node B to Node C may 
saturate node C's link. This is partially a disadvantage to 
the IPSec mesh, as over a hub-spoke arrangement, only one 
tunnel is necessary to carry multiple sessions between 
endpoints. It can be recommended that nodes employ the use 
of bandwidth shaping/rate limiting to prevent this from 
becoming a problem on popular nodes.

&lt;p&gt; &lt;p&gt; Research Users:
The above may be further exasperated when  considering that 
researchers are logically, their own nodes (albeit, single 
machine nodes). Multiple researches hitting one node may be 
undesirable for the same reason. This actually brings up 
additionaly issues about the quality of research which I'll 
bring up at some other time. 

&lt;p&gt; &lt;p&gt; Route Distribution:
This was also another issue that cropped up when thinking 
about the mesh in a 'fabric-oriented' way. This also 
becomes a non-issue as nodes are subject to their own 
routing impedence and there's no need to know private 
address routes.. as they don't exist in the proposed 
scenario. We can move towards route sharing in the future, 
but I see IPsec multicast as possibly being the best way to 
send non-contiguous, non-canonical route 
updates.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;i&gt;Multicast IPSec - Brief Treatment to be expanded at a 
later time&lt;/i&gt;

&lt;p&gt; &lt;p&gt;&lt;tt&gt;These are just notes.&lt;/tt&gt;

&lt;p&gt; &lt;p&gt;&lt;b&gt;Multicast Ipsec&lt;/b&gt;

&lt;p&gt; &lt;li&gt;Problems

&lt;p&gt; &lt;li&gt;Multicast traffic consists of a multiple recipients for 
a single packet and many senders to a particular(multicast) 
address.

&lt;p&gt; &lt;p&gt;&lt;li&gt;A shared group key (or tree of shared keys) is 
necessary.

&lt;p&gt; &lt;p&gt;&lt;li&gt;An IPSec SA is defined by the triple of protocol, 
SPI, and destination address.

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt;in a normal scenario, the destination 
chooses the SPI.

&lt;p&gt; &lt;p&gt;&lt;li&gt;in multicast, there is not single destination for a 
given address.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;&lt;li&gt;the SPI would be allocated by a group controller who 
also may be responsible for key generation and access 
control(key management).

&lt;p&gt; &lt;p&gt;&lt;li&gt;source authentication and key management fail in 
multicast environments where many entities share a key and 
can all send packets to the same address.

&lt;p&gt; &lt;p&gt;&lt;b&gt;Source Authentication Solutions&lt;/b&gt;

&lt;p&gt; &lt;p&gt; Gennarro and Rohatgi describe a system where a single 
public-key (asymmetric) signature and a symetrically-keyed 
hash can be used to effectively authenticate the source of 
a packet based on the fact that a sender knows what the 
next packet it is going to send will be.
 
&lt;li&gt;A digital signature of the the keyed hash of a second 
packet is employed as the first packet is sent.

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt;The digest of the first packet, which is 
a keyed hash of the second packet, can be checked when the 
secon packet is recieved.

&lt;p&gt; &lt;p&gt;&lt;li&gt;The second packet then holds a digest for the keyed 
hash in the third packet.

&lt;p&gt; &lt;p&gt;&lt;li&gt;When the keyed hash of the second packet holding the 
digest for the third packet can verify the signature sent 
in the first packet, the sender of the first packet can be 
absolutely identified and so on up to packet 
#&lt;i&gt;n&lt;/i&gt;.&lt;/blockquote&gt;
 
&lt;li&gt;each keyed hash covers the entire next packet, 
*including* the digest of the subsequent packet, which 
prevents a possible hijack scenario.

&lt;p&gt; &lt;li&gt;the only requirement on the reciever end is that s/he 
maintain a small buffer to hold the authenticating 
information for the next packet.
  
&lt;li&gt;limitation: sender must know all of the input prior to 
sending the first packet.

&lt;p&gt; &lt;p&gt;&lt;li&gt;problems arise when packets are sent out of order 
although the technique has been extended in [1].

&lt;p&gt; &lt;p&gt;&lt;b&gt;Alternate Technique:&lt;/b&gt;

&lt;p&gt; &lt;p&gt; G. Itkis describes a technique using the authentication 
employed in AH, but adapted to use additional digests such 
that:

&lt;p&gt; &lt;p&gt;&lt;blockquote&gt;&lt;li&gt;for any particular sender of a group, 
there are 'n' 
keys.
&lt;li&gt;Each member of the group/recipient of multicast traffic 
is granted &lt;i&gt;k&lt;/i&gt; of the &lt;i&gt;n&lt;/i&gt; keys, where &lt;i&gt;k&lt;/i&gt; 
&lt;b&gt;&amp;lt;&lt;/b&gt; &lt;i&gt;n&lt;/i&gt;
&lt;li&gt;Each packet is sent with &lt;i&gt;n&lt;/i&gt; digests of a keyed 
hash appended for each of the &lt;i&gt;n&lt;/i&gt; keys.
&lt;li&gt;The recipients validate the digests based on how they 
correspond to the keys that s/he holds.
&lt;li&gt;if the recepients digests are correct, the reciever 
must assume that the rest of the digests are correct as 
well.
&lt;li&gt;one member could forge packets to members in the rest 
of the group, but if we have a suitably large 'n' and a 
relatively small 'k' the number of members that share the 
same keys will be small.&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt;This idea has limitations, but has been incorporated 
into [2]

&lt;p&gt; &lt;p&gt; - can't finish this post at the moment, next post will 
correlate to CBT - RFC1949 using GKDCs and cores and MKMP 
using GKMs and GKDs ... enough acros y'think?

&lt;p&gt; &lt;p&gt;&lt;tt&gt;[1] "Digital Signatures for Flows and Multicasts" - 
Chung Kei Wong and Simon Lam&lt;/tt&gt;

&lt;p&gt; &lt;p&gt;&lt;tt&gt;[2] "Multicast Security: A Taxonomy of Secure 
Multicast Protocols and Effecient Authentication Schemes" - 
Cannetti, Garay, Itkis, Micciancio, Naor and Pinkas&lt;/tt&gt;

</description>
    </item>
    <item>
      <pubDate>Sun, 25 Nov 2001 20:25:16 GMT</pubDate>
      <title>25 Nov 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=3</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=3</guid>
      <description>Ack, I haven't updated since I've moved and gotten a new
job. Needless to say, I've been plenty busy and my current
projects are listed here as they stand:

&lt;p&gt; CSP - I had to drop this until a break in work and other
areas allowed me to give it my full attention. I'll be
posting more notes here shortly, I actually have a backlog.
CSP demands a lot of thought and brainwork so I rarely feel
like I'm doing it any justice unless I plan on working on it
all day.

&lt;p&gt; Gh0st.net - This is another project I had to put on hold
until I've had the appropriate introspective pause to
reflect on its direction. The domain and IPSec link
discussions have been distractions for the most part. At
this point, we're settling on an IPSec mesh-type network
which I'm comfortable with, although the time required to
develop an appropriate solution for that is unappealing.
I've talked to Mark Carey about the issue in brief and he's
actually working on a project called 'scooby' for automated
key exchange in a meshed environment (automated route and
host updates for changed keys).  Also, the idea of the mesh
was brought up (in part) to alleviate traffic requirements
for the central service point as well as the nodes but
wouldn't be the case, as the cost of communicating with two
or more networks at once from any given points in the
network would require the same number of independent IPsec
tunnels, as opposed to travelling over one in a hub and
spoke arrangement. We'll figure something logical out over
the next few days, as there are a number of problems we have
to address no matter what configuration the underlying
network is in. We'll start some form of discussion on that
soon. There are a number of solutions we could use to do
this with which are pretty interesting. For documentation
purposes, I should put them up here by the end of the day.
In other matters, I've registered a new domain gndr.org, to
host gh0st.net's public presence, as the current owner of
'gh0st.net' doesn't appear willing to give me control over
the domain. I wouldn't have forseen this years ago when we
were just getting things set up (actually, I did, but I
trusted it wouldn't be an issue because we're all grown
adults... and that was an incorrect assumption). Anyhow, not
enough work has gone on for there to be any reason why I
prefer one domain over the other and even if there were, I
wouldn't say I'm terribly attached to domains anyhow.

&lt;p&gt; In terms of my own private research, I've been studying the
functions of OpenBSD's 'pf', RealSecure's TCB and session
state resilience, and I've started writing 'Introduction to
Protocol Analysis Using Communicating Central Processes'. I
plan on submitting this to phrack at some point for public
consumption.

</description>
    </item>
    <item>
      <pubDate>Mon, 6 Aug 2001 23:59:25 GMT</pubDate>
      <title>6 Aug 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=2</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=2</guid>
      <description>Had a good chat about CSP with &lt;a href="http://www.advogato.org/person/stevej/" &gt;stevej&lt;/a&gt;. CSP 
notation was very difficult to get a handle on originally, 
but I have developed an improving knowledge of its 
fundementals. As a caution to others reading the related 
text (Modelling and Analysis of Security Protocols), the 
writing specific to notation is not straight forward. After 
refreshing my knowledge of set theory and process algebra 
in addition to reading 'The Theory and Practice of 
Concurrency' I was able to understand the subject matter 
and thus the modelling notation (hand-written). I have yet 
to tackle Machine Readable CSP (CSP susbscript 'm'), an 
ASCII version of the notation readable by interpreters 
(PROBE, CASPER) and compilers (FDR2). Still taking notes 
and should be putting them up at some point this evening.

&lt;p&gt; In terms of OpenCSP, &lt;a href="http://www.advogato.org/person/stevej/" &gt;stevej&lt;/a&gt; and I are 
trying to formulate a course of action for developing an 
open-source CSP interpreter. Our primary obstacles lay in 
the prohibitive amount that it costs for PROBE and FDR2. 
This fact may be in our best interest, as the current DMCA 
laws would create a problem if Formal Systems found or work 
to their dislike. Another obstacle is not having a full 
list of CSP notation operators. This is temporary and 
expected, as we're literally formulating this project as 
our understanding of CSP and its uses improves. All aside, 
the work will be worth the effort and hopefully a lot of 
fun.

&lt;p&gt; I'm playing around with weighted queueing techniques for 
further work with ALTQ in conjunction with the work done by 
Newsham and Ptacek. Should be an interesting experiment but 
I haven't checked the feasibility or fleshed out the 
concept just yet. More on that later.



</description>
    </item>
    <item>
      <pubDate>Sat, 28 Jul 2001 04:16:21 GMT</pubDate>
      <title>28 Jul 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=1</guid>
      <description>CSP Notes

&lt;p&gt; I'll be posting my notes on Communicating Sequential 
Processes. The notes will be synthesized from the following 
texts: 'The Theory and Practice of Concurrency' 
and 'Modelling and Analysis of Security Protocols'.

&lt;p&gt; For those who are interested in the above reading, I would 
suggest perusing T&amp;amp;P of Concurrency, before diving into M&amp;amp;A.

&lt;p&gt; The culmination of my notes and studies will be the 
paper, 'Introduction to CSP and Security Protocol Analysis'.

&lt;p&gt; Notes from 'T&amp;amp;P':

&lt;p&gt; - CSP is a notation for describing 'concurrent' systems 
whose component processes interact with each other by 
communication.

&lt;p&gt; - A system is said to exhibit concurrency when there can be 
several  processes or subtasks making progress at the same 
time.

&lt;p&gt; - The CSP language functions as a collection of 
mathematical models and reasoning methods which help us 
understand this notation.
&lt;blockquote&gt;Simply put, the CSP language consists of 
notation and calculus for modelling interactions between 
processes.&lt;/blockquote&gt;

&lt;p&gt; -Primary applications for CSP will be areas where the main 
interest lies in the structure and consequences of 
interactions:

&lt;p&gt; &lt;br&gt;VLSI Design
&lt;br&gt;Communications Protocols
&lt;br&gt;Real-Time Control Systems
&lt;br&gt;Scheduling
&lt;br&gt;Copmuter Security
&lt;br&gt;Fault Tolerance
&lt;br&gt;Database and Cache consistency
&lt;br&gt;Telecommunications Systems

&lt;p&gt; [Note: My specific interests and the aim of my studies 
would be in the realm of computer security, specifically in 
modelling security protocols]

&lt;p&gt; -Difficulties in modelling concurrent systems:

&lt;p&gt; &lt;blockquote&gt;-There are more states to worry about in 
parallel code, because the total number of states grows 
exponentially (with the number of components). &lt;/blockquote&gt;

&lt;p&gt; &lt;blockquote&gt;-Aside from the state, there are a number of 
misbehaviors which create their own difficulties in 
parallel systems:&lt;/blockquote&gt;

&lt;p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;tt&gt;-Nondeterminism: two different copies 
of the system behave differently when given exactly the 
same input.&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;tt&gt;-Deadlock: A concurrent system is 
deadlocked if no component can make any progress, generally 
beceause each is waiting for communication with 
others.&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt; &lt;blockquote&gt;&lt;p&gt;&lt;tt&gt;-Livelock: Also known as 
&lt;i&gt;Divergence&lt;/i&gt;. Process performs an infinite unbroken 
sequence of internal actions. When a network communicates 
infinitely internally without any component communicating 
externally.&lt;/tt&gt;&lt;/blockquote&gt;

&lt;p&gt; Tools
-FDR: Failure/Divergence Refinement - automated proof tool 
for CSP.
-PROBE - Simulator/animator which allows for interaction 
with CSP processes merely providing a form of 
implementation that allows experimentation.

&lt;p&gt; Ch. 1 -

&lt;p&gt; - CSP is a calculus for studying processes which interact 
with eachother and their environment by means of 
communication.

&lt;p&gt; - The most fundamental aspect of CSP is a communication 
event.

&lt;p&gt; -- To BE CONTINUED...</description>
    </item>
    <item>
      <pubDate>Thu, 19 Jul 2001 03:42:31 GMT</pubDate>
      <title>19 Jul 2001</title>
      <link>http://www.advogato.org/person/nchriss/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/nchriss/diary.html?start=0</guid>
      <description>Started new journal. I'll be posting quite a bit on my 
security research and findings consistently. Nice 
community...

&lt;p&gt; Current projects:

&lt;p&gt; IPF bridging for gh0st.net

&lt;p&gt; Cohesive LDAP architecture and design for gh0st.net

&lt;p&gt; Communicating sequential processes and general process 
algebra studies

&lt;p&gt; Weighted queueing techniques using ALTQ

&lt;p&gt; Study of IDS evasion/insertion techniques.

&lt;p&gt; ..and so it goes.</description>
    </item>
  </channel>
</rss>
