Tổng kết năm 2018, chào đón 2019

Một năm 2018 chuẩn bị sang trang, cho năm 2019 đầy háo hức sắp tới, ngồi xem lại một năm ảm đạm, chạy nhiều nhất từ trước đến giờ.

– Năm nay, chuyển về làm gần nhà, công việc cũng okay

– Năm nay, thể thao nhiều, sức khoẻ lên

– Năm nay, học được nhiều về cách thức vận hành, build up công ty từ ý tưởng đến thực tế, move fast failed fast

– Năm nay bớt bay bay, mơ mộng, thiếu thực tế

– Năm nay gặp được nhiều cao nhân giúp đỡ, góp ý

– Năm nay gặp được em, năm sau biết đâu được … 😉 xD

– Năm nay đọc được nhiều sách hay, ý nghĩa, thực tế …

Looking forward to exciting 2019 year ahead! xD

Cầu mong an yên, hạnh phúc cho gia đình. Nhớ ba nhiều!

Sài gòn 31/12/2018

Mở source API – hệ thống cho thuê xe hơi (xe máy) tự lái (người tự lái)

Cuối năm, rì viu một năm nhiều sự kiện, rồi chuẩn bị tinh thần chiến đấu cho năm mới.

Sáng tính chạy 21km ủng hộ vnuwillrun, cơ mà cái mũi lại bị đau một cách vô duyên khó hiểu làm nóng sốt và ảnh hưởng đến thể trạng. Rồi cũng lết được cỡ 16km vừa đi bộ vừa chạy. Nói chung cũng tạm được …

Nhìn lại một năm chả có j hay ho, bể kèo này nọ, thôi thì cứ vô vi đi mà sống cho thanh thản, đọc lại cái bản báo cáo 2019-2025 của google, cuộc chiến những năm tới sẽ rất hấp dẫn và nhiều thử thách. Về với đội đại ka Ngôn học được nhiều thứ: thực tế, move fast, failed fast, Long hạn chế bay bay … Nói chung là học được nhiều thứ lắm …

Thấy còn dư tí năng lượng đang hype do chạy bộ chưa đã, chỉnh sửa luôn xiu source cho thuê xe tự lái (người thue xong rồi tự lái, chứ không phải thuê bác tài, hoặc xe có khả năng tự lái nhe), rồi opensource cho anh chị em nào cần …

https://github.com/nguyentienlong/wolverine

Về cơ bản, thì khi đưa lên github, mình chỉ hide những thông tin sensitive, còn nhiều thiếu sót, hi vọng được nhận nhiều feedback từ các bạn.

Happy weekend 😉

Áp dụng GnuPG vào việc bảo mật giao tiếp giữa 2 server

Tôi may mắn có dịp được làm vài dự án có liên quan đến mã hoá, lĩnh vực mà tôi chả biết gì, nhớ lại thời đi học cứ mỗi lúc thầy Khang Võ (khoa mạng máy tính dạy) thì nổ lùng bùng cái đầu (có lẽ thời đó quá gà, hoặc có thể thầy dạy khó hiểu quá xD :))). Rảnh rổi, ngồi gom góp tổng hợp lại, biết đâu ai đó lại cần, mà cũng có thể diễn giải theo cách của dân không chuyên lại dễ hiểu hơn cho các bạn cần tìm hiểu về mã hoá, và các ứng dụng thực tế của nó.

GnuPG là gì, và các thuật ngữ liên quan (theo RFC 4880):

Theo tôi hiểu, khi giao tiếp giữa 2 bên Lan và Điệp một cách bình thường thì chả có gì bàn ở đây, trường hợp 2 bên có bí mật gì đó thì sẽ áp dụng phương pháp sau:
– Lan và Điệp cùng dùng phần mềm GnuPG để tạo cặp private & public keys (cặp khoá bí mật và công khai), và trao đổi 2 khoá public cho lẫn nhau.

longka key list
longka key list

– Lan soạn tin nhắn, mã hoá bằng pub-key của Điệp, ký(sign) bằng khoá bí mật của chính Lan, gửi qua email cho Điệp.
– Điệp nhận được email của Lan, chột miệng thốt lên “Oát đờ heo”, bụng thì nghĩ có lẽ nào máy Lan bị hách(hacked). Bình tâm lại, Điệp rít hơi thuốc lào, nhớ lại lần hẹn hò hôm trước trong CGV Lan có gửi cho Điệp cái pub-key trong cái hộp con đum. Điệp từ tốn, import pub-key của Lan, rồi decrypt (giải mã) email Lan gửi qua. Điệp hớn hở đọc tin nhắn.
– Điệp đọc xong, lại dùng pub-key của Lan để encrypt (mã hoá) nội dung email, và ký bằng khoá bí mật của Điệp rồi gửi qua Lan.
– Lan cũng follow trình tự các bước Điệp làm, rồi đọc tin nhắn Điệp gửi.

Tại sao nên dùng GPG
Tại sao là GPG, mà không dùng các phương pháp khác, câu hỏi này xin phép được để ngõ, vì tôi chưa có điều kiện tiếp các phương pháp mã hoá khác khi giao tiếp trên phía server.

Ví dụ:

Đầu tiên, hãy tạo ra 2 cặp khoá(pub, secret) ở máy của bạn trước:

gpg –gen-key, sau đó nhập tên kêy, email

Sau đó, list lại những key đã tạo, ở bước này bạn đã có 2 id cho 2 keys với id lần lượt:  longka, và alien

Tiếp đến export pulic key dạng armor:

Sau khi đã có pub-key bạn có thể public nó, gửi cho những người mà bạn cần liên lạc.

Giờ tôi sẽ gửi thông điệp sau đến Lan, dùng gpg cmd như sau:

Thông điệp (do longka@longka.info gửi đến alien@mar.com) được mã hóa như sau:

Sau đó, longka@longka.info in ra và nhờ bồ câu gửi đến cho alien@mars.com, nhận được, chạy lệnh sau để giải mã nội dung

Public GPG key của tôi 😉

Tài liệu tham khảo

https://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages

https://tools.ietf.org/html/rfc4880#section-1.1

Kết luận: khi thiết kế API cho clients sử dụng, nhiều khi dữ liệu truyền dữ clients và API có thể bị chôm và sử dụng vào mục đích chơi không đẹp (ko fair). Thì việc mã hóa thông tin truyền, nhận là một điều cần thiết. GPG là một phương pháp hợp lý, giải quyết được vấn đề.

Bài viết viết vội khi chuẩn bị đi xem trận chung kết lượt đi tại KUL, mong được các bạn, anh, chị cao nhân góp ý và chỉ giáo nếu thấy còn điều nào chưa đúng, chưa chuẩn.

TSN, 11Dec2018 – Việt Nam Chiến Thắng!!! 🇻🇳🇻🇳🇻🇳🇻🇳🇻🇳