« November »
SunMonTueWedThuFriSat
  12345
6789101112
13141516171819
20212223242526
27282930   
       
About
Categories
Recently
Syndication
Locations of visitors to this page

Powered by blojsom

Radovan Semančík's Weblog

Wednesday, 30 November 2005

Peter Fabian just pointed my nose to the announcement that Sun is going to open source a bunch of its products sometime in the (near?) future, especially it's Java Enterprise Systems.

That's great! That's wonderfully, bubblingly, frothingly, burstingly and truly ecstasy-inducingly cool! (to paraphrase Douglas Adams) I would like to see the Access Manager sources. That's the best documentation available. And I would love to see Directory Server sources ... that may be trully enlighting :-)

We have only to wait now ...

Posted by semancik at 8:29 PM in Software
Tuesday, 29 November 2005

A friend of mime has an interesting problem. He provides pre-paid services and wants to give away free accounts with small credit to allow people to test the service. To keep the cost down, he wants to bring up a self-registration web form that will automatically create the account. And the problem is: how to stop users to sign for a test account ever again and again and thus abuse the "free sample" service?

He cannot ask for a SSN (or local "birth number" version), as we have privacy laws here. To minimize the chance to get in conflict with law he does not want to gather any unnecessary personal information, so he will get only name and some contact info (phone/email) - and even that as an optional fields. He may use persistent cookies to mark that account was already created for specific user. But it is trivial to remove a cookie and it will not stop the abusing attack. He cannot limit by IP adresses, as it will discriminate users behind proxies. I start to believe the problem cannot be effectively solved with current technology.

But, could an "identity system" help here? Imagine that we have such system globally deployed - any system of your choice. Can such a problem be solved?

The solution should allow each physical person to sign for the free account no more than once. To do this, we need to represent the idea of "physical person" in the digital world. Computers cannot see or feel, they know only about data, therefore we need to represent each person as a data record. And it must be exactly one data record for each physical person.

But, how could we do this? We will need the database of all the persons in the world. Technically, we could do this. The centralized database will not do, but we can split it up by countries. Enforce strong registration policies, destroy some civil liberties, wait for some 100 years and we can have a sound database with acceptably low error ratio. Well, I have strong feeling that such a database cannot be constructed in practice. But let's pretend for a while that it can be done ...

If we've got the global database, we have two options:

  1. Assign each person's data record an unique identifier and keep the list of identifiers that already signed-up for the service.
  2. Indicate that the account was assigned in the person's data record. For this to work the service must be able to alter the attribute in the person's data record and at the same time the person must not have the same ability.

As for the first option, we cannot use "global" identifier of a person. If we do, our really-unimportant-service can collude with other also-unimportant-services and track the user activity. That identifier will be the "SSN equivalent". We have to use "local" identifiers, generated especially for our service. That adds to the management overhead and it may not scale. And it may allow the central database to track user's activities anyway.

The second option may be feasible, provided that the global database itself is feasible. But ... what if our service will not store only the yes/no flag, but inserts some kind of identifier there? Then we are back to option 1. And scalability is limited as well.

That looks pretty bad. No good solution. Or is there any other way I've missed? Can "modern cryptography" help? What about systems similar to Stefan Brands' digital credentials? Any ideas anyone?

Posted by semancik at 10:42 AM in Identity
Saturday, 26 November 2005
I've activated writebacks (comments and trackbacks) in my blog. It took some time, as this site runs SELinux and has a bit paranoid administrators. It took a bit of time to persuade them that I need such obscenity: a directory that is writable by web server. And it took even more time while Nite, one of the system admins found time to configure it (thanks). One way or another, it is working now. I look forward for your comments, just use the "writeback" link below each blog entry.
Posted by semancik at 7:31 PM in Uncategorised
Friday, 18 November 2005

I've recently found Dan Blum's Identerati blog and found there a piece that explains why "strong" authentication will not fix phising. And it really struck me. How anyone could ever think that one-way authentication can fix a man-in-the-middle attack? What kind of people are out there?

Some environments can really surprise me. It is only few years ago that I've learned that some American bank did use only simple passwords for Internet banking access. "What a foolishness", I tought. Here, in the barbaric eastern europe no bank would ever risk that. Even the technologically least advanced bank deployed at least some kind of "strong" auth before the break of the millenium. And even with strong auth there were some braches. Nothing public, of course :-)

Only later I've learned that it is common practice in the US to use passwords only. Real foolishness. I'm no fan of so called "strong authentication", because that is usually just a one-way dynamic password authentication scheme(*) packaged in a nice box. But even that is much better than static passwords.

(*) Oh yeah, you can "secure" the "strong" auth by wrapping the HTML form in SSL. But, have you ever seen the list of "trusted" Certificate Authorities in your browser? No? Then go on and have a look. I would bet that there are many of them that you've never heard of. Do you trust them? I'm sure you do.

Posted by semancik at 10:24 AM in security
Friday, 11 November 2005
While deciding for the Enterprise Identity Management prject, the order that the role-based access control promises seems to be one of the most attractive bits for the customer. It looks like all the current chaos will yield place for the role-imposed order. And order is good, isn't it?

You, as an implementer has it quite easy: the composition of roles is a customer's task. You cannot possibly see to all the nuances of department organization to set it up. But if customer is willing to pay an enormous pile of money, you can do it anyway. Am I right? :-)

But it is a whole different story for the customer. When he starts to design the roles, the underlying chaos will be uncovered. Bit by bit. There are employees that should do the same work (and therefore be in the same role), but they differ in one little privilege. And business unit will argue to the death that it is exactly the way as it should be. Well, to keep it clean, you create two roles. And then there are employees that have access to lots of different systems. You create a role for each of these systems, to keep it systematic. And there are employees that do not fall to any category ... and all that is multiplied, if you want to keep your role design clean and build a role hierarchy.

You will soon realize, that you have two or three times the number of roles than the number of employees. Now, it looks like you would spend all your effort on role-maintenance instead of employee-maintenance - the role system as just as dynamic as is the employee base. That's pretty different from the solution as it was described by sales people: "you will just assign an employee to the role and that's it". But, there are ways out of this. At least partially.

The first option is to get a harmonic agreement. You may try to negotiate the role structure with business units. But the outcome may vary. You may end in the endless war with business units that will help noone. Or you may end up with roles too broad - each role will have a lot of unnecessary privileges. That will contradict the minimum privilege and need-to-know principles. I have heard about the extreme, that each system has only three roles: administrator, poweruser and user. This can keep the management overhead to minimum, but how it goes with the security policy? But even that may be worthy. I hear the words "business first" much too often.

The second option is to leverage the power of human resources department and company organizational structure. You may create a role for each work position. Assign employees to these roles automatically and manage only the roles. If someone wants to add a privilege, he must ask to add this privilege to his work position, not to him personaly. And you may set up work processes to make this process harder to achieve by creating a maze of reviewers and approvers. The people will think twice before they embark on the process of changing the role structure and you will get only the "serious" requests. If you have "standardized" organization, where most employees has well-defined positions this may work for you. I have reports from medium-sized companies that this approach works quite well. But to initialize this mechanism you will need to make some kind of "brutal bootstrap", the kind of "great chinese revolution" approach. On the day zero-1 all works in old, chaotic way. During weekend, on the day zero you will change the system and disable all the "old ways" of doing things. On the day zero+1 all works the new way. Guess what happens? (Hint: you should better chcek that the helpdesk is oprating, well staffed and motivated). Very risky approach.

Or there is a third way. Load all your existing employee data from all of your systems to the centralized store. Try to figure out which account belong to which employee using some kind of reconciliation. If you get the reconciliation rules right, you may get as high as 80% success ratio. Once you have all the accounts in the store, you may start to analyze them and slowly create the roles for employees with similar privileges. You may enlarge the role when it feels fine, or call the affected employee and talk with him if he really needs the "exceeding" privilege. Sooner or later, you will end up with a structure that is role-based with a handful of exceptions. This looks like ideal approach, but .... it takes ages. Even if you have 80% success ratio with reconcilation, it still leaves a lot of accounts (20% of the average number of users per system times the number of systems) that are not reconciliated. And that number can be very high in large and/or complex enterprises. And that's only the beginning. Try to sort out who whould belong to what role manualy. Really hard and endless work. But this approach does not disturb the business in any significant way. And hence it may be worth considering.

No moral this time. I must admit that I do not know the exact solution, if any exist at all. I feel that in practice we will need the combination of all three approaches. Or maybe entirely different approach. Maybe the rule-based mechanisms will behave better that the role-based? But who can tell? All IDM projects around here are too young. This kind of role-related issues takes a long time to reveal their real results.

Does anyone really knows the answer to the "Role Explosion Problem"? Any insights appreciated.

Posted by semancik at 4:46 PM in Identity