|
|
Chào bạn mrro,
Mình chốt lại vấn đề thế này nhé:
1. Mình sẽ document lại giao thức GBProtocol, sau đó sẽ post lên diễn đàn, viẹc này đòi hỏi cũng khá nhiều thời gian, mình sẽ cố gắng hoàn thành sớm để gửi đặc tả cho các bạn.
2. Vốn dĩ việc này mình định làm sau khi hoàn chỉnh GBProtocol như mình đã nêu trên, nhưng qua thực tế mấy ngày qua, mọi người có yêu cầu cần xem đặc tả của giao thức trước khi có ý kiến đánh giá về giao thức. Đây là yều cầu thực tế và hợp lý, do đó mình quyết định sẽ thay đổi cho phù hợp với thực trạng.
Rất cảm ơn mọi người đã chân thành góp ý thẳng thắn.
Trân trọng,
|
|
|
Chào StarGhost,
Rất cảm ơn những góp ý thẳng thắn và hữu ích của bạn.
1. Mình chỉ "mong có chuyên gia để ý thôi", thật sự bạn nói rất đúng vì nếu ở đẳng cấp chuyên gia thì họ cũng không có nhiều thời gian để quan tâm đến 1 cái giao thức đóng và đang phát triển như của mình. Mình ghi nhận và sẽ cố gắng phát triển nó tốt và nhiều đặc điểm hơn nữa nhằm đáp ứng tiêu chí "mới và nổi trội" do bạn đề ra. Rất cảm ơn StarGhost về nhận xét này.
2. Mình xuất thân là một người yêu thích lập trình và dĩ nhiên, mình cũng không phải là một người quá am hiểu về lĩnh vực mật mã. Mình chỉ cố gắng ứng dụng các thuật toán mã hoá đã được công bố vào giao thức GBProtocol nhằm để dữ liệu được an toàn trước các hành vi cũng như ý định xâm phạm nó. Tất nhiên là ý kiến cũng như những gì chủ quan mình làm không tránh khỏi sai sót, thậm chí đi ngược với những lý thuyết mà thực tế đã chứng minh. Đây cũng là điểm mình rất băn khoăn, do đó mình mới quyết định tạo thread này để chia sẻ cũng như học hỏi kinh nghiệm từ các bạn trên diễn đàn. Nếu StarGhost nhận thấy có những khiếm khuyết gì về vấn đề bảo mật trong GBProtocol thì có thể chia sẻ ngay trên diễn đàn để mình và các bạn khác học hỏi. Đây cũng là một dạng "mong muốn" của mình thôi, chứ không có ý gì khác. Rất mong bạn StarGhost hiểu thiện ý của mình nhé!
3. Tại sai mình bắt chước SSL mà không ứng dụng thẳng SSL vào trong GBProtocol? Điều này thật sự mình đã suy nghĩ và băn khoăn rất nhiều. Ắt hẳn nhiều bạn sẽ bảo "chú này đang vẽ lại cái bánh xe chăng?". Mình xin trả lời rằng: hoàn toàn không. Không một giao thức nào là trường tồn, cái gì cũng có điểm yếu điểm mạnh của nó, nếu mình áp dụng SSL vào, đến một lúc nào đó, SSL trở nên không secure nữa, thì GBProtocol sẽ đi về đâu? Mình chỉ học hỏi những logic và ý tưởng của SSL thôi và thêm vào đó là một chút logic riêng của mình. Nếu GBProtocol bị phát hiện lỗi hãy chưa được bảo mật như ý, mình vẫn có thể chỉnh sửa một cách chủ động mà không phụ thuộc vào thư viện hay đặc tả của SSL hay bất kỳ giao thức nào. Chủ động mọi thứ tốt nhất có thể, đó chính là phương châm khi phát triển GBProtocol. Những gì quá tầm tay của mình thì mình sẽ dùng thư viện, ví dụ như mã hoá, rõ ràng mình không tạo ra một thuật toán mã hoá riêng mà chỉ tái sử dụng những phương pháp mã hoá đã được công bố và kết hợp chúng lại với nhau. Còn về cách thức truyền tải messsage thì sức mình có thể làm được và không cần bất kỳ thư viện nào hỗ trợ.
4. Điểm đặc biệt theo cách hiểu của mình đó chính là "không giống ai". Tất nhiên sẽ xảy ra 2 tình huống là đặc biệt theo hướng tích cực và đặc biệt theo hướng tiêu cực. Xét riêng về trường hợp GBProtocol sử dụng linh hoạt giữa mã hoá và không mã hoá chạy trên cùng 1 port thì cũng không có gì phát sinh tiêu cực. Còn về tích cực thì có thể nhìn dưới nhiều góc độ:
- User: rất tích cực vì không phải cấu hình và nhớ quá nhiều port, càng ít thao tác càng tốt. User luôn thích như thế.
- System Admin: sẽ có 2 luồng tư tưởng, một dạng thích tìm hiểu đến chân tơ kẽ tóc, thích rõ ràng và không nhập nhằng. Thế cho mình hỏi rằng, thật sự các giao thức hiện tại có bao gồm nhiều tính năng kết hợp không, hay chỉ vì tính năng mã hoá mà phải tách ra thành 1 port riêng? Nếu giao thức đó có n tính năng, không lẽ phải tách ra thành n port để dễ kiểm soát? và khi kết hợp riêng rẽ từng cặp tính năng lại chia ra thêm m port nữa??? (câu hỏi này có thể mang tính hơi xoáy một chút, nhưng theo mình là nó logic vì đã muốn làm rõ thì phải làm rõ cho tới, chứ lúc rõ lúc không thì hơi lộn xộn chút nhỉ!?). Dạng còn lại thì chấp nhận những gì đang có theo hướng đừng để mất kiểm soát, còn việc tích hợp nhiều tính năng vào một giao thức thì không phải là vấn đề lớn. Cuộc đời đôi lúc chúng ta lại phải tập chấp nhận những gì đang có và cố gắng làm cho nó ngày một tốt hơn.
Phần 4 này chỉ là những ý chủ quan (có phần hơi thô hoặc nông cạn về mặt kiến thức hệ thống). Nếu có gì sai rất mong StarGhost và các bạn góp ý để mình sáng tỏ vấn đề hơn.
Một lần nữa mình rất cảm ơn StarGhost đã quan tâm và dành chút thời gian quý báu để góp ý cho mình.
Trân trọng,
|
|
|
Chào bạn xnohat,
GBProtocol hiện tại là một giao thức đóng để phát triển và sẽ là giao thức mở khi đã hoàn tất việc phát triển.
Về việc thương mại hoá giao thức thì tạm thời mình chưa nghĩ đến vì phải tập trung xây dựng các tính năng cho nó xong đã. Mục đích của mình xây dựng giao thức này trước hết là nó phải phục vụ tốt, hiệu quả cho cộng đồng, còn các việc khác thì có lẽ tính sau vậy!
Mình rất mong có những chuyên gia cảm thấy thú vị để "ngồi nghịch" giao thức này như bạn nói! Hãy xem điều đó như một cuộc dạo chơi, một chút "bé yêu khoa học", một chút khám phá...
Như mình đã đề cập ở bài gần nhất, thì đây là 1 giao thức lai giữa FTP và SSL. Còn điểm đặc biệt thì có lẽ sẽ còn nhiều vì đây là giao thức tự chế, nghĩa là mình có thể thêm vào bất kỳ một logic mới nào đó (và vẫn phải dựa trên nền TCP). Mình có thể ví dụ nhé: như mỗi lần truyền tải thì dữ liệu sẽ được mã hoá theo một kiểu khác nhau, và thứ tự các kiểu mã hoá này là random. Hoặc có thể dùng nhiều kiểu mã hoá bất đối xứng trong cùng 1 phiên gửi nhận dữ liệu... đây chỉ là ý tưởng, mình chưa hiện thực nó vào GBProtocol vì nghĩ rằng làm thế sẽ ảnh hưởng nhiều đến tốc độ truyền tải dữ liệu.
Về cơ chế xử lý việc mã hoá qua lại giữa client và server thì các bạn có thể tham khảo mô hình trao đổi mesage của giao thức SSL 3.0 draft, mình phát triển mô hình gửi nhận message của GBProtocol đa phần là tham khảo logic của giao thức này.
Điểm đặc biệt của GBProtocol là việc truyền tải dữ liệu ở chế độ mã hoá hoặc không mã hoá là vẫn trên cùng 1 port, không giống như các chuẩn khác phải là 2 port riêng rẽ cho chế độ mã hoá và không mã hoá.
Rất cảm ơn xnohat đã quan tâm và góp ý,
Trân trọng,
|
|
|
Chào bạn StarGhost,
Mình rất cảm ơn bạn đã góp ý. Mình xin nói rõ hơn một chút về những tính năng đã, đang và sẽ có của GBProtocol
- Truyền dữ liệu (xác định tường minh ip đến)
- Nén dữ liệu
- Mã hoá dữ liệu
- Chia sẻ dữ liệu theo cơ chế P2P (không cần xác định chính xác IP đến mà sẽ qua một server trung gian làm nhiệm vụ kết nối, giao thức sẽ tự phân tích và tìm đường đến máy cần kết nối)
Về phần P2P, hiện tại mình đang nghiên cứu tài liệu, khả năng triển khai cho phần này sẽ tốn thời gian nhiều hơn các phần còn lại (qua tìm hiểu sơ bộ của mình về các mô hình kết nối P2P). Còn 3 phần đầu hiện tại đã hoàn tất. Tuy nhiên khi ghép vào phần P2P chắc chắn 3 phần đầu ít nhiều cũng sẽ được tinh chỉnh lại cho phù hợp.
Mình cũng biết là việc tìm hiểu hay phân tích hoặc can thiệp vào một ứng dụng sẽ rất tốn kém thời gian của các bạn, do đó nếu thật sự có được chút thời gian rảnh rỗi, các bạn thích "yêu khoa học" xíu có thể giúp mình chút thời gian để kiểm tra thử mức độ bảo mật khi truyền dữ liệu qua giao thức này.
Còn về việc chuẩn hoá thì GBProtocol là một giao thức lai giữa FTP (RFC 959) và SSL (version 3.0 draft), trong đó mình có bổ sung một chút thuật toán nhỏ để logic bảo mật khi truyền data được tốt hơn. Việc lai này chỉ là lai ý tưởng của 2 giao thức trên, còn về implement các logic hay message cụ thể thì hoàn toàn khác. Do đó mình nghĩ (chủ quan) sẽ ít nhiều phát sinh vấn đề mà nhất thời mình chưa hình dung ra được.
Hiện tại GBProtocol đang hoạt động trên nền TCP, nhưng nếu nghiên cứu để thêm vào chức năng hỗ trợ P2P thì có lẽ sẽ hoạt động thêm trên UDP (dự kiến).
Mình chia sẻ để các bạn có thể hiểu hơn về GBProtocol cũng như những ý định của mình sắp tới nhằm phát triển protocol này mạnh hơn nữa.
Rất cảm ơn các bạn đã quan tâm.
Trân trọng,
|
|
|
Nhằm minh hoạ rõ ràng hơn cho phát biểu GBProtocol nhanh hơn FTP, mình đã làm một đoạn demo truyền data từ máy thật sang máy ảo trong cùng máy tính. Kết quả cho thấy GBCopy truyền nhanh hơn FileZilla khoảng 3 lần. Thông số nhanh hơn 4-5 lần là mình test trong trường hợp truyền file đến 1 ip tĩnh ngoài internet. Do tính chất tế nhị của địa chỉ đó nên mình không làm demo về trường hợp đó được. Mong các bạn thông cảm.
Và đây là link demo GBProtocol vs FTP: http://www.youtube.com/watch?v=r_ofqiGU1G8&hd=1
Các cấu hình của FileZilla server mình để mặc định và không có bất kỳ chỉnh sửa nào.
|
|
|
Chào bạn mylove1429,
1. Về tốc độ so với FTP thì mình đã test thực tế nhiều lần rồi, và với nhiều trường hợp khác nhau, do đó mình mới ghi kết quả như vậy.
2. Thật ra GBProtocol có thể truyền file nhanh hơn FTP như mình đã nêu thì còn phụ thuộc vào tỷ lệ nén được của file nữa. Nghĩa là với file 1 GB, nếu bạn có thể nén nó xuống còn 200MB thì chắc chắn khi truyền file 1GB đó so sánh giữa GBProtocol và FTP thì GBProtocol sẽ truyền nhanh hơn FTP vì thực truyền dữ liệu qua GBProtocol chỉ có 200MB trong khi đó FTP sẽ truyền đến 1GB dữ liệu
3. Mình có thuật toán riêng cho việc nén dữ liệu khi truyền và đảm bảo không tạo ra bất kỳ 1 file nén nào tại nguồn khi truyền tải dữ liệu dùng GBProtocol.
4. Về góp ý của bạn về bộ chạy đã bundle jre thì mình cũng có cân nhắc. Tuy nhiên vì thời gian phát triển ứng dụng cũng có giới hạn (đây là project cá nhân và free) và mình cũng phải đi làm nên thời gian nghiên cứu để tách ra những thư viện tối thiểu cần thiết cho GBCopy là không nhiều. Nếu có nhiều thời gian hơn, mình sẽ nghiên cứu để bộ jre được tối ưu về dung lượng.
Rất cảm ơn bạn đã quan tâm và góp ý.
Trân trọng,
|
|
|
Mình đã nhận được phản hồi của một số bạn về cách sử dụng tính năng copy qua mạng của GBCopy, có lẽ đây là điểm hơi mới nên các bạn chưa quen, mình đã làm 1 clip demo về tính năng này, dạng cơ bạn nhất có thể, các bạn có thể xem thêm hướng dẫn trong phần User Guide để sử dụng chế độ log in và encrypt data khi truyền nhé!
Link demo: http://www.youtube.com/watch?v=RDt2yiD3GYM&hd=1
Các bạn có thể chọn full screen để xem cho rõ nhé!
Trân trọng,
|
|
|
Rất cảm ơn dexxa đã góp ý!
Hướng MFT như bạn nói là hướng quản lý các giao thức truyền file đã có sẵn. Còn định hướng của mình là tạo ra một giao thức truyền file mới có nhiều ưu điểm hơn các giao thức hiện tại. Tất nhiên là phạm vi kiến thức mình cũng có giới hạn, do đó nếu các giao thức khác có những ưu điểm gì hay các bạn cũng có thể giới thiệu để mình và mọi người cùng tham khảo.
Một vấn đề nữa là sản phẩm GBCopy này hoàn toàn miễn phí. Đây chỉ là một project cá nhân của mình với mục đích chia sẻ và hoàn toàn không có bất kỳ dụng ý về mặt kinh doanh nào.
Trân trọng,
|
|
|
Như mình đã trình bày bên trên thì GBProtocol là một giao thức mới hoàn toàn hoạt động dựa trên TCP. GBProtocol không những ứng dụng được trong việc truyền file mà còn có thể sử dụng để thực hiện các công việc khác như chat, quản lý từ xa....Mặc dù mình đã thiết lập cơ chế mã hoá đường truyền và các thông tin liên quan cho GBProtocol rồi nhưng mình nghĩ thế vẫn chưa đủ. Mình vẫn muốn tham khảo thêm các ý kiến đánh giá về giao thức này để mình có thể học hỏi và phát triển nó tốt hơn nữa.
Rất mong các bạn hỗ trợ!
Trân trọng,
|
|
|
GBCopy chạy được trên cả server lẫn client. Hỗ trợ chạy trên nền Windows, Linux, Mac. Hỗ trợ chạy dùng console lẫn giao diện.
Hiện nay mặc định mình để GBProtocol truyền message qua port 8888 và truyền file qua port 9999.
Nghĩa là bạn phải chạy 1 bản GBCopy trên server và server đó phải trust 2 port 8888 và 9999 (bạn có thể tuỳ chọn là port khác nếu thích). Sau đó trên client bạn dùng GBCopy để đẩy data lên server.
Chi tiết hướng dẫn sử dụng bạn có thể tham khảo tại đây: http://gbcopy.misamap.com/2013/06/user-guide.html
Lưu ý là tính năng là thuộc phần Network / Copy nhé!
Trân trọng,
|
|
|
Chào mọi người,
Hiện tại mình có lập trình một phần mềm sử dụng giao thức tự phát triển có tên gọi GBProrotol dùng để truyền file và message trên nền TCP.
Giao thức này có thể truyền file nhanh hơn FTP từ 4-5 lần tùy vào mức độ nén được của file.
Do nhu cầu cần ứng dụng trong thực tế đòi hỏi phải có đăng nhập khi truyền dữ liệu, mình cũng đã bổ sung thêm tính năng đăng nhập, khi có đăng nhập thì lại phải giải tiếp bài toán về bảo mật thông tin, thế lại lại phải thêm phần mã hóa.
HIện tại GBProtocol đã hỗ trợ mã hóa đường truyền dùng AES 256 bit. Key AES khi truyền được mã hoá bất đối xứng dùng RSA 1024 bit, hỗ trợ truyền public key qua lại giữa client và server mà không cần bất kỳ can thiệp nào. Username và password khi truyền cũng được mã hóa kết hợp giữa SHA-256 và MD5.
Mình cũng đã thử sniff test và nhận thấy rằng data đã được mã hóa tương đối ổn (ý kiến chủ quan của mình thôi nhé, chắc chắn sẽ có nhiều sai sót).
Mình hy vọng các bạn trên diễn đàn có thể sử dụng thử và cho mình ý kiến về cách thức bảo mật đường truyền như thế này có cần quan tâm thêm một số vấn đề gì hay không? hoặc có lỗ hổng bảo mật nào khiến hacker có thể can thiệp, lấy và hiểu được các thông tin quan trọng không?
Rất mong sự góp ý của các bạn.
Website giới thiệu GBCopy: http://gbcopy.misamap.com
Chúc các bạn ngày vui!
Trân trọng,
|
|
|
|
|
|
|