요약

  • RFC 9986은 256개 값으로 이루어진 ISAAC 페이지 단위로 인증 값을 생성한다. 다음 페이지를 생성하는 연산은 되돌릴 수 없으며, 현재 페이지를 소멸시킨다.
  • 패킷을 검사하는 도중 그 경계를 넘어야 하는 수신자는 먼저 전체 ISAAC 상태를 저장해야 한다. 값이 일치하면 새 상태로 확정하고, 불일치하면 체크포인트를 복원한다.
  • 이 메커니즘은 이미Up상태인 송신자의 연속성 신호를 인증할 뿐, 패킷 전체 내용이나 종단 간 서비스를 인증하지 않는다. 유용한 운영 기록은 비밀을 노출하지 않으면서 성공적 확정 경로와 실패 검사 복원 경로를 모두 증명해야 한다.

검증을 통과하기 전에 검증기를 움직일 수 있었던 패킷

BFD 수신자가 마지막으로 수락한 시퀀스 번호보다 앞선, 그럴듯한 시퀀스 번호를 가진 패킷을 받았다. 이 간격은 단순한 손실일 수 있다. 제어 패킷은 자주 오가고, 네트워크는 일부를 드랍해도 된다. 판단하려면 수신자는 그 미래 위치에 해당하는 인증 값을 도출해야 한다.

대부분의 경우 이 조회는 저렴하다. RFC 9986은 ISAAC을 사용해 의사난수 출력을 256개 값씩 페이지 단위로 제공한다. 현재 페이지 안에서는 수신자가 인덱스로 탐색할 수 있다. 그러나 요청된 시퀀스가 페이지 범위를 벗어나면 ISAAC은 혼합(mixing) 연산을 실행해 새 페이지를 만든다. 이 연산은 일방향이며, 현재 페이지는 소멸된다.

여기서 드물지만 근본적인 위험이 생긴다. 패킷은 아직 자신을 증명하지 못했다. 수신자가 유일한 생성기 상태를 시험용으로만 전진시켰는데 인증 값이 실패하면, 검증기는 적대적이거나 손상된 입력을 대신해 자신의 정당한 과거를 소모해버린 것일 수 있다. 단순히 거절하고 원래 지점에서 계속할 수 없게 된다.

RFC 9986의 답은 정확하다. 새 페이지를 만들어내는 계산에 앞서 수신자는전체 ISAAC 상태의 사본을 저장해야한다. 복사 가능한 경계를 기준으로 후보 출력을 도출한다. 값이 일치하면 저장된 상태를 폐기하고 새 페이지를 현재 상태로 삼는다. 일치하지 않으면 저장된 상태를 복원하며, 수정된 후보는 폐기하거나 추후 사용을 위해 별도로 보관한다.

신뢰가 획득되기 전까지, 이 검사는 되돌릴 수 있어야 한다.

손실 허용은 앞서 볼 수 있는 유한한 권한이다

이 설계가 필요한 이유는 다음에 수신되는 패킷이 다음에 송신된 패킷과 같을 필요는 없기 때문이다. RFC 9986은 모든 패킷을 엄밀하게 증가하는 32비트 시퀀스 번호에 묶는다. 패킷이 사라지면 수신된 번호와 기대 번호의 차이가 수신자에게 어느 ISAAC 항목을 시험할지 알려준다.

이 권한에는 울타리가 있다. 수신 시퀀스가 한 번 알려지면, 들어오는 번호는 마지막 수락 값에 1을 더한 값부터 그 값에Detect Mult의 3배를 더한 값 사이, 순환 32비트 산술 안에 있어야 한다. 범위 밖의 패킷은 폐기된다. 범위 안이라면 수신자는 대응하는 의사난수 값으로 탐색하고, 일치하면 손실 이후 재동기화할 수 있다.

이 창은 두 번 중요하다. 리플레이나 추측에 의한 도약을 제한하며, 원래 허용된 앞서 보기(look-ahead)가 언제 페이지 경계를 넘을 수 있는지를 결정한다. “인증 실패”만 기록한 운영 트레이스는 이 두 사실을 모두 잃는다. 이전 수락 시퀀스, 수신 시퀀스,Detect Mult, 도출된 창, 페이지 기준값과 인덱스, 그리고 계산에 혼합 연산이 필요했는지 여부를 보존해야 한다.

비밀 키나 원시 생성기 상태는 보존해서는 안 된다. 안전한 기록은 재구성 불가능한 체크포인트 식별자 또는 다이제스트, 시점과 결과를 사용한다. 성공적인 페이지 경계 패킷의 경우 혼합 전 체크포인트, 일치한 출력, 새 기준값으로의 확정을 기록해야 한다. 실패한 패킷의 경우 혼합 전 체크포인트, 불일치, 그리고 정확히 이전 상태 식별자로의 복원을 기록해야 한다.

진짜 송신자, 인증되지 않은 내용물

패킷을 둘러싼 구분도 마찬가지로 좁다. Meticulous Keyed ISAAC은 공유 비밀, 세션별 Seed, BFD 판별자(discriminator) 자료를 사용해 스트림을 만든다. 패킷은 키 ID, 시퀀스 번호, Seed, 32비트 ISAAC 출력을 실는다. 수신자는 잘못된 인증 유형, 모드, 길이, 키 ID, 시퀀스 범위, Seed 또는 출력을 거부한다.

그러나 ISAAC 출력에는 BFD 제어 패킷의 해시나 요약이 담겨 있지 않다. RFC 9986은 패킷 자체는 완전히 인증되지 않는다고 명시한다. 올바른 값은 이 연속성 신호를 진짜 송신 당사자만 만들어낼 수 있음을 입증한다. 모든 필드의 무결성을 입증하지는 않는다.

그래서 이 저렴한 형식은 세션이 이미Up상태가 된 후에만 사용할 수 있고, 상태 변경을 알릴 수 없다.Up으로의 진입, 상태 변경, 주기적 강화 안심은 전체 패킷 무결성 검사를 수행하는 더 계산 비용이 큰 모드를 사용한다. 기존 운영 보도는 이미 RFC 9985에서 저렴한 연속성 대 변경 권한이라는 경계를 다루고 있다. 여기서 별개의 사실은, 허용된 연속성 검사조차 일방향 상태를 변형시킬 수 있는 상황에서 RFC 9986 검증기 내부에서 무엇이 일어나는가이다.

BFD의 관측 범위도 유한하다. 인증된Up연속성 신호는 애플리케이션이 작동한다거나, 경로가 올바르다거나, 고객이 서비스에 도달할 수 있거나, 특정 페이로드가 종단 간 경로를 통과한다는 것을 증명하지 않는다. 정의된 인접성/세션 질문에 답할 뿐이다. 이를 만능 건강 기록으로 다루면 빠른 로컬 메커니즘이 거짓 전역 약속으로 변한다.

자신의 한계를 명명하는 실험적 타협

Ashesh Mishra는 Alan DeKok, Mahesh Jethanandani, Sonal Agarwal, Jeffrey Haas와 함께 RFC 9986의 다섯 저자 중 한 명이다. Mishra는 2017년 선행 초안, RFC 9985, 그리고 더 이른 BFD 무결성 검사 특허에도 이름을 올리고 있다. 이 기록은 그를 이 공학 문제와 연결하지만, 이 메커니즘을 혼자 만든 발명으로 만들지는 않는다.

이 문서는 실험적(Experimental) IETF RFC이지 인터넷 표준이 아니다. 보안 절은 이 타협에 대해 특이할 만큼 직접적이다. ISAAC은 유용한 암호 하드웨어 가속이 없는 시스템을 위해 선택되었다. 그 암호분석은 제한적이며, 적절한 가속이 존재하는 곳에서는 이점이 없고, RFC는 이를 다른 IETF 프로토콜에서 사용하기에 부적합하다고 명시한다.

운영도 같은 유한성을 물려받는다. 비밀 배포는 사양 범위 밖이다. 정의된 재동기화 경로가 없기 때문에 세션은 Meticulous Keyed ISAAC Auth Key ID를 그 자리에서 교체할 수 없다. 키 순환은 세션 비활성화와 재시딩(reseeding)을 요구한다. 강한 모드와 저렴한 모드에 서로 다른 키를 쓰면 한 노출을 줄이는 대신 다른 노출을 만든다. 불일치가 강한 인증으로 세션을 올린 뒤, 저렴한 모드가 시작되는 순간 세션을 실패하게 만들 수 있다는 것이다.

이들은 평균 내어 넘길 각주가 아니다. 공통 와이어 메커니즘이 끝난 뒤 구현자와 운영자에게 남는 결정들이다.

비밀을 남기지 않는 검사에 대한 기록

가장 계시적인 적합성 테스트는 통상적인 페이지 내 성공이 아니다. 페이지 경계 바로 건너편을 겨냥한 무효 패킷이다. 테스트 전에 하네스 안에서 수신자의 비공개 상태를 지문(fingerprint)으로 남긴다. 허용된 손실 창 안에 있으면서 잘못된 Auth Key를 가진 시퀀스를 주입한다. 혼합이 시작되기 전에 체크포인트가 존재하고, 후보가 실패하며, 이전 지문이 그대로 돌아오는지 확인한다. 그다음 정당한 패킷을 보내 여전히 수락됨을 증명한다.

무효한 Seed, 키 ID, 모드, 길이에 대해서, 시퀀스 창 안과 밖의 간격에 대해서, 그리고 랩어라운드에서 반복한다. 체크포인트 할당, 혼합, 복원, 정상 상태 조회 시간을 측정한다. 무효한 미래 패킷의 폭주가 무한한 메모리, CPU 작업 또는 보관된 후보 상태를 만들어서는 안 된다. 주기적으로 더 강한 전체 패킷 모드를 행사하고, 키 순환에 필요한 세션 재시작을 리허설하라.

공개 운영 기록에는 빌드 식별자, 세션 및 티켓 식별자, 비밀이 아닌 키 ID, 시퀀스 창, 페이지 기준값/인덱스, 불투명한 체크포인트 지문, 시점, 결과, 확정 또는 복원 처분이 담긴다. 원시 ISAAC 상태와 키는 배제된다. 자신의 다음 답을 위조할 재료를 공개하는 증거 체계는 스스로의 목적을 무너뜨릴 것이다.

가장 작은 권한은 검사에 귀속된다

Lu Heng의 주체성(agency) 테스트는 이 메커니즘에 그대로 적용된다. 저자들은 상호운용 가능한 불변식을 명시한다. 구현자는 전체 상태 사본을 어떻게 표현하고 보호할지 선택한다. 운영자는 키, 강한 인증 주기, 재시작 시점을 선택한다. 피어의 실행 중 코드가 하나의 후보가 일치하는지를 결정한다. 어느 주체도 다른 주체가 통제하는 결과를 정직하게 약속할 수 없다.

이 RFC는 또한 유용한 의미의 최소 사양이다. 메모리 배치, 캐시 정책, 운영 절차를 전부 표준화하려 하지 않으면서, 파괴 전 저장과 실패 시 복원을 의무화한다. 지역적 결정은 지역에 남지만, 다른 구현이 시험할 수 있는 불변식으로 경계 지어진다.

실행 중 코드가 마지막 간격을 닫는다.MUST로 적힌 요구사항은 특정 벤더의 드문 페이지 경계 오류 경로가 실제로 상태를 복원함을 증명하지 못한다. 결함 주입, 전후 지문 비교, 다음 정당한 패킷의 수락이 증명한다. 표준은 분기를 기술하고, 실행이 기록을 제공한다.

교훈은 트랜잭션에 관한 슬로건보다 좁다. 검증기는 신뢰할 수 없는 입력이 미래에 대해 질문했다는 이유만으로 정당한 상태에 대한 되돌릴 수 없는 지배권을 얻어서는 안 된다. 과거를 보존하고, 후보를 시험하고, 답이 자격을 벌었을 때만 전진하라.

출처