<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<pubDate>Tue, 19 May 2026 22:15:13 +0000</pubDate>
		<ttl>3600</ttl>
		<title>SMBlog -- Steve Bellovin's Blog</title>
		<link>https://www.cs.columbia.edu/~smb/blog</link>
		<description>Pseudo-Random Thoughts on Computers, Society, and Security</description>
		<image>
			<width>130</width>
			<height>113</height>
			<title>SMBlog -- Steve Bellovin's Blog</title>
			<url>https://www.cs.columbia.edu/~smb/blog/control/hawk.jpg/</url>
			<link>https://www.cs.columbia.edu/~smb/blog</link>
		</image>
		<atom:link href="https://www.cs.columbia.edu/~smb/blog/control/blog.xml/" rel="self" type="application/rss+xml" />

	<item>
		<pubDate>
			Wed, 08 Mar 2023 04:06:44 +0000
		</pubDate>
		<title>
			Brief Notes on Computer Word and Byte Sizes
		</title>
		
		<description>
			This is not my usual blog fodder, but there&amp;rsquo;s too much material here for
even a Mastodon thread. The basic question is why assorted early
microcomputers&amp;mdash;and all of today&amp;rsquo;s computers&amp;mdash;use 8-bit bytes.
A lot of this material is based on personal experience; some of it is
what I learned in a Computer Architecture course (and probably other
courses) I took from one of my
&lt;a href="https://www.cs.columbia.edu/~smb/blog/2022-11/2022-11-18.html"&gt;mentors&lt;/a&gt;,
&lt;a href="https://en.wikipedia.org/wiki/Fred_Brooks"&gt;Fred Brooks&lt;/a&gt;.
&lt;p&gt;
There are three starting points important to remember. First, punch card data processing
is far older than computers: it dates back to Hollerith in the late 19th
century. When computerization started taking place, it had to accommodate these
older &amp;ldquo;databases&amp;rdquo;. Second, early computers had tiny amounts of storage by today&amp;rsquo;s
standards,
both RAM and bulk storage (which may have been either disk (for some values of &amp;ldquo;disk&amp;rdquo;!)
or tape). Third, until the mid-1960s, computers were either &amp;ldquo;commercial&amp;rdquo; or
&amp;ldquo;scientific&amp;rdquo;, and had architectures suited for those purposes.
&lt;p&gt;
Punch card processing was seriously constrained. Punch cards (at least the IBM type; there
were competing companies)
had 80 columns with 12 rows each. There was a strong desire to keep all data for a
given record on a single card, given the way that data processing worked in the
pre-computer era (but that&amp;rsquo;s a topic for another time). This meant that there was
a premium on ways to compress data, and to compress it without today&amp;rsquo;s 
software-based algorithms. The easiest way to do this was to put extra holes in a
card column. Consider a column holding a single digit &amp;ldquo;3&amp;rdquo;. That was represented by
a single hole in the 3-row of a single column. There were thus 10 rows reserved for
digits&amp;mdash;but in a numeric field, the 11-row and the 12-row weren&amp;rsquo;t used. You could
encode two more bits in that colum, as long as the &amp;ldquo;programming&amp;rdquo; knew that,
say, a column with a 12-3 punch was really a 12 punch and the number 3 and not the
letter C. Clearly, 10 digit rows plus two "zone" rows gives us 40 possible characters;
a few more were added when things were computerized.
&lt;p&gt;
Let&amp;rsquo;s look at such computers. The underlying technology was binary, because it&amp;rsquo;s a
lot easier to build a circuit that looks at on/off rather than, say, 10 different
voltage levels. When reading a card, though, you had to preserve the two zone bits
separately, because their meaning was application-dependent. Accordingly, they
used 6-bit characters: two zone bits, plus four bits for a single digit. But you
can fit 16 possible values in those four bits, not just 10, so machines of that
era actually had 64-bit character sets. In a purely numeric field, the zone bits
were used for things like the sign bit and (sometimes) for an end-of-field marker
of some sort, but that&amp;rsquo;s not really relevant to what I&amp;rsquo;m talking about so I won&amp;rsquo;t
say more about those.
The important thing is that each column &lt;em&gt;had&lt;/em&gt; had to be read in as a single
character, more or less uninterpreted.
&lt;p&gt;
Representing a number as a string of (effectively) decimal characters was also
ideal for commercial data processing, where you&amp;rsquo;re often dealing with money, i.e.,
with dollars and cents or francs and centimes. It turns out that $.10 can&amp;rsquo;t be
represented in binary: 1/10 is a repeating string in binary, just like 1/3 is in
decimal, and CFOs and bankers didn&amp;rsquo;t really like the inaccuracy that would result from
truncating values at a finite number of places.
(Pounds, shillings, and pence? Don&amp;rsquo;t go there!)
The commerical computers of the day, then, would do arithmetic on long strings
of decimal digits.
&lt;p&gt;
Scientic computers had a different constraint. They were often dealing with
inexact numbers anyway (what is the &lt;em&gt;exact&lt;/em&gt; diameter of the earth when
computing an orbit), and had to deal with logarithms, trig functions, and more.
Furthermore, many calculations were inherently imprecise: a Taylor series won&amp;rsquo;t
yield an exact answer except by chance, and it might not be possible even in
theory. (What is the exact value of &amp;#960;? It&amp;rsquo;s not just irrational, it&amp;rsquo;s
transcendental.) But there were other constraints. Sometimes, scientists and
engineers were dealing with very large numbers; other times, they were dealing
with very small numbers. Furthermore, they needed a reasonable amount of
precision, though just how much was needed would vary depending on the problem.
Floating point numbers were represented internally in scientific notation:
an exponent (generally binary) and a mantissa.
There were thus two critical parameters: the number of bits in the mantissa,
which translated into the precision of numbers stored, and the number of bits
in the exponent, which translated into the range. (Both fields, of course,
included a sign bit in some form.) Given these constraints, and given that
commercial data processing, with its 6-bit characgters, came first, it was
natural to use 36-bit words: plently of bits of precision and range, and the
ability to hold six characters if that&amp;rsquo;s what you were doing.
&lt;p&gt;
That&amp;rsquo;s where matters stood when the IBM S/360 series was being
&lt;a href="https://spectrum.ieee.org/building-the-system360-mainframe-nearly-destroyed-ibm"&gt;designed&lt;/a&gt;
starting in 1961.
But one of the goals of the 360s was to have a single unified architecture
that could do both scientific and commerical computing. There was still the
need to support those old BCD databases, whether they were still on punch
cards or had migrated to magetic tape, and there was still the need to
support decimal arithmetic.
The basic design was for a machine that could support memory-to-register
arithmetic for scientifc work and general utlity computing, and 
storage-to-storage decimal arithemtic for commercial computing.
This clearly implied a hybrid byte/word architecture.
But how big should bytes be? One faction favored 6-bit bytes and either
24-bit or 36-bit words; another favored 8-bit bytes and 32-bit words.
Ultimately, Brooks
&lt;a href="https://www.youtube.com/watch?v=9oOCrAePJMs&amp;t=140s"&gt;made the call&lt;/a&gt;:
8-bit bytes permitted lower-case letters, which he foresaw would become
important to permit character processing. (Aside: Brooks, apart from being a
mensch, was a brilliant man. It&amp;rsquo;s sobering to realize that he was appointed
to head the S/360 design project, a bet-the-compay effort by IBM, when he
was just 30 years old, and this was just after his previous project, the 8000 series
of scientific computers, was canceled. I wasn&amp;rsquo;t even out of grad school when I
was 30!)
&lt;p&gt;
The reduction from 36 bits to 32 bits for floating point numbers was challenging:
there was a loss of precision. You could go to double-precision floating point&amp;mdash;64
bits&amp;mdash;but that cost storage, which was expensive. In fact, 8-bit bytes were
also expensive: 33% more bits for each character.
(IBM did many simulations and analyses to confirm that 32 bits would
usually suffice.)
But Brooks&amp;rsquo; vision of the
need for lower case letters has been amply confirmed. (Other character sets
than the American Latin alphabet? Not really on folks&amp;rsquo; radar then, which was
unfortunate. But it would have been hard to do something like Unicode back then.
The lowest plane of Unicode is based on ASCII, not IBM&amp;rsquo;s EBCDIC. Many people
within IBM wanted to go to ASCII for the S/360 line (there was even support in
the Program Status Word for ASCII bytes instead of EBCDIC ones when dealing
with decimal arithmetic), but major customers begged IBM not to do that&amp;mdash;remember
those pesky zone punches that still existed and that still couldn&amp;rsquo;t be converted
in a context-independent fashion?)
&lt;p&gt;
8-bit bytes have other, albeit minor, advantages. If you&amp;rsquo;re trying to create a bit array,
it&amp;rsquo;s nice to be able to lop off the lower-order 3 bits and use them to index into
a byte. But Brooks himself said that the primary reason for his decision was to
support lower-case letters.
(Aside: &lt;a href="https://en.wikipedia.org/wiki/Gerrit_Blaauw"&gt;Gerritt Blaauw&lt;/a&gt;,
one of the other architects of the S/360,
spent a semester at UNC Chapel Hill where I was a grad student, and I took a course
in computer design from him. There were rumors in the trade press that IBM was going
to switch to 9-bit bytes for future computers. I happened to overhear a conversation
between him and Brooks about this rumor. Neither knew if it was true, but they both
agreed that it would be unfortunate, given how hard they&amp;rsquo;d had to fight for
8-bit bytes.)
USASCII fits nicely into 7 bits, but that&amp;rsquo;s a really awkward byte size. The
upper plane was used for a variety of other alphabets&amp;rsquo; characters. That usage,
though, has largely been supplanted by Unicode. What it boils down to is that
every since the S/360, there has never been a good reason to use a byte size of
anything other than 8 bits. On IBM systems, you have EBCDIC, an 8-bit character set.
On everything else, you have ASCII, which fits nicely in 8 bits and was more
international. 
&lt;p&gt;
Word sizes are more linked to hardware. The real issue, especially in the days before
cache, was the width of the memory bus. A wide bus is better for performance, but
of course is more expensive. The S/360 was originally planned to have five models,
from the low-end 360/30 to the 360/70, that shared the same instruction set.
It turns out that the 360/50 was a sweet spot for price/peformance and for profit&amp;mdash;and
it had a 32-bit memory bus. If you&amp;rsquo;re trying to do a 32-bit addition, you really want
the memory operand to be aligned on a 4-byte boundary, or you&amp;rsquo;d have to do two
memory fetches. 32 bits, then, is the natural word size, and the size of the registers.
You could do half-word fetches, but that&amp;rsquo;s easy; you just discard the half of the
word you don&amp;rsquo;t want. A double-precision 64-bit operand requires two fetches, but
on a higher-end machine with a 64-bit bus it&amp;rsquo;s only one fetch &lt;em&gt;if&lt;/em&gt; the
operand is aligned on an 8-byte boundary. And on the IBM 
&lt;a href="https://www.ibm.com/docs/en/SSQ2R2_15.0.0/com.ibm.tpf.toolkit.hlasm.doc/dz9zr006.pdf"&gt;Z series&lt;/a&gt;,
the modern successor to the S/360? Words are still 32 bits, because the 
nomenclature is established. A pair of 64-bit registers together is said to hold
a &amp;ldquo;quadword&amp;rdquo;. That is, what a &amp;ldquo;word&amp;rdquo; is is was defined by the original history
of the architecture; after that, it&amp;rsquo;s likely historical.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2023-03/2023-03-07.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2023-03/2023-03-07.html
		</guid>
	</item>

	<item>
		<pubDate>
			Thu, 09 May 2024 22:04:46 +0000
		</pubDate>
		<title>
			My Retirement Talk
		</title>
		
		<description>
			I&amp;rsquo;m in the process of retiring, and although I will not be settling
back in my rocking chair&amp;mdash;I have lots of writing I want to do&amp;mdash;I&amp;rsquo;m
no longer teaching.
&lt;p&gt;
On April 30, I gave a farewell talk. If you&amp;rsquo;re interested, the video is
&lt;a href="https://www.cs.columbia.edu/~smb/talks/farewell.mp4"&gt;here&lt;/a&gt;
and the slides are &lt;a href="https://www.cs.columbia.edu/~smb/talks/farewell.pdf"&gt;here&lt;/a&gt;.
(And you can always find both on my "Talks" web page.)

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2024-05/2024-05-09.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2024-05/2024-05-09.html
		</guid>
	</item>

	<item>
		<pubDate>
			Wed, 06 Nov 2024 08:47:10 +0000
		</pubDate>
		<title>
			Voting While Temporarily Disabled
		</title>
		
		<description>
			I&amp;rsquo;m temporarily disabled: I fell and fractured my shoulder about a week
and a half ago. My right arm is in a sling; I can&amp;rsquo;t write.
It&amp;rsquo;s election season in the US, so I wondered what the
experience would be like casting a vote in New York City.
(Aside: I wrote this post with the assistance of dictation software. It mostly works&amp;hellip;)
&lt;p&gt;
&lt;center&gt;
&lt;img width="75%" src="../pictures/halloween-voter.png" alt="A sticker that says Halloween
Voter 2024. In the middle, there is a picture of a pigeon, wearing a witch&amp;rsquo;s
hat and holding a pumpkin trick-or-treat basket in its beak, while bats
and such fly around in the background."&gt;
&lt;/center&gt;
&lt;p&gt;
The first step in voting is to check in. New York City uses electronic
poll books. You can either tell the poll worker who you are, or you
can display a barcode that you were sent by the Board of Elections.
In fact, a mailing that you will receive from the Board will include
a QR code that you can use to download an electronic copy of this
barcode to the wallet app on your phone. Naturally, I prefer this
option, so I don&amp;rsquo;t have to clutter up my wallet or keychain with a
piece of plastic I will use about twice a year.
&lt;p&gt;
You then sign the poll book. In New York City, that&amp;rsquo;s done with
a stylus on a tablet. The poll worker can then compare your current
signature with what on file. I can&amp;rsquo;t write with my right hand at
the moment. What are the provisions in New York State election law
for such a situation?
&lt;p&gt;
They&amp;rsquo;ve thought of this, of course.
&lt;a href="https://www.nysenate.gov/legislation/laws/ELN/8-304"&gt;&amp;sect;8-304(2)&lt;/a&gt;
says that
&lt;blockquote&gt;
if such a person claims that he or she is
unable to sign his or her name by reason of a physical disability
incurred since the voter&amp;rsquo;s registration, the board, if convinced
of the existence of such disability, shall permit him or her to
vote, shall enter the words "Unable to Sign" and a brief description
of such disability in the space reserved for the voter&amp;rsquo;s signature
at such election.
&lt;/blockquote&gt;
That isn&amp;rsquo;t quite what happened.
Instead, the poll worker I talked to initially filled out some form
and conducted me to some other desk. At this desk, I had to show
my barcode again, at which point the machine printed out the
appropriate ballot for me. It is unclear to me why I had to go to
this separate desk or why a form was used instead of following the
explicit provision of state law. If they had offered me a provisional
ballot instead, I would&amp;rsquo;ve offered to come back with an attorney.
(Aside: when I used my phone again to display my barcode, the person
at this desk said "you can&amp;rsquo;t sign your name but you&amp;rsquo;re tech-savvy?"
I replied that I was a computer science professor who just happened
to have an injured arm. I&amp;rsquo;m sure that people with more permanent
disabilities get this sort of nonsense all the time. I&amp;rsquo;m contemplating
filing a complaint.)
&lt;p&gt;
The next issue is actually casting the ballot: I do not think I
could accurately fill in the bubbles on the ballot writing with my
left hand. Again, this is something provided for in state law: I
can &lt;a href="https://www.nysenate.gov/legislation/laws/ELN/8-306"&gt;have
assistance&lt;/a&gt; in filling out the ballot. New York City, though
provides a better option: a
&lt;a href="https://vote.nyc/page/ballot-marking-device"&gt;ballot marking device&lt;/a&gt;
in every precinct. Without going into details&amp;mdash;see the
linked-to the webpage&amp;mdash;the machines, which can accommodate many kinds
of disabilities, read and scan a regular ballot and let you vote.
They then print the appropriate markings on the ballot and hand it back to
you.
The machine was slow and annoying to use&amp;mdash;it used a resistive
touchscreen&amp;mdash;but it did the job. It then took forever to actually
print the marked ballot. Being the sort of person that I am, and
knowing something of the failure modes of BMDs, I checked the marked
ballot to verify that all of the choices were as I had intended.
They were; I took the ballot over to one of the scanners and actually
cast the ballot.
&lt;p&gt;
Overall, I give the city and the state an A-. The personnel were
properly trained, and (except for the crack about tech-savviness)
were quite polite, and all of the necessary procedures and hardware
were there. Of course, I would very much prefer not to have to vote
this way again, but I could actually cast my ballot in privacy
without someone else&amp;rsquo;s assistance.
&lt;p&gt;
&lt;p&gt;

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2024-10/2024-10-31.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2024-10/2024-10-31.html
		</guid>
	</item>

	<item>
		<pubDate>
			Mon, 04 Nov 2024 20:56:39 +0000
		</pubDate>
		<title>
			Voting: The Role of Process
		</title>
		
		<description>
			A lot of attention in the technical elections community has to do
with the actual mechanism for casting a vote, and in particular the
use and type of voting machines, risk-limiting audits, etc. But the
process of actually getting to cast the ballot is quite important,
too. I was a poll worker in New Jersey in 2008 for Obama&amp;rsquo;s first
term. We encountered quite a number of interesting situations,
things not well covered by our training, but important for the
honesty and accuracy of the process. It&amp;rsquo;s worth describing what
happened.
&lt;p&gt;
I should note: this is just a small part of the full set of processes
involved. It&amp;rsquo;s limited to what I saw personally as a poll worker
and not even all of that&amp;mdash;I
was not an election official.
There is more information on voting and process in some
&lt;a href=https://www.cs.columbia.edu/~smb/classes/f21/l_voting2.pdf&gt;class
slides&lt;/a&gt; of mine.
&lt;p&gt;
&lt;b&gt;Background:&lt;/b&gt; in New Jersey in 2008, so-called DRE
(Direct Recordinh Electronic) voting machines
were used. Voters would check in at a desk, sign the poll book, and
be handed a ticket. They would hand the ticket to another poll
worker at a machine; this person would then unlock the machine and
let them vote. When they finished voting, they were supposed to
press a large red button to cast their vote and reset the machine.
The tickets were all numbered. The number of each ticket would be
written in the poll book next to their name; their voter registration
number would be written on the ticket. (It&amp;rsquo;s a useful exercise for
a security person to understand why both such numbers were needed,
and what threats this does and does not protect against.)
&lt;p&gt;
&lt;b&gt;Fleeing voters:&lt;/b&gt; A voter who leaves without pressing the button is
called a fleeing voter. How should this be handled? There have been
&lt;a href="https://www.mattblaze.org/blog/vote_fraud_in_kentucky/"&gt;instances&lt;/a&gt;
where poll workers have gone into the machine and changed
the votes to what they or the local political bosses wanted. An
alternative is to just reset the machine, causing that person&amp;rsquo;s
vote to be lost. The third choice, which I saw done, was for a
worker to reach inside the curtain, without looking, to press the
button. Is this the best option? It is if the workers are honest&amp;mdash;but
are they honest?
(A quick Google search suggests that some jurisdictions permit this
if two poll workers of different parties do this cooperatively.)
&lt;p&gt;
&lt;b&gt;Court orders:&lt;/b&gt; If someone believes that they are registered, but
their name does not appear in the poll book they can cast what is
called a provisional ballot. This is handled like an absentee ballot:
the actual ballot is inside a secrecy envelope, which in turn is
enclosed in an envelope with the person&amp;rsquo;s name and address. That
permits later verification of their registration status. If it is
determined that they are in fact, registered, the inner envelope
is opened by someone else, someone who has not seen their name and
address, and the ballot is counted. If not, the inner envelope is
discarded, unopened. However, there is another possibility: you
could obtain a court order, allowing you to vote on the voting
machines. We were informed, in fact, that every judge in the county
was on duty that day to handle such requests. One person, a young
Black woman, came to us with a court order. How do we handle this?
What do we write on the ticket? Where do we write the ticket number?
The poll workers all got together to discuss this issue. She got
rather agitated, thinking we were trying to deny her the right to
vote on the machine, despite her court order, but we just had to
figure out the proper procedure. Our eventual solution was to write
on our copy of the court order "Court Order #1," write that on the
ticket, and write the ticket number on the court order. That would
provide the same sort of cross checking that an entry in the poll
book would have. (Aside: given the racial issues in the election,
for the first several hours of voting there was an observer from
the ACLU to ensure that we were not trying to exclude minority
voters. He was satisfied that we were not and left before this
particular incident took place.)
&lt;p&gt;
&lt;b&gt;Wrong person:&lt;/b&gt; Someone came in, gave us his name, and signed the
poll book entry for that name. Later on, someone else came in, and
gave the same name and address.
(Generally speaking, we were legally barred from asking for ID.)
A bit of inquiry let us figure out
that this was a father and son, senior and junior. The father had
signed the wrong line in the poll book and nobody had noticed. We
eventually told the son to sign in his father&amp;rsquo;s slot. Arguably, he
should&amp;rsquo;ve been told to cast a provisional ballot.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2024-11/2024-11-03.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2024-11/2024-11-03.html
		</guid>
	</item>

	<item>
		<pubDate>
			Mon, 04 Nov 2024 21:17:14 +0000
		</pubDate>
		<title>
			A Last Blog Post About Voting
		</title>
		
		<description>
			A few miscellaneous notes about voting&amp;hellip;
&lt;p&gt;
First, it&amp;rsquo;s a subject I&amp;rsquo;ve often blogged about before. Go to the
&lt;a href="../control/tag_index.html"&gt;tag index&lt;/a&gt;
on my blog and search for voting; you&amp;rsquo;ll see a number of
posts.
&lt;p&gt;
Second: when I looked at the tag index, I saw that 16 years ago I&amp;rsquo;d
actually
&lt;a href="../2008-11/2008-11-05.html"&gt;written up&lt;/a&gt;
something about my experiences as a poll worker.
You can read that in conjunction with my post from yesterday.
&lt;p&gt;
Finally, you may have heard about lever voting machines but
don&amp;rsquo;t know what they are. A few years
ago, I created a
&lt;a href="../pictures/voting.mp4"&gt;short video&lt;/a&gt;
about them, using an instructional
model that I bought on eBay. The questions and candidates are all
Columbia-specific, but that shouldn&amp;rsquo;t be an obstacle.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2024-11/2024-11-04.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2024-11/2024-11-04.html
		</guid>
	</item>

	<item>
		<pubDate>
			Wed, 22 Jan 2025 20:57:12 +0000
		</pubDate>
		<title>
			DHS Axes All Advisory Committee Members
		</title>
		
		<description>
			According to multiple 
&lt;a href="https://techcrunch.com/2025/01/22/trump-administration-fires-members-of-cybersecurity-review-board-in-horribly-shortsighted-decision/"&gt;news
reports&lt;/a&gt;,
the Department of Homeland Security has
&lt;a href="https://www.documentcloud.org/documents/25500093-dhs-advisory-boards-termination-letter/"&gt;fired&lt;/a&gt;
all current members of all DHS advisory committees, including the
&lt;a href="https://www.cisa.gov/resources-tools/groups/cyber-safety-review-board-csrb"&gt;Cyber Safety Review Board&lt;/a&gt;.
This is a dangerous move, based solely on politics, and is guaranteed to
produce committees that will tell DHS what it (or, more accurately) Trump
wants to hear. It&amp;rsquo;s also in flat-out contradiction to how such committees
were run in the past.
&lt;p&gt;
A bit of personal background first. In the past, I served on or worked with
two different DHS advisory committees, the Science and Technology Advisory
Committee (HSSTAC) and the Data Privacy and Integrity Advisory Committee
(DPIAC).
(I&amp;rsquo;ve also served on many other FACA-regulated committees.)
I was appointed to HSSTAC during George W. Bush&amp;rsquo;s second term
and served into Barack Obama&amp;rsquo;s second term, and I became a subject matter expert
for DPIAC around the start of Obama&amp;rsquo;s first term. In both cases, the
DHS folks running the committees were scrupulous about adhering to the
rules.
&lt;p&gt;
For HSSTAC, I was given a form that asked my political affiliation. The
form stated explicitly that the information to be provided was voluntary and
that legally they couldn&amp;rsquo;t require an answer,
but that their purpose in asking was to be able to demonstrate to the press
and the country that it was politically balanced, that it was not stacked
for one party or the other.
I declined to answer, but another committee member told me that he wrote
down "liberal Democrat"&amp;mdash;and they didn&amp;rsquo;t exclude him.
&lt;p&gt;
The membership was ideologically very diverse,
with people like a county sheriff, a retired air force general, a
high-level executive, several academics, and more. During one meeting,
when we were discussing some recommendations, someone proposed an idea
that seemed to have support. I asked, "Wouldn&amp;rsquo;t that be unconstitutional?"
Another member, who had both a PhD and a JD, confirmed it&amp;mdash;and it was
dropped. Never mind ideology or preconception; we all wanted to follow
the law.
&lt;p&gt;
Mind you, things weren&amp;rsquo;t perfect. HSSTAC was created by statute, and
how much attention was paid to our recommendations depended on who
the Undersecretary for Science and Technology was at the time. Some
(I worked under several) valued our input; others did not. But there was
never a question of partisan politics interfering.
&lt;p&gt;
DPIAC was even more interesting. At the very beginning of Obama&amp;rsquo;s first
term, he charged DHS with telling him what to do about cybersecurity.
He cared and he wanted an answer as soon as possible, from highly
qualifed people. But standing rules still applied. The White House
ordered that all members who needed it be given interim TS/SCI clearances.
Homeland Security pushed back, saying that the rules did not permit interim
SCI clearances&amp;mdash;and the White House said, "OK&amp;mdash;stick with standing policy."
They did not try to override this. One person who was affected (and I won&amp;rsquo;t
say who it was, though if you were my age you&amp;rsquo;d recognize the name)
and had a head stuffed full of far more sensitive stuff than I&amp;rsquo;d ever
dreamed of hearing had to miss some meetings, because his SCI clearance
has lapsed. The Obama White House was not going to override standing
policy, even though in his case there was almost certainly no risk.
&lt;p&gt;
Now, things weren&amp;rsquo;t perfect, either in terms of what we recommended,
what was done with our recommendations, or how we operated. But I can
say that no one cared about ideological or party leanings, just
expertise.
We never once tried to
"&lt;a href="https://techcrunch.com/2025/01/22/trump-administration-fires-members-of-cybersecurity-review-board-in-horribly-shortsighted-decision/"&gt;push
agendas that attempt to undermine its national security mission,
the President&amp;rsquo;s agenda or Constitutional rights of Americans&lt;/a&gt;."
From what I&amp;rsquo;ve seen of the CSRB&amp;rsquo;s activity (and that&amp;rsquo;s the only one I
follow these days), they don&amp;rsquo;t, either. 
&lt;p&gt;
The CSRB is an extremely vital activity. I&amp;rsquo;ve advocated for something
like it since at least
&lt;a href="http://dx.doi.org/10.1109/MSP.2012.158"&gt;2012&lt;a&gt;, and have
continued to write and speak on the subject, most recently in
&lt;a href="https://www.lawfaremedia.org/article/ten-questions-we-hope-cyber-safety-review-board-answers%E2%80%94and-three-it-should-ignore"&gt;2022&lt;/a&gt;.
As &lt;a href="https://shostack.org"&gt;Adam Shostack&lt;/a&gt; and I wrote when
the Board was &lt;a href="https://www.lawfaremedia.org/article/finally-cybersecurity-safety-review-board"&gt;first
created&lt;/a&gt;,
it isn&amp;rsquo;t a perfect structure, but it&amp;rsquo;s far better than what we had before.
If nothing else, the CSRB should be independent of DHS, just like the
the National Transportation Safety Board is not part of the
Federal Aviation Administration: sometimes, the NTSB has to criticize
the FAA&amp;rsquo;s regulations. Similarly, the CSRB may have problems with how
DHS regulates, say, the cybersecurity of critical infrastructure companies.
&lt;p&gt;
That said, gutting it for what appears to be political reasons, especially 
in the middle of something as important as
the Salt Typhoon investigation, is &lt;em&gt;seriously&lt;/em&gt;
counterproductive and harmful to the economy and national security.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2025-01/2025-01-22.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2025-01/2025-01-22.html
		</guid>
	</item>

	<item>
		<pubDate>
			Tue, 25 Mar 2025 18:33:40 +0000
		</pubDate>
		<title>
			Security Turtles All the Way Down
		</title>
		
		<description>
			&lt;a href="../pictures/turtles.jpg"&gt;&lt;img src="../pictures/turtles.jpg" align=left width="50%" alt="Many turtles on a pair of rocks in a pond. Some of the turtles are climbing on top of others.""&gt;&lt;/a&gt;
&lt;p&gt;
An amazing security lapse just occurred: a journalist was accidentally
&lt;a href="https://www.theatlantic.com/politics/archive/2025/03/trump-administration-accidentally-texted-me-its-war-plans/682151/?gift=kPTlqn0J1iP9IBZcsdI5IVJpB2t9BYyxpzU4sooa69M"&gt;included&lt;/a&gt;
on a group chat via Signal to discuss sensitive war plans.
This was wrong on so many different levels&amp;mdash;read the article; it&amp;rsquo;s
one of the msot amazing things I&amp;rsquo;ve ever read&amp;mdash;but what I want to talk
about is what &amp;ldquo;secure&amp;rdquo; means.
&lt;p&gt;
Let&amp;rsquo;s start with what Signal is. It
&lt;a href="https://signal.org/"&gt;bills itself&lt;/a&gt; as a
&amp;ldquo;simple, powerful, and secure messenger&amp;rdquo;. It works more or less like
any other text/voice/video communication platforms, but it&amp;rsquo;s strongly
end-to-end encrypted. But is it really &amp;ldquo;secure&amp;rdquo;? That depends on
your definition.
&lt;p&gt;
The first layer up is the cryptographic protocol employed. It&amp;rsquo;s almost
certainly correct, though cryptography is
&lt;a href="../2015-12/2015-12-22.html"&gt;notoriously hard to get right&lt;/a&gt;.
And the NSA has stated that 
&lt;a href="https://www.nsa.gov/portals/75/documents/resources/everyone/csfc/capability-packages/dar-cp.pdf#page=10"&gt;AES-256&lt;/a&gt;,
for example, is good enough for top secret material.
But there&amp;rsquo;s a catch: the application must be
&lt;a href="https://www.nsa.gov/portals/75/documents/resources/everyone/csfc/capability-packages/dar-cp.pdf#page=9"&gt;"properly implemented"&lt;/a&gt;.
On that, I&amp;rsquo;m much less confident; the rate of bug fix releases in Signal
is quite high, and it has &lt;em&gt;lots&lt;/em&gt; of features. That&amp;rsquo;s all well
and good, but features imply code, and having lots of code implies lots
of bugs, and bugs are the enemy of security.
Is the code in Signal correct enough to be secure? I have no idea&amp;mdash;but
I&amp;rsquo;m nervous.
&lt;p&gt;
Past that, we have to think about identity: how do you know to whom
you&amp;rsquo;re talking? That matters&amp;mdash;is
&lt;a href="https://www.cs.columbia.edu/~smb/classes/s23/l_conf_security.pdf#page=17"&gt;Squirrel really talking to Moose&lt;/a&gt;
or to
&lt;a href="https://en.wikipedia.org/wiki/The_Adventures_of_Rocky_and_Bullwinkle_and_Friends"&gt;Boris or Natasha&lt;/a&gt;?
The NSA&amp;rsquo;s secure phone systems
&lt;a href="https://web.archive.org/web/20170810075001id_/http://www.iet.unipi.it/g.dini/Teaching/sncs/lectures/readers/the.first.ten.years.of.pkcrypto.pdf#page=11"&gt;apparently uses&lt;/a&gt;
certificates containing the user&amp;rsquo;s name and clearance level.
Signal doesn&amp;rsquo;t do that, for good reason&amp;mdash;it&amp;rsquo;s for easy communication
among arbitrary people, with no central authority wanted or needed
(or possible) to issue such certificates.
But if you get a call on your secure phone from someone claiming to
be the head of the CIA, you want to &lt;em&gt;know&lt;/em&gt; that&amp;rsquo;s who it is.
You also want to know their clearance level, a concept rightfully foreign to
Signal. In fact, apparently what is displayed on the screen of an NSA
secure phone is the
&lt;a href="https://en.wikipedia.org/wiki/STU-III"&gt;lower of the clearance levels&lt;/a&gt;
of the two parties on the call. There is of course no analogue to this
in Signal.
&lt;p&gt;
If you&amp;rsquo;re talking about war plans, your adversaries are major foreign
intelligence agencies, organizations with vast technical capabilities.
Is your phone or laptop secure against such attackers? Almost certainly not.
And such adversaries have all sorts of other ways to eavesdrop on what
you&amp;rsquo;re doing, which is why top secret conversations, even over secure
gear, must take place in
&lt;a href="https://en.wikipedia.org/wiki/SCIF"&gt;SCIFs (Sensitive Compartmented
Intelligence Facilities)&lt;/a&gt;. Notably, ordinary mobile phones and other
personal electronic devices are not allowed in SCIFs.
&lt;p&gt;
So let&amp;rsquo;s look at the chain of failures here. First, the Signal messages
were sent from devices on the open Internet. Almost certainly, at
least some of these were not in SCIFs. They were thus exposed to hacking
and to other forms of surveillance. People were in the chat without
strong assurance of who they were. There was no visual indication of
the security level of the chat.
And all of this happened because these very high level people didn&amp;rsquo;t
follow basic security rules. Adding a journalist to the group was the
least of the problems and might have resulted from someone mistapping
a name on a list (though &amp;ldquo;Jeffrey Goldberg&amp;rdquo; is not a rare name;
I know someone else of that name)&amp;mdash;but
on a secure chat system, the wrong one probably wouldn&amp;rsquo;t have
been listed at all.
&lt;p&gt;
The rules and procedures can be annoying, but they&amp;rsquo;re there for a reason.
Here, every single safeguard was negated by one simple decision: to use
Signal rather than a &lt;em&gt;really&lt;/em&gt; secure platofrm for the
discussion.
&lt;p&gt;
&lt;hr&gt;
&lt;b&gt;Update:&lt;/b&gt; Just when you thought it couldn&amp;rsquo;t get any stupider&amp;hellip;
&lt;p&gt;
One of the members of the group Signal chat
&lt;a href="https://www.cbsnews.com/news/trump-envoy-steve-witkoff-signal-text-group-chat-russia-putin/"&gt;was in Russia&lt;/a&gt;
at the time.
&lt;p&gt;
Also, just last week, the Pentagon warned that Russia was
&lt;a href="https://www.npr.org/2025/03/25/nx-s1-5339801/pentagon-email-signal-vulnerability"&gt;targeting Signal&lt;/a&gt;,
that a vulnerability in it had been found, and that in any event, Signal
was not approved for &lt;em&gt;any&lt;/em&gt; non-public information, even
unclassified information.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2025-03/2025-03-24.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2025-03/2025-03-24.html
		</guid>
	</item>

	<item>
		<pubDate>
			Wed, 15 Oct 2025 23:46:21 +0000
		</pubDate>
		<title>
			Why Legislators Need Technologists
		</title>
		
		<description>
			A rather bizarre bill has been introduced in the Michigan legislature, the
&lt;a href="https://legiscan.com/MI/text/HB4938/id/3268710"&gt;Anticorruption of Public Morals Act, H.B. 4938&lt;/a&gt;.
While there&amp;rsquo;s a lot to object to in the bill, I&amp;rsquo;ll leave the broader
criticisms to others and focus on some technology issues.
&lt;p&gt;
The goal of the bill is specified in &amp;sect;3(1): &amp;ldquo;A commercial entity,
public institution, private actor, or internet platform shall not knowingly
distribute or make available prohibited material&amp;rdquo;&amp;mdash;basically, their
perception of pornography&amp;mdash;&amp;ldquo;via the internet to any
individual in this state.&amp;rdquo;
Even legislators know that location-spoofing is easy, so &amp;sect;3(5) bars the
sale of &amp;ldquo;circumvention tools&amp;rdquo;&amp;mdash;and that&amp;rsquo;s where the trouble starts.
&lt;p&gt;
&amp;sect;2(a) defines &amp;ldquo;circumvention tools&amp;rdquo; as &amp;ldquo;any software, hardware, or
service designed to bypass internet filtering mechanisms or content
restrictions including virtual private networks, proxy servers, and
encrypted tunneling methods to evade content restrictions.&amp;rdquo;
&amp;ldquo;Designed to bypass&amp;rdquo; and &amp;ldquo;to evade&amp;rdquo; are doing a lot of work here, but
the technologies named are most certainly vital and multi-use. 
Virtual private networks (VPNs), for example, go back at least to
&lt;a href="https://csrc.nist.gov/pubs/ir/4250/final"&gt;SP3&lt;/a&gt;, a
US government design intended to protect communications on the Internet.
I wrote about a mechanism to create VPNs in
&lt;a href="https://www.cs.columbia.edu/~smb/papers/pnet.ext.pdf"&gt;1990&lt;/a&gt;.
Most important, the IETF defined some VPN protocols in IPsec
(&lt;a href="https://www.rfc-editor.org/rfc/rfc2401.html"&gt;1998&lt;/a&gt;).
None of these were designed to &amp;ldquo;bypass&amp;rdquo; filtering or &amp;ldquo;evade&amp;rdquo;
content restrictions, because there were no such things back then.
Rather, they were designed to provide broad traffic protection and
to extend corporate networks beyond the firewall.
&lt;p&gt;
And tunneling? It&amp;rsquo;s been part of
&lt;a href="https://www.usenix.org/publications/library/proceedings/sec96/ylonen.html"&gt;ssh&lt;/a&gt;
since its beginning, in 1996. Again, there was no conception of
evading content restrictions.
&lt;p&gt;
VPNs and ssh tunnels are vital business tools&amp;mdash;but this bill requires
Michigan ISPs to &amp;ldquo;actively monitor and block known circumvention tools&amp;rdquo;
(&amp;sect;3(3)). Not only ordinary businesses use them, ISPs use them to manage
their infrastructure. This bill might outlaw secure operation of any
ISP in the state, to say nothing of business travelers to Michigan.
&lt;p&gt;
Can this detection even be done? Well, if you use standard port and protocol
numbers, you can detect ssh and IPsec, but there&amp;rsquo;s no requirement to
do either. This implies using deep packet inspection on all traffic,
which is hideously expensive and trivial to bypass.
&lt;p&gt;
It gets worse. &amp;sect;4, which applies to any
&amp;ldquo;internet platform, website, or social media service that is accessible
by a user in this state&amp;rdquo;, imposes a pile of restrictions.
&amp;ldquo;Any website&amp;hellip; acessible by a user in this state&amp;rdquo; is
basically the entire Internet&amp;mdash;but
every such site has to comply.
The Michigan-specific filtering has to be applied
&amp;ldquo;uniformly across all users,&amp;rdquo; presumably including those not in Michigan.
Everyone has to implement content moderation tools, except that 
automated ones don&amp;rsquo;t work and human ones don&amp;rsquo;t scale.
And of course, every web site on the planet has to file an annual
report with the Michigan state police. I wonder how many languages
the state police can read&amp;mdash;the bill doesn&amp;rsquo;t seem to require that the
reports be in English&amp;hellip;
&lt;p&gt;
In a minor vein, &amp;sect;2(f)(ii)(A) exempts &amp;ldquo;peer-reviewed academic content&amp;rdquo;.
I suspect that the people behind this bill have never heard of, e.g.,
&lt;a href="https://www.arxiv.org"&gt;arxiv.org&lt;/a&gt;, a a preprint site. Most
(but not all!) content there is intended for eventual peer review, but
it hasn&amp;rsquo;t been peer-reviewed yet.
Subsection (B) exempts &amp;ldquo;material to be used for scientific and medical
research or instruction&amp;rdquo;, but not all material there is intended
to further future scientific research.
&lt;p&gt;
In short: even if getting &amp;ldquo;pornography&amp;rdquo; were a good idea, this bill
is a horrible way to go about it.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2025-10/2025-10-15.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2025-10/2025-10-15.html
		</guid>
	</item>

	<item>
		<pubDate>
			Wed, 06 May 2026 14:23:32 +0000
		</pubDate>
		<title>
			A New Book: "Don't Get Hacked!"
		</title>
		
		<description>
			I have a new book out,
&lt;a href="https://www.cs.columbia.edu/~smb/homesec/"&gt;&lt;em&gt;Don&amp;rsquo;t Get Hacked!
Protecting Yourself at Home&lt;/em&gt;&lt;/a&gt;. It&amp;rsquo;s released under a 
&lt;a href="https://creativecommons.org/licenses/by-nc-nd/4.0/"&gt;Creative
Commons&lt;/a&gt; license, so it&amp;rsquo;s freely sharable and redistributable.
I&amp;rsquo;m working on making print
copies available.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2026-05/2026-05-06.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2026-05/2026-05-06.html
		</guid>
	</item>

	<item>
		<pubDate>
			Tue, 19 May 2026 22:15:10 +0000
		</pubDate>
		<title>
			In Memoriam: Peter G. Neumann
		</title>
		
		<description>
			One of the great applied computer scientists, Peter G. Neumann, died on
May 17. There have already been obits 
&lt;a href="https://cacm.acm.org/news/in-memoriam-peter-g-neumann-1932-2026/"&gt;published&lt;/a&gt;,
including in the &lt;a href="https://www.nytimes.com/2026/05/17/obituaries/peter-g-neumann-dead.html?unlocked_article_code=1.jVA.XOCH.2uhuCMlRsqvg&amp;smid=url-share"&gt;New York Times&lt;/a&gt;.
I knew Peter since at least 1992, and I&amp;rsquo;m honored that he considered me one
of his colleagues and friends, even staying overnight at my house once.
And that in itself shows another facet of his personality&amp;mdash;while he had
very strong opinions on technical subjects (and other
things&amp;mdash;for example, he did not think that Shakespeare wrote the
the plays generally attributed to him),
and was of course exceedingly
accomplished (as the other obits made clear) in
many fields, he was at heart someone who
preferred simplicity even in his personal life. He was always happier
staying with friends instead of in hotels, and preferred simpler restaurants
to fancy ones. Simplicity, always.
&lt;p&gt;
What I really want to talk about, though,
is that Peter, more than almost anyone else I&amp;rsquo;ve known,
understood and strongly believed in the &lt;em&gt;systems&lt;/em&gt; nature of problems.
That is, there&amp;rsquo;s not one cause to a problem; everything, including the
humans involved, interact.
&lt;p&gt;
Take, for example, buffer overflows, long a security
scourge on the Internet. Is
it the fault of the programmers? I knew someone who, 40 years ago (and several
years before the Internet worm made the problem obvious), wrote a string-handling
library before embarking on a text-heavy, security-sensitive program,
because he felt that he&amp;rsquo;d never get things right otherwise.
He was a very good programmer&amp;mdash;is that the solution?
&lt;p&gt;
Maybe the problem in the C language. &lt;em&gt;Lots&lt;/em&gt; of people have
criticized C for its lack of memory safety, but in fact that&amp;rsquo;s an
implementation and OS issue&amp;mdash;exceeding array bounds is left undefined
by the standard, which means that compilers are free to add array bounds
metadata and to check it on array references. That requires different
pointer implementations, which destroys ABI and OS compatibility.
It&amp;rsquo;s also slower, because of the need to fetch and compare against
the bounds on all references, so maybe we should blame compilers that
don&amp;rsquo;t optimize enough or hardware that doesn&amp;rsquo;t make such checks
efficient. (Hardware array bounds checking? The
&lt;a href="https://dl.acm.org/doi/10.1145/641542.641543"&gt;Burroughs B5000&lt;/a&gt;
had it in &lt;em&gt;1962&lt;/em&gt;.)
&lt;p&gt;
Take your choice, then: the person, the language, the compiler, the OS, or
the hardware? The real answer is that it&amp;rsquo;s a &lt;em&gt;system&lt;/em&gt; problem: all
of these pieces interact.
&lt;p&gt;
This is what Peter really understood&amp;mdash;and taught others. Go back and
read the RISKS Digest or the Inside Risks columns and you&amp;rsquo;ll see what
I mean: a very high percentage of the failures described, including of
course some of my favorite ones, happened because of multiple interacting
issues. It&amp;rsquo;s why he was a fan of the famous Einstein quote, &amp;ldquo;Everything
should be as simple as possible&amp;mdash;but no simpler&amp;rdquo; (and Peter got to
discuss that one morning with Einstein himself!). But pay special
attention to the second clause: &amp;ldquo;but no simpler.&amp;rdquo; Peter was a fan
of simplicity, but he realized that some things were inherently complex.
The real trick, and one fiendishly difficult to pull off, is to
eliminate the unnecessary complexity.
But you can&amp;rsquo;t eliminate complexity by changing one part of a system,
because they all interact.
He understood that, both the problem of complexity and the difficulty
in eliminating it. Too few people do.
&lt;p&gt;
Peter Neumann will be missed. May his memory be for a blessing.

		</description>
		<link>
			https://www.cs.columbia.edu/~smb/blog/2026-05/2026-05-19.html
		</link>
		<guid>
			https://www.cs.columbia.edu/~smb/blog/2026-05/2026-05-19.html
		</guid>
	</item>

</channel>
</rss>
