롤링 코드 설명


13

누군가 KeeLoq와 같은 롤링 코드 프로토콜이 어떻게 작동 하는지 설명 할 수 있습니까? 나는 매번 다른 코드를 사용한다는 기본 전제를 ​​이해하므로 재생 공격을 사용할 수는 없지만 한쪽이 올바른 코드 등을 확인하는 방법을 이해하지 못합니다.

또한 롤링 코드의 인덱스를 미리 알지 못하거나 공유하지 않으면 어떻게 초기 동기화를 수행합니까?

Keeloq을 예로 들어 설명하면 괜찮지 만 롤링 코드에 대한 일반적인 설명입니다.


답변:


10

롤링 코드가 제대로 작동하려면 여러 부분이 필요합니다. 여기에서는 특정 방식으로 모든 부분을 사용하는 일반적인 구현에 대해 설명합니다. 다른 시스템은이 주제에 대한 변형이지만 일반적으로 유사한 방식으로 많은 동일한 기술을 사용합니다. 완전한 구현과 그것이 한 번에 작동하는 방식을 설명하려고하기보다는 간단한 시스템을 설명하고 암호로 안전한 시스템에 도달 할 때까지 복잡성을 더할 것입니다.

비 암호화 롤링 코드는 단순히 동일한 의사 난수 생성기 (PRNG)를 사용하는 송신기 및 수신기입니다. 이 생성기는 계산과 이전에 생성 된 수라는 두 가지 중요한 정보를 가지고 있습니다. 계산은 일반적으로 단일 숫자로 나타낼 수있는 선형 피드백 방정식입니다. PRNG에 이전 번호를 공급하고 피드백 번호를 동일하게 유지하면 특정 번호의 시퀀스가 ​​생성됩니다. 시퀀스는 생성 할 수있는 모든 숫자를 통과 할 때까지 반복 된 시퀀스가 ​​없습니다. 그런 다음 동일한 시퀀스로 다시 시작합니다.

리모트와 송신기 모두 피드백 번호와 현재 번호를 알고 있다면, 리모트가 다음 번호를 전송할 때, 수신기는 자체 생성기에 대해 테스트 할 수 있습니다. 일치하면 활성화됩니다. 그렇지 않은 경우 원격으로 전송 한 번호를 찾을 때까지 시퀀스를 롤오버합니다. 리모컨을 다시 누르면 일치해야하며 이전 전송에서 이미 숫자 생성기를 동기화했기 때문에 활성화됩니다. 따라서 때때로 잠금 해제 버튼을 두 번 눌러야합니다. 수신기 또는 송신기가 동기화되지 않습니다.

그것은 코드의 롤링 부분입니다. PRNG가 충분히 길면, 연속적으로 많은 숫자가없는 피드백 번호를 찾기가 매우 어렵습니다. 이는 정상적인 사용에서는 얻기가 어렵습니다. 그러나 암호로 안전하지 않습니다.

또한 일반적인 암호화를 추가합니다. 차량 제조업체는 송신기와 수신기에 특정 비밀 키를 사용합니다. 제조업체에 따라 각 모델과 연도마다 다른 코드가 있거나 몇 년 동안 여러 차량 모델간에 코드를 공유 할 수 있습니다. 단점은 각 리모컨마다 다른 리모컨을 구입해야한다는 것입니다. 그러나 많은 모델에서 코드를 공유 할 때의 문제는 고장난 경우 더 많은 자동차가 취약하다는 것입니다.

암호화 뒤에는 버튼 정보, PRNG 생성 번호 및 피드백 번호에 대한 정보가 있습니다. PRNG를 처음부터 새로 만들기에는 충분하지 않지만 일정 횟수의 버튼을 누른 후 제한된 공간에 대한 일부 내부 정보를 사용하면 피드백 번호가 (다시, 제조업체, 회 선별) 관련 될 수 있으며, 몇 번의 훈련 후에 수신기가 할 수 있습니다 전송하고, 피드백 번호를 결정하고, 해당 리모트에 대한 PRNG 추적을 시작하십시오.

롤링 코드는 재생 공격을 중지하기위한 것입니다. 암호화는 롤링 코드가 손상되지 않도록 보호하기위한 것입니다. 하나만 사용하면 시스템이 너무 쉽게 깨질 수 있습니다. 제조업체가 송신기와 수신기를 모두 제어하기 때문에 교육에는 공개 키 암호화 또는 특별히 관련된 것이 포함되지 않습니다. 또한 이러한 유형의 시스템으로 애프터 마켓 Fobs가 자동차에서 작동하는 것을 방지합니다.

그러나 롤링 코드는 불침 투성이 아닙니다. 오래된 keeloq 시스템은 불과 몇 년 전 (10 년 사용 후)에 성공적으로 공격을 받아 제조업체 암호화 코드를 찾고 롤링 코드를 더 쉽게 찾을 수 있습니다. 그보다 이전에는 사람들이 실제로 코드를 위반하지 않고 차량을 가져갈 수있는 방식으로 공격을 받았습니다. 이에 대한 응답으로 새로운 암호화 키는 60 비트입니다. 최신 암호화 시스템만큼 안전하지는 않지만 고장날 수년 더 오래 지속될만큼 충분히 안전합니다.


아아, 나는 PRNG의 "반복되는 반복되지 않는"부분을 잊었을 것이다. 그것은 매우 중요하다. 수신기가 피드백 코드를 결정할 수있게하는 정보 전송의 이점은 무엇입니까? 단순히 피드백 코드를 선택하고 알려진 송신기를 사용하여 송신기와 수신기를 제조하는 것보다 덜 안전 해 보입니다 ...
NickHalden

@NickHalden 피드백 코드는 리모컨마다 다르므로 고객은 나중에 리모컨을 더 추가하거나 누락 된 리모컨을 교체하려고합니다. 훈련에만 필요합니다. 약간 더 안전한 버전은 추가 피드백 정보를 방출하기 전에 리모콘에서 특정 버튼을 누르는 일련의 버튼을 필요로하지만 일반적으로 전체 시스템은 충분히 안전하여 암호화를 해제하더라도 그보다 더 많은 정보가 필요합니다. 약간의 정보만으로도 전체 피드백 코드를 얻을 수 있습니다.
Adam Davis

8

차고 도어 오프너에서 칩을 연구 할 때 KeeLoq을 처음 만났습니다. 마이크로 칩의 데이터 시트가 어떻게 작동하는지 설명의 좋은 일을한다.

간단히 말해서 :

  • 수신기는 일련 번호를 기준으로 모든 송신기의 데이터베이스를 유지 관리합니다.
  • 각 송신기는 칩과 수신기의 데이터베이스에있는 대칭 암호화 키 (64 비트)와 연결됩니다.
  • 각 송신기는 16 비트 순환 시퀀스 번호와 관련이 있으며 칩과 데이터베이스에도 저장됩니다.
  • 트랜스미터가 활성화되면 시퀀스 번호 모듈로 65536 (랩 어라운드 16 비트)을 증가시키고 어떤 버튼을 눌렀는지 나타내는 비트 마스크, 일련 번호 및 일련 번호의 암호화 된 버전으로 구성된 패킷을 보냅니다.
  • 수신자는 데이터베이스의 일련 번호와 일치하고 키를 꺼내 일련 번호를 해독합니다.
  • 일련 번호는 새로운 것이어야합니다. 최근에 사용한 일련 번호 일 수 없으므로 재생 공격을 방지합니다. (데이터 시트의 그림 7.3 참조).
  • 일련 번호가 확인되면 수신기는 어떤 버튼을 눌렀는지의 비트 마스크를 기반으로 기능을 활성화 할 수 있습니다.
  • 새로운 일련 번호가 16 개 이상의 값보다 앞선 경우 (사용자가 수신기에서 떨어져있는 동안 실수로 버튼을 여러 번 눌렀을 경우) 재 동기화를 위해 추가 핸드 셰이크가 발생해야하므로 추가 버튼 누름이 필요합니다. (사용자는 수신이 잘못되었다고 생각하여 추가 버튼 누름을 수행합니다).

수신기 데이터베이스에 새 송신기를 추가하는 것은 Wi-Fi 액세스 포인트에 클라이언트를 추가하기위한 버튼 누름 구성 방법과 모호하게 유사합니다. 수신기는 어떻게 든 새로운 송신기를 수용하는 모드로 들어간다.

수신자와 송신기가 동일한 비밀 제조업체 ID를 공유하는 경우 일반 활성화 메시지에 전달 된 정보에서 새 송신기를 승인 할 수 있습니다. 64 비트 암호화 키는 수신기의 제조업체 ID 및 일련 정보에서 파생되기 때문입니다. (섹션 7.1 참조).

이에 대한보다 안전한 대안 인 "보안 학습"이 있습니다. 이것은 송신기에서 특별한 방식으로 시작됩니다 (한 번에 세 개의 버튼을 누름). 송신기는 특수한 패킷을 전송합니다. 60 비트 시드 값은 암호화 키가 파생 된 것으로, 아마도 제조업체 ID 나 일련 번호에 의존하지 않습니다.

수신기가 학습 모드가 아닌 경우, 수신기는 자신이 모르는 송신기로부터의 전송을 거부합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.