Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

안녕하세요? secure state 관련하여 질문 있습니다.

작성자
송대영
작성일
2019-04-10 22:03
조회
508
질문에대하여 자세하고 친절하게 답변해주셔서 너무나 감사드립니다.

현재 Sabre Lite(Cortex-A9)을 사용하고 있습니다. 메모리와 관련해서 제가 시도해보려는 것은 TLB Lockdown으로 secure state 관련하여 레퍼런스 메뉴얼을 참고하여 공부하던 도중 지식이 얕은 관계로 큰 어려움을 겪어서 질문 드립니다. Secure state로 진입하려면 SMC(Secure Monitor Call) 명령어를 사용하여 Monitor mode로 진입한 다음 SCR.NS를 변경하여야 한다고 합니다.

1. TLB Lockdown을 사용하기 위해서는 NSACR 레지스터를 수정하여야 합니다. 하지만 해당 레지스터를 수정하기 위해서는 Secure state로 접근하여야 합니다. 리눅스에서 Secure state로 실행되는 부분이 있는지 궁금합니다.


2. 아니면 도움을 주실만 한 내용을 알고 계시면 조언해주시면 감사하겠습니다.
첨부파일 : nsacr.png
전체 3
  • 2019-04-15 11:10
    안녕하세요?

    그 동안 답변이 늦어 죄송합니다.
    제가 4월 9일~14일까지 먼 곳으로 휴가를 다녀와서 응답을 할 수 없었습니다.

    TLB lock-down은 ARMv7의 몇 SoC에서 지원하는 것으로만 알고 있습니다. ARMv8에서는 지원하지 않는 것으로 보입니다.
    TLB lock-down은 interrupt latency가 매우 빨라야 하는 디바이스를 위해 사용될 수 있습니다.
    ARM 및 ARM64 리눅스 커널에서는 거의 사용되지 않으며 펌웨어 레벨에서만 사용하고 있습니다.
    리눅스에서는 시큐어 스테이트로 진입하는 것은 제공되지만 당연하게도 리눅스에서는 시큐어 스테이트로 동작하는 코드가 없습니다.
    유저가 커널에 syscall 호출하여 결과만을 제공받는 것 처럼, 커널도 smc 호출하여 시큐어 펌웨어로부터 결과만을 제공받습니다.

    TLB lock down을 스터디 목적으로 참고하시려면 그냥 패스하시길 추천합니다. 그렇지 않고 업무 목적이라면 조금 더 찾아봐야겠죠?
    TLB lock down은 시큐어 모드와는 관련없이, CP15 c9번을 통해 서비스되는 것으로 알고 있습니다.

    Cortex A9 칩을 가진 보드를 가지고 계시면 리눅스 드라이버 모듈을 프로그래밍하여 간단히 lock down을 테스트해보시기 바랍니다.

    수고하세요.

  • 2019-04-15 11:26
    친절한 답변 진심으로 감사드립니다.
    지금 업무적으로 구현하려고 해서 좀 더 찾아보고 있습니다.
    저도 문영일님 처럼 리눅스 고수가 되도록 열심히 공부하겠습니다.
    리눅스 공부하려고 ARM 리눅스 커널 책을 샀는데 저자이셔서 깜짝 놀랐습니다.

  • 2019-04-15 16:54
    저는 뒤늦게 커널 분석을 하게되었습니다. 저보단 장차 대영님이 훨씬 깊은 공부를 하시길 빕니다. 감사합니다.