Chương 10 phần 1

Đại chiến hacker

Đăng vào: 12 tháng trước

.

Bạn sẽ làm gì nếu phát hiện ra có gián điệp trong nội bộ? Bạn có thể vạch mặt hắn, dồn hắn vào chân

tường rồi tống khứ hắn đi. Nhưng rồi kết cục có thể là một tay gián điệp khác mọc ra, gã này sẽ cẩn thận hơn gã trước và không để bị tóm quá sớm.

Đây là ý tưởng hay hơn: hãy bắt đầu bằng việc chặn liên lạc và cung cấp cho hắn cùng chủ của hắn những thông tin sai lệch. Giả sử chủ ra lệnh cho hắn đi thu thập thông tin về hoạt động của bạn. Hãy cứ để hắn theo dõi bạn và ghi lại cái gì hắn thích, sau đó, khi hắn gửi tin cho trụ sở, bạn mở thư ra và thay báo cáo của hắn về hoạt động của bạn bằng một tin giả. Nếu muốn, bạn có thể khiến hắn có vẻ thất thường, không đáng tin để họ loại bỏ hắn. Bạn có thể bịa những nguy cơ có thể khiến cho bên này hay bên kia hé lộ danh tính của những gián điệp khác. Nói ngắn gọn, bạn làm chủ bọn chúng.

Cách này được gọi là kiểu tấn công “kẻ đứng giữa” – Man-in-the-middle (MITM) – và nếu bạn tìm hiểu về nó thì sẽ thấy nó khá đáng sợ. Ai đó trà trộn vào các đường liên lạc của bạn và có thể giăng bẫy bạn bằng hàng nghìn cách.

Tất nhiên, có một cách tuyệt vời để đối phó với kiểu tấn công “kẻ đứng giữa” này: sử dụng mã hóa. Với mã hóa, kẻ địch có đọc được tin nhắn của bạn cũng không sao vì hắn không thể giải mã, thay đổi và gửi lại chúng. Đó là một trong những lý do chính để sử dụng mã hóa.

Nhưng hãy nhớ rằng: để thuật mã hóa phát huy hiệu quả, bạn cần cung cấp chìa khóa cho những người bạn muốn nói chuyện. Bạn và đồng đội của mình cần phải chia sẻ một hoặc hai bí mật, những chìa khóa mà các bạn có thể sử dụng để mã hóa và giải mã tin nhắn để khóa tay gián điệp lại.

Đó là lúc ý tưởng về chìa khóa công cộng xuất hiện. Nó có hơi nguy hiểm một chút, nhưng mặt khác cũng thú vị đến khó tin.

Trong phương pháp mã hóa khóa công cộng, mỗi người sử dụng sẽ có hai chìa khóa. Chúng là những chuỗi ký tự dài không tuân theo một quy luật toán học nào, và chúng có một quyền năng gần như là kỳ diệu. Bất cứ thứ gì được xáo trộn bằng chìa này thì sẽ mở được bằng chìa kia, và ngược lại. Còn nữa, chúng là hai chìa khóa duy nhất có thể làm việc này – nếu bạn có thể phục hồi trật tự tin nhắn bằng một khóa, bạn biết nó đã bị xáo trộn bởi khóa kia (và ngược lại).

Bạn chọn một trong hai khóa này (không quan trọng là cái nào) và công bố nó. Bạn biến nó thành một thứ hoàn toàn không bí mật. Bạn muốn cả thế giới cái gì. Vì những lý do hiển nhiên, họ gọi nó là “khóa công cộng” của bạn.

Khóa còn lại, bạn giấu trong vùng tối nhất của trí não. Bạn bảo vệ nó bằng mạng sống của mình. Bạn không đời nào để bất cứ ai biết nó là gì. Đó gọi là “khóa riêng” của bạn. (Tuyệt!)

Giờ giả sử bạn là gián điệp và bạn muốn nói chuyện với sếp của mình. Ai cũng biết khóa công cộng của họ. Ai cũng biết khóa công cộng của bạn. Nhưng không ai biết khóa riêng của bạn ngoại trừ chính bạn. Không ai biết khóa riêng của họ trừ chính họ.

Bạn muốn gửi đến cho họ một tin nhắn. Đầu tiên, bạn mã hóa nó bằng khóa riêng của mình. Bạn gửi tin nhắn đó đi, và nó sẽ hoạt động khá tốt, vì khi tin nhắn đến, họ sẽ biết nó là của bạn. Bằng cách nào? Vì nếu họ có thể giải mã nó bằng khóa công cộng của bạn, nó chỉ có thể được mã hóa bằng khóa riêng của bạn. Điều này tương đương với việc bạn đóng hoặc ký vào cuối tin nhắn vậy. Nó viết, “Tôi đã viết cái này, không có ai khác nữa. Không ai có thể can thiệp hay thay đổi nó.”

Thật không may, điều này không đảm bảo bí mật tuyệt đối cho tin nhắn của bạn. Đó là vì khóa công cộng của bạn được quá nhiều người biết tới (phải là như vậy, nếu không bạn sẽ bị giới hạn chỉ gửi tin nhắn cho một vài người có khóa công cộng của bạn). Bất kỳ ai chặn tin nhắn lại đều có thể đọc nó. Họ không thể thay đổi mà vẫn khiến nó trông có vẻ như được gửi từ bạn. Nhưng nếu bạn không muốn mọi người biết mình đang nói gì, bạn cần một giải pháp tốt hơn.

Vậy là thay vì việc chỉ mã hóa tin nhắn bằng khóa riêng của bạn, bạn còn mã hóa nó bằng khóa công cộng của sếp bạn. Giờ nó đã được khóa hai lần. Lớp khóa thứ nhất – là khóa công cộng của sếp – chỉ được mở ra khi kết hợp với khóa công cộng của bạn. Khi sếp nhận được tin nhắn, họ mở chúng bằng cả hai khóa và họ biết chắc rằng: a) bạn đã viết nó và b) chỉ mình họ có thể đọc.

Nó rất tuyệt vời. Ngày mà tôi phát hiện ra nó, Darryl và tôi ngay lập tức trao đổi khóa, rồi mấy tháng sau đó, hai đứa cười khúc khích, xoa tay như thể đang trao đổi những tin nhắn bí mật quân sự tầm cỡ về việc sẽ gặp sau buổi học ở đâu, liệu Van có bao giờ để ý đến cậu ta không.

Nhưng nếu bạn muốn hiểu rõ về tính bảo mật, bạn cần xem xét những khả năng hoang đường nhất. Ví dụ, nếu tôi lừa bạn rằng khóa công cộng của tôi là khóa công cộng của sếp bạn thì sao? Bạn sẽ mã hóa bằng khóa riêng của mình và khóa công cộng của tôi. Tôi sẽ giải mã nó, đọc nó, mã hóa lại bằng khóa công cộng thực sự của bạn và gửi nó đi. Sếp của bạn vẫn tin rằng không ai ngoài bạn có thể viết tin nhắn và không ai ngoài ông ta có thể đọc được nó.

Còn tôi thì ngồi ở giữa, giống một con nhện béo trong mạng nhện, và tất cả bí mật của bạn thuộc về tôi.

Giờ thì cách dễ nhất để khắc phục điều này là quảng bá rộng rãi khóa công cộng của bạn. Nếu bất cứ ai cũng dễ dàng biết khóa thật của bạn thì kẻ- đứng-giữa sẽ gặp nhiều khó khăn hơn. Nhưng bạn biết không? Làm một thứ trở nên phổ biến cũng khó ngang với việc giữ một bí mật. Hãy nghĩ mà xem – biết bao nhiêu tỉ đô la đã được chi cho việc quảng cáo dầu gội đầu và những thứ linh tinh khác, chỉ để chắc chắn rằng sẽ có nhiều người biết đến một thứ mà một nhà quảng cáo nào đó muốn họ biết?

Có một cách rẻ hơn để đối phó với kẻ-đứng-giữa: mạng lưới tin cậy. Giả sử trước khi bạn rời sở chỉ huy, bạn và sếp của bạn ngồi xuống uống cà phê và nói với nhau về khóa của mình. Không có kẻ-đứng-giữa nào! Bạn biết rất rõ mình có khóa của ai vì chúng được trao tận tay bạn.

Tới lúc này, mọi thứ vẫn ổn. Nhưng có một giới hạn tự nhiên cho việc này: bạn có thể trực tiếp gặp và trao đổi khóa với bao nhiêu người? Bạn muốn dành ra bao nhiêu tiếng trong ngày để làm cái việc tương đương với việc viết sổ điện thoại cá nhân của bạn? Bao nhiêu người trong số họ cũng sẵn sàng dành thời gian đó cho bạn?

Để hình dung rõ hơn, hãy xem nó như một danh bạ điện thoại. Thế giới đã từng là một nơi với rất nhiều danh bạ, và khi bạn cần tìm một con số, bạn có thể tra trong đó. Nhưng đối với nhiều số mà bạn muốn tìm liên quan đến một ngày cụ thể, một là bạn phải thuộc lòng nó, hai là bạn phải có khả năng hỏi ai đó. Thậm chí ngày nay, khi tôi đi ra ngoài mà cầm theo điện thoại di động, tôi vẫn hỏi Jolu hoặc Darryl xem họ có số mà tôi tìm không. Cách này nhanh chóng, dễ dàng và đáng tin hơn là tìm trên mạng. Nếu Jolu có số tôi cần, tôi tin cậu ấy, vậy là tôi cũng tin cả con số đó luôn. Việc này gọi là “sự tin cậy bắc cầu” – sự tin tưởng lan truyền trong mạng lưới các mối quan hệ của chúng tôi.

Một mạng lưới tin cẩn là phiên bản lớn hơn của điều tôi vừa nói trên. Giả sử tôi gặp Jolu và có chìa khóa của cậu ấy. Tôi có thể đặt nó vào “chùm chìa khóa” của mình – một danh sách chìa khóa mà tôi đã đánh dấu bởi khóa riêng của tôi. Điều này có nghĩa là bạn có thể mở nó bằng khóa công cộng và biết chắc rằng đó là tôi – hoặc ai đó có chìa khóa của tôi – giả sử “chìa khóa này thuộc về anh chàng này”.

Vậy là tôi đưa cho bạn chùm chìa khóa của mình, qua đó tôi muốn nói rằng bạn đã tin tôi để gặp nhau ngoài đời và xác minh tất cả chìa khóa của tôi cũng đều đáng tin, bạn có thể thêm nó vào chùm chìa khóa của mình. Giờ, bạn gặp một người khác và đưa cả chùm chìa khóa cho anh ta. Chùm chìa khóa ngày một nhiều thêm, cho thấy bạn tin tưởng người tiếp theo trong chuỗi, và anh chàng này tin tưởng người kế tiếp trong chuỗi và cứ như vậy, bạn sẽ khá an toàn.

Điều này đã đưa tôi đến bữa tiệc đăng ký khóa. Chúng chính xác như tên gọi của chúng: một bữa tiệc nơi bạn tập hợp mọi người lại và đăng ký khóa của những người khác. Khi Darryl và tôi trao đổi khóa, nó giống như một bữa tiệc đăng ký khóa mini, chỉ có hai đứa mọt sách buồn bã. Nhưng với nhiều người hơn, bạn đã gieo xuống hạt giống của mạng lưới tin cậy, từ đó mạng lưới có thể mở rộng ra. Khi mọi người trong chùm chìa khóa tỏa ra khắp thế giới và gặp thêm nhiều người, họ có thể đưa thêm nhiều cái tên nữa vào danh sách. Bạn không cần phải gặp những người mới, chỉ cần tin là chìa khóa mà bạn nhận được từ những người trong mạng lưới có hiệu lực.

Vậy nên mạng lưới tin cậy và những bữa tiệc luôn đi với nhau giống như bơ đậu phộng và sô cô la vậy.

“Chỉ cần thông báo với họ đây là một buổi tiệc siêu kín, chỉ dành cho những người được mời,” tôi nói. “Bảo họ không được đưa ai theo, nếu không sẽ không được vào.”

Jolu nhìn tôi qua tách cà phê. “Cậu đùa hả? Cậu nói với mọi người như vậy thì họ sẽ dẫn thêm bạn bè tới.”

“Ặc,” tôi kêu. Thời gian này, mỗi tuần tôi đều ở nhà Jolu một tối để cập nhật mã trên indienet. Pigspleen trả tiền hẳn hoi để tôi làm việc này, một điều thật kỳ lạ. Chưa bao giờ tôi nghĩ mình sẽ được trả tiền để viết mã.

“Vậy chúng ta làm gì đây? Chúng ta chỉ muốn những người chúng ta thực sự tin tưởng và chúng ta không muốn đề cập lý do cho đến khi chúng ta có chìa khóa của mọi người và gửi mật thư cho họ.”

Jolu sửa các lỗi của chương trình và tôi ngó qua vai nó để xem. Trước đây, người ta gọi công việc này là “lập trình cực hạn,” hơi rối một chút. Giờ người ta chỉ gọi là “lập trình”. Hai người sẽ phát hiện lỗi sai tốt hơn một người. Như câu, “Với đủ nhãn cầu thì không con bọ nào thoát được.”

Chúng tôi làm việc thông qua các báo cáo lỗi sai và sẵn sàng chạy thử lần nữa. Tất cả đều tự động cập nhật ở background nên người dùng hoàn toàn không phải làm gì ngoài việc cập nhật mỗi tuần một lần hoặc hơn với một chương trình tốt hơn. Khá kỳ cục khi biết rằng chỉ ngày mai thôi, đoạn mã tôi viết ra sẽ được sử dụng bởi hàng trăm hàng nghìn người!

“Chúng ta làm gì đây? Trời ơi, tớ không biết nữa. Tớ nghĩ chúng ta phải tìm cách chung sống với điều này.”

Tôi nghĩ về những ngày chơi Harajuku Fun Madness. Trong trò chơi có rất nhiều thử thách mang tính xã hội liên quan đến những nhóm nhiều người.

“Okay, cậu đúng. Nhưng ít nhất hãy cố gắng giữ bí mật. Nói với họ rằng họ có thể dẫn theo tối đa là một người, và đó phải là người mà họ đã quen thân ít nhất năm năm.”

Jolu tìm trên màn hình. “Này,” nó nói. “Này, cái này sẽ cực kỳ hiệu quả đấy. Tớ có thể thấy rõ. Ý tớ là, nếu cậu bảo tớ không được dẫn ai tới, tớ sẽ dẫn theo tất cả bạn bè và nghĩ, ‘Thằng đó nghĩ nó là cái quái gì vậy?’ nhưng khi cậu nói giống như vừa rồi thì nghe sặc mùi 007.”

Tôi tìm thấy một lỗi sai. Hai đứa uống chút cà phê. Tôi về nhà và chơi trò Cướp biển hẹn giờ một lát, cố gắng không nghĩ về những kẻ thăm dò với mấy câu hỏi thọc mạch, sau đó lăn ra ngủ như một đứa trẻ.

Sutro Baths là tàn tích giả phong cách La Mã của San Francisco. Khi được mở cửa vào năm 1896, nó là bể tắm trong nhà lớn nhất thế giới, một nhà tắm nắng lắp kính lớn kiểu Victoria với nhiều bể bơi, bồn tắm, thậm chí cả cầu trượt nước. Nó được dời xuống dưới đồi trong những năm năm mươi, và bị chủ đốt trụi để lấy tiền bảo hiểm vào năm 1966. Những gì còn sót lại là một mê cung đá biến dạng được xây lùi vào vách đá ở Ocean Beach. Đối với cả thế giới, nó như một tàn tích La Mã, đổ nát và huyền bí, ngay đằng sau nó là một loạt các hang động dẫn ra biển. Khi thủy triều lên cao, sóng tràn qua hang động và bao trùm đống tàn tích – chúng thậm chí còn được biết đến vì đã hút và nhấn chìm nhiều khách vãng lai.

Ocean Beach cách xa công viên Cổng Vàng, một bờ đá khắc nghiệt với những ngôi nhà hoang vắng, đắt tiền, dốc dần xuống một bãi biển hẹp rải rác sứa và những tay lướt sóng dũng cảm (điên khùng). Có một tảng đá trắng khổng lồ nhô lên ở những đoạn nước nông trên bờ biển. Nó được gọi là Đá Hải Cẩu, nơi lũ sư tử biển tụ tập cho tới khi được tái định cư ở một môi trường thân thiện với người du lịch hơn tại khu cầu cảng Ngư Dân.

Khi trời tối, hiếm có ai ngoài đó. Trời rất lạnh, hơi muối sẽ ngấm vào tận xương nếu bạn cứ để chúng làm vậy. Rồi đá thì sắc, lại còn cả kính vỡ và kim tiêm ma túy nữa.

Đó là một nơi tuyệt vời để tiệc tùng.

Mang theo bạt và găng tay giữ ấm là ý tưởng của tôi. Jolu nghĩ ra nơi lấy bia – anh trai nó, Javier, có một người bạn kinh doanh dịch vụ đồ uống cho người dưới tuổi quy định: cứ trả đủ tiền rồi bạn muốn bao nhiêu thùng đá và rượu bia cho bữa tiệc kín, anh ta cũng phục vụ tất. Tôi xài một chút trong số tiền nhận được từ công việc lập trình indienet, và anh ta xuất hiện đúng giờ: tám giờ tối, một giờ đẹp sau hoàng hôn, và kéo sáu thùng bia ướp lạnh sủi bọt từ xe tải xuống đống đổ nát của bể bơi. Anh ta thậm chí còn mang một thùng để đựng vỏ chai.

“Các cậu giờ có thể vui chơi an toàn rồi,” anh ta nói, vỗ vỗ chiếc mũ cao bồi. Đó là một người Samoa to béo với nụ cười tươi, mặc cái áo may ô mà ta có thể thấy lông nách, bụng và cả vai anh ta thò ra. Tôi lấy tiền trả – anh ta chém đắt gấp rưỡi. Làm giá không tồi chút nào.

Anh ta nhìn tập tiền của tôi. “Cậu biết đấy, tôi có thể cướp số tiền đó của cậu,” anh ta nói, vẫn mỉm cười. “Nói cho cùng thì tôi cũng là tội phạm.”

Tôi cất tiền vào túi và thản nhiên nhìn anh ta. Tôi thật dốt khi để anh ta thấy tôi mang gì theo, nhưng tôi biết có những lúc mình chỉ cần tỏ ra thật vững vàng.

“Tôi chỉ đùa với cậu thôi,” cuối cùng anh ta bảo. “Nhưng cậu nên cẩn thận với số tiền đó. Đừng đi khoe khắp nơi như vậy.”

“Cảm ơn,” tôi đáp. “Dù sao thì bên An ninh Nội địa cũng sẽ bảo vệ tôi.”

Điệu cười của anh thậm chí còn rộng hơn. “Ha! Chúng thậm chí còn không phải là dân chuyên. Lũ chim gõ kiến(34) ấy chả biết gì cả.”

(34) Vào thế kỷ 19, người da đen ở miền Nam nước Mỹ tự coi là mình là chim két còn xem người da trắng chỉ như chim gõ kiến đầu đỏ.