A private information retrieval (PIR) protocol is a protocol that allows a user to retrieve an item from a server in possession of a database without revealing which item is retrieved. An oblivious transfer (OT) protocol is a type of protocol in which a sender transfers one of the potentially many pieces of information to a receiver, but remains oblivious as to what piece (if any) has been transferred.   As the Wikipedia said, PIR is a weaker version of 1-out-of-n oblivious transfer, but I do not really know why is a weaker version.
124246
I am trying to make a taxonomy of the different purposes of some cryptographic protocols. Generally speaking, the purpose of PIR, oblivious transfer and differential privacy--it sounds as if they were invented for the same purpose: "Give me the information I want without learning anything about this information".   Can we make the aforementioned generalization?
92875
I'm learning about private/public IPs, port forwarding and NAT, and still fail to see the answer to a simple question:  Suppose two users on the same network are communicating with a single server outside their network (say, me &amp; my wife send http requests to yahoo.com).  The server sees both users as a single public ip, and often - as in this case - communicating on the same port.  How does the router route the packets according to the two different connections? Is there any routing info inside the packet beyond ip/port?  Is there some 'session table' maintained somewhere? By whom and what exactly does it include?
71401
Let's say $k$ users have shares to a $(k,n)$ secret sharing scheme, and they want to issue new shares. How can they do this without collecting the shares together?  In particular, no set of $k-1$ users (including the new users) should be able to learn the shared secret during or after the share generating process. There is also no trusted third party.  One way to do this is by doing a secure multiparty computation. Is there a way to accomplish the task without a general multiparty computation scheme?
67971
I'm in the need of an inverse public-key encryption method where you encrypt with the private key and decrypt with the public key. In other words an asymetric encryption where you can't generate the encryption key from the decryption key. Does such encryption exist? If yes which, and which would be the fastest?  If nothing like that exists I would be glad if you helped me out with my situation:    I need to authenticate users logging in from my Java application in the way that the response from the server cannot be falsified and thus giving the user full access to the application. Using public key encryption was an obvious method, I would decrypt data received from the client to confirm the credentials. This won't work because if someone manages to decompile and get the private key from the code, they would be able to generate the public key, which would make them able to crack my application again. So any ideas how I can get this secure?
112333
I'm new to SSL / TLS and I want to work with the OpenSSL toolkit.  I don't know what .pem and .csr stands for?  I do know that .key is the private key and .crt is the public key.
19509
For multiple OTP keys, why not do this:  Key = Hash[(EC)DH Shared Secret + Counter]  The counter will increase per message, and the output of the hash will be random for each new unique input into it. What are the problems or weaknesses with this design??  EDIT: For clarification: both parties will have the shared secret from an ECDH exchange, random numbers from Pythons os.urandom for generating the ECC key
71095
What do you call a person who is unwilling to share information?
73738
Let's say I would like to communicate with my friend using asymmetric/public-key encryption, e.g. RSA.  (Note: I do realize that in practice this is done through an intermediate symmetric key, but this question assumes we only use asymmetric encryption.)  Say I try to do this: I slice up my data into 2n-byte blocks (padding with zeros [edit: padding appropriately] if necessary), append the block index to the block (to prevent the same plaintext from turning into the same ciphertext), then use my friend's public key to encrypt each block separately.  Is this a secure scheme, or does the fact that I'm re-using the key make it susceptible to some kind of attack? If so, is it used in practice in any existing algorithms? If not, is there any way to make it safe, aside from using a symmetric key?
34665
the senario is that we want to be able to have a 3rd party supplier share post and info from their SF org with users on our internal SF org.   I woulld like to know more about the different options are to do this and the pros/cons of each.  many thanks
52028
We consider a public hash function $H$, assumed collision-resistant and preimage-resistant (for both first and second preimage), similar in construction to SHA-1 or SHA-256. Alice discloses a value $h$, claiming that she (or/and parties she can communicate with or/and devices they have access to) knows a message $m$ such that $H(m)=h$. Can some protocol convince Bob of this claim without help of a third party/device that Bob trusts, nor allowing Bob to find $m$? At Crypto 98 rump session, Hal Finney made a 7-minutes presentation  which seems to be intended for that. This remarkable result is occasionally stated as fact, including  and . But I do not get how it is supposed to work. Update: This talk mentions using the protocol in the Crypto'98 paper of Ronald Cramer and Ivan B. Damgård:  ( is very similar, or there is ).
38879
I am struck with the following problem:  Let Alice, Bob, Chris and Eve communicate over a public network. They encrypt all messages they send using RSA system. Bob and Chris have the RSA modulus $n_B$ and $n_C$ respectively with $n_B$ = $n_C$ But different public encryption exponents: $e_B \neq e_C$. Suppose $\gcd(e_B, e_C)=1$, and that Alice sends the same secret message to Bob and Chris. Show how Eve can decipher the message.
82390
I have keypair (u,r), and two pieces of data, X and Y.  I reveal X publicly but keep Y secret. Y has high entropy.  I then concatenate X and Y, into Z.  I encrypt Z, into "encrypt(Z,u) = Q". r is needed to decrypt Q back into Z.  Later, (when it doesn't matter), r will be revealed and everyone will decrypt Q into Z. At that point, everyone will know that, all along, Q "contained" X. Can I prove that Q contains X before r is revealed (including interactive zero-knowledge proofs)?
19014
I'm wondering how you'd implement the following use-case in REST. Is it even possible to do without compromising the conceptual model?  Read or update multiple resources within the scope of a single transaction. For example, transfer $100 from Bob's bank account into John's account.  As far as I can tell, the only way to implement this is by cheating. You could POST to the resource associated with either John or Bob and carry out the entire operation using a single transaction. As far as I'm concerned this breaks the REST architecture because you're essentially tunneling an RPC call through POST instead of really operating on individual resources.
46859
I've always been interested in encryption but I have never found a good explanation (beginners explanation) of how encryption with public key and decryption with private key works.  How does it encrypt something with one key and decipher it with another key?
66713
I am looking for the shortest comprehensive way to explain to people that are trying to use DRM as a technology to prevent users from using their data in some fashion deemed undesirable, why their solution cannot work by definition.  Ideally I'd like something that:   Covers why technically it is impossible to have people access local data, but only in such-and-such a way Imparts an understanding of why this is, to avoid follow-on "But what if" rebuttals Is intuitive enough and short enough that even a politician (j/k) could grasp it   When faced with this situation I try to be clear and concise, but I usually end up failing at least on one of these points. I'd really like to have a 'stock' answer that I can use in the future.
113251
The sender and receiver share two different secret keys:  s1 and s2 both y bit values. 'x' is a randomly generated y bit value. The reader sends to the tag a challenge y =  x ⊕ s1, and the receiver  responds with z = x ⊕ s2 after recovering x = y ⊕ s1.   s1 and s2 never change, x is randomly generated each complete transaction. Can you determine s1 and s2 through a single transaction? After multiple?
69724
The two primes $p$ and $q$ part of the public key need to be distinct. What's the reason for them to be distinct? Is it because factorization of $p^2$ where $p$ is a prime is relatively easier, or is there some other reason?