Thông báo

Collapse
No announcement yet.

Blasher - Chương trình bootloader cho AVR: bảo mật và an toàn

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Blasher - Chương trình bootloader cho AVR: bảo mật và an toàn

    Xin chào mọi người!
    Hôm nay mình mở luồng này để đưa ra một giải pháp bảo mật cho việc cập nhật phần mềm qua bootloader, đồng thời giới thiệu với các bạn một phần mềm bootloader mới toanh: Blasher!

    Để bắt đầu, mình xin đưa ra một tình huống như sau: Bạn, một cao thủ, cung cấp sản phẩm là thiết bị điện tử mà bạn phát triển cho khách hàng. Mỗi lần cần nâng cấp phần mềm cho khách hàng hoặc vá lỗi phần mềm, bạn lại chạy đến tháo chip, thay chíp, hoặc văn minh hơn thì cắm giao tiếp ISP vào thiết bị để cập nhật phần mềm. Điều này đồng nghĩa với việc nếu khách hàng ở xa hoặc sản phẩm được đóng vỏ kĩ quá thì bạn sẽ rất vất vả.

    Vậy giải pháp ở đây là gì?
    Giải pháp mà các nhà sản xuất thiết bị cầm tay hay dùng là sử dụng một chương trình uprom. Khách hàng tải rom và phần mềm bootloader về, cắm sản phẩm vào máy tính và tự cập nhật phần mềm.

    Tuy nhiên, nếu bạn cũng muốn làm như vậy thì khó khăn ở đây là gì? Đó chính là vấn đề bảo mật. Nếu bạn dùng các chương trình bootloader như Megaload (AVR) hay TinyBootloader (PIC) thì bạn phải gửi cho khách hàng file .HEX hoặc .BIN. Nếu khách hàng là người muốn sao chép sản phẩm của bạn thì sao? Đương nhiên bạn đã gửi cho họ công cụ để làm việc đó (file .HEX, .BIN). Đây chẳng khác nào hành động cầm roi tự quất vào mông...

    Giải pháp cho vấn đề này rất đơn giản: Bạn mã hóa file .HEX hoặc file .BIN đó lại. Chương trình bootloader trên máy tính sẽ gửi dữ liệu được mã hóa xuống. Chương trình bootloader trong chíp sẽ giải mã dữ liệu máy tính truyền xuống. Vậy bạn làm việc này như thế nào? mã hóa bằng cách nào cho an toàn? Nếu đây không phải là chuyên môn của bạn thì bạn có thể sử dụng giải pháp của người khác.

    Hôm nay mình xin giới thiệu với các bạn một chương trình bootloader mới toanh trên PC. Đó là Blasher!. Chương trình này hỗ trợ nạp bootloader cho AVR với đầu vào là file binary (.BIN).

    Bạn dùng một tiện ích có tên là Secure Hex2Bin để chuyển file .HEX thành file .BIN mã hóa. Sau đó dùng Blasher để nạp.

    Trước mắt các bạn cứ sử dụng mấy file hex mình gửi sẵn để làm bootloader. Khi nạp ISP thì chọn kích thước bootloader là 1024word (2K byte). Nếu Cho chip chạy tần số 8MHz thì trên Blasher chọn baud là 19200. Còn nếu cho chip chạy là thạch anh 16M thì chọn baud 38400. Password mã hóa trên phầm mềm SH2B là *******.

    Software, Firmware cho bootloader bạn có thể xem trong file .zip mình up lên. Các bạn download và thử xem nhé.

    (Mã nguồn về firmware booloader mình xin được up lên trong các bài viết sau. Khi có mã nguồn bạn có thể tự định nghĩa lại password mã hóa)


    To be continued...
    Attached Files
    Last edited by bvhoang; 21-06-2009, 12:02.

  • #2
    Xin chào mọi người, mình vừa update phần mềm Blasher. Phần mềm bây giờ hỗ trợ nạp trực tiếp file hex. Các bạn có thể dùng cái này để thay thế CVmegaloader được.
    Attached Files

    Comment


    • #3
      Chào bạn BVHOANG, mình thấy phần mềm của bạn rất thú vị, nhưng mình chưa hiểu rõ về bootloader, bạn có thể nói rõ hơn được không? có phải cái này dùng để nạp file.hex qua đường usart không? mình muốn nạp chip qua đường usart thì phải làm như thế nào? rất mong nhận được sự giúp đỡ của bạn. Thanks
      Phạm Duy Quý

      PN:0973291335


      Dám nghĩ,dám nói,dám làm

      Comment


      • #4
        Blasher - Chương trình bootloader cho AVR: bảo mật và an toàn

        Hôm qua đọc được topic bác giới thiệu về Blasher rất hay. Có câu hỏi mong bác chỉ giáo về phần mã hóa từ file .Hex thành file .Bin bằng "Command prompt" trong Win7 hoặc WinXP_SP2.
        Em đã down chương trình "HEX2BIN" nặng 11.3K trên web ARM(trên Atmel cũng như thế)
        Em đã bật file "HEX2BIN" bằng "Command prompt" kết quả hiển thị ra như sau :
        "
        HEX2BIN Version 1.06
        Copyright<>..
        Portions...
        All rights...

        Error: not enough arguments.

        Syntax: HEX2BIN [/option] hexfile [binfile]

        hexfile is the Intel HEX input file
        binfile is the binary file to create

        option may be any of the following

        Note: n is a decimal number.

        /Ln Binary file length
        /Pn Pad data for binary file
        /On Address offset (to add to HEX records)
        /M Merge data into existing BIN file
        /Q Quiet mode (no statistics are displayed)
        /X Don't process ext. segment/linear address records

        /? This help text

        "
        Tiếp theo em chưa biết CẤU TRÚC lệnh như nào để nạp cái file "test.hex" của em vào cho cái chương trình này nó chạy.

        Cũng mong bác có thể nói rõ hơn chút về dung lượng file "test.hex" tối đa có thể biên dịch ra "test.Bin"? Cái file .Bin này nó ra ở folder nào? Cái file .Bin này mình thiết lập các luật (ví dụ như mã hóa dung lượng,độ rộng,dữ liệu.... như cái mục "option may be any of the following" đã minh họa)
        Cuối cũng rất mong bác có thể hướng dẫn hoặc nếu không chỉ là định hướng tài liệu để em tìm hiểu rõ hơn về cái "boot_loader" rất hay này.63

        Comment

        Về tác giả

        Collapse

        bvhoang Tìm hiểu thêm về bvhoang

        Bài viết mới nhất

        Collapse

        Đang tải...
        X