Đánh nhau bằng toán

Tuần vừa xảy ra một sự kiện cực kỳ lý thú: Juniper công bố các thiết bị VPN của họ đã bị cài backdoor (tức là ai đó cố tình tạo ra một lổ hổng để họ có thể bí mật kiểm soát các thiết bị này) từ năm 2012.

Sự kiện này là một trường hợp cho thấy tin tưởng mù quáng vào các thiết bị an ninh, nhất là các thiết bị mã nguồn đóng, thường là sai lầm lớn nhất khi làm quản lý an toàn thông tin. Cách đây nhiều năm khi viết về tường lửa (firewall) tôi có nói thế này:

<quote>

Firewall, về bản chất, cũng chỉ là một software chạy trên một hardware, mà đã là software, do con người tạo ra, thì thể nào cũng sẽ có lỗi. Kinh nghiệm của tôi cho thấy, nơi nào mà có software chạy, từ máy ATM cho đến các vệ tinh, nơi đó sẽ có bug, và có thể trong số các bug này, sẽ có những bug gây nguy hại đến sự an toàn của hệ thống.

Đương nhiên, các software, cụ thể là các hệ điều hành, chạy trên firewall thường rất nhỏ gọn, thường đã được kiện toàn trước khi xuất xưởng, và không phổ biến như Windows, Linux hay Mac, thành ra kiến thức về cách thức chúng hoạt động cũng như các kỹ thuật tìm kiếm và khai thác lỗ hổng bảo mật cũng không phổ biến đại trà.

Nhưng tất cả chỉ là vấn đề thời gian (và tiền bạc) mà thôi. Chẳng hạn như đối với Cisco IOS, từ năm 2005, Michale Lynn đã công bố các phương thức khai thác lỗi của nó (trước đó có FX từ năm 2003 đã có những research hoàn chỉnh về Cisco IOS). Kể từ đó đến nay, đã có rất nhiều research của các hãng và cá nhân tên tuổi trên thế giới về các lỗ hổng bảo mật trên hệ điều hành này của Cisco. Thậm chí gần đây, người ta còn phát triển được cả rootkit trên IOS.

</quote>

VPN là giải pháp truy cập từ xa vào hệ thống mạng nội bộ. Thông qua VPN một nhân viên ngồi ở nhà, hoặc quán cafe, có thể truy cập vào hệ thống mạng nội bộ của công ty như bình thường. Thiết bị VPN là dạng thiết bị trọng yếu bật nhất trong hệ thống thông tin của một công ty. Tài khoản truy cập VPN thường gắn liền với tài khoản email, ngoài ra với vị trí cầu nối giữa Internet và hệ thống nội bộ, thiết bị VPN thấy toàn bộ những dữ liệu nhạy cảm (bao gồm mật khẩu, văn bản, hình ảnh, v.v.) mà nhân viên công ty tải về máy tính cá nhân của họ. Ai kiểm soát được các thiết bị này thì coi như kiểm soát được tất cả thông tin mật của công ty.

Sau khi reverse engineering firmware của Juniper, người ta phát hiện ra hai backdoor: một backdoor cho phép truy cập từ xa mà không cần biết mật khẩu (chi tiết) và một backdoor cho phép những ai quan sát được dữ liệu (đã mã hóa) đi xuyên qua các thiết bị VPN có thể dễ dàng giải mã chúng. Với backdoor đầu, coi như ai cũng có thể điều khiển các thiết bị VPN của Juniper, rất nguy hiểm nhưng về mặt kỹ thuật cũng không có gì đặc sắc, nhưng backdoor thứ hai thì cực kỳ thú vị.

Mật mã học hiện đại phụ thuộc rất lớn vào các bộ tạo số ngẫu nhiên. Mỗi lần bạn truy cập vào Facebook, máy tính của bạn và máy chủ Facebook liên tục tạo ra các số ngẫu nhiên và sử dụng chúng để mã hóa dữ liệu truyền giữa hai phía. Cũng tương tự như vậy, khi một nhân viên truy cập vào hệ thống VPN, máy tính của họ và thiết bị VPN cũng liên tục tạo ra các số ngẫu nhiên để mã hóa dữ liệu truyền qua lại.

Ai đã từng lập trình sẽ hiểu tạo số ngẫu nhiên trên máy tính không đơn giản chút nào. Các hệ điều hành và các thư viện phần mềm thường cung cấp sẵn các hàm tạo số ngẫu nhiên, nhưng bạn có bao giờ thắc mắc các hàm này được lập trình ra sao chưa? Nói cách khác, bây giờ nếu không gọi các hàm có sẵn, bạn sẽ làm gì để tạo ra một số ngẫu nhiên trong chương trình của bạn? Bạn sẽ nhận ra rằng bất kể thuật toán của bạn là gì, nó sẽ là tất định, đầu vào hoàn toàn quyết định đầu ra, không có cách chi để bạn lập trình máy tính trả về một số ngẫu nhiên cả. Nếu đơn giản, Knuth đã không dành hẳn một chương trong bộ The Art of Computer Programming để bàn về các thuật toán tạo số ngẫu nhiên.

Các bộ tạo số ngẫu nhiên là những thuật toán tất định (deterministic algorithm) sử dụng một trong hai mẹo để tạo ra sự ngẫu nhiên:

* ghi nhớ số ngẫu nhiên đã tạo trước đó và các số tạo tiếp theo sẽ phụ thuộc vào số tạo trước nó. Tôi sẽ không bàn về kỹ thuật này ở đây, ai hứng thú có thể xem thêm bộ tạo số ngẫu nhiên đồng dư tuyến tính.

* sử dụng các phần cứng đặc biệt để tạo ra số ngẫu nhiên đầu tiên (thường được gọi là seed, hạt giống), các số ngẫu nhiên tiếp theo sẽ phụ thuộc vào hạt giống ban đầu. Đây là kỹ thuật của các bộ tạo số ngẫu nhiên dùng trong mật mã và cũng được sử dụng bởi các thiết bị VPN của Juniper.

Các CPU hiện đại thường có sẵn một mô-đun để tạo số ngẫu nhiên, dựa vào các sự kiện ngẫu nhiên mà CPU quan sát được, ví dụ như số lần instruction mov eax, eax được thực thi trong 1s vừa rồi, hay các hiện tượng vật lý (xem thêm bộ tạo số ngẫu nhiên thực). Các số ngẫu nhiên được tạo ra ở trong CPU hoàn toàn không thể dự đoán được, nhưng các bộ tạo số này thường rất chậm, do phải phụ thuộc vào môi trường, thường không đáp ứng được nhu cầu của hệ điều hành và các phần mềm chạy ở trên hệ điều hành (ví dụ như trình duyệt, v.v). Do đó người ta chỉ dùng các số ngẫu nhiên do CPU tạo ra để làm hạt giống cho các bộ tạo số ngẫu nhiên bằng phần mềm. Ví dụ như trên Linux, có bộ /dev/urandom

$ cat /dev/urandom

Từ đây về sau tôi dùng từ bộ tạo số ngẫu nhiên để chỉ các bộ tạo số ngẫu nhiên bằng phần mềm, tương tự như /dev/urandom.

Tiêu chuẩn quan trọng nhất của các bộ tạo số ngẫu nhiên là không thể dự đoán. Nếu chỉ cần quan sát một vài số đã được tạo ra mà có thể dự đoán được những số sẽ được tạo ra tiếp theo (hoặc là trước đó), bộ tạo số coi như không đủ tiêu chuẩn để dùng trong mật mã. Có nhiều thuật toán ngẫu nhiên, nhưng Juniper chọn thuật toán có tên là Dual EC. Trên danh nghĩa đây là thuật toán được thiết kế và chuẩn hóa bởi Viện Tiêu Chuẩn Công Nghệ Mỹ (NIST), nhưng các tài liệu của Edward Snowden chỉ ra rằng thuật toán này được thiết kế bởi Cục An Ninh Quốc Gia Mỹ (NSA). Vấn đề là NSA đã cài một backdoor vào thuật toán này, giúp họ có thể dự đoán được những số sẽ được tạo ra chỉ bằng cách quan sát một số trước đó.

Mặc dù Dual EC có thể đọc thành DỞ ẸC, nhưng chữ EC thật ra có nghĩa là elliptic curve. Dual EC sử dụng nhóm các điểm trên đường cong elliptic curve để tạo số ngẫu nhiên. Thuật toán này có hai bước đơn giản

* Từ một số ngẫu nhiên r, tạo ra số ngẫu nhiên kế tiếp bằng cách tính r * Q, tức cộng dồn điểm Q r lần.

* Thay thế r bằng r * P.

Lưu ý nếu biết r thì có thể dự đoán được tất cả các số sẽ được tạo ra tiếp theo.

Mô tả của tôi về thuật toán Dual EC không chính xác 100%, nhưng đủ chính xác để giới thiệu backdoor. PQ là hai điểm cho trước trên đường cong. NSA chọn P là một hằng số không có gì đáng nghi ngờ, nhưng không giải thích nguồn gốc của Q. Hai nhà nghiên cứu của Microsoft chỉ ra từ 2007 rằng nếu Q không được chọn ngẫu nhiên, NSA có thể dự đoán được tất cả các số sẽ được tạo ra tiếp theo, chỉ bằng cách quan sát một số đã được tạo ra trước đó. Vì PQ được định nghĩa trên đường cong có tên là P-256, nên tồn tại một số $e$, sao cho e * Q = P. Nếu biết được er * Q NSA có thể tính r * Q * e = r * P, tức là đã tính được r và từ đó có thể dự đoán được tất cả những số ngẫu nhiên sẽ được tạo ra. Vì NSA chọn PQ nên chắc chắn họ biết e.

Nếu bài toán logarithm rời rạc trên nhóm các điểm trên đường cong elliptic là khó, ngoài NSA ra không ai có thể sử dụng backdoor này. Đây là dạng backdoor NOBUS (No One But Us) được chính phủ Mỹ và các nước ưa thích. Vấn đề của NSA là làm sao thuyết phục được các công ty sử dụng Dual EC. Thuật toán này chạy rất chậm và ngoài backdoor này ra, nó còn có vài vấn đề an ninh khác. Do đó khi Edward Snowden xác nhận Dual EC đích thực bị NSA cài backdoor, lúc đầu người ta nghĩ chắc không ai sử dụng nó đâu.

Rốt cuộc người ta phát hiện có ít nhất 4 công ty Mỹ có đính kèm Dual EC vào các sản phẩm của họ: Microsoft, Cisco, RSA và bây giờ là Juniper. Tôi không rõ Cisco sử dụng Dual EC như thế nào, nhưng Microsoft không sử dụng chúng như là bộ tạo số mặc định (người dùng phải chỉnh một cờ trong registry để kích hoạt bộ tạo số này). RSA là một trường hợp rất thú vị. RSA bán một bộ thư viện mật mã mang tên là BSAFE và BSAFE sử dụng Dual EC là bộ tạo số mặc định. Nói cách khác, ai sử dụng sản phẩm của RSA coi như đã bị chính phủ Mỹ nắm đầu. Người ta còn phát hiện ra một hợp đồng bí mật trị giá 10 triệu USD mà NSA trả cho RSA để cài Dual EC vào BSAFE. Tóm lại chỉ có khùng (hoặc giả khùng ngậm tiền) mới tiếp tục sử dụng sản phẩm của RSA.

Cái cách mà Juniper sử dụng Dual EC cũng rất lý thú. Họ dùng nó một cách gián tiếp. Họ tạo ra một số ngẫu nhiên từ Dual EC, rồi sử dụng số đó để làm hạt giống cho một bộ tạo số khác, nhanh hơn, an toàn hơn và không có backdoor. Tại sao? Chẳng ai biết! Không có lý do gì để Juniper làm như vậy cả, ngoại trừ khi họ bị ép buộc phải sử dụng Dual EC (hoặc, như RSA, có hợp đồng bí mật với NSA). Đặc biệt nhất, Juniper không sử dụng Q do NSA chỉ định, mà lại tự định nghĩa một hằng số  Q' khác. Vấn đề là Juniper không thể chỉ ra Q' đã được tạo ra như thế nào. Không ai có bằng chứng chuyện gì đã diễn ra, nhưng chỉ có hai giả thuyết:

* Juniper tự tạo Q' cho riêng mình để loại trừ backdoor của NSA.

* NSA tạo Q' và yêu cầu Juniper sử dụng Q'.

Nhắc lại, chẳng có lý do chính đáng để sử dụng Dual EC, nên nếu Juniper muốn xóa backdoor, cách đơn giản hơn là không sử dụng Dual EC. Thành ra giả thuyết thứ hai có vẻ mạnh hơn. Có thể NSA không muốn gom tất cả trứng để vào một rổ, hoặc họ muốn chia sẻ backdoor trên thiết bị VPN của Juniper của họ với đối tác mà không muốn tiết lộ cách tạo Q, vì thông tin đó có liên quan đến backdoor ở nhiều thiết bị khác nữa, không riêng gì VPN.

Không ai biết Juniper bắt đầu sử dụng Dual EC từ khi nào, nhưng năm 2012 xảy ra một sự kiện quan trọng. Một nhân viên nào đó của Juniper hoặc một ai đó xâm nhập vào hệ thống của họ đã bí mật đổi Q' thành Q''. Juniper mới (?) phát hiện ra chuyện này cách đây vài tuần và thông báo của họ đã khơi nguồn cho bài blog này.

Ai đã đổi Q' thành Q''? Có phải Juniper mới phát hiện ra không, hay là họ đã biết từ lâu nhưng không nói gì? Tại sao lại chọn công bố ngay giữa lúc ở Mỹ đang có cuộc tranh luận lớn về chuyện chính phủ Mỹ có được quyền gài backdoor vào các tiêu chuẩn mật mã hay không?

Không có ai có đủ thông tin để trả lời những câu hỏi này. Tôi nghĩ chính NSA đã đổi Q' thành Q''. Nếu NSA kiểm soát Q' như đã bàn ở trên và vào năm 2012 một ai đó (Trung Quốc chẳng hạn) đổi Q' thành Q'', tức là backdoor của NSA đã bị vô hiệu hóa trong suốt 5 năm qua mà họ không hay biết gì sao? Tôi nghĩ khó có khả năng đó. Ngược lại, nếu NSA đổi Q' thành Q'' thì backdoor của họ vẫn còn hiệu lực trong suốt thời gian qua.

Khi phát hiện ra có người đổi Q' sang Q'', Juniper sửa lại bằng cách đổi trở lại Q'. Có thể họ có hợp đồng với NSA? Chẳng ai biết tại sao họ không bỏ Dual EC đi quách cho rồi! Hơn nữa, để khai thác được backdoor này, kẻ tấn công phải quan sát được r * Q, nhưng điều đó là không thể nếu như Juniper chỉ sử dụng Dual EC để tạo hạt giống cho một bộ tạo số khác (như đã nói ở trên). Vấn đề là trong mã nguồn của Juniper còn có một lổ hổng khác (một backdoor thứ ba, không biết được cài từ hồi nào) tiết lộ giá trị của r * Q. Juniper không hề đả động gì đến lổ hổng này trong các thông báo sửa lỗi của họ. Tại sao? Không ai biết cả.

Một vị quan chức ngành an toàn thông tin có lần hỏi tôi có nên tin tưởng các thiết bị của nước ngoài hay không. Tôi có nói xét ở bình diện an ninh quốc gia thì chẳng thể tin tưởng ai cả. Chỉ có cách duy nhất là tuyển dụng đào tạo đội ngũ kỹ sư lành nghề để họ xây dựng giải pháp dựa trên các nền tảng mở sẵn có.

Đối với doanh nghiệp thì thú thật tôi cũng không có giải pháp nào khác ngoại trừ việc thuê mướn đào tạo tuyển dụng chuyên gia. Doanh nghiệp nhỏ thì hi vọng là chẳng ai để ý đến mình, còn doanh nghiệp lớn, có làm ăn mua bán với nước ngoài thì chỉ có cách đầu tư mạnh để thu hút chất xám công nghệ mà thôi.

Nếu bạn thích những chủ đề như vầy, bạn nên mua vé tham dự TetCon 2016.

Chủ đề Chưa phân loại | Phản hồi »

19 năm một nốt mới

19 năm rồi mới lại viết vài nốt.

Chủ đề Âm Nhạc | Phản hồi »

Mini course ở VIASM

Tháng 1 tới tôi là một lớp mini ở VIASM. Thông tin có ở đây. Hy vọng gặp các bạn.

Chủ đề Cơ sở dữ liệu | 4 phản hồi »

ISI, tiêu chí thẩm định, và các động lực ngược

Phùng Hồ Hải, Ngô Quang Hưng
Bài đã đăng trên TBKTSG

Nhân vụ kiện liên quan đến một tạp chí khoa học chuyên ngành hẹp gần đây, chúng ta cần xem xét kỹ hơn về nguyên nhân sâu xa của sự kiện: đó là tiêu chí thẩm định chất lượng nghiên cứu khoa học trong giới hàn lâm của chúng ta hiện nay đã và đang có khả năng dẫn đến các động lực ngược (tạm dịch từ “perverse incentive” của Kinh tế học), làm cho đầu tư công vào nghiên cứu khoa học kém hiệu quả. Trong bài này chúng tôi điểm qua cách mà các nước tiên tiến thẩm định kết quả nghiên cứu khoa học, cách nước ta đang dùng, và cuối cùng đưa ra một vài đề xuất để thay đổi tiêu chí đánh giá chất lượng nghiên cứu. Những tiêu chí tốt sẽ tạo “động lực thuận” thúc đẩy chất lượng nghiên cứu khoa học nước nhà, ảnh hưởng trực tiếp đến hiệu suất đầu tư công vào nghiên cứu khoa học ở Việt Nam.

Đọc tiếp »

Chủ đề Chính sách, Chính trị trong ngành | Tagged , , | 1 phản hồi »

Tôi đi biểu tình ở Mỹ

Tôi đi biểu tình lần đầu là khi biểu tình tự phát chống chính quyền Trung Quốc nổ ra ở Sài Gòn vào năm 2007. Lần đó chẳng làm được gì, không biểu ngữ, không cờ phướn vì thiếu chuẩn bị, ra đến nơi cũng không hò hét được gì, vì cứ bị cảnh sát với dân phòng lùa hết chỗ này sang chỗ khác. Lần thứ hai tôi đi biểu tình, cũng lại là chống chính quyền Trung Quốc, là ngày hôm qua. Bọn tôi biểu tình trước lãnh sự quán Trung Quốc ở San Francisco (SF), rồi diễu hành gần hai cây số đến Union Square, quãng trường trung tâm thành phố.

Theo thông tin trên mạng thì muốn biểu tình phải xin giấy phép và nơi xin là sở cảnh sát San Francisco (SFPD), nên tôi gọi điện lên hỏi. Người ta hướng dẫn là chỉ cần lên điền một cái đơn theo mẫu là được. Hình như có thể nộp qua mạng, nhưng do làm lần đầu nên tôi muốn nộp đơn trực tiếp, để có thắc mắc gì thì hỏi luôn. Tôi cũng hơi lo lắng, không biết có nhận được giấy phép trước thời gian dự kiến của cuộc biểu tình hay không.

Đọc tiếp »

Chủ đề Chưa phân loại | 1 phản hồi »

Lập trình máy kỳ dị

Đồng nghiệp cũ của tôi ở Matasano mới làm một cái game rất thú vị, bạn nào muốn luyện kỹ năng dịch ngược mã và khai thác lỗi bộ nhớ thì nên xem: microcorruption.com.

Lâu lắm rồi tôi mới chơi game dạng này. Hồi trước tôi hay chơi CTF, nhưng mà CTF thường đòi hỏi phải tập trung liên tục trong vài ngày. Có lần tôi chơi liên tục ba ngày hai đêm, ngủ luôn ở công ty, sáng dậy thì đi bộ ra ăn hủ tíu gõ xong về chơi tiếp. Không tắm! Bây giờ thì không làm vậy được nữa. Với lại CTF nhiều khi đòi hỏi phải có những công cụ hay setup mà tôi không có sẵn, nên dần dà tôi cũng không còn mặn mà lắm.

Micro Corruption hay ở chỗ chỉ cần browser là chơi được và muốn chơi lúc nào cũng được. Mỗi ngày tôi chơi 1-2 tiếng, khi nào chán thì thôi, không phải chạy đua thời gian nên khá là thư giãn. Điều mà tôi thích nhất là game này có nhiều màn, bắt đầu từ rất dễ, mãi về sau mới có những mức khó hơn, thành ra mình có thể vừa chơi vừa học.

Đọc tiếp »

Chủ đề Chưa phân loại | 2 phản hồi »

Từ đại số đến bitcoin

Loạt bài này tôi viết chung với anh Ngô Quang Hưng. Một phiên bản của loạt bài này, bỏ những chỗ nhố nhăng của tôi ra, sẽ được gửi đăng trên Thời Báo Kinh Tế Sài Gòn. Những đoạn đánh dấu * là những đoạn có thể bỏ qua, mà không ảnh hưởng gì đến nội dung bài. Mời mọi người đọc và còm.

Cập nhật: bài này còn nhiều chỗ sai. Tôi đang sửa, nên nếu bạn muốn sao chép sang chỗ khác thì hãy đợi bản hoàn chỉnh nhé.

Satoshi xóm Đẻ

*Một trong những trò chơi yêu thích hồi nhỏ của tôi và đám bạn ở xóm là đánh bài ăn tiền. Kỳ thực đám con nít tụi tôi đâu có tiền thật nên tụi tôi đánh bài ăn những loại tiền tượng trưng, được chọn theo mùa. Một năm có rất nhiều mùa, một mùa kéo dài vài ba tuần hay vài tháng, cho đến khi một đứa trong bọn gom hết “tiền” của mùa đó thì cả đám chuyển sang mùa khác.

*Có mùa bọn tôi đánh bài ăn dây thun. Dây thun thường phải mua bằng tiền thật, nên bọn tôi cũng có hệ thống quy đổi, một trăm đồng là bao nhiêu cộng dây thun. Nhiều đứa, trong đó có tôi, nhịn ăn nhịn uống để bỏ tiền mua dây thun về chơi. Những đứa có nhiều dây thun, chúng thắt thành sợi to, quấn quanh người, vàng đỏ đủ màu, như người ta đeo vàng, trông rất đã.

Đọc tiếp »

Chủ đề Chưa phân loại | 5 phản hồi »

Bài báo có một cái hình thú vị

Hãy xem trang 15 của bài báo này bọn tôi mới upload lên ArXiV.

Chủ đề Vui - Giải Trí | Tagged | Phản hồi »

Một bài toán thú vị

Con trai của một người bạn gửi một bài toán rất thú vị:

Có 2013 con bài. Trên mỗi con bài người ta viết 1 số bất kỳ. Tất cả 2013 số này khác nhau. Người ta úp các con bài xuống. 1 bước đi cho phép người chơi chỉ ra 10 quân bài và sẽ được thông báo 1 trong các số được viết trên các con bài này (không biết vị trí số đó). Tìm số t lớn nhất để đảm bảo tìm được t con bài mà có thể biết được số nào được viết trên từng con bài đó.

Chủ đề Combinatorics | Tagged , | 6 phản hồi »

Trận cờ thế kỷ

Lâu không chơi cờ. Hôm nọ xem một trận Liêm đánh thì đúng trận thua. Tình cờ tìm được “trận đấu thế kỷ” giữa Bobby Fischer (lúc đó mới 13 tuổi) và Donald Byrne (thắng giải Mỹ ở rộng nhiều lần, sắp thành đại kiện tướng). Fischer bỏ Hậu, công phá liên hoàn đẹp đến ná thở — vào sách giáo khoa!

Chủ đề Vui - Giải Trí | Tagged , | 3 phản hồi »

Thời con nít đã xa.

Nhiều khi ngồi nghĩ lại chuyện hồi xưa đi học, tui mới nhận ra có những thứ lúc trước rất thông dụng, ai ai cũng xài, đi đâu cũng thấy, mà bây giờ đã biến mất tăm mất tích. Chẳng hạn tập Ba Cây Thông, thuộc hàng “có thương hiệu” lúc bấy giờ. Lúc đó mà được một quyển tập Ba Cây Thông 100 trang thì cứ gọi là sướng rơn, mà phải chi giấy trắng tinh tươm gì cho cam, chỉ thuộc hàng trắng ngà thôi. Nói đến độ trắng của giấy thì tập giấy đen bây giờ cũng không thấy nữa. Các em bây giờ đi học được viết trên giấy trắng chói cả mắt, làm gì biết đến tập giấy đen thui thùi lùi, viết bút chì lên thì cứ gọi là căng mắt ra mà đọc. Đặc biệt là tập giấy đen thì thông thường chỉ là tập 50 trang, hồi đó nhiều vô số kể, bây giờ cũng không thấy. Bây giờ bét ra thì cũng 100 trang, thông dụng đã là 200 trang rồi. Hồi xưa còn có vụ tập xài năm trước không hết, năm sau lôi ra cắt bỏ những trang đã viết rồi đế xài tiếp, mà còn ít trang quá thì đem ra đóng lại thành cuốn nháp. Lúc tui đi học, chắc mẹ tui cũng biết tính con mình hay quậy, chuyên môn xé tập nên mỗi lần cho tập mới là mẹ tui ngồi ghi số vô góc từng trang, thằng con mà xé giấy ra làm bì là bà biết liền. Mà đã nói về tập là phải nói về tạp chí Liên Xô và lịch tờ treo tường, vì những thứ đó được tận thu để làm giấy bao tập, bao sách. Lịch tờ treo tường bây giờ vẫn còn, nhưng tạp chí Liên Xô, giấy trắng bóng, màu sắc rực rõ, thì bây giờ không còn nữa.

Đọc tiếp »

Chủ đề Vui - Giải Trí | 9 phản hồi »

Đọc sách “nhanh”

Bạn Thành hỏi:

Thầy tư vấn giúp em về cách đọc một quyển sách thế nào cho hiệu quả và nhanh nhất có thể?mình có nên đọc nhanh hay không?

Theo tôi thì tuỳ theo đọc sách để làm gì. Xem lại bài năm mức ngu dốt. Đọc để chuyển lên mức 2OI thì đọc nhanh, lươn lướt cũng được. Còn muốn để lên 1OI hoặc 0OI thì cần nhiều thời gian lắm.

Tôi tạm chia mục tiêu đọc sách thành ba phạm trù:

  • Cưỡi ngựa xem hoa. Đọc lươn lướt để biết là trên đời này có cái như vậy. Như thế thì nhanh chậm không quan trọng.
  • Hiểu. Ta phải làm thế nào mà ta có thể gần như là tự xây dựng lại nội dung quyển sách mà không cần tham khảo sách. Tất nhiên là không phải tất cả mọi chi tiết, nhưng phải nắm hoàn toàn cái sườn, có thể tự tin là mình giải thích lại nội dung quyển sách cho người khác một cách logic với một tư duy tự nhiên! Để làm được điều này, khi đọc sách toán ta nên tự chứng minh các định lý trước khi đọc chứng minh; khi đọc sách lập trình ta nên … lập trình chứ không phải đọc để biết cú pháp.
  • Chuyên gia. Ta tạo ra kiến thức mới cho nhân loại, có thể đóng góp một chương/đề mục vào quyển sách. Để đến trình độ này thì ta không nên đọc sách chay. Ta tìm cách giải quyết một vấn đề nào đó trong phạm vi đề tài của sách, và hiểu là vấn đề của mình khớp vào cái dòng chảy tri thức của sách như thế nào.

Những quyển sách đáng đọc không bao giờ có thể đọc một lần là hiểu.

Chủ đề Giáo dục | Tagged | 6 phản hồi »

Mickey Mouse ở Việt Nam

Chủ đề Lịch Sử | Tagged , | 4 phản hồi »

Định lý Gale-Ryser

1. Định lý Gale-Ryser

Định lý Gale-Ryser là một trong những định lý cổ điển của toán Tổ Hợp. Định lý này trả lời câu hỏi sau đây:

Cho trước hai vectors \mathbf r = (r_1,\dots, r_m)\mathbf c = (c_1,\dots,c_n) gồm các số nguyên dương. Có tồn tại một ma trận nhị phân \mathbf A = (a_{ij}) \in \{0,1\}^{m \times n} gồm m hàng và n cột, sao cho tổng hàng thứ i của \mathbf Ar_i và tổng cột thứ j của \mathbf Ac_j. Câu hỏi này tương đương với câu hỏi liệu có tồn tại đồ thị hai phần (bipartite graph) cho trước bậc của các đỉnh.

Đọc tiếp »

Chủ đề Combinatorics, Python, Thuật Toán | Tagged , | 6 phản hồi »

Học Thế Nào

Các bạn đóng góp ý kiến, thảo luận, và bài vở cho trang này của các bác NBC, VHV, PT, nhé!

Chủ đề Tin tức đó đây | Tagged , , , | Phản hồi »