[Powered by Google Translate] [Tuần 10] [David J. Malan] [Đại học Harvard] [Đây là CS50.] [CS50.TV] Được rồi! Đây là CS50 nhưng không kéo dài lâu nữa. Đây là sự bắt đầu của tuần 10. Hôm thứ tư, chúng tôi đã của chúng tôi bài kiểm tra, và sau đó vào thứ hai tới, chúng tôi có một số bánh ăn mừng khi chúng ta đến vòng tròn đầy đủ tất cả các cách trở lại từ con số không tuần. Hôm nay, chúng ta nói về một trong những chủ đề yêu thích của tôi, sự thật mà nói - an ninh và sự riêng tư và những tác động của tất cả các phần cứng và phần mềm tất cả chúng ta đều sử dụng những ngày này. Thành thật mà nói, có rất nhiều mối đe dọa ra có rằng nếu bạn không thực sự dừng lại để suy nghĩ về chúng, họ đang thực sự khá khó khăn. Trường hợp tại điểm - nếu có của bạn đã bao giờ tải về một phần mềm tắt của Internet và cài đặt nó trên máy tính của bạn, bạn đã tham gia vào một mức độ đáng kể của sự tin tưởng, phải không? Không có gì ngăn chặn Skype, hoặc Chrome, hoặc một phần bất kỳ phần mềm bạn đã cài đặt vào máy tính của bạn, chỉ đơn giản là xóa tất cả các tập tin trên ổ đĩa cứng của bạn; tải lên tất cả các tập tin trên ổ đĩa cứng của bạn đến máy chủ của một số kẻ xấu; đọc tất cả các email của bạn, ngăn chặn tất cả các tin nhắn của bạn. Bởi vì thực tế là ngày hôm nay với hầu hết các hệ điều hành hiện đại có thực sự là không nhiều của một bức tường giữa các chương trình phần mềm mà chúng tôi cài đặt, bạn và tôi đang có khá nhiều chỉ cần loại qua các ngón tay của chúng tôi và tham gia vào đức tin rằng ứng dụng của chúng ta tải về miễn phí, hoặc điều mà đó là 99 cent, thực sự là hoàn toàn lành tính. Nhưng như chúng ta đã nhìn thấy thông qua C, và bây giờ PHP và JavaScript, với khả năng thể hiện bản thân chương trình, bạn có thể làm bất cứ điều gì nhất mà bạn muốn với một chương trình mà người dùng tự mình hoặc mình có thể làm. Vì vậy, hôm nay chúng tôi tập trung vào chủ đề đó - không chỉ có một số mối đe dọa mà còn phòng thủ. Thật vậy, trong thế giới an ninh nói chung, có loại trò chơi mèo vờn chuột này, và tôi dám khẳng định những kẻ xấu hầu như luôn luôn có một chân lên. Khi nói đến việc tận dụng lợi thế của phần cứng và phần mềm trên máy tính cá nhân của riêng của chúng tôi, chúng ta phải nhận ra rằng một kẻ xấu đơn giản chỉ cần tìm thấy một sai lầm đơn giản - 1 khai thác, một lỗi trong một mảnh của phần mềm chúng tôi đã viết hoặc đang chạy để anh ấy hoặc cô ấy để tiếp nhận toàn bộ hệ thống của chúng tôi. Ngược lại, chúng tôi - cả tốt guys - cần phải vá và sửa chữa tất cả những lỗi và tránh tất cả những điểm yếu. Và như vậy, tôi dám khẳng định trên toàn bộ, những kẻ xấu có lợi thế. Các lớp học như thế này và các lớp học tiếp theo thực sự về không về giảng dạy bạn làm thế nào để phát động các cuộc chiến mà những kẻ xấu làm, nhưng làm thế nào để bảo vệ mình hoặc ít nhất là làm thế nào để thực hiện một quyết định tính rằng có, tôi biết phần của phần mềm này thực sự có thể đọc tất cả các email của tôi, nhưng tôi ý với điều đó bởi vì giá trị nó mang lại cho tôi mặt khác. Tôi rất vui mừng được tham gia 2 của những người thông minh nhất tôi biết - Rob Bowden và Nate hardison. Rob là về để đưa chúng ta cho một tour du lịch thông qua mức thấp nhất của thẻ an ninh - của trình biên dịch đó, cho đến bây giờ, chúng tôi đã có tất cả đến với tình yêu và tin tưởng. Rob Bowden. [Vỗ tay] Rob rồi. David có khá nhiều spiel toàn bộ của tôi rằng tôi sẽ giới thiệu với, nhưng - Cách đây vài tuần, bạn đã thấy ví dụ về một cuộc tấn công tràn bộ đệm là một ví dụ của một hacking của hacker vào một số phần của phần mềm rằng họ không phải là nghĩa vụ phải được hack vào. Phía bên kia của điều này đôi khi bạn có phần mềm độc hại trong và của chính nó. Nó thậm chí không cần phải bị hack. Người đã viết phần mềm muốn hack bạn. Hãy chỉ cần nhảy ngay vào mã, một cái nhìn tại "login.c". Ở đây, một chương trình ngớ ngẩn mà xác nhận sự kết hợp một tên người dùng và mật khẩu. Tại đây, bạn chắc chắn nên được thoải mái với C một lần nữa cho bài kiểm tra. Trước tiên, chúng tôi đang sử dụng có những chuỗi mô tả tên người dùng, sau đó chúng tôi đang sử dụng chuỗi get để lấy mật khẩu, và sau đó chúng tôi có một số kiểm tra tầm thường chỉ là tên người dùng "cướp"? Và là mật khẩu "thisiscs50"? Hoặc, là tên người dùng "tommy" và mật khẩu "i <3javascript"? Nếu một trong những người là trường hợp,  sau đó chúng ta chỉ cần đi để in "thành công", và sau đó chúng ta có thể truy cập. Nếu không, chúng ta sẽ in "không hợp lệ đăng nhập" và sau đó, tất nhiên,  kể từ khi bộ nhớ chuỗi malloc phác thảo, chúng tôi miễn phí tên người dùng và mật khẩu. Đây là một chương trình đăng nhập tầm thường, và nếu bạn nghĩ về khi bạn đăng nhập vào thiết bị, đó là khá tương tự hoặc thậm chí đăng nhập vào máy tính của bạn - chỉ có một số chương trình đăng nhập được cung cấp cho bạn truy cập. Ở đây, chúng tôi xảy ra để có mã hóa cứng 'cướp', 'thisiscs50', 'tommy', 'i <3javascript', nhưng có lẽ có một số tập tin một nơi nào đó trên hệ điều hành của bạn trong đó có một danh sách tên người dùng có thể đăng nhập vào hệ thống và một danh sách các mật khẩu liên kết với những tên người dùng. Thông thường các mật khẩu được không chỉ được lưu giữ trong bản rõ như thế này. Có một số loại mã hóa, nhưng điều này sẽ làm cho ví dụ của chúng ta. Đến để trình biên dịch của chúng tôi - nó sẽ là rất đơn giản. Chúng tôi cần phải xác định ít nhất một số tập tin mà chúng tôi muốn biên dịch, và sau đó ở đây - những dòng này chỉ cần đọc một tập tin A. Nó đọc toàn bộ tập tin vào bộ đệm lớn, và sau đó chúng tôi null-chấm dứt đệm của chúng tôi như mọi khi, và cuối cùng chúng tôi chỉ cần biên dịch tập tin. Chúng tôi sẽ không nhìn vào cách biên dịch được thực sự thực hiện, nhưng như là một gợi ý, chỉ cần gọi Clang. Chúng ta sẽ sử dụng chương trình này để biên dịch những thứ thay vì Clang. Một trong những vấn đề chúng ta bắt đầu với chúng ta thấy chúng ta muốn biên dịch trình biên dịch của chúng tôi, nhưng nếu chúng ta không sử dụng Clang, tôi không biết những gì tôi sẽ biên dịch với. Đây là vấn đề chung được biết đến như bootstrapping. Vì vậy, chỉ lần này thôi, tôi sẽ sử dụng Clang biên dịch trình biên dịch của chúng tôi. Nếu bạn nghĩ rằng GCC và Clang - những chương trình, những trình biên dịch được liên tục được cập nhật, và những trình biên dịch được biên dịch bằng cách sử dụng GCC và Clang. Clang là chỉ một C hoặc C + + chương trình, nên trình biên dịch, họ sử dụng để biên dịch rằng Clang. Ở đây, bây giờ, chúng tôi chỉ có được bằng cách sử dụng trình biên dịch của chúng tôi biên dịch trình biên dịch của chúng tôi, và chúng tôi thậm chí có thể nói - / biên dịch. ',' compiler.c ',' compile.c ',' trình biên dịch o-'. Chú ý đây là lệnh chính xác tôi chạy trước - chỉ cần thay thế Clang với '/ biên dịch.'. Và bây giờ chúng tôi có một trình biên dịch, nhưng nó chính xác như nhau. Nó chỉ cần gọi Clang. Chúng ta sẽ sử dụng trình biên dịch của chúng tôi để biên dịch chương trình đăng nhập của chúng tôi. Được rồi - "/ trình biên dịch login.c-o đăng nhập". Vì vậy, không xác định tham chiếu "GetString". Có một "-lcs50". Okay. Vì vậy, bây giờ tôi có chương trình đăng nhập của chúng tôi. Chạy nó - nhận được "Hãy nhập tên người dùng của bạn". Một ví dụ là cướp. Xin vui lòng nhập mật khẩu của bạn - thisiscs50. Và thành công! Tôi có thể truy cập. Chạy nó một lần nữa và vào một số mật khẩu không hợp lệ - hoặc không hợp lệ tên người dùng và mật khẩu - không hợp lệ đăng nhập. Okay. Không có gì thú vị về điều này cho đến nay. Tuy nhiên, chúng ta hãy có một cái nhìn lúc đăng nhập một lần nữa - và điều này là có được một ví dụ hơi tầm thường, nhưng chúng ta hãy thêm một người nào khác ở đây và nói, nếu người nào khác ((strcmp (tên người dùng, "hacker") == 0 && strcmp (mật khẩu, "LOLihackyou") == 0)) vì vậy bây giờ, printf ("Hacked Bây giờ bạn có thể truy cập \ n!"); okay. Biên dịch - biên dịch login.c-o login-lcs50 - bây giờ chạy đăng nhập - và nếu tôi sử dụng tên đăng nhập của hacker và mật khẩu LOLihackedyou - Tôi gõ sai trong đó trước khi? Tại login.c--ihack - sẽ không bị tấn công bởi vì tôi nghĩ rằng tôi làm điều đó sau. Okay. Biên dịch lại. Re chạy hacker - LOLihackedyou - Bị hack! Bây giờ bạn có thể truy cập. Có vẻ như không được rằng có rất nhiều sự khác biệt bởi vì đó là việc kiểm tra chính xác cùng tôi đã làm cho tên người dùng và mật khẩu khác. Thêm vào đó, điều lớn là nếu những người khác nhìn này login.c - nói, nếu tôi vượt qua được điều này để đối tác của tôi, và họ mở tập tin này, và họ đọc này, họ sẽ thấy sao, tại sao bạn có các dòng mã ở đây? Điều đó rõ ràng không phải là một cái gì đó mà phải ở trong chương trình của bạn. Trong một số chương trình giống như bất kỳ phần mềm độc quyền đó không phải là mã nguồn mở - bạn không bao giờ có thể nhìn thấy những dòng mã. Một cái gì đó giống như Skype hoặc một cái gì đó cho tất cả các bạn biết, Skype trên máy tính của bạn và đó chỉ là sự kết hợp một số tên người dùng, mật khẩu cụ thể mà sẽ đăng nhập vào Skype trong một số cách đặc biệt. Chúng ta không biết về nó, và mọi người không biết về nó, bởi vì họ không nhận được để đọc sourcecode để thấy rằng có lỗ hổng này. Những gì chúng ta gọi điều này - mặc dù điều này không phải là một ví dụ rất thông minh - này được gọi là một cửa sau. Nếu bạn nghĩ rằng các cửa sau của ngôi nhà của bạn. Ở đây, nếu tôi xác nhận với 'cướp' tên người dùng hoặc 'tommy, sẽ như thế nào bằng cách sử dụng "cửa trước". Đó là cách tôi là nghĩa vụ đăng nhập an toàn. Nhưng nếu tôi nhập với tên người dùng và mật khẩu - sau đó sử dụng "cửa sau". Nó không phải là cách có chủ ý để có được vào chương trình, nhưng nó vẫn hoạt động. Và người dân nói chung không nên biết về những cửa trở lại. Chúng tôi sẽ cải thiện điều này. Hãy trở lại này login.c ban đầu của chúng tôi, và chúng ta hãy nhìn vào trình biên dịch mới của chúng tôi. Okay. Tất cả mọi thứ ở đây là chính xác như nhau. Chúng tôi đang đọc toàn bộ tập tin vào một bộ đệm. Nhưng ở đây là như nhau. Chúng tôi đã biên dịch các tập tin. Nhưng bây giờ tôi đã lớn, nếu ở đây nói rằng, nếu các tập tin mà tôi tình cờ được biên dịch là login.c, sau đó tôi làm một cái gì đó đặc biệt. Một điều gì đó đặc biệt là gì? Tôi thấy ở đây một số chuỗi được gọi là 'hack', và nhìn vào các dòng mã - đây là cùng một dòng của mã - Tôi đoán tôi đã sử dụng 'ihack' và không 'ihacked' trước nhìn vào các dòng mã, họ chính xác các dòng cùng một mã mà tôi đã có trong login.c trước. Nhưng bây giờ, thay vì có chúng trong login.c, Tôi sẽ đặt chúng vào trình biên dịch của tôi. Đây là những dòng mã tôi sẽ muốn chèn vào login.c. Các dòng mã bộ đệm mà ban đầu nắm login.c của tôi không còn phải đủ lớn vì bây giờ tôi cũng muốn chèn hack này vào giữa chương trình của tôi. Tất cả những điều này đang làm là tạo ra một bộ đệm mới đủ lớn - cho cả file gốc và thêm dòng mã hack mà tôi muốn để chèn đó. Dưới đây là một cái gì đó để thông báo - char * pattern = "/ / từ chối họ truy cập!" Nếu chúng ta nhìn lại tại login.c, chúng ta thấy ở đây nhận xét này - từ chối họ truy cập! Trong login.c, nhận xét này trông hoàn toàn vô hại, vì vậy bạn sẽ không nghi ngờ bất kỳ mục đích hiểm độc chỉ với bình luận này. Nhưng trong trình biên dịch của chúng tôi, chúng tôi được cụ thể sẽ tìm kiếm dòng mã này, và sau đó khi chúng tôi tìm thấy nó - các dòng mã đang chèn xe cho thuê của chúng tôi vào vị trí đó. Vì vậy, chúng tôi đang lặp lại trên toàn bộ login.c, chúng tôi đang chèn hack chính xác nơi nó nói từ chối họ truy cập, và sau đó chúng tôi đang biên soạn - không phải là login.c gốc nhưng login.c mới với hack chèn ngay tại 'từ chối họ truy cập. Bây giờ tôi muốn biên dịch trình biên dịch mới của tôi với hack liên quan. Tôi sẽ không sử dụng Clang, vì vậy hãy sao chép các trình biên dịch, chúng tôi đã sử dụng trước và sử dụng - vì vậy, trình biên dịch compiler.c compile.c-o evil_compiler. Bây giờ trình biên dịch của chúng tôi ác - nếu chúng tôi sử dụng trình biên dịch ác của chúng tôi để biên dịch bất kỳ tập tin khác, các tập tin sẽ biên dịch như nó phải. Đó là hoàn toàn bình thường. Nhưng nếu chúng ta sử dụng trình biên dịch ác của chúng tôi để biên dịch đăng nhập - như vậy, / evil_compiler login.c-o login-lcs50 - nhìn tại login.c một lần nữa, có hoàn toàn không có gì ở đây. Mọi người thường của chúng tôi nếu nó hoặc là cướp hoặc tommy chúng ta đang ở, khác chúng ta '. Nhưng khi chúng tôi chạy thực thi của chúng tôi, điều này sẽ làm việc như bình thường. Chạy lại hacker, LOLihackyou - Bị hack! Bây giờ bạn có thể truy cập. Chỉ cần nhìn vào login.c, bạn sẽ không nghĩ rằng bất cứ điều gì là sai. Tuy nhiên, trình biên dịch đang được sử dụng để biên dịch login.c được thiết kế đặc biệt để chèn hack này vào chương trình. Chúng tôi đã chỉ di chuyển vấn đề ban đầu của chúng tôi. Ban đầu, chúng tôi đã có các dòng mã trong login.c rằng nếu bất cứ ai khác nhìn họ, họ muốn được như thế, tại sao những ở đây? Bây giờ nếu có ai nhìn vào trình biên dịch của chúng tôi, họ sẽ xem xét các dòng mã và nói, tại sao có những ở đây? Vì vậy, chúng tôi đã không hoàn toàn giải quyết vấn đề của chúng tôi. Nhưng chúng ta có thể sử dụng ý tưởng này một lần nữa. Nhìn vào phiên bản thứ ba của chúng ta về trình biên dịch, đó là ý tưởng tương tự. Chúng ta đọc toàn bộ tập tin vào một bộ đệm lên ở đây, chúng tôi biên dịch các tập tin ở đây, và tôi có một số loại hack chuỗi ở đây, nhưng nhận thấy các tập tin rằng tôi thực sự hack bây giờ. Tôi hacking compiler.c không login.c. Nhưng những gì tôi chèn vào compiler.c? Tôi đang chèn mã này là mã chính xác trong trình biên dịch trước đây của chúng tôi, được có nghĩa là để chèn mã vào login.c. Ở đây là nếu strcmp login.c tập tin của chúng tôi và sau đó chèn vào thứ login.c cho thuê của chúng tôi. Trình biên dịch mới này được thiết kế để tạo ra một trình biên dịch được thiết kế để biên dịch thông tin đăng nhập độc hại. Chúng ta sẽ thấy tại sao giúp chúng ta. Mọi thứ khác là như nhau, do đó, nó hoạt động chính xác như nó đã làm việc với trình biên dịch trước đây của chúng tôi. Chúng tôi chỉ iterating trên compile.c toàn bộ của chúng tôi. Nhưng giờ đây, thay vì tìm kiếm cho 'từ chối họ truy cập, chúng tôi đang tìm kiếm 'biên dịch tập tin. Trường hợp là biên dịch các tập tin? Compiler.c của chúng tôi hoàn toàn vô tội, nó phải xuống đây ở phía dưới. Nhận xét này - biên dịch tập tin - một lần nữa, trông hoàn toàn vô hại. Tuy nhiên, trong phiên bản độc hại của chúng ta về trình biên dịch, chúng tôi sẽ ngay trước khi nhận xét đó chèn mã này mà là để dành để chèn mã khi biên dịch login.c. Có rất nhiều mức độ về mình ở đây. Hãy thực sự chạy. Một lần nữa, chúng tôi sẽ sao chép trình biên dịch ban đầu của chúng tôi. Bây giờ, biên dịch - biên dịch compiler.c compile.c-o evilest_compiler - và bây giờ evilest_compiler. Evilest trình biên dịch - nếu chúng ta sử dụng để biên dịch trình biên dịch của chúng tôi, chúng ta hãy thực sự nhìn. Evilest_compiler đưa nó qua, tất cả các cách trở lại với phiên bản 1 của trình biên dịch của chúng tôi - phiên bản 1 của trình biên dịch của chúng tôi vừa được đọc trong tập tin và biên dịch nó. Ở đây, chúng ta biết rằng evilest_compiler - khi nó biên dịch tập tin này - sẽ để chèn mã ngay tại đây trước khi biên dịch tập tin, và rằng mã sẽ trông giống hệt như mã từ phiên bản thứ hai của trình biên dịch của chúng tôi đã làm điều này. Mã này, được dự định để phá vỡ vào tên đăng nhập, sẽ được chèn vào trình biên dịch của chúng tôi bằng cách evilest trình biên dịch. Hãy sử dụng evilest_compiler biên dịch trình biên dịch của chúng tôi. Bây giờ chúng ta sẽ sử dụng trình biên dịch, trở lại để đăng nhập và nhớ login.c này có hoàn toàn không có gì đáng ngờ trong nó. Tuy nhiên, bằng cách sử dụng trình biên dịch của chúng tôi biên dịch login.c, cướp, thisiscs50, thành công. Hãy đăng nhập của hacker, LOLihackyou, Hacked! Bây giờ bạn có thể truy cập. Nhận ra rằng điều này là khác nhau từ phiên bản 2 của trình biên dịch của chúng tôi. Trình biên dịch, chúng tôi sử dụng để di chuyển trở lại bản sao từ đăng nhập - chúng ta hãy mang lại cho trình biên dịch của chúng tôi ở đây. Loại bỏ trình biên dịch evilest. Tất cả chúng tôi đã còn lại bây giờ là trình biên dịch. Nếu chúng ta nhìn tại compiler.c, có hoàn toàn không có gì trong đó mà dường như độc hại trong bất kỳ cách nào. Nếu chúng ta nhìn tại login.c, có hoàn toàn không có gì ở đây mà trông độc hại trong bất kỳ cách nào. Tuy nhiên, khi chúng ta sử dụng trình biên dịch của chúng tôi biên dịch login.c, chúng tôi có được phiên bản hack của login.c. Khi chúng ta sử dụng trình biên dịch của chúng tôi để biên dịch một phiên bản mới của trình biên dịch, chúng tôi có được phiên bản hack của trình biên dịch. Bây giờ nếu chúng tôi đi ra ngoài và phân phối thực thi trình biên dịch của chúng tôi, và không ai sẽ biết rằng có độc hại là bất cứ điều gì về nó. Điều này thực sự là như vậy - Tôi không thể nhớ năm - Ken Thompson, và anh đã giành được giải thưởng Turing - nếu bạn không quen với các giải thưởng Turing, nó hầu như luôn luôn được định nghĩa là Giải Nobel khoa học máy tính, vì vậy đó là làm thế nào tôi sẽ xác định nó. Ken Thompson đã đưa ra một bài phát biểu khi ông nhận được giải thưởng Turing của mình được gọi là "phản ánh về tin tưởng Tin tưởng vào". Về cơ bản, đây là ý tưởng của bài phát biểu của mình. Ngoại trừ thay vì của trình biên dịch của chúng tôi, ông đã nói về GCC - chỉ cần một trình biên dịch như Clang - và những gì ông nói, giống như login.c của chúng tôi, login.c của chúng tôi có vẻ tương đối vô dụng nhưng ông đã nói thực tế UNIX login.c. Khi bạn đăng nhập vào thiết bị của bạn, có một số chương trình đăng nhập đang chạy. Đó là đăng nhập mà ông đã nói về. Điều này về cơ bản là ý tưởng của ông. Ông nói rằng trong GCC, ông về mặt lý thuyết có thể trồng một lỗi không phải là một lỗi nhưng mã độc hại - rằng khi biên dịch chức năng đăng nhập các tập tin đăng nhập - sẽ chèn một cánh cửa trở lại để ông có thể đi hoàn toàn bất kỳ hệ thống UNIX trên thế giới và đăng nhập với một số tên người dùng và mật khẩu cụ thể. Vào thời điểm đó, GCC đã được khá nhiều trình biên dịch mà tất cả mọi người được sử dụng cho bất cứ điều gì. Nếu có ai xảy ra để cập nhật GCC, sau đó họ sẽ biên dịch lại GCC bằng cách sử dụng GCC, và bạn vẫn sẽ nhận được một phiên bản xấu của GCC vì nó đã được biên dịch để nhận ra rằng nó đã được biên dịch lại các trình biên dịch. Và nếu bạn đã từng sử dụng GCC để biên dịch lại một tập tin login.c, sau đó nó sẽ chèn cửa sau này rằng ông có thể sử dụng để đăng nhập vào bất kỳ máy tính nào. Đây là tất cả những lý thuyết, nhưng hoàn cảnh đặc biệt là lý thuyết, nhưng những ý tưởng rất thực tế. Trong năm 2003, đã có một ví dụ tương tự - chúng ta sẽ nhìn vào tập tin này, và nó có hoàn toàn không có gì để thực sự làm gì với nó, nhưng lỗi này là tương tự. Tập tin này chỉ định nghĩa một chức năng được gọi là phân chia. Nó có một đối số a, b đối số, và mục đích là để làm một chia cho b. Tuy nhiên, hiện một số kiểm tra lỗi, vì vậy chúng tôi biết những điều là lạ nếu b sẽ xảy ra bằng số không. Nếu b là số không, sau đó chúng tôi chia thành 2 trường hợp. Bạn đã có thể nhìn thấy các lỗi. Trường hợp đầu tiên - nếu là số không, sau đó chúng tôi đang làm không chia cho số không, và chúng tôi chỉ nói rằng đó là không xác định. Trường hợp thứ hai - nếu không phải là số không, sau đó nó là một cái gì đó giống như 1 chia cho số không, và chúng tôi chỉ gọi đó là vô cực. Khác, chúng tôi trở lại bình thường một chia cho b. Và ở đây, chúng tôi đang chạy 3 trường hợp, và chúng tôi thực sự chạy phân chia - nó hét lên với nó cho tôi - như vậy, bỏ qua cảnh báo Clang - cuối chức năng không có khoảng trống - dường như tôi đã không biên dịch trước. Trở về 0. Hãy chia - tất cả các quyền. Với phân chia /, chúng ta thấy 3, Infinity, Infinity. Bằng không chia số không không nên đã trở lại vô cùng. Và nếu bạn không tìm ra lỗi hoặc không nhìn thấy nó trước khi - chúng tôi thấy rằng chúng tôi đang làm a = 0. Có lẽ chúng ta có nghĩa là một == 0. Cũng có thể. Tuy nhiên, điều này thực sự là một cái gì đó, một lần nữa, vào năm 2003, hạt nhân Linux do đó, thiết bị của chúng tôi sử dụng hạt nhân Linux bất kỳ hệ điều hành Linux sử dụng hạt nhân Linux do đó, một lỗi rất tương tự như này cho thấy lên. Ý tưởng đằng sau lỗi này là - một lần nữa, chỉ là một số chức năng mà được gọi là, và nó đã làm một bit kiểm tra lỗi. Có một số yếu tố đầu vào cụ thể rằng điều này kiểm tra lỗi - nó cần phải có được như thế, tất cả các quyền, bạn không thể gọi chức năng này với một ước của 0. Vì vậy, tôi sẽ chỉ trả lại một số lỗi. Ngoại trừ, đó không phải là ngây thơ như chỉ cần đặt một bằng 0. Thay vào đó, dòng mã này kết thúc lên làm một cái gì đó giống như người sử dụng = quản trị viên. Hoặc người sử dụng siêu người dùng. Đó là một người vô tội ở cái nhìn đầu tiên - sai lầm nơi nó có thể chỉ cần được hợp lý rằng tôi chỉ muốn báo cáo một cái gì đó cụ thể nếu người sử dụng đã xảy ra là quản trị viên superuser. Nhưng sau đó lại suy nghĩ về nó, người muốn cho nó trông giống như một lỗi đánh máy đơn giản, nhưng nếu mã này đã thực sự được phát hành, sau đó bạn sẽ có thể hack vào bất kỳ hệ thống bằng cách gởi một lá cờ cụ thể - trong trường hợp này b = 0 - và nó sẽ tự động làm cho người dùng quản trị, và sau đó ông có toàn quyền kiểm soát. Điều này xảy ra vào năm 2003. Nó chỉ như vậy xảy ra rằng lý do duy nhất nó bị bắt là bởi vì đã xảy ra được một số hệ thống tự động nhận thấy sự thay đổi trong tập tin này mà không bao giờ cần phải có được thay đổi bởi một con người. Các tập tin chỉ cần phải có được tự động tạo ra. Nó chỉ như vậy xảy ra mà một người nào đó chạm vào - tốt, người mà muốn để hack chạm vào tập tin đó, và các máy tính bị bắt mà chạm vào. Vì vậy, họ đã thay đổi và chỉ sau đó nhận ra nó đã có một thảm họa nếu điều này đã nhận được vào thế giới thực. Bạn có thể nghĩ rằng trở lại ví dụ trình biên dịch của chúng tôi - mặc dù chúng ta không thể nhìn thấy tại sourcecode - rằng bất cứ điều gì đặc biệt là sai, nếu chúng ta thực sự nhìn vào các mã nhị phân của trình biên dịch, chúng ta sẽ thấy rằng cái gì là sai. Ví dụ, nếu chúng ta chạy các dây chức năng - mà chỉ là để xem qua một tập tin và in ra tất cả các chuỗi có thể tìm thấy - nếu chúng ta chạy dây trên trình biên dịch của chúng tôi, chúng ta thấy rằng một trong những chuỗi mà nó tìm thấy là lạ - if (strcmp (tên người dùng, "hacker") - blah, blah, blah. Nếu một người nào đó đã xảy ra với hoang tưởng, đủ để không tin tưởng trình biên dịch của họ, họ có thể chạy dây và thấy điều này, và sau đó họ sẽ biết rằng có một cái gì đó sai với nhị phân thực tế. Tuy nhiên, dây chắc chắn một cái gì đó đã được biên dịch. Vì vậy, là để nói rằng trình biên dịch của chúng tôi không chỉ có mã đặc biệt hơn nữa nói rằng, nếu dây là bao giờ chạy vào trình biên dịch của chúng tôi, không sản xuất tất cả các mã độc hại. Cùng một ý tưởng nếu chúng ta muốn dis-lắp ráp các tập tin - chúng tôi đã học được rằng lắp ráp mang lại cho chúng ta từ mã lắp ráp một mã máy chúng ta có thể đi theo hướng ngược lại - objdump-d trình biên dịch - sẽ cho chúng ta lắp ráp mã của chúng tôi. Nhìn này, nó khá khó hiểu, nhưng nếu chúng ta muốn, chúng ta có thể xem xét thông qua và lý trí, chờ đợi, có một cái gì đó xảy ra ở đây không nên xảy ra, và sau đó chúng ta sẽ nhận ra rằng trình biên dịch là làm một cái gì đó độc hại. Tuy nhiên, giống như chuỗi, là để nói objdump cũng không đặc biệt-cased. Về cơ bản, nó đi xuống đến bạn không thể tin tưởng bất cứ điều gì. Điểm của bài báo được gọi là "Tin tưởng vào Trust" nói chung, chúng tôi tin tưởng trình biên dịch của chúng tôi. Bạn biên dịch mã của bạn và mong đợi nó để làm những gì bạn yêu cầu nó để làm. Tuy nhiên, lý do tại sao bạn nên tin tưởng vào trình biên dịch? Bạn đã không viết trình biên dịch. Bạn không biết những gì các trình biên dịch cần thiết phải được thực sự làm. Ai nói rằng bạn có thể tin tưởng nó? Nhưng thậm chí sau đó, tốt, có lẽ chúng ta có thể tin tưởng vào trình biên dịch. Có hàng chục ngàn người đã nhìn này. Có người phải đã nhận ra một cái gì đó với trình biên dịch. Điều gì sẽ xảy ra nếu chúng ta chỉ cần đi 1 mức độ sâu sắc hơn? Nó thậm chí có thể được xử lý của bạn. Cũng vô lý vì nó có thể có thể được, có thể có một số nhân viên rogue tại Intel, những người tạo ra những bộ vi xử lý rằng bất cứ khi nào xử lý mà thông báo rằng bạn đang chạy một số lệnh có nghĩa là để đăng nhập vào máy tính, bộ vi xử lý sẽ không chấp nhận một số tên người dùng cụ thể và sự kết hợp mật khẩu. Nó sẽ được cực kỳ phức tạp, nhưng ai đó có thể làm điều đó. Vào thời điểm đó, bạn thực sự sẽ mở ra máy tính của bạn để nhìn vào bộ vi xử lý và sử dụng một kính hiển vi để nhận ra rằng các mạch không được xếp hàng như họ nên được? Không ai bao giờ sẽ bắt lỗi đó. Tại một số điểm, bạn chỉ cần có để cho lên và tin tưởng một cái gì đó. Hầu hết mọi người tin tưởng vào trình biên dịch tại thời điểm này. Đó là để nói rằng không nhất thiết là bạn nên dùng. Nhìn vào một video hơi khét tiếng - [Kịch sân chơi âm nhạc] [Đó là một hệ thống UNIX. Tôi biết điều này.] [Đó là tất cả các tập tin -] Cô nói, "Đó là một hệ thống UNIX Tôi biết điều này." Thay thế UNIX với bất cứ hệ điều hành ưa thích của bạn là - cô có thể nói, "Đó là một hệ thống Windows Tôi biết điều này." Đó là một tuyên bố hoàn toàn vô nghĩa, nhưng đối với tất cả chúng ta biết, cô ấy xảy ra cho biết một cánh cửa trở lại vào hệ thống UNIX. Cô ấy biết một số kết hợp tên người dùng / mật khẩu mà thực sự sẽ cho phép làm bất cứ điều gì cô ấy muốn. Được rồi. Đạo đức của ngày hôm nay là về cơ bản bạn không thể tin tưởng bất cứ điều gì. Ngay cả những chuyện bạn viết - bạn không viết các trình biên dịch. Trình biên dịch có thể là xấu. Thậm chí nếu bạn đã viết trình biên dịch, điều đó là chạy trình biên dịch có thể là xấu. (Cười) Không có nhiều bạn có thể làm. Thế giới đang phải chịu số phận bi đát. Sao David [Vỗ tay] [David]. Đó là thực sự thất vọng. Nhưng thực sự, Rob là chính xác. Chúng tôi không thực sự có một giải pháp đó, nhưng bạn đang về để nhận được một số giải pháp một số phòng thủ phổ biến hơn. Trong dự đoán này, Nate và tôi đã được làm sân khấu có là biết rằng có rất nhiều máy tính xách tay trong căn phòng này, chúng tôi đã đánh hơi tất cả các lưu lượng truy cập không dây đi qua căn phòng này trong 20 phút vừa qua trong thời gian nói chuyện của Rob, do đó, chúng ta sẽ để mất một break 2 phút ở đây. Nate sẽ để thiết lập, và sau đó chúng ta sẽ nói về tất cả các công cụ chúng ta có thể được tìm thấy. (Cười) Vì vậy, tôi có thể đã phóng đại một chút chỉ vì lợi ích của bộ phim, nhưng chúng ta có thể đã bị đánh hơi tất cả các lưu lượng truy cập không dây của bạn bởi vì thực sự, nó là dễ dàng. Nhưng cũng có những cách mà bạn có thể bảo vệ chống lại điều này, và như vậy với điều đó, Tôi cung cấp cho bạn Nate hardison. >> [Nate] ngọt. (Vỗ tay) [Nate] Cảm ơn, người đàn ông. Tôi đánh giá cao một tiếng hét. Được rồi! Đó là trò chơi tuần. Các bạn có vui mừng không? Hy vọng rằng nó sẽ là một trò chơi lớn vào ngày thứ Bảy. Tôi tưởng tượng bạn vào thời điểm này - cho rằng bạn có một bài kiểm tra hôm thứ Tư tất cả về mã, và chúng tôi chỉ ngồi thông qua một bài giảng tuyệt vời bởi Rob với một bó toàn bộ mã C trong nó - có thể là một chút mệt mỏi của mã. Trong phần này, chúng ta đang thực sự sẽ không để chạm vào bất kỳ mã nào. Chúng tôi chỉ để nói về một công nghệ mà bạn sử dụng hàng ngày, thường đối với nhiều người, nhiều tiếng mỗi ngày, và chúng ta sẽ nói về những tác động với an ninh rằng có. Chúng tôi đã nói chuyện rất nhiều về an ninh trong quá trình của học kỳ, và chúng tôi bắt đầu với một chút mật. [Bdoh lv vwlqng!] Và trong khi bạn có thể cực kỳ phấn khích chuyền giấy cho nhau trong lớp học bằng cách sử dụng một thuật toán mã hóa Caesar như thế này, trong thực tế, có một số chi tiết thú vị để có được khi bạn đang thực sự nói về an ninh và rằng loại công cụ. Hôm nay, chúng ta sẽ bao gồm một vài công nghệ mà mọi người thực sự sử dụng trong thế giới thực để làm tất cả các loại vật từ sniffing các gói tin của người dân để thực sự đi vào và đột nhập vào các tài khoản ngân hàng của người dân và tất cả những điều đó. Đây là những công cụ hợp pháp mà chúng ta đang nói về với ngoại lệ của một công cụ có thể. Và tôi chỉ muốn làm cho một sự từ bỏ nhanh chóng. Khi chúng ta nói về những điều này, chúng ta đang nói về họ để bạn biết những gì trên mạng, và bạn biết làm thế nào để được an toàn khi bạn bằng cách sử dụng máy tính của bạn. Nhưng chúng tôi chắc chắn không muốn để ngụ ý rằng bạn nên sử dụng những công cụ này trong ký túc xá hoặc nhà của bạn vì bạn có thể chạy vào rất nhiều vấn đề lớn. Đó là một trong những lý do ngày hôm nay rằng chúng tôi thực sự không được sniffing gói của bạn. Được rồi. Lần thứ hai, chúng tôi nói chuyện về tập tin cookie, và HTTP, và xác thực, và làm thế nào Firesheep sẽ mở ra cánh cửa lớn này vào tài khoản Facebook của bạn, vào tài khoản Hotmail của bạn - nếu ai vẫn còn sử dụng Hotmail - và nhiều tài khoản khác. Rất nhiều các công cụ này sẽ xây dựng đó, nhưng lần đầu tiên, tôi muốn để có một tour du lịch nhanh chóng của Internet đã phát triển như thế nào theo thời gian. Quay trở lại những năm 90, các bạn có thể nhớ thực sự cắm vào máy tính của bạn với một trong những. Bây giờ chúng ta không làm điều đó nhiều nữa. Nó thực sự chỉ ra rằng để cắm cáp Ethernet vào máy tính xách tay của tôi, Tôi bây giờ có sử dụng một trong các adapter như phát điên. Thay vào đó, vào năm 1997, chúng tôi đã có công nghệ mới, thú vị ra mà được gọi là IEEE 802.11, do đó, đây là tiêu chuẩn internet không dây IEEE là cơ quan quản lý này cung cấp cho tất cả các loại - xuất bản tất cả các loại tiêu chuẩn có liên quan đến máy tính. 802 tiêu chuẩn là tất cả về các công nghệ Internet. Vì vậy, 802,3, ví dụ, là tiêu chuẩn Ethernet, 802.15.1 tôi tin là các tiêu chuẩn Bluetooth, và 802,11 là tất cả Internet về không dây. Năm 1997 này ra. Nó không hoàn toàn nắm bắt ngay lập tức. Đó không phải là cho đến năm 1999 và chuẩn 802.11b ra rằng chỉ có thực sự phổ biến. Làm thế nào nhiều bạn nhớ khi máy tính bắt đầu đi ra và nhận được wi-fi trên chúng? Đó là loại mát mẻ, huh? Tôi nhớ đã nhận được máy tính xách tay đầu tiên của tôi ở trường trung học, và nó có một card không dây trong đó. Cha tôi đưa nó cho tôi và nói rằng tôi nên sử dụng nó cho các ứng dụng đại học của tôi và tất cả những điều đó, và tôi đã không có ý tưởng làm thế nào tôi đã được đi để tìm kiếm công cụ trực tuyến này. Nhưng may mắn thay, tôi đã có một card không dây, vì vậy đó là khá mát mẻ. Ngày nay, bạn cũng sẽ thấy 802.11g đó là một trong những thực sự phổ biến khác chuẩn không dây đó là ra khỏi đó. Cả b và g là khá lỗi thời vào thời điểm này. Bất kỳ ai biết những gì phiên bản hầu hết mọi người ngay bây giờ nếu họ đang mua các thiết bị định tuyến không dây mới và các loại công cụ? N. Chính xác. Bingo. Và nó chỉ ra rằng các tiêu chuẩn ac được chỉ ra trong một hình thức dự thảo, và có các phiên bản khác trên đường. Với mỗi người trong số các tiêu chuẩn này những gì chúng tôi đang đạt được nhiều băng thông, nhiều dữ liệu với tốc độ nhanh. Những điều này tiếp tục thay đổi khá nhanh chóng. Nó cũng làm cho nó để chúng tôi phải mua thiết bị định tuyến và tất cả các công cụ thú vị. Chúng ta hãy nói về những gì truyền thông không dây thực sự là cốt lõi của nó. Với Ethernet và những modem dial-up cũ, bạn thực sự có công cụ mà bạn cắm vào máy tính của bạn, và sau đó bạn cắm vào modem của các loại, và sau đó bạn cắm nó vào một jack cắm trong tường của bạn. Bạn có kết nối có dây này, phải không? Toàn bộ các điểm không dây loại bỏ các công cụ này. Để làm điều đó, những gì chúng tôi có bản chất là một thông tin liên lạc vô tuyến nơi mà các router không dây của chúng tôi - được chỉ định bởi biểu tượng không dây của chúng tôi - được kết nối với Internet với mũi tên này vững chắc cho thấy một số loại kết nối có dây, nhưng khi bạn kết nối với router không dây của bạn bạn đang thực sự sử dụng gần giống như một máy bộ đàm giữa máy tính của bạn và router không dây của bạn. Gì thực sự mát mẻ về việc này là bạn có thể di chuyển xung quanh. Bạn có thể mang theo máy tính của bạn trên tất cả các Sanders, lướt web, bất cứ điều gì bạn muốn, giống như tất cả các bạn biết và yêu thích, và bạn không bao giờ có được cắm vào bất cứ điều gì. Để làm việc này, chúng tôi có cả tiếp nhận và truyền tải. Nó thực sự là giống như máy bộ đàm. Bộ định tuyến không dây mà Sanders đang ngồi bên dưới giai đoạn này, ngay tại đây - luôn luôn được phát sóng và nhận, phát sóng và nhận, và tương tự, máy tính của bạn là tất cả làm điều đó cùng một loại điều, quá. Chúng tôi không thể nghe thấy nó. Một thứ khác mà bạn có thể làm là bạn có thể có nhiều máy tính nói chuyện với cùng một bộ định tuyến không dây. Nếu bạn càng gần với một router và một lần nữa, đây là một thông tin vô tuyến điện nếu bạn càng gần, tín hiệu của bạn tốt hơn, tốt hơn máy tính của bạn 'nghe' router và có thể giao tiếp với Internet. Nếu bạn có bao giờ ở ký túc xá của bạn, ngôi nhà của bạn và bạn đang tự hỏi tại sao tín hiệu của bạn là xấu, nó có thể là bởi vì a). bạn không phải là rất gần với router của bạn, hoặc b). có một cái gì đó giữa bạn và router của bạn như một bức tường xi măng hoặc một cái gì đó không cho phép những sóng vô tuyến đi qua. Hãy nói một chút về lý do tại sao kẻ xấu như wi-fi. Kẻ xấu yêu wi-fi cho một vài lý do. Đây là anh chàng xấu khó chịu của chúng tôi ngay tại đó. Một lý do tại sao anh chàng này xấu yêu wi-fi là bởi vì, theo mặc định, rất nhiều các thiết bị định tuyến không dây đến và khi bạn thiết lập chúng, họ không được mã hóa. Điều này đã được một vấn đề, và đã có trường hợp - nhiều trường hợp, bây giờ - nơi bad guy cho thấy đến nhà của ai đó, thông báo rằng có một không được mã hóa wi-fi mà họ có thể kết nối. Họ kết nối wi-fi, và sau đó họ bắt đầu tải về tất cả các loại công cụ thú vị. Và họ không phải tải về mèo con, họ không phải tải về chó con. Điều này giống như BitTorrent. Đây là khó chịu của những kẻ tàn ác. Đã có trường hợp, nơi FBI đã thậm chí không nhận tham gia nghĩ rằng người sở hữu ngôi nhà thực sự là một trong những đi ra ngoài đó và tải công cụ mà họ thực sự không nên. Sau khi không được mã hóa wi-fi chắc chắn là không phải cái gì bạn muốn làm, nếu chỉ có FBI đến gõ cửa nhà bạn. Một lý do khác tại sao kẻ xấu yêu wi-fi là lý do mà David đã nói trước đó trong giờ giải lao. Bởi vì đó là một thông tin vô tuyến cốt lõi của nó, nếu bạn biết các kênh, bạn có thể nghe đài phát thanh đó. Ví dụ, nếu có một bên phải xấu có ngồi ở bên phải giữa các điểm truy cập, ngay bên cạnh rằng router không dây, kẻ xấu có thể lắng nghe trên tất cả các lưu lượng truy cập không dây đến từ tất cả các máy tính. Trong thực tế, những kẻ - những số ít may mắn đang ở đây ở hàng ghế đầu - bởi vì họ là siêu cho tất cả các bộ định tuyến không dây ngồi ngay bên dưới sân khấu, họ sẽ có thể nghe lưu lượng truy cập của tất cả mọi người trong căn phòng này toàn bộ nếu bạn đang kết nối wi-fi và bắt đầu duyệt qua các điểm truy cập. Nó không phải rất khó ngồi ở một vị trí tốt để đánh hơi và tìm ra những gì người khác đang làm. Đó là một cái gì đó để ghi nhớ, đặc biệt là nếu bạn không chắc chắn nơi mà các điểm truy cập, và bạn đang xem nói, tại Starbucks. Nó chỉ ra rằng đánh hơi và tất cả những điều đó không thực sự là khó để làm. Có một chương trình được gọi là tcpdump bãi tất cả các loại của TCP giao thông và bạn có thể chạy nó khá đơn giản - giống như tôi đã làm sáng nay. Dưới đây là một chút của một bãi chứa, và đây là một số lưu lượng truy cập đến hơn mạng của tôi vào thời điểm đó. Bạn có thể thấy nếu bạn nheo mắt thực sự khó khăn - có một chút Spotify trong đó. Trên đầu trang của tcpdump - bởi vì đây là loại một nỗi đau để sử dụng - có một chương trình gọi là Wireshark bó này tất cả trong một giao diện đẹp. Wireshark là siêu tiện dụng vì vậy nếu bạn đi vào để theo học các lớp mạng, đây là một công cụ mà bạn sẽ đi đến tình yêu vì nó giúp bạn mổ xẻ tất cả các gói đang nổi xung quanh ra khỏi đó. Nhưng nó cũng có thể được sử dụng cho xấu. Nó rất đơn giản chỉ cần tải về chương trình này, khởi động nó lên, bắt đầu một capture mạng, và xem tất cả mọi thứ đang diễn ra - và lọc và làm tất cả các loại công cụ vui vẻ với nó. Một thứ khác mà bạn có thể làm với truyền thông không dây không chỉ có bạn có thể nghe trộm, nhưng bạn cũng có thể tìm hiểu làm thế nào để vít với mạng và đưa thông tin của riêng bạn để kiểm soát những kinh nghiệm mà người khác trên cùng một mạng không dây đang nhận được. Chúng ta hãy nhìn vào lúc đó. Dưới đây là Firesheep - mà chúng ta biết và yêu thích từ tuần trước - đó là công nghệ nghe trộm. Nếu, ví dụ, chúng tôi muốn tích cực có đi kẻ xấu và lộn xộn xung quanh với một trong các máy tính này, trong kịch bản này, chúng tôi đã có một máy tính cố gắng để đi lướt sóng để harvard.edu. Điều gì xảy ra, máy tính đầu tiên gửi một thông điệp tới các bộ định tuyến không dây và nói, hey, tôi muốn đi www.harvard.edu chuyến thăm. Nói cho một số lý do mà họ đang cố gắng để có được thông tin về các trò chơi vào cuối tuần này. Bad guy, kể từ khi ông ngồi ở giữa bên phải, ngay bên cạnh các điểm truy cập, có thể thấy rằng giao tiếp đến từ máy tính vào router, và ông biết, "Aha của ai đó! sẽ harvard.edu". (Cười evilly) Có sẽ là này độ trễ trong khi truyền thông đi từ router ra Internet để tìm các trang web tại harvard.edu - như các bạn đều biết sau khi làm PHP của bạn psets - và do đó, kẻ xấu có một chút ít thời gian, một chút của cửa sổ, trong đó ông có thể đáp ứng với một số công cụ. Hãy nói rằng anh chàng này xấu, tất nhiên, là một Yaley. Ông trả lời với harvardsucks.org. Boo! Bad, bad guy! Bad Yaley! Hoặc thậm chí tệ hơn, anh có thể phản ứng với điều đó. [Http://youtu.be/ZSBq8geuJk0. Tôi sẽ để cho các bạn tìm ra đó là những gì. Điều này thực sự là một công nghệ gọi là Airpwn! được ra mắt ở vị trí một trong những hội nghị an ninh một vài năm trở lại. Với Airpwn! bạn có thể thực sự bơm lưu lượng truy cập vào mạng. Các máy tính đã được cố gắng để đi ra ngoài vào Internet và cố gắng để có được Google.com, Facebook.com, harvard.edu xem phản ứng độc hại đi vào và ngay lập tức cho rằng, được rồi, đó là phản ứng mà tôi đã chờ đợi và cuối cùng nhận được nội dung từ harvardsucks.org hoặc nameyourfavoriteshocksite.com, và bạn có thể nhìn thấy mọi thứ sẽ xấu đi một cách nhanh chóng như thế nào. Tất cả các loại của những điều không thể làm được với các kết nối có dây bởi vì với một kết nối có dây thật khó để snoop giao thông. Nếu tôi là một kẻ xấu và một đầu là máy tính của bạn và ở đầu bên kia là router của bạn modem của bạn - cách duy nhất tôi có thể nhận được trong giữa các kết nối đó là để thực sự cắt và nối máy tính của tôi ở một nơi nào đó ở giữa hoặc làm một cái gì đó khác với các bộ định tuyến, hạ lưu một cái gì đó. Nhưng với không dây, nó có thể được dễ dàng như đang ngồi ở hàng ghế đầu của một lớp học, và bạn có thể làm tất cả các loại công cụ khó chịu cho người dân ở phía sau. Chúng ta hãy nói về làm thế nào bạn có thể bảo vệ chống lại một số những điều này. Những người phát triển các tiêu chuẩn không dây - 802,11 - họ không phải là người câm bởi bất kỳ căng của trí tưởng tượng. Đây là mát mẻ công nghệ và khi nó ra mắt vào năm 1999, họ ra đến với tiêu chuẩn này được gọi là WEP. Bạn có thể thấy ở đây khi bạn cố gắng và tham gia một mạng không dây, bạn có tất cả các loại của các tùy chọn bảo mật khác nhau. Đó là loại đau đớn vì có 6 tất cả cùng nhau và nó không bao giờ thực sự làm cho tinh thần đó có 1 tham gia. Điều này 1 ở đầu trang là một trong những đầu tiên mà họ đã đưa ra được gọi là WEP. WEP là viết tắt của Wired Equivalent Privacy, tôi tin rằng, Mã hóa giao thức không dây mà là một cái tên nhầm lẫn phổ biến. Bởi vì nó sẽ cố gắng để cung cấp cho bạn tương đương riêng tư và bảo vệ an ninh tương đương với một mạng có dây Với WEP những gì kết thúc xảy ra, bạn có một mật khẩu đơn giản, nhỏ mà bạn nhập vào và phục vụ để mã hóa tất cả các thông tin liên lạc giữa máy tính và router của bạn. Vấn đề với WEP mặc dù là gì? Các mật khẩu với WEP là rất ngắn, và cũng có thể tất cả mọi người sử dụng rằng cùng một mật khẩu chính xác,  và do đó, nó thực sự dễ dàng để giải mã. Vì vậy, rất nhanh chóng tìm ra rằng WEP là một vấn đề, và lý do duy nhất mà bạn nhìn thấy nó hiển thị vẫn còn trên anh chàng nhỏ bé này - có một số hệ thống cũ sử dụng WEP - những gì bạn thay vào đó nên được xem là WPA và thậm chí WPA2 tiêu chuẩn đã được phát hành sau này. Các hệ thống này là một đi tốt hơn nhiều lúc bảo vệ trên mạng Internet không dây. Điều đó nói rằng, họ vẫn có một số hackability. Có những công cụ hiện có mà có thể đi làm được điều này. Một điều đặc biệt mà có thể bẩn thỉu là nếu bạn kết nối và xác thực với một bộ định tuyến không dây và đang sử dụng một số loại mã hóa giao tiếp, nó chỉ ra rằng một hacker có thể dễ dàng gửi một gói duy nhất để ngắt kết nối với bộ định tuyến, và một khi họ đã bị ngắt kết nối sau đó họ có thể lắng nghe - họ có thể lấy những gói tin như bạn cố gắng thiết lập lại kết nối với router của bạn. Và với thông tin mà họ có thể đi vào và giải mã phần còn lại của thông tin liên lạc của bạn. Đây không phải bởi bất kỳ có nghĩa là bất kỳ loại an toàn ngoài sức tưởng tượng tất cả. Một điều khác bạn có thể làm khi bạn đang thiết lập mạng không dây hoặc bạn đang tham gia họ là - bạn nhận thấy rằng ở đây khi tôi đang tham gia mạng lưới này, nó yêu cầu tên của mạng của tôi. Này còn được gọi là SSID. Và bạn thấy ở đây là bên phải tôi có một hộp mà tôi thấy các SSID có sẵn. Có một trường đại học Harvard, một CS50, và một mạng lưới nhân viên CS50. Bây giờ, có bao nhiêu bạn biết có một CS50 Nhân viên mạng xung quanh? Một số bạn. Không phải tất cả các bạn. Vấn đề này, tất nhiên, là đã không đặt điều này trên danh sách của chúng ta về SSID, không ai có thể biết về nó rất có thể. Tôi hy vọng. Trừ khi bạn là tất cả các cố gắng để crack vào dây của chúng tôi. Nhưng đây là một cái gì đó bạn có thể làm đó là thực sự quan trọng khi bạn đang thiết lập một bộ định tuyến tại nhà. Điều này có lẽ sẽ không xảy ra trong một vài năm cho rất nhiều bạn, nhưng hãy nhớ rằng việc giữ rằng SSID ra khỏi đó và cũng không đặt tên nó một cái gì đó siêu phổ biến sẽ giúp giữ cho bạn an toàn hơn trong thời gian dài. Một cặp vợ chồng cuối cùng của những điều bạn có thể làm. Một là HTTPS. Nếu bạn đang ở một Starbucks, nếu bạn đang ở trong một khu vực wi-fi công cộng và bạn quyết định truy cập tài khoản ngân hàng của bạn, truy cập Gmail, Facebook của bạn, đảm bảo rằng những người kết nối đi qua HTTPS. Đây là một lớp tăng của an ninh, thêm một lớp mã hóa. Một trong những điều cần lưu ý ở đây là, có bao nhiêu bạn đã từng nhấp qua là màn hình lớn màu đỏ, nói rằng, "Trang web này có thể là xấu." Tôi biết tôi có. Đây có thể là khi bạn đang duyệt tới đi xem Tổ quốc hoặc một cái gì đó như thế, đúng không? Yeah. (Khán giả cười). Có bạn đi. Chúng tôi biết những người đang xem Tổ quốc. Đó, màn hình lớn màu đỏ phải có thường chỉ ra rằng một cái gì đó sôi nổi đang diễn ra. Đôi khi nó chỉ trang web chính nó là không an toàn, nhưng điều đó cùng một màn hình lớn, màu đỏ hiện lên ngay khi mọi người đang cố gắng để mount mạng tấn công vào bạn. Vì vậy, nếu bạn nhìn thấy là lớn, màu đỏ màn hình đưa ra tại Starbucks, không bấm vào thông qua nó. Tin xấu. Tin xấu mang. Điều cuối cùng mà bạn có thể nhìn vào là một số loại VPN. VPN này thông qua Harvard - vpn.fas.harvard.edu - và điều này không là nó thực sự thiết lập một kết nối an toàn giữa bạn và Harvard, kênh lưu lượng truy cập của bạn thông qua nó, và cách mà nếu bạn đang ngồi ở một nơi giống như một Starbucks bạn có thể kết nối Harvard, nhận được rằng lưu lượng truy cập an toàn, và sau đó duyệt từ Harvard. Một lần nữa, không đơn giản. Mọi người có thể nhận được ở giữa. Họ có thể bắt đầu để phá vỡ nó, nhưng điều này là an toàn hơn vì dựa vào an ninh của một mình wi-fi. Được rồi. Tóm lại, khi bạn đang thiết lập mạng không dây, khi bạn đi ra ngoài để sử dụng không dây ở nơi công cộng - cho dù đó là một Starbucks, cho dù đó là Five Guys, dù đó là B.Good, một cái gì đó như thế - bất cứ nơi nào họ có wi-fi - được nhận thức của môi trường xung quanh của bạn. Hãy nhận biết những gì mọi người có thể làm. Và an toàn. Không truy cập tài khoản ngân hàng của bạn. Nó có thể là một sự thức tỉnh thô lỗ nếu ai đó xuất hiện với mật khẩu của bạn sau này. Cùng với đó, màu đỏ thẫm! Và tôi sẽ để biến mọi thứ trở lại với David cho một từ cuối cùng. (Vỗ tay) [David] Tôi nghĩ rằng tôi muốn chia sẻ một điều từ kinh nghiệm cá nhân. Một công cụ bạn có thể muốn chơi với - mặc dù Apple hầu như đã loại trừ vấn đề này nếu bạn đã được cập nhật phần mềm của bạn kể từ khi - nhưng về phía cuối này không thực sự có thể tin tưởng phần mềm mà chúng tôi sử dụng, và điểm của Nate, khả năng đánh hơi khá một chút về những gì người khác đang làm ra có - điều này là một phần của phần mềm ra khoảng cách đây một năm rưỡi. [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] Đối với một số thời điểm, iTunes trước iCloud, khi bạn đang đồng bộ máy nghe nhạc iPod hoặc iPhone của bạn hoặc hoặc iPad với iTunes - trong sự quan tâm của các bản sao lưu, iPhone của bạn và các thiết bị khác đã và đang làm trong một thời gian việc sử dụng dữ liệu GPS. Bạn biết tất cả có lẽ đó là iPhone và Android và Windows điện thoại di động của bạn và như những ngày này có thể theo dõi bạn đang ở đâu trong sự quan tâm của hiển thị cho bạn bản đồ và tương tự - cũng những gì Apple và các công ty khác là họ thường theo dõi hầu như ở khắp mọi nơi bạn đã thực sự được sự quan tâm của nâng cao chất lượng dịch vụ. Một, bạn có thể nhận được nhiều quảng cáo được nhắm mục tiêu và như thế, nhưng hai, họ cũng có thể tìm ra nơi có điểm nóng không dây trên thế giới, và điều này có thể giúp với vị trí địa lý của tam giác vị trí của người dân. Long câu chuyện ngắn, tất cả chúng ta đã được đi bộ râu cho một số lượng thời gian. Thật không may, Apple đã quyết định thiết kế - hoặc thiếu đó - không mã hóa thông tin này khi nó đã được sao lưu sang iTunes. Và những gì các nhà nghiên cứu bảo mật tìm thấy được rằng điều này chỉ là một tập tin XML lớn một tập tin văn bản rất lớn ngồi trong phần mềm iTunes của người dân, và nếu bạn chỉ cần một chút tò mò, bạn có thể đi poking xung quanh lịch sử của người phối ngẫu của quý vị, lịch sử của người bạn cùng phòng của bạn, anh, chị, em ruột của lịch sử và như thế, và nhờ một số phần mềm miễn phí, bạn có thể âm mưu tất cả các tọa độ GPS - vĩ độ và kinh độ. Vì vậy, tôi thực sự đã làm điều này với điện thoại của riêng tôi. Tôi cắm vào điện thoại của tôi, và chắc chắn đủ, phiên bản của iTunes không được mã hóa vào thời điểm đó, và những gì tôi đã có thể nhìn thấy mô hình của riêng tôi. Dưới đây là Hoa Kỳ và mỗi vòng tròn màu xanh đại diện cho nơi mà tôi đã xảy ra để có được so với những tháng trước đó của việc sở hữu điện thoại cụ thể này.  Tôi dành rất nhiều thời gian, tất nhiên, ở vùng Đông Bắc, một ít thời gian ở California, một chuyến đi ngắn ngủi đến Texas, và nếu sau đó bạn phóng to trong ngày này - đây là tất cả các loại tiền phạt và thú vị, nhưng tôi biết điều này. Hầu hết bạn bè của tôi biết điều này, nhưng nếu bạn nhảy vào sâu hơn, bạn nhìn thấy nơi tôi dành hầu hết thời gian của tôi ở vùng Đông Bắc. Nếu bạn bám vào một số thị trấn quen thuộc - vết này, màu xanh mực chủ yếu là trung tâm trên Boston, và sau đó tôi dành một chút ít thời gian ở ngoại ô tỏa ra từ Boston. Nhưng tôi cũng đã làm khá nhiều ý kiến ​​năm đó. Và năm nay là bờ biển phía đông, và bạn thực sự có thể nhìn thấy tôi và iPhone của tôi trong túi của tôi đi du lịch qua lại giữa Boston và New York và Philadelphia tiếp tục xuống, cũng như dành một chút thời gian nghỉ phép Cape, đó là cánh tay ít ra có. Vì vậy, mỗi một trong số những dấu chấm đại diện cho một số nơi tôi đã có được, và hoàn toàn không biết rằng với tôi, toàn bộ lịch sử này đã được chỉ ngồi đó trên máy tính của máy tính để bàn của tôi. Nếu bạn thu nhỏ - điều này thực sự là một chút rắc rối. Tôi không nhớ đã từng ở Pennsylvania mà đặc biệt là năm. Nhưng tôi mặc dù khó hơn một chút về việc này và tôi đã tìm ra, oh, đó là thực tế rằng chuyến đi và chắc chắn đủ, điện thoại của tôi đã bắt tôi. Kể từ đó, Apple đã mã hóa thông tin này, nhưng điều này cũng chỉ là minh chứng cho bao nhiêu thông tin được thu thập về chúng tôi, và làm thế nào một cách dễ dàng - cho tốt hơn hoặc tồi tệ hơn - đó là chấp nhận được. Một trong-aways mất hy vọng từ nói chuyện Rob, từ nói chuyện của Nate và hình ảnh nhỏ như ngày hôm nay này chỉ là để được tất cả các nhận thức này do đó mặc dù điểm của Rob - chúng ta loại hơi say, phải không? Không có nhiều chúng ta có thể làm khi nói đến một số những mối đe dọa này, nhưng vào cuối ngày, chúng ta phải tin tưởng một cái gì đó hoặc ai đó nếu chúng ta muốn thực sự sử dụng các công nghệ này. Ít nhất chúng tôi có thể được quyết định thông báo và quyết định tính hay không chúng tôi thực sự cần được kiểm tra tài khoản này đặc biệt nhạy cảm hoặc chúng tôi thực sự cần phải được gửi đó hơi nghi ngờ tin nhắn tức thời  trong một môi trường wi-fi như thế này. Vì vậy, với mà nói, một phần còn lại đố, một bài giảng vẫn còn. Chúng tôi sẽ gặp anh vào ngày Thứ Tư sau đó thứ hai. (Vỗ tay và cổ vũ) [CS50TV]