<?xml version="1.0"?>
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/" >
<channel>
<title>pages tagged security</title>
<link>http://tychoish.com/tag/security/</link>
<description>tychoish</description>
<item>
	
	<title>Denormalize Access Control</title>
	<dcterms:creator>tychoish</dcterms:creator>
	
	
	  <guid>http://tychoish.com/rhizome/denormalize-access-control-metadata/</guid>
	
	<link>http://tychoish.com/rhizome/denormalize-access-control-metadata/</link>
	
	
	<category>/tag/information-management</category>
	
	<category>/tag/infrastructure</category>
	
	<category>/tag/security</category>
	
	
	<pubDate>Mon, 24 Sep 2012 00:00:00 -0400</pubDate>
	<dcterms:modified>2012-12-11T13:28:55Z</dcterms:modified>
	
	<description>&lt;p&gt;Access control is both immensely useful and incredibly broken. &lt;/p&gt;

&lt;p&gt;Access control, or the ability to constrain access to data and
programs in a shared system is the only way that we, as users of
shared systems, can maintain our identities, personal security, and
privacy. Shared systems include: databases, file servers, social
networking sites, virtualized computing systems, vendor accounts,
control panels, management tools, &lt;em&gt;and so forth&lt;/em&gt; all need robust,
flexible, granular, and scalable access control tools.&lt;/p&gt;

&lt;p&gt;Contemporary access control tools--access control lists (ACL,) and
access control groups--indeed the entire conceptual framework for
managing access to data and resources, don&#39;t work. From a theoretical
practice, ACLs that express a relationship between &lt;em&gt;users&lt;/em&gt; or &lt;em&gt;groups&lt;/em&gt;
of users and &lt;em&gt;data&lt;/em&gt; or &lt;em&gt;resources&lt;/em&gt;, represent a parsimonious solution
to the &quot;access control problem:&quot; &lt;em&gt;if properly deployed&lt;/em&gt; only those
with access grants will have access to a given resource.&lt;/p&gt;

&lt;p&gt;In practice these these kinds of relationships do not work. Typically
relationships between data and users is rich and complex and different
users need to be able to do different things with different
resources. Some users need &quot;read only&quot; access, others need partial
read access, some need read and write access but only to a subset of a
resource. While ACL systems can impose these kinds of restrictions,
the access control abscration doesn&#39;t match the data abstraction &lt;em&gt;or&lt;/em&gt;
the real-world relationships that it supposedly reflects.&lt;/p&gt;

&lt;p&gt;Compounding this problem are two important factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Access control needs change over time in response to social and
cultural shifts among the users and providers of these resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are too many pieces of information or resources in any
potential shared system to allocate access on a per-object or
per-resource basis, and the volume of objects and resources is only
increasing.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Often many objects or resources have the same or similar access
control patterns, which leads to the &quot;group&quot; abstraction. Groups make
it possible to describe a specific access control pattern that apply
to a number of objects, and connect this pattern with specific
resources.&lt;/p&gt;

&lt;p&gt;Conceptual deficiencies: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There&#39;s a volume problem. Access control data represents a
many-to-many-to-many relationship. There are many different users
and (nested) groups, many different kinds of access controls that
systems can grant,  and many different (nested) resources. This
would be unmanageably complex without the possibility for nesting,
but nesting means that the relationships between resources and
between groups and users are also important. With the possibility
for nesting access control is impossible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ACLs and group-based access control don&#39;t account for the fact that
access must be constantly evolving, and current systems don&#39;t
contain support for ongoing maintenance. (we need background threads
that go through and validate access control consistency.) Also all
access control grants must have some capacity for automatic
expiration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access control requirements and possibilities shift as data becomes
more or less structured, and as data use patterns change. The same
conceptual framework that works well for access control in the
context of a the data stored in a relational database, doesn&#39;t work
so when the data in question is a word processing document, an
email folder, or a spread sheet.&lt;/p&gt;

&lt;p&gt;The fewer people that need access to a single piece of data, the
easier the access control system can be. While this seems self
evident, it also means that access control systems are difficult to
test in the really large complex systems in which they&#39;re used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Group-based access control systems, in effect, normalize data about
access control, in an effort to speed up data access times. While
this performance is welcome, in most cases granting access via
groups leads to an overly liberal distribution of access control
rights. At once, its too difficult to understand &quot;who has access to
what&quot; and too easy to add people to groups that give them more
access than they need.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the solution: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Denormalize all access control data,&lt;/strong&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;don&#39;t grant access to groups,&lt;/em&gt; and &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;forbid inheritance.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is totally counter to the state of the art. In most ways,
normalized access control data, with role/group-based access control,
and complex inheritance are the gold standard. Why would it work?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you have a piece of data, you will always be able to determine
who has access to data, without needing to do another look-up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you can deactivate credentials, then a background process can go
through and remove access without causing a large security
problem. (For partial removes, you would freeze an account, let the
background process modify access control and then unfreeze the
account.)&lt;/p&gt;

&lt;p&gt;The down side is that, potentially, in a large system, it may take a
rather long time for access grants to propagate to users. Locking
user accounts makes the system secure/viable, but doesn&#39;t make the
process any more quick. &lt;/p&gt;

&lt;p&gt;As an added bonus, these processes could probably be independent and
wouldn&#39;t require any sort of shared state or lock, which means many
such operation could run in parallel, and they could stop and
restart at will.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The inheritance option should be fuzzy. Some sort of &quot;bucket-based&quot;
access control should be possible, if there&#39;s a lot of data with the
same access control rules and users. &lt;/p&gt;

&lt;p&gt;Once things get more complex, buckets are the wrong metaphor, you
should use granular controls everywhere.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Problems/Conclusion: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Denormalization might fix the problems with ACLs and permissions
systems, but it doesn&#39;t fix the problems with distributed identity
management.&lt;/p&gt;

&lt;p&gt;As a counterpoint, this seems like a cryptography management
problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Storing access control information &lt;em&gt;with&lt;/em&gt; data means that it&#39;s
difficult to take a user and return a list of what these credentials
have access to. &lt;/p&gt;

&lt;p&gt;In truth, centralized ACL systems are subject to this flaw as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A huge part of the problem with centralized ACL derives from
nesting, and the fact that we tend to model/organize data in
tree-like structures, that often run counter to the organization of
access control rights. As a result access control tools must be
arbitrary.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
	
	
</item>
<item>
	
	<title>Security Isn&#x27;t a Technological Problem</title>
	<dcterms:creator>tycho garen</dcterms:creator>
	
	
	  <guid>http://tychoish.com/rhizome/security-isnt-a-technological-problem/</guid>
	
	<link>http://tychoish.com/rhizome/security-isnt-a-technological-problem/</link>
	
	
	<category>/tag/cyborg</category>
	
	<category>/tag/security</category>
	
	
	<pubDate>Wed, 08 Jun 2011 00:00:00 -0400</pubDate>
	<dcterms:modified>2012-06-23T15:21:32Z</dcterms:modified>
	
	<description>&lt;p&gt;Security, of technological resources, isn&#39;t a technological
problem. The security of technological resources and information is a
problem with people.&lt;/p&gt;

&lt;p&gt;There.&lt;/p&gt;

&lt;p&gt;That&#39;s not a very ground breaking conclusion, but I think that the
effects of what this might mean for people &lt;em&gt;doing security&lt;/em&gt;&lt;a id=&quot;fnref:security&quot; class=&quot;footnote&quot;&gt;1&lt;/a&gt;
may be more startling.&lt;/p&gt;

&lt;p&gt;Beyond a basic standard of &quot;writing and using quality software&quot; and
following sane administration practices, the way to resolve security
issues is to fix the way people use and understand the implications of
their use.&lt;/p&gt;

&lt;p&gt;There are tools that help control user behavior to greater or lesser
degrees. Things like permissions control, management, auditing, and
encryption, but they&#39;re just tools: they don&#39;t solve the human
problems and the policy/practice issues that are the core of best
security practice. Teaching people how their technology works, what&#39;s
possible and what&#39;s not possible, and finally how to control their own
data and resources is the key to increasing and providing security
services to everyone.&lt;/p&gt;

&lt;p&gt;I think of this as the &quot;free software solution,&quot; because it draws on
the strengths and methods of free software to shape and enhance
people&#39;s user experience and to improve the possible security of the
public network as a whole. One of the things that has always drawn me
to free software, and one of its least understood properties, deals
with the power of source code to create an environment that
facilitates education and inquiry. People who regularly use free
software, I&#39;d bet, have a better understanding of how technology works
than people who don&#39;t, and it&#39;s not because free software users have
to deal with less polished software (not terribly true), but has
something to do with a different relationship between creators and
users of software. I think it would be interesting to take this model
and apply it to the &quot;security problem.&quot;&lt;/p&gt;

&lt;p&gt;With luck, teaching more people to think about security processes will
mean that users will generally understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;how encryption works, and be more amenable to managing
their own cryptography identities and infrastructure. (PGP and SSH)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how networking works on a basic level to be able to configure, set,
and review network security. (LAN Administration, NetFilter)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how passwords are stored and used, and what makes strong passwords that
are easy to remember and difficult to break.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;how to control and consolidate identity systems to minimize social
engineering vulnerabilities. (OpenID, OAuth, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There&#39;s a lot of pretty basic knowledge that I think most people don&#39;t
have.  At the same time, I think it&#39;s safe to say that most of the
difficult engineering questions have been solved regarding security,
there&#39;s a bunch of tooling and infrastructure on the part of various
services that would make better security practices easier to maintain
(i.e. better PGP support in mail clients). In the mean time....&lt;/p&gt;

&lt;p&gt;Stay smart. &lt;/p&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:security&quot;&gt;&lt;p&gt;Security, being a process, rather than a product. &lt;a href=&quot;http://www.schneier.com/crypto-gram-0005.html&quot;&gt;Cite&lt;/a&gt;.&lt;a class=&quot;reversefootnote&quot;&gt;&amp;#160;&amp;#8617;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
</description>
	
	
</item>
<item>
	
	<title>Flaws with SSH</title>
	<dcterms:creator>tycho garen</dcterms:creator>
	
	
	  <guid>http://tychoish.com/rhizome/flaws-with-ssh/</guid>
	
	<link>http://tychoish.com/rhizome/flaws-with-ssh/</link>
	
	
	<category>/tag/security</category>
	
	
	<pubDate>Mon, 25 Apr 2011 00:00:00 -0400</pubDate>
	<dcterms:modified>2012-06-23T15:21:32Z</dcterms:modified>
	
	<description>&lt;p&gt;In response to &lt;a href=&quot;http://tychoish.com/tag/security/../../rhizome/9-awesome-ssh-tricks/&quot;&gt;9 Awesome SSH Tricks&lt;/a&gt;
some posted the following quote (on the old commenting system): &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The workarounds have become smoother and some of the things we can
  do with networks of Unix machines are pretty impressive, but when
  ssh is the foundation of your security architecture, you know things
  aren&#39;t working as they should.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;-- &lt;a href=&quot;http://interviews.slashdot.org/story/04/10/18/1153211/Rob-Pike-Responds&quot;&gt;Rob Pike, 2004&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So let&#39;s clarify things a bit. SSH is &lt;em&gt;great&lt;/em&gt; as an end user protocol,
and great for dealing with the realities of our distributed computing
environment in an exigent manner, SSH lets us: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;connect securely to remote systems. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;quickly establish tunnels through remote machines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;admister remote systems securely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;provide end-users with key-based authentication. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SSH is &lt;em&gt;great&lt;/em&gt; for providing end users with a secure way of
interacting with computer systems in networked environment. It&#39;s not,
however, the magic bullet for security policy. If you or your
organizations security practices revolve entirely around SSH tunnels,
then you&#39;re probably in trouble or about to be in trouble. Use
traditional VPNs and TLS/SSL when it makes sense and develop a sane
security policy.&lt;/p&gt;

&lt;p&gt;But don&#39;t forget SSH and if you do use SSH, know that there are some
really &lt;span class=&quot;createlink&quot;&gt;&lt;a href=&quot;http://tychoish.com/ikiwiki.cgi?page=essay%2F9-awesome-ssh-tricks&amp;amp;from=rhizome%2Fflaws-with-ssh&amp;amp;do=create&quot; rel=&quot;nofollow&quot;&gt;?&lt;/a&gt;awesome&lt;/span&gt; things that OpenSSH
makes possible. &lt;/p&gt;
</description>
	
	
</item>
<item>
	
	<title>on public key encryption and security</title>
	<dcterms:creator>tycho garen</dcterms:creator>
	
	
	  <guid>http://tychoish.com/rhizome/on-public-key-encryption-and-security/</guid>
	
	<link>http://tychoish.com/rhizome/on-public-key-encryption-and-security/</link>
	
	
	<category>/tag/cyborg</category>
	
	<category>/tag/security</category>
	
	
	<pubDate>Tue, 14 Jul 2009 00:00:00 -0400</pubDate>
	<dcterms:modified>2012-06-23T15:21:32Z</dcterms:modified>
	
	<description>&lt;p&gt;As part of the moving process I got a bank account, and I was
reminded, again, of how much the security systems of most online banks
are comically flawed, which lead me to even greater anger about
security in general. The following rant is what happened.&lt;/p&gt;

&lt;p&gt;I should say at first, that I&#39;m not really a security expert, and I
just dabble in this stuff. Having said that...&lt;/p&gt;

&lt;p&gt;&quot;Security&quot; online and in a digital context covers two pretty distinct
aspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Identity.&lt;/em&gt; In real life we can show our drivers license or passport,
we can say &quot;I&#39;m [insert name here],&quot; and in many situations another
person is probably not too far away to be able to say, &quot;I know them,
they&#39;re [insert name here].&quot; Online? Well identity is less easily
and reliably verified. Identity is important both for individual&#39;s
(and organizations&#39;) identity and for things that people (and
organizations) produce/own: emails, documents, web pages, software,
and so forth.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Encryption.&lt;/em&gt; Basically we encrypt data so that we can be relatively
certain that no one gains access to our data unless, by listening
into our network connection, or gaining access to physical
media. From encryption we get &lt;em&gt;privacy&lt;/em&gt;, and as long as the
encryption scheme works as it should and the encryption covers
communications end-to-end, it&#39;s pretty safe to assume some measure
of privacy.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns out, from a technical perspective that encryption is
reasonably easy to achieve. It&#39;s true that all cryptographic schemes
are ultimately breakable, however, if we can generally assume best
practices (expiring old keys, keeping your private keys safe, etc.)
then I feel fairly safe in asserting that encryption isn&#39;t the weak
part of the security equation.&lt;/p&gt;

&lt;p&gt;This leaves identity on the table. Which is sort of a messy affair.&lt;/p&gt;

&lt;p&gt;Just because someone says, &quot;Hello my name is Alice,&quot; it doesn&#39;t mean
that they &lt;em&gt;are&lt;/em&gt; Alice. Just because they have Alice&#39;s password,
doesn&#39;t necessarily mean that they are Alice (but that&#39;s a safer bet.)
The best, and most reliable way to verify someones identity, it turns
out, to have a &quot;web of trust.&quot;&lt;/p&gt;

&lt;p&gt;Which basically means, you assert that you are who you say you are,
and then &quot;vouch&quot; for other people who you &quot;know&quot; are who they say they
are. Once you&#39;ve vouched for someone you then &quot;trust&quot; that the people
they&#39;ve vouched for, and so forth. Good web-of-trust systems allow you
to revoke trust, and provide some mechanism for propagating trusted
networks of identities among users.&lt;/p&gt;

&lt;p&gt;The above described system is a very peer-to-peer/ad hoc system
(bottom up, if you will), there are also more centralized (top down,)
systems which can also function to verify identity in a digital
context. These systems depend on commonly trusted third parties that
are tasked with researching and verifying the identity of individuals
and organization. So called &quot;certificate authorities,&quot; make it
possible to &quot;trust identities&quot; of without needing a personal
web-of-trust network extend to cover people and organizations you&#39;d
come in contact with.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Lets bring this back to the case study of the bank,&lt;/p&gt;

&lt;p&gt;They encrypt their traffic, end to end, with SSL (eg. TLS), they pay
for a certificate from a certificate authority with a good
reputation. The weak part of this equation? You and Me, apparently.&lt;/p&gt;

&lt;p&gt;To verify &lt;em&gt;our&lt;/em&gt; identity, we have this arcane and convoluted scheme
where by we have to enter hard to remember passwords in stages (my
last bank, had us enter passwords on three pages in succession) so
that the back can be sure we&#39;re who we say we are. And the sad part is
that while encryption and identity verification technology in secure
and reliable ways is pretty advanced (in the big picture), we still
have to send passwords. Here are my thoughts on passwords:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The best passwords are the hardest to remember. The best passwords
don&#39;t contain words, and contain numbers, letters, and
punctuation. But these passwords are difficult to remember, and I
think many people avoid picking truly secure passwords because of
the difficulty.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Passwords aren&#39;t bad, and they&#39;re--I suspect--most useful as a
casual deterrent and a reminder to users of the potential gravity
of the situation; but they&#39;re not exactly a reliable fingerprinting
mechanism.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some sort of cryptographic handshake would be many magnitudes more
secure, and much less painless for users.&lt;/p&gt;

&lt;p&gt;I have this theory, that security for banks (and other similar
institutions) is more about giving the appearance of being secure
(asking for more complex passwords, making you jump through more
hoops, etc.) and less about doing things that would be more secure
in the long run. But maybe that&#39;s just me.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyway, back onto more general interest topics in the near future.&lt;/p&gt;
</description>
	
	
</item>

</channel>
</rss>
