PDA

View Full Version : Tính bảo mật của PIC


thvinh1010
21-05-2009, 10:42 PM
Xin chào mọi người,

Tôi mới tiếp xúc với PIC một thời gian chưa nhiều, có một câu hỏi xin mọi người chỉ giáo.
...
Sau thiết kế và viết chương trình rồi đổ chương trình xuống PIC, nếu mạch chạy được theo ý đồ của chúng ta đã là thành công rồi. Thế nhưng...
1. Liệu chương trình chúng ta viết ra có khả năng bị hack, bị copy file hex từ vùng nhớ program memory nội bộ trên PIC không?
2. Dựa trên file hex mà lấy được từ 1 ở trên, người ta có thể truy ngược lại code C và sửa nội dụng theo ý đồ mới không?
Nếu có bạn nào hiểu rõ tính bảo mật của PIC, xin giải thích giúp tôi nhé.
Xin cảm ơn,

THV

namqn
21-05-2009, 10:51 PM
Xin chào mọi người,

Tôi mới tiếp xúc với PIC một thời gian chưa nhiều, có một câu hỏi xin mọi người chỉ giáo.
...
Sau thiết kế và viết chương trình rồi đổ chương trình xuống PIC, nếu mạch chạy được theo ý đồ của chúng ta đã là thành công rồi. Thế nhưng...
1. Liệu chương trình chúng ta viết ra có khả năng bị hack, bị copy file hex từ vùng nhớ program memory nội bộ trên PIC không?
2. Dựa trên file hex mà lấy được từ 1 ở trên, người ta có thể truy ngược lại code C và sửa nội dụng theo ý đồ mới không?
Nếu có bạn nào hiểu rõ tính bảo mật của PIC, xin giải thích giúp tôi nhé.
Xin cảm ơn,

THV
1. PIC cũng giống như các vi điều khiển khác, có thể khóa truy cập (từ bên ngoài vi điều khiển) bộ nhớ chương trình (program memory) khi người dùng có nhu cầu bảo mật mã thực thi trong bộ nhớ. Tất nhiên người ta vẫn có thể dùng các kỹ thuật phức tạp để bẻ khóa, nhưng tôi tin rằng người ta sẽ gặp khó khăn không kém hơn so với khi bẻ khóa các vi điều khiển khác.

2. Theo tôi được biết, cho đến thời điểm này vẫn chưa có công cụ nào cho phép chuyển từ mã máy (trong tập tin .hex chẳng hạn) thành code C. Nếu bạn tìm được công cụ này, tôi tin rằng sẽ có rất nhiều người sẵn sàng mua nó với giá rất cao.

Thân,

thvinh1010
21-05-2009, 11:17 PM
Xin cảm ơn anh Nam đã nhanh chóng trả lời giúp tôi.

Tuy nhiên, anh có thể nói rõ hơn câu 1 bên dưới được không ah?
Làm thế nào để thực hiện việc khoá truy cập đối với PIC được?
Xin cảm ơn.

THV

------------------------------------------------------------------------------------
1. PIC cũng giống như các vi điều khiển khác, có thể khóa truy cập (từ bên ngoài vi điều khiển) bộ nhớ chương trình (program memory) khi người dùng có nhu cầu bảo mật mã thực thi trong bộ nhớ. Tất nhiên người ta vẫn có thể dùng các kỹ thuật phức tạp để bẻ khóa, nhưng tôi tin rằng người ta sẽ gặp khó khăn không kém hơn so với khi bẻ khóa các vi điều khiển khác.
------------------------------------------------------------------------------------

namqn
22-05-2009, 08:52 AM
Xin cảm ơn anh Nam đã nhanh chóng trả lời giúp tôi.

Tuy nhiên, anh có thể nói rõ hơn câu 1 bên dưới được không ah?
Làm thế nào để thực hiện việc khoá truy cập đối với PIC được?
Xin cảm ơn.

THV

------------------------------------------------------------------------------------
1. PIC cũng giống như các vi điều khiển khác, có thể khóa truy cập (từ bên ngoài vi điều khiển) bộ nhớ chương trình (program memory) khi người dùng có nhu cầu bảo mật mã thực thi trong bộ nhớ. Tất nhiên người ta vẫn có thể dùng các kỹ thuật phức tạp để bẻ khóa, nhưng tôi tin rằng người ta sẽ gặp khó khăn không kém hơn so với khi bẻ khóa các vi điều khiển khác.
------------------------------------------------------------------------------------
Để thực hiện khóa truy cập, bạn thiết lập một hay nhiều bit thích hợp trong cấu hình của PIC (việc này được thực hiện khi bạn nạp chương trình cho PIC bằng các mạch nạp thông thường). Với PIC16, thông thường chỉ có một bit CP để bật/tắt việc khóa truy cập. Với PIC18, có thể có một hay nhiều bit CPx để bật/tắt việc khóa truy cập cho block x, và cũng có thể có bit CPD để bật/tắt việc khóa truy cập data EEPROM, và bit CPB để bật/tắt việc khóa truy cập boot block (nếu PIC18 có boot block).

Thân,

tranhuyky
22-05-2009, 09:18 AM
Mình cũng đang quan tâm về vấn đề này.
Có ai biết tài liệu nói về việc bật tắt bit CPx gì đó không, cho mình xin nhe.
Hiện mình đang làm 1 ứng dụng có tính bảo mật hơi cao, yêu cầu phải đảm bảo
không bị hack vào vi điều khiển hoặc nếu bị hack thì phải phát hiện được.
Mong nhận được sự giúp đỡ của mọi người.

tranhuyky
26-05-2009, 01:02 PM
Thông tin hack chip: www.mikahk.com

thaithien
26-05-2009, 06:08 PM
Trong chương trình nạp pickit 2 có phần Enable code protect và Enable data protect.Nếu bật hai cái này lên thì có đủ bảo mật không ?Khi đã có file hex thì có khả năng bị dịch ngược thành mã máy là có thể .Như vậy có cách nào để không đọc được file hex từ vi điều khiển luôn ?

namqn
26-05-2009, 09:24 PM
Trong chương trình nạp pickit 2 có phần Enable code protect và Enable data protect.Nếu bật hai cái này lên thì có đủ bảo mật không ?Khi đã có file hex thì có khả năng bị dịch ngược thành mã máy là có thể .Như vậy có cách nào để không đọc được file hex từ vi điều khiển luôn ?
Khi bạn bật Code protect là đã không thể đọc nội dung chương trình thực trong PIC (bạn chỉ đọc ra toàn giá trị 0x0000). Tương tự cho trường hợp bật Data protect.

Thân,

kimhuynguyen
26-05-2009, 11:58 PM
Mình cũng đang quan tâm về vấn đề này.
Có ai biết tài liệu nói về việc bật tắt bit CPx gì đó không, cho mình xin nhe.
Hiện mình đang làm 1 ứng dụng có tính bảo mật hơi cao, yêu cầu phải đảm bảo
không bị hack vào vi điều khiển hoặc nếu bị hack thì phải phát hiện được.
Mong nhận được sự giúp đỡ của mọi người.

http://www.break-ic.com/

Xem ra bạn phải tìm những loại security microcontroller không có trong danh sách trên rồi.

Good luck!!!

PSL
01-06-2009, 02:52 PM
Mình cũng đang quan tâm về vấn đề này.
Có ai biết tài liệu nói về việc bật tắt bit CPx gì đó không, cho mình xin nhe.
Hiện mình đang làm 1 ứng dụng có tính bảo mật hơi cao, yêu cầu phải đảm bảo
không bị hack vào vi điều khiển hoặc nếu bị hack thì phải phát hiện được.
Mong nhận được sự giúp đỡ của mọi người.

Bạn có thể thiết lập như sau:
list p=18f4431 ; list directive to define processor

#include <p18f4431.inc> ; processor specific variable definitions

#include <AVR_PFDec.inc>

#include <Macros.inc>

; Configuration Declairation

__CONFIG _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H ; Xtal 16MHz

__CONFIG _CONFIG2L, _PWRTEN_OFF_2L &_BOREN_ON_2L &_BORV_45_2L

__CONFIG _CONFIG2H, _WDTEN_OFF_2H &_WINEN_OFF_2H & _WDPS_1_2H ;********

__CONFIG _CONFIG3L,_T1OSCMX_OFF_3L

__CONFIG _CONFIG3H, _MCLRE_ON_3H

__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVREN_ON_4L

__CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L

__CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_OFF_5H

__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L

__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H

__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L

__CONFIG _CONFIG7H, _EBTRB_OFF_7H & _DEVID1 & _IDLOC0

;************************************************* *****************************

global Main

extern InitialSetup,UART

;***************************

;Reset vector

; This code will start executing when a reset occurs.



RESET_VECTOR CODE 0x0000

goto Main ;go to start of main code

;************************************************* *****************************

Trong đó:

__CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
__CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_OFF_5H

là thiết lập Code Protect. Không việc gì phải chỉnh mỗi khi nạp.

delatdecatsini
05-02-2010, 03:56 PM
Em tham khảo 2 link trên nhưng đã die rồi. Cho em hỏi làm sao để biết 1 pic 18F bị khóa và khóa đến đâu ?. Vậy các anh đã thử 1 PIC bị khóa mà lấy ra được file hex lên PC, rồi dùng chính file này đổ vào con PIC tương tự thì có hoạt động không ?

Như AVR có lock bit hết rồi mà dùng STK500 vẫn read ra được, rồi đổ vào con khác vẫn chạy nhưng 5 con thì 2 con ko chạy cùng file hex đó, thực sự không hiểu thế nào nữa

bien_van_khat
05-02-2010, 04:58 PM
Em tham khảo 2 link trên nhưng đã die rồi. Cho em hỏi làm sao để biết 1 pic 18F bị khóa và khóa đến đâu ?. Vậy các anh đã thử 1 PIC bị khóa mà lấy ra được file hex lên PC, rồi dùng chính file này đổ vào con PIC tương tự thì có hoạt động không ?

Như AVR có lock bit hết rồi mà dùng STK500 vẫn read ra được, rồi đổ vào con khác vẫn chạy nhưng 5 con thì 2 con ko chạy cùng file hex đó, thực sự không hiểu thế nào nữa

Trả lời: .

Khi bạn bật Code protect là đã không thể đọc nội dung chương trình thực trong PIC (bạn chỉ đọc ra toàn giá trị 0x0000). Tương tự cho trường hợp bật Data protect.

Thân,

thundernhut
07-02-2010, 05:59 AM
có chương trình dịch từ mã máy ra ngôn ngữ C đó
nhưng mà vấn đề là :
giống như bạn thảy đoạn văn tiếng Anh vào chương trình dịch ra tiếng Việt thì nó dịch ra 1 cách rất ngô nghê và sai là bình thường
Các chường trình dịch ngược mã máy ra C cũng vậy.

delatdecatsini
08-02-2010, 12:22 PM
Trả lời: .

Anh ơi vẫn có giá trị chứ ko phải toàn 0x0000 đâu, chủ yếu là ko biết giá trị này nó sai lệch đến đâu so với gốc thôi

bien_van_khat
08-02-2010, 02:06 PM
Anh ơi vẫn có giá trị chứ ko phải toàn 0x0000 đâu, chủ yếu là ko biết giá trị này nó sai lệch đến đâu so với gốc thôi

Bạn đã thử bao giờ chưa mà sao chắc chắn vậy?