# Bukti Keaslian Arsip

Arsip ini diambil dari akun X publik **@finkd** (Mark Zuckerberg) pada **31 Oktober 2026**.
Dokumen ini menjelaskan apa yang bisa dibuktikan, apa yang **tidak** bisa, dan cara memeriksanya sendiri.

---

## 1. Ringkasan jujur

| Pertanyaan temanmu | Jawaban |
|---|---|
| "Apakah file ini utuh, tidak diedit setelah dibuat?" | **Bisa dibuktikan** — lewat `MANIFEST.sha256`. |
| "Apakah isinya benar-benar dari X, bukan karangan?" | **Tidak bisa dibuktikan oleh hash.** Harus dicek ke X langsung, atau lewat anchor pihak ketiga. |
| "Siapa yang membuat arsip ini?" | **Tidak bisa dibuktikan** kecuali manifest-nya ditandatangani (lihat bagian 4). |

Ini penting: **hash hanya membuktikan keutuhan, bukan asal-usul.** Siapa pun bisa membuat file palsu lalu menghitung hash-nya sendiri. Jadi jangan menjual hash sebagai bukti keaslian — itu klaim yang salah.

---

## 2. Verifikasi keutuhan (bisa dilakukan sekarang)

```bash
python _verify/verify.py
```

Hasil yang benar:

```
unchanged: 31   modified: 0   missing: 0   extra: 0
RESULT: PASS — every file matches the sealed manifest.
```

`verify.py` menghitung ulang SHA-256 setiap file dan membandingkannya dengan `MANIFEST.sha256`.
Ia juga melaporkan file **EXTRA** — file yang ditambahkan setelah segel — supaya tidak bisa menyelipkan konten baru.

**Sudah diuji:** menghitung ulang arsip yang sengaja dirusak (satu angka like diubah dari `32053` menjadi `99999`) menghasilkan:

```
MODIFIED  archive.md
          expected 0c840c98b60b9356b3f34a0d0170e8707d245170b0060ecf44b83b38db8a3a2e
          actual   3a2da99f41dccb36a2da27910157d55af3061aca492f6e5266b85539f6952db3
RESULT: FAIL
```

Jadi pemeriksaan ini benar-benar bekerja, bukan sekadar mencetak "OK".

**Fingerprint arsip** (SHA-256 dari file manifest itu sendiri):

```
d7311d6db5da7c5f50c2a87fac299044bfe60f32e8c2c259498262299780c15d
```

Angka inilah yang perlu kamu sebutkan/berikan ke temanmu. Kalau manifest berubah satu byte saja, fingerprint-nya berubah.

---

## 3. Verifikasi keaslian isi (cara paling kuat)

Setiap post punya **URL kanonik** yang bisa dibuka siapa saja. Inilah bukti asal-usul yang sebenarnya — bukan hash.

`_verify/tweet_ids.txt` memuat, per post:

```
id | datetime | sha256(teks) | url
```

Contoh spot-check untuk satu post:

1. Buka URL-nya, mis. `https://x.com/finkd/status/2110778025629347999`
2. Bandingkan teks, tanggal, jumlah like/repost dengan yang ada di `posts.csv`
3. Kalau mau otomatis, hitung hash teksnya dan cocokkan dengan kolom ketiga:

```bash
python -c "import hashlib,sys; print(hashlib.sha256(sys.argv[1].encode()).hexdigest())" "teks persis dari X"
```

**Selama post aslinya masih ada di X, ini bukti yang sempurna** — tidak bergantung pada hash buatan kita.
Kalau post sudah dihapus, arsip inilah satu-satunya salinan, dan keasliannya hanya bisa dipertahankan lewat anchor pihak ketiga (bagian 4).

---

## 4. Tiga tingkat jaminan, dan syaratnya

### Tingkat 1 — Keutuhan (sudah aktif)
Manifest SHA-256 + `verify.py`.
**Membuktikan:** file tidak berubah sejak disegel.
**Tidak membuktikan:** siapa yang menyegel, atau isinya benar.

### Tingkat 2 — Asal-usul (perlu keputusan)
Dua pilihan, bisa keduanya:

**a. Anchor pihak ketiga.** Snapshot tiap URL post ke Wayback Machine (`web.archive.org`).
Hasilnya: halaman arsip independen dengan timestamp yang tidak bisa kamu atau temanmu ubah. Ini yang menjawab "buktinya kalau kamu yang mengarang?".

**b. Tanda tangan digital.** Manifest ditandatangani dengan kunci GPG/SSH milikmu:

```bash
gpg --armor --detach-sign _verify/MANIFEST.sha256
# temanmu: gpg --verify MANIFEST.sha256.asc MANIFEST.sha256
```

**Membuktikan:** manifest ini dibuat oleh pemilik kunci itu, dan tidak diubah sejak ditandatangani.
**Syarat:** temanmu harus sudah memverifikasi kunci publikmu lewat jalur lain (bukan dari chat yang sama). Kalau kunci dikirim bersama file, tanda tangan tidak ada artinya.

### Tingkat 3 — Reproduksi
Jalankan ulang pengambilan dengan metode yang sama (lihat `METHOD.md`), lalu bandingkan.
Cocok = isinya memang seperti itu. Ini paling meyakinkan, tapi butuh akses ke akun X yang login.

---

## 5. Kalau pemilik akun menghapus post-nya

Ini skenario terburuk, dan jawabannya perlu jujur: **setelah post dihapus, tidak ada cara membuktikan keasliannya dengan metode di bagian 3.** Bukti terkuat kita — mencocokkan ke URL X — mati saat post-nya hilang.

Yang tersisa, diurutkan dari kuat ke lemah:

| Bukti | Kekuatan | Syarat |
|---|---|---|
| Snapshot Wayback Machine yang diambil **saat post masih hidup** | Kuat — timestamp dari pihak ketiga, tidak bisa diubah kita maupun kamu | Harus dilakukan **sebelum** dihapus |
| Timestamp blockchain (OpenTimestamps / Bitcoin) | Sedang — membuktikan file ada pada waktu T, tapi tidak membuktikan isinya = X | Harus dilakukan sebelum dihapus |
| Timestamp otoritas (RFC 3161, mis. freetsa.org) | Sedang — sama seperti di atas | Sebelum dihapus |
| Korroborasi: quote tweet, balasan, artikel berita, screenshot orang lain | Bervariasi — tergantung ada tidaknya saksi | Di luar kendali kita |
| Konsistensi ID (lihat bagian 6) | Lemah — hanya menyaring pemalsuan ceroboh | Selalu bisa, offline |
| Arsip resmi X | Hanya untuk pemilik akun | Tidak berguna bagi pihak ketiga |

**Kesimpulannya:** bukti untuk post yang sudah dihapus hanya bisa dibuat **sebelum** penghapusan. Tidak ada cara membuatnya surut setelah kejadian. Karena itu arsip ini sebaiknya di-anchor (bagian 4a) selagi post-nya masih ada — bukan nanti.

Kalau kamu menerima arsip ini dan post-nya sudah tidak ada, sikap yang benar bukan "percaya begitu saja", melainkan: cek apakah ada snapshot Wayback untuk URL tersebut. Kalau tidak ada, arsip ini hanya bisa diperlakukan sebagai **klaim**, bukan bukti.

## 6. Pemeriksaan konsistensi ID (bisa offline)

ID post X setelah November 2010 menyandikan waktu pembuatannya:

```
timestamp_ms = (id >> 22) + 1288834974657
```

Artinya ID dan tanggal **tidak bisa berbeda**. Jalankan:

```bash
python _verify/verify_ids.py
```

Hasil pada arsip ini:

```
posts: 100
id/date consistent : 84
pre-snowflake ids  : 16   (2006 - Nov 2010, tidak bisa diperiksa)
mismatch           : 0
RESULT: PASS
```

Ini menyaring pemalsuan yang ceroboh: orang yang mengarang post harus mengarang ID yang timestamp-nya cocok dengan tanggal klaimnya, sekaligus wajar dibanding ID lain di akun itu. **Tapi ini tetap bukan bukti keberadaan** — hanya bukti bahwa angkanya tidak saling bertentangan.

## 7. Anchor pihak ketiga (status sebenarnya)

Ini bagian yang menjawab "buktinya kalau kamu yang mengarang?" — karena bukti ini dibuat pihak lain, bukan kita.

### 7a. Wayback Machine — 21 dari 100 post punya snapshot

```
anchored      : 21 / 100
terawal       : 2024-06-24
terakhir      : 2026-10-16
semua bertanggal SEBELUM arsip ini dibuat (2026-10-31)
```

**Yang penting:** ke-21 snapshot itu dibuat sebelum kita mengarsipkan apa pun. Artinya snapshot tersebut tidak mungkin dipengaruhi oleh kita — ini bukti paling kuat yang ada di paket ini. Kalau post-nya nanti dihapus, snapshot inilah yang tetap membuktikan post itu pernah ada.

Daftar lengkapnya di `_verify/anchors.csv` (kolom `timestamp` dan `snapshot`).

79 post sisanya **belum punya snapshot**, dan kita tidak berhasil membuatnya sekarang: Save Page Now membalas `429 Too Many Requests` (rate limit untuk pengguna anonim), sementara `archive.today` meminta CAPTCHA. Ini keterbatasan layanan, bukan kegagalan pengambilan data.

### 7b. Timestamp otoritas (RFC 3161) — aktif

```
TSA       : freetsa.org
serial    : 0x099ADB6D
timestamp : 31 Oktober 2026, 16:31:41 UTC
verifikasi lokal : OK
```

Token tersimpan di `MANIFEST.tsr`, dan siapa pun bisa memverifikasinya tanpa mempercayai kita:

```bash
openssl ts -verify -in MANIFEST.tsr -queryfile MANIFEST.tsq \
  -CAfile tsa_cacert.pem -untrusted tsa_cert.pem
# harus berakhir dengan: Verification: OK
```

**Membuktikan:** file `MANIFEST.sha256` dengan hash persis itu sudah ada pada 31 Okt 2026 16:31 UTC, ditandatangani TSA — bukan oleh kita.
**Tidak membuktikan:** bahwa isinya pernah muncul di X.

### 7c. Yang masih bisa dilakukan

- Ulangi Save Page Now nanti, atau pakai akun archive.org (kuota lebih besar) untuk 79 post yang belum ter-anchor.
- Anchor ulang secara berkala: setiap snapshot baru menambah bukti, tidak menghapus yang lama.

## 8. Yang perlu kamu sampaikan ke temanmu

Kalimat yang jujur dan tidak berlebihan:

> Ini arsip yang saya ambil pada 31 Oktober 2026. Keutuhannya bisa kamu cek dengan `python _verify/verify.py` — kalau ada satu karakter berubah, hasilnya FAIL. Tapi hash tidak membuktikan isinya benar; untuk itu buka saja URL tiap post di `tweet_ids.txt` dan bandingkan langsung dengan X. Kalau ada post yang sudah dihapus, saya bisa tunjukkan snapshot Wayback-nya.

Jangan bilang "hash-nya membuktikan ini asli". Itu klaim yang tidak bisa dipertahankan, dan justru melemahkan kredibilitasmu kalau temanmu paham.
