何が分かるか
記録・投稿・記事・日刊・週刊・月刊は、非公開の本人原文(Human Source)をAIが編集した二次情報です。公開した各版には、運営者の鍵で署名した出所証明(attestation)があります。上の入力欄に、このサイトのURL・ID、Markdown版の本文、またはファイルを渡すと、次を別々に表示します。
- 発行元への帰属 — 署名が有効か。署名鍵がルート鍵(genesis)から委任された鍵か(root-verified / pending / revoked / unknown)
- 内容の一致 — 入力した本文のSHA-256が、署名された版と一致するか。別の版と一致する場合はその版を示します
- 資料の区分 — 本人原文(human-source)、AI編集(ai-edited)、AI生成(ai-generated)、システム発行(system-release)など
- 原資料との関係 — どの記録から編集されたか、本人原文の署名付きコミットメントがあるか。非公開の原文本文は第三者が照合できません
- 外部時刻証明 — 日次バッチへの包含とOpenTimestamps(Bitcoin)の状態。発行者が記録した日時、署名した日時、外部で確認できる時点は別物です
「証明なし」は偽物の証拠ではなく、この版が登録されていないという意味です。「内容不一致」は改行や版の違いでも起きます。署名が有効でも、記述内容の真実性やAI編集の正確さを保証するものではありません。
1. 本文ハッシュ(content_sha256)
Markdown版の先頭には、content_sha256(本文のSHA-256)と content_length_bytes(本文のUTF-8バイト数)があります。frontmatter終端の「---」とその次の空行を除いた位置から、このバイト数だけが対象です。週刊・月刊の続き案内と末尾の利用条件は対象外です。
「Markdownを開く」からファイルを document.md として保存し、Node.jsのある端末で次を実行します。
node --input-type=module - document.md <<'JS'
import { readFileSync } from 'node:fs';
import { createHash } from 'node:crypto';
const file = readFileSync(process.argv[2]);
const end = file.indexOf(Buffer.from('\n---\n\n'), 4);
if (file.subarray(0, 4).toString() !== '---\n' || end < 0) throw Error('Invalid frontmatter');
const meta = file.subarray(4, end).toString('utf8');
const expected = /^content_sha256: ([0-9a-f]{64})$/m.exec(meta)?.[1];
const length = Number(/^content_length_bytes: ([0-9]+)$/m.exec(meta)?.[1]);
const start = end + 6;
if (!expected || !Number.isSafeInteger(length) || length < 0 || start + length > file.length) throw Error('Invalid body length/hash');
const actual = createHash('sha256').update(file.subarray(start, start + length)).digest('hex');
console.log(actual === expected ? 'MATCH: body hash' : 'MISMATCH: body hash');
process.exitCode = actual === expected ? 0 : 1;
JSこれは本文の照合です。本文とハッシュを両方書き換えたコピーも一致します。本人由来であることは、次の署名で確かめます。
2. 署名と鍵
各版の出所証明は Ed25519 で署名され、/provenance/a/<attestation_id>.json として公開しています。鍵レジストリは https://narukijima.ai/provenance/keys.json 。信頼の起点はルート鍵 identity-root:ed25519:sha256:0f5ce6c0efc1eeff5efb0875f60f0952eff02bbd087218c208a805a1807d91b2 で、https://narukijima.ai/.well-known/naru-chain-genesis.json の genesis(genesis_hash 44c89d4a240cc1d0cbc13f9d5720f233de0cad98b8a65570e06e1570472393ab)で自己署名されています。
- publisher 鍵 — 公開物・サイトリリース・履歴などをこのMacの自動処理が署名する鍵。ルート鍵からの委任証拠(key-event)を持ちます。委任が未署名の間は pending と表示します
- human-attestor 鍵 — 本人の原文コミットメントだけを、本人がパスフレーズを入れて署名する鍵。publisher 鍵で本人原文を認定することはできません(out-of-scope)
- 鍵の交代・失効 — ルート鍵が署名した key-event で行い、失効後の日時を持つ署名は revoked と表示します。過去の署名は失効前なら有効のまま
identity_assurance は self_asserted です。narukijima.ai というドメインの管理下で公開された鍵という意味で、実在人物の身元証明ではありません。同じ genesis を掲げているだけのサイトを本人と判断しないでください。
ブラウザに頼らず確かめるには、検証器・鍵・証明を取得して Node.js で実行します。
curl -sO https://narukijima.ai/provenance/verify-core.mjs && curl -s https://narukijima.ai/provenance/keys.json -o keys.json \
&& curl -s https://narukijima.ai/provenance/a/<attestation_id>.json -o a.json
node --input-type=module - <<'JS'
import { readFileSync } from 'node:fs';
const core = await import('./verify-core.mjs');
const registry = await core.verifyKeyRegistry(JSON.parse(readFileSync('keys.json', 'utf8')));
const doc = JSON.parse(readFileSync('a.json', 'utf8'));
console.log(await core.verifyAttestation(doc, registry));
if (doc.legacy_proof) console.log(await core.verifyLegacyChainProof(doc.legacy_proof));
JS3. 日次バッチと外部時刻証明
その日に発行した出所証明のハッシュを Merkle 木にまとめ、日付根(day_root)を OpenTimestamps に提出します。Bitcoin に取り込まれると bitcoin_attested になり、その根がそのブロック以前に存在したことを第三者が再現できます。/provenance/batches/<date>.json に .ots 証明(base64)を含めています。
外部時刻証明は「それ以前に存在した」ことだけを示します。発行者の記録時刻や本文の作成日時を単独で証明するものではありません。2026-09-11 の移行時に発行した証明はその日付の証明であり、過去の作成日時にさかのぼりません。
4. 旧 Naru Kijima Chain(2026-08-27〜2026-09-11)
2026-09-11 に独立した台帳サービス(chain.narukijima.com)を廃止し、その証明はこの仕組みへ引き継ぎました。旧台帳の各エントリ(397件・15ブロック)は /provenance/a/ 内の legacy_proof として公開しており、genesis・システム鍵の署名・Merkle包含・ブロック封鎖署名・Bitcoinアンカーの結び付きをブラウザで検証します。Bitcoin 側の確認は同梱の .ots を ots verify にかけて再現します。
旧識別子(chain_id、entry_hash、key_id)は書き換えていません。当時のブロックに含まれなかった末尾のエントリは「未封鎖」と表示します。旧サービスへの接続は不要です。
なりすましと不正利用について
公式の公開面は narukijima.ai と、そこから案内する配信先です。他所の掲載を本人の公式発信とみなさないでください。ただし、CC BY-NC-ND 4.0の条件を満たす第三者の共有まで、なりすましや不正利用と断定するものではありません。AI学習への権利留保・出典表記などの利用方針は https://narukijima.ai/terms/ をご確認ください。
不正利用を見つけた場合や、検証で不一致が出た場合は、サイト内の外部プロフィールに記載の連絡先までお知らせください。
root identity-root:ed25519:sha256:0f5ce6c0efc1eeff5efb0875f60f0952eff02bbd087218c208a805a1807d91b2 · genesis_hash 44c89d4a240cc1d0cbc13f9d5720f233de0cad98b8a65570e06e1570472393ab