Archive for the ‘Off-topic’ Category

140 trends, zero, etc

Saturday, December 22nd, 2007

Holiday season is NYC can be a painful time of year, but not for the reasons of which most people think. You see, during the holiday season, any watering holes to which you regularly go will likely throw many a free drink at you. Which leads to a problem – you want to go to all these places and see everyone for the holidays, but you don’t want to end up being carried home. So, now you either turn down those drink gifts from those around you or you end up in a tortuous state the next morning, both of which can hurt.

Which is to say, on this home stretch of the holiday season here in the USA, I wish everyone a happy holidays!

A post to the SAAG mailing list of interest to the FIPS 140 readers.

This decade many global financial institutions (e.g. banks, insurance firms, credit unions, and so forth) have said that their commercial (re-)insurers are pressuring them to deploy only FIPS-140 compliant algorithms & modes.

In a growing number of cases, there is even pressure from insurers onto major commercial firms, particularly financial firms, to use only equipment (including ordinary routers and switches, not just “security appliances”) that actually has obtained a FIPS-140 approval for the cryptographic module inside.

Further, a number of governments other than the US government have declared that implementations using cryptographic modules that have been approved under FIPS-140 are also acceptable for deployment within their country or government or both. The number of countries in this group appears to be growing, and seems visibly larger now than 8 years ago.

These are trends that people in the FIPS 140 arena have been talking about for a while, and I know I have seen and been involved with them by virtue of having had a strong window into “the vendor going for FIPS 140 validation” perspective for quite some time now. It is interesting to read someone else’s encounters with these things in a public forum.

So, besides the normal USA government requirements, support of at least a FIPS-approved algorithm suite has become a baseline requirement found almost everywhere now when cryptography is used, and every so often you even see pushes for FIPS 140 validation outside of the USA government. Given that, it is commonplace these days for standards, products, and such utilizing cryptography to include support for a FIPS-approved algorithm suite. Doing so not only brings into use a very commonly deployed, rigorously studied, and well-known set of algorithms, but it also facilitates products implementing those standards, products, and such in being able to go through the FIPS 140 validation process at some point. This makes even more sense since many of the people working on standards, products, and such utilizing cryptography are employed by companies that have to play in the FIPS 140 arena, and so there is often thought given to the FIPS 140 “validatibility” of modules implementing these standards, derived from these products, and such.

With the widespread notoriety of many of the algorithms that get rolled into NIST standards causing tons of eyes to look over these standards very closely, and with things like AES and now the next SHA being derived from open international competitions not to mention modes of operation and such being submitted by the outside world, none of this should come as a surprise.

-

Also of possible interest to FIPS 140 readers, a couple [1, 2] of useful posts on Metzger’s cryptography mailing list on the old topic of how to prevent the compiler from potentially optimizing away your “zeroizing” memset call in C. The sort answer, take advantage of volatile.

An example of how GnuPG does this from [1],

  /* To avoid that a compiler optimizes certain memset calls away, these
     macros may be used instead. */
  #define wipememory2(_ptr,_set,_len) do { \
                volatile char *_vptr=(volatile char *)(_ptr); \
                size_t _vlen=(_len); \
                while(_vlen) { *_vptr=(_set); _vptr++; _vlen--; } \
                    } while(0)
  #define wipememory(_ptr,_len) wipememory2(_ptr,0,_len)

And, [2] points to this 2002 MSDN article on the topic.

-

Finally, random software that has been popping up on some mailing lists I follow.

I remember using Maple quite a bit in college.

SAGE.

Use SAGE for studying a huge range of mathematics, including algebra, calculus, elementary to very advanced number theory, cryptography, numerical computation, commutative algebra, group theory, combinatorics, graph theory, and exact linear algebra.

And, I did lots of Lisp there too.

Clojure.

Clojure is a dynamic programming language that targets the Java Virtual Machine. It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language – it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.

Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

Io.

Io is a small, prototype-based programming language. The ideas in Io are mostly inspired by Smalltalk (all values are objects), Self (prototype-based), NewtonScript (differential inheritance), Act1 (actors and futures for concurrency), LISP (code is a runtime inspectable/modifiable tree) and Lua (small, embeddable).

Wow, it’s been 10 years.

Nmap v4.50.

December 13, 2007 — Insecure.Org is pleased to announce the immediate, free availability of the Nmap Security Scanner version 4.50 from http://insecure.org/nmap/. Nmap was first released in 1997, so this release celebrates our 10th anniversary.

Pacha crowd, election beauty, search goodness

Saturday, December 15th, 2007

It has been a long time since I wrote a weekend post, as some people have pointed out. Being busy on weekdays looks to have gradually shifted more of my out and about time to weekends, which might be the culprit. And, I guess while the quickies posts might be similar to a weekend post, they just aren’t the same enough for some of you. So, let’s do this.

-

Ok, let me first get the disappointment out of the way – I don’t have any nightlife or other stories I want to write up this time.

That said, Pacha NYC does seem to be a topic of interest to many, as my thoughts on customer service there have attracted some attention. So, why not comment on the crowd?

As I stated before, Pacha is big and well-known, which means that lots of people go there and almost every one of them gets in. The result of this often seems to be that there are very positive, very negative, and a whole bunch of neutral people running around inside during peak time, which is to say, you may run into someone that makes you smile but you may also run into someone that makes you frown.

I guess I should qualify my terms a bit. My thoughts on positive, negative, and neutral in this context are something like follows.

  • Positive – there to have fun; respectful; happy; enjoys the music; can handle a crowd.
  • Negative – rude; angry; beligerent; incoherent; upset by a crowd.
  • Neutral – just sort of there; meat market.

Now, there are three DJs that get me into Pacha routinely, Boris, Victor Calderone (VC), and Danny Tenaglia (dt), and so I will comment on the crowds for these three.

While the neutral people are hard to notice, the positive and negative people do make an impact and their concentrations tend to vary quite a bit across these three DJs when at Pacha. So, here is a breakdown of the crowd for each.

  • Boris – Boris generally has a balanced mix of negative and positive people during peak. As after hours comes in, most negative people head out, leaving a much higher concentration of positive people to negative people, which means a good crowd for after hours.
  • dt – During peak, the crowd at Tenaglia always seems to be at the extremes, having both the highest concentration of negative people and the highest concentration of positive people. However, once the party rolls over fully to after hours, the dt regulars tend to take over the place. Tenaglia has a “be yourself” and let others be themselves motto, which is something the dt regulars have adopted fully, meaning the crowd when after hours kicks into high gear is completely positive and absolutely perfect.
  • VC – The crowd for Calderone from peak to finish always seems to have the lowest concentration of negative people and a high concentration of positive people. Once after hours kicks in, the few negative people tend to depart, leaving a great crowd.

Based solely on crowd, that makes the best bet to go to Pacha when VC is there; however, if you are a late-nighter (like me), then dt pulls ahead.

My recommendation though, forget the crowd, go for the music and fun, and focus on the after hours. All three of these guys play marathon sets (at least 8 hours long), and none of them really kick into high gear until at least 6AM.

-

So, I briefly mentioned height and the results of USA presidential elections in part of a ramble.

We can play with features here too. Take height, which can both play a role in being judged beautiful and has strong ties to being perceived as a leader. Perhaps this is because physical size played an important role in being a leader way back when and helped with survival. Whatever the cause, there are some interesting statistics about height and power. Just look at the heights of US presidents in general (and even as compared to their opponents – probably one of the best ways to pick which candidate will win an election). And, how tall are the CEOs of major corporations on average?

Now, I did not qualify “best” in that comment at all and intended it to be a bit humorous, but the end result may be an incorrect statement. Of course, the general point was to show the influence of physical attributes on our perceptions of people, not to actually mean the most effective way to predict the results of a USA presidential election is answering the question “which candidate is taller?” Nevertheless, I have since changed that statement to avoid additional headaches. ;)

Looking at Wikipedia, there is a discussion of the topic here, which gives the heights of the USA presidents and is summed up as follows.

In reality, for the 46 elections in which the height of which both candidates is known, the taller candidate won 25 times (approximately 54 percent of the time), the shorter candidate won 18 times (approximately 39 percent of the time) and the candidates were the same height three times (about 7 percent of the time).[original research?] Therefore, the taller candidate has won the majority of elections, but the tall-short margin of victory is by no means overwhelming.

It should be noted however that in three of the cases where the shorter candidate won, the taller candidate actually received more popular votes but lost in the Electoral College; this happened in 1824, 1888, and 2000 (the other time that the electoral vote winner was not the popular vote winner was in 1876, for which we do not know the height of the loser).[original research?] So of the 46 cases we have data, the taller candidate has won the popular vote 28 times (61 percent), and the shorter candidate only about 15 times (33 percent of them).

I have no idea if the height information is accurate, but, if it is, this boils down to the following… In USA presidential elections where we know height was different, 58% of the time the taller candidates won the election, and 65% of the time they won the popular vote. Since 1900, in USA presidential elections where we know height was different, 65% of the time the taller candidates won the election, and 69% of the time they won the popular vote.

Clearly, those odds favor the taller candidate, so height is a simple, physical appearance based metric to pick the winner of a USA presidential election with greater than coin flip odds. This seems to make sense, as height is an aspect of physical appearance that effects peoples’ judgments of leadership capabilities. But, let’s look at another aspect of physical appearance that probably shines through better than height in many media used today – faces.

So, we have this paper.

Human groups are unusual among primates in that our leaders are often democratically selected. Faces affect hiring decisions and could influence voting behavior. Here, we show that facial appearance has important effects on choice of leader. We show that differences in facial shape alone between candidates can predict who wins or loses in an election (Study 1) and that changing context from war time to peace time can affect which face receives the most votes (Study 2). Our studies highlight the role of face shape in voting behavior and the role of personal attributions in face perception. We also show that there may be no general characteristics of faces that can win votes, demonstrating that face traits and information about the environment interact in choice of leader.

With the results…

Feeding this percentage into the regression models, we found that the models predicted a win for Blair in terms of both popular vote (53.17%) and seats won (56.6%).

Our predictions were relatively accurate, as Blair won 52.13% of the actual two-way share of the popular vote and 64.3% of the split in seats won[...]

The final polling revealed, from a 99% return for the two candidates, that Bush had 51% and Kerry had 48% of votes, very similar to the 56%/44% split here when judges were asked which face they would vote for as the leader of their country.

And this paper.

Here we show that rapid judgments of competence based solely on the facial appearance of candidates predicted the outcomes of gubernatorial elections, the most important elections in the United States next to the presidential elections. In all experiments, participants were presented with the faces of the winner and the runner-up and asked to decide who is more competent. To ensure that competence judgments were based solely on facial appearance and not on prior person knowledge, judgments for races in which the participant recognized any of the faces were excluded from all analyses. Predictions were as accurate after a 100-ms exposure to the faces of the winner and the runner-up as exposure after 250 ms and unlimited time exposure (Experiment 1). Asking participants to deliberate and make a good judgment dramatically increased the response times and reduced the predictive accuracy of judgments relative to both judgments made after 250 ms of exposure to the faces and judgments made within a response deadline of 2 s (Experiment 2). Finally, competence judgments collected before the elections in 2006 predicted 68.6% of the gubernatorial races and 72.4% of the Senate races (Experiment 3). These effects were independent of the incumbency status of the candidates. The findings suggest that rapid, unreflective judgments of competence from faces can affect voting decisions.

Great, so now we have evidence that facial appearance impacts how we rate someone as a leader too, and this can be used to predict election results. (All of which is right in line with the original ramble.)

So, lets reduce all of this height and face stuff down to the level of picking candidates by answering a simple question, such as our “who is taller?” question.

Perhaps a just as simple and maybe better way to pick who will be elected president than answering “who is taller?” is to answer this more general question – who best looks the part? (A little lamination goes a long way. ;) ) And, of course, a consensus answer gives better results than each individual answer here.

Which might also be in line with this other paper.

The current study examined whether desired personality influences face preference. Pairs of composite faces were made based on the faces that individuals differing in desired partner personality found most attractive. One composite represented a face most attractive to those desiring a particular trait and the other a face most attractive to those not desiring the same trait. Pairs were presented to different participants to ascertain whether the composites reflected the desired personality of the original raters. For several traits the composites did differ in perceived personality indicating that the personality desired in a partner is reflected in face preference: if a trait is desired then faces perceived to possess that trait are found more attractive than faces which do not possess that trait. These findings cast new light on the ‘‘what is beautiful is good’’ stereotype. What an individual desires in partner reflects what they consider ‘‘good’’, and they find faces reflecting these desired traits as attractive – ‘‘what is good is beautiful’’. Possessing personality traits that are attractive may be causal in making a face attractive.

What is good is beautiful, or what is beautiful is good? However you look at it then beauty is good.

But, when do we start to recognize beauty and judge people as attractive or not?

Like adults, young infants prefer attractive to unattractive faces (e.g. Langlois, Roggman, Casey, Ritter, Rieser-Danner & Jenkins, 1987; Slater, von der Schulenburg, Brown, Badenoch, Butterworth, Parsons & Samuels, 1998). Older children and adults stereotype based on facial attractiveness (Eagly, Ashmore, Makhijani & Longo, 1991; Langlois, Kalakanis, Rubenstein, Larson, Hallam & Smooth, 2000). How do preferences for attractive faces develop into stereotypes? Several theories of stereotyping posit that categorization of groups is necessary before positive and negative traits can become linked to the groups (e.g. Tajfel, Billig, Bundy & Flament, 1971; Zebrowitz-McArthur, 1982). We investigated whether or not 6-month-old infants can categorize faces as attractive or unattractive. In Experiment 1, we familiarized infants to unattractive female faces; in Experiment 2, we familiarized infants to attractive female faces and tested both groups of infants on novel faces from the familiar or novel attractiveness category. Results showed that 6-month-olds categorized attractive and unattractive female faces into two different groups of faces. Experiments 3 and 4 confirmed that infants could discriminate among the faces used in Experiments 1 and 2, and therefore categorized the faces based on their similarities in attractiveness rather than because they could not differentiate among the faces. These findings suggest that categorization of facial attractiveness may underlie the development of the ‘beauty is good’ stereotype.

Which brings us to this major work that pulls together of a wealth of studies.

Common maxims about beauty suggest that attractiveness is not important in life. In contrast, both fitness-related evolutionary theory and socialization theory suggest that attractiveness influences development and interaction. In 11 meta-analyses, the authors evaluate these contradictory claims, demonstrating that (a) raters agree about who is and is not attractive, both within and across cultures; (b) attractive children and adults are judged more positively than unattractive children and adults, even by those who know them; (c) attractive children and adults are treated more positively than unattractive children and adults, even by those who know them; and (d) attractive children and adults exhibit more positive behaviors and traits than unattractive children and adults. Results are used to evaluate social and fitness-related evolutionary theories and the veracity of maxims about beauty.

In which we finds things like this.

Surprisingly, in addition to being judged differently as a function of their attractiveness, attractive individuals on average were treated significantly better than unattractive individuals. These findings are powerful evidence that, contrary to popular belief, attractiveness effects extend beyond mere “opinions” of others and permeate actual actions towards others, even though people may not be aware of it.

And, the concluding paragraph of that paper, which follows, reminded me of my previous post on this blog (i.e., this one).

An alternative viewpoint concludes the opposite about the maxims. Perhaps they have been too successful. Perhaps, because children and adults have listened carefully to and assimilated these maxims, they are confident that they have unique standards of beauty, that they do not judge or treat people differently based on their appearance, and that beauty has nothing to do with a person’s behaviors and traits. If people believe that they behave in accord with these principles of decency, they have no reason to recognize or change their behavior. Thus, the very research that identifies the powerful way in which people react to physical attractiveness might ameliorate these apparent unconscious and automatic processes. Being cognitive, humans have the behavioral plasticity and foresightedness to learn to oppose these influences, and the maxims can again remind people to behave more consciously and humanely.

Finally, when it comes to being physically attractive, being the “hottest” is not necessarily the way to be considered the most trustworthy.

If humans are sensitive to the costs and benefits of favouring kin in different circumstances, a strong prediction is that cues of relatedness will have a positive effect on prosocial feelings, but a negative effect on sexual attraction. Indeed, positive effects of facial resemblance (a potential cue of kinship) have been demonstrated in prosocial contexts. Alternatively, such effects may be owing to a general preference for familiar stimuli. Here, I show that subtly manipulated images of other-sex faces were judged as more trustworthy by the participants they were made to resemble than by control participants. In contrast, the effects of resemblance on attractiveness were significantly lower. In the context of a long-term relationship, where both prosocial regard and sexual appeal are important criteria, facial resemblance had no effect. In the context of a short-term relationship, where sexual appeal is the dominant criterion, facial resemblance decreased attractiveness. The results provide evidence against explanations implicating a general preference for familiar-looking stimuli and suggest instead that facial resemblance is a kinship cue to which humans modulate responses in a context-sensitive manner.

Not that one necessarily cares whether they are considered the MOST trustworthy or not, especially when many people do what they can to get and keep that “hot” person looking their way with interest and a smile. Which might be related to this.

ABSTRACT—Few studies have investigated how physical and social facial cues are integrated in the formation of face preferences. Here we show that expression differentially qualifies the strength of attractiveness preferences for faces with direct and averted gaze. For judgments of faces with direct gaze, attractiveness preferences were stronger for smiling faces than for faces with neutral expressions. By contrast, for judgments of faces with averted gaze, attractiveness preferences were stronger for faces with neutral expressions than for smiling faces. Because expressions can differ in meaning depending on whether they are directed toward or away from oneself, it is only by integrating gaze direction, facial expression, and physical attractiveness that one can unambiguously identify the most attractive individuals who are likely to reciprocate one’s own social interest.

-

Finally, in keeping with the spirit of a weekend post, here is the ever popular look at some interesting search terms that popped up in the logs.

what+is+the+use+of+physical+beauty%3F

As referenced in this current post itself, this paper is one exploration of that topic.

photos+hotornot.com+without+permission+angry

In this CCD age, I find that for almost everything people do, someone is right there taking a picture. And, those digital pcitures almost always seem to somehow find their way onto the public interwebs. And, once out there, people tend to do all sorts of things with the pictures that may not have been intended or desired by the people captured in those pictures.

Perhaps we are entering an age of utter transparency with no privacy. Then again, maybe a major backlash will happen here (a cypherpunk opportunity? ;) ).

+Bartenders,+fustration+with+music+they+like+compared+to+what+their+customers+enjoy

One of my positive comments about some of the bartenders in Pacha was that they seemed to like the music. I don’t think liking the music is really what matters though, it is the positive attitude implied by liking the music that has an effect. Which is to say, whether or not you like the music, create a positive atmosphere for the patrons and give them a good customer service experience. If you can’t do that because the music makes you negative, then it may be time to move on.

what+is+a+humint

A humint? Is that like a hummus, only with a taste? This post might be of interest.

diner+%2B+mid-town+manhattan%2C+ny

Cheyenne, as noted in this post.

start+a+home+based+catering+business

The closest I come to cooking is screen printing tees – i.e., curing plastisol ink – and you definitely don’t want to eat the results of that.

And, in our grand tradition, we wrap up here…

middle+age+panty

panty%2Bthrowing%2Bascii%2Bart

Now that’s quality.

Quickies: smell, bot, book, wikipedia, moon

Tuesday, December 11th, 2007

I found this article interesting.

“The study suggests that people conscious of the barely noticeable scents were able to discount that sensory information and just evaluate the faces,” Li said. “It only was when smell sneaked in without being noticed that judgments about likeability were biased.”

In other words, awareness of the situation allows a person to adjust their response to suit the situation. There are two key elements at work here – being aware, and effectively using that awareness.

Anyway, this reminded me of Cialdini’s Influence. The attacks of influence are often carried out beneath the radar of the person being attacked. The attacker triggers automatic responses in the person to influence their decisions/behavior, and the actions that hit these triggers go unnoticed at a conscious level by the person being attack at the time of attack, which results in the person being attacked not properly recognizing the level of influence coming from the attacker. Once a person is aware of triggers and/or able recognize attempts to pull triggers, a person can work to mitigate the influence of triggers and/or the responses to triggers.

Side note, I always find this sort of thing interesting with regards to emotions and relationships. We all have emotional triggers, things that set off strong emotional responses. Learning to understand our triggers, and those of the people around us, can go a long way to having healthy, satisfying relationships. And, with such relationships, comes a great deal of our basic security.

-

Speaking of people, this article has been making the rounds.

The artificial intelligence of CyberLover’s automated chats is good enough that victims have a tough time distinguishing the “bot” from a real potential suitor, PC Tools said. The software can work quickly too, establishing up to 10 relationships in 30 minutes, PC Tools said. It compiles a report on every person it meets complete with name, contact information, and photos.

Ok, so, social engineering is nothing new, and love letters have flooded inboxes. But, it got me thinking for a second…

So, I often speak of using real people for people based attacks leveraging things like beauty and charm. However, since real people tend to be a scarce resource, we are quite limited in the number of attacks that can be carried out and, the less attacks we can carry out, the more important each particular attack becomes. For in person attacks, this people cost can reach extremes. On the other hand, if we go virtual, we can come up with all sorts of ways to farm out the people work to reduce its cost.

Coming back to the article at hand, as a potential way to combine this sort of bot and real people, perhaps a bot that bridged conversations serving as a middle man would be interesting. For example, the bot could hang out in multiple chat rooms or web forums, and cross connect conversations. Or, reply to Craigslist ads and link responders.

Of course, with none of the human participants likely to have the agenda of the attacker here, the conversations would probably have less of a chance of being useful to the attacker than result of automated scripts, even if you could effectively pull off the bridging. Oh well.

-

I remember mentioning cell phone tanka a while back. This takes it to a new level.

“I typed it all on my mobile phone,” Rin explains matter-of-factly over the same device. “I started writing novels on my mobile when I was in junior high school and I got really quick with my thumbs, so after a while it didn’t take so long. I never planned to be a novelist, if that’s what you’d call me, so I’m still quite shocked at how successful it’s turned out.”

[...]

Remarkably, half of Japan’s top-10 selling works of fiction in the first six months of the year were composed the same way – on the tiny handset of a mobile phone. They sold an average of 400,000 copies. By August, the president of Goma Books, Masayoshi Yoshino, was declaring in a manifesto that he was determined “to establish this not simply as a fad, but as a new kind of culture”.

My “waiting to be read” book queue is at ~20. As far as I know, none of these books were written on a mobile phone. I really have to get with the times.

-

When you build a technology based on community input and open communication in a medium that lets gossip circle the world at roughly the speed of light, you can’t expect to hide behind a curtain. And, beautifully, the end result is an open study in people, power, and paranoia, with a good helping of “trust me, it’s for your own good” arguments and “shoot yourself in the foot” phenomena.

A couple of choice excerpts from the article,

Meanwhile, Durova continued to insist that she had some sort of secret evidence that could only be viewed by the Arbitration Committee. “I am very confident my research will stand up to scrutiny,” she said. “I am equally confident that anything I say here will be parsed rather closely by some disruptive banned sockpuppeteers. If I open the door a little bit it’ll become a wedge issue as people ask for more information, and then some rather deep research techniques would be in jeopardy.”

And,

This sort of extreme paranoia has become the norm among the Wikipedia inner circle. There are a handful sites across the web that spend most of their bandwidth criticizing the Wikipedia elite – the leading example being Wikipedia Review (http://wikipediareview.com/) – and the ruling clique spends countless hours worrying that these critics are trying to infiltrate the encyclopedia itself.

Now, I partially pointed to this because I know my circles are always amused by this stuff. But, I also wanted to note this.

But he’s not admitting how deep this controversy goes. Wales and the Wikimedia Foudation came down hard on the editor who leaked Durova’s email. After it was posted to the public forum, the email was promptly “oversighted”
- i.e. permanently removed. Then this rogue editor posted it to his personal talk page, and a Wikimedia Foundation member not only oversighted the email again, but temporarily banned the editor.

It ain’t easy blowing whistles. Even in a supposedly open forum such as Wikipedia, the powers that be crack skulls. You know, silence the critics and keep them silent.

Here, that cracking of skulls is figurative. In other venues, it could be literal. Anonymity has its uses.

Oh, and in the conclusion of a related article, we have a good summary of what seems to be going on.

“Wikipedia, in its way, is of great benefit to the web community,” he says. “But I’ve also been greatly dismayed that Wikipedia has apparently attracted some intelligent but problematic personalities with ambition, secret personal agendas, and cold, ruthless behavior towards other editors and ideas that they perceive as threatening their power, position, or agendas. What’s disheartening is that Jimbo and the rest of the Wikimedia Foundation not only don’t do anything about it, but they appear to support these charlatans to some degree.”

-

I mentioned the contest previously. Well, here comes the first entrant.

The Google Lunar X-Prize folks held an event at a space investment conference in San Jose to announce their first fully-registered competitor.

Odyssey Moon, a startup based on the Isle of Man, and run by Carl Sagan mentee, Bob Richards and the CFO of  satellite-provider Inmarsat, Ramin Khadem, plans to land a rover on the moon within the next seven years.

Quickies: ossl fips prng seeding, privoxy, gcm, hash stuff, misc

Monday, December 3rd, 2007

Ouch.

A significant flaw in the PRNG implementation for the OpenSSL FIPS Object Module v1.1.1 (http://openssl.org/source/openssl-fips-1.1.1.tar.gz, FIPS 140-2 validation certificate #733, http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#733) has been reported by Geoff Lowe of Secure Computing Corporation. Due to a coding error in the FIPS self-test the auto-seeding never takes place. That means that the PRNG key and seed used correspond to the last self-test. The FIPS PRNG gets additional seed data only from date-time information, so the generated random data is far more predictable than it should be, especially for the first few calls.

I updated this post accordingly.

[...]This means the PRNG is not reseeded after the KAT, so the PRNG ends up seeded with constant self-test values.

A couple of patches [1,2] are available for the OpenSSL FIPS module. The patches boil down to running FIPS_rand_method()->cleanup() after the PRNG KAT and then reseeding the PRNG.

-

In “related to Tor” news, this is a good write-up on recent vulnerabilities in what is often the default Privoxy configuration, including that shipped with the Tor bundle up until recently.

The installed ‘config.txt’ file (‘config’ on Mac OS X) had the following option values set to 1:

  • enable-remote-toggle
  • enable-edit-actions

Additionally, on Windows the following option was set to 1:

  • enable-remote-http-toggle

Malicious sites (or malicious exit nodes) could include active content (e.g., JavaScript, Java, Flash) that caused the web browser to:

  • make requests through the proxy that causes Privoxy filtering to be bypassed or completely disabled>
  • establish a direct connection from the web browser to the local proxy and modify the user defined configuration values

It should be noted that these are not Tor specific attacks on Privoxy and you may want to disable these Privoxy configuration options even in non-Tor environments.

-

SP800-38D, specifying the GCM mode of operation, has been finalized.

Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC has been finalized. This Recommendation specifies and approves Galois/Counter Mode (GCM), an authenticated encryption mode of the Advanced Encryption Standard (AES) algorithm.

I remember superficially comparing GCM and CCM back a few years ago. Both seemed to have a push at NIST, but you knew CCM would go through the vetting process relatively quickly being a combined mode of what was already accepted while GCM would take a bit of time. Well, CCM has been approved for quite a while, and now GCM is finally there too.

-

These [1,2] have been making the rounds. More fun with MD5.

We announce two different Win32 executable files with different functionality but identical MD5 hash values. This shows that trust in MD5 as a tool for verifying software integrity, and as a hash function used in code signing, has become questionable.

We have used a Sony Playstation 3 to correctly predict the outcome of the 2008 US presidential elections. In order not to influence the voters we keep our prediction secret, but commit to it by publishing its cryptographic hash on this website. The document with the correct prediction and matching hash will be revealed after the elections.

-

Speaking of hashing, there is a mailing list for the NIST hash competition.

A hash-forum@nist.gov email mailing list has been established for dialogue regarding NIST’s Cryptographic Hash Workshops and Hash Algorithm Competition. It is an unmoderated mailing list; messages addressed to this list are immediately distributed to all the addresses on the list. Only members are allowed to post messages to the list; however, anyone who wishes to do so may add themselves to the list.

-

A location service by Google relying on cell towers to estimate your location when GPS is not available.

Why the uncertainty? The My Location feature takes information broadcast from mobile towers near you to approximate your current location on the map – it’s not GPS, but it comes pretty close (approximately 1000m close, on average). We’re still in beta, but we’re excited to launch this feature and are constantly working to improve our coverage and accuracy.

-

Finally, I found this somewhat interesting to me.

“The empirical fact is that people will often switch to strategies they never picked before. They couldn’t have learned these strategies by reinforcement” from experienced rewards, says Camerer. In these situations, people use imagined rewards, or rewards that could have been theirs, to guide their decision making. This process, called fictive learning, is similar to the emotion of regret. “Regret is essentially the bodily sensation or name we give to fictive learning when there was a better choice than the one we chose.”

data sets, walks, kdfs, banksy, odds

Wednesday, November 28th, 2007

I heard Lotus Cafe is gone. And, Rififi may not be happy either. Ah, old timers.

-

Say you have data set you wish to release for research purposes but you don’t want the individual people identified (e.g., a medical data base) and thus tied to particular sensitive attributes (e.g., medical conditions). So, you have this data set consisting of what you consider to be sensitive attributes (e.g., medical conditions) and non-sensitive attributes (e.g., social security number, date of birth, zip code). In order to anonymize the data, you strip out the attributes that serve as blatantly unique identifiers (e.g., names, social security numbers).

Now, there is an immediate issue here. The obvious identifiers have been removed, but lets say this data set also contains attributes (e.g., date of birth, zip code) that when linked to external information lead to the identification of particular individuals (e.g., there is only one person with a given birthday in a given zip code, and this information is readily available someone trying to identify that individual in the data set).

This is where k-anonymity comes in. Now, you have already identified the sensitive and non-sensitive attributes, and you have removed the outright identifiers. From the remaining set of non-sensitive attributes, you can then identify those attributes, which are called quasi-identifiers, that could be linked to individuals through correlation against external data sources.

Here we come to one of the key assumptions made in the k-anonymizing process – the sanitizer can identify the attributes in the data set that can be tied to other, external sources. Not only do they have to identify these attributes, but they also have to assess the level of resources required to use those attributes to penetrate the anonymity of the data set, and make judgment calls on modifying the data for anonymity and/or privacy versus the usefulness of the resulting data set. This is hard stuff.

You can see many issues with this assumption. Does the sanitizer really know what will be quasi-identifiers in a data set? Even if they do, are their judgments about the risk posed by those identifiers realistic? For example, the sanitizer might not know about various public records or even google. Another example, one may assume that only large governments would have access to name, date of birth, and zip code information for individuals. However, most of us have access to this information for at least out friends and family.

Anyway, once you have picked out the quasi-identifiers, you then ensure that at least k records in the data set possess the same set of values for quasi-identifiers (e.g., generalize the date of birth to be year of birth, such that at least 10 records turn up for all years of birth and zip code combinations). In other words, instead of being able to uniquely identify a unique record using particular values for the quasi-identifiers, one always ends up identifying a set of k records with any particular values for the quasi-identifiers (e.g., you pull up 10 records at least for every year of birth and zip code combination).

Important note for the paper that follows later in this post: You may be wondering, what happens when dealing with all these sparse data sets with long-tail distributions? For example, a particular attribute may have a large number of values that are unique or at least very minimally spread across records, which could mean huge impacts on the data set if these values were generalized or removed for k-anonymity purposes. Which means there may be a big trade-off between anonymity and/or privacy, and the usefulness of the data here, which will minimize k if not render k-anonymity infeasible in order to keep the data at all useful. And, it is notable that most transactions databases fall into this category (e.g., credit card records, amazon purchases).

But, say k-anonymity is reasonable for the data without too much loss of usefulness of the data. Great, that covers establishing the exact identity of records, but there is an issue here – we may still be able to tie sensitive attributes to individuals. For example, if the sensitive attributes you are trying to unlink from an individual are applicable to all of the k records pulled up by the quasi-identifiers (e.g., all 10 records have the same medical condition), then one can assume that the individual possesses this attribute even if they can’t uniquely identify which of the k records is that individual. Or, if one knows particular sensitive values do or do not apply to the individual, they can rule out those records, perhaps pinpointing the applicable value of the sensitive attribute for the individual concerned (e.g., the medical condition in the group is either a broken arm or severe depression, and one knows the individual does not have a broken arm).

Which leads to the concept of l-diversity, wherein a set of k records should have l number of values for sensitive attributes contained within it. Now, when one pulls up that set of k records, all of those records do not have the same sensitive values and, even if I know certain sensitive values to do/do not apply to the individual in question, there is potentially still a range of records with other values for sensitive attributes that are applicable, making it hard for me to establish exactly which values for the sensitive attributes apply to a particular individual.

l-diversity can result in the data set undergoing significant modifications. Like with k-anonymity, judgment calls must be made on privacy versus the usefulness of the data set.

But, say l-diversity is applicable to the data set without too much loss of usefulness of the data. Nice, but we may still have some semantic ties or non-uniformity that can be exploited. For example, if all the k records have some related values for the sensitive values (e.g., all the medical conditions were mental problems) while the overall data set covered a larger variety of values, then information is learned about the members of k. Or, if the sensitive attributes in k records have one of set of odds of having particular values (e.g., 75% of members have cancer), while in the overall data set the sensitive attributes have some set of odds (e.g., 10% of members have cancer), this can be used to reveal information about the set of k records distinguishable for the overall data set.

Which leads to t-closeness, wherein the distribution of values of sensitive attributes in a set of k records will mimic the distribution of those values across the whole data set within a range t.

t-closeness can result in the data set undergoing even major changes. Like with k-anonymity and l-diversity, judgment calls must be made on privacy versus the usefulness of the data set.

And so forth.

I typed out that summary because I just noted this paper interesting. [via what is left of the cypherpunks list]

We present a new class of statistical de-anonymization attacks against high-dimensional micro-data, such as individual preferences, recommendations, transaction records and so on. Our techniques are robust to perturbation in the data and tolerate some mistakes in the adversary’s background knowledge.
We apply our de-anonymization methodology to the Netflix Prize dataset, which contains anonymous movie ratings of 500,000 subscribers of Netflix, the world’s largest online movie rental service. We demonstrate that an adversary who knows only a little bit about an individual subscriber can easily identify this subscriber’s record in the dataset. Using the Internet Movie Database as the source of background knowledge, we successfully identified the Netflix records of known users, uncovering their apparent political preferences and other potentially sensitive information.

A few paragraphs of note…

Micro-data are characterized by high dimensionality and sparsity. Informally, micro-data records contain many attributes, each of which can be viewed as a dimension (an attribute can be thought of as a column in a database schema). Sparsity means that a pair of random records are located far apart in the multi-dimensional space defined by the attributes. This sparsity is empirically well-established [6, 4, 16] and related to the “fat tail” phenomenon: individual transaction and preference records tend to include statistically rare attributes.

This applies to most of those real-world databases out there containing information about us, which is something to note when policies say that information that could identify you has been removed from a data set before that data set is distributed.

Our de-anonymization algorithms are designed to work against databases that have been anonymized and “sanitized” by their publishers. The three main sanitization methods are perturbation, generalization, and suppression [23, 8]. Furthermore, the data publisher may only release a (possibly non-uniform) sample of the database. For example, he may attempt to k-anonymize the records, and then release only one record out of each cluster of k or more records.
If the database is released for collaborative filtering or similar data mining purposes (as in the case of the Netflix Prize dataset), the “error” introduced by sanitization cannot be large, otherwise its utility will be lost. We make this precise in our analysis. Our definition of privacy breach (see below) allows the adversary to identify not just his target’s record, but any record as long as it is sufficiently similar (via Sim) to the target and can thus be used to determine its attributes with high probability.

The tradeoff between privacy and/or anonymity, and usefulness comes into play, and the authors make sure to take advantage of it. The real-world is a fun place.

Moreover, the linkage between an individual and her movie viewing history has implications for her future privacy. In network security, “forward secrecy” is important: even if the attacker manages to compromise a session key, this should not help him much in compromising the keys of future sessions. Similarly, one may state the “forward privacy” property: if someone’s privacy is breached (e.g., her anonymous online records have been linked to her real identity), future privacy breaches should not become easier. Now consider a Netflix subscriber Alice whose entire movie viewing history has been revealed. Even if in the future Alice creates a brand-new virtual identity (call her Ecila), Ecila will never be able to disclose any non-trivial information about the movies that she had rated within Netflix because any such information can be traced back to her real identity via the Netflix Prize dataset. In general, once any piece of data has been linked to a person’s real identity, any association between this data and a virtual identity breaks anonymity of the latter.

Anonymity tends to be a one way street. This can be particularly dangerous when it comes to persistent pseudonyms.

We have presented a de-anonymization methodology for multi-dimensional micro-data, and demonstrated its practical applicability by showing how to de-anonymize movie viewing records released in the Netflix Prize dataset. Our de-anonymization algorithm works under very general assumptions about the distribution from which the data are drawn, and is robust to perturbation and sanitization. Therefore, we expect that it can be successfully used against any large dataset containing anonymous multi-dimensional records such as individual transactions, preferences, and so on.
An interesting topic for future research is extracting social relationships, networks and clusters from the anonymous records. This knowledge can be a source of information for further de-anonymization [13]. In the case of the Netflix Prize dataset, de-anonymization of individual records may also have interesting implications for winning the Netflix Prize. We discuss this briefly in appendix B.

Data is recorded, filtered, and mined. You, your actions are not random. There will be non-uniformity, patterns. Identities and attributes will always appear.

I tend to think pseudonymity is the best you get in practice, and even that is quite difficult.

-

So, a while back I wrote this.

Side note, this is even more interesting in combination with things like the reality it generally takes couples trying to have a baby on the average of a few months to achieve pregnancy. Such drawn out periods seems to protect against a number of attacks, such as misrepresentation and quick judgement – for example, it exposes potential mates that seem good at first glance but aren’t quite so good once a closer look is provided.

Fitting right in here, I noted this.

However, Provost and her colleagues say there is in fact no contradiction between this research and other studies, as they are investigating two different kinds of signal. The previous research investigating men’s response to fertile women focused on signals such as smells and facial expressions, which can only be detected at close range. That makes evolutionary sense, as it would benefit a woman to advertise her fertility to a man that she has decided is worth having children with and has therefore allowed to get close to her.

In contrast, men can pick up on the attractiveness of a woman’s walk from long distance, and it can therefore act as an unwitting signal to less appealing males who she might not want to choose. So the advantage of having a less sexy walk around the time of ovulation becomes clear: it allows a woman to hide her fertile period from undesirable men who might take advantage of her at that time.

-

I noticed this request.

As many of you know, NIST has specified two standard KDFs for use with key agreement algorithms (e.g., Diffie-Hellman or MQV) in NIST SP 800-56A. NIST is considering supplementing the 800-56A KDFs with a more broadly applicable KDF. In particular, NIST is considering a proposal for an HMAC-based KDF. Before committing resources to this effort, we would like to get a better handle on the requirements seen by protocol developers and evaluate the level of support for such a standard. We would also like to identify alternative designs that should be considered.

PBKDF2 (something you may already use possibly without knowing it) and S2V were pointed to in replies.

-

Look at that, Banksy in New York.

VANINA HOLASEK GALLERY·502 West 27TH Street New York, NY 10001 T: 212-367-9093

FOR IMMEDIATE RELEASE:
BANKSY DOES NEW YORK
DECEMBER 2ND – DECEMBER 29TH, 2007
OPENING RECEPTION: SUNDAY, DECEMBER 2ND, 1 PM -5 PM

BANKROBBER GALLERY, London, in collaboration with VANINA HOLASEK GALLERY, are pleased to present for the first time in New York, an exhibition of works by Banksy, on view from December 2nd through December 29th, 2007.

There may even be a comment on security in here.

He’s the maniac who got on the news for managing to smuggle one of his pieces of art into Tate Britain and embarrassed everyone because nobody seemed to notice…He’s the wit behind the stencilled “Mind the Crap” writing that appeared overnight on the steps to Tate Modern. He is the prankster who smuggled 500 alternative copies of the Paris Hilton CD into record stores. He is the subversive who placed a life-size replica of a Guantanamo Bay detainee in Disneyland. He’s the jester who gave LA a painted elephant. He is the trickster whose hoax cave painting of a man pushing a supermarket trolley sat in the British Museum unnoticed for three days. He is the infiltrator who disguised as a pensioner hung his perfectly framed pieces in the Metropolitan, MOMA, Brooklyn Museum and his “dead beetle with glued on sidewinder missiles and satellite dish” had pride of place in the Museum of Natural History NYC. Get the picture, get this. Banksy images are even being used to sell 900k condos in Williamsburg.

Anyway, there is a party Saturday (2007-12-01) night from 6-9pm at the gallery celebrating the opening. [via thisheartsonfire]

-

Finally, here are some generic odds.

The National Safety Council has been compiling and reporting on injury data every year since the 1920s. The table below was prepared in response to frequent inquiries to the Council concerning the odds of dying from or being killed by a specific incident or occurrence such as a lightning strike or a plane crash.

The odds given below are statistical averages over the whole U.S. population and do not necessarily reflect the chances of death for a particular person from a particular external cause. Any individual’s odds of dying from various external causes are affected by the activities in which they participate, where they live and drive, what kind of work they do, and other factors.

Diner, petnames, misc

Tuesday, October 30th, 2007

Ok, as it has been a while since I last posted and will probably be some time until I next post, lets do two posts in one day. This one is just some miscellaneous items.

-

(Thats “diner” in the title, not “dining cryptographers and their problems”…)

I rarely talk about customer service with regards to places to eat. The main reason for that is I generally eat in my local neighborhood, and I learned a while back that talking about places you can be found reliably on a blog is not always the smartest thing to do.

That said, there is one diner in Manhattan that I make a point of swinging by quite often, namely Cheyenne Diner. Great customer service, including my absolute favorite waitress in Manhattan (I don’t think I have actually had to order for myself in over a year – my food just appears). Quality food and lots of it on the cheap. Open 24 hours, so perfect for a late night person (like me). Just an all around great experience.

Anyway, while I think I may be the only NY resident that absolutely loves this place, at least someone else has noticed it. (Unfortunately, the articles at the referenced site do not have separate links. Perhaps this will end up being the archive page for this month.)

On the block: Top 10 New York Classic Diners, a list of the best New York diners that haven’t changed much at all (including prices, interiors, and staff) in the last 20+ years. What you pay for one drink at some new fancy bar will get you a full meal (with bread, salad, and a side, of course!) at most of these places.

[...]
9. Cheyenne (Midtown West)

It is on the corner of 33rd st and 9th ave, a few blocks from Penn station (for those of us coming from, say Bayside :) ). Being smack dab in the middle of mid-town, you find locals, commuters, and tourists alike pop in.

Needless to say, highly recommended. I always end up there some time well into the nightshift, and I can’t say enough good things about the late night staff.

-

This is a petnames plugin for Firefox. [recently resurfaced in this mailing list post]

It reminded me of an old post. I pointed out using your bookmarks and commented on an SSH style of bookmark where public keys (in certificates) were part of it. I also noted that such a thing might not mean anything to average end users over a regular bookmark, which was the tricky part.

Attacks based on user ignorance of anything to do with PKI or TLS will apply regardless of “high assurance” certificates or not. What really matters here is whether or not browser security indicators matter to users (e.g., do users know about the security indicators provided by a browser, what the indicators mean, and what should be done in response to the indicators?).

    […]verifying that you are in fact establishing an SSL/TLS session with the proper entity.[…]
    […]countering an SSL/TLS MITM attack.[…]
    This is an active research area. Petnames have been proposed, which I like (think PGP web of trust in some form). This has similarities to the SSH-type trust model, which has also been proposed and which I also like. In recent minutes to an IETF-PKIX meeting, the Opera people were looking at “extended validation” certificates. There has been all sorts of talk, pros and cons, about “high-assurance” certificates.

In this regard, while I like the idea of bookmarking a web site and its certificate(s), how exactly to inform a user that a certificate is changed, and establishing what actions a user should take in such a case, is the hard part. Every model I envision reduces to checking the digital certificates when the certificate presented is different from the one that is bookmarked, and then all the same problems come back into play – you might as well have just bookmarked the web site and left out the certificate.

So, I like the petnames plugin for Firefox, and I think most people familiar with the SSH way of doing things would be comfortable here. The plugin adds another layer to the advice provided here, and works well for me at least.

Bookmark web sites that you visit, especially where you conduct transactions like buying stuff, and then return to those sites only through your bookmarks (this is like what we do with server public keys in SSH). Now, when you receive that email, instant message, or embedded link in some rogue web site purporting to be from, or purporting to point you to, Paypal and you really do feel it necessary to log into Paypal in response, don’t follow any of the links provided – instead, use your bookmark for the Paypal web site. It doesn’t solve all these problems, but it helps quite a bit.

-

But, it looked real… [via the gold-silver-crypto mailing list]

Evidently, no one at Minnesota-based Supervalu bothered to confirm the authenticity of emails sent in late February. Purporting to come from two of the company’s suppliers, the messages instructed Supervalu to wire all future payments to new bank accounts. One email purported to come from representatives of Frito-Lay and the other from American Greetings. Both suppliers have established relationships with the grocery chain.

The emails were phony, but within two days, Supervalu began moving money into the accounts. Over the course of a week, the company transferred $10,128941.94 in nine separate payments. [...]

These kids have become my standard quote for this.

Teen #1: Hey, man, I think we should get our important stuff laminated. No one ever questions lamination.

-

Short article (behind a paywall) about talking tech to the non-techie.

Technology is very complex and intimidating, and technology folks are constantly getting knocked for poor communication and poor customer-service skills. It’s taking a lot of time, leads to a lot of frustration, and leads to a lot of money being misspent.

This brought to mind one of the core reasons I originally founded D-kriptik and the original point of this blog – bridging tech and non-techies. Customer service is still at our core, but we have wandered a bit off the general IT support course.

-

Perhaps its the Trek in me, but this reminded me of transparent aluminum.

By mimicking a brick-and-mortar molecular structure found in seashells, University of Michigan researchers created a composite plastic that’s as strong as steel but lighter and transparent.

Hot-wiring, incorrect, cough, search

Monday, August 13th, 2007

As promised, here is a weekend post. (Yes, I know it is a Monday, but I was striping/coating a wood floor all weekend, well, with the exception of Boris classics night at Pacha.)

-

Lets begin here (NYT article – not sure how long they are accessible).

Yet he and most in the field now agree that the evidence for psychological hot-wiring has become overwhelming. In one 2004 experiment, psychologists led by Aaron Kay, then at Stanford University and now at the University of Waterloo, had students take part in a one-on-one investment game with another, unseen player.

Half the students played while sitting at a large table, at the other end of which was a briefcase and a black leather portfolio. These students were far stingier with their money than the others, who played in an identical room, but with a backpack on the table instead.

The mere presence of the briefcase, noticed but not consciously registered, generated business-related associations and expectations, the authors argue, leading the brain to run the most appropriate goal program: compete. The students had no sense of whether they had acted selfishly or generously.

From earlier in the article,

Findings like this one, as improbable as they seem, have poured forth in psychological research over the last few years. New studies have found that people tidy up more thoroughly when theres a faint tang of cleaning liquid in the air; they become more competitive if theres a briefcase in sight, or more cooperative if they glimpse words like dependable and support all without being aware of the change, or what prompted it.

So, what would happen if you wore an expensive suit or LEO-type uniform? Or, to fit a theme here, had a beautiful person on your arm? Or, even simpler, threw on an artsy t-shirt that had a word like “trustworthy” written on it in some discernible, yet subtle, way? Would the people aspect of security be manipulated by such things?

(Side note, I have an old, bright red Futura t-shirt that says “For love or money”. With many, it generates mostly “for love!” comments and generally leads to conversation about values and the like. With others, it often inspires awkward mockery, as is the case with almost any loud attire.)

-

So, I saw this article. (FYI, the referenced article is not politically correct. If you are sensitive to such things, you may want to skip it.)

The implications of some of the ideas in this article may seem immoral, contrary to our ideals, or offensive. We state them because they are true, supported by documented scientific evidence. Like it or not, human nature is simply not politically correct.

I have spoken about beauty and security here a few times before at least, and I don’t have anything new to say here. But, I found much of this article could be used for study in how to use beauty in security.

Let’s start here, with what will be our primary tool based on this article, youthful, female beauty…

Men prefer young women in part because they tend to be healthier than older women. One accurate indicator of health is physical attractiveness; another is hair. Healthy women have lustrous, shiny hair, whereas the hair of sickly people loses its luster. Because hair grows slowly, shoulder-length hair reveals several years of a woman’s health status.

Youthfulness and beauty can be simulated to some extent these days, so actually being young and beautiful is not a hard requirement. However, young people can be naturally beautiful and they are much more interested in pushing security bounds than are most older individuals. They often do it for free, too, which is always nice when you are playing with concepts but not formalizing them or trying to make money.

Ok, now the authors discuss a great many factors that can be exploited. Violence is one area they explore, which I won’t detail here. Some other elements follow.

We have a large group of risk-seeking individuals here to look at…

For nearly a quarter of a century, criminologists have known about the “age-crime curve.” In every society at all historical times, the tendency to commit crimes and other risk-taking behavior rapidly increases in early adolescence, peaks in late adolescence and early adulthood, rapidly decreases throughout the 20s and 30s, and levels off in middle age.

Ok, so we have hit the 20s and maybe even 30s. There are lots of these types of people out in the private workforce, myself included. A whole bunch in government (or contractors) too, many with lovely security clearances. Focusing on IT for a second, this sounds like most of the IT guys that are working hands-on trenches of an organization – you know, the guys stuck performing backups, fixing laptops, and maintaining servers.

Moving along from those in their 20s and 30s, we also have to think about people in their mid-life…

Many believe that men go through a midlife crisis when they are in middle age. Not quite. Many middle-aged men do go through midlife crises, but it’s not because they are middle-aged. It’s because their wives are. From the evolutionary psychological perspective, a man’s midlife crisis is precipitated by his wife’s imminent menopause and end of her reproductive career, and thus his renewed need to attract younger women.

Not to mention what may be the best target of all, those with power…

The question many asked in 1998—”Why on earth would the most powerful man in the world jeopardize his job for an affair with a young woman?”—is, from a Darwinian perspective, a silly one. Betzig’s answer would be: “Why not?” Men strive to attain political power, consciously or unconsciously, in order to have reproductive access to a larger number of women. Reproductive access to women is the goal, political office but one means. To ask why the President of the United States would have a sexual encounter with a young woman is like asking why someone who worked very hard to earn a large sum of money would then spend it.

Beauty is my weak link of choice at the moment. As I said before,

And, even looking at the brain as much more than just an arms race, it can easily be acknowledged that reproduction is a drive wired into our brains. Which means, take physical beauty and combine it with a brain particularly adept at impressing others (e.g., charm), and you have an attacker that can strike at the core of the human factor. Somewhat amusingly though, that human factor is also our best defense at preventing such attacks.

And, right in line, another security person hacked by beauty.

Computer help questions come in many flavors, and while many requests get dodged, there are times when influential or attractive (wink wink) people ask favors that you don’t want to dodge and would rather have a quick and impressive answer.

“Wink wink?” Nah, click, whirr.

-

Besides being hilarious, this sounds a bit familiar. (For those sensitive to such things, the author of this story does use some small amount of profanity.)

No matter how many years pass, I remain easily seduced by my curiosity. The harder I try to shake the wondering thoughts from my head, the more they burrow into my brain and demand recognition. By the time I got home from the grocery store, I simply had to know what would happen if I tried to buy an entire shelf full of Nyquil.

For me, failure tends to make me more determined, so I decided that was exactly what I was going to do. But, this time, I wanted to start my adventure with a bit more planning. I decided to call the grocery store and ask if it was even possible to return Nyquil since it was technically a medicine. The manager I spoke to assured me that as long as I had the receipt and the seal wasn’t broken, they would take it back.

Hacker.

-

I conclude this post with a read favorite, yet more interesting searches found in this blog’s logs.

Let’s start with this one, from xxx.tsa.dhs.gov…

take+off+your+shoes+tsa+song

I have never heard of this song, but a quick google search pointed me here.

Been getting some of these in the logs, which is a problem I have had as well…

j7f4+only+half+ram

At this point, my thought is that it is picky about its RAM. Unfortunately, I don’t have another 1GB stick lying around to test out right now.

Look at this…

canal+street+%22fake+id%22+place

Fake IDs were always easy to come by in NY when I was growing up, and I doubt that has changed much. This post talks about getting ID’ed a bit, through the eyes of young people.

I get lots of these…

criteria+for+a+good+bartender

And some of these…

places+to+drink+manhattan

My criteria for good bartenders also lists some places to drink in Manhattan. Older mentions – there is a whole post devoted to Heathers (regrettably, I have not been there in quite some time), and the Hudson Bar is mentioned in this post (I have not been there in very long time as well).

Not sure what to make of this…

did+the+bald+guy+in+front+pass+his+ccnp

It did make me laugh though.

Finally, in our grand tradition of “panty hits,” we have this…

example+visual+panty+line

Quality. (For the one reader I know of that has a “VPL” pet peeve. Of course, there could be more of you.)

FIPS 140-3 draft, FIPS 140-2 PRNG seeding, other drafts

Wednesday, July 18th, 2007

So, I will be moving to Bayside, Queens in a couple of weeks. Apparently, I spent part of my younger days around Bayside and Flushing, but I don’t recall either, so it is all new to me. But, the area is nice, Bell Blvd, the LIRR, and Crocheron Park are a couple of blocks away from my place in varying directions, I met what seemed to be all of my new landlord’s immediate family when accepting the place and they were a friendly, outgoing bunch, and the people in the neighborhood were very friendly. Overall, I am excited about moving into this little box in Queens.

That said, now I will not only be busy with work, but also with getting the apartment ready and then moving. So, posting here will probably suffer even more than it has.

Anyway, I saw Potter’s post today, and it sparked me to finish writing this one. Alas, it seems I have been writing a lot about this boring stuff recently, and quite a bit more follows in this messy post. Yet again, you may want to skip this. (I will try to make my next post a weekend post to lighten stuff up.)

-

I noted (“As to the future, a public draft of FIPS 140-3 should be coming down the pipe fairly shortly.”) earlier this month that the FIPS 140-3 draft was coming, and here it is for public comment. More information can be found here.

Announcing First Public Draft of Federal Information Processing Standard (FIPS) 140-3, a revision of FIPS 140-2, Security Requirements for Cryptographic Modules

Keep in mind, this is the proposed law. The actual translation of this into clear, testable requirements will come later.

The draft includes this quick summary of changes from FIPS 140-2.

FIPS 140-3 adds an additional security level and incorporates extended and new security features that reflect recent advances in technology. In FIPS 140-3, each of the eleven requirement areas in redefined. Software requirements are given greater prominence in a new area dedicated to software security, and an area specifying requirements to protect against non-invasive attacks is provided.

The new level (level 5) is interesting, but, probably more important to vendors (most of whom will never see any motivation to go for level 5) is the mention of software requirements gaining prominence. Software has always been an ambiguous area to FIPS 140, be it 140-1 or 140-2. Sure, getting software through a FIPS 140-2 validation is a routine process, but it involves well established hand-waving, so I think it would be good for NIST/CSE to work to formalize this area. (Unfortunately, I could not tell for sure how well FIPS 140-3 is going to do that – looks like we will have to wait for the derived test requirements.)

Anyway, I quickly glanced over the draft of FIPS 140-3, and I noted the following changes from FIPS 140-2.

Note: If you don’t know FIPS 140-2, the following will likely be worthless to you.

As seems to happen each standard revision, the sections have changed a bit. The Finite State Machine (FSM) model no longer has its own section and has been merged into Life-Cycle Assurance. A new section called Software Security has been created, which feels like a split off from the old Operational Environment requirements under FIPS 140-2. The Operational Environment requirements have been moved before the Physical Security requirements, and Physical Security requirements have been split into two sections, Physical Security and Physical Security – Non-Invasive Attacks. Cryptographic Key Management has been changed to Sensitive Security Parameter Management, and the EMI/EMC section has been removed. The Design Assurance section has been renamed Life-Cycle Assurance.

As far as the particulars of the sections went, the following jumped out at me as changes from FIPS 140-2.

  1. Section 1 – Cryptographic Module Specification
    In this section, you say what your module is by specifying its components and drawing a boundary around them.

    I noted the following changes from FIPS 140-2.

    1. Level 5 has been added.

    2. You are now asked to define the cryptographic module type, which is three flavors right now: hardware, software, and hybrid. (Yes, no firmware.)

    3. The concept of “degraded functionality” has been formalized, in which security functions that fail self-tests are disabled while ones that pass self-tests can be permitted to operate.

    4. Level 5 has the same requirements as levels 3 and 4.

    Also, the documentation requirements look to have been moved to an Appendix rather than listed here.

  2. Section 2 – Cryptographic Module Physical Ports and Logical Interfaces
    In this section, you discuss what flows in, around, and out of the module.

    I noted the following changes from FIPS 140-2.

    1. Level 5 has been added.

    2. Notice the change in the “data output interface” description. It now says “for a given communication channel” all data output must be disabled when an error state exists. (Of course, the self-test section does not make such a distinction.)

    3. Level 5 has the same requirements as levels 3 and 4.

    Also, the section name has been changed slightly from FIPS 140-2.

  3. Section 3 – Roles, Services and Authentication
    In this section, you discuss the operators and services of the module.

    I noted the following changes from FIPS 140-2.

    1. The maintenance role has finally been retired! Bravo!

    2. Level 5 has been added.

    3. Explicitly requires that default authentication information by changed upon first-time authentication. (This is not a change in practice over what was required under 140-2.)

    4. Explicitly states that default authentication information (e.g., a default password shipped with a module that must be changed during initialization) does not need to meet zeroization requirements. (This is not a change in practice over what was required under 140-2.)

    5. The default authentication information must be unique per module unit delivered if used to control access to the module for first-time authentication. Note the “If the module employs default authentication data to control access to the module for first-time authentication” – in effect, this requirement will likely become “not applicable” for most modules under level 3.)

    6. Strength of authentication requirements have been upped.
    6a. Less or equal to a 1 in 100,000,000 chance of false acceptance per authentication attempt. (up from 1 in 1,000,000)
    6b. Less than or equal to a 1 in 10,000,000 chance of false acceptance of a single authentication attempt over multiple attempts at authentication over the course of a minute. (up from 1 in 100,000)
    6c. Strength of authentication requirements must be met by implementation, not procedural controls.
    6d. Password selection must check for weak passwords.

    7. Levels 4 and 5 require two-factor authentication.

    8. Show the module’s version number and zeroization have been added to the list of services a module must provide.

    9. Alternating and exclusive bypass have been merged.

    10. Software loading is now address in this section.
    10a. Logic for loading software shall be disconnect from data output.
    10b. An Approved authentication technique must be used to validate the software (i.e., the software load test). The newly loaded software cannot be executed until this check has passed.
    10c. It is now explicitly called out that for a module claiming a non-modifiable operational environment, this technique must be required by the module itself and not through the use of procedural controls.
    10d. The newly loaded software must undergo the standard cryptographic algorithm tests (e.g., KATs) before providing security services.

    11. Level 5 has the same requirements as levels 3 and 4.

  4. Section 4 – Software Security
    In this section, requirements for the software components of a module are detailed.

    I noted the following changes from FIPS 140-2.

    1. This section used to be the first part of Section 6 (Operational Environment) under FIPS 140-2.

    2. Level 5 has been added.

    3. At level 1, only Approved authentication techniques may be used to integrity check software. This may imply that non-approved integrity checks are no longer allowed if software is involved, even with a non-modifiable operational environment.

    4. At level 1, the software cannot provide a service to an operator to read itself.

    5. At level 1, the software must verify the format of externally provided data if said data has a specific format.

    6. At level 2, the integrity check must use a digital signature, and the private key used to generate the signature cannot be stored within the module.

    7. At level 3, there must be a command provided by the software to perform its integrity on demand without powering down the module, and provide to the operator the result of this test and a newly computed hash of the software. This hash value shall be zeroized from the module once this command has completed.

    8. At level 4, the critical security parameters and software stored on the module must be encrypted (I guess as much as possible, as you do need to be able to decrypt), including the software integrity test code and data. The key(s) or key components used to encrypt the software must not be stored on the module.

    9. At level 4, the vendor must provide the key used to encrypt the software to the customer. The customer can choose whether or not to change this key.

    10. At level 4, the key and integrity test data must be freshly general for each instance of the module provided by the vendor.

    11. At level 4, the encryption algorithm and mode used must be Approved.

    12. At level 5, the public security parameters must also be stored encrypted.

  5. Section 5 – Operational Environment
    In this section, requirements for the operating system of the module are discussed.

    I noted the following changes from FIPS 140-2.

    1. Level 5 has been added.

    2. The language is much clearer with regards to when these requirements apply, although the applicability has not changed at all. Examples are given.

    3. Firmware is not used in the section anymore (nor really anywhere else in the draft).

    4. Limited operational environment is gone!

    5. The requirements make much more sense to today’s operating systems. In other words, much less hand-waving required. (Not new via interpretation, but now explicitly stated)

    6. At level 1, explicitly requires all software commands in a session to run on behalf of a single operator.

    7. At level 1, explicitly requires that critical security parameters are zeroized before an operator’s session ends and a new operator’s session is begun.

    8. At level 1, explicitly requirements that processes spawned by the module are owned by the module.

    9. Multiple concurrent operators are now allowed at level 1, moving requirements from level 2 under FIPS 140-2 to level 1 here.
    9a. At level 1, the operating system must provide discretionary access controls that can be configured to setup roles and use these roles to control access to who can execute the software, modify the software and its data, and read the software’s data.
    9b. At level 1, the operating system must prevent operators and processes (other than OS processes) from modifying executing cryptographic processes.
    9c. At level 1, the operating system must prevent operators from gaining access to other operator’s sensitive security parameters.
    9d. At level 1, the operating system must prevent operators and external executing process from reading the software.

    10. Explicit requirements for CC certification of the operating system have been removed from the level 2 requirements. (This does not necessarily mean these requirements will not appear in the derived test requirements or just become a standard part of meeting level 2 operational environment requirements.)

    11. At level 2, the security policy must explicitly state whether identification and authentication are performed by the module’s code or the operating system. (This is not a change in practice over what was required under 140-2.)

    12. Explicit requirements for CC certification of the operating system have been removed from the level 3 requirements. (This does not necessarily mean these requirements will not appear in the derived test requirements or just become a standard part of meeting level 3 operational environment requirements.)

    13. At level 3, operators in the user role must be prevented by the operating system from modifying the module’s software, system sensitive security parameters, and audit data stored within the operational environment.

    14. Explicit requirements for CC certification of the operating system have been removed from the level 3 requirements. (This does not necessarily mean these requirements will not appear in the derived test requirements or just become a standard part of meeting level 4 operational environment requirements.)

    15. At level 4, a new, specific list of auditable events is provided.

    16. Level 5 has the same requirements as level 4.

  6. Section 6 – Physical Security
    In this section, the physical embodiment of the module is specified and the requirements for phsyical security are given.

    I noted the following changes from FIPS 140-2.

    1. Level 5 has been added.

    2. At level 5, tamper response components shall be protected from being disabled.

    3. At level 5, critical security parameters must be protected from disclosure even if the tamper detection is disabled.

    4. At level 5, environment failure protection is required.

  7. Section 7 – Physical Security – Non-Invasive Attacks.
    In this section, the requirements for physical security against attacks not requiring physical contact or direct observation of the module are described.

    I noted the following changes from FIPS 140-2.

    1. This section is brand new to FIPS 140-3, which means all of these requirements are new.

    2. At levels 1 and 2, there are no requirements.

    3. At level 3, the module must protect against timing analysis attacks.

    4. At level 4, the module must protect against simple power analysis and differential power analysis attacks.

    5. At level 5, the module must protect against attacks taking advantage of electromagnetic emanations. (TEMPEST shielding anyone?)

  8. Section 8 – Sensitive Security Parameter Management
    In this section, the requirements for handling sensitive security parameters, such as keys, are given.

    I noted the following changes from FIPS 140-2.

    1. This section is the FIPS 140-3 evolution of the Key Management section from FIPS 140-2. The name change makes sense, as the section deals with more than just keys.

    2. Level 5 has been added.

    3. Keys for cryptographic algorithm tests are explicitly defined as public security parameters.

    4. Keys for the software integrity test are explicitly defined either as a critical security parameter (for software modules or the software portion of a hybrid module) or a public security parameter (for hardware modules, or software in the hardware portion of a hybrid module).

    5. Entropy and entropy sources are dealt with explicitly.
    5a. A self-test is required for entropy sources.
    5b. Entropy input into the module must have a claimed minimum value that the module checks to see if it is sufficient for the security strength of the random bit generator (formerly known as the random number generator).
    5c. Seed and seed keys explicitly excluded from requiring an Approved random bit generator for generation. (This is not a change in practice over what was required under 140-2.)

    6. IVs required to be random must be randomly generated using an Approved random bit generator.

    7. Software modules are explicitly dealt with for critical security parameter entry/output, allowing critical security parameters to be input by/output to the host operating system in either plaintext or ciphertext form. (This is not a change in practice over what was required under 140-2.)

    8. The treatment of key establishment is cleaner.
    8a. Electronically entered critical security parameters must be both encrypted and their integrity verified (only encryption was required under FIPS 140-2.); however, note the following in parenthesis as part of this requirement – “(e.g., by an Approved security function or an Approved or Allowed key establishment method).”

    10. Password hash values are explicitly considered critical security parameters. (This is not a change in practice over what was required under 140-2.)

    11. At level 1 and 2, zeroization of critical security parameters can be accomplished procedurally if desired.

    12. At level 3, the module must handle zeroization of critical security parameters itself.

    13. At level 5, the module must also zeroize all public security parameters. Temporary public security parameters must be zeroized when no longer needed.

    14. The allowance of OTAR in radio devices has been removed.

  9. Section 9 – Self-Tests
    In this section, the self-test requirements are described.

    I noted the following changes from FIPS 140-2.

    1. Power-up self-tests have been renamed pre-operational self-tests, which is more appropriate.

    2. Level 5 has been added.

    3. A critical time period must now be specified, which states the maximum operational time before the pre-operational tests must be repeated.

    4. The result of each pre-operational test must be output via the status output interface.

    5. If the module does not output an errir status on failue of a self-test, there must be a documented process (in the Security Policy) by which an operator can determine the module entered an error state.

    6. The module shall allow operators to call the pre-operational tests on demand. This used to explicitly state rebooting the module, resetting the module, etc met this requirement, but it no longer does. That may or may not indicate a change here.

    7. The software integrity test must use an Approved authentication technique. (formerly, a non-Approved technique could be used in modules with non-modifiable operational environments)
    7a. At level 1, this check can be a MAC or a digital signature.
    7b. At level 2, this check must be a digital signature.

    8. There is now an explicit requirements about when to use a KAT versus a pairwise consistency check for the pre-operational cryptographic algorithm tests for asymmetric crypto algorithms.

    9. A pre-operational bypass mode test has been explicitly added, and it is as confusing as ever. (This is not a change in practice over what was required under 140-2.)

    10. A conditional self-test has been added for key agreement.

    11. The bit count required for the continuous random bit generator test has been increased. If the random bit generator generates data in blocks smaller than 64 bits, then the data must be pooled to some amount greater than 63 bits and then the test initialized and performed from there.

    12. A min-entropy assessment test is now required for the output entropy sources. The calculated min-entropy must be greater than the min-entropy required by the random bit generator the data will be seeding. (This is the big change to these requirements.)

    13. The conditional bypass mode test has been clarified nicely and makes no sense at all. (IMO, this test should be made the pre-operational bypass mode test, and the conditional test should be changed to happen when the new rules are being activated.)

    14. All levels have the same requirements.

  10. Section 10 – Life-Cycle Assurance
    In this section, requirements around the development and deployment of the module are discussed.

    I noted the following changes from FIPS 140-2.

    1. This section has been renamed from Design Assurance, which makes sense as it always dealt with a bit more than just the design of a module.

    2. Level 5 has been added.

    3. The configuration management requirements that used to apply to all levels have been switched to just levels 1 and 2.

    4. Levels 3-5 add to the configuration management requirements of levels 1 and 2 by requiring automated configuration management.

    5. Design requirements have been split from development requirements. Other than this move, level 1-3 design requirements remain the same.
    5a. Level 4 has been scaled back slightly, as it now requires an informal proof between the design and the functional specification.
    5b. Level 5 has picked up where level 4 was scaled back, requiring a formal modeling.

    6. Finite State Machine model requirements have been moved into this section.

    7. Development requirements have been cleaned up by removing design requirements and added to a bit.
    7a. At level 1, if software is included in the module, then details on the compilers, configuration settings, and methods used to compile code must be provided.
    7b. Levels 2 and 3 have been merged, so level 2 now requires custom integrated circuits to be implemented using a high-level HDL.
    7c. Level 5 has the same requirements as level 4, which is documentation specifying pre- and post-conditions for all components, functions, and procedures.

    8. Vendor testing is a new area added to this section.
    8a. At levels 1 and 2, the functional testing performed by the vendor must be documented. Confusingly, this testing is referred to as the testing defined in the module’s functional specification called out in 10.2, but a functional specification is not required at level 1 according to 10.2.
    8b. At levels 3-5, low-level testing must be performed. This is testing of components or groups of components as defined by the design documentation for level 3 (and up).

    9. At levels 3-5, authentication data provided by the vendor must be used to authenticate to the module upon delivery of the module from the vendor. (If you remember in Section 3, there were requirements that this data be unique for each device shipped by the vendor.)

    10. Crypto-Officer Guidance is referred to here as Administrator Guidance (in Appendix A it is back to Crypto-Officer Guidance), and User Guidance is referred to here as Non-Administrator Guidance (in Appendix A it is back to User Guidance).

  11. Section 11 – Mitigation of Other Attacks
    In this section, countermeasure to attacks not covered by FIPS 140-3 can be discussed by a vendor.

    I noted the following changes from FIPS 140-2.

    1. Level 5 has been added.

    2. Levels 4 and 5 require specification of the methods used to mitigate attacks and methods for testing the effectiveness of the mitigation techniques.

As far as the Annexes go, there have been changes there too.

1. No more Protection Profiles listed in the Annexes. This goes hand in hand with no mention of Common Criteria in the requirements.

2. Annex B lists the allowed security functions.

3. Annex C lists the approved sensitive security parameter management techniques.

4. Annex C lists the allowed sensitive security parameter management techniques.

-

So, what are my thoughts after a quick pass through this draft of FIPS 140-3?

  • First, I think FIPS 140-3 has added a decent level of rigor over FIPS 140-2, but just how rigorous will be left up to the derived test requirements and what happens during those first few (and always quite painful) validations under the new standard.
  • Second, this whole level 5 thing seems a bit off to me. I thought the point of FIPS 140 was to provide requirements for modules to be used in sensitive but unclassified (SBU) environments, with the intent to use COTS products. Level 4 always seemed way more GOTS than COTS as well as beyond anything needed for SBU environments. So, now NIST/CSE have come up with level 5, which is level 4 on steroids. Much like level 4, I can’t really see any commercial company building a product that meets those requirements, unless a paying customer tasked them with doing so, and being tasked with such a gig seems unlikely to happen in the SBU world. In other words, unless the CMVP has been tasked with requirements for classified environments now, this seems like a waste of resources.
  • Third, I think level 3 has gotten quick a little harder to achieve based on this draft. Not only are their additional physical security requirements (timing analysis), but the whole default authentication data being both required (by virtue of the Life-Cycle requirements) and forced to change for each device shipped (by virtue the Roles, Services, and Authentication requirements) means a new process must be put in place for most vendors, given common practice is to just burn the same image to every device and have some sort of default login that is the same across all devices. Not to mention that on-demand software integrity check with hash value output.
  • Fourth, the bypass mode test has not been fixed at all with regards to things like VPNs, which is the main place you find bypass these days. The conditional test seems like a test for testing’s sake (check to see if the configuration has changed before changing it), and I think this should become the pre-operational bypass mode test as well as the conditional bypass mode test but performed before enabling the configuration (instead of before changing the configuration). (I pick on this because it has always irritated me. I guess it will be sticking around.)
  • Fifth, it is hard to tell exactly how well this will deal with software at this point. It could be that this might be something to look for resolution to in the derived test requirements.
  • Sixth, I felt there were some inconsistencies in requirements and language. (There are some examples noted above in my breakdown of changes.) It could also be that the derived test requirements remove this inconsistency by clarifying the meaning of some of the wording.
  • Seventh, I am not quite sure some of the Roles, Services, and Authentication requirements requirements match with how protocols and authentication really work. For example, authentication to a module over a TLS session using a password. Oftentimes, this involves negotiating an encrypted/MAC’d session, then you authenticating to the module, which means unauthenticated access to cryptographic services. Do we need to keep look the other way here?
  • Eighth, the two physical security sections could be merged without issue.
  • Ninth, is mitigation of attacks going to get any more traction this time around than it did in FIPS 140-2? Perhaps NIST/CSE should start a new Annex that lists attacks they think should be mitigated in SBU environments based on level.

I covered an aspect of software/firmware/hybrid module validations in my last post, which is one of the ambiguous areas left in FIPS 140-2. Another I have discussed in passing in a previous post was the seeding requirements under FIPS 140-1 and FIPS 140-2.

  • Under FIPS 140-1, IIRC (and it has been 6 or so years since I last looked at it), there were no explicit requirements around PRNG seeding. So, one could get away with using a clock as the seed to the PRNG. Most often, labs would point this out as a problem, but, without FIPS teeth, they could just recommend that a vendor change it, not require that they change it. While I have never heard of a lab recommending that a vendor use the system clock alone to seed the PRNG, it was possible under 140-1 for that to happen. (Requiring it, well, no.)
  • Under FIPS 140-2, this hole in the standard was fixed. Sure, it took interpretation of the key management requirements to translate to all FIPS-approved PRNGs that seed themselves internally having a seed that meets a baseline strength requirement, and that baseline seed strength requirement had to be translated into a set of entropy gathering techniques that the labs thought reasonable, but, that happened fairly quickly after the release of FIPS 140-2, and there are now standard techniques that all labs smile upon at this point. (And, no, the labs (and NIST/CSE) do not accept solely the system clock being used to seed a PRNG.)

Well, a post to the Metzger’s Cryptography mailing list explicitly asked about the entropy requirements for seeding PRNGs under FIPS 140-2. A solid response to that post can be found here, which provides pointers to the key management requirements I alluded to in the paragraphs quoted above. I also chimed in in the thread.

(Interestingly, with the entropy source test included in the draft of FIPS 140-3 (see above), the requirements in question sort of become moot under FIPS 140-3 as currently drafted, as that test serves to check that the min-entropy of the seed is greater than or equal to the security strength required for the PRNG being seeded. It could be a useful exercise to calculate min-entropy now if one has the time, as this would not only serve as a decent rationale for meeting current requirements but also takes a step towards the possible future of FIPS 140.)

Update: Rather than make yet another post on these drafts flying out of NIST, I figured I would just add the information here.

In the stream of drafts flying out of NIST this last month or so, we can add a couple more, Draft Special Publication 800-106, Randomized Hashing Digital Signatures,

NIST announces the release of draft Special Publication 800-106, Randomized Hashing Digital Signatures. This Recommendation provides a technique to randomize the input messages to hash functions prior to the generation of digital signatures to strengthen security of the digital signatures. Please submit comments to quynh.dang@nist.gov with “Comments on Draft 800-106″ in the subject line. The comment period closes on September 17, 2007.

And Draft Special Publication 800-107, Recommendation for Using Approved Hash Algorithms.

NIST announces the release of draft Special Publication 800-107, Recommendation for Using Approved Hash Algorithms. This Recommendation provides guidance on using the Approved hash algorithms in digital signatures applications, Keyed-hash Message Authentication Codes (HMACs), key derivation functions (KDFs) and random number generators. Please submit comments to quynh.dang@nist.gov with “Comments on Draft 800-107″ in the subject line. The comment period closes on September 17, 2007.

Logical diagrams in SP, another draft

Friday, July 6th, 2007

I get lots of questions about FIPS 140-2. I get questions about technical requirements, documentation requirements, process requirements, and everything in between, like costs. Not sure why people asked me all these questions – it may be that I just answer their questions for free if I know the answer.

Anyway, I normally refrain from posting such content to this blog, as it is boring; however, I have had a few people ask me about the Implementation Guidance (IG) just posted by NIST/CSE. It seems taking software through FIPS 140-2 validation still presents concerns for at least first timers. So, rather than repeat myself again, I decided to write this up in a short post. If you don’t care about FIPS 140-2 documentation, I highly suggest you stop reading now, unless you are having difficulty sleeping.

Before I get started, I need to point something out. In the simplest terms, the FIPS 140-2 Security Policy (SP) can be thought of as summarizing how a module meets the FIPS 140-2 requirements (i.e., a summary of the Vendor Evidence (VE) from the Derived Test Requirements (DTRs)) coupled with instructions on how to operate the module in compliance with the FIPS 140 requirements, all done without including proprietary information, as this document will be made public, unlike other FIPS documentation. As such, once you have responses for the VEs for your module, deriving this content for the SP is a mostly straight-forward process.

Keeping this in mind, lets look at the latest IG issued by the Cryptographic Module Validation Program (CMVP).

Question/Problem
For a software, firmware or hybrid cryptographic module, what are the requirements of the logical diagram contained in the security policy as specified in VE.14.01.01?

Resolution
The logical diagram must illustrate:
• the logical relationship of the software, firmware or hybrid module with respect to the operating environment. This shall include, as applicable, references to any operating system, hardware components (i.e. hybrid) other supporting applications, and illustrate the physical boundary of the platform. All the logical and physical layers between the logical object and the physical boundary shall be clearly defined.

Since this is pointing to VE14.01.01, we are dealing with requirements for the SP, from Appendix C of the DTRs. So, let us look at the DTR entry in question.

AS14.01: (Levels 1, 2, 3, and 4) The cryptographic module security policy shall be included in the documentation provided by the vendor.

Required Vendor Information
VE14.01.01: A diagram or image of the physical cryptographic module (if appropriate) shall be included in the security policy. The image may be used to indicate the security relevant features of the cryptographic module (e.g., tamper evidence, status indicator(s), user interface(s), power connection(s), etc).

Required Test Procedures
TE14.01.01: The tester shall verify that the diagram or image is representational of the cryptographic module tested.

Notice there is no reference to a “logical diagram” here and it seems to be discussing only the physical module. Those were points of confusion to the people that asked me about the IG, as they wondered why NIST/CSE referred to a “logical diagram” without the DTR entries making mention of it.

Now, software can be an area of ambiguity when it comes to FIPS 140-2 requirements if you have not been through a software validation before; however, the reality is that taking software/firmware through FIPS validation is a smooth process at this point, so really it just comes down to experience and understanding the “FIPS lore.” I alluded to this in a previous post.

For example, software validations are the most common area of difficulty for new labs or lab staff. Software does not fit well into FIPS 140-2, and so you can hear ridiculous requests from new FIPS 140 people in this regard.

Anyway, if you use a little fuzzy thinking here, you may notice something in the VE requirement quoted above – it sort of brings to mind the block diagram required in section 1. Exactly, and that is from where you should derive your diagram for the SP. NIST/CSE point this out in an additional comment.

Additional Comments
The logical diagram must convey basic information to the operator of the cryptographic relationship respective to the operating environment. The logical diagram could be a subset of the block diagram specified in AS.01.13.

Notably, NIST/CSE like to see block diagrams included in the SP for all modules, not just software/firmware/hybrid modules. So, while VE14.01.01 implies that just a picture of the physical device is adequate for a hardware module, it is common practice to include the block diagram(s) for the module as well. In other words, block diagrams matter for all modules and should be included in the SP, albeit potentially watered down to remove proprietary information.

Ok, so lets look at the VE requirements for AS01.13.

AS01.13: (Levels 1, 2, 3, and 4) Documentation shall specify a block diagram depicting all of the major hardware components of the cryptographic module and their interconnections, including any microprocessors, input/output buffers, plaintext/ciphertext buffers, control buffers, key storage, working memory, and program memory.

Required Vendor Information
VE01.13.01: The vendor documentation shall include a block diagram showing the hardware components and their interconnections. Components to be included in the block diagram shall include, as applicable:
1. Microprocessors
2. Input/output buffers
3. Plaintext/ciphertext buffers
4. Control buffers
5. Key storage
6. Working memory
7. Program memory
8. Other components types not listed above

VE01.13.02: The block diagram shall also include any (semi-) custom integrated circuits (e.g., gate arrays, field programmable gate arrays, or other programmable logic).

VE01.13.03: The block diagram shall show interconnections among major components of the module and between the module and equipment or components outside of the cryptographic boundary.

VE01.13.04: The block diagram shall show the cryptographic boundary of the module.

So, now we see what is required for a block diagram; however, you are thinking, “Great, but there is still no reference to software/firmware components or logical diagrams.”

Fair enough, this is a core ambiguity in FIPS 140-2 stemming from FIPS 140’s hardware roots. To get passed this limitation, you need to understand how to interpret these requirements for software/firmware components, which is basically just some FIPS lore.

“Ok, so tell me what to do,” you think.

Well, in order to fit software/firmware into FIPS 140-2, break the block diagram down into two block diagrams, one covering physical components that can be thought of as a physical block diagram, and one that includes software/firmware components that can be thought of as a logical block diagram. For example, for a software module that runs on a general purpose Pentium-based computer, the physical block diagram can just be a general depiction of a block diagram for a general purpose Pentium-based computer showing the core components, their interactions, and where information crosses into/out of the computer, and the physical cryptographic boundary surrounds all of these components, representing the case of the computer. The logical block diagram, on the other hand, will be quite a bit more meaty – it needs to depict the various software components, and the interactions between those components as well as the outside world, and the logical cryptographic boundary here encloses all of the module’s software components, representing the software/firmware as it is packaged up for the validation.

(Oh, and while you are drawing these diagrams, it would be good to bang off some of the VE requirements in section 2 of the DTRs as well. You can do this by including information flows and labeling these flows using the FIPS categories.)

“Great, I think I get it. But, what should I do for the SP?”, you say.

Remember what I said a few paragraphs back about the SP – “[...]summarizing how a module meets the FIPS 140-2 requirements[...].” So, take your logical block diagram, strip out any proprietary information and/or water it down, and insert it into the SP. Simple enough.

-

FYI, another draft released in June, this time for a mode of operation.

GCM, submitted to NIST by David McGrew and John Viega, combines a variation of the Counter Mode for encryption with an authentication mechanism that is based on a universal hash function. The underlying (approved) block cipher must have a block size of 128 bits (i.e., the AES algorithm) and the size of the authentication tag is 96-128 bits.

[via some mailing list posts and this article sent over by Ray Potter a few days ago]

Update: I just read this interesting mailing list post about what has led up to the current 800-38D draft…

Joux made some concrete suggestions for changing GCM at the end of
Section 5:

1. replace the counter encryption for MACs by the classical
encryption with the block cipher usually used with Wegman-Carter MACs.
2. use a strong key derivation at the beginning of the algorithm
and computing a different key for each different purpose (one for
encryption, one for intiializing J, one for the keyed hash and one
for the MAC encryption).

The current draft of SP 800-38D did not accept Joux’s modifications
to the algorithm, but responded to the Joux comments in several
concrete ways:
(a) the provision for variable-length IVs is omitted from the new
draft, and
(b) the draft elaborates on the requirement that initialization
vectors (IVs) must be unique across all implementations with a given
key:
(i) The critical importance of this requirement is indicated.
(ii) For validation of a module to the requirements of FIPS
140-2, an IV “generation unit” is required to be within the
cryptographic boundary of the module.
(iii) Two IV constructions are outlined: one that relies on
deterministic elements to meet the uniqueness requirement, and one
that relies on an output string from a random bit generator.
(iv) Some design and implementation considerations with
respect to IVs are discussed.

And where it may go…

While NIST determined that the GCM mode should be added to the “NIST
Crypto Standards Toolkit”, there have been extensive discussions with
respect to the utility of the Joux submission. There is a
possibility that NIST might recognize the Joux variant as well. I
suggested that the needs of protocol developers be considered as a
primary driver for this decision. As a result, Morrie Dworkin (the
author of 800-38D) will be presenting at SAAG to get a feel for the
level of interest in such a mode.

Tor and Xen and such, Flash BIOS

Tuesday, May 29th, 2007

So, I setup a Tor server in a Xen virtual machine on Ubuntu running on that J7F4-based system over the weekend. Right now, no custom kernel and no crypto hardware acceleration, but that will change when I have some more time.

The general setup was easy enough. I had one primary disk for booting the box’s OS (or dom0 when booting for Xen), and then a separate disk array for data (and domU’s). I used LVM to slice up the disk array.

General setup process:

  • Installed Ubuntu on the primary disk.
  • Installed Xen from the Debian/Ubuntu packages.
  • Used LVM to create volumes for root (512MB), swap (512MB), and var (2048MB) for my VM to run Tor.
  • Used mkfs (and mkswap) to pop the fs on the volumes.
  • Used debootstrap to install the base Ubuntu feisty OS files on the root volume I created for the VM to run Tor.
  • Created a tor VM configuration. Gave it 128MB of RAM, and one ethernet device with static MAC. The three volumes I created above are configured as ioemulated disks. Used root volume as root device and left it writable for now.
  • Mounted root volume. Modified basic system configuration installed by debootstrap in the VM’s root volume. Modified fstab properly mount the ioemulated disks configured in the tor VM configuration – root volume at /, the swap volume as swap, and the var volume at /var. Setup networking.
  • Rebooted system, booting from Xen kernel upon startup.
  • Booted the VM and logged in.
  • Downloaded and installed Tor (the Tor developers provide Ubuntu packages) in the VM.
  • Configured Tor to be a middle-man node (not willing to run exit as this location). Setup iptables here too, but not really worth the effort – only Tor daemon was listening for network connections, and you basically had to allow all TCP out.
  • Once all was working, halted the VM. With VM halted, changed the VM root device in the Tor VM configuration to be read-only, as only swap and var needed to be writable.
  • Restarted VM and was good to go.

I found this page useful as providing some bare minimum for setting up Xen with Ubuntu (note: I didn’t follow this setup exactly), and the Xen user manual useful for everything else. I found this FAQ useful for Tor server configuration. I found this page useful for iptables, something I hadn’t played with in quite some time (we have pf in the BSD world).

Next steps:

  • Build custom kernels for Dom0 and DomU. Be sure to support Padlock.
  • Enable Padlock support in OpenSSL.

Possible other next steps:

  • Wrap local network access of Tor client functionality with stunnel.
  • Use encrypted swap for Tor VM.
  • Store var volume used by Tor VM encrypted on disk, then rekey Tor node.

Annoying issue:

Only 512 megs of RAM is detected by the BIOS, when I actually have 1 gig installed, the maximum supported by the chipset. The RAM looks good and the board looks good, so I guess there is a compatibility issue. My plan was to run just two VMs anyway, but now the memory allocated to them is a bit smaller than expected.

Anyone out there running have J7F4 series board with the RAM maxed out? Did you experience any quirks?

Update: I never followed up on this. The compatibility issue I noted turned into a known issue with memory density. This sums it up.

[...]You need 16-chip (64M) low density memory, as the cn700 won’t support the 8-chip hi density (128M) memory. You’ll
just see half the memory otherwise.[...]

Unfortunately the 128Mx64 specification is essentially useless, as it’s applied to both two-rank 16-chip and one-rank 8-chip 1GB sticks.

If you have a stick with 8 chips on one side only, then that’s 1Gbit technology and it won’t work with a CN700. If you have a two-sided 16-chip stick then most likely it will.

-

As part of my attempts to get the full amount RAM recognized, I flashed the BIOS on the system discussed above. This system was running Ubuntu GNU/Linux and had no floppy drive. The general process I used to flash the BIOS was as follows, which was based on the steps outlined in this and this.

  • Download a bootable floppy image for FreeDOS. (e.g., fdboot.img is what I downloaded.)
  • Mount the image. (e.g., mount -o loop /home/flash/fdboot.img /home/flash/tmp)
  • Copy the “flasher” and flash to the image. fdboot.img had about 1 meg of free space, IIRC. (e.g., cp <flasher>.exe /home/flash/tmp; cp <flash>.bin /home/flash/tmp)
  • Unmount the image. (e.g., umount /home/flash/tmp)
  • Create an bootable ISO image, which will use fdboot.img for booting. Make sure fdboot.img is in the directory tree the image is created from. (e.g., cp /home/flash/fdboot.img /home/flash/tmp; mkisofs -r -b fdboot.img -c boot.cat -o /home/flash/bootcd.iso /home/flash/tmp)
  • Burn to CD.
  • Boot from the CD in the system to be flashed.
  • Choose option 2, which is FreeDOS safe mode. No drivers and such are loaded.
  • Flash the BIOS. (Of note, my BIOS was write-protected. This involved changing CMOS settings, but could easily have been jumpers.)
  • Remove the CD and reboot.