요약

  • RFC 3001은 ASN.1 오브젝트 식별자를urn:oid형태의 URI로 표현했으며, 고유성은 이전부터 위임되어 온 OID 트리에서 물려받았지 URN 계층에서 만들어 내지 않았다.
  • RFC 3061은 3개월 뒤 최초 사양을 대체하며 등록 기관과 정규 문법을 명확히 했지만, 여전히 리졸루션도 검증도 정의하지 않았다.

urn:oid:1.2.3은 자립적으로 보인다. 짧고 규칙적이며 전 세계에서 쓸 수 있다. 그러나 이 표기에 관한 가장 중요한 사실들은 문자 그 자체에는 없다. 어느 기관이 아크(arc)를 할당했는지, 그 할당이 유효했는지, 그 숫자가 무엇을 나타내는지, 기계가 어디서 권위 있는 답을 얻을 수 있는지.

이 결여는 이후의 복잡성이 가려준 우연한 빈틈이 아니었다. 그것은 최초의 이름공간 문서 속에 그대로 드러나 있었다. 2000년 11월, Michael Mealling은 ASN.1 오브젝트 식별자를 URN(Uniform Resource Names)으로 표현하기 위한 정보성(Informational) 사양인RFC 3001을 발표했다. OID는 이미 위계적 할당 체계를 이루고 있었다. 최상위 아크가 권한 기관을 식별했다—0은 ITU-T, 1은 ISO, 2는 양 기구의 공동 할당—그리고 할당받은 노드 아래에 더 많은 번호를 배정할 수 있었다. URN 작업은 이러한 권리를 만들지 않았다. 그 결과물인 점 구분 숫자에 휴대 가능한 URI 포장을 씌운 것뿐이다.

그 이름공간을 둘러싼 URN 프레임워크도 중요했다.RFC 2141은 URN을 영속적이고 위치 독립적인 리소스 식별자로 규정했다. 이름공간 식별자가 이름공간 고유 문자열을 어떻게 해석할지 결정했다. 이 아키텍처는 식별자를 네트워크 위치로 바꾸지 않고도 기존 식별자 체계를 흡수할 수 있었다.oid가 이름공간을 가리키고, 십진 아크들이 OID를 담았다. 어느 쪽도 주소를 제공하지 않았다.

RFC 3001은 고유성과 영속성이 OID 할당 규칙에서 따른다고 밝혔다. 어휘 동등성 규칙은 정확한 문자열 일치였다. 스코프는 전역이었다. 그러나 리졸루션 조항에서는 메커니즘이 정의되지 않았다고 명시했고, 검증 조항에서도 마찬가지였다. 따라서 규격에 부합하는 문자열은, 수신 애플리케이션에 그것을 리졸브할 표준 서비스도 없고, 주장된 번호가 올바르게 할당되었는지 확인할 표준 절차도 없는 상태에서도 전달되고 비교될 수 있었다.

이 문서는 자신의 제도적 이음새도 공개적으로 남겨 두었다. 이름공간 등록 템플릿의 선언된 등록자(declared-registrant) 항목에는 편집상의 탄원이 들어 있었다: “여기서 도움이 필요하다. 나는 ‘등록자’가 되기 불편하다.” 그러고는 ISO/IEC JTC1 SC6 사무국을 명명했다. 이 문장을 위기나 갈등의 이야기로 과장해서는 안 된다. RFC는 어느 쪽도 수립하지 않는다. 실제로 수립하는 것은 더 흥미로운 사실이다. 책임 있는 제도적 권위를 지명하는 산문이 여전히 눈에 띄게 미완성인 가운데, 깔끔한 식별자 문법은 발표될 수 있었다.

2001년 2월,RFC 3061은 RFC 3001을 폐기(obsolete)했다. 대체 문서는 이 문제를 제거하고, ISO/IEC JTC1 SC6가 적절한 등록 기관인 이유—ASN.1 표준을 해석하고 변경할 수 있는 기구이기 때문—를 설명했다. 또한 이름공간 고유 문법을 강화했다. 구성 요소는 점으로 구분된 십진 숫자였고, 선행 0은 금지되었으며, OID 노드에 붙을 수 있는 사람이 읽을 수 있는 설명은 제외되었다. 이름은 숫자와 레이블이 뒤섞인 가변적 형태가 아니라 정규 숫자 경로만을 담게 되었다.

이러한 변경은 표현상의 모호성을 줄였다. 그러나 표현을 권리 소유의 증거로 바꾸지는 않았다. 정확한 일치는 두 정규 문자열이 같은지 여부만 답할 수 있다. 그것은 할당이 유효했는지, 청구자가 여전히 노드를 통제하는지, 명명된 오브젝트가 실재하는지에는 답하지 못한다. 최상위 아크와 위임된 가지는 식별자를 권한 구조 안에 위치시키지만, 눈에 보이는 접두어는 그 권위기구가 서명한 영수증이 아니다.

RFC 3061은 범용 조회 서비스도 추가하지 않았다. 스코프는 여전히 전역이었고, 리졸루션과 검증 항목은 여전히 어떤 메커니즘도 정의하지 않았다. 이 구분은 현대 인터페이스가 명명, 검색, 검색어 조회, 인증을 한 상자 뒤에 결합하는 경우가 많아 잃기 쉽다. RFC들은 이것들을 분리해 두었다. 이름은 할당 체계가 충돌을 막았기 때문에 전역 스코프를 가질 수 있지만, 리졸루션은 애플리케이션 고유의 것이거나, 사적인 것이거나, 미래 과제이거나, 그저 이용 불가능할 수 있었다.

이후의 URN 작업은 이 증거 경계를 더 명확히 진술하게 해준다. 2017년에 발표된RFC 8141은 문법적으로 URN인 문자열과 이름공간 규칙 아래 유효하게 할당된 URN을 구분한다. 이 이후 용어를 2000년에 이미 존재했던 것처럼 거슬러 적용해서는 안 된다. 그럼에도 같은 위험을 명확히 해준다: 문법은 형식은 확립할 수 있어도 제도적 사실은 확립할 수 없다.

따라서urn:oid의 역사는 리졸버를 만들려다 실패한 이야기가 아니다. 그것은 의도적 계층화의 사례다. OID 권위기구들이 번호를 할당했다. 이름공간 사양이 그 번호들을 휴대 가능하게 만들었다. 애플리케이션은 정규 표기를 비교할 수 있었다. 리졸버, 디렉터리, 인증서, 레지스트리 기록 또는 그 밖의 검증 증거는 자신의 권위와 운영 방식을 스스로 선언해야 했다.

이 분업은 로컬 시스템과 미래의 서비스에게 자리를 남겨 주었다. 동시에 여전히 유용한 규율을 부과한다: 형식적으로 보이는 식별자가 사양이 부여하는 것 이상의 증거적 권위를 조용히 상속받게 두지 말라. 글로벌 이름은 여러 조직에 걸친 참조를 조정할 수 있다. 하지만 활자만으로 그 이름을 누가 통제하는지, 그 뒤에 어떤 실재가 있는지 증명할 수는 없다.

출처