<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">hi, jerry and josh. by now i know enough to have opinions about this subject.<br id="lineBreakAtBeginningOfMessage"><div><br><blockquote type="cite"><div>On Oct 29, 2023, at 10:30 PM, Jerry Leichter <leichter@lrw.com> wrote:</div><br class="Apple-interchange-newline"><div><div><blockquote type="cite">Ray, not trying to be an a****** but you're 100% wrong. There are more locks with better technology now than ever before and this is just simply increasing. Some of it's because of better and cheaper machining, 3D printing or as it's known additive manufacturing, some of it is because of better technology... It is actually increasing or doubling every few years.<br></blockquote>But you have the "sides" backwards. There are better *locks* but not (particularly) better *attacks against locks."<br></div></div></blockquote><div><br></div>actually, attacks against 50-100 year old mechanical locks have improved in the last 20 years.</div><div><br></div><div>i’m thinking specifically of bump keys and lishi picks.</div><div><br></div><div>Medeco locks were previously thought of as unpickable.</div><div><br></div><div>There are now specialized picks made for disc tumbler locks (like Abloy), and against dimple locks, like Multilock.</div><div><br></div><div>there are also devastating brute force attacks against ordinary 3 number s&g combination locks. </div><div><br></div><div>just one of these: </div><div><a href="https://www.locksmithledger.com/home/article/21286857/the-case-for-safe-autodialers">https://www.locksmithledger.com/home/article/21286857/the-case-for-safe-autodialers</a></div><div><br></div><div>there are also optical attacks against keys, such as “Sneakey”, demonstrated in 2008:</div><div>https://jacobsschool.ucsd.edu/news/release/791</div><div><br></div><div>it seems to me the bigger problem is the substitution of software with unknown and undeterminable properties </div><div>for a mechanical mechanism that can be inspected for weaknesses and back doors, requiring reverse engineering,</div><div>software, and sysadmin skills which traditional locksmiths don’t have.</div><div><br></div><div>Can we even demonstrate the absence of back doors in such products? (They’re often there just for installer convenience.)</div><div><br></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">As an early example, In 1998, Mark Chen and I were looking at a Receptors GP3 access control </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">system at a financial client site.</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">It ran SCO Unix on a PC on the enterprise network but with nonstandard addresses. </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Serial wiring to “guard stations” running terminal emulation, TCP to ethernet-attached panels. </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">The Root password (“r00t”) was published in the user manual, and tech support recommended it not be changed. </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Dialup modem (which tech support recommended be always left on). So I logged on as root, and started poking around. Netstat –na said it was listening for tcp connections on 21 ports including rexec, rpc, and sqlexec. </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">All the source code was on the machine and features were compiled in with #defines. (e.g. #ifdef JETWAY, #ifdef US_HOUSE)<br style="line-height: 40px;"></p><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Customers mentioned in the source code (with #ifdefs) included LDS CHURCH, AMD, GE King of Prussia and Camden, University of Washington, Corning, US House of Representatives, US Senate, USC, Yale, and 5 airports by name. (Turns out their customers included >50 airports, prisons, courthouses, and even a spook agency.) </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Now, conceptually, this is a few sql queries (look up the badge in a database table. look up the door’s properties in a table. is the badge</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">allowed to open that door at that time?) but it ended up more than 200k lines of C by the time they were done with the UI, the reporting, blah blah.</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Looking at the database schema and tables was instructive! The system has a concept of “passkey”, a magic word typed at a guard terminal which conveys various privileges. (All magic credentials in a database table lightly obfuscated). </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">Looking at the passkey validation code, we noticed that there was a special undocumented passkey, a magic function of the date, which conveyed system manager privilege to anyone knowing the magic spell.</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">(We also noticed that due to a misplaced curly brace on a nested if, if you had a badge that wasn’t assigned to a </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">person, the use of it would not log badge events. Provisioning a badge using the UI would properly add it to both the</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">person table and the badge table.)<br style="line-height: 40px;"></p><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">So, what could an attacker do? An outsider on a dialup line, or an insider on the LAN, could permanently or temporarily enable badges with bogus access or deny access to legitimate users. cause immediate diagnostic events to occur (e.g. unlocking doors or areas), schedule timed events to occur (e.g. unlock all doors 2am-3am on Sunday), </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">create stealth badges (which then had unlogged access), Alter the unsigned code downloaded to badge controllers </p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">in the buildings, disable the logging/history mechanism, remove or alter log records in the database.</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">(I will only say that the manufacturer’s response to our findings was inadequate at the time.)</p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;"><br></p></div><div><p class="uk-text-justify uk-nbfc uk-margin" style="margin: 15px 0px; overflow: hidden; display: inline; color: rgb(68, 68, 68); font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; text-align: justify !important;">https://www.nytimes.com/1998/02/08/us/design-flaw-security-systems-leaves-airports-vulnerable-terrorists-officials-say.html</p></div><div><br></div><div>But also, the protocols were broken in the most naive way: </div><div><br></div><div>there was no mutual authentication of the various components and code was unsigned. </div><div><br></div><div>One would hope that our understanding of such things has improved, but the problem stil is "how would you ever know”?</div><div><br></div><div>I am told that when the French purchased the Kaba Mas X-08 (by now we’re up to X-10) GSA approved combination lock for vaults,</div><div>SCIFs, storage containers (a very fine product) they bought it without firmware and wrote their own. (I would appreciate if </div><div>anyone can verify this excellent rumor.)</div><div><br><blockquote type="cite"><div><div><br>A lock from 50 years ago isn't as good as a modern lock, so you might have reason to want the new lock; but the weaknesses and attacks against </div></div></blockquote><div><br></div><div>When i went back to my university for my 30th reunion, i was amazed that a lot of the keys i'd made as</div><div>an undergraduate still worked. (no longer, btw).</div><div><br></div><div>another problem is that this 50 year old lock might have been installed and never looked at since.</div><div>the deadlocker still does not match up with the incorrect strike that was installed for locksmith convenience </div><div>50 years ago, and a forklift was driven into the door about 20 years ago.</div><div><br></div><div>the weaknesses are not only in that lock. (Just as in crypto, the lock is part of a larger system.)</div><div><br></div><div>they are in the door, the lock, the building, the fire exit controls, the electric or mag strike.</div><div>they are in the ring of master keys kept in the facility manager’s desk in an exposed cube. </div><div>They are in the master key visible in the giant key ring at his hip.</div><div>They are in the elevator connecting all the floors protected by a keyed alike switch.</div><div><br></div><div>Seiden’s Rule of Thumb, proven over a very large number of physical security reviews, is that 10% of the physical security </div><div>controls do not currently work, and a large proportion of these never worked properly in the first place.</div><div><br></div><br><blockquote type="cite"><div><div>the older lock were there and known 50 years ago as well. <br></div></div></blockquote>…</div><div><br><blockquote type="cite"><div><div>Taking another angle: Actually, the security of many common locks these days is *worse* than it used to be. </div></div></blockquote><div><br></div><div><br></div><div>Well, I agree with the claim that it’s easier to make locks that look secure (but aren’t) with electronic components.</div><br><blockquote type="cite"><div><div> Everyone wants push buttons and electronics (for easy re-programmability) and most common implementations are more concerned about *looking* secure than actually *being* secure. I actually demonstrated this in the mid-1970's, at a university computer center that was set up the old way: Glass room esthetic. There were three doors into the glass room, using traditional key locks. Then someone sold them on the latest electronic locks. Actually, there wasn't budget to wire up all three doors, so they did two of them and left the third alone, thus getting the strength of the weaker system.<br><br></div></div></blockquote><div><br></div><div><br></div><div>and you can bet that several of these also had key bypasses, just in case of a power outage or a battery problem in the lock.</div><br><blockquote type="cite"><div><div>Anyway, the locks were activate from a box outside the door. Inside the box were 5 rocker switches, labeled from 0-9 based on the two directions you could rock the switches. A bit of thought was put into this as the box had a cover that leaned over your hand as you activated the switches, hindering direct observation. I bet that I could figure out the combination. After a bit of thought, I went in early one day, got a used blackboard eraser - remember those? - and blew chalk dust on the switches. I then waited for someone to use the lock. A quick look after they went into the room revealed the 4 digits of the combination. Of course I didn't know the order, but at most 24 tries would reveal that. And in fact I could do better: While the cover made it impossible to see the actually switches being hit, you could determine whether the hand was pushing up or down on the switches.<br></div></div></blockquote><div><br></div><div>you are describing a continental instruments “cypher lock”, a very ‘50s device But all digital locks with push buttons have similar attacks.</div><div>(Hirsch Scramblepad is a clever keypad that randomizes button positions on each entry attempt to avoid that problem.)</div><div><br></div><blockquote type="cite"><div><div><br>You *can* get physical locks that are quite secure. They are typically combination locks, not keyed locks, and are complex and expensive - think bank vaults at the extreme. No one picks these things outside of movies. And very few people have the need for such a high degree of security.<br></div></div></blockquote><div><br></div><div>Yeah, but when you go to physical security conferences inside the beltway, you’ll see these full bird colonels who probably have the nuclear launch </div><div>codes walk up to some exhibitor for a demo of some biometric-based lock, and they will willingly enroll their retina/vein pattern/fingerprint in j</div><div>random vendor’s product just to get a demo. It’s incredible to me.</div><div><br></div><div>As usual, there are multiple ways to skin a cat.</div><div><br></div><div><br></div><div><br></div><div><br></div><br><blockquote type="cite"><div><div><br> -- Jerry<br><br><br><br>_______________________________________________<br>The cryptography mailing list<br>cryptography@metzdowd.com<br>https://www.metzdowd.com/mailman/listinfo/cryptography<br></div></div></blockquote></div><br></body></html>