Arduino 용 암호화 라이브러리


9

Arduino를 사용하여 키패드를 읽고 키패드 PIN 입력시 전기 타격을 엽니 다. 이 스케치에서는 일종의 경량 암호화를 사용하여 EEProm에 PIN을 저장하려고했습니다. 누구든지 그런 도서관을 알고 있습니까? TwoFish를 사용하는 것이 가능하다고 들었습니다.

답변:


12

비밀번호 (PIN)를 암호화하지 않고 해시 를 원합니다 . 누군가 비밀번호를 입력하면 해당 비밀번호를 해시하고 저장된 해시와 해시를 비교합니다. 이 방법 (30 년 이상 사용)의 장점은 누군가가 소스와 해시를 파악하더라도 충분히 강력한 해시 함수 를 선택하는 한 해시와 일치하는 PIN을 알 수 없다는 것 입니다.

암호화를 직접 구현하고 싶지는 않습니다. 다른 사람의 라이브러리, 특히 대규모 커뮤니티에서 테스트 한 공개 구현 라이브러리를 사용하고 싶습니다. 암호화는 어렵고 테스트는 어렵고 암호화 테스트는 어렵 기 때문에 다른 사람이 대신 해 줄 수 있습니다.

GPLv3에 라이센스 된 AVR Crypto Library를 체크 아웃해야합니다 . Skein for AVR 구현도 있습니다 .


1
Upvoted-좋은 자료이며 질문에 대한 답변으로 설정해야합니다.
Lou

9

Hristos가 게시 한 링크는 유용하지만 아마도 "암호화"로 간주되지는 않습니다. 실제로는 "난독 화"일뿐입니다.

수학을 아는 사람들에게조차도 올바른 암호화는 잘못되기 쉽다는 악명이 높습니다.

원래 게시물에 대한 응답으로 누군가 EEProm의 PIN에 액세스 할 수있는 공격 방법은 무엇입니까? 확실히 그들이 당신의 전자 제품에 그렇게 먼 경우에, 그들은 "빨간 철사를 자르고"문을 열 수 있습니까?

어떻게 든 경우 어떻게 공격자가 이미 문을 열어 충분히 접근을하지 않고은 eeprom 내용 잡아 수있는 시스템을 가지고, 당신은 아마 그것을 재 설계하고자합니다. 유닉스 암호 해싱과 비슷한 단방향 해시 기능을 볼 수 있습니다 .EEProm에 해독 키가 필요하지 않습니다. 문제는 PIN의 검색 공간이 매우 작다는 것입니다. 해시 버전의 해시 버전을 다운로드 할 수 있다면 PIN, 10,000 개의 가능한 PIN을 모두 빠르게 시도 할 수 있습니다. 현대의 모든 랩톱이 몇 초 안에 모든 PIN을 실행할 것이라고 생각합니다.


동의합니다 (위에 동의), 한 가지 방법으로 해시가 유용 할 것입니다. 시스템을 프로그래밍하는 경우 8 자리 숫자가 100,000,000 조합을 제공하는 한 핀을 만들 수 있습니다. 이는 훨씬 오래 걸립니다.
Amos

1

내가 예상하는 문제는 그들이 핀을 볼 수 있다면 핀을 암호화 / 확인 / 해독하는 프로그램을 볼 수도 있다는 것입니다. 또한 칩이있는 경우 입력 된 핀에 대해 항상 긍정적 인 결과 (효과적으로 검사를 무시 함)를 제공하도록 프로그램을 변경할 수 없습니다.


1

사용자가 유효한 PIN을 입력했는지 확인하기 위해 암호화 된 PIN을 어떻게 디코딩 할 계획입니까? 암호 해독 키를 저장해야합니다. 이때 공격자가 eeprom을 읽을 수 있으면 플래시를 읽고 암호화 키를 찾을 수도 있습니다. 기본적으로 전체 암호화를 완전히 쓸모 없게 만듭니다. 또한 다른 사람들이 말했듯이 이미 칩을 읽을 수 있다면 새로운 프로그램을 작성할 수 있습니다. 문을 열어 두는 것이 훨씬 간단하지만, 누군가가 칩을 해킹하려는 데 어려움을 겪을 것 같지는 않습니다.


1

다음 은 C에서 간단한 암호화 방법으로 Arduino로 쉽게 포팅 할 수 있습니다. 이것은 arduino의 제한된 리소스로 데이터를 암호화하는 가장 쉬운 방법 인 것 같습니다.

-편집-프로그램에서 키를 유지하려면 PIN의 절반을 키로 만들 수 있습니다. 이는 프로그램이 PIN의 키 절반을 EEProm에 저장된 암호화 된 1/2 PIN을 해독하는 것을 의미합니다. EEProm의 암호 해독 된 키가 키가 아닌 핀 부분과 일치하면 도어가 잠금 해제됩니다. 이는 침입자가 문을 무너 뜨리거나 Arduino를 다시 프로그래밍 할 수없는 상황에서만 작동합니다.


그러나 칩에 액세스 할 수없는 경우 핀을 암호화 할 필요가 없습니다.
Amos

1

나는 다른 질문을하면서 질문에 대답하는 것이 싫지만 ...

장치가 변조 방지되지 않은 이유가 있습니까? 나는 당신이 걱정하는 탬 퍼링의 종류를 감지하기 위해 '벤치에'나사 구멍에 푸시 버튼 스위치를 보았습니다. 그런 다음 .. 여기에는 아이를 풀지 않고 칩을 가져 오는 부탄 마이크로 토치가 있습니다 (또는 칩을 손상시키지 않습니다). 주변 광 및 / 또는 소리. 덮개가 벗겨지면 낮과 밤이 완전히 달라집니다.

이 경우 노출 된 부분이 암호화가 더 쉽게 구현되는 대상과 통신하는 두 부분으로 구성된 시스템이어야합니다. 또한, 체크섬 (도움말)은 토치가있는 아이를 설명합니다.

나는 당신이 망치를 망치로 요구하고 있다고 생각합니다.


1

이 의견은 실제로 발견되었습니다. 암호화에 대해 배우려고 실험하는 데 아무런 문제가 없지만 이것은 실제로 그러한 것들을 배우기에 좋은 프로젝트는 아닙니다. 당신은 정말 좋은 교과서와 컴퓨터를 원하고 @bigiain이 말했듯이 수학은 잘못되기 쉽다는 악명 높은 일입니다.

암호화가 어떻게 작동하고 무엇에 반대하는지 더 잘 이해하려면 Applied Cryptography 핸드북 은 훌륭하고 무료입니다.

프로젝트를 보호하려는 경우 비효율적 인 방법입니다. 암호화에 관심이 있다면이 책과 컴퓨터로 시작하십시오.


암호화를 이해하고 Bruce Schneier를 읽고 20 년 이상 프로그래밍했습니다. 실제 위협은 문을 무너 뜨리고 Arduino 컨트롤러를 지나가는 것입니다. 피할 수 있다면 EEProm에 명확한 텍스트 PIN으로 설치할 수 없습니다. Fly

일반 텍스트 PIN을 저장하지 않으려는 경우이 역할에서 효과적 일 수있는 간단한 난독 화 방법에는 여러 가지가 있습니다. 위의 응답자는 암호화가 수행하는 작업과 수행하지 않는 작업을 이해하는 데 도움을 주려고 노력했습니다. AES 라이브러리는 다음과 같습니다. hoozi.com/Articles/AESEncryption.htm 또한 20 년 동안 프로그래밍했다고해서 암호화를 "이해"한다는 의미는 아닙니다. 완전히 다른 분야입니다. 20 년의 자동차 정비공은 숙련 된 사람이지만, 그가 처음부터 CAN 버스를 설계하지는 않을 것입니다. 자세를 확인하십시오.
Lou

맙소사 ... 20 년 코딩하고 런타임 데이터를 암호화 할 수 있다고 생각하십니까 ????? 떠나다.
MickLH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.