요약
- Barry의 README는 트러스트 앵커의 기본 IPv6 자원으로
::/0을 기재하는 반면, 열려 있는 이슈 7은 Repository Descriptor 파서가 인증서 및 ROA 자원 필드에서 이 표기를 거부한다고 보고합니다. - 커밋 고정된 렉서는 콜론과 슬래시를 포함하는 토큰을 계속 읽을 수 있지만, 따옴표 없는 토큰은 영숫자,
$또는로만 시작할 수 있습니다. 따라서 선행 콜론은 Barry의 IP 프리픽스 파서가 실행되기도 전에 실패합니다. - RFC 4291은
::/0을 적법한 IPv6 프리픽스로 인정하며, RFC 5952는 이를 정규 표기로 규정합니다.0::/0은 동일한 프리픽스를 나타내지만 최대 압축 출력 형식은 아닙니다. - 어떤 출처도 Barry가 유효하지 않은 객체를 만들었거나, 신뢰 당사자가 그것을 본 적이 있거나, LACNIC 프로덕션 또는 라우팅이 영향을 받았다는 사실을 확립하지 않습니다. 유용한 수리책은 단계별 실패 코드를 갖춘 버전화된 렉서-DER 적합성 표입니다.
콜론 두 개, 그리고 영 하나
두 문자열을 별도의 줄에 놓으면 결함은 거의 눈에 보이지 않을 만큼 작습니다:
::/0
0::/0둘 다 동일한 IPv6/0, 즉 길이 0인 프리픽스를 갖는 전부 0인 주소를 나타냅니다. 그러나LACNIC의 Barry 저장소 이슈 7을 둘러싼 공개 기록에 따르면 첫 번째 표기는 거부되고 두 번째 표기가 그 거부를 우회하는 방법으로 작동합니다. 그 차이는 네트워크 권한도, 프리픽스 범위도, DER 의미도 아닙니다. 텍스트 렉서가 토큰을 시작하는 것에 동의하는지 여부의 문제입니다.
이 구분이 중요한 이유는 Barry가 RPKI 자료를 만드는 도구이기 때문입니다. 여기에는 테스트용으로 의도적으로 나쁜 자료까지 포함됩니다. 그런 생성기가 신뢰 당사자의 거부 로직을 검증하기 전에, 적법한 소스 텍스트에서 정확한 의미 값에 이르는 신뢰할 수 있는 정상 경로가 필요합니다. 소스 언어가 정규 표기를 거부한다면, 이후의 "실패"는 인증서 검증의 귀속될 수 없습니다. 객체는 애초에 만들어지지 않았기 때문입니다.
가장 강력한 기관적 해석이 먼저 나와야 합니다. Barry의저장소 메타데이터는 이를 프로덕션 서비스가 아닌 소규모 생성기로 기술합니다.커밋 고정된 README는 프로젝트와 그 Repository Descriptor 사양을 모두 진행 중인 작업이라고 밝히고, 1.0 이전에 비호환적 변경이 있을 수 있다고 경고합니다. 수집된릴리스및태그목록은 비어 있습니다. 따라서 간결한 예시를 담은 열린 결함은 운영 피해의 증거가 아니라 투명한 프로토타이핑의 증거입니다.
이슈가 보여주는 것—그리고 보여주지 않는 것
이슈 7은 2026년 8월 28일에 생성되었습니다. 9월 6일 증거 기준 시점에도 라벨, 댓글, 이후 갱신 없이 열려 있었습니다. GitHub는 작성자의 연관 관계를NONE으로 기록합니다. 재현, 진단 또는 의도된 동작을 확인하는 유지관리자 답변은 없습니다.
이 보고서는::/0을 설명자의 두 위치에 놓습니다: CA 인증서의 IP 자원 확장과 ROA의ipAddrBlocks입니다. 그리고 현재 우회책으로0::/0을 제안합니다. 증거에는 유용한 미묘한 점이 있습니다. 화면에 표시된 재현은 두 위치 모두에서::/0을 사용하지만, 붙여넣어진 추적은 그 표시된 설명자의 바이트 단위 사본이 아닙니다. 추적에서 인쇄된 첫 값은 이미0::/0이고, 추적은 두 번째 필드가 콜론으로 시작하는 시점에서 멈추며Unexpected character:: (0x3a)를 보고합니다.
이 불일치가 이슈를 지우지는 않습니다. 다만 신중한 기술이 말할 수 있는 범위를 좁힙니다. 추적은 한 표시된 경로에서 선행 콜론 실패를 눈으로 보여줍니다. 작성자는 정규 형식이 명명된 두 필드 모두에서 실패한다고 진술합니다. 공개 증거는 단일 실행에서 바이트가 동일한 두 실패를 독립적으로 입증하지 않습니다. 적합성 기록은 제출된 정확한 바이트를 보존해야 하며, 한 필드에 우회 표기를 복사하는 행위가 실험을 조용히 바꿀 수 있기 때문입니다.
또한 이 이슈는 손상된 인증서나 ROA를 보여주지 않습니다. 저장소가 게시되었거나, 검증기가 객체를 처리했거나, 경로가 변경되었거나, LACNIC의 프로덕션 RPKI 시스템이 관여했다는 것도 보여주지 않습니다. 이런 사건들은 관측된 경계의 하류에 있으며 여전히 뒷받침되지 않습니다.
렉서가 비대칭을 설명한다
수집된 저장소는 9월 1일자 main 커밋994a598321336baf1767f0fbfb460ed96c29fe4f를 가리킵니다. 그 제목은 AKIauthorityCertIssuer에 관한 것이며 이슈 7을 다룬다고 주장하지 않습니다.최근 커밋 목록은 맥락을 제공할 뿐, 이 특정 동작이 어떤 명명된 변경으로 도입되거나 수정되었다는 증명은 아닙니다.
그 커밋에서 이 경계는src/rpki_tree.c에서 읽을 수 있습니다.next_token은 첫 문자가 영숫자, 달러 기호 또는 하이픈일 때만 따옴표 없는 문자열을 시작합니다. 콜론은 어느 것도 아니며,try_emoji로 넘어간 뒤 일반 콜론은 예기치 않은 문자로 거부됩니다.
그러나 따옴표 없는 문자열이 일단 시작되면, 이어지는 규칙은 콜론과 슬래시를 허용합니다. 모든 문자가 영숫자여야 하는 것이 아니라 공백과 설명자의 구조적 구분자를 배제합니다. 이것이 IPv6 라이브러리에 다른 동작을 요구하지 않고도 영 하나 우회책을 설명합니다.0이 시작 규칙을 충족하고, 이어지는::/0는 토큰 안에 남습니다.
Barry 자신의 README는 이 경계를 더 선명하게 만듭니다. 여기에는2001:db8::/64같은 압축 주소가 들어 있는데, 이는 16진수 숫자로 시작하므로 초기 문자 게이트를 통과합니다. 동시에::/0을 트러스트 앵커의 기본 IPv6 자원으로 나열합니다. 문서화된 기본값은 정확히 렉서가 허용하지 않는 문자로 시작합니다. 따라서 "압축 IPv6가 지원된다"는 주장은 지나치게 광범위합니다. 선행 숫자 뒤의 압축과 시작 부분의 압축은 서로 다른 어휘 경로를 거칩니다.
하류의src/field.c의parse_ip_node구현은 관측된 거부자가 아닙니다. 이는 텍스트를/에서 분할하고, 콜론을 IPv6 신호로 간주하고,inet_pton을 호출한 뒤 프리픽스 길이를 파싱합니다. 토큰화 단계에서 실패하는 정규 입력은 이러한 연산에 도달하지 못합니다. 이를inet_pton문제, 프리픽스 길이 실패 또는 필드 결합 오류라고 부르는 것은 권한을 잘못된 단계에 두는 일입니다.
정규 텍스트는 평범한 경우다
RFC 4291은::가 연속된 0 그룹을 압축하는 것을 허용하며::를 지정되지 않은 전부 0인 IPv6 주소로 식별합니다. 그 프리픽스 표기법은 IPv6 주소 뒤에/와 프리픽스 길이를 붙이는 것이며, 적법한 주소 형식 중 어떤 것이든 사용할 수 있습니다. 따라서::/0은 유효한 IPv6 프리픽스 텍스트입니다.
RFC 5952는 구현이 수용하는 것과 내보내는 것을 구분합니다. 구현은 적법한 RFC 4291 형식을 수용해야 하며, 생성되는 텍스트는 정규 표현을 사용해야 합니다. 최대 압축은 보이는 0 그룹을 제거하며, 이는::/0을 정규 표기로 만듭니다.0::/0은 동일한 수치 주소와 프리픽스 길이에 도달하지만 선호되는 표시 결과는 아닙니다.
Ruby의IPAddr라이브러리로 수행한 범위가 제한된 로컬 확인은::/0,0::/0,0000::/0및 완전히 쓰인 전부 0인 주소를 동일한 범위로 수용했습니다. 이 확인은 의미적 동치에 관한 보조 증거일 뿐입니다. 이것은 Barry의 실행이 아니며 RFC들에 우선하지도 않습니다.
최종 객체 계층은 또 하나 다릅니다.RFC 3779는 IP 자원을 DER에서 BIT STRING 값으로 표현합니다. 그 전 주소 블록 사례는 길이 0인 프리픽스를03 01 00으로 인코딩합니다: 미사용 비트 옥텟과 주소 비트 없는 BIT STRING입니다. 설명자에서 사용된 표기는 그 값에 남아 있지 않습니다. 두 적법한 표기가 모두 인코딩에 성공적으로 도달한다면 그 소스 어휘소는 수렴해야 합니다. 하나가 렉서에서 멈춘다면 비교할 DER 값도, 보고할 신뢰 당사자 판정도 존재하지 않습니다.
작은 적합성 표면 충분하다
수리책은 광범위한 파서 프로그램으로 시작할 필요가 없습니다. 버전화된 표가 제어면 전체를 드러낼 수 있습니다. 각 행은 정확한 설명자 바이트와 그 해시, 대상 필드, 토큰화가 그 값을 수용했는지 여부, 정규화된 주소 패밀리, 수치 주소와 프리픽스 길이, 정규 표시 문자열, Barry 커밋, 그리고 구성이 성공했다면 객체 해시를 결합해야 합니다.
종료 단계는 통제된 목록에서 나와야 합니다:descriptor-tokenize,prefix-parse,field-bind,주체-build,DER-encode또는RP-validate. 이 라벨은 생성기 단계의 거부가 검증기 테스트로 계수되는 것을 막습니다. 또한 부분 진행을 가시화합니다: 어떤 사례가 토큰화는 통과하고 프리픽스 파싱에서 실패하는 것이 DER에 도달한 사례와 혼동되지 않습니다.
하나의 불변식이 이 표에 힘을 줍니다:parse(format(parse(input)))는 동일한 주소 패밀리, 값, 프리픽스 길이 튜플을 보존해야 합니다. 동등한 적법 입력은 객체 생성이 성공할 때마다 동일한 DER 프리픽스 값으로 수렴해야 합니다. 포매터는 하나의 정규 표기를 내보내고, 파서는 적법한 입력 패밀리를 수용합니다.
이것은 Barry의 더 넓은 목적보다 좁고, 일반적인 RPKI 테스트 오라클보다도 좁습니다. 각 경계에서 무슨 일이 일어났는지만 말합니다. 그 절제가 바로 가치입니다. 부정 테스트 생성기는 자신의 정상 언어 계약이 어떤 객체를 만들었는지—만들었다면 무엇인지—증명할 만큼 결정적이 된 이후에야 의도적으로 유효하지 않은 객체를 만들 수 있습니다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





