就 sin->cos cos->-sin之類的公式
function getData(keys, source) {
return Object.keys(source)
.filter(x => keys.includes(x))
.reduce((acc, cur) => {
acc[cur] = source[cur];
return acc;
}, {});
} // Pass
function getData(keys, source) {
return Object.keys(source)
.filter(keys.includes)
.reduce((acc, cur) => {
acc[cur] = source[cur];
return acc;
}, {});
} // TypeError: Cannot convert undefined or null to object includes
filter(fn) {
let newArr = [];
for (let item of this) {
if (fn(item)) {
newArr.push(item);
}
}
return newArr;
}
> a =[1,2]
[ 1, 2 ]
> a.includes
[Function: includes]
> let b = a.includes
undefined
> b
[Function: includes]
> b(1)
TypeError: Cannot convert undefined or null to object
at includes (<anonymous>)
> a.includes(1)
true
a.b = b
function includes()
a.b(1)
true
為什麼要用 ck-skylake ?
我的意思是這顆 CPU 有什麼特別的嗎?
是說你不會再發生瀏覽器紀錄什麼的不小心曝光的意外ㄅ
我不會用 console 改 function (?
如果可以微分一次兩次三次…… 那樣就讓他可以微分 n 次,n ∋ Ζ+
是說,windows鍵位是不是跟linux都差不多?
「要證明一個數學對象存在就必須把它構造出來」—wiki
你的意思是 無法推出排中律 還是 可推出排中律矛盾
凡是敵人反對的 我們就要擁護
反是敵人擁護的 我們就要反對
— 中國共產黨 19xx年
「剛剛我把 OOXX 檔放進去了喔,這個檔案的 md5 是 md5(OOXX),然後這是 nonce: shsdkjsidkv」
應該是md5(剛剛我把 OOXX 檔放進去了喔,這個檔案的 md5 是 md5(OOXX))
===message===
text = 剛剛我把 OOXX 檔放進去了喔,這個檔案的 md5 是 md5(OOXX)
{{ text }}
A = md5(text)
signature = rsa_sign(private_key, A)
{{ A }} {{ signature }}
就上傳的時候順便送一把 key 給伺服器,跟伺服器說安安以後要操作都得要有這把 key
然後我讀取message
B = md5(text)
A = rsa_verify(public_key, signature)
assert A == B
畢竟伺服器知道你的 key 其實不會怎樣
如果伺服器要刪檔案,他有沒有你的 key 都能刪 ==
public key就該public,不爽不要加密
密碼之所以要 hash 是因為這個伺服器被打穿了,怕駭客拿你的密碼去登其他服務
假設全世界只有一個服務,或是你可以確保你密碼不會重用
舉例來說 明明學校有 OAuth 但是各種系統不一定有串
喔喔喔喔,台大計中潮爽der,一組帳密打天下
然後限制位數和特殊符號
我以前在文化也是一組密碼打天下,密碼有特殊符號的話好像只有 Radius 會過不了而已XD
現在有message.txt,alice想簽署它
alice的rsa公鑰是P1,私鑰是P2
h1 = hash(message.txt)
sig = rsa_sign(P2, h1),保存到message.txt.sig
bob有alice的公鑰P1,收到了alice傳來的message.txt和message.txt.sig
bob這樣做
h2 = rsa_verify(P1, sig)
h1 = hash(message.txt)
如果h1 === h2,代表簽署正確,文件完好
如果是一般的 Signature 還好,至少你簽名前看的到你簽了三小(假定還沒 hash)
Blind Signature 更糟,你連你簽三小都不知道
重點是,在 RSA 裡面 Signature 就是解密,所以你可以去騙他說要他簽名,藉此解密他用同一組金鑰加密的東西
在任意地方簽名,然後A4紙被印上「你願意把全部資產給B」的感覺?
比較像是「你願意把全部資產都給 B」然後用鉛筆全部塗黑,你只看的到一塊奇怪的東西,簽名後再用橡皮擦擦掉
基本上你可以想像,簽章就像是簽名,不會別人給你什麼你就簽什麼
只可以說,簽任何東西是證明自己有金鑰的requirement,但不是sufficient condition
非對稱式密碼學的基礎必要條件就是這組金鑰只有你有,而且他是客觀上無法被破解的
在有不信任的前提下,C叫A簽「A有B的金鑰」是必須的
假設bob簽了「eve有bob的金鑰」,但bob被eve黑掉的話 | bob是個智障的話 | bob被威脅的話,也不能證明eve真的有bob的金鑰
只能證明「eve有bob的金鑰」是由bob的金鑰簽的
eve = eavedrop = 偷聽/攻擊者/壞人
koru的問題可以在密碼學考試出現,應該會坑掉不少人XD
4c. Alice has the RSA key pair. Eve wants to forge that he has Alice's key. Bob asks Eve for the proof.
i) What message would Bob ask Eve to sign?
ii) Even if Eve got Alice signed the message and forwarded to Bob, does it prove Eve has Alice's key? Why?
不過這樣問的話應該都答no了,真想坑人的話
If Bob claims to have Alice's RSA key pair, every message Bob sent has a valid signature from Alice. Does it prove that Bob have Alice's RSA key pair?
要麼pbkdf2/scrypt/bcrypt/argon2,要麼firebase,要麼明文
我剛剛在洗澡
重想了一次之後 我覺得我剛剛那串所要表達的是
若一個人欲透過簽章證明自己擁有某把鑰匙 簽章內容須包含獨立於該對話的身分辨識資訊
是產生密碼PASS,再用不同人的RSA public key加密那密碼RSA_ENCRYPT(PUBK, PASS)
然後用AES加密crypt = AES_ENCRYPT(PASS, message),把全部人的RSA_ENCRYPT(PUBK, PASS)加到header,內文就是crypt
然後我覺得我剛剛的問題中 沒有假設bob是個智障/被威脅
假設我們實作的方式是
A 要驗證 B 有沒有 K 這把私鑰
那麼 A 發送任意訊息給 B ,而 B 簽章後回傳給 A 驗證
假設我們實作的方式是
A 要驗證 B 有沒有 K 這把私鑰
那麼 B 使用 K 簽章任意訊息(B產生) 並交由 A 驗證
也就是說 被簽章的該訊息必須是含有特定內容的 才不會有問題
應該說 我們不能依賴能否被公鑰驗證而去確認一個人是否有一把私鑰
所以說不是被黑/是智障/被威脅
而是依照協定他必須這麼做
In cryptography, a zero-knowledge proof or zero-knowledge protocol is a method by which one party (the prover Peggy) can prove to another party (the verifier Victor) that she knows a value x, without conveying any information apart from the fact that she knows the value x.
所以,你的問題
X is a protocol where the message X(A, B) necessarily and sufficiently proves to B that sender has A's RSA key pair.
If Bob claims to have Alice's RSA key pair. Bob has sent X(Alice, e) for e in everyone. Does it prove that Bob have Alice's RSA key pair?
依照協定,bob簽了「eve有bob的金鑰」,完全證明eve有bob的金鑰?
這是一個verification VS trust的問題
@nekomata_saren 假設有 A B C 三人
A B C 三人都不知道自己的ID,但是別人都知道其他人的ID
B 有 priv_B 然後大家都知道 pub_B
那麼 A 要怎麼驗證 B 是否有 priv_B
假設每筆通訊的樣子都長這樣
(ID, Content)
eve想要向bob證明自己有alice的K
方法1: 把alice的任意加密訊息丟給bob - 不work,因為alice的訊息未必帶有認證關係
方法2: 把alice的「eve有alice的key」加密訊息丟給bob - work,因為訊息的確是由alice的key簽的,滿足認證關係的necessary condition (有key -> 能簽)
方法3: 把alice的協定X加密訊息丟給bob - work,滿足認證關係的necessary & sufficient condition (有key -> 能簽 + 能簽 -> 有key)
要怎麼驗證別人講的 ID 是不是真的是自己的 ID
那B把rsa_sign(priv_B, "A你看看我id是什麼")
A知道B的ID,也能用pub_B解rsa_sign,就知訊息是B簽名的
喔喔懂了
那如果因為某些神秘因素 我們不能讓大家知道自己的ID呢
X知道B的ID,也能用pub_B解rsa_sign,就知訊息是B簽名的
那B把rsa_sign(priv_B, "A你看看我id是什麼")丟出去給A
X知道B的ID,也能用pub_B解rsa_sign,就知訊息是B的priv_B簽名的
前面說ㄌ 通訊格式長這樣
(fromID, Content)