A secure reading and writing apparatus for multi-party computation which receives a read command including a secret share sequence [a] = ([a], [a],..., [a[n-1]]) having a size n and a secret share [x] of an access position x, or a write command including the secret share sequence [a], the secret share [x] and a secret share [d] of a value d as input, the secure reading and writing apparatus comprising: a buffer storage part configured to store a write buffer [b] = ([b 0], [b 1]) comprised of two secret share vectors [b 0] and [b 1]; a buffer appending part configured to, when the write command is input, append the secret share [x] designated by the write command to the secret share vector [b 0], append the secret share [d] designated by the write command to the secret share vector [b 1], and determine whether or not the number of elements of the write buffer [b] exceeds √n; a secure writing part configured to, when the number of elements of the write buffer [b] exceeds √n, add each value of the secret share vector [b 1] to elements of the secret share sequence [a] at an access position indicated in a corresponding value of the secret share vector [b 0]; a secure reading part configured to, when the read command is input, read the secret share [a[x]] which is an x-th element designated by the read command from the secret share sequence [a] designated by the read command; and a buffer addition part configured to add a secret share [c] of an unreflected value c which is a sum of elements of the secret share vector [b 1] stored by the buffer storage part in which the access position indicated with an element of the secret share vector [b 0] stored by the buffer storage part is equal to an access position indicated with the secret share [x] designated by the read command, to the secret share [a[x]] which is read from the x-th element of the secret share sequence [a] by the secure reading part, and to output the secret share of sum of the secret share [a[x]] and the secret share [c] as output for the read command. a buffer storage part configured to store a write buffer [b] = ([b 0], [b 1]) comprised of two secret share vectors [b 0] and [b 1]; a buffer appending part configured to, when the write command is input, append the secret share [x] designated by the write command to the secret share vector [b 0], append the secret share [d] designated by the write command to the secret share vector [b 1], and determine whether or not the number of elements of the write buffer [b] exceeds √n; a secure writing part configured to, when the number of elements of the write buffer [b] exceeds √n, add each value of the secret share vector [b 1] to elements of the secret share sequence [a] at an access position indicated in a corresponding value of the secret share vector [b 0]; a secure reading part configured to, when the read command is input, read the secret share [a[x]] which is an x-th element designated by the read command from the secret share sequence [a] designated by the read command; and a buffer addition part configured to add a secret share [c] of an unreflected value c which is a sum of elements of the secret share vector [b 1] stored by the buffer storage part in which the access position indicated with an element of the secret share vector [b 0] stored by the buffer storage part is equal to an access position indicated with the secret share [x] designated by the read command, to the secret share [a[x]] which is read from the x-th element of the secret share sequence [a] by the secure reading part, and to output the secret share of sum of the secret share [a[x]] and the secret share [c] as output for the read command.