많은 대단과 마찬가지로, 나는 Codebreaker의 전시 착취에 뿌리를 둔 암호화에 관심이 있습니다. ur-컴퓨터 과학자 앨런 튜링. 그래서 나는 관심을 따랐다 IEEE 스펙트럼 급성장 분야에 대한보고 사후 암호화. 이러한 기술은 튜링이 독일의 수수께끼 암호를 깨는 데 사용했던 전자 역학적 폭격을 넘어 기술 광년 인 양자 컴퓨팅의 엄청난 잠재력조차도 좌절하도록 설계되었습니다. 새로운 암호화 방법이 잘 작동 할 것이라고 확신합니다. 그러나 튜링 시대에도 알려진 암호화 체계가 하나 있습니다. 이는 양자 컴퓨터뿐만 아니라 수학적으로 안전합니다. 어느 발명 될 컴퓨터 : 일회성 패드.
일회성 패드는 일련의 임의의 문자 또는 숫자 (일반적으로 250 자리)입니다. 발신자와 수신기에는 각각 패드 사본이 있으며 일부는 암호화 및 암호 해독에 사용됩니다. 펜과 종이에 대한 단순하지만 엄격한 규칙. 각 캐릭터 이후에 주요 예측할 수없는 방식으로 주요 변화가있는 암호입니다. 예측 가능성이 없으면 공격 컴퓨터가 치아를 가져갈 것이 없습니다.
그러나 동일한 패드로 암호화 된 두 메시지를 보유한 가장 주니어 코드 브레이커조차도 암호화를 벗겨 내고 둘 다 읽을 수 있습니다. 따라서 사용한 후 각 패드를 파괴하는 것이 중요합니다. 컴퓨터와 스토리지 장치는 데이터가 공식적으로 삭제 된 후에도 데이터 잔류 물을 남겨 두는 습관이 있기 때문에 패드를 썸 드라이브 또는 이와 유사한 것에 저장하는 것은 나쁜 생각입니다.
일회성 패드에는 다른 중요한 제한이 있습니다. 숫자는 있어야합니다 진심으로 무작위-컴퓨터에서 일반적으로 사용하는 의사 랜덤 알고리즘에 의해 생성 된 숫자는 그것을 잘라 내지 않습니다. 주어진 패드를 한 번만 사용할 수 있기 때문에 단일 메시지 이상을 보내려면 전체 무리가 필요합니다. 또한 패드를 물리적으로 인쇄하고 손으로 공유해야합니다. 네트워크를 통해 보낼 수 없습니다.
Random Number Generator는 74HC 시리즈 로직 칩 모음을 사용합니다. [top right] 전기 소음을 디지털화하고 Arduino Uno Minima에 임의 바이트로 제시합니다. [top left]. 발전기는 200 마이크로 초마마다 대략 1 바이트를 생산할 수 있으며 UNO는 이것을 단일 자리로 변환하고 각각 250 자리의 50 개의 패드를 구축하여 프린터로 보냅니다. [bottom].제임스 프로스트
나는 이러한 문제를 다루는 기계를 조금 더 쉽게 다루기로 결정했습니다. 내 Pad-o-Matic이 주위에 지어졌습니다 CSN-A2 열 영수증 프린터 나는 몇 년 전에 변덕스럽게 샀다. 프린터는 내가 찾을 수있는 가장 투명한 기술 스택에 연결되어 있습니다. 고문 트랜지스터, 몇 개의 논리 칩 및 마이크로 컨트롤러가 있습니다. 내 코드의 200 줄. 이 코드는 분열보다 더 복잡하지 않습니다. 암호화에 대해 한 가지를 배웠다면, 당신이하고있는 일을 정말로 알지 못하면 영리한 막힘이 되려고 노력하는 것은 실패의 레시피라는 것입니다. Pad-o-Matic은 완전히 독립형입니다.
PAD-O-MATIC의 열 영수증 프린터를 사용하면 전체 일련의 패드를 인쇄 할 수 있습니다. 나는 여전히 패드를 물리적으로 공유해야하지만 적어도 그들은 소형 롤에 있습니다. 내 특파원과 나는 사용 된 후 각 패드를 찢고 파괴 할 수 있습니다.
예측 가능성이 없으면 공격 컴퓨터가 치아를 가져갈 것이 없습니다.
나는 여전히 좋은 무작위성의 원천이 필요했습니다. 일부는 근본적으로 예측할 수없는 물리적 프로세스가 똑같이 예측할 수없는 비트로 전환 할 수있었습니다. 다행히도 그 문제는 이미 저를 위해 해결되었습니다. 나는 찾았다 깔끔한 배터리 구동 회로 만들다: 잡지 이는 전자가 트랜지스터의베이스 및 이미 터 터미널을 가로 질러 잘못된 길을 강제하여 생성 된 전기 노이즈에 의존하면서 수집기 터미널과 연결되지 않은 상태로 유지합니다. 만들다:의 생성기는 Aaron Logue의 단순화 된 회로이지만 만들다: 다행히도 원래 회로도의 사본이 있습니다. 이것은 사용하는 18 및 5 볼트 대신 12 및 5 볼트를 사용합니다. 만들다:버전의 버전이므로 열 프린터를 구동하기에 충분한 전류를 제공하는 오래된 전원 공급 장치를 사용할 수 있습니다. 원래 회로에는 몇 가지 추가 칩 비용에 대한 두 가지 좋은 추가 기능이 있습니다.
첫 번째 기능은 깨끗한 마이크로 컨트롤러 인터페이스입니다. 한 번에 하나의 바이트를 병렬로 보냅니다. 새로운 바이트를 사용할 때마다 마이크로 컨트롤러를 경고합니다. 임의의 바이트를 생성하는 데 필요한 시간은 다른 좋은 기능으로 인해 약간 변하기 때문에 경고가 필요합니다. 토론4 개의 플립 플롭과 XOR 게이트를 사용합니다. 토론 전기 노이즈 발생기가 1 초 이상 0을 향한 경향이 있더라도 최종 출력은 통계적으로 균형을 이룰 것임을 의미합니다.
PAD-O-MATIC는 정기적 인 간격으로 전기 노이즈를 샘플링하여 비트 스트림을 생성합니다. 최종 숫자가 많은 0 또는 1을 가진 사람들에 대한 최종 숫자가 바이어스되는 것을 방지하기 위해 비트 쌍을 비교합니다. 그들이 다른 경우에만, 그들은 더 많은 것을 검사하고, 선행 숫자가 지나가고 있습니다. 이 토론 된 비트 중 8 개는 바이트에 포장 된 다음, 모듈 식 구분을 적용하여 0과 9 사이의 임의 수를 생성합니다.제임스 프로스트
마이크로 컨트롤러의 경우 마침내 사용해야했습니다 Arduino Uno R4 최소. 이 최신 버전의 사랑하는 UNO는 약 18 개월 전에 나왔지만 지금까지 필요한 프로젝트를 찾지 못했습니다. 더 큰 기억 – 32 킬로바이트의 RAM 대 Rev3에서 2 KB-PAD-O-MATIC는 내 경우 50 일을 일련의 패드를 생성하고 메모리에 고정해야하기 때문에 필수적입니다. 패드 당 250 자리 숫자로 12kb 이상이 필요합니다. 숫자는 RAM으로 만 살기 때문에 자신의 흔적을 남겨 둘 위험이 없습니다.
마이크로 컨트롤러는 먼저 250 이상의 값으로 바이트를 버려서 들어오는 랜덤 바이트에서 숫자를 생성합니다. 모듈 식 구분 나머지 바이트에서 10 x 10 x는 0에서 9의 범위에 숫자를 남겨 둡니다.
나는 더 많은 메모리가 있었음에도 불구하고 시리즈 당 50 개의 패드를 선택했다. 왜냐하면 실제로 하나의 시리즈를 인쇄하고 공유 할 사본을 실제로 인쇄 한 다음 다른 시리즈와 그 사본을 생성하고 인쇄해야하기 때문입니다. 첫 번째 시리즈는 메시지를 보내는 것입니다. 나에서 비밀 특파원에 이르기까지 두 번째 시리즈는 그들이 나에게 메시지를 보내는 것입니다. 이렇게하면 메시지가 서로 교차 할 때 실수로 동일한 패드를 사용할 위험이 없어집니다. 총 100 개의 패드가 약 1 롤의 열지를 사용합니다.
나는 모든 것을 나무 인클로저와 프레스토에 넣었습니다! 버튼을 누르면 Pad-O-Matic은 생명을 불어 넣어 완벽하게 뱉어 내고 이제는 더 편리합니다!-결정적 보안.