빌드 출처 증명은 산출물의 출처, 빌더, 빌드 절차를 확인 가능한 증명으로 남깁니다. 배포자는 단순히 파일 이름을 믿지 않고 산출물 해시와 증명의 주체, 빌더가 기대한 값인지 확인합니다.
데모는 증명 기록의 산출물 해시를 배포 파일과 대조합니다. 기록이 있어도 서명과 신뢰할 빌더를 검증하지 않으면 위조된 출처를 그대로 받아들일 수 있습니다.
언제 쓰나
CI에서 만든 바이너리나 이미지를 배포 전에 검증할 때 사용합니다.
산출물이 어떤 소스와 빌더에서 만들어졌는지 기록하고 배포 전에 대조합니다.
<div class="sd"><div class="sd-head"><strong>BUILD PROVENANCE</strong><span id="state">live check</span></div><div class="sd-stage"><div class="bp-record"><span>source <b>rev 42</b></span><span>builder <b>trusted</b></span><span>digest <b>7A3F</b></span></div><div class="bp-check">↔</div><div class="bp-artifact" id="artifact">artifact<br><b id="hash">7A3F</b></div></div><div class="sd-foot"><span id="caption">checking boundary</span><span>tap to step</span></div></div>.sd{box-sizing:border-box;width:min(94vw,700px);height:min(86vh,318px);padding:clamp(9px,2.3vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);display:flex;flex-direction:column;gap:clamp(6px,1.8vmin,12px);font:600 clamp(12px,2.6vmin,16px)/1.25 var(--font-sans, sans-serif)}.sd *{box-sizing:border-box}.sd-head,.sd-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:1.25em}.sd-head strong{color:var(--accent);letter-spacing:.06em}.sd-head span,.sd-foot{color:var(--muted)}.sd-foot{font-size:clamp(12px,2.4vmin,14px)}.sd-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:clamp(6px,2vmin,18px);overflow:hidden}.sd .mono{font-family:ui-monospace,monospace}.sd .tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(5px,1.5vmin,10px);text-align:center}.sd .good{color:var(--accent);border-color:var(--accent)}.sd .bad{color:var(--accent-3);border-color:var(--accent-3)}.sd .arrow{color:var(--muted);font-size:clamp(15px,4vmin,28px)}.sd .active{background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:var(--accent)}.sd .blocked{background:color-mix(in srgb,var(--accent-3) 13%,var(--surface));border-color:var(--accent-3)}.bp-record{display:grid;gap:clamp(4px,1.2vmin,8px);width:42%;max-width:200px}.bp-record span{display:flex;justify-content:space-between;gap:4px;border-bottom:1px solid var(--line);padding:clamp(3px,1vmin,6px);color:var(--muted)}.bp-record b{color:var(--fg)}.bp-check{font:800 clamp(18px,5vmin,32px) ui-monospace,monospace;color:var(--accent)}.bp-artifact{border:2px solid var(--accent);border-radius:10px;padding:clamp(7px,2vmin,16px);text-align:center;min-width:27%;transition:all .25s}.bp-artifact b{display:block;margin-top:4px;font:800 1.2em ui-monospace,monospace}.bp-artifact.mismatch{border-color:var(--accent-3);color:var(--accent-3)}let n=-1;function advance(){n=1-n;document.getElementById('hash').textContent=n?'91C0':'7A3F';document.getElementById('artifact').classList.toggle('mismatch',!!n);document.getElementById('state').textContent=n?'digest mismatch':'provenance verified';document.getElementById('caption').textContent=n?'release gate rejects altered artifact':'source + builder + digest match'}advance();setInterval(advance,1050);
document.querySelector('.sd').addEventListener('pointerdown',advance);빌드 출처 증명은 산출물의 출처, 빌더, 빌드 절차를 확인 가능한 증명으로 남깁니다. 배포자는 단순히 파일 이름을 믿지 않고 산출물 해시와 증명의 주체, 빌더가 기대한 값인지 확인합니다.
데모는 증명 기록의 산출물 해시를 배포 파일과 대조합니다. 기록이 있어도 서명과 신뢰할 빌더를 검증하지 않으면 위조된 출처를 그대로 받아들일 수 있습니다.
CI에서 만든 바이너리나 이미지를 배포 전에 검증할 때 사용합니다.