NSA's
Crypto Betrayal: Good News for Open Source?
By Glyn
Moody, Published 14:03, 10 September 13
Bài được đưa lên
Internet ngày: 10/09/2013
Lời
người dịch: NSA tìm mọi cách làm suy yếu mã hóa
Internet, điều ai cũng đã rõ cho tới lúc này. Để sửa
điều này, không thể ai khác, chắc chắn không thể là
các công ty nguồn đóng với các mã đóng không ai có thể
nhìn thấy (“Tôi
đã viết rồi về cách thức mà Microsoft đã và đang làm
điều này thông qua việc cung cấp các
khai thác ngày số không
cho NSA để NSA sử dụng để đột nhập vào các hệ
thống của các tập đoàn và chính phủ”),
mà phải là các cộng đồng phần mềm tự do nguồn mở
có trách nhiệm mới có khả năng để khắc phục, dù đây
là một công việc với trách nhiệm khổng lồ, khó khăn.
Đó là tinh thần của bài viết này. “Hãy
nhớ trong đầu điều này: biết
rằng sự đồng lõa của các công ty phần mềm thương
mại trong hệ thống gián điệp toàn cầu của NSA, phần
mềm tự do là hy vọng duy nhất chúng ta có để giành lại
một chút riêng tư và an ninh trên trực tuyến”.
Xem
thêm: 'Chương
trình gián điệp PRISM trên không gian mạng'.
Những phát hiện từ
các tài liệu mà người thổi còi Edward Snowden có được
rằng GCHQ về cơ bản tải
về toàn bộ Internet khi nó vào và ra khỏi nước Anh,
và lưu trữ đống khổng lồ của nó, là đủ tồi tệ.
Nhưng tuần trước chúng ta đã biết được rằng NSA đã
cố tình làm suy yếu đúng là từng khía cạnh của mã
hóa trực tuyến:
Các cơ quan, các
tài liệu phát hiện, đã áp dụng một bộ các phương
pháp trong cuộc tấn công có hệ thống và liên tục của
họ vào những gì họ coi như là một trong những mối đe
dọa lớn nhất cho khả năng của họ để truy cập được
các băng khổng lồ giao thông Internet - “sử dụng mã hóa
khắp nơi khắp Internet”.
Các phương pháp
bao gồm các biện pháp giấu giếm để đảm bảo sự
kiểm soát của NSA đối với việc thiết lập các tiêu
chuẩn mã hóa quốc tế, sử dụng các siêu máy tính để
phá mã hóa với “sự ép buộc vũ phu” và - bí mật
được canh phòng cẩn mật nhất của tất cả - hợp tác
với các công ty công nghệ và bản thân các nhà cung cấp
dịch vụ Internet.
Chính
điểm cuối đó mà tôi muốn tập trung vào ở đây - thực
tế là các công ty máy tính là đồng lõa trong việc làm
xói mòn an ninh mà chúng ta từng nghĩa chúng ta từng sử
dụng để bảo vệ tính riêng tư của chúng ta. Tôi đã
viết rồi về cách thức mà Microsoft đã và đang làm điều
này thông qua việc cung cấp các
khai thác ngày số không cho NSA để
NSA sử dụng để đột nhập vào các hệ thống của các
tập đoàn và chính phủ. Đó có thể chỉ là những
cơ hội ngắn hạn, vì Microsoft sau đó sẽ sửa các lỗi
đó.
Những
gì chúng ta đang làm việc với bây giờ là nghiêm túc hơn
nhiều. Việc cung cấp các chỗ bị tổn thương ngày số
0 có thể được gọi là tội ác của sự bỏ qua - không
cảnh báo người sử dụng rằng các hệ thống của họ
có khả năng bị tổn thương. Thông tin mới nhất chỉ ra
rằng các công ty cũng đang phạm tội ủy thác: cho phép
các lỗi được xây dựng cố ý trong các sản phẩm an
ninh mà họ bán. Đây là những gì mà bài báo trên
tờ Guardian từ tuần trước nêu về điều này:
Trong số những
điều khác, chương trình được thiết kế để “chèn
các chỗ bị tổn thương vào các hệ thống mã hóa thương
mại”. Chúng có thể được biết đối với NSA, nhưng
không với ai khác nữa, bao gồm cả những khách hàng
thông thường, những người đang được tham chiếu một
cách ấn tượng tới trong tài liệu như là “các kẻ
địch”.
“Những thay đổi
thiết kế đó đã làm cho các hệ thống đáng ngờ có
khả năng bị khai thác thông qua thu thập tình báo dấu
hiệu Sigint... với sự biết trước về sự sửa đổi.
Tuy nhiên, đối với người tiêu dùng và các kẻ địch
khác, thì an ninh hệ thống vẫn không sứt mẻ gì”.
Như
đoạn sau đây làm rõ, mối quan hệ gắn bó này rất
giống viên ngọc trên vương miện rình mò của NSA:
Một
chỉ dẫn bí mật của NSA chung hơn phát hiện nhiều chi
tiết hơn về các quan hệ đối tác sâu của cơ quan đó
với giới công nghiệp, và khả năng của nó để sửa
đổi các sản phẩm. Nó cảnh báo các nhà phân tích rằng
2 sự việc phải giữ tuyệt mật: là NSA tiến hành những
sửa đổi đối với các phần mềm và thiết bị mã hóa
thương mại “để làm cho chúng có khả năng khai thác
được”, và rằng NSA “giành lấy các chi tiết mật mã
của các hệ thống an ninh thông tin mật mã thương mại
thông qua các mối quan hệ với giới công nghiệp”.
Đó là, bây giờ giả
thiết phải là mỗi sản phẩm an ninh của Mỹ từng bị
làm xói mòn theo cách này (và có lẽ nhiều sản phẩm từ
các nước khác cũng vậy, vì Mỹ có lẽ không là quốc
gia duy nhất tham gia vào thực tiễn này). Điều đó tăng
cường thêm cho những gì tôi đã viết trước đó: các
công cy thực sự đang lơ là nếu họ phụ thuộc vào phần
mềm thương mại, vì phạm vi đối với gián điệp công
nghiệp là khổng lồ. Quả thực, trong vài ngày qua chúng
ta đã phát hiện rằng bản thân NSA tham gia vào trong vụ
gián
điệp như vậy. Những gì gây lo lắng là bằng việc
đặt các cửa hậu vào các hệ thống an ninh chủ chốt,
NSA cũng đã làm gia tăng nhiều khả năng các tác nhân
khác - cả các quốc gia và bọn tội phạm - đang khai thác
chúng để truy cập các thông tin bí mật của các tập
đoàn.
Vì thế, câu hỏi rõ
ràn sẽ trở thành: nguồn mở thì thế nào? Liệu nó có
chịu các vấn đề y hệt như phần mềm nguồn đóng hay
không, hay liệu qui trình phát triển cộng tác mở của nó
có ngăn chặn được các cửa hậu ẩn giấu như vậy
được không? Rõ ràng còn quá sớm để trả lời câu hỏi
đó một cách dứt khoát, nhưng đây là vài trường hợp
trao cho chúng ta ý nghĩa của các vấn đề có liên quan.
Đầu
tiên, một bài viết từ Theodore Ts'o, một trong những cao
thủ Linux cao cấp nhất, và vẫn còn đưa ra các quyết
định tốt lành như thế này:
Tôi rất vui vì tôi
đã chống lại các kỹ sư của Intel để /dev/random chỉ
dựa vào lệnh RDRAND. Trích từ bài báo bên dưới [một
trong các báo cáo gần đây về việc NSA làm suy yếu ann
ninh Internet tại
www.nytimes.com/2013/09/06/us/nsa-foils-much-internet-encryption.html]:
“Tới năm nay, Dự
án Sigint Enabling đã tìm thấy các cách thức bên trong một
số chips mã hóa mà thông tin thu thập được đối với
các doanh nghiệp và các chính phủ, hoặc bằng cách làm
việc với các nhà sản xuất chip để chèn vào các cửa
hậu...”
Chỉ dựa vào bộ
sinh số ngẫu nhiên của phần cứng mà đang sử dụng một
sự triển khai được đóng si bên trong một con chip mà
không có khả năng để kiểm toán là một ý tưởng TỒI.
Rồi ở đó có một
luồng thảo luận quyến rũ và minh họa về những mối
nguy hiểm của nguồn đóng, các triển khai phần cứng,
các cửa hậu và các vấn đề nảy sinh đối với nguồn
mở - tôi khuyến cáo đọc ít nhất một số trong đó để
có được ý tưởng của các vấn đề ở đây.
Mặt khác, đây là
một ví dụ nơi mà qui trình nguồn mở dường như không
giúp được nhiều. Câu chuyện bắt đầu với sự triển
khai của Red Hat mật mã hình ellip (ECC) trong gói OpenSSL
được sử dụng rộng rãi. Ngược về năm 2007, một thẻ
Bugzilla từng được mở về các tính năng nhất định mà
đã được vô hiệu hóa vì các vấn đề có khả năng về
bằng sáng chế. Điều đó là đủ tệ, nhưng như
Dietrich Schmitz đã phát hiện khi ông đã khám
phá câu chuyện của Red Hat, hóa ra là không chỉ triển
khai của Red Hat có các vấn đề. Một bài viết của kỹ
sư Mike Hearn của Google giải thích:
Hôm nay tôi đã học
được (thông qua Gregory Maxwell) rằng qui trình tuyển chọn
các tham số đường “ngẫu nhiên” [đối với ECC] dường
như ở trên bề mặt sẽ là hoàn toàn đáng ngờ. Các
tham số đó là đầu ra của SHA1, nó sẽ là tốt nếu hạt
nhân được chọn theo một cách thức có thể tái sinh
được. Nhưng chúng đã không thế. Các hạt nhân là các
hằng số cực kỳ lớn và không có những giải thích
chúng tới từ đâu. Điều đó bốc mùi rất nặng về
thứ gì đó có thể bị đột nhập.
Điều còn tốt
hơn. Hóa ra là những hằng số đó không chỉ là không có
khả năng giải thích, mà thực sự được tạo ra bởi
một nhân viên của NSA. Và hóa ra là nhóm làm việc
IEEE đã từng làm việc về các tiêu chuẩn cho ECC thực
sự tổ chức các cuộc họp của mình trong các khu nhà
của NSA và đối tác của nó và vì thế cũng đã được
NSA phê chuẩn.
Nói một cách khác,
NSA đã từng có khả năng thiết lập vài hằng số chủ
chốt mà hầu hết chắc chắn làm dễ dàng hơn nhiều cho
nó để truy cập các dữ liệu được mã hóa bằng việc
sử dụng kỹ thuật đặc biệt này. Điều lo lắng ở
đây là không ai trong thế giới nguồn mở dường như đã
lo lắng về điều này theo cách mà Ts'o đã lo lắng tới
điểm từ chối tuân theo một gợi ý mà ông đã không
hài lòng.
Điều này nhắc nhở
chúng ta rằng sự minh bạch được ca tụng nhiều của
nguồn mở (ít nhất không phải tôi) tất cả là rất
tốt, nhưng nó phụ thuộc vào các kỹ sư đa nghi đang sử
dụng tính mở đó để kiểm tra và thách thức các quyết
định thiết kế. Bây giờ, đúng là sự phá vỡ của NSA
đã diễn ra bên trong nhóm làm việc về các tiêu chuẩn,
và rằng nguồn mở không thể phụ thuộc thậm chí vào
các cơ quan tiêu chuẩn đáng kính trên danh nghĩa để tạo
ra các thiết kế mà không chứa các cửa hậu.
Quả thực, John
Gilmore, đồng sáng lập của EFF, đã viết một
bài thú vị về một số điều ông đã thấy xảy ra
trong ủy ban IETF khi thiết kế tiêu chuẩn IPsec:
Các nhân viên NSA
đã tham gia khắp, và chiếm các vai trò lãnh đạo trong ủy
ban và trong số những biên tập các tài liệu
…
Mỗi lần, ai đó
không phải là nhân viên của NSA, nhưng người đã có các
mối quan hệ lâu dài với NSA, có thể gợi ý tính riêng
tư hoặc an ninh bị giảm sút đó, nhưng điều đó dường
như có ý nghĩa khi được xem xét bởi những người không
biết nhiều về mật mã.
…
Tiêu chuẩn kết
quả là cực kỳ phức tạp - nên phức tạp rằng mỗi
nhà mật mã học thực sự mà đã cố gắng phân tích nó
từng vung tay họ ra và nói, “Chúng tôi không thể thậm
chí bắt đầu đánh giá an ninh của nó trừ phi bạn đơn
giản hóa nó tận gốc”.
Vì
thế tin tốt lành là nguồn mở chắn chắn tốt hơn so
với mã nguồn đóng khi nói về các cửa hậu vì dễ dàng
hơn để tìm ra chúng - miễn là ai đó thực sự tìm kiếm
chúng. Tin xấu là NSA đã đầu độc an ninh ở mức thậm
chí sâu hơn chúng ta tưởng, làm bại hoại bản thân các
tiêu chuẩn về an ninh.
Các
tác động của những rò rỉ mới đó là nhiều. Trước
tiên, tất cả các dự án triển khai các tính năng an ninh
nên kiểm tra mã của chúng để xem liệu nó có bị can
thiệp theo cách thức nào đó hay không. Có là là không,
nhưng không có gì là không thể cả, và chắc chắn điều
này NSA đã cố thử rồi.
Sau
đó, họ nên kiểm tra lịch sử mã trong trường hợp từng
có bất kỳ sự đóng góp “hữu dụng” nào từ NSA hoặc
những người có thể có quan hệ với họ. Thậm chí
trong sự thiếu vắng “sự trợ giúp” như vậy, thì bất
kỳ quyết định không bình thường nào cũng nên bị hỏi
thăm. Việc kiểm tra các tiêu chuẩn nằm bên dưới là
một nhiệm vụ lớn hơn mà sẽ đòi hỏi các kỹ sử
nguồn mở từ các dự án khác nhau để lôi ra các kỹ
năng của họ, nhưng điều đó phải được thực hiện.
Cuối cùng, các dự án nguồn mở cần phải thiết kế
các chỉ dẫn cho sự phát triển mã trong tương lai mà sẽ
giúp tránh được các vấn đề sâu đó ngay từ đầu.
Tôi
nhận thức được rằng nắm tất cả lại, điều này
đại diện cho một nhiệm vụ mênh mông. Nhưng điều đó
phản ánh mức độ của sự
phản bội mà chúng ta đã phát hiện
ra ở đây. NSA đã cố ý hủy hoại toàn bộ kiến trúc
lòng tin trực tuyến, thuần túy vượt ra khỏi một mong
muốn ích kỷ để làm cho công việc gián điệp của nó
lên mọi người, mọi nơi, mọi lúc, dễ dàng hơn.
Bất kể sự lan
truyền chính trị thế nào những phát hiện về sự giám
sát ồ ạt có thể có, và bất kể sức ép nào được
áp đặt và hứa hẹn nào được thực hiện, thì sự
việc đơn giản là cộng đồng nguồn mở có thể không
bao giờ tin các cơ quan tiêu chuẩn hoặc sự tham gia của
chính phủ trong các dự án một lần nữa. Quả thực, thế
giới phần mềm tự do phải dựa chỉ vào cộng đồng
các kỹ sư của riêng nó, và thậm chí sau đó phải đặt
câu hỏi cho mọi điều mà họ tạo ra.
Nếu
điều đó nghe có vẻ quá nặng nề, hãy nhớ trong đầu
điều này: biết rằng sự đồng lõa của các công ty
phần mềm thương mại trong hệ thống gián điệp toàn
cầu của NSA, phần mềm tự do là hy vọng duy nhất chúng
ta có để giành lại một chút riêng tư và an ninh trên
trực tuyến. Điều đó có thể là một trách nhiệm
khổng lồ, đáng sợ cho một nhóm những tình nguyện viên
nghèo để nhớ, nhưng điều đó không phải là trách
nhiệm mà có thể bị bất kỳ ai tránh né, những người
quan tâm về tự do số.
Revelations
from documents obtained by whistleblower Edward Snowden that GCHQ
essentially downloads
the entire Internet as it enters and leaves the UK, and stores
big chunks of it, was bad enough. But last week we learned that the
NSA has intentionally
weakened just about every aspect of online encryption:
The
agencies, the documents reveal, have adopted a battery of methods in
their systematic and ongoing assault on what they see as one of the
biggest threats to their ability to access huge swathes of internet
traffic - "the use of ubiquitous encryption across the
internet".
Those
methods include covert measures to ensure NSA control over setting of
international encryption standards, the use of supercomputers to
break encryption with "brute force", and - the most closely
guarded secret of all - collaboration with technology companies and
internet service providers themselves.
It's
that last point that I want to focus on here - the fact that computer
companies are complicit in undermining the security we thought we
were using to protect our privacy. I've already written about the way
that Microsoft has been doing this through providing zero-day
exploits to the NSA for it to use to break into corporate and
government systems. Those are probably only short-term opportunities,
since Microsoft does then go on to fix the bugs.
What
we are dealing with now is much more serious. Providing zero-day
vulnerabilities might be called sins of omission - failing to warn
users that their systems are vulnerable. The latest information shows
that companies are also committing sins of commission: allowing flaws
to be built in to the purportedly secure products they sell. Here's
what the Guardian article from last week goes on to say on this:
Among
other things, the program is designed to "insert vulnerabilities
into commercial encryption systems". These would be known to the
NSA, but to no one else, including ordinary customers, who are
tellingly referred to in the document as "adversaries".
"These
design changes make the systems in question exploitable through
Sigint collection … with foreknowledge of the modification. To the
consumer and other adversaries, however, the systems' security
remains intact."
As
the following paragraph makes clear, this close relationship is very
much the jewel in the NSA's snooping crown:
A
more general NSA classification guide reveals more detail on the
agency's deep partnerships with industry, and its ability to modify
products. It cautions analysts that two facts must remain top secret:
that NSA makes modifications to commercial encryption software and
devices "to make them exploitable", and that NSA "obtains
cryptographic details of commercial cryptographic information
security systems through industry relationships".
That
is, the assumption must now be that every US security product has
been undermined in this way (and probably many from other countries
too, since the US is unlikely to be the only nation to engage in this
practice.) That reinforces what I've written before: companies are
really being negligent if they depend on commercial software, since
the scope for industrial espionage is huge. Indeed, in the last
couple of days we have discovered that the NSA itself is engaged in
such espionage.
What's troubling is that by placing backdoors in key security systems
the NSA has also greatly increased the likelihood that other actors -
both nations and criminal - are exploiting these to access
confidential corporate information.
So,
the obvious question then becomes: what about open source? Does it
suffer from the same problems as closed-source software, or does its
open collaborative development process prevent such backdoors from
being hidden? It's obviously far too early to answer that question
definitively, but here are a couple of cases that give us a sense of
the issues involved.
First,
a post from Theodore Ts'o, one of the most senior Linux hackers, and
still making good
decisions like this:
I
am so glad I resisted pressure from Intel engineers to let
/dev/random rely only on the RDRAND instruction. To quote from the
article below [one of the recent reports on NSA's weakening of
Internet security at
www.nytimes.com/2013/09/06/us/nsa-foils-much-internet-encryption.html]:
"By
this year, the Sigint Enabling Project had found ways inside some of
the encryption chips that scramble information for businesses and
governments, either by working with chipmakers to insert back
doors...."
Relying
solely on the hardware random number generator which is using an
implementation sealed inside a chip which is impossible to audit is a
BAD idea.
There
then follows a fascinating and illuminating discussion thread about
the dangers of closed source, hardware implementations, backdoors and
the issues raised for open source - I recommend reading at least some
of it to get an idea of the issues here.
On
the other hand, here's an example where the open source process
doesn't seem to have helped much. The story starts with Red Hat's
implementation of elliptic curve cryptography (ECC) in the
widely-used OpenSSL package. Back in 2007, a Bugzilla ticket was
opened about certain features that had been disabled because of
possible patent issues. That's bad enough, but as Dietrich Schmitz
discovered as he explored
the Red Hat story, it turns out that it's not just Red Hat's
implementation that has problems. A post
by the Google engineer Mike Hearn explains:
today
I learned (via Gregory Maxwell) that the process for selecting the
"random" curve parameters [for ECC] appears on the surface
to be completely implausible. The parameters are the output of SHA1,
which should be good if the seed was selected in a reproducible
manner. But they were not. The seeds are extremely large constants
with no explanations of where they came from. That smells very
strongly of something that might be hacked.
It
gets better. It turns out that these constants are not only
unexplainable but were actually generated by an employee of the
NSA. And it turns out that the IEEE working group that worked on
standards for ECC was actually holding its meetings on the NSA campus
and its membership therefore had to be approved by the NSA as well.
In
other words, the NSA has been able to set a couple of key constants
that almost certainly make it far easier for it to access data
encrypted using this particular technique. What's worrying here is
that nobody in the open source world seems to have worried about this
in the way that Ts'o was worried to the point of refusing to follow a
suggestion he was not happy with.
This
reminds us that open source's much-vaunted (not least by me)
transparency is all very well, but it depends on sceptical engineers
using that openness to check and challenge design decisions. Now,
it's true that the NSA's subversion took place within the standards
working group, not during the implementation. But the moral is that
henceforth the basic standards should be suspect, and that open
source cannot depend even on nominally respected standards bodies to
produce designs that do not contain backdoors.
Indeed,
John Gilmore, co-founder of the EFF, has just written a fascinating
post
about some of the things he saw happening in the IETF committee
drawing up the IPsec standard:
NSA
employees participated throughout, and occupied leadership roles in
the committee and among the editors of the documents
...
Every
once in a while, someone not an NSA employee, but who had
longstanding ties to NSA, would make a suggestion that reduced
privacy or security, but which seemed to make sense when viewed by
people who didn't know much about crypto.
...
The
resulting standard was incredibly complicated -- so complex that
every real cryptographer who tried to analyze it threw up their hands
and said, "We can't even begin to evaluate its security unless
you simplify it radically".
So
the good news is that open source is certainly better than
closed-source code when it comes to backdoors, because it's much
easier to find them - provided somebody is actually looking for them.
The bad news is that the NSA has poisoned the security well at an
even deeper level than we feared, corrupting the security standards
themselves.
The
implications of these new leaks are many. First, that all open source
projects that implement security features should check their code to
see if it has been tampered with in some way. That's unlikely, but by
no means impossible, and surely something the NSA has tried.
Then,
they should check the code history in case there have been any
"helpful" contributions from the NSA or people who might be
linked to them. Even in the absence of such "help", any
unusual decisions should be queried. Checking the underlying
standards is a larger task that will require open source engineers
from different projects to pool their skills, but it must be done.
Finally, open source projects need to draw up guidelines for future
code development that will help avoid these deep problems in the
first place.
I
am aware that taken all together, this represents an immense task.
But that reflects the level of the betrayal
we have discovered here. The NSA has consciously ruined the entire
architecture of online trust, purely out of a selfish desire to make
its job of spying on everyone, everywhere, all the time, easier.
Whatever
political fallout the revelations of that massive surveillance may
have, and whatever constraints are imposed and promises made, the
simple fact is that the open source community can never trust
standards bodies or government participation in projects again.
Instead, the free software world must depend only on its own
community of engineers, and even then must question everything that
they produce.
If
that sounds like too much of burden, bear in mind this: given the
complicity of commercial software companies in the NSA's global
spying system, free software is the only hope we have of regaining a
little privacy and security online. That may be a massive,
intimidating responsibility for a ragtag group of volunteers to bear,
but it's not one that can be avoided by anyone who cares about
digital freedom.
Dịch: Lê Trung Nghĩa
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.